Skip to content

Commit d4a0043

Browse files
committed
Refactor for refreshing info dialog
1 parent 9075600 commit d4a0043

File tree

8 files changed

+138
-98
lines changed

8 files changed

+138
-98
lines changed

app/src/main/kotlin/com/w2sv/wifiwidget/ui/home/configurationdialog/ConfigurationDialog.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,18 @@ import com.w2sv.wifiwidget.ui.shared.diagonalGradient
3131
@Composable
3232
private fun WidgetConfigurationDialogPrev() {
3333
WifiWidgetTheme {
34-
WidgetConfigurationDialog {}
34+
WidgetConfigurationDialog(setInfoDialogPropertyIndex = {}, showRefreshingInfoDialog = {})
3535
}
3636
}
3737

3838
@Composable
3939
fun WidgetConfigurationDialog(
4040
modifier: Modifier = Modifier,
4141
viewModel: HomeActivity.ViewModel = viewModel(),
42-
setInfoDialogPropertyIndex: (Int) -> Unit
42+
setInfoDialogPropertyIndex: (Int) -> Unit,
43+
showRefreshingInfoDialog: () -> Unit
4344
) {
44-
Dialog(onDismissRequest = {
45-
viewModel.onDismissWidgetConfigurationDialog()
46-
}) {
45+
Dialog(onDismissRequest = { viewModel.onDismissWidgetConfigurationDialog() }) {
4746
ElevatedCard(
4847
modifier = modifier,
4948
shape = RoundedCornerShape(12.dp),
@@ -77,7 +76,8 @@ fun WidgetConfigurationDialog(
7776
modifier = Modifier
7877
.fillMaxWidth()
7978
.heightIn(260.dp, 420.dp),
80-
setInfoDialogPropertyIndex = setInfoDialogPropertyIndex
79+
setInfoDialogPropertyIndex = setInfoDialogPropertyIndex,
80+
showRefreshingInfoDialog = showRefreshingInfoDialog
8181
)
8282
StatefulButtonRow(modifier = Modifier.fillMaxWidth())
8383
}

app/src/main/kotlin/com/w2sv/wifiwidget/ui/home/configurationdialog/InflationButton.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import androidx.compose.ui.Modifier
1515
import androidx.lifecycle.viewmodel.compose.viewModel
1616
import com.w2sv.wifiwidget.activities.HomeActivity
1717
import com.w2sv.wifiwidget.ui.home.configurationdialog.content.PropertyInfoDialog
18+
import com.w2sv.wifiwidget.ui.shared.InfoDialog
1819

1920
@Composable
2021
fun StatefulWidgetConfigurationDialogButton(
@@ -25,16 +26,22 @@ fun StatefulWidgetConfigurationDialogButton(
2526
viewModel.showWidgetConfigurationDialog.value = true
2627
}
2728

29+
val inflateDialog by viewModel.showWidgetConfigurationDialog.collectAsState()
30+
2831
var infoDialogPropertyIndex by rememberSaveable {
2932
mutableStateOf<Int?>(null)
3033
}
31-
32-
val inflateDialog by viewModel.showWidgetConfigurationDialog.collectAsState()
34+
val (showRefreshingInfoDialog, setShowRefreshingInfoDialog) = rememberSaveable {
35+
mutableStateOf(false)
36+
}
3337

3438
if (inflateDialog) {
3539
WidgetConfigurationDialog(
3640
setInfoDialogPropertyIndex = {
3741
infoDialogPropertyIndex = it
42+
},
43+
showRefreshingInfoDialog = {
44+
setShowRefreshingInfoDialog(true)
3845
}
3946
)
4047

@@ -43,6 +50,11 @@ fun StatefulWidgetConfigurationDialogButton(
4350
infoDialogPropertyIndex = null
4451
}
4552
}
53+
if (showRefreshingInfoDialog) {
54+
InfoDialog(title = "Data Refreshing", text = "BlubBlub") {
55+
setShowRefreshingInfoDialog(false)
56+
}
57+
}
4658
}
4759
}
4860

app/src/main/kotlin/com/w2sv/wifiwidget/ui/home/configurationdialog/content/ContentColumn.kt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,16 @@ import com.w2sv.wifiwidget.ui.shared.WifiWidgetTheme
4040
@Composable
4141
private fun Prev() {
4242
WifiWidgetTheme {
43-
StatefulContentColumn {}
43+
StatefulContentColumn(setInfoDialogPropertyIndex = {}, showRefreshingInfoDialog = {})
4444
}
4545
}
4646

4747
@Composable
4848
fun StatefulContentColumn(
4949
modifier: Modifier = Modifier,
5050
viewModel: HomeActivity.ViewModel = androidx.lifecycle.viewmodel.compose.viewModel(),
51-
setInfoDialogPropertyIndex: (Int) -> Unit
51+
setInfoDialogPropertyIndex: (Int) -> Unit,
52+
showRefreshingInfoDialog: () -> Unit
5253
) {
5354
val scrollState = rememberScrollState()
5455

@@ -102,7 +103,8 @@ fun StatefulContentColumn(
102103
},
103104
onInfoButtonClick = {
104105
setInfoDialogPropertyIndex(it)
105-
}
106+
},
107+
showRefreshingInfoDialog = showRefreshingInfoDialog
106108
)
107109
}
108110

@@ -116,7 +118,8 @@ internal fun ContentColumn(
116118
onOpacityChanged: (Float) -> Unit,
117119
propertyChecked: (String) -> Boolean,
118120
onCheckedChange: (String, Boolean) -> Unit,
119-
onInfoButtonClick: (Int) -> Unit
121+
onInfoButtonClick: (Int) -> Unit,
122+
showRefreshingInfoDialog: () -> Unit,
120123
) {
121124
Column(
122125
horizontalAlignment = Alignment.CenterHorizontally,
@@ -162,7 +165,10 @@ internal fun ContentColumn(
162165
iconRes = com.w2sv.widget.R.drawable.ic_refresh_24,
163166
modifier = defaultSectionHeaderModifier
164167
)
165-
RefreshingSection(checkablePropertiesColumnModifier) {
168+
RefreshingSection(
169+
checkablePropertiesColumnModifier,
170+
showInfoDialog = showRefreshingInfoDialog
171+
) {
166172
with(scrollState) {
167173
animateScrollTo(maxValue)
168174
}
Lines changed: 14 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
package com.w2sv.wifiwidget.ui.home.configurationdialog.content
22

3-
import androidx.compose.foundation.layout.Arrangement
4-
import androidx.compose.foundation.layout.Column
5-
import androidx.compose.foundation.layout.fillMaxWidth
63
import androidx.compose.foundation.layout.padding
7-
import androidx.compose.foundation.layout.sizeIn
8-
import androidx.compose.foundation.rememberScrollState
9-
import androidx.compose.foundation.verticalScroll
10-
import androidx.compose.material3.AlertDialog
114
import androidx.compose.runtime.Composable
12-
import androidx.compose.ui.Alignment
135
import androidx.compose.ui.Modifier
146
import androidx.compose.ui.platform.LocalContext
15-
import androidx.compose.ui.res.stringResource
16-
import androidx.compose.ui.text.style.TextAlign
177
import androidx.compose.ui.tooling.preview.Preview
188
import androidx.compose.ui.unit.dp
199
import com.w2sv.androidutils.extensions.getNestedStringArray
2010
import com.w2sv.wifiwidget.R
2111
import com.w2sv.wifiwidget.extensions.openUrlWithActivityNotFoundHandling
2212
import com.w2sv.wifiwidget.ui.shared.DialogButton
13+
import com.w2sv.wifiwidget.ui.shared.InfoDialog
2314
import com.w2sv.wifiwidget.ui.shared.JostText
2415
import com.w2sv.wifiwidget.ui.shared.WifiWidgetTheme
2516

@@ -28,11 +19,8 @@ import com.w2sv.wifiwidget.ui.shared.WifiWidgetTheme
2819
private fun Prev() {
2920
WifiWidgetTheme {
3021
PropertyInfoDialog(
31-
Modifier,
32-
"SSID",
33-
"Service Set Identifier. Your network's name.",
34-
{},
35-
{}
22+
1,
23+
onDismissRequest = {}
3624
)
3725
}
3826
}
@@ -46,65 +34,26 @@ internal fun PropertyInfoDialog(
4634
val context = LocalContext.current
4735

4836
with(context.resources.getNestedStringArray(R.array.wifi_property_data_arrays, propertyIndex)) {
49-
PropertyInfoDialog(
37+
InfoDialog(
5038
modifier = modifier,
5139
title = get(0),
5240
text = get(1),
53-
learnMoreButtonOnClickListener = get(2).let {
41+
learnMoreButton = get(2).let {
5442
if (it.isNotEmpty()) {
5543
{
56-
context.openUrlWithActivityNotFoundHandling(it)
57-
onDismissRequest()
44+
DialogButton(
45+
onClick = {
46+
context.openUrlWithActivityNotFoundHandling(it)
47+
onDismissRequest()
48+
},
49+
modifier = Modifier.padding(top = 20.dp, bottom = 12.dp)
50+
) {
51+
JostText(text = "Learn more")
52+
}
5853
}
5954
} else null
6055
},
6156
onDismissRequest = onDismissRequest
6257
)
6358
}
64-
}
65-
66-
@Composable
67-
private fun PropertyInfoDialog(
68-
modifier: Modifier = Modifier,
69-
title: String,
70-
text: String,
71-
learnMoreButtonOnClickListener: (() -> Unit)?,
72-
onDismissRequest: () -> Unit
73-
) {
74-
AlertDialog(
75-
modifier = modifier,
76-
onDismissRequest = onDismissRequest,
77-
confirmButton = {
78-
DialogButton(onClick = onDismissRequest) {
79-
JostText(text = stringResource(R.string.close))
80-
}
81-
},
82-
title = {
83-
JostText(
84-
text = title,
85-
modifier = Modifier.fillMaxWidth(),
86-
textAlign = TextAlign.Center
87-
)
88-
},
89-
text = {
90-
Column(
91-
Modifier
92-
.sizeIn(maxHeight = 520.dp)
93-
.fillMaxWidth()
94-
.verticalScroll(rememberScrollState()),
95-
Arrangement.Center,
96-
Alignment.CenterHorizontally
97-
) {
98-
JostText(text = text, textAlign = TextAlign.Center)
99-
learnMoreButtonOnClickListener?.let {
100-
DialogButton(
101-
onClick = it,
102-
modifier = Modifier.padding(top = 20.dp, bottom = 12.dp)
103-
) {
104-
JostText(text = "Learn more")
105-
}
106-
}
107-
}
108-
}
109-
)
11059
}

app/src/main/kotlin/com/w2sv/wifiwidget/ui/home/configurationdialog/content/PropertySelection.kt

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import androidx.compose.foundation.layout.size
66
import androidx.compose.material.icons.Icons
77
import androidx.compose.material.icons.outlined.Info
88
import androidx.compose.material3.Checkbox
9-
import androidx.compose.material3.CheckboxDefaults
109
import androidx.compose.material3.Icon
1110
import androidx.compose.material3.IconButton
1211
import androidx.compose.material3.MaterialTheme
@@ -17,6 +16,7 @@ import androidx.compose.ui.res.dimensionResource
1716
import androidx.compose.ui.res.stringArrayResource
1817
import androidx.compose.ui.unit.sp
1918
import com.w2sv.wifiwidget.R
19+
import com.w2sv.wifiwidget.ui.shared.InfoIconButton
2020
import com.w2sv.wifiwidget.ui.shared.JostText
2121

2222
@Composable
@@ -59,23 +59,10 @@ private fun PropertyRow(
5959
)
6060
Checkbox(
6161
checked = propertyChecked(property),
62-
onCheckedChange = { onCheckedChange(property, it) },
63-
colors = CheckboxDefaults.colors(
64-
checkedColor = MaterialTheme.colorScheme.primary,
65-
uncheckedColor = MaterialTheme.colorScheme.onSurfaceVariant
66-
)
62+
onCheckedChange = { onCheckedChange(property, it) }
6763
)
68-
IconButton(onClick = {
64+
InfoIconButton {
6965
onInfoButtonClick(propertyIndex)
70-
}) {
71-
Icon(
72-
imageVector = Icons.Outlined.Info,
73-
contentDescription = "Click to toggle the property info dialog",
74-
modifier = Modifier.size(
75-
dimensionResource(id = R.dimen.size_icon)
76-
),
77-
tint = MaterialTheme.colorScheme.onSurfaceVariant
78-
)
7966
}
8067
}
8168
}

app/src/main/kotlin/com/w2sv/wifiwidget/ui/home/configurationdialog/content/Refreshing.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@ import androidx.compose.ui.unit.dp
2020
import androidx.compose.ui.unit.sp
2121
import com.w2sv.wifiwidget.R
2222
import com.w2sv.wifiwidget.activities.HomeActivity
23+
import com.w2sv.wifiwidget.ui.shared.InfoIconButton
2324
import com.w2sv.wifiwidget.ui.shared.JostText
2425
import kotlinx.coroutines.launch
2526

2627
@Composable
2728
internal fun RefreshingSection(
2829
modifier: Modifier = Modifier,
2930
viewModel: HomeActivity.ViewModel = androidx.lifecycle.viewmodel.compose.viewModel(),
31+
showInfoDialog: () -> Unit,
3032
scrollToContentColumnBottom: suspend () -> Unit
3133
) {
3234
val scope = rememberCoroutineScope()
@@ -35,7 +37,9 @@ internal fun RefreshingSection(
3537
RefreshingParameterRow(
3638
label = R.string.refresh_periodically,
3739
parameterName = "refreshPeriodically",
38-
viewModel = viewModel
40+
infoIconButton = {
41+
InfoIconButton(showInfoDialog)
42+
}
3943
)
4044
AnimatedVisibility(
4145
visible = viewModel.widgetRefreshingParametersState.getValue("refreshPeriodically"),
@@ -44,7 +48,6 @@ internal fun RefreshingSection(
4448
RefreshingParameterRow(
4549
label = R.string.refresh_on_low_battery,
4650
parameterName = "refreshOnBatteryLow",
47-
viewModel = viewModel,
4851
modifier = Modifier.padding(start = 12.dp),
4952
fontSize = 14.sp
5053
)
@@ -56,9 +59,10 @@ internal fun RefreshingSection(
5659
private fun RefreshingParameterRow(
5760
@StringRes label: Int,
5861
parameterName: String,
59-
viewModel: HomeActivity.ViewModel,
6062
modifier: Modifier = Modifier,
61-
fontSize: TextUnit = TextUnit.Unspecified
63+
viewModel: HomeActivity.ViewModel = androidx.lifecycle.viewmodel.compose.viewModel(),
64+
fontSize: TextUnit = TextUnit.Unspecified,
65+
infoIconButton: (@Composable () -> Unit)? = null
6266
) {
6367
Row(
6468
verticalAlignment = Alignment.CenterVertically,
@@ -74,5 +78,6 @@ private fun RefreshingParameterRow(
7478
viewModel.widgetRefreshingParametersState[parameterName] = it
7579
}
7680
)
81+
infoIconButton?.invoke()
7782
}
7883
}

0 commit comments

Comments
 (0)