diff --git a/app/src/main/java/se/ajpanton/notificationsmaster/CardsLayoutFragment.kt b/app/src/main/java/se/ajpanton/notificationsmaster/CardsLayoutFragment.kt
index 43c03b5..6abeca6 100644
--- a/app/src/main/java/se/ajpanton/notificationsmaster/CardsLayoutFragment.kt
+++ b/app/src/main/java/se/ajpanton/notificationsmaster/CardsLayoutFragment.kt
@@ -2,10 +2,8 @@ package se.ajpanton.notificationsmaster
import android.os.Bundle
import android.view.View
-import android.widget.AdapterView
-import android.widget.ArrayAdapter
+import android.widget.Button
import android.widget.SeekBar
-import android.widget.Spinner
import android.widget.TextView
import androidx.fragment.app.Fragment
import com.google.android.material.switchmaterial.SwitchMaterial
@@ -50,10 +48,10 @@ class CardsLayoutFragment : Fragment(R.layout.fragment_cards_layout) {
currentSettings: (VisibilityPolicy) -> CardsGridSettings,
update: (VisibilityPolicy, CardsGridSettings) -> VisibilityPolicy,
) {
- controls.rows.bindNumbers(0..5, initial.maxRows) { value ->
+ controls.rows.bind(0..5, initial.maxRows) { value ->
save(currentSettings, update) { it.copy(maxRows = value) }
}
- controls.icons.bindNumbers(1..15, initial.maxIconsPerRow) { value ->
+ controls.icons.bind(1..15, initial.maxIconsPerRow) { value ->
save(currentSettings, update) { it.copy(maxIconsPerRow = value) }
}
controls.even.isChecked = initial.evenDistribution
@@ -90,48 +88,57 @@ class CardsLayoutFragment : Fragment(R.layout.fragment_cards_layout) {
}
}
- private fun Spinner.bindNumbers(range: IntRange, selected: Int, changed: (Int) -> Unit) {
+ private fun NumberStepper.bind(range: IntRange, selected: Int, changed: (Int) -> Unit) {
var current = selected
- adapter = ArrayAdapter(
- requireContext(),
- android.R.layout.simple_spinner_dropdown_item,
- range.map(Int::toString),
- )
- setSelection(selected - range.first, false)
- onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
- override fun onNothingSelected(parent: AdapterView<*>?) = Unit
- override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
- val value = range.first + position
- if (value != current) {
- current = value
- changed(value)
- }
+ fun show() {
+ value.text = current.toString()
+ minus.isEnabled = current > range.first
+ plus.isEnabled = current < range.last
+ }
+ fun step(amount: Int) {
+ val next = (current + amount).coerceIn(range)
+ if (next != current) {
+ current = next
+ show()
+ changed(next)
}
}
+ minus.setOnClickListener { step(-1) }
+ plus.setOnClickListener { step(1) }
+ show()
}
private fun controls(lockscreen: Boolean): Controls {
val b = binding!!
return if (lockscreen) b.lockscreenSettings.run {
Controls(
- lockscreenMaxRows,
- lockscreenMaxIcons,
+ NumberStepper(lockscreenMaxRowsMinus, lockscreenMaxRows, lockscreenMaxRowsPlus),
+ NumberStepper(lockscreenMaxIconsMinus, lockscreenMaxIcons, lockscreenMaxIconsPlus),
lockscreenEvenDistribution,
lockscreenLimitWidth,
lockscreenIconHeight,
lockscreenIconHeightValue,
)
} else b.aodSettings.run {
- Controls(aodMaxRows, aodMaxIcons, aodEvenDistribution, aodLimitWidth, aodIconHeight, aodIconHeightValue)
+ Controls(
+ NumberStepper(aodMaxRowsMinus, aodMaxRows, aodMaxRowsPlus),
+ NumberStepper(aodMaxIconsMinus, aodMaxIcons, aodMaxIconsPlus),
+ aodEvenDistribution,
+ aodLimitWidth,
+ aodIconHeight,
+ aodIconHeightValue,
+ )
}
}
private data class Controls(
- val rows: Spinner,
- val icons: Spinner,
+ val rows: NumberStepper,
+ val icons: NumberStepper,
val even: SwitchMaterial,
val limit: SwitchMaterial,
val height: SeekBar,
val heightValue: TextView,
)
+
+ private data class NumberStepper(val minus: Button, val value: TextView, val plus: Button)
}
diff --git a/app/src/main/res/layout/include_cards_grid_settings_aod.xml b/app/src/main/res/layout/include_cards_grid_settings_aod.xml
index bacc3e4..1498bbb 100644
--- a/app/src/main/res/layout/include_cards_grid_settings_aod.xml
+++ b/app/src/main/res/layout/include_cards_grid_settings_aod.xml
@@ -5,9 +5,17 @@
android:orientation="vertical">
-
+
+
+
+
+
-
+
+
+
+
+
diff --git a/app/src/main/res/layout/include_cards_grid_settings_lockscreen.xml b/app/src/main/res/layout/include_cards_grid_settings_lockscreen.xml
index 0829ff5..5430ef3 100644
--- a/app/src/main/res/layout/include_cards_grid_settings_lockscreen.xml
+++ b/app/src/main/res/layout/include_cards_grid_settings_lockscreen.xml
@@ -5,9 +5,17 @@
android:orientation="vertical">
-
+
+
+
+
+
-
+
+
+
+
+