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(