Left handed mode

This commit is contained in:
Willy-JL
2023-03-01 00:46:40 +00:00
parent b9cc980504
commit 3c9ccd2c50
5 changed files with 44 additions and 0 deletions

View File

@@ -3,6 +3,7 @@
enum VarItemListIndex { enum VarItemListIndex {
VarItemListIndexSortDirsFirst, VarItemListIndexSortDirsFirst,
VarItemListIndexDarkMode, VarItemListIndexDarkMode,
VarItemListIndexLeftHanded,
VarItemListIndexChangeDeviceName, VarItemListIndexChangeDeviceName,
}; };
@@ -27,6 +28,14 @@ static void xtreme_app_scene_misc_dark_mode_changed(VariableItem* item) {
app->save_settings = true; app->save_settings = true;
} }
static void xtreme_app_scene_misc_left_handed_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()->left_handed = value;
app->save_settings = true;
}
void xtreme_app_scene_misc_on_enter(void* context) { void xtreme_app_scene_misc_on_enter(void* context) {
XtremeApp* app = context; XtremeApp* app = context;
XtremeSettings* xtreme_settings = XTREME_SETTINGS(); XtremeSettings* xtreme_settings = XTREME_SETTINGS();
@@ -43,6 +52,11 @@ void xtreme_app_scene_misc_on_enter(void* context) {
variable_item_set_current_value_index(item, xtreme_settings->dark_mode); variable_item_set_current_value_index(item, xtreme_settings->dark_mode);
variable_item_set_current_value_text(item, xtreme_settings->dark_mode ? "ON" : "OFF"); variable_item_set_current_value_text(item, xtreme_settings->dark_mode ? "ON" : "OFF");
item = variable_item_list_add(
var_item_list, "Exp. Left Handed", 2, xtreme_app_scene_misc_left_handed_changed, app);
variable_item_set_current_value_index(item, xtreme_settings->left_handed);
variable_item_set_current_value_text(item, xtreme_settings->left_handed ? "ON" : "OFF");
variable_item_list_add(var_item_list, "Change Device Name", 0, NULL, app); variable_item_list_add(var_item_list, "Change Device Name", 0, NULL, app);
variable_item_list_set_enter_callback( variable_item_list_set_enter_callback(

View File

@@ -27,6 +27,8 @@ Canvas* canvas_init() {
// Wake up display // Wake up display
u8g2_SetPowerSave(&canvas->fb, 0); u8g2_SetPowerSave(&canvas->fb, 0);
canvas_set_orientation(canvas, CanvasOrientationHorizontal);
// Clear buffer and send to device // Clear buffer and send to device
canvas_clear(canvas); canvas_clear(canvas);
canvas_commit(canvas); canvas_commit(canvas);
@@ -408,6 +410,13 @@ void canvas_set_bitmap_mode(Canvas* canvas, bool alpha) {
void canvas_set_orientation(Canvas* canvas, CanvasOrientation orientation) { void canvas_set_orientation(Canvas* canvas, CanvasOrientation orientation) {
furi_assert(canvas); furi_assert(canvas);
if(XTREME_SETTINGS()->left_handed) {
if(orientation == CanvasOrientationHorizontal) {
orientation = CanvasOrientationHorizontalFlip;
} else if(orientation == CanvasOrientationHorizontalFlip) {
orientation = CanvasOrientationHorizontal;
}
}
if(canvas->orientation != orientation) { if(canvas->orientation != orientation) {
switch(orientation) { switch(orientation) {
case CanvasOrientationHorizontal: case CanvasOrientationHorizontal:

View File

@@ -326,6 +326,25 @@ static void gui_input(Gui* gui, InputEvent* input_event) {
gui->ongoing_input_view_port = view_port; gui->ongoing_input_view_port = view_port;
} }
if(XTREME_SETTINGS()->left_handed) {
switch(input_event->key) {
case InputKeyUp:
input_event->key = InputKeyDown;
break;
case InputKeyDown:
input_event->key = InputKeyUp;
break;
case InputKeyLeft:
input_event->key = InputKeyRight;
break;
case InputKeyRight:
input_event->key = InputKeyLeft;
break;
default:
break;
}
}
if(view_port && view_port == gui->ongoing_input_view_port) { if(view_port && view_port == gui->ongoing_input_view_port) {
view_port_input(view_port, input_event); view_port_input(view_port, input_event);
} else if(gui->ongoing_input_view_port && input_event->type == InputTypeRelease) { } else if(gui->ongoing_input_view_port && input_event->type == InputTypeRelease) {

View File

@@ -42,6 +42,7 @@ void XTREME_SETTINGS_LOAD() {
xtreme_settings->butthurt_timer = 43200; // 12 H xtreme_settings->butthurt_timer = 43200; // 12 H
xtreme_settings->sort_dirs_first = true; // ON xtreme_settings->sort_dirs_first = true; // ON
xtreme_settings->dark_mode = false; // OFF xtreme_settings->dark_mode = false; // OFF
xtreme_settings->left_handed = false; // OFF
} }
} }
} }

View File

@@ -31,6 +31,7 @@ typedef struct {
int32_t butthurt_timer; int32_t butthurt_timer;
bool sort_dirs_first; bool sort_dirs_first;
bool dark_mode; bool dark_mode;
bool left_handed;
} XtremeSettings; } XtremeSettings;
XtremeSettings* XTREME_SETTINGS(); XtremeSettings* XTREME_SETTINGS();