From f52bfa64ce12f54db33a1de2e2eb863f8ccfa060 Mon Sep 17 00:00:00 2001 From: Fabian Zobrist Date: Fri, 27 Jan 2023 12:36:49 +0100 Subject: [PATCH] [#18] Add a swap score button. closes #18 --- .../tichucounter/ui/counter/CounterView.kt | 9 ++++++-- .../ui/counter/CounterViewModel.kt | 7 ++++++ .../tichucounter/ui/counter/KeyboardView.kt | 22 +++++++++++++++++-- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt index e4d394a..eb8bf35 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterView.kt @@ -63,7 +63,8 @@ fun Landscape(viewModel: ICounterViewModel) { { viewModel.deleteClicked() }, { viewModel.negateClicked() }, { viewModel.submitClicked() }, - { viewModel.keyboardHidden = true }) + { viewModel.keyboardHidden = true }, + { viewModel.swapInputScores() }) } } } @@ -102,7 +103,8 @@ fun Portrait(viewModel: ICounterViewModel) { { viewModel.deleteClicked() }, { viewModel.negateClicked() }, { viewModel.submitClicked() }, - { viewModel.keyboardHidden = true }) + { viewModel.keyboardHidden = true }, + { viewModel.swapInputScores() }) } } } @@ -174,4 +176,7 @@ internal class PreviewViewModel : ICounterViewModel { override fun updateFocusStateB(state: Boolean) { } + override fun swapInputScores() { + } + } \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt index 3e927c1..c16a86d 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/CounterViewModel.kt @@ -43,6 +43,7 @@ interface ICounterViewModel { fun updateNameB(value: String) fun updateFocusStateA(state: Boolean) fun updateFocusStateB(state: Boolean) + fun swapInputScores() } @HiltViewModel @@ -235,4 +236,10 @@ class CounterViewModel @Inject constructor( override fun updateFocusStateB(state: Boolean) { isBFocused = state } + + override fun swapInputScores() { + val swap = currentScoreA + currentScoreA = currentScoreB + currentScoreB = swap + } } \ No newline at end of file diff --git a/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt b/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt index 28340c0..a42b224 100644 --- a/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt +++ b/app/src/main/java/me/zobrist/tichucounter/ui/counter/KeyboardView.kt @@ -6,6 +6,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Backspace import androidx.compose.material.icons.outlined.Check import androidx.compose.material.icons.outlined.KeyboardHide +import androidx.compose.material.icons.outlined.SwapHoriz import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.ui.ExperimentalComposeUiApi @@ -36,12 +37,14 @@ fun KeyboardView( deleteClicked: () -> Unit, negateClicked: () -> Unit, submitClicked: () -> Unit, - hideKeyboardClicked: () -> Unit + hideKeyboardClicked: () -> Unit, + onSwapClicked: () -> Unit ) { val keyboardController = LocalSoftwareKeyboardController.current + Column { - Row { + Row(Modifier.height(IntrinsicSize.Max)) { Column(Modifier.weight(1f)) { CenteredTextField( scoreA, @@ -55,6 +58,19 @@ fun KeyboardView( ) } + Surface( + Modifier + .wrapContentWidth() + .fillMaxHeight(), + tonalElevation = 3.dp, + shape = MaterialTheme.shapes.extraSmall + ) { + Column { + IconButton(onClick = onSwapClicked) { + Icon(Icons.Outlined.SwapHoriz, null) + } + } + } Column(Modifier.weight(1f)) { CenteredTextField( @@ -69,6 +85,7 @@ fun KeyboardView( } } + Row { Column(Modifier.weight(1f)) { KeyboardTextButton("1") { @@ -246,6 +263,7 @@ fun KeyboardViewPreview() { {}, {}, {}, + {}, {}) } }