From 3aa346c764a720c92e134a89b8318aeefbada917 Mon Sep 17 00:00:00 2001 From: kunfei Date: Wed, 12 Oct 2022 22:10:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E6=B7=BB=E5=8A=A0=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E8=8C=83=E5=9B=B4=E5=8F=AF=E9=80=89=E6=8B=A9=E5=8D=95?= =?UTF-8?q?=E4=B8=AA=E4=B9=A6=E6=BA=90=E5=92=8C=E5=88=86=E7=BB=84,?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/help/config/AppConfig.kt | 6 +++ .../app/ui/book/search/SearchActivity.kt | 12 ++--- .../legado/app/ui/book/search/SearchScope.kt | 47 +++++++++++++------ .../app/ui/book/search/SearchViewModel.kt | 3 +- 4 files changed, 46 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index d56af3d46..9a1881340 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -342,6 +342,12 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener { val progressBarBehavior: String? get() = appCtx.getPrefString(PreferKey.progressBarBehavior, "page") + var searchScope: String + get() = appCtx.getPrefString("searchScope") ?: "" + set(value) { + appCtx.putPrefString("searchScope", value) + } + var searchGroup: String get() = appCtx.getPrefString("searchGroup") ?: "" set(value) { diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt index 5fad029d8..db70e209b 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchActivity.kt @@ -21,7 +21,6 @@ import io.legado.app.data.appDb import io.legado.app.data.entities.Book import io.legado.app.data.entities.SearchKeyword import io.legado.app.databinding.ActivityBookSearchBinding -import io.legado.app.help.IntentData import io.legado.app.help.config.AppConfig import io.legado.app.lib.dialogs.alert import io.legado.app.lib.theme.* @@ -260,11 +259,10 @@ class SearchActivity : VMBaseActivity(searchScopeKey)?.let { searchScope -> - viewModel.searchScope = searchScope - } + val searchScope = intent?.getStringExtra("searchScope") + searchScope?.let { + viewModel.searchScope.scope = searchScope + searchScopeAdapter.setItems(viewModel.searchScope.getShowNames()) } val key = intent?.getStringExtra("key") if (key.isNullOrBlank()) { @@ -296,6 +294,7 @@ class SearchActivity : VMBaseActivity? = null, - private val sources: List? = null -) { +@Suppress("unused") +data class SearchScope(var scope: String) { + + constructor(groups: List) : this(groups.joinToString(",")) + + constructor(source: BookSource) : this("${source.bookSourceName}::${source.bookSourceUrl}") + + override fun toString(): String { + return scope + } /** * 搜索范围显示 */ fun getShowNames(): List { val list = arrayListOf() - groups?.let { - list.addAll(it) - } - sources?.forEach { - list.add(it.bookSourceName) + if (scope.contains("::")) { + list.add(scope.substringBefore("::")) + } else { + scope.splitNotBlank(",").forEach { + list.add(it) + } } if (list.isEmpty()) { list.add("全部书源") @@ -33,18 +42,26 @@ data class SearchScope( */ fun getBookSources(): List { val list = hashSetOf() - sources?.let { - list.addAll(sources) - } - groups?.forEach { group -> - appDb.bookSourceDao.getEnabledByGroup(group).let { - list.addAll(it) + if (scope.contains("::")) { + scope.substringAfter("::").let { + appDb.bookSourceDao.getBookSource(it)?.let { source -> + list.add(source) + } + } + } else { + scope.splitNotBlank(",").forEach { + list.addAll(appDb.bookSourceDao.getByGroup(it)) } } if (list.isEmpty()) { + scope = "" return appDb.bookSourceDao.allEnabled } return list.sortedBy { it.customOrder } } + fun save() { + AppConfig.searchScope = scope + } + } diff --git a/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt b/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt index d09364e90..d502022b1 100644 --- a/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/search/SearchViewModel.kt @@ -7,6 +7,7 @@ import io.legado.app.base.BaseViewModel import io.legado.app.data.appDb import io.legado.app.data.entities.SearchBook import io.legado.app.data.entities.SearchKeyword +import io.legado.app.help.config.AppConfig import io.legado.app.model.webBook.SearchModel import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.channels.awaitClose @@ -34,7 +35,7 @@ class SearchViewModel(application: Application) : BaseViewModel(application) { }) var searchFinishCallback: ((isEmpty: Boolean) -> Unit)? = null var isSearchLiveData = MutableLiveData() - var searchScope: SearchScope = SearchScope() + var searchScope: SearchScope = SearchScope(AppConfig.searchScope) var searchKey: String = "" private var searchID = 0L private var searchFlowCallBack: ((searchBooks: ArrayList) -> Unit)? = null