Stupid implementation of SwitchPreference

This commit is contained in:
tarsin committed 2023-06-04 17:33:01 +08:00
1 parent 802db256c1
commit 140fac4f3b
3 files changed
+35 -1

No files matched your search

@@ -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)
@@ -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<Boolean>) {
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
@@ -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,
)
}
}
}