From 93c16093a64dc8365ddcec58982093c8a5586d42 Mon Sep 17 00:00:00 2001 From: Basara-Hatake <53382992+Basara-Hatake@users.noreply.github.com> Date: Wed, 3 Nov 2021 15:31:48 +0100 Subject: [PATCH] hbrowse add option to only show chapters (#9725) --- src/en/hbrowse/build.gradle | 2 +- .../tachiyomi/extension/en/hbrowse/HBrowse.kt | 47 +++++++++++++++++-- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/en/hbrowse/build.gradle b/src/en/hbrowse/build.gradle index a4bcf4768..f298f4b1a 100644 --- a/src/en/hbrowse/build.gradle +++ b/src/en/hbrowse/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'HBrowse' pkgNameSuffix = 'en.hbrowse' extClass = '.HBrowse' - extVersionCode = 6 + extVersionCode = 7 isNsfw = true } diff --git a/src/en/hbrowse/src/eu/kanade/tachiyomi/extension/en/hbrowse/HBrowse.kt b/src/en/hbrowse/src/eu/kanade/tachiyomi/extension/en/hbrowse/HBrowse.kt index 5dc426e72..b01055ecd 100644 --- a/src/en/hbrowse/src/eu/kanade/tachiyomi/extension/en/hbrowse/HBrowse.kt +++ b/src/en/hbrowse/src/eu/kanade/tachiyomi/extension/en/hbrowse/HBrowse.kt @@ -1,7 +1,12 @@ package eu.kanade.tachiyomi.extension.en.hbrowse +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.CheckBoxPreference +import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.Page @@ -10,17 +15,19 @@ import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json -import okhttp3.Response -import okhttp3.Request -import okhttp3.OkHttpClient import okhttp3.CookieJar import okhttp3.FormBody +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response import org.jsoup.nodes.Document import org.jsoup.nodes.Element +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy import java.io.IOException -class HBrowse : ParsedHttpSource() { +class HBrowse : ParsedHttpSource(), ConfigurableSource { override val name = "HBrowse" @@ -163,7 +170,7 @@ class HBrowse : ParsedHttpSource() { // Chapters - override fun chapterListSelector() = "h2:contains(read manga online) + table tr" + override fun chapterListSelector() = if (!hbrowseOnlyChapters()) "h2:contains(read manga online) + table tr" else "h2:contains(read manga online) + table tr:contains(chapter)" override fun chapterListParse(response: Response): List { return super.chapterListParse(response).reversed() @@ -222,4 +229,34 @@ class HBrowse : ParsedHttpSource() { ) private fun getAdvTriStateList(groupName: String, vals: List) = vals.map { AdvTriStateFilter(groupName, it) } + + // Preferences + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + + companion object { + private const val ONLYCHAPTERS_PREF_KEY = "HBROWSE_ONLYCHAPTERS" + private const val ONLYCHAPTERS_PREF_TITLE = "Only show chapters" + private const val ONLYCHAPTERS_PREF_SUMMARY = "Only show chapters and not the cover/final pages" + private const val ONLYCHAPTERS_PREF_DEFAULT_VALUE = false + } + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + val onlychaptersPref = CheckBoxPreference(screen.context).apply { + key = "${ONLYCHAPTERS_PREF_KEY}_$lang" + title = ONLYCHAPTERS_PREF_TITLE + summary = ONLYCHAPTERS_PREF_SUMMARY + setDefaultValue(ONLYCHAPTERS_PREF_DEFAULT_VALUE) + + setOnPreferenceChangeListener { _, newValue -> + val checkValue = newValue as Boolean + preferences.edit().putBoolean("${ONLYCHAPTERS_PREF_KEY}_$lang", checkValue).commit() + } + } + screen.addPreference(onlychaptersPref) + } + + private fun hbrowseOnlyChapters(): Boolean = preferences.getBoolean("${ONLYCHAPTERS_PREF_KEY}_$lang", ONLYCHAPTERS_PREF_DEFAULT_VALUE) }