diff --git a/app/src/debug/kotlin/org/koitharu/kotatsu/settings/DebugSettingsFragment.kt b/app/src/debug/kotlin/org/koitharu/kotatsu/settings/DebugSettingsFragment.kt new file mode 100644 index 000000000..317c3fcf2 --- /dev/null +++ b/app/src/debug/kotlin/org/koitharu/kotatsu/settings/DebugSettingsFragment.kt @@ -0,0 +1,64 @@ +package org.koitharu.kotatsu.settings + +import android.os.Bundle +import androidx.preference.Preference +import leakcanary.LeakCanary +import org.koitharu.kotatsu.KotatsuApp +import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.core.ui.BasePreferenceFragment +import org.koitharu.kotatsu.settings.utils.SplitSwitchPreference +import org.koitharu.workinspector.WorkInspector + +class DebugSettingsFragment : BasePreferenceFragment(R.string.debug), Preference.OnPreferenceChangeListener, + Preference.OnPreferenceClickListener { + + private val application + get() = requireContext().applicationContext as KotatsuApp + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + addPreferencesFromResource(R.xml.pref_debug) + findPreference(KEY_LEAK_CANARY)?.let { pref -> + pref.isChecked = application.isLeakCanaryEnabled + pref.onPreferenceChangeListener = this + pref.onContainerClickListener = this + } + } + + override fun onResume() { + super.onResume() + findPreference(KEY_LEAK_CANARY)?.isChecked = application.isLeakCanaryEnabled + } + + override fun onPreferenceTreeClick(preference: Preference): Boolean = when (preference.key) { + KEY_WORK_INSPECTOR -> { + startActivity(WorkInspector.getIntent(preference.context)) + true + } + + else -> super.onPreferenceTreeClick(preference) + } + + override fun onPreferenceClick(preference: Preference): Boolean = when (preference.key) { + KEY_LEAK_CANARY -> { + startActivity(LeakCanary.newLeakDisplayActivityIntent()) + true + } + + else -> super.onPreferenceTreeClick(preference) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean = when (preference.key) { + KEY_LEAK_CANARY -> { + application.isLeakCanaryEnabled = newValue as Boolean + true + } + + else -> false + } + + private companion object { + + const val KEY_LEAK_CANARY = "leak_canary" + const val KEY_WORK_INSPECTOR = "work_inspector" + } +} diff --git a/app/src/debug/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt b/app/src/debug/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt deleted file mode 100644 index 902997993..000000000 --- a/app/src/debug/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt +++ /dev/null @@ -1,58 +0,0 @@ -package org.koitharu.kotatsu.settings - -import android.content.Context -import android.view.Menu -import android.view.MenuInflater -import android.view.MenuItem -import androidx.core.view.MenuProvider -import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView -import leakcanary.LeakCanary -import org.koitharu.kotatsu.KotatsuApp -import org.koitharu.kotatsu.R -import org.koitharu.workinspector.WorkInspector - -class SettingsMenuProvider( - private val context: Context, -) : MenuProvider { - - private val application: KotatsuApp - get() = context.applicationContext as KotatsuApp - - override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { - menuInflater.inflate(R.menu.opt_settings, menu) - } - - override fun onPrepareMenu(menu: Menu) { - super.onPrepareMenu(menu) - menu.findItem(R.id.action_leakcanary).isChecked = application.isLeakCanaryEnabled - menu.findItem(R.id.action_ssiv_debug).isChecked = SubsamplingScaleImageView.isDebug - } - - override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { - R.id.action_leaks -> { - context.startActivity(LeakCanary.newLeakDisplayActivityIntent()) - true - } - - R.id.action_works -> { - context.startActivity(WorkInspector.getIntent(context)) - true - } - - R.id.action_leakcanary -> { - val checked = !menuItem.isChecked - menuItem.isChecked = checked - application.isLeakCanaryEnabled = checked - true - } - - R.id.action_ssiv_debug -> { - val checked = !menuItem.isChecked - menuItem.isChecked = checked - SubsamplingScaleImageView.isDebug = checked - true - } - - else -> false - } -} diff --git a/app/src/debug/res/drawable/ic_debug.xml b/app/src/debug/res/drawable/ic_debug.xml new file mode 100644 index 000000000..82391c50e --- /dev/null +++ b/app/src/debug/res/drawable/ic_debug.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/debug/res/menu/opt_settings.xml b/app/src/debug/res/menu/opt_settings.xml deleted file mode 100644 index a42f54f2b..000000000 --- a/app/src/debug/res/menu/opt_settings.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/debug/res/xml/pref_debug.xml b/app/src/debug/res/xml/pref_debug.xml new file mode 100644 index 000000000..b67896596 --- /dev/null +++ b/app/src/debug/res/xml/pref_debug.xml @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/app/src/debug/res/xml/pref_root_debug.xml b/app/src/debug/res/xml/pref_root_debug.xml new file mode 100644 index 000000000..4d36aaccb --- /dev/null +++ b/app/src/debug/res/xml/pref_root_debug.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonImageView.kt b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonImageView.kt index 756e81717..3b3dbba56 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonImageView.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/reader/ui/pager/webtoon/WebtoonImageView.kt @@ -23,7 +23,7 @@ class WebtoonImageView @JvmOverloads constructor( override fun onDraw(canvas: Canvas) { super.onDraw(canvas) - if (isDebug) { + if (isDebugDrawingEnabled) { drawDebug(canvas) } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/RootSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/RootSettingsFragment.kt index 1fd9f1449..fcc95134e 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/RootSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/RootSettingsFragment.kt @@ -25,6 +25,7 @@ class RootSettingsFragment : BasePreferenceFragment(0) { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.pref_root) + addPreferencesFromResource(R.xml.pref_root_debug) bindPreferenceSummary("appearance", R.string.theme, R.string.list_mode, R.string.language) bindPreferenceSummary("reader", R.string.read_mode, R.string.scale_mode, R.string.switch_pages) bindPreferenceSummary("network", R.string.proxy, R.string.dns_over_https, R.string.prefetch_content) @@ -48,7 +49,6 @@ class RootSettingsFragment : BasePreferenceFragment(0) { } } addMenuProvider(SettingsSearchMenuProvider(activityViewModel)) - addMenuProvider(SettingsMenuProvider(view.context)) } override fun setTitle(title: CharSequence?) { diff --git a/app/src/nightly/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt b/app/src/nightly/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt deleted file mode 100644 index e9cc4b9a5..000000000 --- a/app/src/nightly/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.koitharu.kotatsu.settings - -import android.content.Context -import android.view.Menu -import android.view.MenuInflater -import android.view.MenuItem -import androidx.core.view.MenuProvider - -@Suppress("UNUSED_PARAMETER") -class SettingsMenuProvider(context: Context) : MenuProvider { - - override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) = Unit - - override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false -} diff --git a/app/src/nightly/res/xml/pref_root_debug.xml b/app/src/nightly/res/xml/pref_root_debug.xml new file mode 100644 index 000000000..33ea42ab9 --- /dev/null +++ b/app/src/nightly/res/xml/pref_root_debug.xml @@ -0,0 +1,2 @@ + + diff --git a/app/src/release/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt b/app/src/release/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt deleted file mode 100644 index e9cc4b9a5..000000000 --- a/app/src/release/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.koitharu.kotatsu.settings - -import android.content.Context -import android.view.Menu -import android.view.MenuInflater -import android.view.MenuItem -import androidx.core.view.MenuProvider - -@Suppress("UNUSED_PARAMETER") -class SettingsMenuProvider(context: Context) : MenuProvider { - - override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) = Unit - - override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false -} diff --git a/app/src/release/res/xml/pref_root_debug.xml b/app/src/release/res/xml/pref_root_debug.xml new file mode 100644 index 000000000..33ea42ab9 --- /dev/null +++ b/app/src/release/res/xml/pref_root_debug.xml @@ -0,0 +1,2 @@ + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c5b4478cb..949878a26 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -38,7 +38,7 @@ preference = "1.2.1" recyclerview = "1.4.0" room = "2.7.2" serialization = "1.8.1" -ssiv = "9a67b6a7c9" +ssiv = "5132f1e609" swiperefreshlayout = "1.1.0" testRules = "1.6.1" testRunner = "1.6.2"