Skip to content

Commit e953d45

Browse files
authored
Adding reset to defaults button. Fixes #27 (#39)
1 parent 1af1877 commit e953d45

4 files changed

Lines changed: 92 additions & 10 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<activity
1313
android:name=".MainActivity"
1414
android:theme="@style/Theme.AppCompat.NoActionBar"
15+
android:windowSoftInputMode="adjustResize"
1516
android:exported="true">
1617
<intent-filter>
1718
<action android:name="android.intent.action.MAIN" />

app/src/main/java/com/dessalines/thumbkey/ui/components/keyboard/KeyboardScreen.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.dessalines.thumbkey.utils.KeyboardMode
2626
import com.dessalines.thumbkey.utils.KeyboardPosition
2727
import com.dessalines.thumbkey.utils.keyboardLayoutToModes
2828
import com.dessalines.thumbkey.utils.keyboardPositionToAlignment
29+
import com.dessalines.thumbkey.utils.toBool
2930

3031
@Composable
3132
fun KeyboardScreen(
@@ -55,9 +56,9 @@ fun KeyboardScreen(
5556
]
5657
)
5758

58-
val autoCapitalize = (settings?.autoCapitalize ?: DEFAULT_AUTO_CAPITALIZE) == 1
59-
val vibrateOnTap = (settings?.vibrateOnTap ?: DEFAULT_VIBRATE_ON_TAP) == 1
60-
val soundOnTap = (settings?.soundOnTap ?: DEFAULT_SOUND_ON_TAP) == 1
59+
val autoCapitalize = (settings?.autoCapitalize ?: DEFAULT_AUTO_CAPITALIZE).toBool()
60+
val vibrateOnTap = (settings?.vibrateOnTap ?: DEFAULT_VIBRATE_ON_TAP).toBool()
61+
val soundOnTap = (settings?.soundOnTap ?: DEFAULT_SOUND_ON_TAP).toBool()
6162

6263
Box(
6364
contentAlignment = alignment

app/src/main/java/com/dessalines/thumbkey/ui/components/settings/lookandfeel/LookAndFeelActivity.kt

Lines changed: 84 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package com.dessalines.thumbkey.ui.components.settings.lookandfeel
22

33
import android.util.Log
4+
import androidx.compose.foundation.clickable
45
import androidx.compose.foundation.layout.Column
56
import androidx.compose.foundation.layout.fillMaxWidth
7+
import androidx.compose.foundation.layout.height
68
import androidx.compose.foundation.layout.padding
79
import androidx.compose.foundation.rememberScrollState
810
import androidx.compose.foundation.verticalScroll
911
import androidx.compose.material.icons.Icons
1012
import androidx.compose.material.icons.outlined.*
1113
import androidx.compose.material3.ExperimentalMaterial3Api
1214
import androidx.compose.material3.Icon
15+
import androidx.compose.material3.ListItem
1316
import androidx.compose.material3.OutlinedTextField
1417
import androidx.compose.material3.Scaffold
1518
import androidx.compose.material3.SnackbarHost
@@ -38,6 +41,7 @@ import com.dessalines.thumbkey.db.DEFAULT_AUTO_CAPITALIZE
3841
import com.dessalines.thumbkey.db.DEFAULT_KEYBOARD_LAYOUT
3942
import com.dessalines.thumbkey.db.DEFAULT_KEY_SIZE
4043
import com.dessalines.thumbkey.db.DEFAULT_MIN_SWIPE_LENGTH
44+
import com.dessalines.thumbkey.db.DEFAULT_POSITION
4145
import com.dessalines.thumbkey.db.DEFAULT_SOUND_ON_TAP
4246
import com.dessalines.thumbkey.db.DEFAULT_THEME
4347
import com.dessalines.thumbkey.db.DEFAULT_THEME_COLOR
@@ -48,6 +52,8 @@ import com.dessalines.thumbkey.utils.SimpleTopAppBar
4852
import com.dessalines.thumbkey.utils.TAG
4953
import com.dessalines.thumbkey.utils.ThemeColor
5054
import 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+
}

app/src/main/java/com/dessalines/thumbkey/utils/Utils.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,3 +341,6 @@ fun openLink(url: String, ctx: Context) {
341341
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
342342
ctx.startActivity(intent)
343343
}
344+
345+
fun Int.toBool() = this == 1
346+
fun Boolean.toInt() = this.compareTo(false)

0 commit comments

Comments
 (0)