diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
index eb919e17e..063f9bcf0 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
@@ -289,8 +289,6 @@ object PreferenceKeys {
const val mangaDexLowQualityCovers = "manga_dex_low_quality_covers"
- const val experimentalFeatures = "experimental_features"
-
const val dataSaver = "data_saver"
const val ignoreJpeg = "ignore_jpeg"
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 364acfd34..ff06e2ac9 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt
@@ -394,8 +394,6 @@ class PreferencesHelper(val context: Context) {
fun mangaDexLowQualityCovers() = flowPrefs.getBoolean(Keys.mangaDexLowQualityCovers, false)
- fun experimentalFeatures() = flowPrefs.getBoolean(Keys.experimentalFeatures, false)
-
fun dataSaver() = flowPrefs.getBoolean(Keys.dataSaver, false)
fun ignoreJpeg() = flowPrefs.getBoolean(Keys.ignoreJpeg, false)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt b/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt
index 5f582da04..b88024c77 100755
--- a/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/source/model/Page.kt
@@ -2,22 +2,25 @@ package eu.kanade.tachiyomi.source.model
import android.net.Uri
import eu.kanade.tachiyomi.network.ProgressListener
-import eu.kanade.tachiyomi.util.DataSaver
+import exh.util.DataSaver
import rx.subjects.Subject
open class Page(
val index: Int,
/* SY --> */
var /* SY <-- */ url: String = "",
+ /* SY --> var <-- SY */
imageUrl: String? = null,
@Transient var uri: Uri? = null // Deprecated but can't be deleted due to extensions
) : ProgressListener {
+ // SY -->
var imageUrl = imageUrl
get() {
if (field == null) return null
return DataSaver().compress(field!!)
}
+ // SY <--
val number: Int
get() = index + 1
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
index 33989634e..dec8598b8 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt
@@ -19,6 +19,7 @@ import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
import eu.kanade.tachiyomi.data.library.LibraryUpdateService.Target
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
+import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.network.NetworkHelper
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.SourceManager.Companion.DELEGATED_SOURCES
@@ -26,6 +27,7 @@ import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
import eu.kanade.tachiyomi.util.lang.launchUI
import eu.kanade.tachiyomi.util.preference.defaultValue
+import eu.kanade.tachiyomi.util.preference.editTextPreference
import eu.kanade.tachiyomi.util.preference.intListPreference
import eu.kanade.tachiyomi.util.preference.onChange
import eu.kanade.tachiyomi.util.preference.onClick
@@ -45,6 +47,7 @@ import kotlinx.coroutines.CoroutineStart
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
+import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.launch
import rx.Observable
import rx.android.schedulers.AndroidSchedulers
@@ -158,6 +161,77 @@ class SettingsAdvancedController : SettingsController() {
}
}
+ preferenceCategory {
+ titleRes = R.string.data_saver
+
+ switchPreference {
+ titleRes = R.string.data_saver
+ summaryRes = R.string.data_saver_summary
+ key = Keys.dataSaver
+ defaultValue = false
+ }
+
+ editTextPreference {
+ titleRes = R.string.data_saver_server
+ key = Keys.dataSaverServer
+ defaultValue = ""
+ summaryRes = R.string.data_saver_server_summary
+
+ preferences.dataSaver().asImmediateFlow { isVisible = it }
+ .launchIn(scope)
+ }
+
+ switchPreference {
+ titleRes = R.string.ignore_jpeg
+ key = Keys.ignoreJpeg
+ defaultValue = false
+
+ preferences.dataSaver().asImmediateFlow { isVisible = it }
+ .launchIn(scope)
+ }
+
+ switchPreference {
+ titleRes = R.string.ignore_gif
+ key = Keys.ignoreGif
+ defaultValue = true
+
+ preferences.dataSaver().asImmediateFlow { isVisible = it }
+ .launchIn(scope)
+ }
+
+ intListPreference {
+ titleRes = R.string.data_saver_image_quality
+ key = Keys.dataSaverImageQuality
+ entries = arrayOf("10", "20", "40", "50", "70", "80", "90", "95")
+ entryValues = entries
+ defaultValue = "80"
+ summaryRes = R.string.data_saver_image_quality_summary
+
+ preferences.dataSaver().asImmediateFlow { isVisible = it }
+ .launchIn(scope)
+ }
+
+ switchPreference {
+ titleRes = R.string.data_saver_image_format
+ key = Keys.dataSaverImageFormatJpeg
+ defaultValue = false
+ summaryOn = context.getString(R.string.data_saver_image_format_summary_on)
+ summaryOff = context.getString(R.string.data_saver_image_format_summary_off)
+
+ preferences.dataSaver().asImmediateFlow { isVisible = it }
+ .launchIn(scope)
+ }
+
+ switchPreference {
+ titleRes = R.string.data_saver_color_bw
+ key = Keys.dataSaverColorBW
+ defaultValue = false
+
+ preferences.dataSaver().asImmediateFlow { isVisible = it }
+ .launchIn(scope)
+ }
+ }
+
preferenceCategory {
titleRes = R.string.developer_tools
isPersistent = false
@@ -195,13 +269,6 @@ class SettingsAdvancedController : SettingsController() {
summary = context.getString(R.string.toggle_delegated_sources_summary, context.getString(R.string.app_name), DELEGATED_SOURCES.values.map { it.sourceName }.distinct().joinToString())
}
- switchPreference {
- titleRes = R.string.toggle_experimental_features
- key = Keys.experimentalFeatures
- defaultValue = false
- summary = context.getString(R.string.toggle_experimental_features_summary)
- }
-
intListPreference {
key = Keys.eh_logLevel
titleRes = R.string.log_level
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsExperimentalFeatures.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsExperimentalFeatures.kt
deleted file mode 100644
index c9cc10775..000000000
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsExperimentalFeatures.kt
+++ /dev/null
@@ -1,70 +0,0 @@
-package eu.kanade.tachiyomi.ui.setting
-
-import androidx.preference.PreferenceScreen
-import eu.kanade.tachiyomi.R
-import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
-import eu.kanade.tachiyomi.util.preference.defaultValue
-import eu.kanade.tachiyomi.util.preference.editTextPreference
-import eu.kanade.tachiyomi.util.preference.intListPreference
-import eu.kanade.tachiyomi.util.preference.preferenceCategory
-import eu.kanade.tachiyomi.util.preference.summaryRes
-import eu.kanade.tachiyomi.util.preference.switchPreference
-import eu.kanade.tachiyomi.util.preference.titleRes
-
-class SettingsExperimentalFeatures : SettingsController() {
-
- override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) {
- titleRes = R.string.expermental_feature_sttings
-
- preferenceCategory {
- titleRes = R.string.data_saver
- summaryRes = R.string.data_saver_summary
-
- switchPreference {
- titleRes = R.string.enable_data_saver
- key = Keys.dataSaver
- defaultValue = false
- }
-
- switchPreference {
- titleRes = R.string.ignore_jpeg
- key = Keys.ignoreJpeg
- defaultValue = false
- }
-
- switchPreference {
- titleRes = R.string.ignore_gif
- key = Keys.ignoreGif
- defaultValue = true
- }
-
- intListPreference {
- titleRes = R.string.data_saver_image_quality
- key = Keys.dataSaverImageQuality
- entries = arrayOf("10", "20", "40", "50", "70", "80", "90", "95")
- entryValues = entries
- defaultValue = "80"
- }
-
- switchPreference {
- titleRes = R.string.data_saver_image_format
- key = Keys.dataSaverImageFormatJpeg
- defaultValue = false
- summaryRes = R.string.data_saver_image_format_summary
- }
-
- switchPreference {
- titleRes = R.string.data_saver_color_bw
- key = Keys.dataSaverColorBW
- defaultValue = false
- }
-
- editTextPreference {
- titleRes = R.string.data_saver_server
- key = Keys.dataSaverServer
- defaultValue = ""
- summaryRes = R.string.data_saver_server_summary
- }
- }
- }
-}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt
index bf9ef6bb5..6d2de3a52 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsMainController.kt
@@ -80,7 +80,6 @@ class SettingsMainController : SettingsController() {
onClick { navigateTo(SettingsEhController()) }
}
}
-
// SY <--
preference {
iconRes = R.drawable.ic_code_24dp
@@ -88,15 +87,6 @@ class SettingsMainController : SettingsController() {
titleRes = R.string.pref_category_advanced
onClick { navigateTo(SettingsAdvancedController()) }
}
-
- if (preferences.experimentalFeatures().get()) {
- preference {
- iconRes = R.drawable.ic_code_24dp
- iconTint = tintColor
- titleRes = R.string.expermental_feature_sttings
- onClick { navigateTo(SettingsExperimentalFeatures()) }
- }
- }
}
private fun navigateTo(controller: SettingsController) {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/DataSaver.kt b/app/src/main/java/eu/kanade/tachiyomi/util/DataSaver.kt
deleted file mode 100644
index 70f162e94..000000000
--- a/app/src/main/java/eu/kanade/tachiyomi/util/DataSaver.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package eu.kanade.tachiyomi.util
-
-import eu.kanade.tachiyomi.data.preference.PreferencesHelper
-import uy.kohesive.injekt.injectLazy
-
-class DataSaver() {
-
- private val prefs: PreferencesHelper by injectLazy()
-
- fun compress(imageUrl: String): String {
- val server = prefs.dataSaverServer().get() + "/?"
- val format = "jpeg=${if (prefs.dataSaverImageFormatJpeg().get()) "1" else "0"}"
- val quality = "&l=${prefs.dataSaverImageQuality().get()}"
- val colorBW = "&bw=${if (prefs.dataSaverColorBW().get()) "1" else "0"}"
- val url = "$server$format$quality$colorBW&url="
- val ignoreJpeg: Boolean = prefs.ignoreJpeg().get()
- val ignoreGif: Boolean = prefs.ignoreGif().get()
- val dataSaverStatus: Boolean = prefs.dataSaver().get()
- var process = false
- var processedUrl = imageUrl
-
- if (dataSaverStatus) process = true
- if (imageUrl.contains(server)) process = false
- if (ignoreJpeg) {
- if (imageUrl.contains(".jpeg", true) || imageUrl.contains(".jpg", true)) process = false
- }
- if (ignoreGif) {
- if (imageUrl.contains(".gif", true)) process = false
- }
- if (process) processedUrl = url + imageUrl
-
- return processedUrl
- }
-}
diff --git a/app/src/main/java/exh/util/DataSaver.kt b/app/src/main/java/exh/util/DataSaver.kt
new file mode 100644
index 000000000..678780ca8
--- /dev/null
+++ b/app/src/main/java/exh/util/DataSaver.kt
@@ -0,0 +1,29 @@
+package exh.util
+
+import eu.kanade.tachiyomi.data.preference.PreferencesHelper
+import uy.kohesive.injekt.Injekt
+import uy.kohesive.injekt.api.get
+
+class DataSaver {
+ private val preferences: PreferencesHelper = Injekt.get()
+
+ fun compress(imageUrl: String): String {
+ return if (preferences.dataSaver().get() && preferences.dataSaverServer().get().isNotBlank() && !imageUrl.contains(preferences.dataSaverServer().get() + "/?")) {
+ when {
+ imageUrl.contains(".jpeg", true) || imageUrl.contains(".jpg", true) -> if (preferences.ignoreJpeg().get()) imageUrl else getUrl(imageUrl)
+ imageUrl.contains(".gif", true) -> if (preferences.ignoreGif().get()) imageUrl else getUrl(imageUrl)
+ else -> getUrl(imageUrl)
+ }
+ } else imageUrl
+ }
+
+ private fun getUrl(imageUrl: String): String {
+ val server = preferences.dataSaverServer().get() + "/?"
+ val format = "jpeg=${if (preferences.dataSaverImageFormatJpeg().get()) "1" else "0"}"
+ val quality = "&l=${preferences.dataSaverImageQuality().get()}"
+ val colorBW = "&bw=${if (preferences.dataSaverColorBW().get()) "1" else "0"}"
+ val url = "$server$format$quality$colorBW&url="
+
+ return url + imageUrl
+ }
+}
diff --git a/app/src/main/res/values/strings_sy.xml b/app/src/main/res/values/strings_sy.xml
index 5cddf2e40..a1cf46c15 100644
--- a/app/src/main/res/values/strings_sy.xml
+++ b/app/src/main/res/values/strings_sy.xml
@@ -32,7 +32,6 @@
All Sources
E-Hentai
Fork Settings
- Experimental Features
@@ -121,8 +120,6 @@
This is a experimental feature that will disable all hentai features if toggled off
Enable delegated sources
Apply %1$s enhancements to the following sources if they are installed: %2$s
- Show Experimental Features
- Show features that are experimental and not for normal users
Log level
Changing this can impact app performance. Force-restart app after changing. Current value: %s
Enable source blacklist
@@ -137,6 +134,18 @@
- Cleanup done. Removed %d folder
- Cleanup done. Removed %d folders
+ Data Saver
+ Compress images before downloading or loading in reader, requires a Bandwidth Hero Proxy server
+ Ignore Jpeg Images
+ Ignore Gif Animations
+ Image Quality
+ Higher values mean that a higher percentage of the image quality is saved, but it also means the file size is larger, 80 percent is a good median between file size and image quality
+ Compress to Jpeg
+ The Jpeg file size is considerably smaller then Webp is(meaning more data is saved), but it makes the images lose more quality as well.\nCurrently compresses to Jpeg
+ The Jpeg file size is considerably smaller then Webp is(meaning more data is saved), but it makes the images lose more quality as well.\nCurrently compresses to Webp
+ Convert to Black And White
+ Bandwidth Hero Proxy Server
+ Put Bandwidth Hero Proxy server url here
Minimal
@@ -469,18 +478,5 @@
- %2$s, %1$d pages
-
- Data Saver
- Compress images before downloading or loading in reader
- Enable Data Saver
- Ignore Jpeg Images
- Ignore Gif Animation
- Image Quality
- Compress to Jpeg
- Convert to Black And White
- Compresses to webp if this option is turned off
- Data Saver Server
- It uses Bandwidth Hero Proxy as Server.To use it you need to create a Bandwidth Hero server and give the server URL
-
\ No newline at end of file