mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-14 22:17:03 +05:30
refactor: simplify settings screen
This commit is contained in:
parent
92fb2939e6
commit
1385edc3bf
1 changed files with 41 additions and 44 deletions
|
@ -11,7 +11,6 @@ import androidx.activity.compose.rememberLauncherForActivityResult
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
|
@ -63,45 +62,43 @@ fun SettingsScreen(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
val coroutineScope = rememberCoroutineScope()
|
val coroutineScope = rememberCoroutineScope()
|
||||||
Box(modifier = modifier.padding(contentPadding)) {
|
Column(modifier.padding(contentPadding)) {
|
||||||
Column {
|
ListItem(
|
||||||
ListItem(
|
headlineContent = { Text("Data transfer") },
|
||||||
headlineContent = { Text("Data transfer") },
|
leadingContent = {
|
||||||
leadingContent = {
|
Icon(
|
||||||
Icon(
|
imageVector = Icons.Filled.ImportExport,
|
||||||
imageVector = Icons.Filled.ImportExport,
|
contentDescription = null,
|
||||||
contentDescription = null,
|
modifier = Modifier.height(32.dp),
|
||||||
modifier = Modifier.height(32.dp),
|
)
|
||||||
|
},
|
||||||
|
supportingContent = {
|
||||||
|
Row(
|
||||||
|
horizontalArrangement = Arrangement.spacedBy(32.dp),
|
||||||
|
modifier = Modifier.fillMaxWidth(),
|
||||||
|
) {
|
||||||
|
ImportPosts(openInputStream, coroutineScope, snackbarHostState, importPosts)
|
||||||
|
ExportPosts(
|
||||||
|
coroutineScope,
|
||||||
|
snackbarHostState,
|
||||||
|
openOutputStream,
|
||||||
|
exportPostsAsJson,
|
||||||
|
exportPostsAsHtml,
|
||||||
)
|
)
|
||||||
},
|
}
|
||||||
supportingContent = {
|
},
|
||||||
Row(
|
)
|
||||||
horizontalArrangement = Arrangement.spacedBy(32.dp),
|
ListItem(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
headlineContent = { Text("Libraries") },
|
||||||
) {
|
leadingContent = {
|
||||||
ImportPosts(openInputStream, coroutineScope, snackbarHostState, importPosts)
|
Icon(
|
||||||
ExportPosts(
|
imageVector = Icons.AutoMirrored.Filled.LibraryBooks,
|
||||||
coroutineScope,
|
contentDescription = null,
|
||||||
snackbarHostState,
|
modifier = Modifier.height(32.dp),
|
||||||
openOutputStream,
|
)
|
||||||
exportPostsAsJson,
|
},
|
||||||
exportPostsAsHtml,
|
modifier = Modifier.clickable(onClick = openLibrariesScreen),
|
||||||
)
|
)
|
||||||
}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
ListItem(
|
|
||||||
headlineContent = { Text("Libraries") },
|
|
||||||
leadingContent = {
|
|
||||||
Icon(
|
|
||||||
imageVector = Icons.AutoMirrored.Filled.LibraryBooks,
|
|
||||||
contentDescription = null,
|
|
||||||
modifier = Modifier.height(32.dp),
|
|
||||||
)
|
|
||||||
},
|
|
||||||
modifier = Modifier.clickable(onClick = openLibrariesScreen),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,12 +133,12 @@ private fun RowScope.ImportPosts(
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun RowScope.ExportPosts(
|
private inline fun RowScope.ExportPosts(
|
||||||
coroutineScope: CoroutineScope,
|
coroutineScope: CoroutineScope,
|
||||||
snackbarHostState: SnackbarHostState,
|
snackbarHostState: SnackbarHostState,
|
||||||
openOutputStream: (Uri) -> OutputStream?,
|
crossinline openOutputStream: (Uri) -> OutputStream?,
|
||||||
exportPostsAsJson: suspend (OutputStream) -> Unit,
|
crossinline exportPostsAsJson: suspend (OutputStream) -> Unit,
|
||||||
exportPostsAsHtml: suspend (OutputStream) -> Unit,
|
crossinline exportPostsAsHtml: suspend (OutputStream) -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
val jsonExportAction =
|
val jsonExportAction =
|
||||||
|
@ -208,7 +205,7 @@ private fun RowScope.ExportPosts(
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Shows a Snackbar but dismisses any existing ones first. */
|
/** Shows a Snackbar but dismisses any existing ones first. */
|
||||||
private suspend fun SnackbarHostState.showSnackbarDismissing(text: String) {
|
private suspend inline fun SnackbarHostState.showSnackbarDismissing(text: String) {
|
||||||
currentSnackbarData?.dismiss()
|
currentSnackbarData?.dismiss()
|
||||||
showSnackbar(text)
|
showSnackbar(text)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue