mirror of
https://git.mihon.tech/mihonapp/mihon
synced 2024-11-27 09:44:55 +03:00
Use view binding for sheets
This commit is contained in:
parent
4809d06d04
commit
dc43e41896
5 changed files with 95 additions and 134 deletions
|
@ -3,15 +3,13 @@ package eu.kanade.tachiyomi.ui.browse.source.browse
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
|
import android.view.LayoutInflater
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||||
import eu.davidea.flexibleadapter.items.IFlexible
|
import eu.davidea.flexibleadapter.items.IFlexible
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.databinding.SourceFilterSheetBinding
|
||||||
import eu.kanade.tachiyomi.util.view.inflate
|
|
||||||
import eu.kanade.tachiyomi.widget.SimpleNavigationView
|
import eu.kanade.tachiyomi.widget.SimpleNavigationView
|
||||||
import kotlinx.android.synthetic.main.source_filter_sheet.view.filter_btn
|
|
||||||
import kotlinx.android.synthetic.main.source_filter_sheet.view.reset_btn
|
|
||||||
|
|
||||||
class SourceFilterSheet(
|
class SourceFilterSheet(
|
||||||
activity: Activity,
|
activity: Activity,
|
||||||
|
@ -46,14 +44,15 @@ class SourceFilterSheet(
|
||||||
.setDisplayHeadersAtStartUp(true)
|
.setDisplayHeadersAtStartUp(true)
|
||||||
.setStickyHeaders(true)
|
.setStickyHeaders(true)
|
||||||
|
|
||||||
|
private val binding = SourceFilterSheetBinding.inflate(LayoutInflater.from(context), null, false)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
recycler.adapter = adapter
|
recycler.adapter = adapter
|
||||||
recycler.setHasFixedSize(true)
|
recycler.setHasFixedSize(true)
|
||||||
val view = inflate(R.layout.source_filter_sheet)
|
(binding.root.getChildAt(1) as ViewGroup).addView(recycler)
|
||||||
((view as ViewGroup).getChildAt(1) as ViewGroup).addView(recycler)
|
addView(binding.root)
|
||||||
addView(view)
|
binding.filterBtn.setOnClickListener { onFilterClicked() }
|
||||||
filter_btn.setOnClickListener { onFilterClicked() }
|
binding.resetBtn.setOnClickListener { onResetClicked() }
|
||||||
reset_btn.setOnClickListener { onResetClicked() }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +1,14 @@
|
||||||
package eu.kanade.tachiyomi.ui.reader
|
package eu.kanade.tachiyomi.ui.reader
|
||||||
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.SeekBar
|
import android.widget.SeekBar
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import eu.kanade.tachiyomi.R
|
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
|
import eu.kanade.tachiyomi.databinding.ReaderColorFilterSheetBinding
|
||||||
import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener
|
import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener
|
||||||
import eu.kanade.tachiyomi.widget.SimpleSeekBarListener
|
import eu.kanade.tachiyomi.widget.SimpleSeekBarListener
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.brightness_seekbar
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.color_filter_mode
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.custom_brightness
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.seekbar_color_filter_alpha
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.seekbar_color_filter_blue
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.seekbar_color_filter_green
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.seekbar_color_filter_red
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.switch_color_filter
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.txt_brightness_seekbar_value
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.txt_color_filter_alpha_value
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.txt_color_filter_blue_value
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.txt_color_filter_green_value
|
|
||||||
import kotlinx.android.synthetic.main.reader_color_filter_sheet.txt_color_filter_red_value
|
|
||||||
import kotlinx.coroutines.flow.launchIn
|
import kotlinx.coroutines.flow.launchIn
|
||||||
import kotlinx.coroutines.flow.onEach
|
import kotlinx.coroutines.flow.onEach
|
||||||
import kotlinx.coroutines.flow.sample
|
import kotlinx.coroutines.flow.sample
|
||||||
|
@ -37,57 +23,58 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
|
|
||||||
private var sheetBehavior: BottomSheetBehavior<*>? = null
|
private var sheetBehavior: BottomSheetBehavior<*>? = null
|
||||||
|
|
||||||
init {
|
private val binding = ReaderColorFilterSheetBinding.inflate(activity.layoutInflater, null, false)
|
||||||
val view = activity.layoutInflater.inflate(R.layout.reader_color_filter_sheet, null)
|
|
||||||
setContentView(view)
|
|
||||||
|
|
||||||
sheetBehavior = BottomSheetBehavior.from(view.parent as ViewGroup)
|
init {
|
||||||
|
setContentView(binding.root)
|
||||||
|
|
||||||
|
sheetBehavior = BottomSheetBehavior.from(binding.root.parent as ViewGroup)
|
||||||
|
|
||||||
preferences.colorFilter().asFlow()
|
preferences.colorFilter().asFlow()
|
||||||
.onEach { setColorFilter(it, view) }
|
.onEach { setColorFilter(it) }
|
||||||
.launchIn(activity.scope)
|
.launchIn(activity.scope)
|
||||||
|
|
||||||
preferences.colorFilterMode().asFlow()
|
preferences.colorFilterMode().asFlow()
|
||||||
.onEach { setColorFilter(preferences.colorFilter().get(), view) }
|
.onEach { setColorFilter(preferences.colorFilter().get()) }
|
||||||
.launchIn(activity.scope)
|
.launchIn(activity.scope)
|
||||||
|
|
||||||
preferences.customBrightness().asFlow()
|
preferences.customBrightness().asFlow()
|
||||||
.onEach { setCustomBrightness(it, view) }
|
.onEach { setCustomBrightness(it) }
|
||||||
.launchIn(activity.scope)
|
.launchIn(activity.scope)
|
||||||
|
|
||||||
// Get color and update values
|
// Get color and update values
|
||||||
val color = preferences.colorFilterValue().get()
|
val color = preferences.colorFilterValue().get()
|
||||||
val brightness = preferences.customBrightnessValue().get()
|
val brightness = preferences.customBrightnessValue().get()
|
||||||
|
|
||||||
val argb = setValues(color, view)
|
val argb = setValues(color)
|
||||||
|
|
||||||
// Set brightness value
|
// Set brightness value
|
||||||
txt_brightness_seekbar_value.text = brightness.toString()
|
binding.txtBrightnessSeekbarValue.text = brightness.toString()
|
||||||
brightness_seekbar.progress = brightness
|
binding.brightnessSeekbar.progress = brightness
|
||||||
|
|
||||||
// Initialize seekBar progress
|
// Initialize seekBar progress
|
||||||
seekbar_color_filter_alpha.progress = argb[0]
|
binding.seekbarColorFilterAlpha.progress = argb[0]
|
||||||
seekbar_color_filter_red.progress = argb[1]
|
binding.seekbarColorFilterRed.progress = argb[1]
|
||||||
seekbar_color_filter_green.progress = argb[2]
|
binding.seekbarColorFilterGreen.progress = argb[2]
|
||||||
seekbar_color_filter_blue.progress = argb[3]
|
binding.seekbarColorFilterBlue.progress = argb[3]
|
||||||
|
|
||||||
// Set listeners
|
// Set listeners
|
||||||
switch_color_filter.isChecked = preferences.colorFilter().get()
|
binding.switchColorFilter.isChecked = preferences.colorFilter().get()
|
||||||
switch_color_filter.setOnCheckedChangeListener { _, isChecked ->
|
binding.switchColorFilter.setOnCheckedChangeListener { _, isChecked ->
|
||||||
preferences.colorFilter().set(isChecked)
|
preferences.colorFilter().set(isChecked)
|
||||||
}
|
}
|
||||||
|
|
||||||
custom_brightness.isChecked = preferences.customBrightness().get()
|
binding.customBrightness.isChecked = preferences.customBrightness().get()
|
||||||
custom_brightness.setOnCheckedChangeListener { _, isChecked ->
|
binding.customBrightness.setOnCheckedChangeListener { _, isChecked ->
|
||||||
preferences.customBrightness().set(isChecked)
|
preferences.customBrightness().set(isChecked)
|
||||||
}
|
}
|
||||||
|
|
||||||
color_filter_mode.onItemSelectedListener = IgnoreFirstSpinnerListener { position ->
|
binding.colorFilterMode.onItemSelectedListener = IgnoreFirstSpinnerListener { position ->
|
||||||
preferences.colorFilterMode().set(position)
|
preferences.colorFilterMode().set(position)
|
||||||
}
|
}
|
||||||
color_filter_mode.setSelection(preferences.colorFilterMode().get(), false)
|
binding.colorFilterMode.setSelection(preferences.colorFilterMode().get(), false)
|
||||||
|
|
||||||
seekbar_color_filter_alpha.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
binding.seekbarColorFilterAlpha.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
||||||
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
||||||
if (fromUser) {
|
if (fromUser) {
|
||||||
setColorValue(value, ALPHA_MASK, 24)
|
setColorValue(value, ALPHA_MASK, 24)
|
||||||
|
@ -95,7 +82,7 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
seekbar_color_filter_red.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
binding.seekbarColorFilterRed.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
||||||
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
||||||
if (fromUser) {
|
if (fromUser) {
|
||||||
setColorValue(value, RED_MASK, 16)
|
setColorValue(value, RED_MASK, 16)
|
||||||
|
@ -103,7 +90,7 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
seekbar_color_filter_green.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
binding.seekbarColorFilterGreen.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
||||||
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
||||||
if (fromUser) {
|
if (fromUser) {
|
||||||
setColorValue(value, GREEN_MASK, 8)
|
setColorValue(value, GREEN_MASK, 8)
|
||||||
|
@ -111,7 +98,7 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
seekbar_color_filter_blue.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
binding.seekbarColorFilterBlue.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
||||||
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
||||||
if (fromUser) {
|
if (fromUser) {
|
||||||
setColorValue(value, BLUE_MASK, 0)
|
setColorValue(value, BLUE_MASK, 0)
|
||||||
|
@ -119,7 +106,7 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
brightness_seekbar.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
binding.brightnessSeekbar.setOnSeekBarChangeListener(object : SimpleSeekBarListener() {
|
||||||
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
override fun onProgressChanged(seekBar: SeekBar, value: Int, fromUser: Boolean) {
|
||||||
if (fromUser) {
|
if (fromUser) {
|
||||||
preferences.customBrightnessValue().set(value)
|
preferences.customBrightnessValue().set(value)
|
||||||
|
@ -137,40 +124,37 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
/**
|
/**
|
||||||
* Set enabled status of seekBars belonging to color filter
|
* Set enabled status of seekBars belonging to color filter
|
||||||
* @param enabled determines if seekBar gets enabled
|
* @param enabled determines if seekBar gets enabled
|
||||||
* @param view view of the dialog
|
|
||||||
*/
|
*/
|
||||||
private fun setColorFilterSeekBar(enabled: Boolean, view: View) = with(view) {
|
private fun setColorFilterSeekBar(enabled: Boolean) {
|
||||||
seekbar_color_filter_red.isEnabled = enabled
|
binding.seekbarColorFilterRed.isEnabled = enabled
|
||||||
seekbar_color_filter_green.isEnabled = enabled
|
binding.seekbarColorFilterGreen.isEnabled = enabled
|
||||||
seekbar_color_filter_blue.isEnabled = enabled
|
binding.seekbarColorFilterBlue.isEnabled = enabled
|
||||||
seekbar_color_filter_alpha.isEnabled = enabled
|
binding.seekbarColorFilterAlpha.isEnabled = enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set enabled status of seekBars belonging to custom brightness
|
* Set enabled status of seekBars belonging to custom brightness
|
||||||
* @param enabled value which determines if seekBar gets enabled
|
* @param enabled value which determines if seekBar gets enabled
|
||||||
* @param view view of the dialog
|
|
||||||
*/
|
*/
|
||||||
private fun setCustomBrightnessSeekBar(enabled: Boolean, view: View) = with(view) {
|
private fun setCustomBrightnessSeekBar(enabled: Boolean) {
|
||||||
brightness_seekbar.isEnabled = enabled
|
binding.brightnessSeekbar.isEnabled = enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the text value's of color filter
|
* Set the text value's of color filter
|
||||||
* @param color integer containing color information
|
* @param color integer containing color information
|
||||||
* @param view view of the dialog
|
|
||||||
*/
|
*/
|
||||||
fun setValues(color: Int, view: View): Array<Int> {
|
fun setValues(color: Int): Array<Int> {
|
||||||
val alpha = getAlphaFromColor(color)
|
val alpha = getAlphaFromColor(color)
|
||||||
val red = getRedFromColor(color)
|
val red = getRedFromColor(color)
|
||||||
val green = getGreenFromColor(color)
|
val green = getGreenFromColor(color)
|
||||||
val blue = getBlueFromColor(color)
|
val blue = getBlueFromColor(color)
|
||||||
|
|
||||||
// Initialize values
|
// Initialize values
|
||||||
txt_color_filter_alpha_value.text = alpha.toString()
|
binding.txtColorFilterAlphaValue.text = alpha.toString()
|
||||||
txt_color_filter_red_value.text = red.toString()
|
binding.txtColorFilterRedValue.text = red.toString()
|
||||||
txt_color_filter_green_value.text = green.toString()
|
binding.txtColorFilterGreenValue.text = green.toString()
|
||||||
txt_color_filter_blue_value.text = blue.toString()
|
binding.txtColorFilterBlueValue.text = blue.toString()
|
||||||
|
|
||||||
return arrayOf(alpha, red, green, blue)
|
return arrayOf(alpha, red, green, blue)
|
||||||
}
|
}
|
||||||
|
@ -178,18 +162,17 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
/**
|
/**
|
||||||
* Manages the custom brightness value subscription
|
* Manages the custom brightness value subscription
|
||||||
* @param enabled determines if the subscription get (un)subscribed
|
* @param enabled determines if the subscription get (un)subscribed
|
||||||
* @param view view of the dialog
|
|
||||||
*/
|
*/
|
||||||
private fun setCustomBrightness(enabled: Boolean, view: View) {
|
private fun setCustomBrightness(enabled: Boolean) {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
preferences.customBrightnessValue().asFlow()
|
preferences.customBrightnessValue().asFlow()
|
||||||
.sample(100)
|
.sample(100)
|
||||||
.onEach { setCustomBrightnessValue(it, view) }
|
.onEach { setCustomBrightnessValue(it) }
|
||||||
.launchIn(activity.scope)
|
.launchIn(activity.scope)
|
||||||
} else {
|
} else {
|
||||||
setCustomBrightnessValue(0, view, true)
|
setCustomBrightnessValue(0, true)
|
||||||
}
|
}
|
||||||
setCustomBrightnessSeekBar(enabled, view)
|
setCustomBrightnessSeekBar(enabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -198,34 +181,32 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
* From 1 to 100 it sets that value as brightness.
|
* From 1 to 100 it sets that value as brightness.
|
||||||
* 0 sets system brightness and hides the overlay.
|
* 0 sets system brightness and hides the overlay.
|
||||||
*/
|
*/
|
||||||
private fun setCustomBrightnessValue(value: Int, view: View, isDisabled: Boolean = false) = with(view) {
|
private fun setCustomBrightnessValue(value: Int, isDisabled: Boolean = false) {
|
||||||
if (!isDisabled) {
|
if (!isDisabled) {
|
||||||
txt_brightness_seekbar_value.text = value.toString()
|
binding.txtBrightnessSeekbarValue.text = value.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manages the color filter value subscription
|
* Manages the color filter value subscription
|
||||||
* @param enabled determines if the subscription get (un)subscribed
|
* @param enabled determines if the subscription get (un)subscribed
|
||||||
* @param view view of the dialog
|
|
||||||
*/
|
*/
|
||||||
private fun setColorFilter(enabled: Boolean, view: View) {
|
private fun setColorFilter(enabled: Boolean) {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
preferences.colorFilterValue().asFlow()
|
preferences.colorFilterValue().asFlow()
|
||||||
.sample(100)
|
.sample(100)
|
||||||
.onEach { setColorFilterValue(it, view) }
|
.onEach { setColorFilterValue(it) }
|
||||||
.launchIn(activity.scope)
|
.launchIn(activity.scope)
|
||||||
}
|
}
|
||||||
setColorFilterSeekBar(enabled, view)
|
setColorFilterSeekBar(enabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the color filter overlay of the screen. Determined by HEX of integer
|
* Sets the color filter overlay of the screen. Determined by HEX of integer
|
||||||
* @param color hex of color.
|
* @param color hex of color.
|
||||||
* @param view view of the dialog
|
|
||||||
*/
|
*/
|
||||||
private fun setColorFilterValue(@ColorInt color: Int, view: View) = with(view) {
|
private fun setColorFilterValue(@ColorInt color: Int) {
|
||||||
setValues(color, view)
|
setValues(color)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -245,7 +226,7 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
* @param color color hex as int
|
* @param color color hex as int
|
||||||
* @return alpha of color
|
* @return alpha of color
|
||||||
*/
|
*/
|
||||||
fun getAlphaFromColor(color: Int): Int {
|
private fun getAlphaFromColor(color: Int): Int {
|
||||||
return color shr 24 and 0xFF
|
return color shr 24 and 0xFF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,7 +235,7 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
* @param color color hex as int
|
* @param color color hex as int
|
||||||
* @return red of color
|
* @return red of color
|
||||||
*/
|
*/
|
||||||
fun getRedFromColor(color: Int): Int {
|
private fun getRedFromColor(color: Int): Int {
|
||||||
return color shr 16 and 0xFF
|
return color shr 16 and 0xFF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,7 +244,7 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
* @param color color hex as int
|
* @param color color hex as int
|
||||||
* @return green of color
|
* @return green of color
|
||||||
*/
|
*/
|
||||||
fun getGreenFromColor(color: Int): Int {
|
private fun getGreenFromColor(color: Int): Int {
|
||||||
return color shr 8 and 0xFF
|
return color shr 8 and 0xFF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -272,7 +253,7 @@ class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheet
|
||||||
* @param color color hex as int
|
* @param color color hex as int
|
||||||
* @return blue of color
|
* @return blue of color
|
||||||
*/
|
*/
|
||||||
fun getBlueFromColor(color: Int): Int {
|
private fun getBlueFromColor(color: Int): Int {
|
||||||
return color and 0xFF
|
return color and 0xFF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,11 +5,9 @@ import android.view.ViewGroup
|
||||||
import com.afollestad.materialdialogs.MaterialDialog
|
import com.afollestad.materialdialogs.MaterialDialog
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
|
import eu.kanade.tachiyomi.databinding.ReaderPageSheetBinding
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
|
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
|
||||||
import kotlinx.android.synthetic.main.reader_page_sheet.save_layout
|
|
||||||
import kotlinx.android.synthetic.main.reader_page_sheet.set_as_cover_layout
|
|
||||||
import kotlinx.android.synthetic.main.reader_page_sheet.share_layout
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sheet to show when a page is long clicked.
|
* Sheet to show when a page is long clicked.
|
||||||
|
@ -19,14 +17,14 @@ class ReaderPageSheet(
|
||||||
private val page: ReaderPage
|
private val page: ReaderPage
|
||||||
) : BottomSheetDialog(activity) {
|
) : BottomSheetDialog(activity) {
|
||||||
|
|
||||||
private val view = activity.layoutInflater.inflate(R.layout.reader_page_sheet, null)
|
private val binding = ReaderPageSheetBinding.inflate(activity.layoutInflater, null, false)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
setContentView(view)
|
setContentView(binding.root)
|
||||||
|
|
||||||
set_as_cover_layout.setOnClickListener { setAsCover() }
|
binding.setAsCoverLayout.setOnClickListener { setAsCover() }
|
||||||
share_layout.setOnClickListener { share() }
|
binding.shareLayout.setOnClickListener { share() }
|
||||||
save_layout.setOnClickListener { save() }
|
binding.saveLayout.setOnClickListener { save() }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
|
@ -9,30 +9,13 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.tfcporciuncula.flow.Preference
|
import com.tfcporciuncula.flow.Preference
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
|
import eu.kanade.tachiyomi.databinding.ReaderSettingsSheetBinding
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer
|
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
|
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
|
||||||
import eu.kanade.tachiyomi.util.view.gone
|
import eu.kanade.tachiyomi.util.view.gone
|
||||||
import eu.kanade.tachiyomi.util.view.invisible
|
import eu.kanade.tachiyomi.util.view.invisible
|
||||||
import eu.kanade.tachiyomi.util.view.visible
|
import eu.kanade.tachiyomi.util.view.visible
|
||||||
import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener
|
import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener
|
||||||
import kotlinx.android.synthetic.main.reader_settings_sheet.always_show_chapter_transition
|
|
||||||
import kotlinx.android.synthetic.main.reader_settings_sheet.background_color
|
|
||||||
import kotlinx.android.synthetic.main.reader_settings_sheet.crop_borders
|
|
||||||
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.navigation_prefs_group
|
|
||||||
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
|
|
||||||
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.tapping_inverted
|
|
||||||
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
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -42,11 +25,11 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
|
||||||
|
|
||||||
private val preferences by injectLazy<PreferencesHelper>()
|
private val preferences by injectLazy<PreferencesHelper>()
|
||||||
|
|
||||||
|
private val binding = ReaderSettingsSheetBinding.inflate(activity.layoutInflater, null, false)
|
||||||
|
|
||||||
init {
|
init {
|
||||||
// Use activity theme for this layout
|
|
||||||
val view = activity.layoutInflater.inflate(R.layout.reader_settings_sheet, null)
|
|
||||||
val scroll = NestedScrollView(activity)
|
val scroll = NestedScrollView(activity)
|
||||||
scroll.addView(view)
|
scroll.addView(binding.root)
|
||||||
setContentView(scroll)
|
setContentView(scroll)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +52,7 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
|
||||||
* Init general reader preferences.
|
* Init general reader preferences.
|
||||||
*/
|
*/
|
||||||
private fun initGeneralPreferences() {
|
private fun initGeneralPreferences() {
|
||||||
viewer.onItemSelectedListener = IgnoreFirstSpinnerListener { position ->
|
binding.viewer.onItemSelectedListener = IgnoreFirstSpinnerListener { position ->
|
||||||
activity.presenter.setMangaViewer(position)
|
activity.presenter.setMangaViewer(position)
|
||||||
|
|
||||||
val mangaViewer = activity.presenter.getMangaViewer()
|
val mangaViewer = activity.presenter.getMangaViewer()
|
||||||
|
@ -79,39 +62,39 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
|
||||||
initPagerPreferences()
|
initPagerPreferences()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
viewer.setSelection(activity.presenter.manga?.viewer ?: 0, false)
|
binding.viewer.setSelection(activity.presenter.manga?.viewer ?: 0, false)
|
||||||
|
|
||||||
rotation_mode.bindToPreference(preferences.rotation(), 1)
|
binding.rotationMode.bindToPreference(preferences.rotation(), 1)
|
||||||
background_color.bindToIntPreference(preferences.readerTheme(), R.array.reader_themes_values)
|
binding.backgroundColor.bindToIntPreference(preferences.readerTheme(), R.array.reader_themes_values)
|
||||||
show_page_number.bindToPreference(preferences.showPageNumber())
|
binding.showPageNumber.bindToPreference(preferences.showPageNumber())
|
||||||
fullscreen.bindToPreference(preferences.fullscreen())
|
binding.fullscreen.bindToPreference(preferences.fullscreen())
|
||||||
cutout_short.bindToPreference(preferences.cutoutShort())
|
binding.cutoutShort.bindToPreference(preferences.cutoutShort())
|
||||||
keepscreen.bindToPreference(preferences.keepScreenOn())
|
binding.keepscreen.bindToPreference(preferences.keepScreenOn())
|
||||||
long_tap.bindToPreference(preferences.readWithLongTap())
|
binding.longTap.bindToPreference(preferences.readWithLongTap())
|
||||||
always_show_chapter_transition.bindToPreference(preferences.alwaysShowChapterTransition())
|
binding.alwaysShowChapterTransition.bindToPreference(preferences.alwaysShowChapterTransition())
|
||||||
crop_borders.bindToPreference(preferences.cropBorders())
|
binding.cropBorders.bindToPreference(preferences.cropBorders())
|
||||||
page_transitions.bindToPreference(preferences.pageTransitions())
|
binding.pageTransitions.bindToPreference(preferences.pageTransitions())
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init the preferences for the pager reader.
|
* Init the preferences for the pager reader.
|
||||||
*/
|
*/
|
||||||
private fun initPagerPreferences() {
|
private fun initPagerPreferences() {
|
||||||
webtoon_prefs_group.invisible()
|
binding.webtoonPrefsGroup.invisible()
|
||||||
pager_prefs_group.visible()
|
binding.pagerPrefsGroup.visible()
|
||||||
|
|
||||||
scale_type.bindToPreference(preferences.imageScaleType(), 1)
|
binding.scaleType.bindToPreference(preferences.imageScaleType(), 1)
|
||||||
zoom_start.bindToPreference(preferences.zoomStart(), 1)
|
binding.zoomStart.bindToPreference(preferences.zoomStart(), 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init the preferences for the webtoon reader.
|
* Init the preferences for the webtoon reader.
|
||||||
*/
|
*/
|
||||||
private fun initWebtoonPreferences() {
|
private fun initWebtoonPreferences() {
|
||||||
pager_prefs_group.invisible()
|
binding.pagerPrefsGroup.invisible()
|
||||||
webtoon_prefs_group.visible()
|
binding.webtoonPrefsGroup.visible()
|
||||||
|
|
||||||
webtoon_side_padding.bindToIntPreference(preferences.webtoonSidePadding(), R.array.webtoon_side_padding_values)
|
binding.webtoonSidePadding.bindToIntPreference(preferences.webtoonSidePadding(), R.array.webtoon_side_padding_values)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -119,10 +102,10 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
|
||||||
*/
|
*/
|
||||||
private fun initNavigationPreferences() {
|
private fun initNavigationPreferences() {
|
||||||
if (!preferences.readWithTapping().get()) {
|
if (!preferences.readWithTapping().get()) {
|
||||||
navigation_prefs_group.gone()
|
binding.navigationPrefsGroup.gone()
|
||||||
}
|
}
|
||||||
|
|
||||||
tapping_inverted.bindToPreference(preferences.readWithTappingInverted())
|
binding.tappingInverted.bindToPreference(preferences.readWithTappingInverted())
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -244,8 +244,8 @@
|
||||||
<string name="pref_true_color">32-bit color</string>
|
<string name="pref_true_color">32-bit color</string>
|
||||||
<string name="pref_true_color_summary">Reduces banding, but impacts performance</string>
|
<string name="pref_true_color_summary">Reduces banding, but impacts performance</string>
|
||||||
<string name="pref_crop_borders">Crop borders</string>
|
<string name="pref_crop_borders">Crop borders</string>
|
||||||
<string name="pref_custom_brightness">Use custom brightness</string>
|
<string name="pref_custom_brightness">Custom brightness</string>
|
||||||
<string name="pref_custom_color_filter">Use custom color filter</string>
|
<string name="pref_custom_color_filter">Custom color filter</string>
|
||||||
<string name="pref_color_filter_mode">Color filter blend mode</string>
|
<string name="pref_color_filter_mode">Color filter blend mode</string>
|
||||||
<string name="filter_mode_default">Default</string>
|
<string name="filter_mode_default">Default</string>
|
||||||
<string name="filter_mode_overlay">Overlay</string>
|
<string name="filter_mode_overlay">Overlay</string>
|
||||||
|
|
Loading…
Reference in a new issue