diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/base/ProvideSettings.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/base/ProvideSettings.kt index be9b671a2..681c8b78b 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/base/ProvideSettings.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/base/ProvideSettings.kt @@ -13,17 +13,15 @@ import de.mm20.launcher2.ktx.isAtLeastApiLevel import de.mm20.launcher2.preferences.IconShape import de.mm20.launcher2.preferences.MeasurementSystem import de.mm20.launcher2.preferences.TimeFormat -import de.mm20.launcher2.preferences.ui.CardStyle import de.mm20.launcher2.preferences.ui.GridSettings import de.mm20.launcher2.preferences.ui.LocaleSettings import de.mm20.launcher2.preferences.ui.UiSettings import de.mm20.launcher2.ui.component.ProvideIconShape -import de.mm20.launcher2.ui.locals.LocalCardStyle import de.mm20.launcher2.ui.locals.LocalFavoritesEnabled import de.mm20.launcher2.ui.locals.LocalGridSettings import de.mm20.launcher2.ui.locals.LocalMeasurementSystem import de.mm20.launcher2.ui.locals.LocalTimeFormat -import de.mm20.launcher2.widgets.FavoritesWidget +import de.mm20.launcher2.widgets.AppsWidget import de.mm20.launcher2.widgets.WidgetRepository import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged @@ -46,7 +44,7 @@ fun ProvideSettings( val favoritesEnabled by remember { combine( - widgetRepository.exists(FavoritesWidget.Type), + widgetRepository.exists(AppsWidget.Type), settings.favoritesEnabled, ) { a, b -> a || b }.distinctUntilChanged() }.collectAsState(true) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt index 9bc70482c..27d951827 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt @@ -114,7 +114,7 @@ import de.mm20.launcher2.ui.locals.LocalPreferDarkContentOverWallpaper import de.mm20.launcher2.ui.settings.SettingsActivity import de.mm20.launcher2.widgets.AppWidget import de.mm20.launcher2.widgets.CalendarWidget -import de.mm20.launcher2.widgets.FavoritesWidget +import de.mm20.launcher2.widgets.AppsWidget import de.mm20.launcher2.widgets.MusicWidget import de.mm20.launcher2.widgets.NotesWidget import de.mm20.launcher2.widgets.WeatherWidget @@ -148,7 +148,7 @@ fun ConfigureWidgetSheet( is WeatherWidget -> ConfigureWeatherWidget(widget, onWidgetUpdated) is AppWidget -> ConfigureAppWidget(widget, onWidgetUpdated) is CalendarWidget -> ConfigureCalendarWidget(widget, onWidgetUpdated) - is FavoritesWidget -> ConfigureFavoritesWidget(widget, onWidgetUpdated) + is AppsWidget -> ConfigureFavoritesWidget(widget, onWidgetUpdated) is MusicWidget -> ConfigureMusicWidget(widget, onWidgetUpdated) is NotesWidget -> ConfigureNotesWidget(widget, onWidgetUpdated) } @@ -212,8 +212,8 @@ fun ColumnScope.ConfigureWeatherWidget( @Composable fun ColumnScope.ConfigureFavoritesWidget( - widget: FavoritesWidget, - onWidgetUpdated: (FavoritesWidget) -> Unit, + widget: AppsWidget, + onWidgetUpdated: (AppsWidget) -> Unit, ) { val customAttrRepository = koinInject() @@ -662,7 +662,7 @@ fun ColumnScope.ConfigureAppWidget( is WeatherWidget -> it.copy(id = widget.id) is MusicWidget -> it.copy(id = widget.id) is CalendarWidget -> it.copy(id = widget.id) - is FavoritesWidget -> it.copy(id = widget.id) + is AppsWidget -> it.copy(id = widget.id) is NotesWidget -> it.copy(id = widget.id) } onWidgetUpdated(updatedWidget) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/WidgetPickerSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/WidgetPickerSheet.kt index b4337aea1..fcbbf6b3e 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/WidgetPickerSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/WidgetPickerSheet.kt @@ -58,7 +58,7 @@ import de.mm20.launcher2.ui.component.BottomSheetDialog import de.mm20.launcher2.widgets.AppWidget import de.mm20.launcher2.widgets.AppWidgetConfig import de.mm20.launcher2.widgets.CalendarWidget -import de.mm20.launcher2.widgets.FavoritesWidget +import de.mm20.launcher2.widgets.AppsWidget import de.mm20.launcher2.widgets.MusicWidget import de.mm20.launcher2.widgets.NotesWidget import de.mm20.launcher2.widgets.WeatherWidget @@ -177,6 +177,7 @@ class BindAndConfigureAppWidgetActivity : Activity() { cancel() } } + else -> { Log.w("MM20", "Unknown request code $requestCode") cancel() @@ -186,7 +187,10 @@ class BindAndConfigureAppWidgetActivity : Activity() { private fun finishWithResult(widgetId: Int) { val data = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId) - data.putExtra(ExtraAppWidgetProviderInfo, intent.getParcelableExtra(ExtraAppWidgetProviderInfo)) + data.putExtra( + ExtraAppWidgetProviderInfo, + intent.getParcelableExtra(ExtraAppWidgetProviderInfo) + ) setResult(RESULT_OK, data) appWidgetId = null finish() @@ -230,7 +234,10 @@ private class BindAndConfigureAppWidgetContract( ), ) } else { - Log.e("MM20", "Could not parse widget result: widgetId=$widgetId, widgetProviderInfo=$widgetProviderInfo") + Log.e( + "MM20", + "Could not parse widget result: widgetId=$widgetId, widgetProviderInfo=$widgetProviderInfo" + ) } } else { Log.e("MM20", "Widget result was not OK") @@ -322,7 +329,7 @@ fun WidgetPickerSheet( WeatherWidget.Type -> WeatherWidget(id) CalendarWidget.Type -> CalendarWidget(id) MusicWidget.Type -> MusicWidget(id) - FavoritesWidget.Type -> FavoritesWidget(id) + AppsWidget.Type -> AppsWidget(id) NotesWidget.Type -> NotesWidget(id) else -> return@OutlinedCard } @@ -336,14 +343,15 @@ fun WidgetPickerSheet( Icon( painter = painterResource( - when (it.type) { - WeatherWidget.Type -> R.drawable.light_mode_24px - CalendarWidget.Type -> R.drawable.today_24px - MusicWidget.Type -> R.drawable.music_note_24px - FavoritesWidget.Type -> R.drawable.star_24px - NotesWidget.Type -> R.drawable.sticky_note_2_24px - else -> R.drawable.widgets_24px - }), + when (it.type) { + WeatherWidget.Type -> R.drawable.light_mode_24px + CalendarWidget.Type -> R.drawable.today_24px + MusicWidget.Type -> R.drawable.music_note_24px + AppsWidget.Type -> R.drawable.apps_24px + NotesWidget.Type -> R.drawable.sticky_note_2_24px + else -> R.drawable.widgets_24px + } + ), contentDescription = null, modifier = Modifier.padding(end = 16.dp) ) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetItem.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetItem.kt index 8f6bb2c24..dd15c5337 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetItem.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/WidgetItem.kt @@ -34,14 +34,14 @@ import de.mm20.launcher2.ui.component.LauncherCard import de.mm20.launcher2.ui.launcher.sheets.ConfigureWidgetSheet import de.mm20.launcher2.ui.launcher.widgets.calendar.CalendarWidget import de.mm20.launcher2.ui.launcher.widgets.external.AppWidget -import de.mm20.launcher2.ui.launcher.widgets.favorites.FavoritesWidget +import de.mm20.launcher2.ui.launcher.widgets.favorites.AppsWidget import de.mm20.launcher2.ui.launcher.widgets.music.MusicWidget import de.mm20.launcher2.ui.launcher.widgets.notes.NotesWidget import de.mm20.launcher2.ui.launcher.widgets.weather.WeatherWidget import de.mm20.launcher2.ui.theme.transparency.transparency import de.mm20.launcher2.widgets.AppWidget import de.mm20.launcher2.widgets.CalendarWidget -import de.mm20.launcher2.widgets.FavoritesWidget +import de.mm20.launcher2.widgets.AppsWidget import de.mm20.launcher2.widgets.MusicWidget import de.mm20.launcher2.widgets.NotesWidget import de.mm20.launcher2.widgets.WeatherWidget @@ -106,7 +106,7 @@ fun WidgetItem( is WeatherWidget -> stringResource(R.string.widget_name_weather) is MusicWidget -> stringResource(R.string.widget_name_music) is CalendarWidget -> stringResource(R.string.widget_name_calendar) - is FavoritesWidget -> stringResource(R.string.widget_name_favorites) + is AppsWidget -> stringResource(R.string.widget_name_apps) is NotesWidget -> stringResource(R.string.widget_name_notes) is AppWidget -> remember(widget.config.widgetId) { appWidget?.loadLabel( @@ -152,8 +152,8 @@ fun WidgetItem( CalendarWidget(widget) } - is FavoritesWidget -> { - FavoritesWidget(widget) + is AppsWidget -> { + AppsWidget(widget) } is NotesWidget -> { diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/external/AppWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/external/AppWidget.kt index 4d93e6aae..779347213 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/external/AppWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/external/AppWidget.kt @@ -1,6 +1,5 @@ package de.mm20.launcher2.ui.launcher.widgets.external -import android.appwidget.AppWidgetHost import android.appwidget.AppWidgetManager import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth @@ -21,21 +20,18 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.isUnspecified import de.mm20.launcher2.ui.R import de.mm20.launcher2.ui.component.Banner -import de.mm20.launcher2.ui.ktx.toPixels import de.mm20.launcher2.ui.launcher.sheets.WidgetPickerSheet import de.mm20.launcher2.ui.locals.LocalDarkTheme import de.mm20.launcher2.ui.locals.LocalPreferDarkContentOverWallpaper import de.mm20.launcher2.widgets.AppWidget import de.mm20.launcher2.widgets.CalendarWidget -import de.mm20.launcher2.widgets.FavoritesWidget +import de.mm20.launcher2.widgets.AppsWidget import de.mm20.launcher2.widgets.MusicWidget import de.mm20.launcher2.widgets.NotesWidget import de.mm20.launcher2.widgets.WeatherWidget import de.mm20.launcher2.widgets.Widget -import kotlin.math.roundToInt @Composable fun AppWidget( @@ -84,7 +80,7 @@ fun AppWidget( is WeatherWidget -> it.copy(id = widget.id) is MusicWidget -> it.copy(id = widget.id) is CalendarWidget -> it.copy(id = widget.id) - is FavoritesWidget -> it.copy(id = widget.id) + is AppsWidget -> it.copy(id = widget.id) is NotesWidget -> it.copy(id = widget.id) } onWidgetUpdate(updatedWidget) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidget.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidget.kt similarity index 93% rename from app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidget.kt rename to app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidget.kt index 5b6b2288d..2523d0eb9 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidget.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidget.kt @@ -17,11 +17,11 @@ import de.mm20.launcher2.ui.R import de.mm20.launcher2.ui.common.FavoritesTagSelector import de.mm20.launcher2.ui.component.Banner import de.mm20.launcher2.ui.launcher.search.common.grid.SearchResultGrid -import de.mm20.launcher2.widgets.FavoritesWidget +import de.mm20.launcher2.widgets.AppsWidget @Composable -fun FavoritesWidget(widget: FavoritesWidget) { - val viewModel: FavoritesWidgetVM = viewModel(key = "favorites-widget-${widget.id}") +fun AppsWidget(widget: AppsWidget) { + val viewModel: AppsWidgetVM = viewModel(key = "favorites-widget-${widget.id}") val favorites by remember { viewModel.favorites }.collectAsState(emptyList()) val pinnedTags by viewModel.pinnedTags.collectAsState(emptyList()) val selectedTag by viewModel.selectedTag.collectAsState(null) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidgetVM.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidgetVM.kt similarity index 74% rename from app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidgetVM.kt rename to app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidgetVM.kt index cc7eaa688..1ec3b7916 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/FavoritesWidgetVM.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/favorites/AppsWidgetVM.kt @@ -1,21 +1,18 @@ package de.mm20.launcher2.ui.launcher.widgets.favorites -import de.mm20.launcher2.preferences.ui.GridSettings -import de.mm20.launcher2.preferences.ui.UiSettings import de.mm20.launcher2.services.widgets.WidgetsService import de.mm20.launcher2.ui.common.FavoritesVM -import de.mm20.launcher2.widgets.FavoritesWidget +import de.mm20.launcher2.widgets.AppsWidget import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.map import org.koin.core.component.inject -class FavoritesWidgetVM : FavoritesVM() { +class AppsWidgetVM : FavoritesVM() { private val widgetsService: WidgetsService by inject() - private val widget = MutableStateFlow(null) + private val widget = MutableStateFlow(null) override val tagsExpanded = widget.map { it?.config?.tagsMultiline == true } override val compactTags: Flow = widget.map { it?.config?.compactTags == true } @@ -28,7 +25,7 @@ class FavoritesWidgetVM : FavoritesVM() { ) } - fun updateWidget(widget: FavoritesWidget) { + fun updateWidget(widget: AppsWidget) { selectTag(null) if (widget.config.customTags) { selectTag(widget.config.tagList.firstOrNull()) diff --git a/core/i18n/src/main/res/values/strings.xml b/core/i18n/src/main/res/values/strings.xml index 8c00de1d3..e232f8eb4 100644 --- a/core/i18n/src/main/res/values/strings.xml +++ b/core/i18n/src/main/res/values/strings.xml @@ -223,7 +223,7 @@ Weather Calendar Media - Favorites + Apps Note Unknown Add widget diff --git a/data/widgets/src/main/java/de/mm20/launcher2/widgets/FavoritesWidget.kt b/data/widgets/src/main/java/de/mm20/launcher2/widgets/AppsWidget.kt similarity index 96% rename from data/widgets/src/main/java/de/mm20/launcher2/widgets/FavoritesWidget.kt rename to data/widgets/src/main/java/de/mm20/launcher2/widgets/AppsWidget.kt index 542501bcd..406eb2bfe 100644 --- a/data/widgets/src/main/java/de/mm20/launcher2/widgets/FavoritesWidget.kt +++ b/data/widgets/src/main/java/de/mm20/launcher2/widgets/AppsWidget.kt @@ -14,7 +14,7 @@ data class FavoritesWidgetConfig( val tagList: List = emptyList() ) -data class FavoritesWidget( +data class AppsWidget( override val id: UUID, val config: FavoritesWidgetConfig = FavoritesWidgetConfig(), ) : Widget() { diff --git a/data/widgets/src/main/java/de/mm20/launcher2/widgets/Widget.kt b/data/widgets/src/main/java/de/mm20/launcher2/widgets/Widget.kt index 3ac3bc6c5..4c407b3f8 100644 --- a/data/widgets/src/main/java/de/mm20/launcher2/widgets/Widget.kt +++ b/data/widgets/src/main/java/de/mm20/launcher2/widgets/Widget.kt @@ -43,11 +43,11 @@ sealed class Widget { ?: CalendarWidgetConfig() CalendarWidget(entity.id, config) } - FavoritesWidget.Type -> { + AppsWidget.Type -> { val config: FavoritesWidgetConfig = Json.decodeFromStringOrNull(entity.config?.takeIf { it.isNotBlank() }) ?: FavoritesWidgetConfig() - FavoritesWidget(entity.id, config) + AppsWidget(entity.id, config) } AppWidget.Type -> { val config: AppWidgetConfig = diff --git a/services/widgets/src/main/java/de/mm20/launcher2/services/widgets/WidgetsService.kt b/services/widgets/src/main/java/de/mm20/launcher2/services/widgets/WidgetsService.kt index 34b652c06..9dc42838b 100644 --- a/services/widgets/src/main/java/de/mm20/launcher2/services/widgets/WidgetsService.kt +++ b/services/widgets/src/main/java/de/mm20/launcher2/services/widgets/WidgetsService.kt @@ -7,7 +7,7 @@ import android.content.pm.LauncherApps import android.os.Build import androidx.core.content.getSystemService import de.mm20.launcher2.widgets.CalendarWidget -import de.mm20.launcher2.widgets.FavoritesWidget +import de.mm20.launcher2.widgets.AppsWidget import de.mm20.launcher2.widgets.MusicWidget import de.mm20.launcher2.widgets.NotesWidget import de.mm20.launcher2.widgets.WeatherWidget @@ -63,8 +63,8 @@ class WidgetsService( label = context.getString(R.string.widget_name_calendar), ), BuiltInWidgetInfo( - type = FavoritesWidget.Type, - label = context.getString(R.string.widget_name_favorites), + type = AppsWidget.Type, + label = context.getString(R.string.widget_name_apps), ), BuiltInWidgetInfo( type = NotesWidget.Type, @@ -85,7 +85,7 @@ class WidgetsService( fun isFavoritesWidgetFirst(): Flow { return widgetRepository.get(limit = 1).map { - it.firstOrNull() is FavoritesWidget + it.firstOrNull() is AppsWidget } }