Quellcode durchsuchen

Remove insert page when dual page split get turned off (#4739)

Andreas vor 4 Jahren
Ursprung
Commit
bdbdf211e2

+ 9 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt

@@ -20,6 +20,8 @@ class PagerConfig(
     preferences: PreferencesHelper = Injekt.get()
 ) : ViewerConfig(preferences, scope) {
 
+    var dualPageSplitChangedListener: ((Boolean) -> Unit)? = null
+
     var imageScaleType = 1
         private set
 
@@ -52,7 +54,13 @@ class PagerConfig(
             )
 
         preferences.dualPageSplitPaged()
-            .register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() })
+            .register(
+                { dualPageSplit = it },
+                {
+                    imagePropertyChangedListener?.invoke()
+                    dualPageSplitChangedListener?.invoke(it)
+                }
+            )
 
         preferences.dualPageInvertPaged()
             .register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() })

+ 10 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt

@@ -116,6 +116,12 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
             false
         }
 
+        config.dualPageSplitChangedListener = { enabled ->
+            if (!enabled) {
+                cleanupPageSplit()
+            }
+        }
+
         config.imagePropertyChangedListener = {
             refreshAdapter()
         }
@@ -381,4 +387,8 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
     fun onPageSplit(currentPage: ReaderPage, newPage: InsertPage) {
         adapter.onPageSplit(currentPage, newPage, this::class.java)
     }
+
+    private fun cleanupPageSplit() {
+        adapter.cleanupPageSplit()
+    }
 }

+ 6 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewerAdapter.kt

@@ -151,4 +151,10 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
 
         notifyDataSetChanged()
     }
+
+    fun cleanupPageSplit() {
+        val insertPages = items.filterIsInstance(InsertPage::class.java)
+        items.removeAll(insertPages)
+        notifyDataSetChanged()
+    }
 }