From 140fac4f3b2d3d3f07e02d78aa601b4ed0e83e05 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sun, 4 Jun 2023 17:33:01 +0800 Subject: [PATCH] Stupid implementation of SwitchPreference --- .../main/java/com/hippo/ehviewer/Settings.kt | 2 +- .../ehviewer/ui/settings/PreferenceWidgets.kt | 28 +++++++++++++++++++ .../ehviewer/ui/settings/SecurityScreen.kt | 6 ++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.kt b/app/src/main/java/com/hippo/ehviewer/Settings.kt index 9174a217a..d56fcac99 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/java/com/hippo/ehviewer/Settings.kt @@ -73,7 +73,7 @@ object Settings : DefaultPreferences() { var showTagTranslations by boolPref(KEY_SHOW_TAG_TRANSLATIONS, false) val meteredNetworkWarning by boolPref("cellular_network_warning", false) var appLinkVerifyTip by boolPref("app_link_verify_tip", false) - val enabledSecurity by boolPref("enable_secure", false) + var enabledSecurity by boolPref("enable_secure", false) val mediaScan by boolPref(KEY_MEDIA_SCAN, false) var hasDefaultDownloadLabel by boolPref("has_default_download_label", false) var qSSaveProgress by boolPref("qs_save_progress", true) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt index 242989a3c..192f11d4d 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/PreferenceWidgets.kt @@ -13,8 +13,13 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.painter.Painter @@ -28,6 +33,7 @@ import com.hippo.ehviewer.ui.openBrowser import com.hippo.ehviewer.ui.settings.PreferenceTokens.PreferenceMinHeight import com.hippo.ehviewer.ui.settings.PreferenceTokens.PreferencePadding import com.hippo.ehviewer.ui.settings.PreferenceTokens.PreferenceTextPadding +import kotlin.reflect.KMutableProperty0 @Composable fun PreferenceHeader(icon: Painter, @StringRes title: Int, childRouteName: String) { @@ -62,6 +68,28 @@ fun Preference(title: String, summary: String? = null, onClick: () -> Unit = {}) } } +@Composable +fun SwitchPreference(title: String, summary: String?, value: KMutableProperty0) { + var v by remember { mutableStateOf(value.get()) } + fun mutate() = value.set((!value.get()).also { v = it }) + Row( + modifier = Modifier.fillMaxWidth().defaultMinSize(minHeight = PreferenceMinHeight).padding(PreferencePadding).clickable { mutate() }, + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + modifier = Modifier.weight(1F), + verticalArrangement = Arrangement.Center, + ) { + Text(text = title, style = MaterialTheme.typography.bodyLarge) + summary?.let { + Spacer(modifier = Modifier.size(PreferenceTextPadding)) + Text(text = summary, style = MaterialTheme.typography.bodyMedium) + } + } + Switch(checked = v, onCheckedChange = null) + } +} + @Composable fun UrlPreference(title: String, url: String) { val context = LocalContext.current diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt index 331419a2a..f094d454b 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/SecurityScreen.kt @@ -15,6 +15,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource import com.hippo.ehviewer.R +import com.hippo.ehviewer.Settings import com.hippo.ehviewer.ui.login.LocalNavController @Composable @@ -35,6 +36,11 @@ fun SecurityScreen() { }, ) { Column(modifier = Modifier.padding(it).nestedScroll(scrollBehavior.nestedScrollConnection)) { + SwitchPreference( + title = stringResource(id = R.string.settings_privacy_secure), + summary = stringResource(id = R.string.settings_privacy_secure_summary), + value = Settings::enabledSecurity, + ) } } }