From cc02b690206bbe795c6a6705128ca1ce9e6d3acb Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 5 Jun 2023 18:42:16 +0800 Subject: [PATCH] [DO NOT USE] EhScreen implementation part 1 --- .../main/java/com/hippo/ehviewer/Settings.kt | 32 ++--- .../hippo/ehviewer/ui/settings/EhScreen.kt | 112 +++++++++++++++++- 2 files changed, 124 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.kt b/app/src/main/java/com/hippo/ehviewer/Settings.kt index 3fc33852c..13fd4dae5 100755 --- a/app/src/main/java/com/hippo/ehviewer/Settings.kt +++ b/app/src/main/java/com/hippo/ehviewer/Settings.kt @@ -51,29 +51,26 @@ object Settings : DataStorePreferences(null) { var downloadPath by stringOrNullPref("image_path", null) var downloadQuery by stringOrNullPref("image_query", null) var downloadFragment by stringOrNullPref("image_fragment", null) - var favCat by stringArrayPref("fav_cat", 10, "Favorites") var favCount by intArrayPref("fav_count", 10) var archivePasswds by stringSetOrNullPref("archive_passwds") - var downloadDelay by intFromStrPref("download_delay", 0) var gallerySite by intFromStrPref(KEY_GALLERY_SITE, 0) var multiThreadDownload by intFromStrPref("download_thread", 3) var preloadImage by intFromStrPref("preload_image", 5) - val theme by intFromStrPref(KEY_THEME, -1) - val listMode by intFromStrPref(KEY_LIST_MODE, 0) - val detailSize by intFromStrPref(KEY_DETAIL_SIZE, 0) - val thumbResolution by intFromStrPref(KEY_THUMB_RESOLUTION, 0) + var theme by intFromStrPref(KEY_THEME, -1) + var listMode by intFromStrPref(KEY_LIST_MODE, 0) + var detailSize by intFromStrPref(KEY_DETAIL_SIZE, 0) + var thumbResolution by intFromStrPref(KEY_THUMB_RESOLUTION, 0) var readCacheSize by intFromStrPref(KEY_READ_CACHE_SIZE, 640) var launchPage by intFromStrPref("launch_page", 0) - - val showComments by boolPref("show_gallery_comments", true) - val requestNews by boolPref(KEY_REQUEST_NEWS, false) - val hideHvEvents by boolPref(KEY_HIDE_HV_EVENTS, false) - val showJpnTitle by boolPref(KEY_SHOW_JPN_TITLE, false) - val showGalleryPages by boolPref("show_gallery_pages", false) + var showComments by boolPref("show_gallery_comments", true) + var requestNews by boolPref(KEY_REQUEST_NEWS, false) + var hideHvEvents by boolPref(KEY_HIDE_HV_EVENTS, false) + var showJpnTitle by boolPref(KEY_SHOW_JPN_TITLE, false) + var showGalleryPages by boolPref("show_gallery_pages", false) var showTagTranslations by boolPref(KEY_SHOW_TAG_TRANSLATIONS, false) - val meteredNetworkWarning by boolPref("cellular_network_warning", false) + var meteredNetworkWarning by boolPref("cellular_network_warning", false) var appLinkVerifyTip by boolPref("app_link_verify_tip", false) var enabledSecurity by boolPref("enable_secure", false) var mediaScan by boolPref(KEY_MEDIA_SCAN, false).observed { updateWhenKeepMediaStatusChanges() } @@ -86,29 +83,26 @@ object Settings : DataStorePreferences(null) { var removeImageFiles by boolPref("include_pic", true) var needSignIn by boolPref("need_sign_in", true) var selectSite by boolPref("select_site", true) - val blackDarkTheme by boolPref(KEY_BLACK_DARK_THEME, false) + var blackDarkTheme by boolPref(KEY_BLACK_DARK_THEME, false) var preloadThumbAggressively by boolPref("preload_thumb_aggressively", false) var dF by boolPref(KEY_DOMAIN_FRONTING, false) var downloadOriginImage by boolPref("download_origin_image", false) var bypassVpn by boolPref(KEY_BYPASS_VPN, true) - - val thumbSizeDp by intPref(KEY_THUMB_SIZE, 120) + var thumbSizeDp by intPref(KEY_THUMB_SIZE, 120) var favLocalCount by intPref("fav_local", 0) var favCloudCount by intPref("fav_cloud", 0) var recentFavCat by intPref("recent_fav_cat", FavListUrlBuilder.FAV_CAT_ALL) var defaultFavSlot by intPref("default_favorite_2", INVALID_DEFAULT_FAV_SLOT) // -1 for local, 0 - 9 for cloud favorite, other for no default fav slot var securityDelay by intPref("require_unlock_delay", 0) var clipboardTextHashCode by intPref("clipboard_text_hash_code", 0) - val listThumbSize by intPref(KEY_LIST_THUMB_SIZE, 40) + var listThumbSize by intPref(KEY_LIST_THUMB_SIZE, 40) var requestNewsTimerHour by intPref("request_news_timer_hour", -1) var requestNewsTimerMinute by intPref("request_news_timer_minute", -1) var dataMapNextId by intPref("data_map_next_id", 0) - var recentDownloadLabel by stringOrNullPref("recent_download_label", null) var defaultDownloadLabel by stringOrNullPref("default_download_label", null) var displayName by stringOrNullPref("display_name", null) var avatar by stringOrNullPref("avatar", null) - var dohUrl by stringPref("doh_url", "") var language by stringPref("app_language", "system").observed { updateWhenLocaleChanges() } var lastDawnDay by longPref("last_dawn_day", 0) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt index 36932d612..e6fa522f7 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/settings/EhScreen.kt @@ -1,7 +1,11 @@ package com.hippo.ehviewer.ui.settings import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material3.Icon @@ -15,6 +19,8 @@ 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.compose.observed import com.hippo.ehviewer.ui.login.LocalNavController @Composable @@ -34,7 +40,111 @@ fun EhScreen() { ) }, ) { - Column(modifier = Modifier.padding(it).nestedScroll(scrollBehavior.nestedScrollConnection)) { + Column(modifier = Modifier.padding(top = it.calculateTopPadding()).nestedScroll(scrollBehavior.nestedScrollConnection).verticalScroll(rememberScrollState())) { + Preference( + title = stringResource(id = R.string.account_name), + summary = stringResource(id = R.string.settings_eh_identity_cookies_tourist), + ) + Preference( + title = stringResource(id = R.string.image_limits), + ) + SimpleMenuPreferenceInt( + title = stringResource(id = R.string.settings_eh_gallery_site), + entry = R.array.gallery_site_entries, + entryValueRes = R.array.gallery_site_entry_values, + value = Settings::gallerySite.observed, + ) + Preference( + title = stringResource(id = R.string.settings_u_config), + summary = stringResource(id = R.string.settings_u_config_summary), + ) + Preference( + title = stringResource(id = R.string.settings_my_tags), + summary = stringResource(id = R.string.settings_my_tags_summary), + ) + SimpleMenuPreferenceInt( + title = stringResource(id = rikka.core.R.string.dark_theme), + entry = R.array.night_mode_entries, + entryValueRes = R.array.night_mode_values, + value = Settings::theme.observed, + ) + SwitchPreference( + title = stringResource(id = R.string.black_dark_theme), + summary = null, + value = Settings::blackDarkTheme, + ) + SimpleMenuPreferenceInt( + title = stringResource(id = R.string.settings_eh_launch_page), + entry = R.array.launch_page_entries, + entryValueRes = R.array.launch_page_entry_values, + value = Settings::launchPage.observed, + ) + SimpleMenuPreferenceInt( + title = stringResource(id = R.string.settings_eh_list_mode), + entry = R.array.list_mode_entries, + entryValueRes = R.array.list_mode_entry_values, + value = Settings::listMode.observed, + ) + IntSliderPreference( + maxValue = 60, + minValue = 20, + title = stringResource(id = R.string.list_tile_thumb_size), + value = Settings::listThumbSize, + ) + SimpleMenuPreferenceInt( + title = stringResource(id = R.string.settings_eh_thumb_resolution), + entry = R.array.thumb_resolution_entries, + entryValueRes = R.array.thumb_resolution_entry_values, + value = Settings::thumbResolution.observed, + ) + SwitchPreference( + title = stringResource(id = R.string.settings_eh_show_jpn_title), + summary = stringResource(id = R.string.settings_eh_show_jpn_title_summary), + value = Settings::showJpnTitle, + ) + SwitchPreference( + title = stringResource(id = R.string.settings_eh_show_gallery_pages), + summary = stringResource(id = R.string.settings_eh_show_gallery_pages_summary), + value = Settings::showGalleryPages, + ) + SwitchPreference( + title = stringResource(id = R.string.settings_eh_show_gallery_comments), + summary = stringResource(id = R.string.settings_eh_show_gallery_comments_summary), + value = Settings::showComments, + ) + SwitchPreference( + title = stringResource(id = R.string.settings_eh_show_tag_translations), + summary = stringResource(id = R.string.settings_eh_show_tag_translations_summary), + value = Settings::showTagTranslations, + ) + UrlPreference( + title = stringResource(id = R.string.settings_eh_tag_translations_source), + url = stringResource(id = R.string.settings_eh_tag_translations_source_url), + ) + Preference( + title = stringResource(id = R.string.settings_eh_filter), + summary = stringResource(id = R.string.settings_eh_filter_summary), + ) + SwitchPreference( + title = stringResource(id = R.string.settings_eh_metered_network_warning), + summary = null, + value = Settings::meteredNetworkWarning, + ) + SwitchPreference( + title = stringResource(id = R.string.settings_eh_request_news), + summary = null, + value = Settings::requestNews, + ) + Preference( + title = stringResource(id = R.string.settings_eh_request_news_timepicker), + summary = null, + ) + SwitchPreference( + title = stringResource(id = R.string.settings_eh_hide_hv_events), + summary = null, + value = Settings::requestNews, + ) + Spacer(modifier = Modifier.size(it.calculateBottomPadding())) } } }