[FL-1300] iButton app: save selected menu item and selected file position. (#489)

* GUI module submenu: fix documentation
* GUI module submenu: add submenu_set_selected_item fn
* App iButton: use submenu_set_selected_item to store and set selected item in submenu
* App iButton: swap write and emulate in "saved key menu" scene
* App iButton: file select can now switch to the previous selected file
* App iButton: swap write and emulate indexes in "saved key menu" scene

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
SG
2021-05-25 21:04:22 +10:00
committed by GitHub
parent f49f30f8a7
commit fc5c48edef
15 changed files with 179 additions and 19 deletions

View File

@@ -168,6 +168,42 @@ void submenu_clean(Submenu* submenu) {
});
}
void submenu_set_selected_item(Submenu* submenu, uint32_t index) {
with_view_model(
submenu->view, (SubmenuModel * model) {
uint32_t position = 0;
SubmenuItemArray_it_t it;
for(SubmenuItemArray_it(it, model->items); !SubmenuItemArray_end_p(it);
SubmenuItemArray_next(it)) {
if(index == SubmenuItemArray_cref(it)->index) {
break;
}
position++;
}
if(position >= SubmenuItemArray_size(model->items)) {
position = 0;
}
model->position = position;
model->window_position = position;
if(model->window_position > 0) {
model->window_position -= 1;
}
if(SubmenuItemArray_size(model->items) <= 4) {
model->window_position = 0;
} else {
if(model->window_position >= (SubmenuItemArray_size(model->items) - 4)) {
model->window_position = (SubmenuItemArray_size(model->items) - 4);
}
}
return true;
});
}
void submenu_process_up(Submenu* submenu) {
with_view_model(
submenu->view, (SubmenuModel * model) {