Add lockscreen settings to xfw app

This commit is contained in:
Willy-JL
2023-03-19 00:50:04 +00:00
parent f63f8b8398
commit 12fe307eed
6 changed files with 113 additions and 9 deletions
@@ -3,6 +3,7 @@ ADD_SCENE(xtreme_app, interface, Interface)
ADD_SCENE(xtreme_app, interface_graphics, InterfaceGraphics)
ADD_SCENE(xtreme_app, interface_mainmenu, InterfaceMainmenu)
ADD_SCENE(xtreme_app, interface_mainmenu_add, InterfaceMainmenuAdd)
ADD_SCENE(xtreme_app, interface_lockscreen, InterfaceLockscreen)
ADD_SCENE(xtreme_app, interface_statusbar, InterfaceStatusbar)
ADD_SCENE(xtreme_app, interface_common, InterfaceCommon)
ADD_SCENE(xtreme_app, protocols, Protocols)
@@ -3,6 +3,7 @@
enum VarItemListIndex {
VarItemListIndexGraphics,
VarItemListIndexMainmenu,
VarItemListIndexLockscreen,
VarItemListIndexStatusbar,
VarItemListIndexCommon,
};
@@ -18,6 +19,7 @@ void xtreme_app_scene_interface_on_enter(void* context) {
variable_item_list_add(var_item_list, "Graphics", 0, NULL, app);
variable_item_list_add(var_item_list, "Mainmenu", 0, NULL, app);
variable_item_list_add(var_item_list, "Lockscreen", 0, NULL, app);
variable_item_list_add(var_item_list, "Statusbar", 0, NULL, app);
variable_item_list_add(var_item_list, "Common", 0, NULL, app);
@@ -44,6 +46,9 @@ bool xtreme_app_scene_interface_on_event(void* context, SceneManagerEvent event)
case VarItemListIndexMainmenu:
scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceMainmenu);
break;
case VarItemListIndexLockscreen:
scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceLockscreen);
break;
case VarItemListIndexStatusbar:
scene_manager_next_scene(app->scene_manager, XtremeAppSceneInterfaceStatusbar);
break;
@@ -0,0 +1,86 @@
#include "../xtreme_app.h"
enum VarItemListIndex {
VarItemListIndexShowClock,
VarItemListIndexShowDate,
};
void xtreme_app_scene_interface_lockscreen_var_item_list_callback(void* context, uint32_t index) {
XtremeApp* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
static void xtreme_app_scene_interface_lockscreen_show_time_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_time = 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);
variable_item_set_current_value_text(item, value ? "ON" : "OFF");
XTREME_SETTINGS()->lockscreen_date = value;
app->save_settings = true;
}
static void xtreme_app_scene_interface_lockscreen_show_statusbar_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_statusbar = value;
app->save_settings = true;
}
void xtreme_app_scene_interface_lockscreen_on_enter(void* context) {
XtremeApp* app = context;
XtremeSettings* xtreme_settings = XTREME_SETTINGS();
VariableItemList* var_item_list = app->var_item_list;
VariableItem* item;
item = variable_item_list_add(
var_item_list, "Show Time", 2, xtreme_app_scene_interface_lockscreen_show_time_changed, app);
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 Date", 2, xtreme_app_scene_interface_lockscreen_show_date_changed, app);
variable_item_set_current_value_index(item, xtreme_settings->lockscreen_date);
variable_item_set_current_value_text(item, xtreme_settings->lockscreen_date ? "ON" : "OFF");
item = variable_item_list_add(
var_item_list, "Show Statusbar", 2, xtreme_app_scene_interface_lockscreen_show_statusbar_changed, app);
variable_item_set_current_value_index(item, xtreme_settings->lockscreen_statusbar);
variable_item_set_current_value_text(item, xtreme_settings->lockscreen_statusbar ? "ON" : "OFF");
variable_item_list_set_enter_callback(
var_item_list, xtreme_app_scene_interface_lockscreen_var_item_list_callback, app);
variable_item_list_set_selected_item(
var_item_list, scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneInterfaceLockscreen));
view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewVarItemList);
}
bool xtreme_app_scene_interface_lockscreen_on_event(void* context, SceneManagerEvent event) {
XtremeApp* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
scene_manager_set_scene_state(app->scene_manager, XtremeAppSceneInterfaceLockscreen, event.event);
consumed = true;
switch(event.event) {
default:
break;
}
}
return consumed;
}
void xtreme_app_scene_interface_lockscreen_on_exit(void* context) {
XtremeApp* app = context;
variable_item_list_reset(app->var_item_list);
}
@@ -91,17 +91,23 @@ 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);
canvas_set_font(canvas, FontBigNumbers);
canvas_draw_str(canvas, 0, 64 + y, time_str);
int meridian_offset = canvas_string_width(canvas, time_str) + 2;
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 0, 48 + y, date_str);
if(time_format == LocaleTimeFormat12h) {
canvas_draw_str(canvas, 0 + meridian_offset, 64 + y, meridian_str);
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;
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 0 + meridian_offset, 64 + y, meridian_str);
}
}
if(xtreme_settings->lockscreen_date) {
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 0, 48 + y + 16 * !xtreme_settings->lockscreen_time, date_str);
}
canvas_set_font(canvas, FontBatteryPercent);
if(model->view_state == DesktopViewLockedStateLockedHintShown) {
canvas_set_font(canvas, FontBatteryPercent);
canvas_draw_str_aligned(canvas, 79, 6 + y, AlignRight, AlignCenter, "Press 3x");
canvas_draw_icon(canvas, 81, 2 + y, &I_Pin_back_arrow_10x8);
}
+3
View File
@@ -40,6 +40,9 @@ void XTREME_SETTINGS_LOAD() {
xtreme_settings->cycle_anims = 0; // Meta.txt
xtreme_settings->unlock_anims = false; // OFF
xtreme_settings->wii_menu = true; // ON
xtreme_settings->lockscreen_time = true; // ON
xtreme_settings->lockscreen_date = true; // ON
xtreme_settings->lockscreen_statusbar = true; // ON
xtreme_settings->battery_icon = BatteryIconBarPercent; // Bar %
xtreme_settings->status_icons = true; // ON
xtreme_settings->bar_borders = true; // ON
+4 -1
View File
@@ -15,7 +15,7 @@ extern "C" {
#define MAX_PACK_NAME_LEN 32
#define XTREME_SETTINGS_VERSION (7)
#define XTREME_SETTINGS_VERSION (8)
#define XTREME_SETTINGS_PATH_OLD INT_PATH(XTREME_SETTINGS_FILE_NAME)
#define XTREME_SETTINGS_PATH EXT_PATH(XTREME_SETTINGS_FILE_NAME)
#define XTREME_SETTINGS_MAGIC (0x69)
@@ -28,6 +28,9 @@ typedef struct {
int32_t cycle_anims;
bool unlock_anims;
bool wii_menu;
bool lockscreen_time;
bool lockscreen_date;
bool lockscreen_statusbar;
BatteryIcon battery_icon;
bool status_icons;
bool bar_borders;