[#18] Add a swap score button.
Some checks are pending
continuous-integration/drone/push Build is pending
Some checks are pending
continuous-integration/drone/push Build is pending
closes #18
This commit is contained in:
@@ -63,7 +63,8 @@ fun Landscape(viewModel: ICounterViewModel) {
|
|||||||
{ viewModel.deleteClicked() },
|
{ viewModel.deleteClicked() },
|
||||||
{ viewModel.negateClicked() },
|
{ viewModel.negateClicked() },
|
||||||
{ viewModel.submitClicked() },
|
{ viewModel.submitClicked() },
|
||||||
{ viewModel.keyboardHidden = true })
|
{ viewModel.keyboardHidden = true },
|
||||||
|
{ viewModel.swapInputScores() })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,7 +103,8 @@ fun Portrait(viewModel: ICounterViewModel) {
|
|||||||
{ viewModel.deleteClicked() },
|
{ viewModel.deleteClicked() },
|
||||||
{ viewModel.negateClicked() },
|
{ viewModel.negateClicked() },
|
||||||
{ viewModel.submitClicked() },
|
{ 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 updateFocusStateB(state: Boolean) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun swapInputScores() {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -43,6 +43,7 @@ interface ICounterViewModel {
|
|||||||
fun updateNameB(value: String)
|
fun updateNameB(value: String)
|
||||||
fun updateFocusStateA(state: Boolean)
|
fun updateFocusStateA(state: Boolean)
|
||||||
fun updateFocusStateB(state: Boolean)
|
fun updateFocusStateB(state: Boolean)
|
||||||
|
fun swapInputScores()
|
||||||
}
|
}
|
||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
@@ -235,4 +236,10 @@ class CounterViewModel @Inject constructor(
|
|||||||
override fun updateFocusStateB(state: Boolean) {
|
override fun updateFocusStateB(state: Boolean) {
|
||||||
isBFocused = state
|
isBFocused = state
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun swapInputScores() {
|
||||||
|
val swap = currentScoreA
|
||||||
|
currentScoreA = currentScoreB
|
||||||
|
currentScoreB = swap
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,7 @@ import androidx.compose.material.icons.Icons
|
|||||||
import androidx.compose.material.icons.outlined.Backspace
|
import androidx.compose.material.icons.outlined.Backspace
|
||||||
import androidx.compose.material.icons.outlined.Check
|
import androidx.compose.material.icons.outlined.Check
|
||||||
import androidx.compose.material.icons.outlined.KeyboardHide
|
import androidx.compose.material.icons.outlined.KeyboardHide
|
||||||
|
import androidx.compose.material.icons.outlined.SwapHoriz
|
||||||
import androidx.compose.material3.*
|
import androidx.compose.material3.*
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.ExperimentalComposeUiApi
|
import androidx.compose.ui.ExperimentalComposeUiApi
|
||||||
@@ -36,12 +37,14 @@ fun KeyboardView(
|
|||||||
deleteClicked: () -> Unit,
|
deleteClicked: () -> Unit,
|
||||||
negateClicked: () -> Unit,
|
negateClicked: () -> Unit,
|
||||||
submitClicked: () -> Unit,
|
submitClicked: () -> Unit,
|
||||||
hideKeyboardClicked: () -> Unit
|
hideKeyboardClicked: () -> Unit,
|
||||||
|
onSwapClicked: () -> Unit
|
||||||
) {
|
) {
|
||||||
val keyboardController = LocalSoftwareKeyboardController.current
|
val keyboardController = LocalSoftwareKeyboardController.current
|
||||||
|
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
Row {
|
Row(Modifier.height(IntrinsicSize.Max)) {
|
||||||
Column(Modifier.weight(1f)) {
|
Column(Modifier.weight(1f)) {
|
||||||
CenteredTextField(
|
CenteredTextField(
|
||||||
scoreA,
|
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)) {
|
Column(Modifier.weight(1f)) {
|
||||||
|
|
||||||
CenteredTextField(
|
CenteredTextField(
|
||||||
@@ -69,6 +85,7 @@ fun KeyboardView(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Row {
|
Row {
|
||||||
Column(Modifier.weight(1f)) {
|
Column(Modifier.weight(1f)) {
|
||||||
KeyboardTextButton("1") {
|
KeyboardTextButton("1") {
|
||||||
@@ -246,6 +263,7 @@ fun KeyboardViewPreview() {
|
|||||||
{},
|
{},
|
||||||
{},
|
{},
|
||||||
{},
|
{},
|
||||||
|
{},
|
||||||
{})
|
{})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user