mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-06-15 20:01:54 -07:00
Move desktop keybinds to external file
This commit is contained in:
@@ -464,7 +464,7 @@ void desktop_run_keybind(Desktop* instance, InputType _type, InputKey _key) {
|
||||
|
||||
KeybindType type = keybind_types[_type];
|
||||
KeybindKey key = keybind_keys[_key];
|
||||
const char* keybind = instance->settings.keybinds[type][key].data;
|
||||
const char* keybind = instance->keybinds[type][key].data;
|
||||
if(!strnlen(keybind, MAX_KEYBIND_LENGTH)) return;
|
||||
|
||||
if(!strncmp(keybind, "Archive", MAX_KEYBIND_LENGTH)) {
|
||||
@@ -498,18 +498,22 @@ int32_t desktop_srv(void* p) {
|
||||
}
|
||||
if(!ok) {
|
||||
memset(&desktop->settings, 0, sizeof(desktop->settings));
|
||||
strcpy(desktop->settings.keybinds[KeybindTypePress][KeybindKeyUp].data, "Lock Menu");
|
||||
strcpy(desktop->settings.keybinds[KeybindTypePress][KeybindKeyDown].data, "Archive");
|
||||
strcpy(desktop->settings.keybinds[KeybindTypePress][KeybindKeyRight].data, "Passport");
|
||||
strcpy(
|
||||
desktop->settings.keybinds[KeybindTypePress][KeybindKeyLeft].data,
|
||||
EXT_PATH("apps/Misc/nightstand.fap"));
|
||||
strcpy(desktop->settings.keybinds[KeybindTypeHold][KeybindKeyRight].data, "Device Info");
|
||||
strcpy(desktop->settings.keybinds[KeybindTypeHold][KeybindKeyLeft].data, "Lock with PIN");
|
||||
furi_hal_rtc_reset_flag(FuriHalRtcFlagLock);
|
||||
furi_hal_rtc_set_pin_fails(0);
|
||||
}
|
||||
|
||||
if(!DESKTOP_KEYBINDS_LOAD(&desktop->keybinds, sizeof(desktop->keybinds))) {
|
||||
memset(&desktop->keybinds, 0, sizeof(desktop->keybinds));
|
||||
strcpy(desktop->keybinds[KeybindTypePress][KeybindKeyUp].data, "Lock Menu");
|
||||
strcpy(desktop->keybinds[KeybindTypePress][KeybindKeyDown].data, "Archive");
|
||||
strcpy(desktop->keybinds[KeybindTypePress][KeybindKeyRight].data, "Passport");
|
||||
strcpy(
|
||||
desktop->keybinds[KeybindTypePress][KeybindKeyLeft].data,
|
||||
EXT_PATH("apps/Misc/nightstand.fap"));
|
||||
strcpy(desktop->keybinds[KeybindTypeHold][KeybindKeyRight].data, "Device Info");
|
||||
strcpy(desktop->keybinds[KeybindTypeHold][KeybindKeyLeft].data, "Lock with PIN");
|
||||
}
|
||||
|
||||
desktop_clock_toggle_view(desktop, XTREME_SETTINGS()->statusbar_clock);
|
||||
|
||||
scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain);
|
||||
|
||||
@@ -55,6 +55,7 @@ struct Desktop {
|
||||
ViewStack* locked_view_stack;
|
||||
|
||||
DesktopSettings settings;
|
||||
Keybind keybinds[KeybindTypeCount][KeybindKeyCount];
|
||||
DesktopViewPinInput* pin_input_view;
|
||||
|
||||
ViewPort* lock_icon_viewport;
|
||||
|
||||
@@ -17,3 +17,13 @@ bool DESKTOP_SETTINGS_LOAD(DesktopSettings* x) {
|
||||
DESKTOP_SETTINGS_MAGIC,
|
||||
DESKTOP_SETTINGS_VER);
|
||||
}
|
||||
|
||||
bool DESKTOP_KEYBINDS_SAVE(Keybind (*x)[KeybindTypeCount][KeybindKeyCount], size_t size) {
|
||||
return saved_struct_save(
|
||||
DESKTOP_KEYBINDS_PATH, x, size, DESKTOP_KEYBINDS_MAGIC, DESKTOP_KEYBINDS_VER);
|
||||
}
|
||||
|
||||
bool DESKTOP_KEYBINDS_LOAD(Keybind (*x)[KeybindTypeCount][KeybindKeyCount], size_t size) {
|
||||
return saved_struct_load(
|
||||
DESKTOP_KEYBINDS_PATH, x, size, DESKTOP_KEYBINDS_MAGIC, DESKTOP_KEYBINDS_VER);
|
||||
}
|
||||
|
||||
@@ -6,12 +6,14 @@
|
||||
#include <toolbox/saved_struct.h>
|
||||
#include <storage/storage.h>
|
||||
|
||||
#define DESKTOP_SETTINGS_VER (11)
|
||||
|
||||
#define DESKTOP_SETTINGS_OLD_PATH CFG_PATH("desktop.settings")
|
||||
#define DESKTOP_SETTINGS_PATH INT_PATH(".desktop.settings")
|
||||
#define DESKTOP_SETTINGS_MAGIC (0x17)
|
||||
#define PIN_MAX_LENGTH 12
|
||||
#define DESKTOP_SETTINGS_VER (11)
|
||||
|
||||
#define DESKTOP_KEYBINDS_PATH CFG_PATH(".desktop.keybinds")
|
||||
#define DESKTOP_KEYBINDS_MAGIC (0x14)
|
||||
#define DESKTOP_KEYBINDS_VER (1)
|
||||
|
||||
#define DESKTOP_SETTINGS_RUN_PIN_SETUP_ARG "run_pin_setup"
|
||||
|
||||
@@ -46,9 +48,12 @@ typedef struct {
|
||||
PinCode pin_code;
|
||||
uint32_t auto_lock_delay_ms;
|
||||
bool auto_lock_with_pin;
|
||||
Keybind keybinds[KeybindTypeCount][KeybindKeyCount];
|
||||
} DesktopSettings;
|
||||
|
||||
bool DESKTOP_SETTINGS_SAVE(DesktopSettings* x);
|
||||
|
||||
bool DESKTOP_SETTINGS_LOAD(DesktopSettings* x);
|
||||
|
||||
bool DESKTOP_KEYBINDS_SAVE(Keybind (*x)[KeybindTypeCount][KeybindKeyCount], size_t size);
|
||||
|
||||
bool DESKTOP_KEYBINDS_LOAD(Keybind (*x)[KeybindTypeCount][KeybindKeyCount], size_t size);
|
||||
|
||||
+7
-4
@@ -34,9 +34,10 @@ static void desktop_settings_scene_keybinds_choose_main_callback(void* context,
|
||||
scene_manager_get_scene_state(app->scene_manager, DesktopSettingsAppSceneKeybindsType);
|
||||
KeybindKey key =
|
||||
scene_manager_get_scene_state(app->scene_manager, DesktopSettingsAppSceneKeybindsKey);
|
||||
char* keybind = app->desktop->settings.keybinds[type][key].data;
|
||||
char* keybind = app->desktop->keybinds[type][key].data;
|
||||
|
||||
strncpy(keybind, FLIPPER_APPS[index].name, MAX_KEYBIND_LENGTH);
|
||||
DESKTOP_KEYBINDS_SAVE(&app->desktop->keybinds, sizeof(app->desktop->keybinds));
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
@@ -49,7 +50,7 @@ static void desktop_settings_scene_keybinds_choose_ext_callback(void* context, u
|
||||
scene_manager_get_scene_state(app->scene_manager, DesktopSettingsAppSceneKeybindsType);
|
||||
KeybindKey key =
|
||||
scene_manager_get_scene_state(app->scene_manager, DesktopSettingsAppSceneKeybindsKey);
|
||||
char* keybind = app->desktop->settings.keybinds[type][key].data;
|
||||
char* keybind = app->desktop->keybinds[type][key].data;
|
||||
|
||||
const DialogsFileBrowserOptions browser_options = {
|
||||
.extension = ".fap",
|
||||
@@ -71,6 +72,7 @@ static void desktop_settings_scene_keybinds_choose_ext_callback(void* context, u
|
||||
if(dialog_file_browser_show(app->dialogs, temp_path, temp_path, &browser_options)) {
|
||||
submenu_reset(app->submenu); // Prevent menu from being shown when we exiting scene
|
||||
strncpy(keybind, furi_string_get_cstr(temp_path), MAX_KEYBIND_LENGTH);
|
||||
DESKTOP_KEYBINDS_SAVE(&app->desktop->keybinds, sizeof(app->desktop->keybinds));
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
@@ -84,9 +86,10 @@ static void desktop_settings_scene_keybinds_choose_extra_callback(void* context,
|
||||
scene_manager_get_scene_state(app->scene_manager, DesktopSettingsAppSceneKeybindsType);
|
||||
KeybindKey key =
|
||||
scene_manager_get_scene_state(app->scene_manager, DesktopSettingsAppSceneKeybindsKey);
|
||||
char* keybind = app->desktop->settings.keybinds[type][key].data;
|
||||
char* keybind = app->desktop->keybinds[type][key].data;
|
||||
|
||||
strncpy(keybind, EXTRA_OPTIONS[index - FLIPPER_APPS_COUNT], MAX_KEYBIND_LENGTH);
|
||||
DESKTOP_KEYBINDS_SAVE(&app->desktop->keybinds, sizeof(app->desktop->keybinds));
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
@@ -102,7 +105,7 @@ void desktop_settings_scene_keybinds_choose_on_enter(void* context) {
|
||||
KeybindKey key =
|
||||
scene_manager_get_scene_state(app->scene_manager, DesktopSettingsAppSceneKeybindsKey);
|
||||
uint32_t pre_select_item = 0;
|
||||
char* keybind = app->desktop->settings.keybinds[type][key].data;
|
||||
char* keybind = app->desktop->keybinds[type][key].data;
|
||||
size_t submenu_i = -1;
|
||||
|
||||
for(size_t i = 0; i < FLIPPER_APPS_COUNT; i++) {
|
||||
|
||||
Reference in New Issue
Block a user