diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_lockscreen.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_lockscreen.c index 5544ee941..59ac287fc 100644 --- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_lockscreen.c +++ b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_lockscreen.c @@ -18,6 +18,14 @@ static void xtreme_app_scene_interface_lockscreen_show_time_changed(VariableItem app->save_settings = true; } +static void xtreme_app_scene_interface_lockscreen_show_seconds_changed(VariableItem* item) { + XtremeApp* app = variable_item_get_context(item); + bool value = variable_item_get_current_value_index(item); + variable_item_set_current_value_text(item, value ? "ON" : "OFF"); + XTREME_SETTINGS()->lockscreen_seconds = value; + app->save_settings = true; +} + static void xtreme_app_scene_interface_lockscreen_show_date_changed(VariableItem* item) { XtremeApp* app = variable_item_get_context(item); bool value = variable_item_get_current_value_index(item); @@ -57,6 +65,15 @@ void xtreme_app_scene_interface_lockscreen_on_enter(void* context) { variable_item_set_current_value_index(item, xtreme_settings->lockscreen_time); variable_item_set_current_value_text(item, xtreme_settings->lockscreen_time ? "ON" : "OFF"); + item = variable_item_list_add( + var_item_list, + "Show Seconds", + 2, + xtreme_app_scene_interface_lockscreen_show_seconds_changed, + app); + variable_item_set_current_value_index(item, xtreme_settings->lockscreen_seconds); + variable_item_set_current_value_text(item, xtreme_settings->lockscreen_seconds ? "ON" : "OFF"); + item = variable_item_list_add( var_item_list, "Show Date", diff --git a/applications/services/desktop/views/desktop_view_locked.c b/applications/services/desktop/views/desktop_view_locked.c index 9a24414f7..6d3aeb819 100644 --- a/applications/services/desktop/views/desktop_view_locked.c +++ b/applications/services/desktop/views/desktop_view_locked.c @@ -67,22 +67,24 @@ void desktop_view_locked_draw_lockscreen(Canvas* canvas, void* m) { DesktopViewLockedModel* model = m; int y = model->cover_offset; char time_str[9]; + char second_str[5]; char date_str[14]; char meridian_str[3]; FuriHalRtcDateTime datetime; furi_hal_rtc_get_datetime(&datetime); LocaleTimeFormat time_format = locale_get_time_format(); LocaleDateFormat date_format = locale_get_date_format(); + XtremeSettings* xtreme_settings = XTREME_SETTINGS(); + bool pm; if(time_format == LocaleTimeFormat24h) { - snprintf(time_str, 9, "%.2d:%.2d", datetime.hour, datetime.minute); + pm = false; } else { - bool pm = datetime.hour > 12; - bool pm12 = datetime.hour >= 12; - snprintf( - time_str, 9, "%.2d:%.2d", pm ? datetime.hour - 12 : datetime.hour, datetime.minute); - snprintf(meridian_str, 3, pm12 ? "PM" : "AM"); + pm = datetime.hour > 12; + snprintf(meridian_str, 3, datetime.hour >= 12 ? "PM" : "AM"); } + snprintf(time_str, 9, "%.2d:%.2d", pm ? datetime.hour - 12 : datetime.hour, datetime.minute); + snprintf(second_str, 5, ":%.2d", datetime.second); if(date_format == LocaleDateFormatYMD) { snprintf(date_str, 14, "%.4d-%.2d-%.2d", datetime.year, datetime.month, datetime.day); @@ -92,15 +94,19 @@ void desktop_view_locked_draw_lockscreen(Canvas* canvas, void* m) { snprintf(date_str, 14, "%.2d-%.2d-%.4d", datetime.day, datetime.month, datetime.year); } - XtremeSettings* xtreme_settings = XTREME_SETTINGS(); canvas_draw_icon(canvas, 0, 0 + y, XTREME_ASSETS()->I_Lockscreen); if(xtreme_settings->lockscreen_time) { canvas_set_font(canvas, FontBigNumbers); canvas_draw_str(canvas, 0, 64 + y, time_str); - if(time_format == LocaleTimeFormat12h) { - int meridian_offset = canvas_string_width(canvas, time_str) + 2; + int offset = canvas_string_width(canvas, time_str) + 2; + if(xtreme_settings->lockscreen_seconds) { canvas_set_font(canvas, FontSecondary); - canvas_draw_str(canvas, 0 + meridian_offset, 64 + y, meridian_str); + canvas_draw_str(canvas, 0 + offset, 64 + y, second_str); + offset += canvas_string_width(canvas, ":00") + 2; + } + if(time_format == LocaleTimeFormat12h) { + canvas_set_font(canvas, FontKeyboard); + canvas_draw_str(canvas, 0 + offset, 64 + y, meridian_str); } } if(xtreme_settings->lockscreen_date) { diff --git a/applications/services/xtreme/settings.c b/applications/services/xtreme/settings.c index a5b7ee6cb..ec1f89ecf 100644 --- a/applications/services/xtreme/settings.c +++ b/applications/services/xtreme/settings.c @@ -51,6 +51,7 @@ void XTREME_SETTINGS_LOAD() { xtreme_settings->fallback_anim = true; // ON xtreme_settings->wii_menu = true; // ON xtreme_settings->lockscreen_time = true; // ON + xtreme_settings->lockscreen_seconds = false; // ON xtreme_settings->lockscreen_date = true; // ON xtreme_settings->lockscreen_statusbar = true; // ON xtreme_settings->lockscreen_prompt = true; // ON diff --git a/applications/services/xtreme/settings.h b/applications/services/xtreme/settings.h index ea4838e5a..0261b68ae 100644 --- a/applications/services/xtreme/settings.h +++ b/applications/services/xtreme/settings.h @@ -13,7 +13,7 @@ extern "C" { #define MAX_PACK_NAME_LEN 32 -#define XTREME_SETTINGS_VERSION (10) +#define XTREME_SETTINGS_VERSION (11) #define XTREME_SETTINGS_MAGIC (0x69) #define XTREME_SETTINGS_OLD_INT_PATH INT_PATH(".xtreme.settings") #define XTREME_SETTINGS_OLD_PATH EXT_PATH(".xtreme.settings") @@ -29,6 +29,7 @@ typedef struct { bool fallback_anim; bool wii_menu; bool lockscreen_time; + bool lockscreen_seconds; bool lockscreen_date; bool lockscreen_statusbar; bool lockscreen_prompt; diff --git a/assets/icons/Interface/Lockscreen.png b/assets/icons/Interface/Lockscreen.png index c9aa8bcd7..ab4f0a739 100644 Binary files a/assets/icons/Interface/Lockscreen.png and b/assets/icons/Interface/Lockscreen.png differ