mirror of
https://github.com/PranshulGG/WeatherMaster.git
synced 2026-10-22 02:52:37 -05:00
add time picker
This commit is contained in:
1 parent
08a376b368
commit
eba12e7764
1 file changed
+35
-28
+35
-28
@@ -1,54 +1,61 @@
|
||||
package com.pranshulgg.weather_master_app.core.ui.components
|
||||
|
||||
import android.util.Log
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.material3.TimePicker
|
||||
import androidx.compose.material3.rememberTimePickerState
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.key
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import java.time.Instant
|
||||
import java.time.LocalTime
|
||||
import java.time.ZoneId
|
||||
import java.util.Calendar
|
||||
import java.util.concurrent.TimeUnit
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
|
||||
@Composable
|
||||
fun BasicTimePicker(
|
||||
show: Boolean,
|
||||
onDismiss: () -> Unit,
|
||||
onConfirm: (Long) -> Unit,
|
||||
is24Hour: Boolean
|
||||
is24Hour: Boolean,
|
||||
initialTime: Long? = null,
|
||||
) {
|
||||
|
||||
val currentTime = Calendar.getInstance()
|
||||
|
||||
val timePickerState = rememberTimePickerState(
|
||||
initialHour = currentTime.get(Calendar.HOUR_OF_DAY),
|
||||
initialMinute = currentTime.get(Calendar.MINUTE),
|
||||
is24Hour = is24Hour,
|
||||
)
|
||||
|
||||
val calendar = Calendar.getInstance()
|
||||
val time = Instant.ofEpochMilli(initialTime ?: System.currentTimeMillis())
|
||||
.atZone(ZoneId.systemDefault()).toLocalTime()
|
||||
|
||||
|
||||
DialogBasic(
|
||||
show = show,
|
||||
onConfirm = {
|
||||
calendar.apply {
|
||||
set(Calendar.HOUR_OF_DAY, timePickerState.hour)
|
||||
set(Calendar.MINUTE, timePickerState.minute)
|
||||
set(Calendar.SECOND, 0)
|
||||
set(Calendar.MILLISECOND, 0)
|
||||
key(initialTime, is24Hour) {
|
||||
val timePickerState = rememberTimePickerState(
|
||||
initialHour = time.hour,
|
||||
initialMinute = time.minute,
|
||||
is24Hour = is24Hour,
|
||||
)
|
||||
|
||||
val calendar = Calendar.getInstance()
|
||||
|
||||
|
||||
DialogBasic(
|
||||
show = show,
|
||||
onConfirm = {
|
||||
calendar.apply {
|
||||
set(Calendar.HOUR_OF_DAY, timePickerState.hour)
|
||||
set(Calendar.MINUTE, timePickerState.minute)
|
||||
set(Calendar.SECOND, 0)
|
||||
set(Calendar.MILLISECOND, 0)
|
||||
}
|
||||
onConfirm(calendar.timeInMillis)
|
||||
},
|
||||
onDismiss = onDismiss,
|
||||
title = "Select time",
|
||||
) {
|
||||
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
TimePicker(state = timePickerState)
|
||||
}
|
||||
onConfirm(calendar.timeInMillis)
|
||||
},
|
||||
onDismiss = onDismiss,
|
||||
title = "Select time",
|
||||
) {
|
||||
Column(Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
TimePicker(
|
||||
state = timePickerState,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user