ソースを参照

全文搜索添加停止按钮

kunfei 4 年 前
親
コミット
af48d88ba7

+ 11 - 7
app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentActivity.kt

@@ -20,10 +20,7 @@ import io.legado.app.lib.theme.getPrimaryTextColor
 import io.legado.app.lib.theme.primaryTextColor
 import io.legado.app.lib.theme.primaryTextColor
 import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
 import io.legado.app.ui.widget.recycler.UpLinearLayoutManager
 import io.legado.app.ui.widget.recycler.VerticalDivider
 import io.legado.app.ui.widget.recycler.VerticalDivider
-import io.legado.app.utils.ColorUtils
-import io.legado.app.utils.applyTint
-import io.legado.app.utils.observeEvent
-import io.legado.app.utils.postEvent
+import io.legado.app.utils.*
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import io.legado.app.utils.viewbindingdelegate.viewBinding
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Job
 import kotlinx.coroutines.Job
@@ -80,9 +77,8 @@ class SearchContentActivity :
         searchView.clearFocus()
         searchView.clearFocus()
         searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
         searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
             override fun onQueryTextSubmit(query: String): Boolean {
             override fun onQueryTextSubmit(query: String): Boolean {
-                if (viewModel.lastQuery != query) {
-                    startContentSearch(query)
-                }
+                startContentSearch(query)
+                searchView.clearFocus()
                 return false
                 return false
             }
             }
 
 
@@ -107,6 +103,9 @@ class SearchContentActivity :
                 mLayoutManager.scrollToPositionWithOffset(adapter.itemCount - 1, 0)
                 mLayoutManager.scrollToPositionWithOffset(adapter.itemCount - 1, 0)
             }
             }
         }
         }
+        binding.fbStop.setOnClickListener {
+            searchJob?.cancel()
+        }
     }
     }
 
 
     @SuppressLint("SetTextI18n")
     @SuppressLint("SetTextI18n")
@@ -158,6 +157,7 @@ class SearchContentActivity :
                     }.forEach { bookChapter ->
                     }.forEach { bookChapter ->
                         ensureActive()
                         ensureActive()
                         binding.refreshProgressBar.isAutoLoading = true
                         binding.refreshProgressBar.isAutoLoading = true
+                        binding.fbStop.visible()
                         val searchResults = withContext(IO) {
                         val searchResults = withContext(IO) {
                             if (isLocalBook || viewModel.cacheChapterNames.contains(bookChapter.getFileName())) {
                             if (isLocalBook || viewModel.cacheChapterNames.contains(bookChapter.getFileName())) {
                                 viewModel.searchChapter(this, query, bookChapter)
                                 viewModel.searchChapter(this, query, bookChapter)
@@ -181,8 +181,12 @@ class SearchContentActivity :
                         adapter.addItem(noSearchResult)
                         adapter.addItem(noSearchResult)
                     }
                     }
                 }.onFailure {
                 }.onFailure {
+                    binding.fbStop.invisible()
                     binding.refreshProgressBar.isAutoLoading = false
                     binding.refreshProgressBar.isAutoLoading = false
                     AppLog.put("全文搜索出错\n${it.localizedMessage}", it)
                     AppLog.put("全文搜索出错\n${it.localizedMessage}", it)
+                }.onSuccess {
+                    binding.fbStop.invisible()
+                    binding.refreshProgressBar.isAutoLoading = false
                 }
                 }
             }
             }
         }
         }

+ 11 - 0
app/src/main/res/layout/activity_search_content.xml

@@ -77,5 +77,16 @@
             tools:ignore="UnusedAttribute" />
             tools:ignore="UnusedAttribute" />
     </LinearLayout>
     </LinearLayout>
 
 
+    <com.google.android.material.floatingactionbutton.FloatingActionButton
+        android:id="@+id/fb_stop"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="16dp"
+        android:src="@drawable/ic_stop_black_24dp"
+        android:visibility="invisible"
+        android:contentDescription="@string/stop"
+        app:fabSize="mini"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent" />
 
 
 </androidx.constraintlayout.widget.ConstraintLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>