Tweak webtoon margin setting
This commit is contained in:
@@ -24,7 +24,6 @@ import kotlinx.android.synthetic.main.reader_settings_sheet.cutout_short
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.fullscreen
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.keepscreen
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.long_tap
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.margin_ratio_webtoon
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.page_transitions
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.pager_prefs_group
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.rotation_mode
|
||||
@@ -32,6 +31,7 @@ import kotlinx.android.synthetic.main.reader_settings_sheet.scale_type
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.show_page_number
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.viewer
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.webtoon_prefs_group
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.webtoon_side_padding
|
||||
import kotlinx.android.synthetic.main.reader_settings_sheet.zoom_start
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
@@ -114,7 +114,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
|
||||
webtoon_prefs_group.visible()
|
||||
|
||||
crop_borders_webtoon.bindToPreference(preferences.cropBordersWebtoon())
|
||||
margin_ratio_webtoon.bindToFloatPreference(preferences.marginRatioWebtoon(), R.array.webtoon_margin_ratio_values)
|
||||
webtoon_side_padding.bindToIntPreference(preferences.webtoonSidePadding(), R.array.webtoon_side_padding_values)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -136,16 +136,15 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
* Binds a spinner to an int preference. The position of the spinner item must
|
||||
* correlate with the [intValues] resource item (in arrays.xml), which is a <string-array>
|
||||
* of int 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() }
|
||||
private fun Spinner.bindToIntPreference(pref: Preference<Int>, @ArrayRes intValuesResource: Int) {
|
||||
val intValues = resources.getStringArray(intValuesResource).map { it.toIntOrNull() }
|
||||
onItemSelectedListener = IgnoreFirstSpinnerListener { position ->
|
||||
pref.set(floatValues[position])
|
||||
pref.set(intValues[position])
|
||||
}
|
||||
setSelection(floatValues.indexOf(pref.getOrDefault()), false)
|
||||
setSelection(intValues.indexOf(pref.getOrDefault()), false)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
|
||||
var alwaysShowChapterTransition = true
|
||||
private set
|
||||
|
||||
var marginRatio = 0f
|
||||
var sidePadding = 0
|
||||
private set
|
||||
|
||||
init {
|
||||
@@ -62,8 +62,8 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
|
||||
preferences.alwaysShowChapterTransition()
|
||||
.register({ alwaysShowChapterTransition = it })
|
||||
|
||||
preferences.marginRatioWebtoon()
|
||||
.register({ marginRatio = it }, { imagePropertyChangedListener?.invoke() })
|
||||
preferences.webtoonSidePadding()
|
||||
.register({ sidePadding = it }, { imagePropertyChangedListener?.invoke() })
|
||||
}
|
||||
|
||||
fun unsubscribe() {
|
||||
|
||||
@@ -6,7 +6,6 @@ import android.content.res.Resources
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.net.Uri
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.ViewGroup.LayoutParams.MATCH_PARENT
|
||||
import android.view.ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
@@ -131,7 +130,7 @@ class WebtoonPageHolder(
|
||||
bottomMargin = 15.dpToPx
|
||||
}
|
||||
|
||||
val margin = Resources.getSystem().displayMetrics.widthPixels * viewer.config.marginRatio
|
||||
val margin = Resources.getSystem().displayMetrics.widthPixels * (viewer.config.sidePadding / 100f)
|
||||
marginEnd = margin.toInt()
|
||||
marginStart = margin.toInt()
|
||||
}
|
||||
|
||||
@@ -121,8 +121,6 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
|
||||
|
||||
frame.layoutParams = ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
|
||||
frame.addView(recycler)
|
||||
|
||||
config.imagePropertyChangedListener = { adapter.notifyDataSetChanged() }
|
||||
}
|
||||
|
||||
private fun checkAllowPreload(page: ReaderPage?): Boolean {
|
||||
@@ -288,10 +286,12 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
|
||||
|
||||
/**
|
||||
* Notifies adapter of changes around the current page to trigger a relayout in the recycler.
|
||||
* Used when a image configuration is changed.
|
||||
* Used when an image configuration is changed.
|
||||
*/
|
||||
private fun refreshAdapter() {
|
||||
val position = layoutManager.findLastEndVisibleItemPosition()
|
||||
adapter.notifyItemRangeChanged(max(0, position - 1), min(2, adapter.itemCount - position))
|
||||
adapter.notifyItemRangeChanged(
|
||||
max(0, position - 2),
|
||||
min(position + 2, adapter.itemCount - 1))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user