HapeLee пре 3 месеци
родитељ
комит
7a036ea58d

+ 14 - 1
app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentScreen.kt

@@ -65,6 +65,7 @@ import io.legado.app.ui.widget.components.button.series.SmallToggleButton
 import io.legado.app.ui.widget.components.button.series.ToggleStyle
 import io.legado.app.ui.widget.components.card.TextCard
 import io.legado.app.ui.widget.components.icon.AppIcon
+import io.legado.app.ui.widget.components.icon.AppIcons
 import io.legado.app.ui.widget.components.lazylist.FastScrollLazyColumn
 import io.legado.app.ui.widget.components.progressIndicator.AppLinearProgressIndicator
 import io.legado.app.ui.widget.components.text.AppText
@@ -193,7 +194,19 @@ fun SearchContentScreen(
                     SearchBar(
                         query = searchQuery,
                         scrollState = listState,
-                        onQueryChange = { onIntent(SearchContentIntent.UpdateQuery(it)) }
+                        onQueryChange = { onIntent(SearchContentIntent.UpdateQuery(it)) },
+                        trailingIcon = {
+                            if (searchQuery.isNotEmpty()) {
+                                SmallPlainButton(
+                                    modifier = Modifier.padding(horizontal = 8.dp),
+                                    onClick = {
+                                        onIntent(SearchContentIntent.UpdateQuery(""))
+                                    },
+                                    icon = AppIcons.Close,
+                                    contentDescription = stringResource(R.string.clear)
+                                )
+                            }
+                        }
                     )
                 }
 

+ 4 - 1
app/src/main/java/io/legado/app/ui/book/searchContent/SearchContentViewModel.kt

@@ -86,6 +86,7 @@ class SearchContentViewModel(
 
     private var searchJob: Job? = null
     private var historyJob: Job? = null
+    private var resultOpened = false
 
     init {
         initBook()
@@ -162,6 +163,7 @@ class SearchContentViewModel(
         val state = _uiState.value
         if (state.searchQuery.isBlank()) {
             searchContentRepository.clearSession(bookUrl)
+            SearchContentResult.clearResults(bookUrl)
             _uiState.update {
                 it.copy(isSearching = false, searchResults = persistentListOf(), error = null)
             }
@@ -199,7 +201,7 @@ class SearchContentViewModel(
 
     private fun leaveSearch() {
         searchJob?.cancel()
-        if (_uiState.value.searchQuery.isBlank()) SearchContentResult.clearResults(bookUrl)
+        if (!resultOpened) SearchContentResult.clearResults(bookUrl)
         _uiState.update {
             it.copy(
                 searchQuery = "",
@@ -215,6 +217,7 @@ class SearchContentViewModel(
         val results = _uiState.value.searchResults
         val index = results.indexOf(result)
         if (index < 0) return
+        resultOpened = true
         SearchContentResult.emitResult(
             SearchContentResult.Result(
                 bookUrl = bookUrl,