From eba12e7764e1af735bbfe1e9ec2f729ec17b7822 Mon Sep 17 00:00:00 2001 From: PranshulGG Date: Wed, 26 Aug 2026 16:43:55 +0530 Subject: [PATCH] add time picker --- .../core/ui/components/BasicTimePicker.kt | 63 ++++++++++--------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/pranshulgg/weather_master_app/core/ui/components/BasicTimePicker.kt b/app/src/main/java/com/pranshulgg/weather_master_app/core/ui/components/BasicTimePicker.kt index c068e15dc..c2119765f 100644 --- a/app/src/main/java/com/pranshulgg/weather_master_app/core/ui/components/BasicTimePicker.kt +++ b/app/src/main/java/com/pranshulgg/weather_master_app/core/ui/components/BasicTimePicker.kt @@ -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, - ) } } - } \ No newline at end of file