From 6c91189547c8cd1cdbc85e674ef660b2ad3a094c Mon Sep 17 00:00:00 2001 From: Sasikanth Miriyampalli Date: Mon, 24 Oct 2022 12:17:40 +0530 Subject: [PATCH] Add support for 24 hour clock (#71) --- .../java/dev/sasikanth/pinnit/di/AppModule.kt | 1 + .../pinnit/di/DateTimeFormatterModule.kt | 20 +++++++++++++++++-- .../sasikanth/pinnit/editor/EditorScreen.kt | 12 ++++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/dev/sasikanth/pinnit/di/AppModule.kt b/app/src/main/java/dev/sasikanth/pinnit/di/AppModule.kt index c0dcaebd..8545227b 100644 --- a/app/src/main/java/dev/sasikanth/pinnit/di/AppModule.kt +++ b/app/src/main/java/dev/sasikanth/pinnit/di/AppModule.kt @@ -1,6 +1,7 @@ package dev.sasikanth.pinnit.di import android.content.Context +import android.text.format.DateFormat import androidx.room.Room import com.spotify.mobius.android.runners.MainThreadWorkRunner import com.spotify.mobius.runners.WorkRunner diff --git a/app/src/main/java/dev/sasikanth/pinnit/di/DateTimeFormatterModule.kt b/app/src/main/java/dev/sasikanth/pinnit/di/DateTimeFormatterModule.kt index 8d31c6c2..a273065d 100644 --- a/app/src/main/java/dev/sasikanth/pinnit/di/DateTimeFormatterModule.kt +++ b/app/src/main/java/dev/sasikanth/pinnit/di/DateTimeFormatterModule.kt @@ -1,8 +1,11 @@ package dev.sasikanth.pinnit.di +import android.content.Context +import android.text.format.DateFormat import dagger.Module import dagger.Provides import dagger.hilt.InstallIn +import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent import dev.sasikanth.pinnit.di.DateTimeFormat.Type.ScheduleDateFormat import dev.sasikanth.pinnit.di.DateTimeFormat.Type.ScheduleTimeFormat @@ -21,7 +24,20 @@ object DateTimeFormatterModule { @Provides @DateTimeFormat(ScheduleTimeFormat) - fun providesScheduleTimeFormat(): DateTimeFormatter { - return DateTimeFormatter.ofPattern("h:mm a") + fun providesScheduleTimeFormat( + isClock24HourFormat: Boolean + ): DateTimeFormatter { + return if (isClock24HourFormat) { + DateTimeFormatter.ofPattern("HH:mm") + } else { + DateTimeFormatter.ofPattern("h:mm a") + } + } + + @Provides + fun providesIsClock24HourFormat( + @ApplicationContext context: Context + ): Boolean { + return DateFormat.is24HourFormat(context) } } diff --git a/app/src/main/java/dev/sasikanth/pinnit/editor/EditorScreen.kt b/app/src/main/java/dev/sasikanth/pinnit/editor/EditorScreen.kt index 78690f13..b13648b9 100644 --- a/app/src/main/java/dev/sasikanth/pinnit/editor/EditorScreen.kt +++ b/app/src/main/java/dev/sasikanth/pinnit/editor/EditorScreen.kt @@ -2,6 +2,7 @@ package dev.sasikanth.pinnit.editor import android.content.Context import android.os.Bundle +import android.text.format.DateFormat import android.text.util.Linkify import android.view.LayoutInflater import android.view.View @@ -71,6 +72,9 @@ class EditorScreen : Fragment(), EditorScreenUi { @DateTimeFormat(ScheduleTimeFormat) lateinit var scheduleTimeFormatter: DateTimeFormatter + @set:Inject + var isClock24HourFormat: Boolean = false + private val viewModel: EditorScreenViewModel by viewModels() private val args by navArgs() @@ -444,8 +448,14 @@ class EditorScreen : Fragment(), EditorScreenUi { } private fun showTimePickerDialog(time: LocalTime) { + val timeFormat = if (isClock24HourFormat) { + TimeFormat.CLOCK_24H + } else { + TimeFormat.CLOCK_12H + } + val timePicker = MaterialTimePicker.Builder() - .setTimeFormat(TimeFormat.CLOCK_12H) + .setTimeFormat(timeFormat) .setHour(time.hour) .setMinute(time.minute) .build()