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..9b52a74f 100644 --- a/app/src/main/kotlin/org/fossify/clock/activities/WidgetDigitalConfigureActivity.kt +++ b/app/src/main/kotlin/org/fossify/clock/activities/WidgetDigitalConfigureActivity.kt @@ -7,9 +7,11 @@ import android.graphics.Color import android.os.Build import android.os.Bundle import android.widget.SeekBar +import androidx.core.view.isVisible import org.fossify.clock.databinding.WidgetConfigDigitalBinding import org.fossify.clock.extensions.config import org.fossify.clock.helpers.FORMAT_12H +import org.fossify.clock.helpers.FORMAT_12H_NO_AM_PM import org.fossify.clock.helpers.FORMAT_24H import org.fossify.clock.helpers.MyDigitalTimeWidgetProvider import org.fossify.clock.helpers.SIMPLE_PHONE @@ -30,6 +32,7 @@ class WidgetDigitalConfigureActivity : SimpleActivity() { private var mWidgetId = 0 private var mBgColor = 0 private var mTextColor = 0 + private var mShowAmPm = true private var mBgColorWithoutTransparency = 0 private var mFeatureLockedDialog: FeatureLockedDialog? = null private val binding: WidgetConfigDigitalBinding by viewBinding(WidgetConfigDigitalBinding::inflate) @@ -60,6 +63,13 @@ class WidgetDigitalConfigureActivity : SimpleActivity() { binding.configDigitalBgColor.setOnClickListener { pickBackgroundColor() } binding.configDigitalTextColor.setOnClickListener { pickTextColor() } + binding.configDigitalShowAmPm.isVisible = !config.use24HourFormat + binding.configDigitalShowAmPm.isChecked = mShowAmPm + binding.configDigitalShowAmPm.setOnCheckedChangeListener { _, isChecked -> + mShowAmPm = isChecked + updateClockPreviewFormat() + } + val primaryColor = getProperPrimaryColor() binding.configDigitalBgSeekbar.setColors(mTextColor, primaryColor, primaryColor) @@ -98,15 +108,30 @@ class WidgetDigitalConfigureActivity : SimpleActivity() { mTextColor = resources.getColor(org.fossify.commons.R.color.you_primary_color, theme) } + mShowAmPm = config.widgetShowAmPm updateTextColor() + updateClockPreviewFormat() + } + + private fun updateClockPreviewFormat() { + val clockFormat = if (config.use24HourFormat) { + FORMAT_24H + } else if (mShowAmPm) { + FORMAT_12H + } else { + FORMAT_12H_NO_AM_PM + } - val clockFormat = if (config.use24HourFormat) FORMAT_24H else FORMAT_12H binding.configDigitalTime.format24Hour = clockFormat binding.configDigitalTime.format12Hour = clockFormat } private fun saveConfig() { - storeWidgetColors() + config.apply { + widgetBgColor = mBgColor + widgetTextColor = mTextColor + widgetShowAmPm = mShowAmPm + } requestWidgetUpdate() Intent().apply { @@ -116,13 +141,6 @@ class WidgetDigitalConfigureActivity : SimpleActivity() { finish() } - private fun storeWidgetColors() { - config.apply { - widgetBgColor = mBgColor - widgetTextColor = mTextColor - } - } - private fun pickBackgroundColor() { ColorPickerDialog(this, mBgColorWithoutTransparency) { wasPositivePressed, color -> if (wasPositivePressed) { 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..7ea2be72 100644 --- a/app/src/main/kotlin/org/fossify/clock/helpers/Config.kt +++ b/app/src/main/kotlin/org/fossify/clock/helpers/Config.kt @@ -138,6 +138,10 @@ class Config(context: Context) : BaseConfig(context) { putBoolean(WAS_INITIAL_WIDGET_SET_UP, wasInitialWidgetSetUp) } + var widgetShowAmPm: Boolean + get() = prefs.getBoolean(WIDGET_SHOW_AM_PM, true) + set(widgetShowAmPm) = prefs.edit { putBoolean(WIDGET_SHOW_AM_PM, widgetShowAmPm) } + var lastDataExportPath: String get() = prefs.getString(LAST_DATA_EXPORT_PATH, "")!! set(lastDataExportPath) = prefs.edit { 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..e6a0f892 100644 --- a/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt +++ b/app/src/main/kotlin/org/fossify/clock/helpers/Constants.kt @@ -38,6 +38,7 @@ const val TIMERS_SORT_BY = "timers_sort_by" const val TIMERS_CUSTOM_SORTING = "timers_custom_sorting" const val STOPWATCH_LAPS_SORT_BY = "stopwatch_laps_sort_by" const val WAS_INITIAL_WIDGET_SET_UP = "was_initial_widget_set_up" +const val WIDGET_SHOW_AM_PM = "widget_show_am_pm" const val DATA_EXPORT_EXTENSION = ".json" const val LAST_DATA_EXPORT_PATH = "last_alarms_export_path" const val MIGRATE_FIRST_DAY_OF_WEEK = "migrate_first_day_of_week" @@ -100,6 +101,7 @@ const val STOPWATCH_TOGGLE_ACTION = "org.fossify.clock.TOGGLE_STOPWATCH" // time formatting const val FORMAT_12H = "h:mm a" +const val FORMAT_12H_NO_AM_PM = "h:mm" 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..ceff09e3 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,9 @@ class MyDigitalTimeWidgetProvider : AppWidgetProvider() { setViewVisibility(clockToHide, View.GONE) setViewVisibility(clockToShow, View.VISIBLE) + + val format12Hour = if (context.config.widgetShowAmPm) FORMAT_12H else FORMAT_12H_NO_AM_PM + setCharSequence(R.id.widget_text_clock_12, "setFormat12Hour", format12Hour) } } diff --git a/app/src/main/res/layout/widget_config_digital.xml b/app/src/main/res/layout/widget_config_digital.xml index 7b513486..ca1d2a71 100644 --- a/app/src/main/res/layout/widget_config_digital.xml +++ b/app/src/main/res/layout/widget_config_digital.xml @@ -58,6 +58,15 @@ + + Time expired Clock and date Use text shadow + Show AM/PM Swipe right to Dismiss, or left to Snooze. Creation order Alarm time