PeachWidgets.kt

2.7 KB · raw

1package com.peachpasswords.widget23import android.content.Context4import androidx.compose.runtime.Composable5import androidx.compose.ui.graphics.Color6import androidx.compose.ui.unit.dp7import androidx.compose.ui.unit.sp8import androidx.glance.GlanceId9import androidx.glance.GlanceModifier10import androidx.glance.GlanceTheme11import androidx.glance.action.clickable12import androidx.glance.appwidget.GlanceAppWidget13import androidx.glance.appwidget.GlanceAppWidgetReceiver14import androidx.glance.appwidget.action.actionStartActivity15import androidx.glance.appwidget.cornerRadius16import androidx.glance.appwidget.provideContent17import androidx.glance.LocalContext18import androidx.glance.background19import androidx.glance.layout.Alignment20import androidx.glance.layout.Column21import androidx.glance.layout.fillMaxSize22import androidx.glance.layout.padding23import androidx.glance.text.FontStyle24import androidx.glance.text.FontWeight25import androidx.glance.text.Text26import androidx.glance.text.TextStyle27import androidx.glance.unit.ColorProvider28import com.peachpasswords.MainActivity2930// Peach palette — amber on near-black, matching the app shell.31private val WidgetBg = Color(0xFF0C0A06)32private val Accent = Color(0xFFE8956D)33private val Muted = Color(0xFF8A8178)3435class PeachSmallWidget : GlanceAppWidget() {36    override suspend fun provideGlance(context: Context, id: GlanceId) {37        provideContent { GlanceTheme { WidgetContent("peach", "tap to unlock") } }38    }39}4041class PeachMediumWidget : GlanceAppWidget() {42    override suspend fun provideGlance(context: Context, id: GlanceId) {43        provideContent { GlanceTheme { WidgetContent("peach", "your vault, one tap away") } }44    }45}4647class PeachSmallWidgetReceiver : GlanceAppWidgetReceiver() {48    override val glanceAppWidget: GlanceAppWidget = PeachSmallWidget()49}5051class PeachMediumWidgetReceiver : GlanceAppWidgetReceiver() {52    override val glanceAppWidget: GlanceAppWidget = PeachMediumWidget()53}5455@Composable56private fun WidgetContent(wordmark: String, hint: String) {57    val launch = android.content.Intent(LocalContext.current, MainActivity::class.java)58    Column(59        modifier = GlanceModifier60            .fillMaxSize()61            .background(WidgetBg)62            .cornerRadius(20.dp)63            .padding(16.dp)64            .clickable(actionStartActivity(launch)),65        verticalAlignment = Alignment.Vertical.CenterVertically,66        horizontalAlignment = Alignment.Horizontal.Start,67    ) {68        Text(69            text = wordmark,70            style = TextStyle(color = ColorProvider(Accent), fontSize = 22.sp, fontStyle = FontStyle.Italic, fontWeight = FontWeight.Medium),71        )72        Text(73            text = hint,74            style = TextStyle(color = ColorProvider(Muted), fontSize = 11.sp),75        )76    }77}