Browse Source

Add haptics to SliderItem

arkon 1 year ago
parent
commit
f79f0a7e97

+ 11 - 1
presentation-core/src/main/java/tachiyomi/presentation/core/components/SettingsItems.kt

@@ -40,6 +40,8 @@ import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.hapticfeedback.HapticFeedbackType
+import androidx.compose.ui.platform.LocalHapticFeedback
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.unit.dp
 import tachiyomi.core.preference.Preference
@@ -160,6 +162,8 @@ fun SliderItem(
     valueText: String,
     onChange: (Int) -> Unit,
 ) {
+    val haptic = LocalHapticFeedback.current
+
     Row(
         modifier = Modifier
             .fillMaxWidth()
@@ -180,7 +184,13 @@ fun SliderItem(
 
         Slider(
             value = value.toFloat(),
-            onValueChange = { onChange(it.toInt()) },
+            onValueChange = {
+                val newValue = it.toInt()
+                if (newValue != value) {
+                    onChange(newValue)
+                    haptic.performHapticFeedback(HapticFeedbackType.TextHandleMove)
+                }
+            },
             modifier = Modifier.weight(1.5f),
             valueRange = min.toFloat()..max.toFloat(),
             steps = max - min,