11package com.dessalines.thumbkey.ui.components.settings.lookandfeel
22
33import android.util.Log
4+ import androidx.compose.foundation.clickable
45import androidx.compose.foundation.layout.Column
56import androidx.compose.foundation.layout.fillMaxWidth
7+ import androidx.compose.foundation.layout.height
68import androidx.compose.foundation.layout.padding
79import androidx.compose.foundation.rememberScrollState
810import androidx.compose.foundation.verticalScroll
911import androidx.compose.material.icons.Icons
1012import androidx.compose.material.icons.outlined.*
1113import androidx.compose.material3.ExperimentalMaterial3Api
1214import androidx.compose.material3.Icon
15+ import androidx.compose.material3.ListItem
1316import androidx.compose.material3.OutlinedTextField
1417import androidx.compose.material3.Scaffold
1518import androidx.compose.material3.SnackbarHost
@@ -38,6 +41,7 @@ import com.dessalines.thumbkey.db.DEFAULT_AUTO_CAPITALIZE
3841import com.dessalines.thumbkey.db.DEFAULT_KEYBOARD_LAYOUT
3942import com.dessalines.thumbkey.db.DEFAULT_KEY_SIZE
4043import com.dessalines.thumbkey.db.DEFAULT_MIN_SWIPE_LENGTH
44+ import com.dessalines.thumbkey.db.DEFAULT_POSITION
4145import com.dessalines.thumbkey.db.DEFAULT_SOUND_ON_TAP
4246import com.dessalines.thumbkey.db.DEFAULT_THEME
4347import com.dessalines.thumbkey.db.DEFAULT_THEME_COLOR
@@ -48,6 +52,8 @@ import com.dessalines.thumbkey.utils.SimpleTopAppBar
4852import com.dessalines.thumbkey.utils.TAG
4953import com.dessalines.thumbkey.utils.ThemeColor
5054import com.dessalines.thumbkey.utils.ThemeMode
55+ import com.dessalines.thumbkey.utils.toBool
56+ import com.dessalines.thumbkey.utils.toInt
5157
5258@OptIn(ExperimentalMaterial3Api ::class )
5359@Composable
@@ -72,16 +78,16 @@ fun LookAndFeelActivity(
7278 (settings?.minSwipeLength ? : DEFAULT_MIN_SWIPE_LENGTH ).toFloat()
7379 )
7480 val positionState = rememberIntSettingState(
75- settings?.position ? : com.dessalines.thumbkey.db. DEFAULT_POSITION
81+ settings?.position ? : DEFAULT_POSITION
7682 )
7783 val autoCapitalizeState = rememberBooleanSettingState(
78- ((settings?.autoCapitalize ? : DEFAULT_AUTO_CAPITALIZE ) == 1 )
84+ ((settings?.autoCapitalize ? : DEFAULT_AUTO_CAPITALIZE ).toBool() )
7985 )
8086 val vibrateOnTapState = rememberBooleanSettingState(
81- ((settings?.vibrateOnTap ? : DEFAULT_VIBRATE_ON_TAP ) == 1 )
87+ ((settings?.vibrateOnTap ? : DEFAULT_VIBRATE_ON_TAP ).toBool() )
8288 )
8389 val soundOnTapState = rememberBooleanSettingState(
84- ((settings?.soundOnTap ? : DEFAULT_SOUND_ON_TAP ) == 1 )
90+ ((settings?.soundOnTap ? : DEFAULT_SOUND_ON_TAP ).toBool() )
8591 )
8692 val keyboardLayoutState = rememberIntSettingState(
8793 settings?.keyboardLayout ? : DEFAULT_KEYBOARD_LAYOUT
@@ -422,6 +428,35 @@ fun LookAndFeelActivity(
422428 )
423429 }
424430 )
431+ ListItem (
432+ modifier = Modifier
433+ .height(56 .dp)
434+ .clickable {
435+ resetAppSettingsToDefault(
436+ appSettingsViewModel,
437+ keySizeState,
438+ animationSpeedState,
439+ animationHelperSpeedState,
440+ minSwipeLengthState,
441+ positionState,
442+ autoCapitalizeState,
443+ vibrateOnTapState,
444+ soundOnTapState,
445+ keyboardLayoutState,
446+ themeState,
447+ themeColorState
448+ )
449+ },
450+ headlineText = {
451+ Text (" Reset to defaults" )
452+ },
453+ leadingContent = {
454+ Icon (
455+ imageVector = Icons .Outlined .ResetTv ,
456+ contentDescription = " TODO"
457+ )
458+ }
459+ )
425460 OutlinedTextField (
426461 modifier = Modifier
427462 .padding(16 .dp)
@@ -458,13 +493,55 @@ private fun updateAppSettings(
458493 animationHelperSpeed = animationHelperSpeedState.value.toInt(),
459494 minSwipeLength = minSwipeLengthState.value.toInt(),
460495 position = positionState.value,
461- autoCapitalize = autoCapitalizeState.value.compareTo( false ),
462- vibrateOnTap = vibrateOnTapState.value.compareTo( false ),
463- soundOnTap = soundOnTapState.value.compareTo( false ),
496+ autoCapitalize = autoCapitalizeState.value.toInt( ),
497+ vibrateOnTap = vibrateOnTapState.value.toInt( ),
498+ soundOnTap = soundOnTapState.value.toInt( ),
464499 keyboardLayout = keyboardLayoutState.value,
465500 theme = themeState.value,
466501 themeColor = themeColorState.value,
467502 viewedChangelog = appSettingsViewModel.appSettings.value?.viewedChangelog ? : 0
468503 )
469504 )
470505}
506+
507+ private fun resetAppSettingsToDefault (
508+ appSettingsViewModel : AppSettingsViewModel ,
509+ keySizeState : SettingValueState <Float >,
510+ animationSpeedState : SettingValueState <Float >,
511+ animationHelperSpeedState : SettingValueState <Float >,
512+ minSwipeLengthState : SettingValueState <Float >,
513+ positionState : SettingValueState <Int >,
514+ autoCapitalizeState : SettingValueState <Boolean >,
515+ vibrateOnTapState : SettingValueState <Boolean >,
516+ soundOnTapState : SettingValueState <Boolean >,
517+ keyboardLayoutState : SettingValueState <Int >,
518+ themeState : SettingValueState <Int >,
519+ themeColorState : SettingValueState <Int >
520+ ) {
521+ keySizeState.value = DEFAULT_KEY_SIZE .toFloat()
522+ animationSpeedState.value = DEFAULT_ANIMATION_SPEED .toFloat()
523+ animationHelperSpeedState.value = DEFAULT_ANIMATION_HELPER_SPEED .toFloat()
524+ minSwipeLengthState.value = DEFAULT_MIN_SWIPE_LENGTH .toFloat()
525+ positionState.value = DEFAULT_POSITION
526+ autoCapitalizeState.value = DEFAULT_AUTO_CAPITALIZE .toBool()
527+ vibrateOnTapState.value = DEFAULT_VIBRATE_ON_TAP .toBool()
528+ soundOnTapState.value = DEFAULT_SOUND_ON_TAP .toBool()
529+ keyboardLayoutState.value = DEFAULT_KEYBOARD_LAYOUT
530+ themeState.value = DEFAULT_THEME
531+ themeColorState.value = DEFAULT_THEME_COLOR
532+
533+ updateAppSettings(
534+ appSettingsViewModel,
535+ keySizeState,
536+ animationSpeedState,
537+ animationHelperSpeedState,
538+ minSwipeLengthState,
539+ positionState,
540+ autoCapitalizeState,
541+ vibrateOnTapState,
542+ soundOnTapState,
543+ keyboardLayoutState,
544+ themeState,
545+ themeColorState
546+ )
547+ }
0 commit comments