[Ru]Add Filter (#5835)

This commit is contained in:
Eugene 2021-02-13 20:38:20 +05:00 committed by GitHub
parent 8a3473cd3b
commit 181c9225e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 23 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'MangaLib' extName = 'MangaLib'
pkgNameSuffix = 'ru.libmanga' pkgNameSuffix = 'ru.libmanga'
extClass = '.LibManga' extClass = '.LibManga'
extVersionCode = 30 extVersionCode = 31
libVersion = '1.2' libVersion = '1.2'
} }

View File

@ -297,14 +297,10 @@ class LibManga : ConfigurableSource, HttpSource() {
(if (filters.isEmpty()) getFilterList() else filters).forEach { filter -> (if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
when (filter) { when (filter) {
is CategoryList -> filter.state.forEach { category -> is CategoryList -> filter.state.forEach { category ->
if (category.state != Filter.TriState.STATE_IGNORE) { url.addQueryParameter("types[]", category.id)
url.addQueryParameter("types[]", category.id)
}
} }
is StatusList -> filter.state.forEach { status -> is StatusList -> filter.state.forEach { status ->
if (status.state != Filter.TriState.STATE_IGNORE) { url.addQueryParameter("status[]", status.id)
url.addQueryParameter("status[]", status.id)
}
} }
is GenreList -> filter.state.forEach { genre -> is GenreList -> filter.state.forEach { genre ->
if (genre.state != Filter.TriState.STATE_IGNORE) { if (genre.state != Filter.TriState.STATE_IGNORE) {
@ -313,7 +309,12 @@ class LibManga : ConfigurableSource, HttpSource() {
} }
is OrderBy -> { is OrderBy -> {
url.addQueryParameter("dir", if (filter.state!!.ascending) "asc" else "desc") url.addQueryParameter("dir", if (filter.state!!.ascending) "asc" else "desc")
url.addQueryParameter("sort", arrayOf("rate", "name", "views", "created_at", "chap_count")[filter.state!!.index]) url.addQueryParameter("sort", arrayOf("rate", "name", "views", "created_at", "last_chapter_at", "chap_count")[filter.state!!.index])
}
is AgeList -> filter.state.forEach { age ->
if (age.state) {
url.addQueryParameter("caution[]", age.id)
}
} }
} }
} }
@ -356,21 +357,24 @@ class LibManga : ConfigurableSource, HttpSource() {
} }
private class SearchFilter(name: String, val id: String) : Filter.TriState(name) private class SearchFilter(name: String, val id: String) : Filter.TriState(name)
private class CheckFilter(name: String, val id: String) : Filter.CheckBox(name)
private class CategoryList(categories: List<SearchFilter>) : Filter.Group<SearchFilter>("Категории", categories) private class CategoryList(categories: List<CheckFilter>) : Filter.Group<CheckFilter>("Тип", categories)
private class StatusList(statuses: List<SearchFilter>) : Filter.Group<SearchFilter>("Статус", statuses) private class StatusList(statuses: List<CheckFilter>) : Filter.Group<CheckFilter>("Статус перевода", statuses)
private class GenreList(genres: List<SearchFilter>) : Filter.Group<SearchFilter>("Жанры", genres) private class GenreList(genres: List<SearchFilter>) : Filter.Group<SearchFilter>("Жанры", genres)
private class AgeList(ages: List<CheckFilter>) : Filter.Group<CheckFilter>("Возрастное ограничение", ages)
override fun getFilterList() = FilterList( override fun getFilterList() = FilterList(
OrderBy(),
CategoryList(getCategoryList()), CategoryList(getCategoryList()),
StatusList(getStatusList()),
GenreList(getGenreList()), GenreList(getGenreList()),
OrderBy() StatusList(getStatusList()),
AgeList(getAgeList())
) )
private class OrderBy : Filter.Sort( private class OrderBy : Filter.Sort(
"Сортировка", "Сортировка",
arrayOf("Рейтинг", "Имя", "Просмотры", "Дата", "Кол-во глав"), arrayOf("Рейтинг", "Имя", "Просмотры", "Дате добавления", "Дате обновления", "Кол-во глав"),
Selection(0, false) Selection(0, false)
) )
@ -380,13 +384,13 @@ class LibManga : ConfigurableSource, HttpSource() {
* on /manga-list * on /manga-list
*/ */
private fun getCategoryList() = listOf( private fun getCategoryList() = listOf(
SearchFilter("Манга", "1"), CheckFilter("Манга", "1"),
SearchFilter("OEL-манга", "4"), CheckFilter("OEL-манга", "4"),
SearchFilter("Манхва", "5"), CheckFilter("Манхва", "5"),
SearchFilter("Маньхуа", "6"), CheckFilter("Маньхуа", "6"),
SearchFilter("Сингл", "7"), CheckFilter("Сингл", "7"),
SearchFilter("Руманга", "8"), CheckFilter("Руманга", "8"),
SearchFilter("Комикс западный", "9") CheckFilter("Комикс западный", "9")
) )
/* /*
@ -395,9 +399,10 @@ class LibManga : ConfigurableSource, HttpSource() {
* on /manga-list * on /manga-list
*/ */
private fun getStatusList() = listOf( private fun getStatusList() = listOf(
SearchFilter("Продолжается", "1"), CheckFilter("Продолжается", "1"),
SearchFilter("Завершен", "2"), CheckFilter("Завершен", "2"),
SearchFilter("Заморожен", "3") CheckFilter("Заморожен", "3"),
CheckFilter("Заброшен", "4")
) )
/* /*
@ -455,6 +460,11 @@ class LibManga : ConfigurableSource, HttpSource() {
SearchFilter("яой", "74") SearchFilter("яой", "74")
) )
private fun getAgeList() = listOf(
CheckFilter("Отсутствует", "0"),
CheckFilter("16+", "1"),
CheckFilter("18+", "2")
)
companion object { companion object {
const val PREFIX_SLUG_SEARCH = "slug:" const val PREFIX_SLUG_SEARCH = "slug:"
private const val SERVER_PREF = "MangaLibImageServer" private const val SERVER_PREF = "MangaLibImageServer"