mihon/app/src/main/java/eu/kanade/tachiyomi/widget/NegativeSeekBar.kt

71 lines
2.2 KiB
Kotlin
Raw Normal View History

package eu.kanade.tachiyomi.widget
import android.content.Context
2017-02-19 23:39:53 +01:00
import android.os.Parcelable
import android.util.AttributeSet
import android.widget.SeekBar
import androidx.appcompat.widget.AppCompatSeekBar
import eu.kanade.tachiyomi.R
2020-01-08 01:20:08 +01:00
import kotlin.math.abs
class NegativeSeekBar @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
2020-04-25 20:24:45 +02:00
AppCompatSeekBar(context, attrs) {
private var minValue: Int = 0
private var maxValue: Int = 0
private var listener: OnSeekBarChangeListener? = null
init {
val styledAttributes = context.obtainStyledAttributes(
2020-04-25 20:24:45 +02:00
attrs,
R.styleable.NegativeSeekBar, 0, 0
)
try {
setMinSeek(styledAttributes.getInt(R.styleable.NegativeSeekBar_min_seek, 0))
setMaxSeek(styledAttributes.getInt(R.styleable.NegativeSeekBar_max_seek, 0))
} finally {
styledAttributes.recycle()
}
super.setOnSeekBarChangeListener(object : OnSeekBarChangeListener {
override fun onProgressChanged(seekBar: SeekBar?, value: Int, fromUser: Boolean) {
2020-01-08 01:20:08 +01:00
listener?.onProgressChanged(seekBar, minValue + value, fromUser)
}
override fun onStartTrackingTouch(p0: SeekBar?) {
2020-01-08 01:20:08 +01:00
listener?.onStartTrackingTouch(p0)
}
override fun onStopTrackingTouch(p0: SeekBar?) {
2020-01-08 01:20:08 +01:00
listener?.onStopTrackingTouch(p0)
}
})
}
override fun setProgress(progress: Int) {
2020-01-08 01:20:08 +01:00
super.setProgress(abs(minValue) + progress)
}
fun setMinSeek(minValue: Int) {
this.minValue = minValue
max = (this.maxValue - this.minValue)
}
fun setMaxSeek(maxValue: Int) {
this.maxValue = maxValue
max = (this.maxValue - this.minValue)
}
override fun setOnSeekBarChangeListener(listener: OnSeekBarChangeListener?) {
this.listener = listener
}
2017-02-19 23:39:53 +01:00
override fun onRestoreInstanceState(state: Parcelable?) {
// We can't restore the progress from the saved state because it gets shifted.
val origProgress = progress
super.onRestoreInstanceState(state)
super.setProgress(origProgress)
}
2020-01-08 01:20:08 +01:00
}