diff --git a/app/src/main/java/io/legato/kazusa/ui/config/ConfigActivity.kt b/app/src/main/java/io/legato/kazusa/ui/config/ConfigActivity.kt index a865bb231..d3688173d 100644 --- a/app/src/main/java/io/legato/kazusa/ui/config/ConfigActivity.kt +++ b/app/src/main/java/io/legato/kazusa/ui/config/ConfigActivity.kt @@ -21,6 +21,7 @@ class ConfigActivity : VMBaseActivity() ConfigTag.THEME_CONFIG -> replaceFragment(configTag) ConfigTag.BACKUP_CONFIG -> replaceFragment(configTag) ConfigTag.COVER_CONFIG -> replaceFragment(configTag) + ConfigTag.READ_CONFIG -> replaceFragment(configTag) else -> finish() } } diff --git a/app/src/main/java/io/legato/kazusa/ui/config/ConfigTag.kt b/app/src/main/java/io/legato/kazusa/ui/config/ConfigTag.kt index ccf2a6acf..64e949b0d 100644 --- a/app/src/main/java/io/legato/kazusa/ui/config/ConfigTag.kt +++ b/app/src/main/java/io/legato/kazusa/ui/config/ConfigTag.kt @@ -6,6 +6,6 @@ object ConfigTag { const val THEME_CONFIG = "themeConfig" const val BACKUP_CONFIG = "backupConfig" const val COVER_CONFIG = "coverConfig" - const val WELCOME_CONFIG = "welcomeConfig" + const val READ_CONFIG = "readConfig" } \ No newline at end of file diff --git a/app/src/main/java/io/legato/kazusa/ui/config/ReadConfigFragment.kt b/app/src/main/java/io/legato/kazusa/ui/config/ReadConfigFragment.kt new file mode 100644 index 000000000..2dbf92f1d --- /dev/null +++ b/app/src/main/java/io/legato/kazusa/ui/config/ReadConfigFragment.kt @@ -0,0 +1,175 @@ +package io.legato.kazusa.ui.config + +import android.annotation.SuppressLint +import android.content.SharedPreferences +import android.os.Bundle +import android.view.View +import android.view.ViewConfiguration +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import io.legato.kazusa.R +import io.legato.kazusa.constant.EventBus +import io.legato.kazusa.constant.PreferKey +import io.legato.kazusa.help.config.AppConfig +import io.legato.kazusa.help.config.ReadBookConfig +import io.legato.kazusa.model.ReadBook +import io.legato.kazusa.ui.book.read.ReadBookActivity +import io.legato.kazusa.ui.book.read.config.PageKeyDialog +import io.legato.kazusa.ui.book.read.page.provider.ChapterProvider +import io.legato.kazusa.ui.widget.number.NumberPickerDialog +import io.legato.kazusa.utils.canvasrecorder.CanvasRecorderFactory +import io.legato.kazusa.utils.getPrefBoolean +import io.legato.kazusa.utils.postEvent +import io.legato.kazusa.utils.removePref + +class ReadConfigFragment : PreferenceFragmentCompat(), + SharedPreferences.OnSharedPreferenceChangeListener { + + private val slopSquare by lazy { ViewConfiguration.get(requireContext()).scaledTouchSlop } + + @SuppressLint("RestrictedApi") + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + addPreferencesFromResource(R.xml.pref_config_read) + upPreferenceSummary(PreferKey.menuAlpha, AppConfig.menuAlpha.toString()) + upPreferenceSummary(PreferKey.pageTouchSlop, slopSquare.toString()) + if (!CanvasRecorderFactory.isSupport) { + removePref(PreferKey.optimizeRender) + preferenceScreen.removePreferenceRecursively(PreferKey.optimizeRender) + } + val pref = findPreference("clickRegionalConfig") + pref?.isEnabled = false + + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + activity?.setTitle(R.string.read) + } + + override fun onResume() { + super.onResume() + preferenceManager + .sharedPreferences + ?.registerOnSharedPreferenceChangeListener(this) + } + + override fun onPause() { + preferenceManager + .sharedPreferences + ?.unregisterOnSharedPreferenceChangeListener(this) + super.onPause() + } + + override fun onSharedPreferenceChanged( + sharedPreferences: SharedPreferences?, + key: String? + ) { + when (key) { + PreferKey.readBodyToLh -> activity?.recreate() + PreferKey.hideStatusBar -> { + ReadBookConfig.hideStatusBar = getPrefBoolean(PreferKey.hideStatusBar) + postEvent(EventBus.UP_CONFIG, arrayListOf(0, 2)) + } + + PreferKey.hideNavigationBar -> { + ReadBookConfig.hideNavigationBar = getPrefBoolean(PreferKey.hideNavigationBar) + postEvent(EventBus.UP_CONFIG, arrayListOf(0, 2)) + } + + PreferKey.keepLight -> postEvent(key, true) + PreferKey.readSliderMode -> postEvent(EventBus.UPDATE_READ_ACTION_BAR, true) + PreferKey.textSelectAble -> postEvent(key, getPrefBoolean(key)) + PreferKey.screenOrientation -> { + (activity as? ReadBookActivity)?.setOrientation() + } + + PreferKey.textFullJustify, + PreferKey.textBottomJustify, + PreferKey.useZhLayout -> { + postEvent(EventBus.UP_CONFIG, arrayListOf(5)) + } + + PreferKey.showBrightnessView -> { + postEvent(PreferKey.showBrightnessView, "") + } + + PreferKey.expandTextMenu -> { + (activity as? ReadBookActivity)?.textActionMenu?.upMenu() + } + + PreferKey.doublePageHorizontal -> { + ChapterProvider.upLayout() + ReadBook.loadContent(false) + } + + PreferKey.showReadTitleAddition, + PreferKey.readBarStyleFollowPage -> { + postEvent(EventBus.UPDATE_READ_ACTION_BAR, true) + } + + PreferKey.progressBarBehavior -> { + postEvent(EventBus.UP_SEEK_BAR, true) + } + + PreferKey.noAnimScrollPage -> { + ReadBook.callBack?.upPageAnim() + } + + PreferKey.optimizeRender -> { + ChapterProvider.upStyle() + ReadBook.callBack?.upPageAnim(true) + ReadBook.loadContent(false) + } + + PreferKey.paddingDisplayCutouts -> { + postEvent(EventBus.UP_CONFIG, arrayListOf(2)) + } + } + } + + override fun onPreferenceTreeClick(preference: Preference): Boolean { + when (preference.key) { + "customPageKey" -> PageKeyDialog(requireContext()).show() + "clickRegionalConfig" -> { + (activity as? ReadBookActivity)?.showClickRegionalConfig() + } + + PreferKey.menuAlpha -> { + NumberPickerDialog(requireContext()) + .setTitle(getString(R.string.menu_alpha)) + .setMaxValue(100) + .setMinValue(0) + .setValue(AppConfig.menuAlpha) + .show { + AppConfig.menuAlpha = it + upPreferenceSummary(PreferKey.menuAlpha, it.toString()) + postEvent(EventBus.UPDATE_READ_ACTION_BAR, true) + } + } + + PreferKey.pageTouchSlop -> { + NumberPickerDialog(requireContext()) + .setTitle(getString(R.string.page_touch_slop_dialog_title)) + .setMaxValue(9999) + .setMinValue(0) + .setValue(AppConfig.pageTouchSlop) + .show { + AppConfig.pageTouchSlop = it + postEvent(EventBus.UP_CONFIG, arrayListOf(4)) + } + } + } + return super.onPreferenceTreeClick(preference) + } + + @Suppress("SameParameterValue") + private fun upPreferenceSummary(preferenceKey: String, value: String?) { + val preference = findPreference(preferenceKey) ?: return + when (preferenceKey) { + PreferKey.menuAlpha -> preference.summary = + getString(R.string.menu_alpha_sum, AppConfig.menuAlpha) + PreferKey.pageTouchSlop -> preference.summary = + getString(R.string.page_touch_slop_summary, value) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/io/legato/kazusa/ui/main/my/MyFragment.kt b/app/src/main/java/io/legato/kazusa/ui/main/my/MyFragment.kt index 0781ac16b..93db8d257 100644 --- a/app/src/main/java/io/legato/kazusa/ui/main/my/MyFragment.kt +++ b/app/src/main/java/io/legato/kazusa/ui/main/my/MyFragment.kt @@ -152,6 +152,10 @@ class MyFragment() : BaseFragment(R.layout.fragment_my_config), MainFragmentInte putExtra("configTag", ConfigTag.THEME_CONFIG) } + "read_setting" -> startActivity { + putExtra("configTag", ConfigTag.READ_CONFIG) + } + "fileManage" -> startActivity() "readRecord" -> startActivity() "about" -> startActivity() diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 0ac7384ae..a300477b9 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1309,4 +1309,8 @@ Y轴距离 阴影半径 阴影颜色 + 全局阅读设置 + 屏幕显示与亮度 + 阅读行为 + 翻页控制 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3c1fa7d26..0db9f4d46 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1310,4 +1310,8 @@ Y轴距离 阴影半径 阴影颜色 + 全局阅读设置 + 屏幕显示与亮度 + 阅读行为 + 翻页控制 diff --git a/app/src/main/res/xml/pref_config_read.xml b/app/src/main/res/xml/pref_config_read.xml index 20592d674..e48b64c61 100644 --- a/app/src/main/res/xml/pref_config_read.xml +++ b/app/src/main/res/xml/pref_config_read.xml @@ -2,225 +2,209 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + - - \ No newline at end of file + + + + + + + + + + diff --git a/app/src/main/res/xml/pref_main.xml b/app/src/main/res/xml/pref_main.xml index efc329cd7..01b364543 100644 --- a/app/src/main/res/xml/pref_main.xml +++ b/app/src/main/res/xml/pref_main.xml @@ -41,6 +41,13 @@ android:title="@string/theme_setting" app:iconSpaceReserved="false" /> + +