Merge desktop service changes, refactor some old code

This commit is contained in:
Willy-JL
2024-08-08 00:40:32 +02:00
parent b14944b029
commit 7905b829cf
6 changed files with 243 additions and 179 deletions

View File

@@ -43,7 +43,7 @@ void desktop_lock_menu_set_pin_state(DesktopLockMenuView* lock_menu, bool pin_is
DesktopLockMenuViewModel * model,
{
model->pin_is_set = pin_is_set;
model->pin_lock = pin_is_set;
model->lock_popup_index = pin_is_set; // Select with PIN by default if set
},
true);
}
@@ -166,13 +166,13 @@ void desktop_lock_menu_draw_callback(Canvas* canvas, void* model) {
}
}
if(m->show_lock_menu) {
if(m->show_lock_popup) {
canvas_set_font(canvas, FontSecondary);
elements_bold_rounded_frame(canvas, 24, 4, 80, 56);
canvas_draw_str_aligned(canvas, 64, 16, AlignCenter, AlignCenter, "Keypad Lock");
canvas_draw_str_aligned(canvas, 64, 32, AlignCenter, AlignCenter, "PIN Code Lock");
canvas_draw_str_aligned(canvas, 64, 48, AlignCenter, AlignCenter, "PIN Lock + OFF");
elements_frame(canvas, 28, 8 + m->pin_lock * 16, 72, 15);
elements_frame(canvas, 28, 8 + m->lock_popup_index * 16, 72, 15);
}
}
@@ -187,8 +187,8 @@ bool desktop_lock_menu_input_callback(InputEvent* event, void* context) {
DesktopLockMenuView* lock_menu = context;
uint8_t idx = 0;
int pin_lock = 0;
bool show_lock_menu = false;
bool show_lock_popup = false;
DesktopLockMenuPopupIndex lock_popup_index = 0;
bool stealth_mode = false;
bool consumed = true;
@@ -196,26 +196,28 @@ bool desktop_lock_menu_input_callback(InputEvent* event, void* context) {
lock_menu->view,
DesktopLockMenuViewModel * model,
{
show_lock_menu = model->show_lock_menu;
show_lock_popup = model->show_lock_popup;
stealth_mode = model->stealth_mode;
if((event->type == InputTypeShort) || (event->type == InputTypeRepeat)) {
if(model->show_lock_menu) {
if(model->show_lock_popup) {
if(event->key == InputKeyUp) {
model->pin_lock--;
if(model->pin_lock < 0) {
model->pin_lock = 2;
if(model->lock_popup_index == 0) {
model->lock_popup_index = DesktopLockMenuPopupIndexMAX - 1;
} else {
model->lock_popup_index--;
}
} else if(event->key == InputKeyDown) {
model->pin_lock++;
if(model->pin_lock > 2) {
model->pin_lock = 0;
if(model->lock_popup_index == DesktopLockMenuPopupIndexMAX - 1) {
model->lock_popup_index = 0;
} else {
model->lock_popup_index++;
}
} else if(event->key == InputKeyBack || event->key == InputKeyOk) {
model->show_lock_menu = false;
model->show_lock_popup = false;
}
} else {
if(model->idx == DesktopLockMenuIndexLock && event->key == InputKeyOk) {
model->show_lock_menu = true;
model->show_lock_popup = true;
} else if(model->idx < 6) {
if(event->key == InputKeyUp || event->key == InputKeyDown) {
if(model->idx % 2) {
@@ -250,21 +252,21 @@ bool desktop_lock_menu_input_callback(InputEvent* event, void* context) {
}
}
idx = model->idx;
pin_lock = model->pin_lock;
lock_popup_index = model->lock_popup_index;
},
true);
DesktopEvent desktop_event = 0;
if(show_lock_menu) {
if(show_lock_popup) {
if(event->key == InputKeyOk && event->type == InputTypeShort) {
switch(pin_lock) {
case 0:
switch(lock_popup_index) {
case DesktopLockMenuPopupIndexKeypad:
desktop_event = DesktopLockMenuEventLockKeypad;
break;
case 1:
case DesktopLockMenuPopupIndexPinCode:
desktop_event = DesktopLockMenuEventLockPinCode;
break;
case 2:
case DesktopLockMenuPopupIndexPinOff:
desktop_event = DesktopLockMenuEventLockPinOff;
break;
default:

View File

@@ -23,14 +23,21 @@ struct DesktopLockMenuView {
bool save_bt;
};
typedef enum {
DesktopLockMenuPopupIndexKeypad,
DesktopLockMenuPopupIndexPinCode,
DesktopLockMenuPopupIndexPinOff,
DesktopLockMenuPopupIndexMAX,
} DesktopLockMenuPopupIndex;
typedef struct {
uint8_t idx;
bool _dummy_mode; // Unused, kept for compatibility
bool stealth_mode;
bool pin_is_set;
int pin_lock;
bool show_lock_menu;
bool show_lock_popup;
DesktopLockMenuPopupIndex lock_popup_index;
DesktopLockMenuView* lock_menu;
} DesktopLockMenuViewModel;