mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 14:58:36 -07:00
Locked menu item fixes
This commit is contained in:
@@ -142,20 +142,20 @@ static void submenu_view_draw_callback(Canvas* canvas, void* _model) {
|
||||
elements_scrollbar(canvas, model->position, SubmenuItemArray_size(model->items));
|
||||
|
||||
if(model->locked_message_visible) {
|
||||
canvas_set_font(canvas, FontSecondary);
|
||||
canvas_set_color(canvas, ColorWhite);
|
||||
canvas_draw_box(canvas, 8, 10, 110, 48);
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
canvas_draw_icon(canvas, 10, 14, &I_WarningDolphin_45x42);
|
||||
canvas_draw_rframe(canvas, 8, 8, 112, 50, 3);
|
||||
canvas_draw_rframe(canvas, 9, 9, 110, 48, 2);
|
||||
elements_multiline_text(
|
||||
elements_multiline_text_aligned(
|
||||
canvas,
|
||||
62,
|
||||
20,
|
||||
84,
|
||||
32,
|
||||
AlignCenter,
|
||||
AlignCenter,
|
||||
furi_string_get_cstr(
|
||||
SubmenuItemArray_get(model->items, model->position)->locked_message));
|
||||
canvas_set_font(canvas, FontKeyboard);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ Submenu* submenu_alloc() {
|
||||
view_set_draw_callback(submenu->view, submenu_view_draw_callback);
|
||||
view_set_input_callback(submenu->view, submenu_view_input_callback);
|
||||
|
||||
submenu->timer = furi_timer_alloc(submenu_timer_callback, FuriTimerTypeOnce, submenu);
|
||||
submenu->locked_timer = furi_timer_alloc(submenu_timer_callback, FuriTimerTypeOnce, submenu);
|
||||
|
||||
with_view_model(
|
||||
submenu->view,
|
||||
@@ -249,8 +249,8 @@ void submenu_free(Submenu* submenu) {
|
||||
SubmenuItemArray_clear(model->items);
|
||||
},
|
||||
true);
|
||||
furi_timer_stop(submenu->timer);
|
||||
furi_timer_free(submenu->timer);
|
||||
furi_timer_stop(submenu->locked_timer);
|
||||
furi_timer_free(submenu->locked_timer);
|
||||
view_free(submenu->view);
|
||||
free(submenu);
|
||||
}
|
||||
@@ -416,7 +416,7 @@ void submenu_process_ok(Submenu* submenu) {
|
||||
}
|
||||
if(item && item->locked) {
|
||||
model->locked_message_visible = true;
|
||||
furi_timer_start(submenu->timer, furi_kernel_get_tick_frequency() * 4);
|
||||
furi_timer_start(submenu->locked_timer, furi_kernel_get_tick_frequency() * 4);
|
||||
}
|
||||
},
|
||||
true);
|
||||
|
||||
@@ -167,7 +167,19 @@ static bool variable_item_list_input_callback(InputEvent* event, void* context)
|
||||
furi_assert(variable_item_list);
|
||||
bool consumed = false;
|
||||
|
||||
if(event->type == InputTypeShort) {
|
||||
bool locked_message_visible = false;
|
||||
with_view_model(
|
||||
variable_item_list->view,
|
||||
VariableItemListModel * model,
|
||||
{ locked_message_visible = model->locked_message_visible; },
|
||||
false);
|
||||
|
||||
if((!(event->type == InputTypePress) && !(event->type == InputTypeRelease)) &&
|
||||
locked_message_visible) {
|
||||
with_view_model(
|
||||
variable_item_list->view, VariableItemListModel * model, { model->locked_message_visible = false; }, true);
|
||||
consumed = true;
|
||||
} else if(event->type == InputTypeShort) {
|
||||
switch(event->key) {
|
||||
case InputKeyUp:
|
||||
consumed = true;
|
||||
@@ -222,9 +234,6 @@ void variable_item_list_process_up(VariableItemList* variable_item_list) {
|
||||
variable_item_list->view,
|
||||
VariableItemListModel * model,
|
||||
{
|
||||
if(model->locked_message_visible) {
|
||||
model->locked_message_visible = false;
|
||||
}
|
||||
uint8_t items_on_screen = 4;
|
||||
if(model->position > 0) {
|
||||
model->position--;
|
||||
@@ -248,9 +257,6 @@ void variable_item_list_process_down(VariableItemList* variable_item_list) {
|
||||
variable_item_list->view,
|
||||
VariableItemListModel * model,
|
||||
{
|
||||
if(model->locked_message_visible) {
|
||||
model->locked_message_visible = false;
|
||||
}
|
||||
uint8_t items_on_screen = 4;
|
||||
if(model->position < (VariableItemArray_size(model->items) - 1)) {
|
||||
model->position++;
|
||||
@@ -293,9 +299,7 @@ void variable_item_list_process_left(VariableItemList* variable_item_list) {
|
||||
VariableItemListModel * model,
|
||||
{
|
||||
VariableItem* item = variable_item_list_get_selected_item(model);
|
||||
if(model->locked_message_visible) {
|
||||
model->locked_message_visible = false;
|
||||
} else if(item->locked) {
|
||||
if(item->locked) {
|
||||
model->locked_message_visible = true;
|
||||
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
||||
} else if(item->current_value_index > 0) {
|
||||
@@ -315,9 +319,7 @@ void variable_item_list_process_right(VariableItemList* variable_item_list) {
|
||||
VariableItemListModel * model,
|
||||
{
|
||||
VariableItem* item = variable_item_list_get_selected_item(model);
|
||||
if(model->locked_message_visible) {
|
||||
model->locked_message_visible = false;
|
||||
} else if(item->locked) {
|
||||
if(item->locked) {
|
||||
model->locked_message_visible = true;
|
||||
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
||||
} else if(item->current_value_index < (item->values_count - 1)) {
|
||||
@@ -332,23 +334,19 @@ void variable_item_list_process_right(VariableItemList* variable_item_list) {
|
||||
}
|
||||
|
||||
void variable_item_list_process_ok(VariableItemList* variable_item_list) {
|
||||
bool update = false;
|
||||
with_view_model(
|
||||
variable_item_list->view,
|
||||
VariableItemListModel * model,
|
||||
{
|
||||
VariableItem* item = variable_item_list_get_selected_item(model);
|
||||
if(model->locked_message_visible) {
|
||||
model->locked_message_visible = false;
|
||||
update = true;
|
||||
} else if(item->locked) {
|
||||
if(item->locked) {
|
||||
model->locked_message_visible = true;
|
||||
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
||||
} else if(variable_item_list->callback) {
|
||||
variable_item_list->callback(variable_item_list->context, model->position);
|
||||
}
|
||||
},
|
||||
update);
|
||||
true);
|
||||
}
|
||||
|
||||
static void variable_item_list_scroll_timer_callback(void* context) {
|
||||
|
||||
Reference in New Issue
Block a user