Horis 2 anni fa
parent
commit
e83f31c59e

+ 8 - 0
app/src/main/java/io/legado/app/model/localBook/EpubFile.kt

@@ -179,6 +179,14 @@ class EpubFile(var book: Book) {
         elements.select("img[src=\"cover.jpeg\"]").forEachIndexed { i, it ->
         elements.select("img[src=\"cover.jpeg\"]").forEachIndexed { i, it ->
             if (i > 0) it.remove()
             if (i > 0) it.remove()
         }
         }
+        elements.select("img").forEach {
+            if (it.attributesSize() <= 1) {
+                return@forEach
+            }
+            val src = it.attr("src")
+            it.clearAttributes()
+            it.attr("src", src)
+        }
         val tag = Book.rubyTag
         val tag = Book.rubyTag
         if (book.getDelTag(tag)) {
         if (book.getDelTag(tag)) {
             elements.select("rp, rt").remove()
             elements.select("rp, rt").remove()

+ 1 - 0
app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt

@@ -200,6 +200,7 @@ class ReadView(context: Context, attrs: AttributeSet) :
             }
             }
 
 
             MotionEvent.ACTION_MOVE -> {
             MotionEvent.ACTION_MOVE -> {
+                if (!pressDown) return true
                 val absX = abs(startX - event.x)
                 val absX = abs(startX - event.x)
                 val absY = abs(startY - event.y)
                 val absY = abs(startY - event.y)
                 if (!isMove) {
                 if (!isMove) {

+ 42 - 17
app/src/main/java/io/legado/app/ui/book/source/manage/BookSourceActivity.kt

@@ -14,6 +14,8 @@ import androidx.appcompat.widget.PopupMenu
 import androidx.appcompat.widget.SearchView
 import androidx.appcompat.widget.SearchView
 import androidx.core.os.bundleOf
 import androidx.core.os.bundleOf
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.LifecycleRegistry
 import androidx.lifecycle.flowWithLifecycle
 import androidx.lifecycle.flowWithLifecycle
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.repeatOnLifecycle
 import androidx.lifecycle.repeatOnLifecycle
@@ -50,6 +52,7 @@ import io.legado.app.utils.ACache
 import io.legado.app.utils.applyTint
 import io.legado.app.utils.applyTint
 import io.legado.app.utils.cnCompare
 import io.legado.app.utils.cnCompare
 import io.legado.app.utils.dpToPx
 import io.legado.app.utils.dpToPx
+import io.legado.app.utils.flowWithLifecycleFirst
 import io.legado.app.utils.hideSoftInput
 import io.legado.app.utils.hideSoftInput
 import io.legado.app.utils.isAbsUrl
 import io.legado.app.utils.isAbsUrl
 import io.legado.app.utils.launch
 import io.legado.app.utils.launch
@@ -68,6 +71,7 @@ import kotlinx.coroutines.Job
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.catch
 import kotlinx.coroutines.flow.conflate
 import kotlinx.coroutines.flow.conflate
+import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.isActive
 import kotlinx.coroutines.isActive
@@ -98,7 +102,6 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
     override var sortAscending = true
     override var sortAscending = true
         private set
         private set
     private var snackBar: Snackbar? = null
     private var snackBar: Snackbar? = null
-    private var isPaused = false
     private val qrResult = registerForActivityResult(QrCodeResult()) {
     private val qrResult = registerForActivityResult(QrCodeResult()) {
         it ?: return@registerForActivityResult
         it ?: return@registerForActivityResult
         showDialogFragment(ImportBookSourceDialog(it))
         showDialogFragment(ImportBookSourceDialog(it))
@@ -125,6 +128,19 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
             }
             }
         }
         }
     }
     }
+    private val groupMenuLifecycleOwner = object : LifecycleOwner {
+        private val registry = LifecycleRegistry(this)
+        override val lifecycle: Lifecycle get() = registry
+
+        fun onMenuOpened() {
+            registry.handleLifecycleEvent(Lifecycle.Event.ON_START)
+        }
+
+        fun onMenuClosed() {
+            registry.handleLifecycleEvent(Lifecycle.Event.ON_STOP)
+        }
+
+    }
 
 
     override fun onActivityCreated(savedInstanceState: Bundle?) {
     override fun onActivityCreated(savedInstanceState: Bundle?) {
         initRecyclerView()
         initRecyclerView()
@@ -372,12 +388,17 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
 
 
     private fun initLiveDataGroup() {
     private fun initLiveDataGroup() {
         lifecycleScope.launch {
         lifecycleScope.launch {
-            appDb.bookSourceDao.flowGroups().conflate().collect {
-                groups.clear()
-                groups.addAll(it)
-                upGroupMenu()
-                delay(500)
-            }
+            appDb.bookSourceDao.flowGroups()
+                .flowWithLifecycle(lifecycle)
+                .flowWithLifecycleFirst(groupMenuLifecycleOwner.lifecycle)
+                .conflate()
+                .distinctUntilChanged()
+                .collect {
+                    groups.clear()
+                    groups.addAll(it)
+                    upGroupMenu()
+                    delay(500)
+                }
         }
         }
     }
     }
 
 
@@ -400,6 +421,20 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
         }
         }
     }
     }
 
 
+    override fun onMenuOpened(featureId: Int, menu: Menu): Boolean {
+        if (menu === groupMenu) {
+            groupMenuLifecycleOwner.onMenuOpened()
+        }
+        return super.onMenuOpened(featureId, menu)
+    }
+
+    override fun onPanelClosed(featureId: Int, menu: Menu) {
+        super.onPanelClosed(featureId, menu)
+        if (menu === groupMenu) {
+            groupMenuLifecycleOwner.onMenuClosed()
+        }
+    }
+
     private fun initSelectActionBar() {
     private fun initSelectActionBar() {
         binding.selectActionBar.setMainActionText(R.string.delete)
         binding.selectActionBar.setMainActionText(R.string.delete)
         binding.selectActionBar.inflateMenu(R.menu.book_source_sel)
         binding.selectActionBar.inflateMenu(R.menu.book_source_sel)
@@ -637,16 +672,6 @@ class BookSourceActivity : VMBaseActivity<ActivityBookSourceBinding, BookSourceV
         }
         }
     }
     }
 
 
-    override fun onPause() {
-        super.onPause()
-        isPaused = true
-    }
-
-    override fun onResume() {
-        super.onResume()
-        isPaused = false
-    }
-
     override fun upCountView() {
     override fun upCountView() {
         binding.selectActionBar
         binding.selectActionBar
             .upCountView(adapter.selection.size, adapter.itemCount)
             .upCountView(adapter.selection.size, adapter.itemCount)