22
33package `in`.hridayan.ashell.settings.presentation.components.dialog
44
5- import androidx.compose.foundation.clickable
5+ import androidx.compose.foundation.layout.Arrangement
66import androidx.compose.foundation.layout.Column
77import androidx.compose.foundation.layout.Row
88import androidx.compose.foundation.layout.Spacer
99import androidx.compose.foundation.layout.fillMaxWidth
1010import androidx.compose.foundation.layout.height
1111import androidx.compose.foundation.layout.padding
12- import androidx.compose.foundation.layout.size
1312import androidx.compose.foundation.layout.widthIn
14- import androidx.compose.material.icons.Icons
15- import androidx.compose.material.icons.rounded.CloudUpload
16- import androidx.compose.material.icons.rounded.FolderOpen
1713import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
1814import androidx.compose.material3.Icon
1915import androidx.compose.material3.MaterialTheme
@@ -22,13 +18,15 @@ import androidx.compose.material3.Text
2218import androidx.compose.runtime.Composable
2319import androidx.compose.ui.Alignment
2420import androidx.compose.ui.Modifier
25- import androidx.compose.ui.draw.clip
26- import androidx.compose.ui.hapticfeedback.HapticFeedbackType
21+ import androidx.compose.ui.res.painterResource
2722import androidx.compose.ui.res.stringResource
23+ import androidx.compose.ui.text.style.TextAlign
2824import androidx.compose.ui.unit.dp
2925import androidx.compose.ui.window.Dialog
3026import androidx.compose.ui.window.DialogProperties
3127import `in`.hridayan.ashell.R
28+ import `in`.hridayan.ashell.core.presentation.components.card.BottomCornerRoundedCard
29+ import `in`.hridayan.ashell.core.presentation.components.card.TopCornerRoundedCard
3230import `in`.hridayan.ashell.core.presentation.components.haptic.withHaptic
3331import `in`.hridayan.ashell.core.presentation.components.text.AutoResizeableText
3432
@@ -53,79 +51,81 @@ fun BackupDestinationDialog(
5351 .padding(24 .dp)
5452 .widthIn(min = 280 .dp)
5553 ) {
56- AutoResizeableText (
57- text = stringResource(R .string.choose_backup_destination ),
54+ Text (
55+ text = stringResource(R .string.backup_destination ),
5856 style = MaterialTheme .typography.titleLarge,
5957 color = MaterialTheme .colorScheme.onSurface,
58+ textAlign = TextAlign .Center ,
59+ modifier = Modifier
60+ .fillMaxWidth()
61+ .align(Alignment .CenterHorizontally )
6062 )
6163
62- Spacer (modifier = Modifier .height(20 .dp))
64+ Spacer (modifier = Modifier .height(24 .dp))
6365
64- // Local file option
65- Row (
66+ TopCornerRoundedCard (
6667 modifier = Modifier
6768 .fillMaxWidth()
68- .clip(MaterialTheme .shapes.medium)
69- .clickable(
70- onClick = withHaptic(HapticFeedbackType .Confirm ) {
71- onLocalBackup()
72- onDismiss()
73- }
74- )
75- .padding(16 .dp),
76- verticalAlignment = Alignment .CenterVertically
69+ .padding(bottom = 2 .dp),
70+ onClick = withHaptic {
71+ onLocalBackup()
72+ },
73+ containerColor = MaterialTheme .colorScheme.tertiaryContainer,
74+ contentColor = MaterialTheme .colorScheme.onTertiaryContainer
7775 ) {
78- Icon (
79- imageVector = Icons .Rounded .FolderOpen ,
80- contentDescription = null ,
81- tint = MaterialTheme .colorScheme.primary,
82- modifier = Modifier .size(24 .dp)
83- )
84- Column (modifier = Modifier .padding(start = 16 .dp)) {
85- Text (
86- text = stringResource(R .string.local_file),
87- style = MaterialTheme .typography.bodyLarge,
88- color = MaterialTheme .colorScheme.onSurface
89- )
90- Text (
91- text = stringResource(R .string.des_local_backup),
92- style = MaterialTheme .typography.bodySmall,
93- color = MaterialTheme .colorScheme.onSurfaceVariant
76+ Row (
77+ modifier = Modifier
78+ .fillMaxWidth()
79+ .padding(horizontal = 20 .dp, vertical = 15 .dp),
80+ verticalAlignment = Alignment .CenterVertically ,
81+ horizontalArrangement = Arrangement .spacedBy(15 .dp)
82+ ) {
83+ Icon (
84+ painter = painterResource(R .drawable.ic_directory),
85+ contentDescription = null ,
9486 )
87+ Column (verticalArrangement = Arrangement .spacedBy(5 .dp)) {
88+ AutoResizeableText (
89+ text = stringResource(R .string.local_file),
90+ style = MaterialTheme .typography.titleMediumEmphasized
91+ )
92+ Text (
93+ text = stringResource(R .string.des_local_backup),
94+ style = MaterialTheme .typography.bodySmall
95+ )
96+ }
9597 }
9698 }
9799
98- // Google Drive option
99- Row (
100- modifier = Modifier
101- .fillMaxWidth()
102- .clip(MaterialTheme .shapes.medium)
103- .clickable(
104- onClick = withHaptic(HapticFeedbackType .Confirm ) {
105- onGoogleDriveBackup()
106- onDismiss()
107- }
108- )
109- .padding(16 .dp),
110- verticalAlignment = Alignment .CenterVertically
100+ BottomCornerRoundedCard (
101+ modifier = Modifier .fillMaxWidth(),
102+ onClick = withHaptic {
103+ onGoogleDriveBackup()
104+ },
105+ containerColor = MaterialTheme .colorScheme.tertiaryContainer,
106+ contentColor = MaterialTheme .colorScheme.onTertiaryContainer
111107 ) {
112- Icon (
113- imageVector = Icons .Rounded .CloudUpload ,
114- contentDescription = null ,
115- tint = MaterialTheme .colorScheme.primary,
116- modifier = Modifier .size(24 .dp)
117- )
118- Column (modifier = Modifier .padding(start = 16 .dp)) {
119- Text (
120- text = stringResource(R .string.google_drive),
121- style = MaterialTheme .typography.bodyLarge,
122- color = MaterialTheme .colorScheme.onSurface
123- )
124- Text (
125- text = stringResource(R .string.des_drive_backup),
126- style = MaterialTheme .typography.bodySmall,
127- color = MaterialTheme .colorScheme.onSurfaceVariant
108+ Row (
109+ modifier = Modifier
110+ .fillMaxWidth()
111+ .padding(horizontal = 20 .dp, vertical = 15 .dp),
112+ verticalAlignment = Alignment .CenterVertically ,
113+ horizontalArrangement = Arrangement .spacedBy(15 .dp)
114+ ) {
115+ Icon (
116+ painter = painterResource(R .drawable.ic_cloud_upload),
117+ contentDescription = null ,
128118 )
119+ Column (verticalArrangement = Arrangement .spacedBy(5 .dp)) {
120+ AutoResizeableText (
121+ text = stringResource(R .string.google_drive),
122+ style = MaterialTheme .typography.titleMediumEmphasized
123+ )
124+ Text (
125+ text = stringResource(R .string.des_drive_backup),
126+ style = MaterialTheme .typography.bodySmall
127+ )
128+ }
129129 }
130130 }
131131 }
0 commit comments