Skip to content

Commit 11aaf07

Browse files
authored
Adding a push up / bottom offset setting. Fixes #28 (#40)
1 parent e953d45 commit 11aaf07

3 files changed

Lines changed: 75 additions & 4 deletions

File tree

app/src/main/java/com/dessalines/thumbkey/db/AppDb.kt

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const val DEFAULT_THEME_COLOR = 0
2525
const val DEFAULT_VIBRATE_ON_TAP = 1
2626
const val DEFAULT_SOUND_ON_TAP = 0
2727
const val DEFAULT_MIN_SWIPE_LENGTH = 40
28+
const val DEFAULT_PUSHUP_SIZE = 0
2829

2930
const val UPDATE_APP_CHANGELOG_UNVIEWED = "UPDATE AppSettings SET viewed_changelog = 0"
3031

@@ -90,7 +91,12 @@ data class AppSettings(
9091
name = "min_swipe_length",
9192
defaultValue = DEFAULT_MIN_SWIPE_LENGTH.toString()
9293
)
93-
val minSwipeLength: Int
94+
val minSwipeLength: Int,
95+
@ColumnInfo(
96+
name = "pushup_size",
97+
defaultValue = DEFAULT_PUSHUP_SIZE.toString()
98+
)
99+
val pushupSize: Int
94100
)
95101

96102
@Dao
@@ -132,8 +138,16 @@ val MIGRATION_1_2 = object : Migration(1, 2) {
132138
}
133139
}
134140

141+
val MIGRATION_2_3 = object : Migration(2, 3) {
142+
override fun migrate(database: SupportSQLiteDatabase) {
143+
database.execSQL(
144+
"alter table AppSettings add column pushup_size INTEGER NOT NULL default $DEFAULT_PUSHUP_SIZE"
145+
)
146+
}
147+
}
148+
135149
@Database(
136-
version = 2,
150+
version = 3,
137151
entities = [AppSettings::class],
138152
exportSchema = true
139153
)
@@ -157,7 +171,8 @@ abstract class AppDB : RoomDatabase() {
157171
)
158172
.allowMainThreadQueries()
159173
.addMigrations(
160-
MIGRATION_1_2
174+
MIGRATION_1_2,
175+
MIGRATION_2_3
161176
)
162177
// Necessary because it can't insert data on creation
163178
.addCallback(object : Callback() {

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import androidx.compose.runtime.mutableStateOf
99
import androidx.compose.runtime.remember
1010
import androidx.compose.runtime.setValue
1111
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.unit.dp
1213
import com.dessalines.thumbkey.db.AppSettings
1314
import com.dessalines.thumbkey.db.DEFAULT_ANIMATION_HELPER_SPEED
1415
import com.dessalines.thumbkey.db.DEFAULT_ANIMATION_SPEED
@@ -17,6 +18,7 @@ import com.dessalines.thumbkey.db.DEFAULT_KEYBOARD_LAYOUT
1718
import com.dessalines.thumbkey.db.DEFAULT_KEY_SIZE
1819
import com.dessalines.thumbkey.db.DEFAULT_MIN_SWIPE_LENGTH
1920
import com.dessalines.thumbkey.db.DEFAULT_POSITION
21+
import com.dessalines.thumbkey.db.DEFAULT_PUSHUP_SIZE
2022
import com.dessalines.thumbkey.db.DEFAULT_SOUND_ON_TAP
2123
import com.dessalines.thumbkey.db.DEFAULT_VIBRATE_ON_TAP
2224
import com.dessalines.thumbkey.keyboards.thumbkeyV4Keyboard
@@ -55,13 +57,16 @@ fun KeyboardScreen(
5557
?: DEFAULT_POSITION
5658
]
5759
)
60+
val pushupSizeDp = (settings?.pushupSize ?: DEFAULT_PUSHUP_SIZE).dp
5861

5962
val autoCapitalize = (settings?.autoCapitalize ?: DEFAULT_AUTO_CAPITALIZE).toBool()
6063
val vibrateOnTap = (settings?.vibrateOnTap ?: DEFAULT_VIBRATE_ON_TAP).toBool()
6164
val soundOnTap = (settings?.soundOnTap ?: DEFAULT_SOUND_ON_TAP).toBool()
6265

6366
Box(
64-
contentAlignment = alignment
67+
contentAlignment = alignment,
68+
modifier = Modifier
69+
.padding(bottom = pushupSizeDp)
6570
) {
6671
Column(
6772
modifier = Modifier

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

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import com.dessalines.thumbkey.db.DEFAULT_KEYBOARD_LAYOUT
4242
import com.dessalines.thumbkey.db.DEFAULT_KEY_SIZE
4343
import com.dessalines.thumbkey.db.DEFAULT_MIN_SWIPE_LENGTH
4444
import com.dessalines.thumbkey.db.DEFAULT_POSITION
45+
import com.dessalines.thumbkey.db.DEFAULT_PUSHUP_SIZE
4546
import com.dessalines.thumbkey.db.DEFAULT_SOUND_ON_TAP
4647
import com.dessalines.thumbkey.db.DEFAULT_THEME
4748
import com.dessalines.thumbkey.db.DEFAULT_THEME_COLOR
@@ -68,6 +69,9 @@ fun LookAndFeelActivity(
6869
val keySizeState = rememberFloatSettingState(
6970
(settings?.keySize ?: DEFAULT_KEY_SIZE).toFloat()
7071
)
72+
val pushupSizeState = rememberFloatSettingState(
73+
(settings?.pushupSize ?: DEFAULT_PUSHUP_SIZE).toFloat()
74+
)
7175
val animationSpeedState = rememberFloatSettingState(
7276
(settings?.animationSpeed ?: DEFAULT_ANIMATION_SPEED).toFloat()
7377
)
@@ -128,6 +132,7 @@ fun LookAndFeelActivity(
128132
updateAppSettings(
129133
appSettingsViewModel,
130134
keySizeState,
135+
pushupSizeState,
131136
animationSpeedState,
132137
animationHelperSpeedState,
133138
minSwipeLengthState,
@@ -157,6 +162,7 @@ fun LookAndFeelActivity(
157162
updateAppSettings(
158163
appSettingsViewModel,
159164
keySizeState,
165+
pushupSizeState,
160166
animationSpeedState,
161167
animationHelperSpeedState,
162168
minSwipeLengthState,
@@ -186,6 +192,7 @@ fun LookAndFeelActivity(
186192
updateAppSettings(
187193
appSettingsViewModel,
188194
keySizeState,
195+
pushupSizeState,
189196
animationSpeedState,
190197
animationHelperSpeedState,
191198
minSwipeLengthState,
@@ -215,6 +222,7 @@ fun LookAndFeelActivity(
215222
updateAppSettings(
216223
appSettingsViewModel,
217224
keySizeState,
225+
pushupSizeState,
218226
animationSpeedState,
219227
animationHelperSpeedState,
220228
minSwipeLengthState,
@@ -243,6 +251,7 @@ fun LookAndFeelActivity(
243251
updateAppSettings(
244252
appSettingsViewModel,
245253
keySizeState,
254+
pushupSizeState,
246255
animationSpeedState,
247256
animationHelperSpeedState,
248257
minSwipeLengthState,
@@ -271,6 +280,7 @@ fun LookAndFeelActivity(
271280
updateAppSettings(
272281
appSettingsViewModel,
273282
keySizeState,
283+
pushupSizeState,
274284
animationSpeedState,
275285
animationHelperSpeedState,
276286
minSwipeLengthState,
@@ -299,6 +309,7 @@ fun LookAndFeelActivity(
299309
updateAppSettings(
300310
appSettingsViewModel,
301311
keySizeState,
312+
pushupSizeState,
302313
animationSpeedState,
303314
animationHelperSpeedState,
304315
minSwipeLengthState,
@@ -328,6 +339,37 @@ fun LookAndFeelActivity(
328339
updateAppSettings(
329340
appSettingsViewModel,
330341
keySizeState,
342+
pushupSizeState,
343+
animationSpeedState,
344+
animationHelperSpeedState,
345+
minSwipeLengthState,
346+
positionState,
347+
autoCapitalizeState,
348+
vibrateOnTapState,
349+
soundOnTapState,
350+
keyboardLayoutState,
351+
themeState,
352+
themeColorState
353+
)
354+
}
355+
)
356+
SettingsSlider(
357+
valueRange = 0f..100f,
358+
state = pushupSizeState,
359+
icon = {
360+
Icon(
361+
imageVector = Icons.Outlined.VerticalAlignTop,
362+
contentDescription = "TODO"
363+
)
364+
},
365+
title = {
366+
Text(text = "Bottom Offset: ${pushupSizeState.value.toInt()}")
367+
},
368+
onValueChangeFinished = {
369+
updateAppSettings(
370+
appSettingsViewModel,
371+
keySizeState,
372+
pushupSizeState,
331373
animationSpeedState,
332374
animationHelperSpeedState,
333375
minSwipeLengthState,
@@ -357,6 +399,7 @@ fun LookAndFeelActivity(
357399
updateAppSettings(
358400
appSettingsViewModel,
359401
keySizeState,
402+
pushupSizeState,
360403
animationSpeedState,
361404
animationHelperSpeedState,
362405
minSwipeLengthState,
@@ -386,6 +429,7 @@ fun LookAndFeelActivity(
386429
updateAppSettings(
387430
appSettingsViewModel,
388431
keySizeState,
432+
pushupSizeState,
389433
animationSpeedState,
390434
animationHelperSpeedState,
391435
minSwipeLengthState,
@@ -415,6 +459,7 @@ fun LookAndFeelActivity(
415459
updateAppSettings(
416460
appSettingsViewModel,
417461
keySizeState,
462+
pushupSizeState,
418463
animationSpeedState,
419464
animationHelperSpeedState,
420465
minSwipeLengthState,
@@ -435,6 +480,7 @@ fun LookAndFeelActivity(
435480
resetAppSettingsToDefault(
436481
appSettingsViewModel,
437482
keySizeState,
483+
pushupSizeState,
438484
animationSpeedState,
439485
animationHelperSpeedState,
440486
minSwipeLengthState,
@@ -474,6 +520,7 @@ fun LookAndFeelActivity(
474520
private fun updateAppSettings(
475521
appSettingsViewModel: AppSettingsViewModel,
476522
keySizeState: SettingValueState<Float>,
523+
pushupSizeState: SettingValueState<Float>,
477524
animationSpeedState: SettingValueState<Float>,
478525
animationHelperSpeedState: SettingValueState<Float>,
479526
minSwipeLengthState: SettingValueState<Float>,
@@ -489,6 +536,7 @@ private fun updateAppSettings(
489536
AppSettings(
490537
id = 1,
491538
keySize = keySizeState.value.toInt(),
539+
pushupSize = pushupSizeState.value.toInt(),
492540
animationSpeed = animationSpeedState.value.toInt(),
493541
animationHelperSpeed = animationHelperSpeedState.value.toInt(),
494542
minSwipeLength = minSwipeLengthState.value.toInt(),
@@ -507,6 +555,7 @@ private fun updateAppSettings(
507555
private fun resetAppSettingsToDefault(
508556
appSettingsViewModel: AppSettingsViewModel,
509557
keySizeState: SettingValueState<Float>,
558+
pushupSizeState: SettingValueState<Float>,
510559
animationSpeedState: SettingValueState<Float>,
511560
animationHelperSpeedState: SettingValueState<Float>,
512561
minSwipeLengthState: SettingValueState<Float>,
@@ -519,6 +568,7 @@ private fun resetAppSettingsToDefault(
519568
themeColorState: SettingValueState<Int>
520569
) {
521570
keySizeState.value = DEFAULT_KEY_SIZE.toFloat()
571+
pushupSizeState.value = DEFAULT_PUSHUP_SIZE.toFloat()
522572
animationSpeedState.value = DEFAULT_ANIMATION_SPEED.toFloat()
523573
animationHelperSpeedState.value = DEFAULT_ANIMATION_HELPER_SPEED.toFloat()
524574
minSwipeLengthState.value = DEFAULT_MIN_SWIPE_LENGTH.toFloat()
@@ -533,6 +583,7 @@ private fun resetAppSettingsToDefault(
533583
updateAppSettings(
534584
appSettingsViewModel,
535585
keySizeState,
586+
pushupSizeState,
536587
animationSpeedState,
537588
animationHelperSpeedState,
538589
minSwipeLengthState,

0 commit comments

Comments
 (0)