Moved DatePickerDialog to it's own Composable
This commit is contained in:
@@ -14,10 +14,7 @@ import androidx.compose.material.icons.filled.BatteryChargingFull
|
||||
import androidx.compose.material.icons.filled.EditCalendar
|
||||
import androidx.compose.material.icons.filled.Save
|
||||
import androidx.compose.material.icons.filled.Tag
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
@@ -30,10 +27,7 @@ import com.sockenklaus.batterytracker.R
|
||||
import com.sockenklaus.batterytracker.databinding.FragmentAddChargeBinding
|
||||
import com.sockenklaus.batterytracker.ui.theme.BatteryTrackerTheme
|
||||
import com.sockenklaus.batterytracker.util.validateDecimal
|
||||
import java.time.Instant
|
||||
import java.time.LocalDate
|
||||
import java.time.ZoneId
|
||||
import java.time.ZonedDateTime
|
||||
import java.time.*
|
||||
import java.time.format.DateTimeFormatter
|
||||
import java.time.format.FormatStyle
|
||||
import java.util.*
|
||||
@@ -56,7 +50,6 @@ class AddChargeFragment : Fragment() {
|
||||
|
||||
// TODO: Add viewModel!!
|
||||
val items = listOf("E1", "E2", "E3", "E4", "Bonsai", "Bonai")
|
||||
val dateFormat: DateTimeFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).withLocale(Locale.GERMANY)
|
||||
|
||||
binding.root.setContent{
|
||||
BatteryTrackerTheme {
|
||||
@@ -64,18 +57,10 @@ class AddChargeFragment : Fragment() {
|
||||
val innerPadding = 16.dp
|
||||
|
||||
var selectedBatteryId by remember { mutableStateOf(TextFieldValue(""))}
|
||||
var date by remember { mutableStateOf(ZonedDateTime.now())}
|
||||
var date by remember { mutableStateOf(LocalDateTime.now())}
|
||||
var charge by remember { mutableStateOf("") }
|
||||
var bIdExpanded by remember { mutableStateOf(false)}
|
||||
|
||||
val datePicker = MaterialDatePicker.Builder.datePicker()
|
||||
.setTitleText("Select date")
|
||||
.setSelection( date.toInstant().toEpochMilli())
|
||||
.build()
|
||||
datePicker.addOnPositiveButtonClickListener {
|
||||
date = ZonedDateTime.ofInstant(Instant.ofEpochMilli(it), ZoneId.systemDefault())
|
||||
}
|
||||
|
||||
Column(
|
||||
Modifier.padding(outerPadding)
|
||||
) {
|
||||
@@ -131,20 +116,10 @@ class AddChargeFragment : Fragment() {
|
||||
|
||||
Spacer(Modifier.size(innerPadding))
|
||||
|
||||
TextButton(
|
||||
onClick = {
|
||||
datePicker.show(parentFragmentManager, "tag")
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
){
|
||||
Icon(
|
||||
Icons.Default.EditCalendar,
|
||||
"Edit Calendar Icon",
|
||||
Modifier.size(ButtonDefaults.IconSize),
|
||||
)
|
||||
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
|
||||
Text("Date: ${date.format(dateFormat)}")
|
||||
}
|
||||
ChargeDatePicker(
|
||||
date = date,
|
||||
onSelect = { date = it}
|
||||
)
|
||||
|
||||
Spacer(Modifier.size(outerPadding))
|
||||
|
||||
@@ -167,15 +142,35 @@ class AddChargeFragment : Fragment() {
|
||||
_binding = null
|
||||
}
|
||||
|
||||
private fun openDatePicker() {
|
||||
|
||||
@Composable
|
||||
fun ChargeDatePicker(
|
||||
date: LocalDateTime,
|
||||
onSelect: (LocalDateTime) -> Unit,
|
||||
) {
|
||||
val dateFormat: DateTimeFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).withLocale(Locale.GERMANY)
|
||||
val datePicker = MaterialDatePicker.Builder.datePicker()
|
||||
.setTitleText("Select date")
|
||||
.setSelection(MaterialDatePicker.todayInUtcMilliseconds())
|
||||
.setSelection( date.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() )
|
||||
.build()
|
||||
|
||||
datePicker.show(parentFragmentManager, "test")
|
||||
datePicker.addOnPositiveButtonClickListener {
|
||||
onSelect(LocalDateTime.ofInstant(Instant.ofEpochMilli(it), ZoneId.systemDefault()))
|
||||
}
|
||||
|
||||
TextButton(
|
||||
onClick = {
|
||||
datePicker.show(parentFragmentManager, "tag")
|
||||
},
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
){
|
||||
Icon(
|
||||
Icons.Default.EditCalendar,
|
||||
"Edit Calendar Icon",
|
||||
Modifier.size(ButtonDefaults.IconSize),
|
||||
)
|
||||
Spacer(Modifier.size(ButtonDefaults.IconSpacing))
|
||||
Text("Date: ${date.format(dateFormat)}")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user