diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelTimePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelTimePicker.kt index 3db470f..7bf524e 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelTimePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/WheelTimePicker.kt @@ -11,6 +11,7 @@ import androidx.compose.ui.unit.dp import com.commandiron.wheel_picker_compose.core.DefaultWheelTimePicker import com.commandiron.wheel_picker_compose.core.SelectorProperties import com.commandiron.wheel_picker_compose.core.TimeFormat +import com.commandiron.wheel_picker_compose.core.TimeRangeConfig import com.commandiron.wheel_picker_compose.core.WheelPickerDefaults import java.time.LocalTime @@ -26,6 +27,7 @@ fun WheelTimePicker( textStyle: TextStyle = MaterialTheme.typography.titleMedium, textColor: Color = LocalContentColor.current, selectorProperties: SelectorProperties = WheelPickerDefaults.selectorProperties(), + timeRangeConfig: TimeRangeConfig = TimeRangeConfig(), onSnappedTime : (snappedTime: LocalTime) -> Unit = {}, ) { DefaultWheelTimePicker( @@ -39,6 +41,7 @@ fun WheelTimePicker( textStyle, textColor, selectorProperties, + timeRangeConfig, onSnappedTime = { snappedTime, _ -> onSnappedTime(snappedTime.snappedLocalTime) snappedTime.snappedIndex diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDateTimePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDateTimePicker.kt index 2623cbe..7711528 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDateTimePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelDateTimePicker.kt @@ -29,6 +29,7 @@ internal fun DefaultWheelDateTimePicker( textStyle: TextStyle = MaterialTheme.typography.titleMedium, textColor: Color = LocalContentColor.current, selectorProperties: SelectorProperties = WheelPickerDefaults.selectorProperties(), + timeRangeConfig: TimeRangeConfig = TimeRangeConfig(), onSnappedDateTime : (snappedDateTime: SnappedDateTime) -> Int? = { _ -> null } ) { @@ -109,6 +110,7 @@ internal fun DefaultWheelDateTimePicker( selectorProperties = WheelPickerDefaults.selectorProperties( enabled = false ), + timeRangeConfig = timeRangeConfig, onSnappedTime = { snappedTime, timeFormat -> val newDateTime = when(snappedTime) { diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt index 5a69125..8312d43 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt @@ -29,31 +29,32 @@ internal fun DefaultWheelTimePicker( textStyle: TextStyle = MaterialTheme.typography.titleMedium, textColor: Color = LocalContentColor.current, selectorProperties: SelectorProperties = WheelPickerDefaults.selectorProperties(), + timeRangeConfig: TimeRangeConfig = TimeRangeConfig(), onSnappedTime : (snappedTime: SnappedTime, timeFormat: TimeFormat) -> Int? = { _,_ -> null }, ) { var snappedTime by remember { mutableStateOf(startTime.truncatedTo(ChronoUnit.MINUTES)) } - val hours = (0..23).map { + val hours = (timeRangeConfig.startHour..timeRangeConfig.endHour).mapIndexed { index, i -> Hour( - text = it.toString().padStart(2, '0'), - value = it, - index = it + text = i.toString().padStart(2, '0'), + value = i, + index = index ) } - val amPmHours = (1..12).map { + val amPmHours = (timeRangeConfig.startHourAmPm..timeRangeConfig.endHourAmPm).mapIndexed { index, i -> AmPmHour( - text = it.toString(), - value = it, - index = it - 1 + text = i.toString(), + value = i, + index = index ) } - val minutes = (0..59).map { + val minutes = (timeRangeConfig.startMinute..timeRangeConfig.endMinute).mapIndexed { index, i -> Minute( - text = it.toString().padStart(2, '0'), - value = it, - index = it + text = i.toString().padStart(2, '0'), + value = i, + index = index ) } diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/TimeRangeConfig.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/TimeRangeConfig.kt new file mode 100644 index 0000000..b70532b --- /dev/null +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/TimeRangeConfig.kt @@ -0,0 +1,10 @@ +package com.commandiron.wheel_picker_compose.core + +data class TimeRangeConfig( + val startHour: Int = 0, + val endHour: Int = 23, + val startHourAmPm: Int = 1, + val endHourAmPm: Int = 12, + val startMinute: Int = 0, + val endMinute: Int = 59, +)