From 69aa41bf8ea8f132e2f1a17e55c34361ce57bcf7 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Tue, 16 May 2023 17:29:30 +0200 Subject: [PATCH] Add option to hide widget background card for app widgets --- .../ui/launcher/sheets/ConfigureWidgetSheet.kt | 9 +++++++++ .../launcher2/ui/launcher/widgets/WidgetItem.kt | 14 +++++++++++--- core/i18n/src/main/res/values/strings.xml | 1 + .../java/de/mm20/launcher2/widgets/AppWidget.kt | 1 + 4 files changed, 22 insertions(+), 3 deletions(-) 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 14ecad8b..11aa0613 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 @@ -437,6 +437,15 @@ fun ColumnScope.ConfigureAppWidget( onWidgetUpdated(widget.copy(config = widget.config.copy(borderless = it))) } ) + Divider() + SwitchPreference( + title = stringResource(R.string.widget_config_appwidget_background), + iconPadding = false, + value = widget.config.background, + onValueChanged = { + onWidgetUpdated(widget.copy(config = widget.config.copy(background = it))) + } + ) } } if (isAtLeastApiLevel(28) && widgetInfo.widgetFeatures and AppWidgetProviderInfo.WIDGET_FEATURE_RECONFIGURABLE != 0) { 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 020d6871..6eaadf50 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 @@ -4,6 +4,7 @@ import android.appwidget.AppWidgetHost import android.appwidget.AppWidgetManager import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.animateDpAsState +import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.gestures.DraggableState import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.draggable @@ -47,6 +48,7 @@ import de.mm20.launcher2.ui.launcher.widgets.favorites.FavoritesWidget 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.locals.LocalCardStyle import de.mm20.launcher2.widgets.AppWidget import de.mm20.launcher2.widgets.CalendarWidget import de.mm20.launcher2.widgets.FavoritesWidget @@ -54,7 +56,6 @@ 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 java.util.UUID @Composable fun WidgetItem( @@ -62,7 +63,7 @@ fun WidgetItem( appWidgetHost: AppWidgetHost, modifier: Modifier = Modifier, editMode: Boolean = false, - onWidgetAdd: (widget: Widget, offset: Int) -> Unit = {_, _ ->}, + onWidgetAdd: (widget: Widget, offset: Int) -> Unit = { _, _ -> }, onWidgetUpdate: (widget: Widget) -> Unit = {}, onWidgetRemove: () -> Unit = {}, draggableState: DraggableState = rememberDraggableState {}, @@ -79,9 +80,15 @@ fun WidgetItem( AppWidgetManager.getInstance(context).getAppWidgetInfo(widget.config.widgetId) } else null + val backgroundOpacity by animateFloatAsState( + if (widget is AppWidget && !widget.config.background && !editMode) 0f else LocalCardStyle.current.opacity, + label = "widgetCardBackgroundOpacity", + ) + LauncherCard( modifier = modifier.zIndex(if (isDragged) 1f else 0f), - elevation = elevation + elevation = elevation, + backgroundOpacity = backgroundOpacity, ) { Column { AnimatedVisibility(editMode) { @@ -203,6 +210,7 @@ fun WidgetItem( widgetId = it.config.widgetId ) ) + is WeatherWidget -> it.copy(id = widget.id) is MusicWidget -> it.copy(id = widget.id) is CalendarWidget -> it.copy(id = widget.id) diff --git a/core/i18n/src/main/res/values/strings.xml b/core/i18n/src/main/res/values/strings.xml index 4c850ebd..bab8cf21 100644 --- a/core/i18n/src/main/res/values/strings.xml +++ b/core/i18n/src/main/res/values/strings.xml @@ -795,6 +795,7 @@ Variable Height Borderless + Background card Configure widget Drag to resize Weather integration settings diff --git a/data/widgets/src/main/java/de/mm20/launcher2/widgets/AppWidget.kt b/data/widgets/src/main/java/de/mm20/launcher2/widgets/AppWidget.kt index 99db97c1..98cf5259 100644 --- a/data/widgets/src/main/java/de/mm20/launcher2/widgets/AppWidget.kt +++ b/data/widgets/src/main/java/de/mm20/launcher2/widgets/AppWidget.kt @@ -16,6 +16,7 @@ data class AppWidgetConfig( val widgetId: Int, val height: Int, val borderless: Boolean = false, + val background: Boolean = true, ) data class AppWidget(