Merge branch 'feature/webtoon-margins' of git://github.com/jleehey/tachiyomi into jleehey-feature/webtoon-margins

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonPageHolder.kt
#	app/src/main/java/eu/kanade/tachiyomi/util/preference/PreferenceDSL.kt
#	app/src/main/res/values/strings.xml
This commit is contained in:
arkon
2020-04-10 11:14:09 -04:00
12 changed files with 119 additions and 1 deletions
@@ -4,6 +4,7 @@ import android.os.Build
import android.os.Bundle
import android.widget.CompoundButton
import android.widget.Spinner
import androidx.annotation.ArrayRes
import androidx.core.widget.NestedScrollView
import com.f2prateek.rx.preferences.Preference
import com.google.android.material.bottomsheet.BottomSheetDialog
@@ -23,6 +24,7 @@ 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
@@ -112,6 +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)
}
/**
@@ -131,4 +134,18 @@ 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)
}
}
@@ -37,6 +37,9 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
var alwaysShowChapterTransition = true
private set
var marginRatio = 0f
private set
init {
preferences.readWithTapping()
.register({ tappingEnabled = it })
@@ -58,6 +61,9 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) {
preferences.alwaysShowChapterTransition()
.register({ alwaysShowChapterTransition = it })
preferences.marginRatioWebtoon()
.register({ marginRatio = it }, { imagePropertyChangedListener?.invoke() })
}
fun unsubscribe() {
@@ -2,9 +2,11 @@ package eu.kanade.tachiyomi.ui.reader.viewer.webtoon
import android.annotation.SuppressLint
import android.content.Intent
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
@@ -128,6 +130,10 @@ class WebtoonPageHolder(
if (!viewer.isContinuous) {
bottomMargin = 15.dpToPx
}
val margin = Resources.getSystem().displayMetrics.widthPixels * viewer.config.marginRatio
marginEnd = margin.toInt()
marginStart = margin.toInt()
}
}
@@ -121,6 +121,8 @@ 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 {