diff --git a/lawnchair/res/layout/custom_seek_bar_preference.xml b/lawnchair/res/layout/custom_seek_bar_preference.xml
new file mode 100644
index 0000000000..9f640616ac
--- /dev/null
+++ b/lawnchair/res/layout/custom_seek_bar_preference.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lawnchair/res/values/attrs.xml b/lawnchair/res/values/attrs.xml
index d435b24dd7..82ebfa7ed9 100644
--- a/lawnchair/res/values/attrs.xml
+++ b/lawnchair/res/values/attrs.xml
@@ -3,5 +3,7 @@
+
+
\ No newline at end of file
diff --git a/lawnchair/res/xml/dock_settings.xml b/lawnchair/res/xml/dock_settings.xml
index 737b427422..781cb64e0a 100644
--- a/lawnchair/res/xml/dock_settings.xml
+++ b/lawnchair/res/xml/dock_settings.xml
@@ -23,7 +23,9 @@
android:key="pref_dock_label_size"
android:title="Label Size"
app:showSeekBarValue="true"
+ lawnchair:snapEvery="10"
lawnchair:minValue="50"
- lawnchair:maxValue="150" />
+ lawnchair:maxValue="150"
+ lawnchair:asPercentages="true" />
\ No newline at end of file
diff --git a/lawnchair/src/ch/deletescape/lawnchair/settings/ui/preferences/CustomSeekBarPreference.kt b/lawnchair/src/ch/deletescape/lawnchair/settings/ui/preferences/CustomSeekBarPreference.kt
index 2fef6a9ad5..75b559cb28 100644
--- a/lawnchair/src/ch/deletescape/lawnchair/settings/ui/preferences/CustomSeekBarPreference.kt
+++ b/lawnchair/src/ch/deletescape/lawnchair/settings/ui/preferences/CustomSeekBarPreference.kt
@@ -1,22 +1,35 @@
package ch.deletescape.lawnchair.settings.ui.preferences
import android.content.Context
+import android.os.Build
import android.util.AttributeSet
import android.util.Log
+import android.widget.SeekBar
+import android.widget.TextView
+import androidx.annotation.RequiresApi
import androidx.preference.Preference
import androidx.preference.PreferenceViewHolder
import androidx.preference.SeekBarPreference
import com.android.launcher3.R
-class CustomSeekBarPreference(context: Context, attrs: AttributeSet? = null) : SeekBarPreference(context, attrs), Preference.OnPreferenceChangeListener {
+class CustomSeekBarPreference(context: Context, attrs: AttributeSet? = null) : Preference(context, attrs), Preference.OnPreferenceChangeListener {
private val minValue: Int
private val maxValue: Int
+ private val snapEvery: Int
+ private val asPercentages: Boolean
+
+ private var displayedValue: Int = 0
+ private var realValue: Double = 0.0
init {
+ widgetLayoutResource = R.layout.custom_seek_bar_preference
+ layoutResource = R.layout.custom_seek_bar_preference
context.obtainStyledAttributes(attrs, R.styleable.CustomSeekBarPreference).apply {
- minValue = this.getInt(R.styleable.CustomSeekBarPreference_minValue, 10)
+ minValue = this.getInt(R.styleable.CustomSeekBarPreference_minValue, 0)
maxValue = this.getInt(R.styleable.CustomSeekBarPreference_maxValue, 100)
+ snapEvery = this.getInt(R.styleable.CustomSeekBarPreference_snapEvery, 1)
+ asPercentages = this.getBoolean(R.styleable.CustomSeekBarPreference_asPercentages, false)
recycle()
}
}
@@ -24,11 +37,32 @@ class CustomSeekBarPreference(context: Context, attrs: AttributeSet? = null) : S
override fun onBindViewHolder(view: PreferenceViewHolder?) {
super.onBindViewHolder(view)
onPreferenceChangeListener = this
- Log.i(null, "$minValue")
+
+ val seekBar: SeekBar = view?.findViewById(R.id.seek_bar) as SeekBar
+ val valueView: TextView = view.findViewById(R.id.value_view) as TextView
+
+ seekBar.max = (maxValue - minValue) / snapEvery
+
+ seekBar.setOnSeekBarChangeListener(object: SeekBar.OnSeekBarChangeListener {
+ override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
+ displayedValue = progress * snapEvery + minValue
+ realValue = if (asPercentages) displayedValue.toDouble() / 100 else displayedValue.toDouble()
+ valueView.text = if (asPercentages) "$displayedValue%" else "$displayedValue"
+ }
+
+ override fun onStartTrackingTouch(seekBar: SeekBar?) {
+
+ }
+
+ override fun onStopTrackingTouch(seekBar: SeekBar?) {
+
+ }
+
+ })
}
override fun onPreferenceChange(preference: Preference?, newValue: Any?): Boolean {
- TODO("Not yet implemented")
+ return true
}
}
\ No newline at end of file