Option to disable Pages tab on details screen

This commit is contained in:
Koitharu
2024-03-23 09:54:10 +02:00
parent 4858adbbe7
commit 6c5775a2ed
7 changed files with 30 additions and 6 deletions

View File

@@ -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'

View File

@@ -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"

View File

@@ -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) {

View File

@@ -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()

View File

@@ -638,4 +638,6 @@
<string name="unread">Unread</string>
<string name="enable_source">Enable source</string>
<string name="unsupported_source">This manga source is not supported</string>
<string name="show_pages_thumbs">Show pages thumbnails</string>
<string name="show_pages_thumbs_summary">Enable the \"Pages\" tab on the details screen</string>
</resources>

View File

@@ -48,8 +48,15 @@
<PreferenceCategory android:title="@string/details">
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="pages_tab"
android:summary="@string/show_pages_thumbs_summary"
android:title="@string/show_pages_thumbs" />
<ListPreference
android:defaultValue="0"
android:dependency="pages_tab"
android:entries="@array/details_tabs"
android:entryValues="@array/details_tabs_values"
android:key="details_tab"

View File

@@ -4,7 +4,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.3.0'
classpath 'com.android.tools.build:gradle:8.3.1'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23'
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.51'
classpath 'com.google.devtools.ksp:symbol-processing-gradle-plugin:1.9.23-1.0.19'