Skip to content

Commit 9bcd6ef

Browse files
committed
Update Widget to use Scaffold and TitleBar
1 parent 92519ad commit 9bcd6ef

File tree

4 files changed

+48
-60
lines changed

4 files changed

+48
-60
lines changed

app/src/main/java/dev/aungkyawpaing/ccdroidx/feature/widget/DashboardWidget.kt

+23-43
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,18 @@ import androidx.glance.appwidget.GlanceAppWidgetReceiver
2222
import androidx.glance.appwidget.SizeMode
2323
import androidx.glance.appwidget.action.ActionCallback
2424
import androidx.glance.appwidget.action.actionRunCallback
25+
import androidx.glance.appwidget.components.Scaffold
26+
import androidx.glance.appwidget.components.TitleBar
2527
import androidx.glance.appwidget.cornerRadius
2628
import androidx.glance.appwidget.lazy.LazyColumn
2729
import androidx.glance.appwidget.lazy.items
2830
import androidx.glance.appwidget.provideContent
2931
import androidx.glance.background
30-
import androidx.glance.layout.Alignment
3132
import androidx.glance.layout.Box
3233
import androidx.glance.layout.Column
33-
import androidx.glance.layout.Row
34-
import androidx.glance.layout.fillMaxSize
3534
import androidx.glance.layout.fillMaxWidth
3635
import androidx.glance.layout.height
3736
import androidx.glance.layout.padding
38-
import androidx.glance.layout.size
3937
import androidx.glance.semantics.semantics
4038
import androidx.glance.semantics.testTag
4139
import androidx.glance.text.FontWeight
@@ -71,45 +69,27 @@ fun DashboardWidgetContent(failingProjects: List<Project>) {
7169
val context = LocalContext.current
7270

7371
GlanceTheme {
74-
Column(
75-
modifier = GlanceModifier
76-
.fillMaxSize()
77-
.background(GlanceTheme.colors.background)
78-
) {
79-
80-
Row(
81-
modifier = GlanceModifier
82-
.fillMaxWidth()
83-
.background(GlanceTheme.colors.primary)
84-
.clickable(onClick = actionStartActivity(MainActivity::class.java)),
85-
verticalAlignment = Alignment.CenterVertically
86-
) {
87-
val title = if (failingProjects.isEmpty()) {
88-
context.getString(R.string.dashboard_widget_title_green)
89-
} else {
90-
context.getString(R.string.dashboard_widget_title_red, failingProjects.size.toString())
91-
}
92-
val titleStyle = TextStyle(
93-
color = GlanceTheme.colors.onPrimary,
94-
fontSize = TextUnit(16.0f, TextUnitType.Sp),
95-
fontWeight = FontWeight.Medium,
96-
)
97-
Image(
98-
provider = ImageProvider(R.drawable.ic_refresh_24),
99-
contentDescription = context.getString(R.string.menu_item_sync_project_status),
100-
colorFilter = ColorFilter.tint(GlanceTheme.colors.onPrimary),
101-
modifier = GlanceModifier.defaultWeight().size(48.dp).padding(12.dp)
102-
.clickable(onClick = actionRunCallback<WidgetRefreshAction>())
103-
)
104-
105-
Text(
106-
text = title,
107-
style = titleStyle,
108-
modifier = GlanceModifier.fillMaxWidth()
109-
)
110-
}
111-
112-
LazyColumn(modifier = GlanceModifier.padding(8.dp)) {
72+
Scaffold(
73+
modifier = GlanceModifier.background(GlanceTheme.colors.widgetBackground),
74+
titleBar = {
75+
TitleBar(
76+
startIcon = ImageProvider(R.drawable.ic_notification),
77+
iconColor = GlanceTheme.colors.primary,
78+
title = if (failingProjects.isEmpty()) {
79+
context.getString(R.string.dashboard_widget_title_green)
80+
} else {
81+
context.getString(R.string.dashboard_widget_title_red, failingProjects.size.toString())
82+
},
83+
actions = {
84+
Image(
85+
provider = ImageProvider(R.drawable.ic_refresh_24),
86+
contentDescription = context.getString(R.string.menu_item_sync_project_status),
87+
colorFilter = ColorFilter.tint(GlanceTheme.colors.onSurface),
88+
modifier = GlanceModifier.clickable(onClick = actionRunCallback<WidgetRefreshAction>())
89+
)
90+
})
91+
}) {
92+
LazyColumn {
11393
items(failingProjects) { project ->
11494
Column {
11595
Box(

app/src/main/java/dev/aungkyawpaing/ccdroidx/feature/widget/DashboardWidgetPreview.kt

+23-15
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import androidx.compose.ui.Alignment
2121
import androidx.compose.ui.Modifier
2222
import androidx.compose.ui.graphics.ColorFilter
2323
import androidx.compose.ui.res.colorResource
24+
import androidx.compose.ui.res.painterResource
2425
import androidx.compose.ui.text.style.TextOverflow
2526
import androidx.compose.ui.tooling.preview.Preview
2627
import androidx.compose.ui.unit.dp
@@ -38,39 +39,46 @@ fun DashboardWidgetPreview() {
3839
Mdc3Theme {
3940
Column(
4041
modifier = Modifier
41-
.size(150.dp, 225.dp)
42-
.background(MaterialTheme.colorScheme.background)
42+
.size(150.dp, 200.dp)
43+
.background(MaterialTheme.colorScheme.surface, RoundedCornerShape(8.dp))
4344
) {
4445

4546
Row(
4647
modifier = Modifier
47-
.fillMaxWidth()
48-
.background(MaterialTheme.colorScheme.primary),
48+
.fillMaxWidth(),
4949
verticalAlignment = Alignment.CenterVertically
5050
) {
5151
val title = "2 Red"
5252
Image(
53-
Icons.Filled.Refresh,
53+
painterResource(id = R.drawable.ic_notification),
5454
null,
55-
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onPrimary),
55+
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.primary),
5656
modifier = Modifier
57-
.size(48.dp)
58-
.padding(12.dp)
57+
.size(36.dp)
58+
.padding(8.dp)
5959
)
6060

6161
Text(
6262
"3 Red",
63-
style = MaterialTheme.typography.titleMedium,
64-
color = MaterialTheme.colorScheme.onPrimary
63+
style = MaterialTheme.typography.titleSmall,
64+
color = MaterialTheme.colorScheme.onSurface,
65+
modifier = Modifier.weight(1.0f)
66+
)
67+
68+
Image(
69+
Icons.Filled.Refresh,
70+
null,
71+
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface),
72+
modifier = Modifier
73+
.size(36.dp)
74+
.padding(8.dp)
6575
)
6676
}
6777

6878
val exampleProjects = listOf(
69-
"lisan/al-giab",
70-
"anakin/sky-walker",
71-
"answer/to-be-rich-is",
72-
"ccdroidx/ccdroidx-pipeline",
73-
"you-cant/see-this"
79+
"failing/project",
80+
"shown/here",
81+
"just/glance"
7482
)
7583

7684
LazyColumn(
Loading

app/src/main/res/xml/dashboard_widget_info.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
android:description="@string/dashboard_widget_description"
33
android:initialLayout="@layout/glance_default_loading_layout"
44
android:minWidth="100dp"
5-
android:minHeight="150dp"
5+
android:minHeight="120dp"
66
android:previewImage="@drawable/dashboard_widget_preview"
77
android:resizeMode="horizontal|vertical"
88
android:targetCellWidth="2"
9-
android:targetCellHeight="3"
9+
android:targetCellHeight="2"
1010
android:widgetCategory="home_screen" />

0 commit comments

Comments
 (0)