From 8e7246d07a0e1abd32c73c6fd2dfac13aab699c2 Mon Sep 17 00:00:00 2001 From: wized2 Date: Mon, 21 Sep 2026 08:40:08 +0000 Subject: [PATCH] feat: optional AM/PM on digital clock widget --- .../activities/WidgetDigitalConfigureActivity.kt | 14 +++++++++++++- .../kotlin/org/fossify/clock/helpers/Config.kt | 5 +++++ .../kotlin/org/fossify/clock/helpers/Constants.kt | 2 ++ .../clock/helpers/MyDigitalTimeWidgetProvider.kt | 5 +++++ app/src/main/res/layout/widget_config_digital.xml | 8 ++++++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 34 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/clock/activities/WidgetDigitalConfigureActivity.kt b/app/src/main/kotlin/org/fossify/clock/activities/WidgetDigitalConfigureActivity.kt index 392dfdea..bb823c86 100644 --- a/app/src/main/kotlin/org/fossify/clock/activities/WidgetDigitalConfigureActivity.kt +++ b/app/src/main/kotlin/org/fossify/clock/activities/WidgetDigitalConfigureActivity.kt @@ -100,7 +100,19 @@ class WidgetDigitalConfigureActivity : SimpleActivity() { updateTextColor() - val clockFormat = if (config.use24HourFormat) FORMAT_24H else FORMAT_12H + binding.configDigitalShowAmPm.isChecked = config.widgetShowAmPm + binding.configDigitalShowAmPm.setOnCheckedChangeListener { _, checked -> + config.widgetShowAmPm = checked + val clockFormat = if (config.use24HourFormat) FORMAT_24H else if (checked) FORMAT_12H else FORMAT_12H_NO_AMPM + binding.configDigitalTime.format24Hour = clockFormat + binding.configDigitalTime.format12Hour = clockFormat + } + + val clockFormat = when { + config.use24HourFormat -> FORMAT_24H + config.widgetShowAmPm -> FORMAT_12H + else -> FORMAT_12H_NO_AMPM + } binding.configDigitalTime.format24Hour = clockFormat binding.configDigitalTime.format12Hour = clockFormat } diff --git a/app/src/main/kotlin/org/fossify/clock/helpers/Config.kt b/app/src/main/kotlin/org/fossify/clock/helpers/Config.kt index 1839bfcc..208bb8ac 100644 --- a/app/src/main/kotlin/org/fossify/clock/helpers/Config.kt +++ b/app/src/main/kotlin/org/fossify/clock/helpers/Config.kt @@ -150,4 +150,9 @@ class Config(context: Context) : BaseConfig(context) { set(migrateFirstDayOfWeek) = prefs.edit { putBoolean(MIGRATE_FIRST_DAY_OF_WEEK, migrateFirstDayOfWeek) } + + var widgetShowAmPm: Boolean + get() = prefs.getBoolean(WIDGET_SHOW_AM_PM, true) + set(showAmPm) = prefs.edit().putBoolean(WIDGET_SHOW_AM_PM, showAmPm).apply() + } diff --git a/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt b/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt index 2d812c03..906d791e 100644 --- a/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt +++ b/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt @@ -100,6 +100,8 @@ const val STOPWATCH_TOGGLE_ACTION = "org.fossify.clock.TOGGLE_STOPWATCH" // time formatting const val FORMAT_12H = "h:mm a" +const val FORMAT_12H_NO_AMPM = "h:mm" +const val WIDGET_SHOW_AM_PM = "widget_show_am_pm" const val FORMAT_24H = "HH:mm" const val FORMAT_12H_WITH_SECONDS = "h:mm:ss a" const val FORMAT_24H_WITH_SECONDS = "HH:mm:ss" diff --git a/app/src/main/kotlin/org/fossify/clock/helpers/MyDigitalTimeWidgetProvider.kt b/app/src/main/kotlin/org/fossify/clock/helpers/MyDigitalTimeWidgetProvider.kt index 768a8cb9..60c093e0 100644 --- a/app/src/main/kotlin/org/fossify/clock/helpers/MyDigitalTimeWidgetProvider.kt +++ b/app/src/main/kotlin/org/fossify/clock/helpers/MyDigitalTimeWidgetProvider.kt @@ -66,6 +66,11 @@ class MyDigitalTimeWidgetProvider : AppWidgetProvider() { setViewVisibility(clockToHide, View.GONE) setViewVisibility(clockToShow, View.VISIBLE) + + // Optional AM/PM for 12-hour digital widget (#138) + val format12 = if (config.widgetShowAmPm) FORMAT_12H else FORMAT_12H_NO_AMPM + setCharSequence(R.id.widget_text_clock_12, "setFormat12Hour", format12) + setCharSequence(R.id.widget_text_clock_12, "setFormat24Hour", FORMAT_24H) } } diff --git a/app/src/main/res/layout/widget_config_digital.xml b/app/src/main/res/layout/widget_config_digital.xml index 7b513486..d096164e 100644 --- a/app/src/main/res/layout/widget_config_digital.xml +++ b/app/src/main/res/layout/widget_config_digital.xml @@ -92,6 +92,14 @@ android:layout_alignParentBottom="true" android:layout_margin="@dimen/tiny_margin" /> + +