This commit is contained in:
kunfei
2022-03-25 17:47:47 +08:00
parent bece7b4504
commit f2ed935766
2 changed files with 25 additions and 1 deletions
@@ -22,6 +22,7 @@ import io.legado.app.data.appDb
import io.legado.app.data.entities.Book import io.legado.app.data.entities.Book
import io.legado.app.data.entities.SearchKeyword import io.legado.app.data.entities.SearchKeyword
import io.legado.app.databinding.ActivityBookSearchBinding import io.legado.app.databinding.ActivityBookSearchBinding
import io.legado.app.lib.dialogs.alert
import io.legado.app.lib.theme.* import io.legado.app.lib.theme.*
import io.legado.app.ui.book.info.BookInfoActivity import io.legado.app.ui.book.info.BookInfoActivity
import io.legado.app.ui.book.source.manage.BookSourceActivity import io.legado.app.ui.book.source.manage.BookSourceActivity
@@ -71,6 +72,22 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
initOtherView() initOtherView()
initData() initData()
receiptIntent(intent) receiptIntent(intent)
viewModel.searchFinishCallback = {
if (it) {
val searchGroup = getPrefString("searchGroup")
if (!searchGroup.isNullOrEmpty()) {
alert(R.string.empty) {
setMessage("${searchGroup}分组搜索结果为空,是否切换到全部分组")
cancelButton()
okButton {
putPrefString("searchGroup", "")
viewModel.searchKey = ""
viewModel.search(searchView.query.toString())
}
}
}
}
}
} }
override fun onNewIntent(data: Intent?) { override fun onNewIntent(data: Intent?) {
@@ -126,6 +143,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
searchView.clearFocus() searchView.clearFocus()
query?.let { query?.let {
viewModel.saveSearchKey(query) viewModel.saveSearchKey(query)
viewModel.searchKey = ""
viewModel.search(it) viewModel.search(it)
} }
openOrCloseHistory(false) openOrCloseHistory(false)
@@ -235,7 +253,10 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
* 滚动到底部事件 * 滚动到底部事件
*/ */
private fun scrollToBottom() { private fun scrollToBottom() {
if (!viewModel.isLoading && viewModel.searchKey.isNotEmpty() && loadMoreView.hasMore) { if (viewModel.isSearchLiveData.value == false
&& viewModel.searchKey.isNotEmpty()
&& loadMoreView.hasMore
) {
viewModel.search("") viewModel.search("")
} }
} }
@@ -371,6 +392,7 @@ class SearchActivity : VMBaseActivity<ActivityBookSearchBinding, SearchViewModel
viewModel.deleteHistory(searchKeyword) viewModel.deleteHistory(searchKeyword)
} }
companion object { companion object {
fun start(context: Context, key: String?) { fun start(context: Context, key: String?) {
@@ -15,6 +15,7 @@ import kotlinx.coroutines.flow.flowOn
class SearchViewModel(application: Application) : BaseViewModel(application) { class SearchViewModel(application: Application) : BaseViewModel(application) {
private val searchModel = SearchModel(viewModelScope) private val searchModel = SearchModel(viewModelScope)
var searchFinishCallback: ((isEmpty: Boolean) -> Unit)? = null
var isSearchLiveData = MutableLiveData<Boolean>() var isSearchLiveData = MutableLiveData<Boolean>()
var searchKey: String = "" var searchKey: String = ""
private var searchID = 0L private var searchID = 0L
@@ -32,6 +33,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) {
override fun onSearchFinish(isEmpty: Boolean) { override fun onSearchFinish(isEmpty: Boolean) {
isSearchLiveData.postValue(false) isSearchLiveData.postValue(false)
searchFinishCallback?.invoke(isEmpty)
} }
override fun onSearchCancel() { override fun onSearchCancel() {