mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-06 05:19:09 -07:00
Rework mainmenu editor and allow moving apps
This commit is contained in:
@@ -2,9 +2,10 @@
|
||||
|
||||
enum VarItemListIndex {
|
||||
VarItemListIndexMenuStyle,
|
||||
VarItemListIndexApp,
|
||||
VarItemListIndexRemoveApp,
|
||||
VarItemListIndexMenuApp,
|
||||
VarItemListIndexAddApp,
|
||||
VarItemListIndexMoveApp,
|
||||
VarItemListIndexRemoveApp,
|
||||
};
|
||||
|
||||
void xtreme_app_scene_interface_mainmenu_var_item_list_callback(void* context, uint32_t index) {
|
||||
@@ -20,13 +21,35 @@ static void xtreme_app_scene_interface_mainmenu_wii_menu_changed(VariableItem* i
|
||||
app->save_settings = true;
|
||||
}
|
||||
|
||||
static void xtreme_app_scene_interface_mainmenu_app_changed(VariableItem* item) {
|
||||
static void xtreme_app_scene_interface_mainmenu_menu_app_changed(VariableItem* item) {
|
||||
XtremeApp* app = variable_item_get_context(item);
|
||||
app->mainmenu_app_index = variable_item_get_current_value_index(item);
|
||||
variable_item_set_current_value_text(
|
||||
item, *CharList_get(app->mainmenu_app_labels, app->mainmenu_app_index));
|
||||
}
|
||||
|
||||
static void xtreme_app_scene_interface_mainmenu_move_app_changed(VariableItem* item) {
|
||||
XtremeApp* app = variable_item_get_context(item);
|
||||
uint8_t idx = app->mainmenu_app_index;
|
||||
size_t size = CharList_size(app->mainmenu_app_labels);
|
||||
uint8_t dir = variable_item_get_current_value_index(item);
|
||||
if(size >= 2) {
|
||||
if(dir == 2 && idx != size - 1) {
|
||||
// Right
|
||||
CharList_swap_at(app->mainmenu_app_labels, idx, idx + 1);
|
||||
CharList_swap_at(app->mainmenu_app_exes, idx, idx + 1);
|
||||
app->mainmenu_app_index++;
|
||||
} else if(dir == 0 && idx != 0) {
|
||||
// Left
|
||||
CharList_swap_at(app->mainmenu_app_labels, idx, idx - 1);
|
||||
CharList_swap_at(app->mainmenu_app_exes, idx, idx - 1);
|
||||
app->mainmenu_app_index--;
|
||||
}
|
||||
view_dispatcher_send_custom_event(app->view_dispatcher, VarItemListIndexMoveApp);
|
||||
}
|
||||
variable_item_set_current_value_index(item, 1);
|
||||
}
|
||||
|
||||
void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
|
||||
XtremeApp* app = context;
|
||||
XtremeSettings* xtreme_settings = XTREME_SETTINGS();
|
||||
@@ -41,23 +64,30 @@ void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list,
|
||||
"App",
|
||||
"Menu App",
|
||||
CharList_size(app->mainmenu_app_labels),
|
||||
xtreme_app_scene_interface_mainmenu_app_changed,
|
||||
xtreme_app_scene_interface_mainmenu_menu_app_changed,
|
||||
app);
|
||||
app->mainmenu_app_index = 0;
|
||||
variable_item_set_current_value_index(item, app->mainmenu_app_index);
|
||||
if(CharList_size(app->mainmenu_app_labels)) {
|
||||
app->mainmenu_app_index =
|
||||
CLAMP(app->mainmenu_app_index, CharList_size(app->mainmenu_app_labels) - 1, 0U);
|
||||
variable_item_set_current_value_text(
|
||||
item, *CharList_get(app->mainmenu_app_labels, app->mainmenu_app_index));
|
||||
} else {
|
||||
app->mainmenu_app_index = 0;
|
||||
variable_item_set_current_value_text(item, "None");
|
||||
}
|
||||
|
||||
variable_item_list_add(var_item_list, "Remove App", 0, NULL, app);
|
||||
variable_item_set_current_value_index(item, app->mainmenu_app_index);
|
||||
|
||||
variable_item_list_add(var_item_list, "Add App", 0, NULL, app);
|
||||
|
||||
item = variable_item_list_add(
|
||||
var_item_list, "Move App", 3, xtreme_app_scene_interface_mainmenu_move_app_changed, app);
|
||||
variable_item_set_current_value_text(item, "");
|
||||
variable_item_set_current_value_index(item, 1);
|
||||
|
||||
variable_item_list_add(var_item_list, "Remove App", 0, NULL, app);
|
||||
|
||||
variable_item_list_set_enter_callback(
|
||||
var_item_list, xtreme_app_scene_interface_mainmenu_var_item_list_callback, app);
|
||||
|
||||
@@ -84,6 +114,9 @@ bool xtreme_app_scene_interface_mainmenu_on_event(void* context, SceneManagerEve
|
||||
app->mainmenu_app_labels, app->mainmenu_app_index, app->mainmenu_app_index + 1);
|
||||
CharList_remove_v(
|
||||
app->mainmenu_app_exes, app->mainmenu_app_index, app->mainmenu_app_index + 1);
|
||||
app->mainmenu_app_index--;
|
||||
/* fall through */
|
||||
case VarItemListIndexMoveApp:
|
||||
app->save_mainmenu_apps = true;
|
||||
app->require_reboot = true;
|
||||
scene_manager_previous_scene(app->scene_manager);
|
||||
|
||||
Reference in New Issue
Block a user