diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/GlanceWidget.kt b/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/GlanceWidget.kt index c0af4eebc..1eb390e95 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/GlanceWidget.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/GlanceWidget.kt @@ -4,10 +4,8 @@ import android.annotation.SuppressLint import android.content.Context import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.glance.ColorFilter import androidx.glance.GlanceId import androidx.glance.GlanceModifier -import androidx.glance.GlanceTheme import androidx.glance.Image import androidx.glance.ImageProvider import androidx.glance.LocalContext @@ -23,16 +21,16 @@ import androidx.glance.layout.Column import androidx.glance.layout.Row import androidx.glance.layout.Spacer import androidx.glance.layout.fillMaxSize +import androidx.glance.layout.fillMaxWidth import androidx.glance.layout.height import androidx.glance.layout.padding import androidx.glance.layout.size +import androidx.glance.layout.width import androidx.glance.text.Text import androidx.glance.text.TextStyle import androidx.glance.unit.ColorProvider import com.pranshulgg.weather_master_app.MainActivity import com.pranshulgg.weather_master_app.R -import com.pranshulgg.weather_master_app.core.ui.components.Gap -import com.pranshulgg.weather_master_app.core.ui.components.WeatherIconBox import com.pranshulgg.weather_master_app.widgets.WeatherWidgetStateDefinition import com.pranshulgg.weather_master_app.widgets.WeatherWidgetStateJson import com.pranshulgg.weather_master_app.widgets.model.WidgetWeather @@ -72,7 +70,7 @@ class GlanceWidget : GlanceAppWidget() { .clickable(actionStartActivity()) ) { if (state != null) - Column() { + Column(GlanceModifier.fillMaxWidth().padding(16.dp)) { if (config.showClock) { WidgetClock(config.clockSize, context) } @@ -86,7 +84,7 @@ class GlanceWidget : GlanceAppWidget() { contentDescription = null, modifier = GlanceModifier.size(24.dp) ) - Spacer(GlanceModifier.height(5.dp)) + Spacer(GlanceModifier.width(5.dp)) Box { Text( text = "${state.currentTemp} • ", diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/GlanceWidgetReceiver.kt b/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/GlanceWidgetReceiver.kt index b2202e2fa..7ae694091 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/GlanceWidgetReceiver.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/GlanceWidgetReceiver.kt @@ -1,9 +1,21 @@ package com.pranshulgg.weather_master_app.widgets.glance +import android.appwidget.AppWidgetManager +import android.content.Context import androidx.glance.appwidget.GlanceAppWidgetReceiver +import com.pranshulgg.weather_master_app.data.worker.WeatherWorker import com.pranshulgg.weather_master_app.widgets.weather.WeatherWidget class GlanceWidgetReceiver : GlanceAppWidgetReceiver() { override val glanceAppWidget = GlanceWidget() + + override fun onUpdate( + context: Context, + appWidgetManager: AppWidgetManager, + appWidgetIds: IntArray + ) { + super.onUpdate(context, appWidgetManager, appWidgetIds) + WeatherWorker.runWorkerOnce(context) + } } \ No newline at end of file diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/ui/GlanceWidgetConfig.kt b/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/ui/GlanceWidgetConfig.kt index a090ad714..ce356de40 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/ui/GlanceWidgetConfig.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/widgets/glance/ui/GlanceWidgetConfig.kt @@ -42,6 +42,7 @@ import com.pranshulgg.weather_master_app.core.ui.components.SettingsTileIcon import com.pranshulgg.weather_master_app.core.ui.components.WeatherIconBox import com.pranshulgg.weather_master_app.core.ui.components.tiles.DialogOption import com.pranshulgg.weather_master_app.core.ui.theme.ShapeRadius +import com.pranshulgg.weather_master_app.core.utils.formatters.toSafeDouble import com.pranshulgg.weather_master_app.widgets.config.WidgetConfig import kotlin.math.roundToInt @@ -49,15 +50,29 @@ import kotlin.math.roundToInt @Composable fun GlanceWidgetConfig(onDone: (WidgetConfig) -> Unit = {}) { - var clockSize by remember { mutableFloatStateOf(32f) } + var clockSize by remember { mutableFloatStateOf(36f) } var showClock by remember { mutableStateOf(true) } var dateFormat by remember { mutableStateOf("EEE d MMM") } val formats = listOf("EEE d MMM", "EEE MMM d", "EEE MM-dd") + val clockSizes = listOf( + 20f, + 28f, + 36f, + 44f, + 56f, + 72f, + 88f, + 104f, + 120f + ) val btnSize = ButtonDefaults.MediumContainerHeight val formatsOptions = formats.map { DialogOption(it, it) } + val clockSizeOptions = clockSizes.map { DialogOption(it.toString(), "${it.roundToInt()}.sp") } + + Scaffold( containerColor = MaterialTheme.colorScheme.surfaceContainer ) { paddingValues -> @@ -76,17 +91,13 @@ fun GlanceWidgetConfig(onDone: (WidgetConfig) -> Unit = {}) { SettingSection( title = stringResource(R.string.setting_appearance), tiles = listOf( - SettingTile.DialogSliderTile( - title = "Clock size", - dialogTitle = "Clock size", - initialValue = 32f, - valueRange = 20f..120f, - description = "${clockSize.roundToInt()}sp", - isDescriptionAsValue = true, + SettingTile.DialogOptionTile( leading = { SettingsTileIcon(R.drawable.format_size_24px) }, - labelFormatter = { "${it.roundToInt()}sp" }, - onValueSubmitted = { - clockSize = it + title = "Clock size", + options = clockSizeOptions, + selectedOption = clockSize.toString(), + onOptionSelected = { + clockSize = it.toSafeDouble()?.toFloat() ?: 36f } ), SettingTile.SwitchTile( diff --git a/app/src/main/res/drawable/glance_widget_preview.png b/app/src/main/res/drawable/glance_widget_preview.png new file mode 100644 index 000000000..de63c80ca Binary files /dev/null and b/app/src/main/res/drawable/glance_widget_preview.png differ diff --git a/app/src/main/res/xml/glance_widget_info.xml b/app/src/main/res/xml/glance_widget_info.xml index 4000e9ede..aea43a772 100644 --- a/app/src/main/res/xml/glance_widget_info.xml +++ b/app/src/main/res/xml/glance_widget_info.xml @@ -1,9 +1,8 @@ \ No newline at end of file + android:previewImage="@drawable/glance_widget_preview" /> \ No newline at end of file