Option to only include pinned sources in global search

This commit is contained in:
arkon 2020-04-29 09:29:50 -04:00
parent 8077e421e6
commit fe65f4d6f8
5 changed files with 29 additions and 13 deletions

View File

@ -143,6 +143,8 @@ object PreferenceKeys {
const val alwaysShowChapterTransition = "always_show_chapter_transition"
const val searchPinnedSourcesOnly = "search_pinned_sources_only"
fun trackUsername(syncId: Int) = "pref_mangasync_username_$syncId"
fun trackPassword(syncId: Int) = "pref_mangasync_password_$syncId"

View File

@ -221,6 +221,8 @@ class PreferencesHelper(val context: Context) {
fun lastExtCheck() = flowPrefs.getLong("last_ext_check", 0)
fun searchPinnedSourcesOnly() = prefs.getBoolean(Keys.searchPinnedSourcesOnly, false)
fun hiddenCatalogues() = flowPrefs.getStringSet("hidden_catalogues", emptySet())
fun pinnedCatalogues() = flowPrefs.getStringSet("pinned_catalogues", emptySet())

View File

@ -114,21 +114,25 @@ open class GlobalSearchPresenter(
private fun getSourcesToQuery(): List<CatalogueSource> {
val filter = extensionFilter
val enabledSources = getEnabledSources()
if (filter.isNullOrEmpty()) {
return enabledSources
var filteredSources: List<CatalogueSource>? = null
if (!filter.isNullOrEmpty()) {
filteredSources = extensionManager.installedExtensions
.filter { it.pkgName == filter }
.flatMap { it.sources }
.filter { it in enabledSources }
.filterIsInstance<CatalogueSource>()
}
val filterSources = extensionManager.installedExtensions
.filter { it.pkgName == filter }
.flatMap { it.sources }
.filter { it in enabledSources }
.filterIsInstance<CatalogueSource>()
if (filterSources.isEmpty()) {
return enabledSources
if (filteredSources != null && filteredSources.isNotEmpty()) {
return filteredSources
}
return filterSources
val onlyPinnedSources = preferences.searchPinnedSourcesOnly()
val pinnedCatalogues = preferences.pinnedCatalogues().get()
return enabledSources
.filter { if (onlyPinnedSources) it.id.toString() in pinnedCatalogues else true }
}
/**

View File

@ -25,5 +25,10 @@ class SettingsBrowseController : SettingsController() {
true
}
}
switchPreference {
key = Keys.searchPinnedSourcesOnly
titleRes = R.string.pref_search_pinned_sources_only
defaultValue = false
}
}
}

View File

@ -212,7 +212,6 @@
<string name="ext_version_info">Version: %1$s</string>
<string name="ext_language_info">Language: %1$s</string>
<string name="ext_empty_preferences">No preferences to edit for this extension</string>
<string name="pref_enable_automatic_extension_updates">Check for extension updates</string>
<!-- Reader section -->
<string name="pref_fullscreen">Fullscreen</string>
@ -300,10 +299,14 @@
<string name="pref_download_new">Download new chapters</string>
<string name="pref_download_new_categories">Categories to include in download</string>
<!-- Sync section -->
<!-- Tracking section -->
<string name="pref_auto_update_manga_sync">Sync chapters after reading</string>
<string name="services">Services</string>
<!-- Browse section -->
<string name="pref_enable_automatic_extension_updates">Check for extension updates</string>
<string name="pref_search_pinned_sources_only">Only include pinned sources in global search</string>
<!-- Backup section -->
<string name="backup">Backup</string>
<string name="pref_create_backup">Create backup</string>