mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-11 06:09:08 -07:00
Rework menu style to be a enum (more future menus)
This commit is contained in:
@@ -14,11 +14,15 @@ void xtreme_app_scene_interface_mainmenu_var_item_list_callback(void* context, u
|
||||
view_dispatcher_send_custom_event(app->view_dispatcher, index);
|
||||
}
|
||||
|
||||
static void xtreme_app_scene_interface_mainmenu_wii_menu_changed(VariableItem* item) {
|
||||
const char* const menu_style_names[MenuStyleCount] = {
|
||||
"List",
|
||||
"Wii",
|
||||
};
|
||||
static void xtreme_app_scene_interface_mainmenu_menu_style_changed(VariableItem* item) {
|
||||
XtremeApp* app = variable_item_get_context(item);
|
||||
bool value = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, value ? "Wii Grid" : "App List");
|
||||
XTREME_SETTINGS()->wii_menu = value;
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(item, menu_style_names[index]);
|
||||
XTREME_SETTINGS()->menu_style = index;
|
||||
app->save_settings = true;
|
||||
}
|
||||
|
||||
@@ -62,10 +66,13 @@ void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
|
||||
VariableItem* item;
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "Menu Style", 2, xtreme_app_scene_interface_mainmenu_wii_menu_changed, app);
|
||||
variable_item_set_current_value_index(item, xtreme_settings->wii_menu);
|
||||
variable_item_set_current_value_text(
|
||||
item, xtreme_settings->wii_menu ? "Wii Grid" : "App List");
|
||||
var_item_list,
|
||||
"Menu Style",
|
||||
MenuStyleCount,
|
||||
xtreme_app_scene_interface_mainmenu_menu_style_changed,
|
||||
app);
|
||||
variable_item_set_current_value_index(item, xtreme_settings->menu_style);
|
||||
variable_item_set_current_value_text(item, menu_style_names[xtreme_settings->menu_style]);
|
||||
|
||||
variable_item_list_add(var_item_list, "Reset Menu", 0, NULL, app);
|
||||
|
||||
|
||||
@@ -48,7 +48,8 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
|
||||
if(items_count) {
|
||||
MenuItem* item;
|
||||
size_t shift_position;
|
||||
if(XTREME_SETTINGS()->wii_menu) {
|
||||
switch(XTREME_SETTINGS()->menu_style) {
|
||||
case MenuStyleWii: {
|
||||
FuriString* name = furi_string_alloc();
|
||||
if(items_count > 6 && position >= 4) {
|
||||
if(position >= items_count - 2 + (items_count % 2)) {
|
||||
@@ -102,7 +103,9 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
|
||||
}
|
||||
}
|
||||
furi_string_free(name);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
case MenuStyleList: {
|
||||
// First line
|
||||
canvas_set_font(canvas, FontSecondary);
|
||||
shift_position = (0 + position + items_count - 1) % items_count;
|
||||
@@ -149,6 +152,10 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
|
||||
// Frame and scrollbar
|
||||
elements_frame(canvas, 0, 21, 128 - 5, 21);
|
||||
elements_scrollbar(canvas, position, items_count);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
canvas_draw_str(canvas, 2, 32, "Empty");
|
||||
@@ -354,19 +361,24 @@ static void menu_process_up(Menu* menu) {
|
||||
icon_animation_stop(item->icon);
|
||||
}
|
||||
|
||||
if(XTREME_SETTINGS()->wii_menu) {
|
||||
switch(XTREME_SETTINGS()->menu_style) {
|
||||
case MenuStyleWii:
|
||||
if(model->position % 2 || (model->position == count - 1 && count % 2)) {
|
||||
model->position--;
|
||||
} else {
|
||||
model->position++;
|
||||
}
|
||||
model->scroll_counter = 0;
|
||||
} else {
|
||||
break;
|
||||
case MenuStyleList:
|
||||
if(model->position > 0) {
|
||||
model->position--;
|
||||
} else {
|
||||
model->position = count - 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
item = MenuItemArray_get(model->items, model->position);
|
||||
@@ -388,19 +400,24 @@ static void menu_process_down(Menu* menu) {
|
||||
icon_animation_stop(item->icon);
|
||||
}
|
||||
|
||||
if(XTREME_SETTINGS()->wii_menu) {
|
||||
switch(XTREME_SETTINGS()->menu_style) {
|
||||
case MenuStyleWii:
|
||||
if(model->position % 2 || (model->position == count - 1 && count % 2)) {
|
||||
model->position--;
|
||||
} else {
|
||||
model->position++;
|
||||
}
|
||||
model->scroll_counter = 0;
|
||||
} else {
|
||||
break;
|
||||
case MenuStyleList:
|
||||
if(model->position < count - 1) {
|
||||
model->position++;
|
||||
} else {
|
||||
model->position = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
item = MenuItemArray_get(model->items, model->position);
|
||||
@@ -412,27 +429,33 @@ static void menu_process_down(Menu* menu) {
|
||||
}
|
||||
|
||||
static void menu_process_left(Menu* menu) {
|
||||
if(!XTREME_SETTINGS()->wii_menu) return;
|
||||
if(XTREME_SETTINGS()->menu_style == MenuStyleList) return;
|
||||
with_view_model(
|
||||
menu->view,
|
||||
MenuModel * model,
|
||||
{
|
||||
size_t count = MenuItemArray_size(model->items);
|
||||
MenuItem* item = MenuItemArray_get(model->items, model->position);
|
||||
if(item && item->icon) {
|
||||
icon_animation_stop(item->icon);
|
||||
}
|
||||
|
||||
size_t count = MenuItemArray_size(model->items);
|
||||
if(model->position < 2) {
|
||||
if(count % 2) {
|
||||
model->position = count - 1;
|
||||
switch(XTREME_SETTINGS()->menu_style) {
|
||||
case MenuStyleWii:
|
||||
if(model->position < 2) {
|
||||
if(count % 2) {
|
||||
model->position = count - 1;
|
||||
} else {
|
||||
model->position = count - 2 + model->position % 2;
|
||||
}
|
||||
} else {
|
||||
model->position = count - 2 + model->position % 2;
|
||||
model->position -= 2;
|
||||
}
|
||||
} else {
|
||||
model->position -= 2;
|
||||
model->scroll_counter = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
model->scroll_counter = 0;
|
||||
|
||||
item = MenuItemArray_get(model->items, model->position);
|
||||
if(item && item->icon) {
|
||||
@@ -443,32 +466,38 @@ static void menu_process_left(Menu* menu) {
|
||||
}
|
||||
|
||||
static void menu_process_right(Menu* menu) {
|
||||
if(!XTREME_SETTINGS()->wii_menu) return;
|
||||
if(XTREME_SETTINGS()->menu_style == MenuStyleList) return;
|
||||
with_view_model(
|
||||
menu->view,
|
||||
MenuModel * model,
|
||||
{
|
||||
size_t count = MenuItemArray_size(model->items);
|
||||
MenuItem* item = MenuItemArray_get(model->items, model->position);
|
||||
if(item && item->icon) {
|
||||
icon_animation_stop(item->icon);
|
||||
}
|
||||
|
||||
size_t count = MenuItemArray_size(model->items);
|
||||
if(count % 2) {
|
||||
if(model->position == count - 1) {
|
||||
model->position = 0;
|
||||
} else if(model->position == count - 2) {
|
||||
model->position = count - 1;
|
||||
switch(XTREME_SETTINGS()->menu_style) {
|
||||
case MenuStyleWii:
|
||||
if(count % 2) {
|
||||
if(model->position == count - 1) {
|
||||
model->position = 0;
|
||||
} else if(model->position == count - 2) {
|
||||
model->position = count - 1;
|
||||
} else {
|
||||
model->position += 2;
|
||||
}
|
||||
} else {
|
||||
model->position += 2;
|
||||
if(model->position >= count) {
|
||||
model->position = model->position % 2;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
model->position += 2;
|
||||
if(model->position >= count) {
|
||||
model->position = model->position % 2;
|
||||
}
|
||||
model->scroll_counter = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
model->scroll_counter = 0;
|
||||
|
||||
item = MenuItemArray_get(model->items, model->position);
|
||||
if(item && item->icon) {
|
||||
|
||||
Reference in New Issue
Block a user