Selaa lähdekoodia

Remove unused tabbed sheet layouts/classes

arkon 1 vuosi sitten
vanhempi
commit
813d7e49cd

+ 0 - 146
app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt

@@ -1,146 +0,0 @@
-package eu.kanade.tachiyomi.ui.reader.setting
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import androidx.core.view.isVisible
-import androidx.core.widget.NestedScrollView
-import androidx.lifecycle.lifecycleScope
-import eu.kanade.domain.manga.model.orientationType
-import eu.kanade.domain.manga.model.readingModeType
-import eu.kanade.tachiyomi.R
-import eu.kanade.tachiyomi.databinding.ReaderReadingModeSettingsBinding
-import eu.kanade.tachiyomi.ui.reader.ReaderActivity
-import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer
-import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
-import eu.kanade.tachiyomi.util.preference.bindToPreference
-import eu.kanade.tachiyomi.util.system.isReleaseBuildType
-import kotlinx.coroutines.flow.launchIn
-import kotlinx.coroutines.flow.onEach
-import uy.kohesive.injekt.injectLazy
-
-/**
- * Sheet to show reader and viewer preferences.
- */
-class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
-    NestedScrollView(context, attrs) {
-
-    private val readerPreferences: ReaderPreferences by injectLazy()
-
-    private val binding = ReaderReadingModeSettingsBinding.inflate(LayoutInflater.from(context), this, false)
-
-    init {
-        addView(binding.root)
-
-        initGeneralPreferences()
-
-        when ((context as ReaderActivity).viewModel.state.value.viewer) {
-            is PagerViewer -> initPagerPreferences()
-            is WebtoonViewer -> initWebtoonPreferences()
-        }
-    }
-
-    /**
-     * Init general reader preferences.
-     */
-    private fun initGeneralPreferences() {
-        binding.viewer.onItemSelectedListener = { position ->
-            val readingModeType = ReadingModeType.fromSpinner(position)
-            (context as ReaderActivity).viewModel.setMangaReadingMode(readingModeType.flagValue)
-
-            val mangaViewer = (context as ReaderActivity).viewModel.getMangaReadingMode()
-            if (mangaViewer == ReadingModeType.WEBTOON.flagValue || mangaViewer == ReadingModeType.CONTINUOUS_VERTICAL.flagValue) {
-                initWebtoonPreferences()
-            } else {
-                initPagerPreferences()
-            }
-        }
-        binding.viewer.setSelection((context as ReaderActivity).viewModel.manga?.readingModeType?.let { ReadingModeType.fromPreference(it.toInt()).prefValue } ?: ReadingModeType.DEFAULT.prefValue)
-
-        binding.rotationMode.onItemSelectedListener = { position ->
-            val rotationType = OrientationType.fromSpinner(position)
-            (context as ReaderActivity).viewModel.setMangaOrientationType(rotationType.flagValue)
-        }
-        binding.rotationMode.setSelection((context as ReaderActivity).viewModel.manga?.orientationType?.let { OrientationType.fromPreference(it.toInt()).prefValue } ?: OrientationType.DEFAULT.prefValue)
-    }
-
-    /**
-     * Init the preferences for the pager reader.
-     */
-    private fun initPagerPreferences() {
-        binding.webtoonPrefsGroup.root.isVisible = false
-        binding.pagerPrefsGroup.root.isVisible = true
-
-        binding.pagerPrefsGroup.tappingInverted.bindToPreference(readerPreferences.pagerNavInverted(), ReaderPreferences.TappingInvertMode::class.java)
-        binding.pagerPrefsGroup.navigatePan.bindToPreference(readerPreferences.navigateToPan())
-
-        binding.pagerPrefsGroup.pagerNav.bindToPreference(readerPreferences.navigationModePager())
-        readerPreferences.navigationModePager().changes()
-            .onEach {
-                val isTappingEnabled = it != 5
-                binding.pagerPrefsGroup.tappingInverted.isVisible = isTappingEnabled
-                binding.pagerPrefsGroup.navigatePan.isVisible = isTappingEnabled
-            }
-            .launchIn((context as ReaderActivity).lifecycleScope)
-        // Makes so that landscape zoom gets hidden away when image scale type is not fit screen
-        binding.pagerPrefsGroup.scaleType.bindToPreference(readerPreferences.imageScaleType(), 1)
-        readerPreferences.imageScaleType().changes()
-            .onEach { binding.pagerPrefsGroup.landscapeZoom.isVisible = it == 1 }
-            .launchIn((context as ReaderActivity).lifecycleScope)
-        binding.pagerPrefsGroup.landscapeZoom.bindToPreference(readerPreferences.landscapeZoom())
-
-        binding.pagerPrefsGroup.zoomStart.bindToPreference(readerPreferences.zoomStart(), 1)
-        binding.pagerPrefsGroup.cropBorders.bindToPreference(readerPreferences.cropBorders())
-
-        binding.pagerPrefsGroup.dualPageSplit.bindToPreference(readerPreferences.dualPageSplitPaged())
-        readerPreferences.dualPageSplitPaged().changes()
-            .onEach {
-                binding.pagerPrefsGroup.dualPageInvert.isVisible = it
-                if (it) {
-                    binding.pagerPrefsGroup.dualPageRotateToFit.isChecked = false
-                }
-            }
-            .launchIn((context as ReaderActivity).lifecycleScope)
-        binding.pagerPrefsGroup.dualPageInvert.bindToPreference(readerPreferences.dualPageInvertPaged())
-
-        binding.pagerPrefsGroup.dualPageRotateToFit.bindToPreference(readerPreferences.dualPageRotateToFit())
-        readerPreferences.dualPageRotateToFit().changes()
-            .onEach {
-                binding.pagerPrefsGroup.dualPageRotateToFitInvert.isVisible = it
-                if (it) {
-                    binding.pagerPrefsGroup.dualPageSplit.isChecked = false
-                }
-            }
-            .launchIn((context as ReaderActivity).lifecycleScope)
-        binding.pagerPrefsGroup.dualPageRotateToFitInvert.bindToPreference(readerPreferences.dualPageRotateToFitInvert())
-    }
-
-    /**
-     * Init the preferences for the webtoon reader.
-     */
-    private fun initWebtoonPreferences() {
-        binding.pagerPrefsGroup.root.isVisible = false
-        binding.webtoonPrefsGroup.root.isVisible = true
-
-        binding.webtoonPrefsGroup.tappingInverted.bindToPreference(readerPreferences.webtoonNavInverted(), ReaderPreferences.TappingInvertMode::class.java)
-
-        binding.webtoonPrefsGroup.webtoonNav.bindToPreference(readerPreferences.navigationModeWebtoon())
-        readerPreferences.navigationModeWebtoon().changes()
-            .onEach { binding.webtoonPrefsGroup.tappingInverted.isVisible = it != 5 }
-            .launchIn((context as ReaderActivity).lifecycleScope)
-        binding.webtoonPrefsGroup.cropBordersWebtoon.bindToPreference(readerPreferences.cropBordersWebtoon())
-        binding.webtoonPrefsGroup.webtoonSidePadding.bindToIntPreference(readerPreferences.webtoonSidePadding(), R.array.webtoon_side_padding_values)
-
-        binding.webtoonPrefsGroup.dualPageSplit.bindToPreference(readerPreferences.dualPageSplitWebtoon())
-        // Makes it so that dual page invert gets hidden away when dual page split is turned off
-        readerPreferences.dualPageSplitWebtoon().changes()
-            .onEach { binding.webtoonPrefsGroup.dualPageInvert.isVisible = it }
-            .launchIn((context as ReaderActivity).lifecycleScope)
-        binding.webtoonPrefsGroup.dualPageInvert.bindToPreference(readerPreferences.dualPageInvertWebtoon())
-
-        binding.webtoonPrefsGroup.longStripSplit.isVisible = !isReleaseBuildType
-        binding.webtoonPrefsGroup.longStripSplit.bindToPreference(readerPreferences.longStripSplitWebtoon())
-
-        binding.webtoonPrefsGroup.doubleTapZoom.bindToPreference(readerPreferences.webtoonDoubleTapZoomEnabled())
-    }
-}

+ 113 - 31
app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderSettingsSheet.kt

@@ -1,54 +1,136 @@
 package eu.kanade.tachiyomi.ui.reader.setting
 
 import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
+import androidx.core.view.isVisible
+import androidx.lifecycle.lifecycleScope
+import com.google.android.material.bottomsheet.BottomSheetDialog
+import eu.kanade.domain.manga.model.orientationType
+import eu.kanade.domain.manga.model.readingModeType
 import eu.kanade.tachiyomi.R
-import eu.kanade.tachiyomi.databinding.CommonTabbedSheetBinding
+import eu.kanade.tachiyomi.databinding.ReaderReadingModeSettingsBinding
 import eu.kanade.tachiyomi.ui.reader.ReaderActivity
-import eu.kanade.tachiyomi.widget.ViewPagerAdapter
-import eu.kanade.tachiyomi.widget.sheet.BaseBottomSheetDialog
+import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer
+import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
+import eu.kanade.tachiyomi.util.preference.bindToPreference
+import eu.kanade.tachiyomi.util.system.isReleaseBuildType
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import uy.kohesive.injekt.injectLazy
 
 class ReaderSettingsSheet(
     private val activity: ReaderActivity,
-) : BaseBottomSheetDialog(activity) {
+) : BottomSheetDialog(activity) {
 
-    private val tabs = listOf(
-        ReaderReadingModeSettings(activity) to R.string.pref_category_reading_mode,
-    )
+    private val readerPreferences: ReaderPreferences by injectLazy()
 
-    private lateinit var binding: CommonTabbedSheetBinding
-
-    override fun createView(inflater: LayoutInflater): View {
-        binding = CommonTabbedSheetBinding.inflate(activity.layoutInflater)
-
-        val adapter = Adapter()
-        binding.pager.adapter = adapter
-        binding.tabs.setupWithViewPager(binding.pager)
-
-        return binding.root
-    }
+    private lateinit var binding: ReaderReadingModeSettingsBinding
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
-        behavior.isFitToContents = false
-        behavior.halfExpandedRatio = 0.25f
-    }
+        binding = ReaderReadingModeSettingsBinding.inflate(activity.layoutInflater)
+        setContentView(binding.root)
 
-    private inner class Adapter : ViewPagerAdapter() {
+        initGeneralPreferences()
 
-        override fun createView(container: ViewGroup, position: Int): View {
-            return tabs[position].first
+        when (activity.viewModel.state.value.viewer) {
+            is PagerViewer -> initPagerPreferences()
+            is WebtoonViewer -> initWebtoonPreferences()
         }
+    }
 
-        override fun getCount(): Int {
-            return tabs.size
+    private fun initGeneralPreferences() {
+        binding.viewer.onItemSelectedListener = { position ->
+            val readingModeType = ReadingModeType.fromSpinner(position)
+            activity.viewModel.setMangaReadingMode(readingModeType.flagValue)
+
+            val mangaViewer = activity.viewModel.getMangaReadingMode()
+            if (mangaViewer == ReadingModeType.WEBTOON.flagValue || mangaViewer == ReadingModeType.CONTINUOUS_VERTICAL.flagValue) {
+                initWebtoonPreferences()
+            } else {
+                initPagerPreferences()
+            }
         }
+        binding.viewer.setSelection(activity.viewModel.manga?.readingModeType?.let { ReadingModeType.fromPreference(it.toInt()).prefValue } ?: ReadingModeType.DEFAULT.prefValue)
 
-        override fun getPageTitle(position: Int): CharSequence {
-            return activity.resources!!.getString(tabs[position].second)
+        binding.rotationMode.onItemSelectedListener = { position ->
+            val rotationType = OrientationType.fromSpinner(position)
+            activity.viewModel.setMangaOrientationType(rotationType.flagValue)
         }
+        binding.rotationMode.setSelection(activity.viewModel.manga?.orientationType?.let { OrientationType.fromPreference(it.toInt()).prefValue } ?: OrientationType.DEFAULT.prefValue)
+    }
+
+    private fun initPagerPreferences() {
+        binding.webtoonPrefsGroup.root.isVisible = false
+        binding.pagerPrefsGroup.root.isVisible = true
+
+        binding.pagerPrefsGroup.tappingInverted.bindToPreference(readerPreferences.pagerNavInverted(), ReaderPreferences.TappingInvertMode::class.java)
+        binding.pagerPrefsGroup.navigatePan.bindToPreference(readerPreferences.navigateToPan())
+
+        binding.pagerPrefsGroup.pagerNav.bindToPreference(readerPreferences.navigationModePager())
+        readerPreferences.navigationModePager().changes()
+            .onEach {
+                val isTappingEnabled = it != 5
+                binding.pagerPrefsGroup.tappingInverted.isVisible = isTappingEnabled
+                binding.pagerPrefsGroup.navigatePan.isVisible = isTappingEnabled
+            }
+            .launchIn(activity.lifecycleScope)
+        // Makes so that landscape zoom gets hidden away when image scale type is not fit screen
+        binding.pagerPrefsGroup.scaleType.bindToPreference(readerPreferences.imageScaleType(), 1)
+        readerPreferences.imageScaleType().changes()
+            .onEach { binding.pagerPrefsGroup.landscapeZoom.isVisible = it == 1 }
+            .launchIn(activity.lifecycleScope)
+        binding.pagerPrefsGroup.landscapeZoom.bindToPreference(readerPreferences.landscapeZoom())
+
+        binding.pagerPrefsGroup.zoomStart.bindToPreference(readerPreferences.zoomStart(), 1)
+        binding.pagerPrefsGroup.cropBorders.bindToPreference(readerPreferences.cropBorders())
+
+        binding.pagerPrefsGroup.dualPageSplit.bindToPreference(readerPreferences.dualPageSplitPaged())
+        readerPreferences.dualPageSplitPaged().changes()
+            .onEach {
+                binding.pagerPrefsGroup.dualPageInvert.isVisible = it
+                if (it) {
+                    binding.pagerPrefsGroup.dualPageRotateToFit.isChecked = false
+                }
+            }
+            .launchIn(activity.lifecycleScope)
+        binding.pagerPrefsGroup.dualPageInvert.bindToPreference(readerPreferences.dualPageInvertPaged())
+
+        binding.pagerPrefsGroup.dualPageRotateToFit.bindToPreference(readerPreferences.dualPageRotateToFit())
+        readerPreferences.dualPageRotateToFit().changes()
+            .onEach {
+                binding.pagerPrefsGroup.dualPageRotateToFitInvert.isVisible = it
+                if (it) {
+                    binding.pagerPrefsGroup.dualPageSplit.isChecked = false
+                }
+            }
+            .launchIn(activity.lifecycleScope)
+        binding.pagerPrefsGroup.dualPageRotateToFitInvert.bindToPreference(readerPreferences.dualPageRotateToFitInvert())
+    }
+
+    private fun initWebtoonPreferences() {
+        binding.pagerPrefsGroup.root.isVisible = false
+        binding.webtoonPrefsGroup.root.isVisible = true
+
+        binding.webtoonPrefsGroup.tappingInverted.bindToPreference(readerPreferences.webtoonNavInverted(), ReaderPreferences.TappingInvertMode::class.java)
+
+        binding.webtoonPrefsGroup.webtoonNav.bindToPreference(readerPreferences.navigationModeWebtoon())
+        readerPreferences.navigationModeWebtoon().changes()
+            .onEach { binding.webtoonPrefsGroup.tappingInverted.isVisible = it != 5 }
+            .launchIn(activity.lifecycleScope)
+        binding.webtoonPrefsGroup.cropBordersWebtoon.bindToPreference(readerPreferences.cropBordersWebtoon())
+        binding.webtoonPrefsGroup.webtoonSidePadding.bindToIntPreference(readerPreferences.webtoonSidePadding(), R.array.webtoon_side_padding_values)
+
+        binding.webtoonPrefsGroup.dualPageSplit.bindToPreference(readerPreferences.dualPageSplitWebtoon())
+        // Makes it so that dual page invert gets hidden away when dual page split is turned off
+        readerPreferences.dualPageSplitWebtoon().changes()
+            .onEach { binding.webtoonPrefsGroup.dualPageInvert.isVisible = it }
+            .launchIn(activity.lifecycleScope)
+        binding.webtoonPrefsGroup.dualPageInvert.bindToPreference(readerPreferences.dualPageInvertWebtoon())
+
+        binding.webtoonPrefsGroup.longStripSplit.isVisible = !isReleaseBuildType
+        binding.webtoonPrefsGroup.longStripSplit.bindToPreference(readerPreferences.longStripSplitWebtoon())
+
+        binding.webtoonPrefsGroup.doubleTapZoom.bindToPreference(readerPreferences.webtoonDoubleTapZoomEnabled())
     }
 }

+ 0 - 55
app/src/main/java/eu/kanade/tachiyomi/widget/sheet/BaseBottomSheetDialog.kt

@@ -1,55 +0,0 @@
-package eu.kanade.tachiyomi.widget.sheet
-
-import android.content.Context
-import android.os.Build
-import android.os.Bundle
-import android.util.DisplayMetrics
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import com.google.android.material.bottomsheet.BottomSheetDialog
-import com.google.android.material.bottomsheet.getElevation
-import eu.kanade.tachiyomi.R
-import eu.kanade.tachiyomi.util.system.displayCompat
-import eu.kanade.tachiyomi.util.system.isNightMode
-import eu.kanade.tachiyomi.util.view.setNavigationBarTransparentCompat
-
-abstract class BaseBottomSheetDialog(context: Context) : BottomSheetDialog(context) {
-
-    abstract fun createView(inflater: LayoutInflater): View
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-
-        val rootView = createView(layoutInflater)
-        setContentView(rootView)
-
-        // Enforce max width for tablets
-        val width = context.resources.getDimensionPixelSize(R.dimen.bottom_sheet_width)
-        if (width > 0) {
-            behavior.maxWidth = width
-        }
-
-        // Set peek height to 50% display height
-        context.displayCompat?.let {
-            val metrics = DisplayMetrics()
-            it.getRealMetrics(metrics)
-            behavior.peekHeight = metrics.heightPixels / 2
-        }
-
-        // Set navbar color to transparent for edge-to-edge bottom sheet if we can use light navigation bar
-        // TODO Replace deprecated systemUiVisibility when material-components uses new API to modify status bar icons
-        @Suppress("DEPRECATION")
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-            window?.setNavigationBarTransparentCompat(context, behavior.getElevation())
-            val bottomSheet = rootView.parent as ViewGroup
-            var flags = bottomSheet.systemUiVisibility
-            flags = if (context.isNightMode()) {
-                flags and View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.inv()
-            } else {
-                flags or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
-            }
-            bottomSheet.systemUiVisibility = flags
-        }
-    }
-}

+ 0 - 56
app/src/main/java/eu/kanade/tachiyomi/widget/sheet/BottomSheetViewPager.kt

@@ -1,56 +0,0 @@
-package eu.kanade.tachiyomi.widget.sheet
-import android.content.Context
-import android.util.AttributeSet
-import android.view.View
-import androidx.viewpager.widget.ViewPager
-import java.lang.reflect.Field
-
-/**
- * From https://github.com/kafumi/android-bottomsheet-viewpager
- */
-class BottomSheetViewPager @JvmOverloads constructor(
-    context: Context,
-    attrs: AttributeSet? = null,
-) : ViewPager(context, attrs) {
-
-    private val positionField: Field = LayoutParams::class.java.getDeclaredField("position").also {
-        it.isAccessible = true
-    }
-
-    override fun getChildAt(index: Int): View {
-        val currentView = getCurrentView() ?: return super.getChildAt(index)
-        return if (index == 0) {
-            currentView
-        } else {
-            var view = super.getChildAt(index)
-            if (view == currentView) {
-                view = super.getChildAt(0)
-            }
-            return view
-        }
-    }
-
-    private fun getCurrentView(): View? {
-        for (i in 0 until childCount) {
-            val child = super.getChildAt(i)
-            val lp = child.layoutParams as? LayoutParams
-            if (lp != null) {
-                val position = positionField.getInt(lp)
-                if (!lp.isDecor && currentItem == position) {
-                    return child
-                }
-            }
-        }
-        return null
-    }
-
-    init {
-        addOnPageChangeListener(
-            object : SimpleOnPageChangeListener() {
-                override fun onPageSelected(position: Int) {
-                    requestLayout()
-                }
-            },
-        )
-    }
-}

+ 0 - 50
app/src/main/res/layout/common_tabbed_sheet.xml

@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:orientation="vertical">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@drawable/transparent_tabs_background">
-
-        <!-- Remove background color so rounded sheet corners work -->
-        <com.google.android.material.tabs.TabLayout
-            android:id="@+id/tabs"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:background="@android:color/transparent"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toStartOf="@+id/menu"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:tabGravity="fill"
-            app:tabMode="fixed" />
-
-        <ImageButton
-            android:id="@+id/menu"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:background="?attr/selectableItemBackgroundBorderless"
-            android:contentDescription="@string/action_menu"
-            android:paddingStart="10dp"
-            android:paddingEnd="10dp"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:srcCompat="@drawable/ic_overflow_24dp"
-            app:tint="?attr/colorOnSurface"
-            tools:visibility="visible" />
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-    <eu.kanade.tachiyomi.widget.sheet.BottomSheetViewPager
-        android:id="@+id/pager"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
-
-</LinearLayout>

+ 0 - 2
app/src/main/res/values-sw720dp/dimens.xml

@@ -1,5 +1,3 @@
 <resources>
-    <dimen name="bottom_sheet_width">480dp</dimen>
-
     <dimen name="screen_edge_margin">24dp</dimen>
 </resources>

+ 0 - 2
app/src/main/res/values/dimens.xml

@@ -1,6 +1,4 @@
 <resources>
-    <dimen name="bottom_sheet_width">0dp</dimen>
-
     <dimen name="dialog_radius">8dp</dimen>
 
     <dimen name="screen_edge_margin">16dp</dimen>