From 6c5775a2ed7ade608c71a0d5cf0f54372bb82ed7 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Sat, 23 Mar 2024 09:54:10 +0200 Subject: [PATCH] Option to disable Pages tab on details screen --- app/build.gradle | 2 +- .../org/koitharu/kotatsu/core/prefs/AppSettings.kt | 10 +++++++++- .../org/koitharu/kotatsu/details/ui/DetailsActivity.kt | 3 ++- .../kotatsu/details/ui/pager/DetailsPagerAdapter.kt | 10 ++++++++-- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/pref_appearance.xml | 7 +++++++ build.gradle | 2 +- 7 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 31d17639f..f4aae2d4f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -104,7 +104,7 @@ dependencies { implementation 'androidx.viewpager2:viewpager2:1.1.0-beta02' implementation 'androidx.preference:preference-ktx:1.2.1' implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha05' - implementation 'com.google.android.material:material:1.12.0-alpha03' + implementation 'com.google.android.material:material:1.12.0-beta01' implementation 'androidx.lifecycle:lifecycle-common-java8:2.7.0' implementation 'androidx.webkit:webkit:1.10.0' diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt index ba8374501..0fe8516f2 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/prefs/AppSettings.kt @@ -221,8 +221,15 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { val isUnstableUpdatesAllowed: Boolean get() = prefs.getBoolean(KEY_UPDATES_UNSTABLE, false) + val isPagesTabEnabled: Boolean + get() = prefs.getBoolean(KEY_PAGES_TAB, true) + val defaultDetailsTab: Int - get() = prefs.getString(KEY_DETAILS_TAB, null)?.toIntOrNull()?.coerceIn(0, 1) ?: 0 + get() = if (isPagesTabEnabled) { + prefs.getString(KEY_DETAILS_TAB, null)?.toIntOrNull()?.coerceIn(0, 1) ?: 0 + } else { + 0 + } val isContentPrefetchEnabled: Boolean get() { @@ -622,6 +629,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) { const val KEY_CF_INVERTED = "cf_inverted" const val KEY_CF_GRAYSCALE = "cf_grayscale" const val KEY_IGNORE_DOZE = "ignore_dose" + const val KEY_PAGES_TAB = "pages_tab" const val KEY_DETAILS_TAB = "details_tab" const val KEY_READING_TIME = "reading_time" const val KEY_PAGES_SAVE_DIR = "pages_dir" diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt index 5d9aa492d..204377b43 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt @@ -376,12 +376,13 @@ class DetailsActivity : } private fun initPager() { - val adapter = DetailsPagerAdapter(this) + val adapter = DetailsPagerAdapter(this, settings) viewBinding.pager.recyclerView?.isNestedScrollingEnabled = false viewBinding.pager.offscreenPageLimit = 1 viewBinding.pager.adapter = adapter TabLayoutMediator(viewBinding.tabs, viewBinding.pager, adapter).attach() viewBinding.pager.setCurrentItem(settings.defaultDetailsTab, false) + viewBinding.tabs.isVisible = adapter.itemCount > 1 } private fun showBottomSheet(isVisible: Boolean) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/pager/DetailsPagerAdapter.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/pager/DetailsPagerAdapter.kt index b916a1471..f64879fa0 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/pager/DetailsPagerAdapter.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/pager/DetailsPagerAdapter.kt @@ -6,13 +6,19 @@ import androidx.viewpager2.adapter.FragmentStateAdapter import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.core.prefs.AppSettings import org.koitharu.kotatsu.details.ui.pager.chapters.ChaptersFragment import org.koitharu.kotatsu.details.ui.pager.pages.PagesFragment -class DetailsPagerAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity), +class DetailsPagerAdapter( + activity: FragmentActivity, + settings: AppSettings, +) : FragmentStateAdapter(activity), TabLayoutMediator.TabConfigurationStrategy { - override fun getItemCount(): Int = 2 + val isPagesTabEnabled = settings.isPagesTabEnabled + + override fun getItemCount(): Int = if (isPagesTabEnabled) 2 else 1 override fun createFragment(position: Int): Fragment = when (position) { 0 -> ChaptersFragment() diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 89d165855..dc43f6d41 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -638,4 +638,6 @@ Unread Enable source This manga source is not supported + Show pages thumbnails + Enable the \"Pages\" tab on the details screen diff --git a/app/src/main/res/xml/pref_appearance.xml b/app/src/main/res/xml/pref_appearance.xml index aee3d9b37..ad0723445 100644 --- a/app/src/main/res/xml/pref_appearance.xml +++ b/app/src/main/res/xml/pref_appearance.xml @@ -48,8 +48,15 @@ + +