Merge HEAD with 6e0eb1c8f4
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.sockenklaus.batterytracker.ui.composables
|
||||
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.text.KeyboardActions
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material.icons.Icons
|
||||
@@ -13,7 +14,6 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.input.ImeAction
|
||||
import androidx.compose.ui.text.input.KeyboardCapitalization
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.text.toUpperCase
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import androidx.navigation.NavController
|
||||
@@ -22,7 +22,6 @@ import com.sockenklaus.batterytracker.ui.Routes
|
||||
import com.sockenklaus.batterytracker.ui.composables.util.MyOutlinedTextFieldWithSuffix
|
||||
import com.sockenklaus.batterytracker.ui.models.AddBatteryViewModel
|
||||
import com.sockenklaus.batterytracker.util.validateDecimal
|
||||
import java.util.*
|
||||
|
||||
@Composable
|
||||
fun AddBattery(navController: NavController){
|
||||
@@ -91,6 +90,11 @@ fun AddBattery(navController: NavController){
|
||||
keyboardType = KeyboardType.Decimal,
|
||||
imeAction = ImeAction.Done
|
||||
),
|
||||
keyboardActions = KeyboardActions(
|
||||
onDone = {
|
||||
saveBattery(model = model, navController = navController)
|
||||
}
|
||||
),
|
||||
leadingIcon = { Icon(Icons.Default.BatteryFull, "Icon Battery Full") },
|
||||
suffix = "Ah",
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
@@ -99,16 +103,21 @@ fun AddBattery(navController: NavController){
|
||||
Spacer(Modifier.size(outerPadding))
|
||||
|
||||
ExtendedFloatingActionButton(
|
||||
onClick = {
|
||||
if(model.batteryName.isBlank()) model.batteryHasError = true
|
||||
|
||||
if(!model.batteryHasError && model.saveBattery(model.batteryName, model.declaredCapacity)){
|
||||
navController.navigate(Routes.HOME)
|
||||
}
|
||||
},
|
||||
onClick = { saveBattery(model = model, navController = navController) },
|
||||
icon = { Icon(Icons.Default.Save, "Icon Save") },
|
||||
text = { Text(stringResource(R.string.button_save_battery)) },
|
||||
modifier = Modifier.align(Alignment.End)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveBattery(
|
||||
model: AddBatteryViewModel,
|
||||
navController: NavController
|
||||
){
|
||||
if(model.batteryName.isBlank()) model.batteryHasError = true
|
||||
|
||||
if(!model.batteryHasError && model.saveBattery(model.batteryName, model.declaredCapacity)) {
|
||||
navController.navigate(Routes.HOME)
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.sockenklaus.batterytracker.ui.composables
|
||||
|
||||
import android.app.DatePickerDialog
|
||||
import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.text.KeyboardActions
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material.icons.Icons
|
||||
@@ -23,6 +24,7 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import androidx.navigation.NavController
|
||||
import com.sockenklaus.batterytracker.R
|
||||
import com.sockenklaus.batterytracker.room.entities.Battery
|
||||
import com.sockenklaus.batterytracker.ui.Routes
|
||||
import com.sockenklaus.batterytracker.ui.composables.util.MyOutlinedTextFieldWithSuffix
|
||||
import com.sockenklaus.batterytracker.ui.models.AddChargeViewModel
|
||||
@@ -81,6 +83,12 @@ fun AddCharge(
|
||||
keyboardOptions = KeyboardOptions(
|
||||
imeAction = ImeAction.Next
|
||||
),
|
||||
keyboardActions = KeyboardActions(
|
||||
onNext = {
|
||||
bIdExpanded = false
|
||||
defaultKeyboardAction(ImeAction.Next)
|
||||
}
|
||||
),
|
||||
singleLine = true
|
||||
)
|
||||
|
||||
@@ -124,6 +132,11 @@ fun AddCharge(
|
||||
keyboardType = KeyboardType.Decimal,
|
||||
imeAction = ImeAction.Done
|
||||
),
|
||||
keyboardActions = KeyboardActions(
|
||||
onDone = {
|
||||
saveCharge(batteries, model, navController)
|
||||
}
|
||||
),
|
||||
labelId = R.string.hint_charge,
|
||||
leadingIcon = { Icon(Icons.Default.BatteryChargingFull, "Icon Battery Charging Full") },
|
||||
isError = model.chargeHasError,
|
||||
@@ -155,14 +168,7 @@ fun AddCharge(
|
||||
if(model.charge.isBlank()){
|
||||
model.chargeHasError = true
|
||||
}
|
||||
|
||||
if(!model.batteryHasError && !model.chargeHasError && model.saveCharge(batteries, model.batteryName.text, model.charge, model.date)){
|
||||
val id = model.getBatId(
|
||||
batteries,
|
||||
model.batteryName.text
|
||||
)
|
||||
navController.navigate("${Routes.BATTERY_DETAILS}/${id}")
|
||||
}
|
||||
saveCharge(batteries, model, navController)
|
||||
},
|
||||
icon = { Icon(Icons.Default.Save, "Icon Save") },
|
||||
modifier = Modifier.align(Alignment.End)
|
||||
@@ -171,6 +177,31 @@ fun AddCharge(
|
||||
}
|
||||
}
|
||||
|
||||
fun saveCharge(
|
||||
batteries: List<Battery>,
|
||||
model: AddChargeViewModel,
|
||||
navController: NavController
|
||||
) {
|
||||
if(!batteries.any{ it.name == model.batteryName.text }){
|
||||
model.batteryHasError = true
|
||||
model.batteryHelper = R.string.helper_battery_not_found
|
||||
}
|
||||
if(model.batteryName.text.isBlank()){
|
||||
model.batteryHasError = true
|
||||
model.batteryHelper = R.string.helper_required
|
||||
}
|
||||
if(model.charge.isBlank()){
|
||||
model.chargeHasError = true
|
||||
}
|
||||
|
||||
if(!model.batteryHasError && !model.chargeHasError && model.saveCharge(batteries, model.batteryName.text, model.charge, model.date)){
|
||||
val id = model.getBatId(
|
||||
batteries,
|
||||
model.batteryName.text
|
||||
)
|
||||
navController.navigate("${Routes.BATTERY_DETAILS}/${id}")
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun ChargeDatePicker(
|
||||
|
||||
@@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.*
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.text.KeyboardActions
|
||||
import androidx.compose.foundation.text.KeyboardOptions
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.material.icons.Icons
|
||||
@@ -58,6 +59,11 @@ fun Home(
|
||||
singleLine = true,
|
||||
keyboardOptions = KeyboardOptions(
|
||||
imeAction = ImeAction.Search
|
||||
),
|
||||
keyboardActions = KeyboardActions(
|
||||
onSearch = {
|
||||
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user