fix: Improve snackbar & add import success message

This commit is contained in:
Myzel394 2023-10-22 17:05:24 +02:00
parent 5e9f46d979
commit 54b2e9bee5
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
3 changed files with 34 additions and 3 deletions

View File

@ -14,6 +14,9 @@ import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.SnackbarDuration
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.SnackbarVisuals
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState import androidx.compose.runtime.collectAsState
@ -35,7 +38,9 @@ import kotlinx.coroutines.launch
import java.io.File import java.io.File
@Composable @Composable
fun ImportExport() { fun ImportExport(
snackbarHostState: SnackbarHostState,
) {
val context = LocalContext.current val context = LocalContext.current
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
@ -60,6 +65,8 @@ fun ImportExport() {
} }
if (settingsToBeImported != null) { if (settingsToBeImported != null) {
val successMessage = stringResource(R.string.ui_settings_option_import_success)
AlertDialog( AlertDialog(
onDismissRequest = { onDismissRequest = {
settingsToBeImported = null settingsToBeImported = null
@ -84,7 +91,14 @@ fun ImportExport() {
settingsToBeImported!! settingsToBeImported!!
} }
settingsToBeImported = null settingsToBeImported = null
snackbarHostState.showSnackbar(
message = successMessage,
withDismissAction = true,
duration = SnackbarDuration.Short,
)
} }
}, },
) { ) {
Icon( Icon(

View File

@ -16,7 +16,9 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton import androidx.compose.material3.IconButton
import androidx.compose.material3.LargeTopAppBar import androidx.compose.material3.LargeTopAppBar
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.Snackbar
import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text import androidx.compose.material3.Text
@ -65,7 +67,21 @@ fun SettingsScreen(
) )
Scaffold( Scaffold(
snackbarHost = { SnackbarHost(hostState = snackbarHostState) }, snackbarHost = {
SnackbarHost(
hostState = snackbarHostState,
snackbar = {
Snackbar(
snackbarData = it,
containerColor = MaterialTheme.colorScheme.primaryContainer,
contentColor = MaterialTheme.colorScheme.onPrimaryContainer,
actionColor = MaterialTheme.colorScheme.onPrimaryContainer,
actionContentColor = MaterialTheme.colorScheme.onPrimaryContainer,
dismissActionContentColor = MaterialTheme.colorScheme.onPrimaryContainer,
)
}
)
},
topBar = { topBar = {
LargeTopAppBar( LargeTopAppBar(
title = { title = {
@ -149,7 +165,7 @@ fun SettingsScreen(
modifier = Modifier modifier = Modifier
.fillMaxWidth(0.5f) .fillMaxWidth(0.5f)
) )
ImportExport() ImportExport(snackbarHostState = snackbarHostState)
} }
} }
} }

View File

@ -67,4 +67,5 @@
<string name="ui_settings_option_export_label">Export Settings</string> <string name="ui_settings_option_export_label">Export Settings</string>
<string name="ui_settings_option_import_dialog_text">Are you sure you want to import these settings? Your current settings will be overwritten!</string> <string name="ui_settings_option_import_dialog_text">Are you sure you want to import these settings? Your current settings will be overwritten!</string>
<string name="ui_settings_option_import_dialog_confirm">Import settings</string> <string name="ui_settings_option_import_dialog_confirm">Import settings</string>
<string name="ui_settings_option_import_success">Settings have been imported successfully!</string>
</resources> </resources>