From c836f52460674ccfab7109f49ef4dd67829c0a8f Mon Sep 17 00:00:00 2001 From: NerdNumber9 Date: Tue, 3 Jan 2017 11:27:10 -0500 Subject: [PATCH] Implement most gallery settings. --- .../data/preference/PreferencesHelper.kt | 10 +++++ .../tachiyomi/data/source/SourceManager.kt | 14 ++++-- .../data/source/online/all/EHentai.kt | 43 ++++++++++++++++-- app/src/main/res/values/arrays.xml | 44 +++++++++++++++++++ app/src/main/res/xml/eh_pref_eh.xml | 41 ++++++++++++++++- 5 files changed, 145 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index 833454562..e6638a5da 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -149,6 +149,16 @@ class PreferencesHelper(val context: Context) { fun secureEXH() = rxPrefs.getBoolean("secure_exh", true) + fun imageQuality() = rxPrefs.getString("ehentai_quality", "auto") + + fun useHentaiAtHome() = rxPrefs.getBoolean("enable_hah", true) + + fun useJapaneseTitle() = rxPrefs.getBoolean("use_jp_title", false) + + fun ehSearchSize() = rxPrefs.getString("ex_search_size", "rc_0") + + fun thumbnailRows() = rxPrefs.getString("ex_thumb_rows", "tr_2") + //EH Cookies fun memberIdVal() = rxPrefs.getString("eh_ipb_member_id", null) fun passHashVal() = rxPrefs.getString("eh_ipb_pass_hash", null) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/source/SourceManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/source/SourceManager.kt index 7408072fb..7b9b82bff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/source/SourceManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/source/SourceManager.kt @@ -17,6 +17,7 @@ import eu.kanade.tachiyomi.data.source.online.russian.Mintmanga import eu.kanade.tachiyomi.data.source.online.russian.Readmanga import eu.kanade.tachiyomi.util.hasPermission import org.yaml.snakeyaml.Yaml +import rx.functions.Action1 import timber.log.Timber import uy.kohesive.injekt.injectLazy import java.io.File @@ -59,10 +60,17 @@ open class SourceManager(private val context: Context) { } init { - prefs.enableExhentai().asObservable().subscribe { - //Refresh sources when ExHentai enabled/disabled change - sourcesMap = createSources() + //Rebuild EH when settings change + val action: Action1 = Action1 { sourcesMap = createSources() } + + prefs.enableExhentai().asObservable().subscribe(action) + prefs.imageQuality().asObservable().subscribe (action) + prefs.useHentaiAtHome().asObservable().subscribe(action) + prefs.useJapaneseTitle().asObservable().subscribe { + action.call(null) } + prefs.ehSearchSize().asObservable().subscribe (action) + prefs.thumbnailRows().asObservable().subscribe(action) } private fun createSources(): Map = hashMapOf().apply { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/source/online/all/EHentai.kt b/app/src/main/java/eu/kanade/tachiyomi/data/source/online/all/EHentai.kt index bfea5ac71..307dc9441 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/source/online/all/EHentai.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/source/online/all/EHentai.kt @@ -28,7 +28,6 @@ class EHentai(override val id: Int, val exh: Boolean, val context: Context) : OnlineSource() { - val schema: String get() = if(prefs.secureEXH().getOrDefault()) "https" @@ -291,18 +290,56 @@ class EHentai(override val id: Int, } val cookiesHeader by lazy { - val cookies: MutableMap = HashMap() + val cookies: MutableMap = mutableMapOf() if(prefs.enableExhentai().getOrDefault()) { cookies.put(LoginActivity.MEMBER_ID_COOKIE, prefs.memberIdVal().getOrDefault()) cookies.put(LoginActivity.PASS_HASH_COOKIE, prefs.passHashVal().getOrDefault()) cookies.put(LoginActivity.IGNEOUS_COOKIE, prefs.igneousVal().getOrDefault()) } + + //Setup settings + val settings = mutableListOf() + //Image quality + settings.add(when(prefs.imageQuality() + .getOrDefault() + .toLowerCase()) { + "ovrs_2400" -> "xr_2400" + "ovrs_1600" -> "xr_1600" + "high" -> "xr_1280" + "med" -> "xr_980" + "low" -> "xr_780" + "auto" -> null + else -> null + }) + //Use Hentai@Home + settings.add(if(prefs.useHentaiAtHome().getOrDefault()) + null + else + "uh_n") + //Japanese titles + settings.add(if(prefs.useJapaneseTitle().getOrDefault()) + "tl_j" + else + null) + //Do not show popular right now pane as we can't parse it + settings.add("prn_n") + //Paging size + settings.add(prefs.ehSearchSize().getOrDefault()) + //Thumbnail rows + settings.add(prefs.thumbnailRows().getOrDefault()) + + cookies.put("uconfig", buildSettings(settings)) + buildCookies(cookies) } //Headers override fun headersBuilder() - = super.headersBuilder().add("Cookie", cookiesHeader)!! + = super.headersBuilder().add("Cookie", cookiesHeader)!! + + fun buildSettings(settings: List): String { + return settings.filterNotNull().joinToString(separator = "-") + } fun buildCookies(cookies: Map) = cookies.entries.map { diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 46f50d96c..b1ef3006a 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -196,4 +196,48 @@ pt + + + Auto + 2400x + 1600x + 1280x + 980x + 780x + + + auto + ovrs_2400 + ovrs_1600 + high + med + low + + + + 25 results + 50 results + 100 results + 200 results + + + rc_0 + rc_1 + rc_2 + rc_3 + + + + 4 + 10 (requires \'More Thumbs\' hath perk) + 20 (requires \'Thumbs Up\' hath perk) + 40 (requires \'All Thumbs\' hath perk) + + + tr_2 + tr_5 + tr_10 + tr_20 + + \ No newline at end of file diff --git a/app/src/main/res/xml/eh_pref_eh.xml b/app/src/main/res/xml/eh_pref_eh.xml index 85ff98603..c11714106 100644 --- a/app/src/main/res/xml/eh_pref_eh.xml +++ b/app/src/main/res/xml/eh_pref_eh.xml @@ -17,12 +17,51 @@ android:key="enable_exhentai" android:defaultValue="false" /> + + + + + android:summary="Use the HTTPS version of ExHentai. Uncheck if ExHentai is not working" /> + + + + + +