DMZJ: default to single genre filter (#14552)
This commit is contained in:
parent
26beb51f44
commit
0c132a3a0d
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'DMZJ'
|
extName = 'DMZJ'
|
||||||
pkgNameSuffix = 'zh.dmzj'
|
pkgNameSuffix = 'zh.dmzj'
|
||||||
extClass = '.Dmzj'
|
extClass = '.Dmzj'
|
||||||
extVersionCode = 34
|
extVersionCode = 35
|
||||||
}
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
|
@ -116,7 +116,7 @@ class Dmzj : ConfigurableSource, HttpSource() {
|
||||||
val request = GET(ApiSearch.textSearchUrl(query), headers)
|
val request = GET(ApiSearch.textSearchUrl(query), headers)
|
||||||
Observable.fromCallable {
|
Observable.fromCallable {
|
||||||
// this API fails randomly, and might return empty list
|
// this API fails randomly, and might return empty list
|
||||||
repeat(8) {
|
repeat(5) {
|
||||||
val result = ApiSearch.parsePage(client.newCall(request).execute())
|
val result = ApiSearch.parsePage(client.newCall(request).execute())
|
||||||
if (result.mangas.isNotEmpty()) return@fromCallable result
|
if (result.mangas.isNotEmpty()) return@fromCallable result
|
||||||
}
|
}
|
||||||
|
@ -221,7 +221,7 @@ class Dmzj : ConfigurableSource, HttpSource() {
|
||||||
override fun imageUrlParse(response: Response) =
|
override fun imageUrlParse(response: Response) =
|
||||||
throw UnsupportedOperationException("This method should not be called!")
|
throw UnsupportedOperationException("This method should not be called!")
|
||||||
|
|
||||||
override fun getFilterList() = getFilterListInternal()
|
override fun getFilterList() = getFilterListInternal(preferences.isMultiGenreFilter)
|
||||||
|
|
||||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||||
getPreferencesInternal(screen.context, preferences).forEach(screen::addPreference)
|
getPreferencesInternal(screen.context, preferences).forEach(screen::addPreference)
|
||||||
|
|
|
@ -3,11 +3,11 @@ package eu.kanade.tachiyomi.extension.zh.dmzj
|
||||||
import eu.kanade.tachiyomi.source.model.Filter
|
import eu.kanade.tachiyomi.source.model.Filter
|
||||||
import eu.kanade.tachiyomi.source.model.FilterList
|
import eu.kanade.tachiyomi.source.model.FilterList
|
||||||
|
|
||||||
fun getFilterListInternal() = FilterList(
|
fun getFilterListInternal(isMultiGenre: Boolean) = FilterList(
|
||||||
RankingGroup(),
|
RankingGroup(),
|
||||||
Filter.Separator(),
|
Filter.Separator(),
|
||||||
Filter.Header("分类筛选(查看排行榜、搜索文本时无效)"),
|
Filter.Header("分类筛选(查看排行榜、搜索文本时无效)"),
|
||||||
GenreGroup(),
|
if (isMultiGenre) GenreGroup() else GenreSelectFilter(),
|
||||||
StatusFilter(),
|
StatusFilter(),
|
||||||
ReaderFilter(),
|
ReaderFilter(),
|
||||||
RegionFilter(),
|
RegionFilter(),
|
||||||
|
@ -77,6 +77,8 @@ fun parseFilters(filters: FilterList): String {
|
||||||
|
|
||||||
private interface TagFilter : UriPartFilter
|
private interface TagFilter : UriPartFilter
|
||||||
|
|
||||||
|
private class GenreSelectFilter : TagFilter, SelectFilter("题材", genres)
|
||||||
|
|
||||||
private class GenreGroup : TagFilter, Filter.Group<GenreFilter>(
|
private class GenreGroup : TagFilter, Filter.Group<GenreFilter>(
|
||||||
"题材(作品需包含勾选的所有项目)",
|
"题材(作品需包含勾选的所有项目)",
|
||||||
genres.drop(1).map { GenreFilter(it.first, it.second) }
|
genres.drop(1).map { GenreFilter(it.first, it.second) }
|
||||||
|
|
|
@ -28,6 +28,13 @@ fun getPreferencesInternal(context: Context, preferences: SharedPreferences) = a
|
||||||
setDefaultValue(false)
|
setDefaultValue(false)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
SwitchPreferenceCompat(context).apply {
|
||||||
|
key = MULTI_GENRE_FILTER_PREF
|
||||||
|
title = "分类筛选时允许勾选多个题材"
|
||||||
|
summary = "可以更精细地筛选出同时符合多个题材的作品。"
|
||||||
|
setDefaultValue(false)
|
||||||
|
},
|
||||||
|
|
||||||
MultiSelectListPreference(context).setupIdList(
|
MultiSelectListPreference(context).setupIdList(
|
||||||
LICENSED_LIST_PREF,
|
LICENSED_LIST_PREF,
|
||||||
"特殊漫画 ID 列表 (1)",
|
"特殊漫画 ID 列表 (1)",
|
||||||
|
@ -45,6 +52,8 @@ val SharedPreferences.imageQuality get() = getString(IMAGE_QUALITY_PREF, AUTO_RE
|
||||||
|
|
||||||
val SharedPreferences.showChapterComments get() = getBoolean(CHAPTER_COMMENTS_PREF, false)
|
val SharedPreferences.showChapterComments get() = getBoolean(CHAPTER_COMMENTS_PREF, false)
|
||||||
|
|
||||||
|
val SharedPreferences.isMultiGenreFilter get() = getBoolean(MULTI_GENRE_FILTER_PREF, false)
|
||||||
|
|
||||||
val SharedPreferences.licensedList: Set<String> get() = getStringSet(LICENSED_LIST_PREF, emptySet())!!
|
val SharedPreferences.licensedList: Set<String> get() = getStringSet(LICENSED_LIST_PREF, emptySet())!!
|
||||||
val SharedPreferences.hiddenList: Set<String> get() = getStringSet(HIDDEN_LIST_PREF, emptySet())!!
|
val SharedPreferences.hiddenList: Set<String> get() = getStringSet(HIDDEN_LIST_PREF, emptySet())!!
|
||||||
|
|
||||||
|
@ -82,6 +91,7 @@ const val ORIGINAL_RES = "ORIG_RES_ONLY"
|
||||||
const val LOW_RES = "LOW_RES_ONLY"
|
const val LOW_RES = "LOW_RES_ONLY"
|
||||||
|
|
||||||
private const val CHAPTER_COMMENTS_PREF = "chapterComments"
|
private const val CHAPTER_COMMENTS_PREF = "chapterComments"
|
||||||
|
private const val MULTI_GENRE_FILTER_PREF = "multiGenreFilter"
|
||||||
|
|
||||||
private const val LICENSED_LIST_PREF = "licensedList"
|
private const val LICENSED_LIST_PREF = "licensedList"
|
||||||
private const val HIDDEN_LIST_PREF = "hiddenList"
|
private const val HIDDEN_LIST_PREF = "hiddenList"
|
||||||
|
|
Loading…
Reference in New Issue