Compare commits

..

No commits in common. "843786507f9f6287d28f257c73b4ed8ab158134b" and "82b491921bd566018e5bc2b9a790089d3b295cad" have entirely different histories.

2 changed files with 30 additions and 77 deletions

View file

@ -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,
)

View file

@ -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,143 +91,100 @@ 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)
}
}
}
@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,
Text(
text = alarmStr,
style = TextStyle(
color = GlanceTheme.colors.secondary,
fontSize = fontSize.sp,
fontSize = 12.sp,
),
shadow = shadow,
)
}
}
}
private fun formatAlarm(time: LocalTime, date: LocalDate): String {
val today = LocalDate.now()