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 26e25aa29..74f9c5a6e 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
@@ -51,7 +51,7 @@ object PreferenceKeys {
const val readWithVolumeKeysInverted = "reader_volume_keys_inverted"
- const val webtoonMarginRatio = "margin_ratio"
+ const val marginRatioWebtoon = "margin_ratio_webtoon"
const val portraitColumns = "pref_library_columns_portrait_key"
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 bb5be1c25..75bef0c5f 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
@@ -71,6 +71,8 @@ class PreferencesHelper(val context: Context) {
fun cropBordersWebtoon() = rxPrefs.getBoolean(Keys.cropBordersWebtoon, false)
+ fun marginRatioWebtoon() = rxPrefs.getFloat(Keys.marginRatioWebtoon, 0f)
+
fun readWithTapping() = rxPrefs.getBoolean(Keys.readWithTapping, true)
fun readWithLongTap() = rxPrefs.getBoolean(Keys.readWithLongTap, true)
@@ -79,8 +81,6 @@ class PreferencesHelper(val context: Context) {
fun readWithVolumeKeysInverted() = rxPrefs.getBoolean(Keys.readWithVolumeKeysInverted, false)
- fun marginRatio() = rxPrefs.getInteger(Keys.webtoonMarginRatio, 0)
-
fun portraitColumns() = rxPrefs.getInteger(Keys.portraitColumns, 0)
fun landscapeColumns() = rxPrefs.getInteger(Keys.landscapeColumns, 0)
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt
index 5f88b26fa..595668473 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt
@@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.ui.reader
import android.os.Bundle
+import android.support.annotation.ArrayRes
import android.support.design.widget.BottomSheetDialog
import android.support.v4.widget.NestedScrollView
import android.widget.CompoundButton
@@ -82,7 +83,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
private fun initWebtoonPreferences() {
webtoon_prefs_group.visible()
crop_borders_webtoon.bindToPreference(preferences.cropBordersWebtoon())
- margin_ratio_webtoon.bindToPreference(preferences.marginRatio())
+ margin_ratio_webtoon.bindToFloatPreference(preferences.marginRatioWebtoon(), R.array.webtoon_margin_ratio_values)
}
/**
@@ -103,4 +104,17 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
setSelection(pref.getOrDefault() - offset, false)
}
+ /**
+ * Binds a spinner to a float preference. The position of the spinner item must
+ * correlate with the [floatValues] resource item (in arrays.xml), which is a
+ * of float values that will be parsed here and applied to the preference.
+ */
+ private fun Spinner.bindToFloatPreference(pref: Preference, @ArrayRes floatValuesResource: Int) {
+ val floatValues = resources.getStringArray(floatValuesResource).map { it.toFloatOrNull() }
+ onItemSelectedListener = IgnoreFirstSpinnerListener { position ->
+ pref.set(floatValues[position])
+ }
+ setSelection(floatValues.indexOf(pref.getOrDefault()), false)
+ }
+
}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt
index 31ca89323..b26ea5144 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt
@@ -56,22 +56,8 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
preferences.readWithVolumeKeysInverted()
.register({ volumeKeysInverted = it })
- preferences.marginRatio()
- .register({ marginFromPreference(it) }, { imagePropertyChangedListener?.invoke() })
- }
-
- private fun marginFromPreference(position: Int) {
- marginRatio = when (position) {
- 1 -> PageMargin.TEN_PERCENT
- 2 -> PageMargin.TWENTY_FIVE_PERCENT
- else -> PageMargin.NO_MARGIN
- }
- }
-
- object PageMargin {
- const val NO_MARGIN = 0f
- const val TEN_PERCENT = 0.1f
- const val TWENTY_FIVE_PERCENT = 0.25f
+ preferences.marginRatioWebtoon()
+ .register({ marginRatio = it }, { imagePropertyChangedListener?.invoke() })
}
fun unsubscribe() {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
index e5958fdac..ceb9ee64c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
@@ -114,11 +114,12 @@ class SettingsReaderController : SettingsController() {
}
floatListPreference {
- key = Keys.webtoonMarginRatio
- titleRes = R.string.pref_reader_theme
+ key = Keys.marginRatioWebtoon
+ titleRes = R.string.pref_reader_margin
entriesRes = arrayOf(R.string.webtoon_margin_ratio_0,
- R.string.webtoon_margin_ratio_10, R.string.webtoon_margin_ratio_25)
- entryValues = arrayOf("0", "1", "2")
+ R.string.webtoon_margin_ratio_10, R.string.webtoon_margin_ratio_15,
+ R.string.webtoon_margin_ratio_20, R.string.webtoon_margin_ratio_25)
+ entryValues = arrayOf("0", "0.1", "0.15", "0.2", "0.25")
defaultValue = "0"
summary = "%s"
}
diff --git a/app/src/main/res/layout/reader_settings_sheet.xml b/app/src/main/res/layout/reader_settings_sheet.xml
index 12435ba18..04ebe2909 100644
--- a/app/src/main/res/layout/reader_settings_sheet.xml
+++ b/app/src/main/res/layout/reader_settings_sheet.xml
@@ -254,7 +254,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
- android:entries="@array/margin_ratio"
+ android:entries="@array/webtoon_margin_ratio"
app:layout_constraintLeft_toRightOf="@id/verticalcenter"
app:layout_constraintRight_toRightOf="@id/spinner_end"
app:layout_constraintTop_toBottomOf="@id/crop_borders_webtoon"/>
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 87e5710ff..feefd81b3 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -53,12 +53,22 @@
- @string/scale_type_smart_fit
-
+
- @string/webtoon_margin_ratio_0
- @string/webtoon_margin_ratio_10
+ - @string/webtoon_margin_ratio_15
+ - @string/webtoon_margin_ratio_20
- @string/webtoon_margin_ratio_25
+
+ - 0.0
+ - 0.1
+ - 0.15
+ - 0.2
+ - 0.25
+
+
- 1
- 2
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a42e9d4ed..6a261e6fc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -233,6 +233,8 @@
A
No margin
10%
+ 15%
+ 20%
25%