mirror of
https://github.com/PranshulGG/WeatherMaster.git
synced 2026-10-21 10:40:23 -05:00
change clock size selection to predefined options, fix widget layout spacing, and trigger worker on update
This commit is contained in:
1 parent
a7d889f8fc
commit
641bbe726c
5 files changed
+40
-20
No files matched your search
@@ -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<MainActivity>())
|
||||
) {
|
||||
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} • ",
|
||||
|
||||
+12
@@ -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)
|
||||
}
|
||||
}
|
||||
+22
-11
@@ -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(
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@@ -1,9 +1,8 @@
|
||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:minWidth="40dp"
|
||||
android:minWidth="100dp"
|
||||
android:minHeight="40dp"
|
||||
android:updatePeriodMillis="0"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:widgetCategory="home_screen"
|
||||
android:configure="com.pranshulgg.weather_master_app.widgets.config.WidgetConfigActivity"
|
||||
|
||||
/>
|
||||
android:previewImage="@drawable/glance_widget_preview" />
|
||||
Reference in new issue
Block a user