Implement most gallery settings.

This commit is contained in:
NerdNumber9
2017-01-03 11:27:10 -05:00
parent caa1e1ef09
commit c836f52460
5 changed files with 145 additions and 7 deletions
@@ -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)
@@ -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<Any> = 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<Int, Source> = hashMapOf<Int, Source>().apply {
@@ -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<String, String> = HashMap()
val cookies: MutableMap<String, String> = 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<String?>()
//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?>): String {
return settings.filterNotNull().joinToString(separator = "-")
}
fun buildCookies(cookies: Map<String, String>)
= cookies.entries.map {