mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Bind the margin ratio as a float preference and rename variables
- Fixed the floatListPreference that was used in the SettingsReaderController - Created new extension for binding float preferences in the ReaderSettingsSheet - Renamed the ratio variables to include the `webtoon` naming
This commit is contained in:
		| @@ -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" | ||||
|  | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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 <string-array> | ||||
|      * of float values that will be parsed here and applied to the preference. | ||||
|      */ | ||||
|     private fun Spinner.bindToFloatPreference(pref: Preference<Float>, @ArrayRes floatValuesResource: Int) { | ||||
|         val floatValues = resources.getStringArray(floatValuesResource).map { it.toFloatOrNull() } | ||||
|         onItemSelectedListener = IgnoreFirstSpinnerListener { position -> | ||||
|             pref.set(floatValues[position]) | ||||
|         } | ||||
|         setSelection(floatValues.indexOf(pref.getOrDefault()), false) | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -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() { | ||||
|   | ||||
| @@ -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" | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user