Option to disable Pages tab on details screen
This commit is contained in:
@@ -104,7 +104,7 @@ dependencies {
|
|||||||
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta02'
|
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta02'
|
||||||
implementation 'androidx.preference:preference-ktx:1.2.1'
|
implementation 'androidx.preference:preference-ktx:1.2.1'
|
||||||
implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha05'
|
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.lifecycle:lifecycle-common-java8:2.7.0'
|
||||||
implementation 'androidx.webkit:webkit:1.10.0'
|
implementation 'androidx.webkit:webkit:1.10.0'
|
||||||
|
|
||||||
|
|||||||
@@ -221,8 +221,15 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
|||||||
val isUnstableUpdatesAllowed: Boolean
|
val isUnstableUpdatesAllowed: Boolean
|
||||||
get() = prefs.getBoolean(KEY_UPDATES_UNSTABLE, false)
|
get() = prefs.getBoolean(KEY_UPDATES_UNSTABLE, false)
|
||||||
|
|
||||||
|
val isPagesTabEnabled: Boolean
|
||||||
|
get() = prefs.getBoolean(KEY_PAGES_TAB, true)
|
||||||
|
|
||||||
val defaultDetailsTab: Int
|
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
|
val isContentPrefetchEnabled: Boolean
|
||||||
get() {
|
get() {
|
||||||
@@ -622,6 +629,7 @@ class AppSettings @Inject constructor(@ApplicationContext context: Context) {
|
|||||||
const val KEY_CF_INVERTED = "cf_inverted"
|
const val KEY_CF_INVERTED = "cf_inverted"
|
||||||
const val KEY_CF_GRAYSCALE = "cf_grayscale"
|
const val KEY_CF_GRAYSCALE = "cf_grayscale"
|
||||||
const val KEY_IGNORE_DOZE = "ignore_dose"
|
const val KEY_IGNORE_DOZE = "ignore_dose"
|
||||||
|
const val KEY_PAGES_TAB = "pages_tab"
|
||||||
const val KEY_DETAILS_TAB = "details_tab"
|
const val KEY_DETAILS_TAB = "details_tab"
|
||||||
const val KEY_READING_TIME = "reading_time"
|
const val KEY_READING_TIME = "reading_time"
|
||||||
const val KEY_PAGES_SAVE_DIR = "pages_dir"
|
const val KEY_PAGES_SAVE_DIR = "pages_dir"
|
||||||
|
|||||||
@@ -376,12 +376,13 @@ class DetailsActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun initPager() {
|
private fun initPager() {
|
||||||
val adapter = DetailsPagerAdapter(this)
|
val adapter = DetailsPagerAdapter(this, settings)
|
||||||
viewBinding.pager.recyclerView?.isNestedScrollingEnabled = false
|
viewBinding.pager.recyclerView?.isNestedScrollingEnabled = false
|
||||||
viewBinding.pager.offscreenPageLimit = 1
|
viewBinding.pager.offscreenPageLimit = 1
|
||||||
viewBinding.pager.adapter = adapter
|
viewBinding.pager.adapter = adapter
|
||||||
TabLayoutMediator(viewBinding.tabs, viewBinding.pager, adapter).attach()
|
TabLayoutMediator(viewBinding.tabs, viewBinding.pager, adapter).attach()
|
||||||
viewBinding.pager.setCurrentItem(settings.defaultDetailsTab, false)
|
viewBinding.pager.setCurrentItem(settings.defaultDetailsTab, false)
|
||||||
|
viewBinding.tabs.isVisible = adapter.itemCount > 1
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showBottomSheet(isVisible: Boolean) {
|
private fun showBottomSheet(isVisible: Boolean) {
|
||||||
|
|||||||
@@ -6,13 +6,19 @@ import androidx.viewpager2.adapter.FragmentStateAdapter
|
|||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import com.google.android.material.tabs.TabLayoutMediator
|
import com.google.android.material.tabs.TabLayoutMediator
|
||||||
import org.koitharu.kotatsu.R
|
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.chapters.ChaptersFragment
|
||||||
import org.koitharu.kotatsu.details.ui.pager.pages.PagesFragment
|
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 {
|
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) {
|
override fun createFragment(position: Int): Fragment = when (position) {
|
||||||
0 -> ChaptersFragment()
|
0 -> ChaptersFragment()
|
||||||
|
|||||||
@@ -638,4 +638,6 @@
|
|||||||
<string name="unread">Unread</string>
|
<string name="unread">Unread</string>
|
||||||
<string name="enable_source">Enable source</string>
|
<string name="enable_source">Enable source</string>
|
||||||
<string name="unsupported_source">This manga source is not supported</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>
|
</resources>
|
||||||
|
|||||||
@@ -48,8 +48,15 @@
|
|||||||
|
|
||||||
<PreferenceCategory android:title="@string/details">
|
<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
|
<ListPreference
|
||||||
android:defaultValue="0"
|
android:defaultValue="0"
|
||||||
|
android:dependency="pages_tab"
|
||||||
android:entries="@array/details_tabs"
|
android:entries="@array/details_tabs"
|
||||||
android:entryValues="@array/details_tabs_values"
|
android:entryValues="@array/details_tabs_values"
|
||||||
android:key="details_tab"
|
android:key="details_tab"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
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 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23'
|
||||||
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.51'
|
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'
|
classpath 'com.google.devtools.ksp:symbol-processing-gradle-plugin:1.9.23-1.0.19'
|
||||||
|
|||||||
Reference in New Issue
Block a user