commit 7af374b7989c019c649e738f8a9902e7f0402997
parent bf2fc444755ddfa4cbf54e9694ca2017e9ddf1dc
Author: massi <mdsiboldi@gmail.com>
Date: Fri, 12 Jul 2024 01:33:56 -0700
miscellaneous cleanup
Diffstat:
1 file changed, 68 insertions(+), 35 deletions(-)
diff --git a/app/src/main/java/com/example/fretboardtrainer/MainActivity.kt b/app/src/main/java/com/example/fretboardtrainer/MainActivity.kt
@@ -21,8 +21,10 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Settings
import androidx.compose.material3.Button
@@ -42,7 +44,9 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.em
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.byteArrayPreferencesKey
@@ -182,8 +186,6 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
}
private fun pickNote(): Note {
- // find all true values in settings
- // randomly pick one of those
val notes = mutableSetOf<Note>()
for (stringIdx in uiState.value.stringSettings.indices) {
if (uiState.value.stringSettings[stringIdx]) {
@@ -267,9 +269,15 @@ fun Fretfret(viewModel: MainViewModel = viewModel()) {
modifier = Modifier.displayCutoutPadding(),
title = {
if (uiState.showSettings) {
- Text("Fretfret - Settings")
+ Row(verticalAlignment = Alignment.CenterVertically) {
+ Text("settings - ")
+ Text(
+ fontSize = 3.em,
+ text = "choose which strings and frets you'll be tested on"
+ )
+ }
} else {
- Text("Fretfret")
+ Text("fretfret")
}
},
actions = {
@@ -287,7 +295,8 @@ fun Fretfret(viewModel: MainViewModel = viewModel()) {
.fillMaxSize()
.padding(innerPadding)
.padding(horizontal = 20.dp)
- .displayCutoutPadding(),
+ .displayCutoutPadding()
+ .verticalScroll(state = rememberScrollState()),
verticalArrangement = Arrangement.SpaceAround
) {
Row {
@@ -302,21 +311,10 @@ fun Fretfret(viewModel: MainViewModel = viewModel()) {
note = uiState.note
)
if (uiState.showSettings) {
- Row(horizontalArrangement = Arrangement.SpaceBetween) {
- repeat(Constants.FRETS.size) { n ->
- Column(
- modifier = Modifier
- .weight(weightForFret(n)),
- horizontalAlignment = Alignment.CenterHorizontally
- ) {
- Checkbox(modifier = Modifier
- .padding(end = 15.dp, start = 12.dp),
- checked = uiState.fretSettings[n],
- onCheckedChange = { viewModel.toggleFret(n) })
- Text(Constants.FRETS[n])
- }
- }
- }
+ FretSettings(
+ settings = uiState.fretSettings,
+ toggle = { n -> viewModel.toggleFret((n)) }
+ )
}
}
}
@@ -325,7 +323,15 @@ fun Fretfret(viewModel: MainViewModel = viewModel()) {
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
- if (!uiState.showSettings) {
+ if (uiState.showSettings) {
+ Row {}
+ Button(
+ onClick = { viewModel.toggleSettings() },
+ shape = RoundedCornerShape(5.dp)
+ ) {
+ Text("done")
+ }
+ } else {
Row {
if (uiState.lastNote != null) {
Text("last answer: ")
@@ -338,14 +344,6 @@ fun Fretfret(viewModel: MainViewModel = viewModel()) {
) {
Text("next")
}
- } else {
- Row {}
- Button(
- onClick = { viewModel.toggleSettings() },
- shape = RoundedCornerShape(5.dp)
- ) {
- Text("done")
- }
}
}
}
@@ -353,15 +351,24 @@ fun Fretfret(viewModel: MainViewModel = viewModel()) {
}
}
+@Preview
@Composable
-fun StringSettings(settings: List<Boolean>, toggle: (n: Int) -> Unit) {
+fun StringSettings(
+ settings: List<Boolean> = List(Constants.STRINGS.size) { n -> n % 3 == 0 },
+ toggle: (n: Int) -> Unit = {},
+) {
Column {
repeat(Constants.STRINGS.size) { n ->
- Row(verticalAlignment = Alignment.CenterVertically) {
- Text(Constants.STRINGS[n])
- Checkbox(modifier = Modifier.height(
+ Row(
+ modifier = Modifier.height(
(Constants.FRETBOARD_HEIGHT / Constants.STRINGS.size).dp
),
+ verticalAlignment = Alignment.CenterVertically,
+ horizontalArrangement = Arrangement.End
+ ) {
+ Text(modifier = Modifier.width(10.dp), text = Constants.STRINGS[n])
+ Checkbox(modifier = Modifier
+ .padding(0.dp),
checked = settings[n],
onCheckedChange = { toggle(n) })
}
@@ -369,6 +376,33 @@ fun StringSettings(settings: List<Boolean>, toggle: (n: Int) -> Unit) {
}
}
+@Preview
+@Composable
+fun FretSettings(
+ settings: List<Boolean> = List(Constants.FRETS.size) { n -> n % 3 == 0 },
+ toggle: (n: Int) -> Unit = {},
+) {
+ Row(horizontalArrangement = Arrangement.SpaceBetween) {
+ repeat(Constants.FRETS.size) { n ->
+ Column(
+ modifier = Modifier
+ .weight(weightForFret(n)),
+ horizontalAlignment = Alignment.CenterHorizontally,
+ verticalArrangement = Arrangement.Top
+ ) {
+ Checkbox(modifier = Modifier
+ .padding(end = 15.dp, start = 12.dp),
+ checked = settings[n],
+ onCheckedChange = { toggle(n) })
+ Text(
+ modifier = Modifier.absoluteOffset(y = (-10).dp),
+ text = Constants.FRETS[n]
+ )
+ }
+ }
+ }
+}
+
@Composable
fun Fretboard(modifier: Modifier = Modifier, note: Note?) {
Surface(
@@ -379,7 +413,6 @@ fun Fretboard(modifier: Modifier = Modifier, note: Note?) {
) {
val lineColor = MaterialTheme.colorScheme.onSurfaceVariant
val dotColor = MaterialTheme.colorScheme.outline
- val openStringColor = dotColor
Row(
modifier = modifier
.fillMaxWidth()
@@ -399,7 +432,7 @@ fun Fretboard(modifier: Modifier = Modifier, note: Note?) {
n,
noteAt = if (note != null && n == note.fret) note.string else null,
color = lineColor,
- openStringColor = openStringColor
+ openStringColor = dotColor
)
}
Divider(