diff --git a/app/src/main/java/space/darkest/nova/android/ui/SettingsScreen.kt b/app/src/main/java/space/darkest/nova/android/ui/SettingsScreen.kt index d3477a8..1955f90 100644 --- a/app/src/main/java/space/darkest/nova/android/ui/SettingsScreen.kt +++ b/app/src/main/java/space/darkest/nova/android/ui/SettingsScreen.kt @@ -251,7 +251,7 @@ private fun ClockSettingsSheet(onDismiss: () -> Unit) { style = MaterialTheme.typography.bodyLarge, ) Text( - text = "Remove the widget background. May not work on all launchers.", + text = "Remove the widget background. May not work on all launchers. Re-add the widget after changing.", style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurfaceVariant, ) diff --git a/app/src/main/java/space/darkest/nova/android/widget/ClockWidget.kt b/app/src/main/java/space/darkest/nova/android/widget/ClockWidget.kt index ffe2dbb..3c61a92 100644 --- a/app/src/main/java/space/darkest/nova/android/widget/ClockWidget.kt +++ b/app/src/main/java/space/darkest/nova/android/widget/ClockWidget.kt @@ -5,12 +5,9 @@ import android.content.Context import android.content.Intent import android.provider.AlarmClock import androidx.compose.runtime.Composable -import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import androidx.glance.ColorFilter -import androidx.glance.Image -import androidx.glance.ImageProvider import androidx.glance.GlanceId import androidx.glance.GlanceModifier import androidx.glance.GlanceTheme @@ -21,8 +18,8 @@ import androidx.glance.appwidget.GlanceAppWidgetReceiver import androidx.glance.appwidget.SizeMode import androidx.glance.appwidget.action.actionStartActivity import androidx.glance.appwidget.provideContent +import androidx.compose.ui.graphics.Color import androidx.glance.background -import androidx.glance.color.ColorProvider import androidx.glance.color.DynamicThemeColorProviders import space.darkest.nova.android.data.WidgetPreferences import androidx.glance.layout.Alignment @@ -33,7 +30,6 @@ import androidx.glance.layout.Spacer import androidx.glance.layout.fillMaxSize import androidx.glance.layout.height import androidx.glance.layout.padding -import androidx.glance.layout.size import androidx.glance.layout.width import androidx.glance.text.FontWeight import androidx.glance.text.Text @@ -80,7 +76,7 @@ class ClockWidget : GlanceAppWidget() { "$day, $date" } val alarmStr = if (alarmTime != null && alarmDate != null) { - formatAlarm(alarmTime, alarmDate) + "\u23F0 ${formatAlarm(alarmTime, alarmDate)}" } else null Box( @@ -95,144 +91,101 @@ class ClockWidget : GlanceAppWidget() { contentAlignment = Alignment.CenterStart, ) { if (compact) { - CompactLayout(hours, minutes, dateStr, alarmStr, transparentBg) + CompactLayout(hours, minutes, dateStr, alarmStr) } else { - FullLayout(hours, minutes, dateStr, alarmStr, transparentBg) + FullLayout(hours, minutes, dateStr, alarmStr) } } } - // text with a dark shadow layer behind it for readability on wallpapers @Composable - private fun ShadowText( - text: String, - style: TextStyle, - shadow: Boolean, - maxLines: Int = Int.MAX_VALUE, - ) { - if (shadow) { - Box { - Text( - text = text, - style = style.copy( - color = ColorProvider(Color(0x90000000)), - ), - maxLines = maxLines, - modifier = GlanceModifier.padding(start = 1.dp, top = 1.dp), - ) - Text(text = text, style = style, maxLines = maxLines) - } - } else { - Text(text = text, style = style, maxLines = maxLines) - } - } - - @Composable - private fun TimeRow(hours: String, minutes: String, fontSize: Int = 48, shadow: Boolean = false) { + private fun TimeRow(hours: String, minutes: String, fontSize: Int = 48) { Row(verticalAlignment = Alignment.Bottom) { - ShadowText( + Text( text = hours, style = TextStyle( color = GlanceTheme.colors.primary, fontSize = fontSize.sp, fontWeight = FontWeight.Bold, ), - shadow = shadow, ) - ShadowText( + Text( text = ":", style = TextStyle( color = GlanceTheme.colors.onSurfaceVariant, fontSize = fontSize.sp, fontWeight = FontWeight.Bold, ), - shadow = shadow, ) - ShadowText( + Text( text = minutes, style = TextStyle( color = GlanceTheme.colors.tertiary, fontSize = fontSize.sp, fontWeight = FontWeight.Bold, ), - shadow = shadow, ) } } @Composable - private fun CompactLayout( - hours: String, minutes: String, dateStr: String, alarmStr: String?, shadow: Boolean, - ) { + private fun CompactLayout(hours: String, minutes: String, dateStr: String, alarmStr: String?) { Row( verticalAlignment = Alignment.CenterVertically, modifier = GlanceModifier.fillMaxSize(), ) { - TimeRow(hours, minutes, fontSize = 36, shadow = shadow) + TimeRow(hours, minutes, fontSize = 36) Spacer(GlanceModifier.width(12.dp)) Column { - ShadowText( + Text( text = dateStr, style = TextStyle( color = GlanceTheme.colors.onSurfaceVariant, fontSize = 12.sp, ), - shadow = shadow, ) if (alarmStr != null) { Spacer(GlanceModifier.height(2.dp)) - AlarmRow(alarmStr, 11, shadow) + Text( + text = alarmStr, + style = TextStyle( + color = GlanceTheme.colors.secondary, + fontSize = 11.sp, + ), + ) } } } } @Composable - private fun FullLayout( - hours: String, minutes: String, dateStr: String, alarmStr: String?, shadow: Boolean, - ) { + private fun FullLayout(hours: String, minutes: String, dateStr: String, alarmStr: String?) { Column { - TimeRow(hours, minutes, shadow = shadow) + TimeRow(hours, minutes) Spacer(GlanceModifier.height(2.dp)) - ShadowText( + Text( text = dateStr, style = TextStyle( color = GlanceTheme.colors.onSurfaceVariant, fontSize = 14.sp, ), - shadow = shadow, ) if (alarmStr != null) { Spacer(GlanceModifier.height(4.dp)) - AlarmRow(alarmStr, 12, shadow) + Text( + text = alarmStr, + style = TextStyle( + color = GlanceTheme.colors.secondary, + fontSize = 12.sp, + ), + ) } } } - @Composable - private fun AlarmRow(text: String, fontSize: Int, shadow: Boolean) { - Row(verticalAlignment = Alignment.CenterVertically) { - Image( - provider = ImageProvider(android.R.drawable.ic_lock_idle_alarm), - contentDescription = "Alarm", - modifier = GlanceModifier.size(fontSize.dp), - colorFilter = ColorFilter.tint(GlanceTheme.colors.secondary), - ) - Spacer(GlanceModifier.width(4.dp)) - ShadowText( - text = text, - style = TextStyle( - color = GlanceTheme.colors.secondary, - fontSize = fontSize.sp, - ), - shadow = shadow, - ) - } - } - private fun formatAlarm(time: LocalTime, date: LocalDate): String { val today = LocalDate.now() val timeStr = time.format(DateTimeFormatter.ofPattern("HH:mm"))