mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-13 14:38:35 -07:00
Mirror some submenu and varitemlist code/behavior
This commit is contained in:
@@ -99,7 +99,7 @@ static void submenu_view_draw_callback(Canvas* canvas, void* _model) {
|
|||||||
const size_t item_position = position - model->window_position;
|
const size_t item_position = position - model->window_position;
|
||||||
const size_t items_on_screen =
|
const size_t items_on_screen =
|
||||||
submenu_items_on_screen(!furi_string_empty(model->header), model->is_vertical);
|
submenu_items_on_screen(!furi_string_empty(model->header), model->is_vertical);
|
||||||
uint8_t y_offset = furi_string_empty(model->header) ? 0 : 16;
|
uint8_t y_offset = furi_string_empty(model->header) ? 0 : item_height;
|
||||||
|
|
||||||
if(item_position < items_on_screen) {
|
if(item_position < items_on_screen) {
|
||||||
if(position == model->position) {
|
if(position == model->position) {
|
||||||
|
|||||||
@@ -45,14 +45,14 @@ static void variable_item_list_draw_callback(Canvas* canvas, void* _model) {
|
|||||||
VariableItemListModel* model = _model;
|
VariableItemListModel* model = _model;
|
||||||
|
|
||||||
const uint8_t item_height = 16;
|
const uint8_t item_height = 16;
|
||||||
const uint8_t item_width = 123;
|
uint8_t item_width = canvas_width(canvas) - 5;
|
||||||
|
|
||||||
canvas_clear(canvas);
|
canvas_clear(canvas);
|
||||||
|
|
||||||
|
canvas_set_font(canvas, FontSecondary);
|
||||||
|
|
||||||
uint8_t position = 0;
|
uint8_t position = 0;
|
||||||
VariableItemArray_it_t it;
|
VariableItemArray_it_t it;
|
||||||
|
|
||||||
canvas_set_font(canvas, FontSecondary);
|
|
||||||
for(VariableItemArray_it(it, model->items); !VariableItemArray_end_p(it);
|
for(VariableItemArray_it(it, model->items); !VariableItemArray_end_p(it);
|
||||||
VariableItemArray_next(it)) {
|
VariableItemArray_next(it)) {
|
||||||
uint8_t item_position = position - model->window_position;
|
uint8_t item_position = position - model->window_position;
|
||||||
@@ -139,7 +139,9 @@ void variable_item_list_set_selected_item(VariableItemList* variable_item_list,
|
|||||||
VariableItemListModel * model,
|
VariableItemListModel * model,
|
||||||
{
|
{
|
||||||
uint8_t position = index;
|
uint8_t position = index;
|
||||||
if(position >= VariableItemArray_size(model->items)) {
|
const size_t items_size = VariableItemArray_size(model->items);
|
||||||
|
|
||||||
|
if(position >= items_size) {
|
||||||
position = 0;
|
position = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,11 +152,14 @@ void variable_item_list_set_selected_item(VariableItemList* variable_item_list,
|
|||||||
model->window_position -= 1;
|
model->window_position -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(VariableItemArray_size(model->items) <= 4) {
|
uint8_t items_on_screen = 4;
|
||||||
|
|
||||||
|
if(items_size <= items_on_screen) {
|
||||||
model->window_position = 0;
|
model->window_position = 0;
|
||||||
} else {
|
} else {
|
||||||
if(model->window_position >= (VariableItemArray_size(model->items) - 4)) {
|
const size_t pos = items_size - items_on_screen;
|
||||||
model->window_position = (VariableItemArray_size(model->items) - 4);
|
if(model->window_position > pos) {
|
||||||
|
model->window_position = pos;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user