Rename favorites widget
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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<CustomAttributesRepository>()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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<AppWidgetProviderInfo>(ExtraAppWidgetProviderInfo))
|
||||
data.putExtra(
|
||||
ExtraAppWidgetProviderInfo,
|
||||
intent.getParcelableExtra<AppWidgetProviderInfo>(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
|
||||
}
|
||||
@@ -340,10 +347,11 @@ fun WidgetPickerSheet(
|
||||
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
|
||||
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)
|
||||
)
|
||||
|
||||
@@ -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 -> {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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<FavoritesWidget?>(null)
|
||||
private val widget = MutableStateFlow<AppsWidget?>(null)
|
||||
override val tagsExpanded = widget.map { it?.config?.tagsMultiline == true }
|
||||
override val compactTags: Flow<Boolean> = 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())
|
||||
@@ -223,7 +223,7 @@
|
||||
<string name="widget_name_weather">Weather</string>
|
||||
<string name="widget_name_calendar">Calendar</string>
|
||||
<string name="widget_name_music">Media</string>
|
||||
<string name="widget_name_favorites">Favorites</string>
|
||||
<string name="widget_name_apps">Apps</string>
|
||||
<string name="widget_name_notes">Note</string>
|
||||
<string name="widget_name_unknown">Unknown</string>
|
||||
<string name="widget_add_widget">Add widget</string>
|
||||
|
||||
@@ -14,7 +14,7 @@ data class FavoritesWidgetConfig(
|
||||
val tagList: List<String> = emptyList()
|
||||
)
|
||||
|
||||
data class FavoritesWidget(
|
||||
data class AppsWidget(
|
||||
override val id: UUID,
|
||||
val config: FavoritesWidgetConfig = FavoritesWidgetConfig(),
|
||||
) : Widget() {
|
||||
@@ -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 =
|
||||
|
||||
@@ -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<Boolean> {
|
||||
return widgetRepository.get(limit = 1).map {
|
||||
it.firstOrNull() is FavoritesWidget
|
||||
it.firstOrNull() is AppsWidget
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user