Update gradle and compose

This commit is contained in:
Sylwester Zieliński
2021-12-23 13:59:54 +01:00
parent af11494e38
commit b842ff6551
12 changed files with 116 additions and 102 deletions

View File

@@ -2,9 +2,14 @@ package no.nordicsemi.android.csc.data
import no.nordicsemi.android.csc.view.CSCSettings
import no.nordicsemi.android.csc.view.SpeedUnit
import no.nordicsemi.android.theme.view.RadioGroupItem
import no.nordicsemi.android.material.you.RadioButtonItem
import no.nordicsemi.android.material.you.RadioGroupViewEntity
import java.util.*
private const val DISPLAY_M_S = "m/s"
private const val DISPLAY_KM_H = "km/h"
private const val DISPLAY_MPH = "mph"
internal data class CSCData(
val showDialog: Boolean = false,
val scanDevices: Boolean = false,
@@ -57,11 +62,30 @@ internal data class CSCData(
return String.format(Locale.US, "%.1f", gearRatio)
}
fun items(): List<RadioGroupItem<SpeedUnit>> {
return listOf(
RadioGroupItem(SpeedUnit.M_S,"m/s"),
RadioGroupItem(SpeedUnit.KM_H, "km/h"),
RadioGroupItem(SpeedUnit.MPH, "mph")
fun getSpeedUnit(label: String): SpeedUnit {
return when (label) {
DISPLAY_KM_H -> SpeedUnit.KM_H
DISPLAY_M_S -> SpeedUnit.M_S
DISPLAY_MPH -> SpeedUnit.MPH
else -> throw IllegalArgumentException("Can't create SpeedUnit from this label: $label")
}
}
fun temperatureSettingsItems(): RadioGroupViewEntity {
return RadioGroupViewEntity(
SpeedUnit.values().map { createRadioButtonItem(it) }
)
}
private fun createRadioButtonItem(unit: SpeedUnit): RadioButtonItem {
return RadioButtonItem(displayTemperature(unit), unit == selectedSpeedUnit)
}
private fun displayTemperature(unit: SpeedUnit): String {
return when (unit) {
SpeedUnit.KM_H -> DISPLAY_KM_H
SpeedUnit.M_S -> DISPLAY_M_S
SpeedUnit.MPH -> DISPLAY_MPH
}
}
}

View File

@@ -16,9 +16,9 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import no.nordicsemi.android.csc.R
import no.nordicsemi.android.csc.data.CSCData
import no.nordicsemi.android.material.you.RadioButtonGroup
import no.nordicsemi.android.theme.view.ScreenSection
import no.nordicsemi.android.theme.view.SectionTitle
import no.nordicsemi.android.theme.view.SelectItemRadioGroup
@Composable
internal fun CSCContentView(state: CSCData, onEvent: (CSCViewEvent) -> Unit) {
@@ -62,8 +62,8 @@ private fun SettingsSection(state: CSCData, onEvent: (CSCViewEvent) -> Unit) {
Spacer(modifier = Modifier.height(16.dp))
SelectItemRadioGroup(state.selectedSpeedUnit, state.items()) {
onEvent(OnSelectedSpeedUnitSelected(it.unit))
RadioButtonGroup(viewEntity = state.temperatureSettingsItems()) {
onEvent(OnSelectedSpeedUnitSelected(state.getSpeedUnit(it.label)))
}
}
}

View File

@@ -1,7 +1,7 @@
package no.nordicsemi.android.csc.view
internal enum class SpeedUnit {
M_S,
KM_H,
MPH
internal enum class SpeedUnit(val displayName: String) {
M_S("m/s"),
KM_H("km/h"),
MPH("mph")
}

View File

@@ -1,12 +1,17 @@
package no.nordicsemi.android.csc.view
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Edit
import androidx.compose.material.icons.filled.ArrowDropDown
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
@@ -15,21 +20,22 @@ import no.nordicsemi.android.csc.data.CSCData
@Composable
internal fun WheelSizeView(state: CSCData, onEvent: (CSCViewEvent) -> Unit) {
//TODO
// OutlinedTextField(
// modifier = Modifier.fillMaxWidth(),
// value = state.wheelSizeDisplay,
// onValueChange = { },
// enabled = false,
// label = { Text(text = stringResource(id = R.string.csc_field_wheel_size)) },
// trailingIcon = { EditIcon(onEvent = onEvent) }
// )
}
OutlinedButton(onClick = { onEvent(OnShowEditWheelSizeDialogButtonClick) }) {
Row(
modifier = Modifier.fillMaxWidth(0.5f),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween
){
Column {
Text(
text = stringResource(id = R.string.csc_field_wheel_size),
style = MaterialTheme.typography.labelSmall
)
Text(text = state.wheelSizeDisplay, style = MaterialTheme.typography.bodyMedium)
}
@Composable
private fun EditIcon(onEvent: (CSCViewEvent) -> Unit) {
IconButton(onClick = { onEvent(OnShowEditWheelSizeDialogButtonClick) }) {
Icon(Icons.Filled.Edit, "Edit wheel size.")
Icon(Icons.Default.ArrowDropDown, contentDescription = "")
}
}
}