From b56f136da0594b1b9930fbe9ea6e3cf4105ff4cc Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 5 Jun 2023 17:49:49 +0800 Subject: [PATCH] [DO NOT USE] Introduce MutableState.rememberedAccessor --- app/src/main/java/com/hippo/ehviewer/ui/compose/State.kt | 6 ++++++ .../java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/compose/State.kt b/app/src/main/java/com/hippo/ehviewer/ui/compose/State.kt index 95c135bda..a4c53bb23 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/compose/State.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/compose/State.kt @@ -2,8 +2,10 @@ package com.hippo.ehviewer.ui.compose import androidx.compose.runtime.Composable import androidx.compose.runtime.MutableState +import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import kotlin.reflect.KMutableProperty0 val KMutableProperty0.observed: MutableState @@ -19,3 +21,7 @@ val KMutableProperty0.observed: MutableState } } } + +val MutableState.rememberedAccessor: KMutableProperty0 + @Composable + get() = remember { object { var value by this@rememberedAccessor }::value } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt index 5e8df73ea..e8b164d02 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/DownloadScreen.kt @@ -30,6 +30,7 @@ import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings import com.hippo.ehviewer.download.downloadLocation import com.hippo.ehviewer.ui.compose.observed +import com.hippo.ehviewer.ui.compose.rememberedAccessor import com.hippo.ehviewer.ui.keepNoMediaFileStatus import com.hippo.ehviewer.ui.legacy.BaseDialogBuilder import com.hippo.ehviewer.ui.login.LocalNavController @@ -103,10 +104,11 @@ fun DownloadScreen() { selectDownloadDirLauncher.launch(null) } } + val mediaScan = Settings::mediaScan.observed SwitchPreference( title = stringResource(id = R.string.settings_download_media_scan), - summary = if (Settings.mediaScan) stringResource(id = R.string.settings_download_media_scan_summary_on) else stringResource(id = R.string.settings_download_media_scan_summary_off), - value = Settings::mediaScan, + summary = if (mediaScan.value) stringResource(id = R.string.settings_download_media_scan_summary_on) else stringResource(id = R.string.settings_download_media_scan_summary_off), + value = mediaScan.rememberedAccessor, ) val multiThreadDownload = Settings::multiThreadDownload.observed SimpleMenuPreferenceInt(