Skip to content

Commit

Permalink
Better support for 24 and 12 hour time formats (FossifyOrg#52)
Browse files Browse the repository at this point in the history
  • Loading branch information
Aga-C committed Apr 6, 2024
1 parent bf93a74 commit 4d23489
Show file tree
Hide file tree
Showing 10 changed files with 68 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Intent
import android.os.Bundle
import org.fossify.clock.databinding.ActivitySettingsBinding
import org.fossify.clock.extensions.config
import org.fossify.clock.extensions.updateWidgets
import org.fossify.clock.helpers.DEFAULT_MAX_ALARM_REMINDER_SECS
import org.fossify.clock.helpers.DEFAULT_MAX_TIMER_REMINDER_SECS
import org.fossify.commons.extensions.*
Expand Down Expand Up @@ -34,6 +35,7 @@ class SettingsActivity : SimpleActivity() {
setupCustomizeColors()
setupUseEnglish()
setupLanguage()
setupHourFormat()
setupPreventPhoneFromSleeping()
setupSundayFirst()
setupAlarmMaxReminder()
Expand Down Expand Up @@ -86,6 +88,15 @@ class SettingsActivity : SimpleActivity() {
}
}

private fun setupHourFormat() = binding.apply {
settingsHourFormat.isChecked = config.use24HourFormat
settingsHourFormatHolder.setOnClickListener {
settingsHourFormat.toggle()
config.use24HourFormat = settingsHourFormat.isChecked
updateWidgets()
}
}

private fun setupPreventPhoneFromSleeping() {
binding.settingsPreventPhoneFromSleeping.isChecked = config.preventPhoneFromSleeping
binding.settingsPreventPhoneFromSleepingHolder.setOnClickListener {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ class WidgetDigitalConfigureActivity : SimpleActivity() {
}

updateTextColor()

val clockFormat = if (config.use24HourFormat) "HH:mm" else "K:mm a"
binding.configDigitalTime.format24Hour = clockFormat
binding.configDigitalTime.format12Hour = clockFormat
}

private fun saveConfig() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class EditAlarmDialog(val activity: SimpleActivity, val alarm: Alarm, val onDism
binding.apply {
editAlarmTime.setOnClickListener {
if (activity.config.isUsingSystemTheme) {
val timeFormat = if (DateFormat.is24HourFormat(activity)) {
val timeFormat = if (activity.config.use24HourFormat) {
TimeFormat.CLOCK_24H
} else {
TimeFormat.CLOCK_12H
Expand All @@ -59,7 +59,7 @@ class EditAlarmDialog(val activity: SimpleActivity, val alarm: Alarm, val onDism
timeSetListener,
alarm.timeInMinutes / 60,
alarm.timeInMinutes % 60,
DateFormat.is24HourFormat(activity)
activity.config.use24HourFormat
).show()
}
}
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/kotlin/org/fossify/clock/extensions/Context.kt
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ fun Context.updateAnalogueWidgets() {
}

fun Context.getFormattedTime(passedSeconds: Int, showSeconds: Boolean, makeAmPmSmaller: Boolean): SpannableString {
val use24HourFormat = DateFormat.is24HourFormat(this)
val use24HourFormat = config.use24HourFormat
val hours = (passedSeconds / 3600) % 24
val minutes = (passedSeconds / 60) % 60
val seconds = passedSeconds % 60
Expand Down Expand Up @@ -299,7 +299,7 @@ fun Context.getClosestEnabledAlarmString(callback: (result: String) -> Unit) {
calendar.add(Calendar.MINUTE, closestAlarmTime)
val dayOfWeekIndex = (calendar.get(Calendar.DAY_OF_WEEK) + 5) % 7
val dayOfWeek = resources.getStringArray(org.fossify.commons.R.array.week_days_short)[dayOfWeekIndex]
val pattern = if (DateFormat.is24HourFormat(this)) {
val pattern = if (config.use24HourFormat) {
"HH:mm"
} else {
"h:mm a"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ class ClockFragment : Fragment() {
binding.apply {
requireContext().updateTextColors(clockFragment)
clockTime.setTextColor(requireContext().getProperTextColor())
val clockFormat = if (requireActivity().config.use24HourFormat) "HH:mm:ss" else "K:mm:ss a"
clockTime.format24Hour = clockFormat
clockTime.format12Hour = clockFormat
clockFab.setOnClickListener {
fabClicked()
}
Expand All @@ -74,7 +77,7 @@ class ClockFragment : Fragment() {
val minutes = (passedSeconds / 60) % 60
val seconds = passedSeconds % 60

if (!DateFormat.is24HourFormat(requireContext())) {
if (!requireActivity().config.use24HourFormat) {
binding.clockTime.textSize = resources.getDimension(R.dimen.clock_text_size_smaller) / resources.displayMetrics.density
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import android.content.Context
import android.content.Intent
import android.graphics.*
import android.os.Bundle
import android.view.View
import android.widget.RemoteViews
import org.fossify.clock.R
import org.fossify.clock.activities.SplashActivity
Expand Down Expand Up @@ -42,6 +43,10 @@ class MyDigitalTimeWidgetProvider : AppWidgetProvider() {
views.apply {
setText(R.id.widget_next_alarm, nextAlarm)
setVisibleIf(R.id.widget_alarm_holder, nextAlarm.isNotEmpty())
val clockToHide = if (context.config.use24HourFormat) R.id.widget_text_clock_12 else R.id.widget_text_clock_24
val clockToShow = if (context.config.use24HourFormat) R.id.widget_text_clock_24 else R.id.widget_text_clock_12
setViewVisibility(clockToHide, View.GONE)
setViewVisibility(clockToShow, View.VISIBLE)
}
}

Expand All @@ -51,7 +56,8 @@ class MyDigitalTimeWidgetProvider : AppWidgetProvider() {

views.apply {
applyColorFilter(R.id.widget_background, config.widgetBgColor)
setTextColor(R.id.widget_text_clock, widgetTextColor)
setTextColor(R.id.widget_text_clock_24, widgetTextColor)
setTextColor(R.id.widget_text_clock_12, widgetTextColor)
setTextColor(R.id.widget_date, widgetTextColor)
setTextColor(R.id.widget_next_alarm, widgetTextColor)

Expand Down
15 changes: 15 additions & 0 deletions app/src/main/res/layout/activity_settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,21 @@

</RelativeLayout>

<RelativeLayout
android:id="@+id/settings_hour_format_holder"
style="@style/SettingsHolderCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<org.fossify.commons.views.MyAppCompatCheckbox
android:id="@+id/settings_hour_format"
style="@style/SettingsCheckboxStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/use_24_hour_time_format" />

</RelativeLayout>

<RelativeLayout
android:id="@+id/settings_prevent_phone_from_sleeping_holder"
style="@style/SettingsHolderCheckboxStyle"
Expand Down
2 changes: 0 additions & 2 deletions app/src/main/res/layout/fragment_clock.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_margin"
android:format12Hour="h:mm:ss a"
android:format24Hour="k:mm:ss"
android:gravity="center_horizontal"
android:textSize="@dimen/clock_text_size"
tools:text="00:00:00" />
Expand Down
2 changes: 0 additions & 2 deletions app/src/main/res/layout/widget_config_digital.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@
android:id="@+id/config_digital_time"
android:layout_width="match_parent"
android:layout_height="@dimen/widget_digital_time_height"
android:format12Hour="h:mm"
android:format24Hour="k:mm"
android:gravity="center_horizontal"
android:includeFontPadding="false"
android:shadowColor="@android:color/black"
Expand Down
26 changes: 23 additions & 3 deletions app/src/main/res/layout/widget_digital.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,16 @@
tools:ignore="UnusedAttribute">

<TextClock
android:id="@+id/widget_text_clock"
android:id="@+id/widget_text_clock_24"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
android:autoSizeMaxTextSize="300sp"
android:autoSizeMinTextSize="2sp"
android:autoSizeStepGranularity="1sp"
android:autoSizeTextType="uniform"
android:format12Hour="h:mm"
android:format24Hour="k:mm"
android:format12Hour="HH:mm"
android:format24Hour="HH:mm"
android:gravity="center"
android:includeFontPadding="false"
android:maxLines="1"
Expand All @@ -45,6 +45,26 @@
android:textSize="@dimen/normal_text_size"
tools:text="00:00" />

<TextClock
android:id="@+id/widget_text_clock_12"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
android:autoSizeMaxTextSize="300sp"
android:autoSizeMinTextSize="2sp"
android:autoSizeStepGranularity="1sp"
android:autoSizeTextType="uniform"
android:format12Hour="k:mm a"
android:format24Hour="k:mm a"
android:gravity="center"
android:includeFontPadding="false"
android:maxLines="1"
android:shadowColor="@android:color/black"
android:shadowDy="1"
android:shadowRadius="1"
android:textSize="@dimen/normal_text_size"
tools:text="0:00 AM" />

<TextClock
android:id="@+id/widget_date"
android:layout_width="match_parent"
Expand Down

0 comments on commit 4d23489

Please sign in to comment.