mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 15:48:35 -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));
|
elements_scrollbar(canvas, model->position, SubmenuItemArray_size(model->items));
|
||||||
|
|
||||||
if(model->locked_message_visible) {
|
if(model->locked_message_visible) {
|
||||||
canvas_set_font(canvas, FontSecondary);
|
|
||||||
canvas_set_color(canvas, ColorWhite);
|
canvas_set_color(canvas, ColorWhite);
|
||||||
canvas_draw_box(canvas, 8, 10, 110, 48);
|
canvas_draw_box(canvas, 8, 10, 110, 48);
|
||||||
canvas_set_color(canvas, ColorBlack);
|
canvas_set_color(canvas, ColorBlack);
|
||||||
canvas_draw_icon(canvas, 10, 14, &I_WarningDolphin_45x42);
|
canvas_draw_icon(canvas, 10, 14, &I_WarningDolphin_45x42);
|
||||||
canvas_draw_rframe(canvas, 8, 8, 112, 50, 3);
|
canvas_draw_rframe(canvas, 8, 8, 112, 50, 3);
|
||||||
canvas_draw_rframe(canvas, 9, 9, 110, 48, 2);
|
canvas_draw_rframe(canvas, 9, 9, 110, 48, 2);
|
||||||
elements_multiline_text(
|
elements_multiline_text_aligned(
|
||||||
canvas,
|
canvas,
|
||||||
62,
|
84,
|
||||||
20,
|
32,
|
||||||
|
AlignCenter,
|
||||||
|
AlignCenter,
|
||||||
furi_string_get_cstr(
|
furi_string_get_cstr(
|
||||||
SubmenuItemArray_get(model->items, model->position)->locked_message));
|
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_draw_callback(submenu->view, submenu_view_draw_callback);
|
||||||
view_set_input_callback(submenu->view, submenu_view_input_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(
|
with_view_model(
|
||||||
submenu->view,
|
submenu->view,
|
||||||
@@ -249,8 +249,8 @@ void submenu_free(Submenu* submenu) {
|
|||||||
SubmenuItemArray_clear(model->items);
|
SubmenuItemArray_clear(model->items);
|
||||||
},
|
},
|
||||||
true);
|
true);
|
||||||
furi_timer_stop(submenu->timer);
|
furi_timer_stop(submenu->locked_timer);
|
||||||
furi_timer_free(submenu->timer);
|
furi_timer_free(submenu->locked_timer);
|
||||||
view_free(submenu->view);
|
view_free(submenu->view);
|
||||||
free(submenu);
|
free(submenu);
|
||||||
}
|
}
|
||||||
@@ -416,7 +416,7 @@ void submenu_process_ok(Submenu* submenu) {
|
|||||||
}
|
}
|
||||||
if(item && item->locked) {
|
if(item && item->locked) {
|
||||||
model->locked_message_visible = true;
|
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);
|
true);
|
||||||
|
|||||||
@@ -167,7 +167,19 @@ static bool variable_item_list_input_callback(InputEvent* event, void* context)
|
|||||||
furi_assert(variable_item_list);
|
furi_assert(variable_item_list);
|
||||||
bool consumed = false;
|
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) {
|
switch(event->key) {
|
||||||
case InputKeyUp:
|
case InputKeyUp:
|
||||||
consumed = true;
|
consumed = true;
|
||||||
@@ -222,9 +234,6 @@ void variable_item_list_process_up(VariableItemList* variable_item_list) {
|
|||||||
variable_item_list->view,
|
variable_item_list->view,
|
||||||
VariableItemListModel * model,
|
VariableItemListModel * model,
|
||||||
{
|
{
|
||||||
if(model->locked_message_visible) {
|
|
||||||
model->locked_message_visible = false;
|
|
||||||
}
|
|
||||||
uint8_t items_on_screen = 4;
|
uint8_t items_on_screen = 4;
|
||||||
if(model->position > 0) {
|
if(model->position > 0) {
|
||||||
model->position--;
|
model->position--;
|
||||||
@@ -248,9 +257,6 @@ void variable_item_list_process_down(VariableItemList* variable_item_list) {
|
|||||||
variable_item_list->view,
|
variable_item_list->view,
|
||||||
VariableItemListModel * model,
|
VariableItemListModel * model,
|
||||||
{
|
{
|
||||||
if(model->locked_message_visible) {
|
|
||||||
model->locked_message_visible = false;
|
|
||||||
}
|
|
||||||
uint8_t items_on_screen = 4;
|
uint8_t items_on_screen = 4;
|
||||||
if(model->position < (VariableItemArray_size(model->items) - 1)) {
|
if(model->position < (VariableItemArray_size(model->items) - 1)) {
|
||||||
model->position++;
|
model->position++;
|
||||||
@@ -293,9 +299,7 @@ void variable_item_list_process_left(VariableItemList* variable_item_list) {
|
|||||||
VariableItemListModel * model,
|
VariableItemListModel * model,
|
||||||
{
|
{
|
||||||
VariableItem* item = variable_item_list_get_selected_item(model);
|
VariableItem* item = variable_item_list_get_selected_item(model);
|
||||||
if(model->locked_message_visible) {
|
if(item->locked) {
|
||||||
model->locked_message_visible = false;
|
|
||||||
} else if(item->locked) {
|
|
||||||
model->locked_message_visible = true;
|
model->locked_message_visible = true;
|
||||||
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
||||||
} else if(item->current_value_index > 0) {
|
} else if(item->current_value_index > 0) {
|
||||||
@@ -315,9 +319,7 @@ void variable_item_list_process_right(VariableItemList* variable_item_list) {
|
|||||||
VariableItemListModel * model,
|
VariableItemListModel * model,
|
||||||
{
|
{
|
||||||
VariableItem* item = variable_item_list_get_selected_item(model);
|
VariableItem* item = variable_item_list_get_selected_item(model);
|
||||||
if(model->locked_message_visible) {
|
if(item->locked) {
|
||||||
model->locked_message_visible = false;
|
|
||||||
} else if(item->locked) {
|
|
||||||
model->locked_message_visible = true;
|
model->locked_message_visible = true;
|
||||||
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
||||||
} else if(item->current_value_index < (item->values_count - 1)) {
|
} 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) {
|
void variable_item_list_process_ok(VariableItemList* variable_item_list) {
|
||||||
bool update = false;
|
|
||||||
with_view_model(
|
with_view_model(
|
||||||
variable_item_list->view,
|
variable_item_list->view,
|
||||||
VariableItemListModel * model,
|
VariableItemListModel * model,
|
||||||
{
|
{
|
||||||
VariableItem* item = variable_item_list_get_selected_item(model);
|
VariableItem* item = variable_item_list_get_selected_item(model);
|
||||||
if(model->locked_message_visible) {
|
if(item->locked) {
|
||||||
model->locked_message_visible = false;
|
|
||||||
update = true;
|
|
||||||
} else if(item->locked) {
|
|
||||||
model->locked_message_visible = true;
|
model->locked_message_visible = true;
|
||||||
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
furi_timer_start(variable_item_list->locked_timer, furi_kernel_get_tick_frequency() * 3);
|
||||||
} else if(variable_item_list->callback) {
|
} else if(variable_item_list->callback) {
|
||||||
variable_item_list->callback(variable_item_list->context, model->position);
|
variable_item_list->callback(variable_item_list->context, model->position);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
update);
|
true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void variable_item_list_scroll_timer_callback(void* context) {
|
static void variable_item_list_scroll_timer_callback(void* context) {
|
||||||
|
|||||||
Reference in New Issue
Block a user