From a1e84911be14d353056cc63dc79c341c06c27079 Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 30 Dec 2023 10:36:30 -0500 Subject: [PATCH] Clean up create backup UI --- .../screen/data/CreateBackupScreen.kt | 57 ++++++++++++------- .../data/backup/create/BackupOptions.kt | 5 +- 2 files changed, 42 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt index 7b8e42d66d..0ac316e24f 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/data/CreateBackupScreen.kt @@ -7,6 +7,7 @@ import android.net.Uri import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding @@ -34,9 +35,11 @@ import eu.kanade.tachiyomi.data.backup.create.BackupCreator import eu.kanade.tachiyomi.data.backup.create.BackupOptions import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.toast +import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.update import tachiyomi.i18n.MR import tachiyomi.presentation.core.components.LabeledCheckbox +import tachiyomi.presentation.core.components.SectionCard import tachiyomi.presentation.core.components.material.Scaffold import tachiyomi.presentation.core.components.material.padding import tachiyomi.presentation.core.i18n.stringResource @@ -87,27 +90,25 @@ class CreateBackupScreen : Screen() { } } - // TODO: separate sections for library and settings + item { + SectionCard(MR.strings.label_library) { + Column { + LabeledCheckbox( + label = stringResource(MR.strings.manga), + checked = true, + onCheckedChange = {}, + enabled = false, + modifier = Modifier.padding(horizontal = MaterialTheme.padding.medium), + ) + + Options(BackupOptions.libraryOptions, state, model) + } + } + } item { - LabeledCheckbox( - label = stringResource(MR.strings.manga), - checked = true, - onCheckedChange = {}, - enabled = false, - modifier = Modifier.padding(horizontal = MaterialTheme.padding.medium), - ) - } - BackupOptions.entries.forEach { option -> - item { - LabeledCheckbox( - label = stringResource(option.label), - checked = option.getter(state.options), - onCheckedChange = { - model.toggle(option.setter, it) - }, - modifier = Modifier.padding(horizontal = MaterialTheme.padding.medium), - ) + SectionCard(MR.strings.label_settings) { + Options(BackupOptions.settingsOptions, state, model) } } } @@ -138,6 +139,24 @@ class CreateBackupScreen : Screen() { } } } + + @Composable + private fun ColumnScope.Options( + options: ImmutableList, + state: CreateBackupScreenModel.State, + model: CreateBackupScreenModel, + ) { + options.forEach { option -> + LabeledCheckbox( + label = stringResource(option.label), + checked = option.getter(state.options), + onCheckedChange = { + model.toggle(option.setter, it) + }, + modifier = Modifier.padding(horizontal = MaterialTheme.padding.medium), + ) + } + } } private class CreateBackupScreenModel : StateScreenModel(State()) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt index 13e1cf4803..14a75ee42a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/create/BackupOptions.kt @@ -16,7 +16,7 @@ data class BackupOptions( ) { companion object { - val entries = persistentListOf( + val libraryOptions = persistentListOf( Entry( label = MR.strings.categories, getter = BackupOptions::categories, @@ -37,6 +37,9 @@ data class BackupOptions( getter = BackupOptions::history, setter = { options, enabled -> options.copy(history = enabled) }, ), + ) + + val settingsOptions = persistentListOf( Entry( label = MR.strings.app_settings, getter = BackupOptions::appSettings,