Skip to content

Commit 84f1eae

Browse files
authored
Merge pull request #6 from robototes/DooleyC-quad-button
Update InputComponents.kt
2 parents 68ec2b9 + cc6e847 commit 84f1eae

11 files changed

Lines changed: 205 additions & 72 deletions

File tree

.idea/gradle.xml

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/scouting/app/components/InputComponents.kt

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,65 @@ fun LabeledRatingBar(
367367
}
368368
}
369369

370+
@Composable
371+
fun QuadButtonBlock(
372+
headerText: String,
373+
buttonLabelOne: String,
374+
buttonLabelTwo: String,
375+
buttonLabelThree: String,
376+
buttonLabelFour: String,
377+
modifier: Modifier = Modifier,
378+
onValueChange: (Int) -> Unit,
379+
initialSelection: Int = 0,
380+
enabled: Boolean = true,
381+
) {
382+
var currentSelection by rememberInitial(initialSelection)
383+
Column(
384+
modifier = Modifier
385+
.fillMaxWidth()
386+
.then(modifier)
387+
) {
388+
Text(
389+
text = headerText,
390+
style = MaterialTheme.typography.headlineSmall,
391+
modifier = Modifier.padding(bottom = 20.dp)
392+
)
393+
Row(
394+
modifier = Modifier.fillMaxWidth(),
395+
horizontalArrangement = Arrangement.SpaceBetween,
396+
verticalAlignment = Alignment.CenterVertically
397+
) {
398+
listOf(buttonLabelOne, buttonLabelTwo, buttonLabelThree, buttonLabelFour).forEachIndexed { index, item ->
399+
val color = if (currentSelection == index) {
400+
MaterialTheme.colorScheme.primary
401+
} else {
402+
NeutralGrayLight
403+
}
404+
Button(
405+
onClick = {
406+
currentSelection = index
407+
onValueChange.invoke(index)
408+
},
409+
modifier = Modifier.height(55.dp),
410+
shape = MaterialTheme.shapes.medium,
411+
elevation = ButtonDefaults.buttonElevation(0.dp),
412+
colors = ButtonDefaults.buttonColors(
413+
containerColor = color,
414+
disabledContainerColor = color,
415+
disabledContentColor = MaterialTheme.colorScheme.onBackground
416+
),
417+
enabled = enabled,
418+
) {
419+
Text(
420+
text = item,
421+
style = MaterialTheme.typography.bodyLarge
422+
)
423+
}
424+
}
425+
}
426+
}
427+
}
428+
370429
@Composable
371430
fun SettingsPreference(
372431
title: String,
@@ -411,62 +470,3 @@ fun SettingsPreference(
411470
endContent?.invoke()
412471
}
413472
}
414-
415-
@Compostable
416-
fun QuadButtonBlock(
417-
headerText: String,
418-
buttonLabelOne: String,
419-
buttonLabelTwo: String,
420-
buttonLabelThree: String,
421-
buttonLabelFour: String,
422-
modifier: Modifier = Modifier,
423-
onValueChange: (Int) -> Unit,
424-
initialSelection: Int = 0,
425-
enabled: Boolean = true,
426-
) {
427-
var currentSelection by rememberInitial(initialSelection)
428-
Column(
429-
modifier = Modifier
430-
.fillMaxWidth()
431-
.then(modifier)
432-
) {
433-
Text(
434-
text = headerText,
435-
style = MaterialTheme.typography.headlineSmall,
436-
modifier = Modifier.padding(bottom = 20.dp)
437-
)
438-
Row(
439-
modifier = Modifier.fillMaxWidth(),
440-
horizontalArrangement = Arrangement.SpaceBetween,
441-
verticalAlignment = Alignment.CenterVertically
442-
) {
443-
listOf(buttonLabelOne, buttonLabelTwo, buttonLabelThree, buttonLabelFour).forEachIndexed { index, item ->
444-
val color = if (currentSelection == index) {
445-
MaterialTheme.colorScheme.primary
446-
} else {
447-
NeutralGrayLight
448-
}
449-
Button(
450-
onClick = {
451-
currentSelection = index
452-
onValueChange.invoke(index)
453-
},
454-
modifier = Modifier.height(55.dp),
455-
shape = MaterialTheme.shapes.medium,
456-
elevation = ButtonDefaults.buttonElevation(0.dp),
457-
colors = ButtonDefaults.buttonColors(
458-
containerColor = color,
459-
disabledContainerColor = color,
460-
disabledContentColor = MaterialTheme.colorScheme.onBackground
461-
),
462-
enabled = enabled,
463-
) {
464-
Text(
465-
text = item,
466-
style = MaterialTheme.typography.bodyLarge
467-
)
468-
}
469-
}
470-
}
471-
}
472-
}

app/src/main/java/com/scouting/app/model/TemplateItem.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,20 @@ data class TemplateItem(
1010
var text2: String? = null,
1111
var text3: String? = null,
1212
var text4: String? = null,
13+
var text5: String? = null,
1314
var type: TemplateTypes,
1415
// The type of the item will always be non null so by using the type
1516
// we can determine which of these values we know will not be null
1617
var itemValueInt: MutableState<Int>? = null,
1718
var itemValue2Int: MutableState<Int>? = null,
1819
var itemValue3Int: MutableState<Int>? = null,
1920
var itemValue4Int: MutableState<Int>? = null,
21+
var itemValue5Int: MutableState<Int>? = null,
2022
var itemValueBoolean: MutableState<Boolean>? = null,
2123
var itemValueString: MutableState<String>? = null,
2224
var saveKey: String,
2325
var saveKey2: String? = null,
2426
var saveKey3: String? = null,
25-
var saveKey4: String? = null
27+
var saveKey4: String? = null,
28+
var saveKey5: String? = null
2629
)

app/src/main/java/com/scouting/app/view/scouting/ScoutingView.kt

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ fun ScoutingTemplateLoadView(list: SnapshotStateList<TemplateItem>) {
216216
item.itemValueInt = mutableStateOf(1)
217217
}
218218
}
219-
TemplateTypes.SCORE_BAR, TemplateTypes.TRI_BUTTON -> {
219+
TemplateTypes.SCORE_BAR, TemplateTypes.TRI_BUTTON, TemplateTypes.QUAD_BUTTON -> {
220220
if (item.itemValueInt == null) {
221221
item.itemValueInt = mutableStateOf(0)
222222
}
@@ -375,6 +375,28 @@ fun ScoutingTemplateLoadView(list: SnapshotStateList<TemplateItem>) {
375375
)
376376
}
377377

378+
TemplateTypes.QUAD_BUTTON -> {
379+
if (item.itemValueInt == null) {
380+
item.itemValueInt = remember { mutableStateOf(0) }
381+
}
382+
QuadButtonBlock(
383+
headerText = item.text,
384+
buttonLabelOne = item.text2.toString(),
385+
buttonLabelTwo = item.text3.toString(),
386+
buttonLabelThree = item.text4.toString(),
387+
buttonLabelFour = item.text5.toString(),
388+
onValueChange = {
389+
item.itemValueInt!!.value = it
390+
},
391+
initialSelection = item.itemValueInt!!.value,
392+
modifier = Modifier.padding(
393+
bottom = 10.dp,
394+
start = 30.dp,
395+
end = 30.dp,
396+
)
397+
)
398+
}
399+
378400
TemplateTypes.IMAGE -> {
379401
EncodedImageComponent(
380402
base64Image = item.text,
@@ -385,4 +407,4 @@ fun ScoutingTemplateLoadView(list: SnapshotStateList<TemplateItem>) {
385407
}
386408
}
387409
}
388-
}
410+
}

app/src/main/java/com/scouting/app/view/template/EditCSVOrderView.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ fun EditCSVOrderView(navController: NavController, viewModel: TemplateEditorView
149149
TemplateTypes.SCORE_BAR,
150150
TemplateTypes.RATING_BAR,
151151
TemplateTypes.TRI_BUTTON -> stringResource(id = R.string.template_edit_csv_type_int)
152+
TemplateTypes.QUAD_BUTTON -> stringResource(id = R.string.template_edit_csv_type_int)
152153

153154
else -> stringResource(id = R.string.template_edit_csv_type_boolean)
154155
},
@@ -166,7 +167,7 @@ fun EditCSVOrderView(navController: NavController, viewModel: TemplateEditorView
166167
) {
167168
Text(
168169
text = stringResource(id = R.string.template_edit_csv_item_type_prefix),
169-
style = MaterialTheme.typography.bodyLarge + TextStyle(
170+
style = MaterialTheme.typography.bodyLa rge + TextStyle(
170171
fontWeight = FontWeight.SemiBold
171172
),
172173
modifier = Modifier.padding(end = 10.dp)
@@ -177,6 +178,7 @@ fun EditCSVOrderView(navController: NavController, viewModel: TemplateEditorView
177178
TemplateTypes.TRI_SCORING -> stringResource(id = R.string.template_edit_csv_item_tri_scoring_prefix)
178179
TemplateTypes.CHECK_BOX -> stringResource(id = R.string.template_edit_csv_item_checkbox_prefix)
179180
TemplateTypes.TRI_BUTTON -> stringResource(id = R.string.template_edit_csv_item_tri_button_prefix)
181+
TemplateTypes.QUAD_BUTTON -> stringResource(id = R.string.template_edit_csv_type_int)
180182
TemplateTypes.RATING_BAR -> stringResource(id = R.string.template_edit_csv_item_rating_bar_prefix)
181183
else -> stringResource(id = R.string.template_edit_csv_item_counter_prefix)
182184
},

app/src/main/java/com/scouting/app/view/template/EditTemplateDialog.kt

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ fun EditTemplateDialog(viewModel: TemplateEditorViewModel) {
5353
var textFieldValueLabel4 by remember {
5454
mutableStateOf(TextFieldValue(currentEditItem.text4.toString()))
5555
}
56+
var textFieldValueLabel5 by remember {
57+
mutableStateOf(TextFieldValue(currentEditItem.text5.toString()))
58+
}
5659
var textFieldValueSaveKey by remember {
5760
mutableStateOf(TextFieldValue(currentEditItem.saveKey))
5861
}
@@ -62,6 +65,12 @@ fun EditTemplateDialog(viewModel: TemplateEditorViewModel) {
6265
var textFieldValueSaveKey3 by remember {
6366
mutableStateOf(TextFieldValue(currentEditItem.saveKey3.toString()))
6467
}
68+
var textFieldValueSaveKey4 by remember {
69+
mutableStateOf(TextFieldValue(currentEditItem.saveKey4.toString()))
70+
}
71+
var textFieldValueSaveKey5 by remember {
72+
mutableStateOf(TextFieldValue(currentEditItem.saveKey5.toString()))
73+
}
6574
if (currentEditItem.type != TemplateTypes.IMAGE) {
6675
BasicInputField(
6776
icon = painterResource(id = R.drawable.ic_text_format_center),
@@ -81,7 +90,8 @@ fun EditTemplateDialog(viewModel: TemplateEditorViewModel) {
8190
)
8291
}
8392
if (currentEditItem.type == TemplateTypes.TRI_SCORING ||
84-
currentEditItem.type == TemplateTypes.TRI_BUTTON
93+
currentEditItem.type == TemplateTypes.TRI_BUTTON ||
94+
currentEditItem.type == TemplateTypes.QUAD_BUTTON
8595
) {
8696
BasicInputField(
8797
icon = painterResource(id = R.drawable.ic_text_format_center),
@@ -108,7 +118,9 @@ fun EditTemplateDialog(viewModel: TemplateEditorViewModel) {
108118
.padding(horizontal = 30.dp, vertical = 10.dp)
109119
)
110120
}
111-
if (currentEditItem.type == TemplateTypes.TRI_BUTTON) {
121+
if (currentEditItem.type == TemplateTypes.TRI_BUTTON ||
122+
currentEditItem.type == TemplateTypes.QUAD_BUTTON
123+
) {
112124
BasicInputField(
113125
icon = painterResource(id = R.drawable.ic_text_format_center),
114126
contentDescription = stringResource(id = R.string.ic_text_format_center_content_desc),
@@ -122,6 +134,20 @@ fun EditTemplateDialog(viewModel: TemplateEditorViewModel) {
122134
.padding(horizontal = 30.dp, vertical = 10.dp)
123135
)
124136
}
137+
if (currentEditItem.type == TemplateTypes.QUAD_BUTTON) {
138+
BasicInputField(
139+
icon = painterResource(id = R.drawable.ic_text_format_center),
140+
contentDescription = stringResource(id = R.string.ic_text_format_center_content_desc),
141+
hint = stringResource(id = R.string.template_editor_edit_dialog_field_5_hint),
142+
textFieldValue = textFieldValueLabel5,
143+
onValueChange = {
144+
textFieldValueLabel5 = it
145+
},
146+
modifier = Modifier
147+
.fillMaxWidth()
148+
.padding(horizontal = 30.dp, vertical = 10.dp)
149+
)
150+
}
125151
// Plain text has no user input, thus nothing to save
126152
if (currentEditItem.type != TemplateTypes.PLAIN_TEXT && currentEditItem.type != TemplateTypes.IMAGE) {
127153
BasicInputField(
@@ -195,9 +221,12 @@ fun EditTemplateDialog(viewModel: TemplateEditorViewModel) {
195221
text2 = textFieldValueLabel2.text
196222
text3 = textFieldValueLabel3.text
197223
text4 = textFieldValueLabel4.text
224+
text5 = textFieldValueLabel5.text
198225
saveKey = textFieldValueSaveKey.text
199226
saveKey2 = textFieldValueSaveKey2.text
200227
saveKey3 = textFieldValueSaveKey3.text
228+
saveKey4 = textFieldValueSaveKey4.text
229+
saveKey5 = textFieldValueSaveKey5.text
201230
}
202231
}
203232
showingEditDialog = false
@@ -224,4 +253,4 @@ fun EditTemplateDialog(viewModel: TemplateEditorViewModel) {
224253
}
225254
}
226255
}
227-
}
256+
}

0 commit comments

Comments
 (0)