Skip to content

Commit e2bdeed

Browse files
committed
ProgressDialog: add cancelable...
1 parent f61a81e commit e2bdeed

File tree

1 file changed

+29
-2
lines changed
  • libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components

1 file changed

+29
-2
lines changed

libraries/designsystem/src/main/kotlin/io/element/android/libraries/designsystem/components/ProgressDialog.kt

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,17 @@ import androidx.compose.foundation.background
2020
import androidx.compose.foundation.layout.Box
2121
import androidx.compose.foundation.layout.Column
2222
import androidx.compose.foundation.layout.Spacer
23+
import androidx.compose.foundation.layout.fillMaxWidth
2324
import androidx.compose.foundation.layout.height
2425
import androidx.compose.foundation.layout.padding
2526
import androidx.compose.foundation.shape.RoundedCornerShape
2627
import androidx.compose.material3.MaterialTheme
2728
import androidx.compose.runtime.Composable
29+
import androidx.compose.runtime.DisposableEffect
2830
import androidx.compose.runtime.Immutable
2931
import androidx.compose.ui.Alignment
3032
import androidx.compose.ui.Modifier
33+
import androidx.compose.ui.res.stringResource
3134
import androidx.compose.ui.tooling.preview.Preview
3235
import androidx.compose.ui.unit.dp
3336
import androidx.compose.ui.window.Dialog
@@ -37,21 +40,32 @@ import io.element.android.libraries.designsystem.preview.ElementThemedPreview
3740
import io.element.android.libraries.designsystem.preview.PreviewGroup
3841
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
3942
import io.element.android.libraries.designsystem.theme.components.Text
43+
import io.element.android.libraries.designsystem.theme.components.TextButton
44+
import io.element.android.libraries.ui.strings.CommonStrings
45+
import timber.log.Timber
4046

4147
@Composable
4248
fun ProgressDialog(
4349
modifier: Modifier = Modifier,
4450
text: String? = null,
4551
type: ProgressDialogType = ProgressDialogType.Indeterminate,
46-
onDismiss: () -> Unit = {},
52+
isCancellable: Boolean = false,
53+
onDismissRequest: () -> Unit = {},
4754
) {
55+
DisposableEffect(Unit) {
56+
onDispose {
57+
Timber.v("OnDispose progressDialog")
58+
}
59+
}
4860
Dialog(
49-
onDismissRequest = onDismiss,
61+
onDismissRequest = onDismissRequest,
5062
properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false)
5163
) {
5264
ProgressDialogContent(
5365
modifier = modifier,
5466
text = text,
67+
isCancellable = isCancellable,
68+
onCancelClicked = onDismissRequest,
5569
progressIndicator = {
5670
when (type) {
5771
is ProgressDialogType.Indeterminate -> {
@@ -81,6 +95,8 @@ sealed interface ProgressDialogType {
8195
private fun ProgressDialogContent(
8296
modifier: Modifier = Modifier,
8397
text: String? = null,
98+
isCancellable: Boolean = true,
99+
onCancelClicked: () -> Unit = {},
84100
progressIndicator: @Composable () -> Unit = {
85101
CircularProgressIndicator(
86102
color = MaterialTheme.colorScheme.primary
@@ -107,6 +123,17 @@ private fun ProgressDialogContent(
107123
color = MaterialTheme.colorScheme.primary,
108124
)
109125
}
126+
if (isCancellable) {
127+
Spacer(modifier = Modifier.height(24.dp))
128+
Box(
129+
modifier = Modifier.fillMaxWidth(),
130+
contentAlignment = Alignment.BottomEnd
131+
) {
132+
TextButton(onClick = onCancelClicked) {
133+
Text(stringResource(id = CommonStrings.action_cancel))
134+
}
135+
}
136+
}
110137
}
111138
}
112139
}

0 commit comments

Comments
 (0)