mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-12 11:28:36 -07:00
Rework mainmenu editor and allow moving apps
This commit is contained in:
@@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
enum VarItemListIndex {
|
enum VarItemListIndex {
|
||||||
VarItemListIndexMenuStyle,
|
VarItemListIndexMenuStyle,
|
||||||
VarItemListIndexApp,
|
VarItemListIndexMenuApp,
|
||||||
VarItemListIndexRemoveApp,
|
|
||||||
VarItemListIndexAddApp,
|
VarItemListIndexAddApp,
|
||||||
|
VarItemListIndexMoveApp,
|
||||||
|
VarItemListIndexRemoveApp,
|
||||||
};
|
};
|
||||||
|
|
||||||
void xtreme_app_scene_interface_mainmenu_var_item_list_callback(void* context, uint32_t index) {
|
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;
|
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);
|
XtremeApp* app = variable_item_get_context(item);
|
||||||
app->mainmenu_app_index = variable_item_get_current_value_index(item);
|
app->mainmenu_app_index = variable_item_get_current_value_index(item);
|
||||||
variable_item_set_current_value_text(
|
variable_item_set_current_value_text(
|
||||||
item, *CharList_get(app->mainmenu_app_labels, app->mainmenu_app_index));
|
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) {
|
void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
|
||||||
XtremeApp* app = context;
|
XtremeApp* app = context;
|
||||||
XtremeSettings* xtreme_settings = XTREME_SETTINGS();
|
XtremeSettings* xtreme_settings = XTREME_SETTINGS();
|
||||||
@@ -41,23 +64,30 @@ void xtreme_app_scene_interface_mainmenu_on_enter(void* context) {
|
|||||||
|
|
||||||
item = variable_item_list_add(
|
item = variable_item_list_add(
|
||||||
var_item_list,
|
var_item_list,
|
||||||
"App",
|
"Menu App",
|
||||||
CharList_size(app->mainmenu_app_labels),
|
CharList_size(app->mainmenu_app_labels),
|
||||||
xtreme_app_scene_interface_mainmenu_app_changed,
|
xtreme_app_scene_interface_mainmenu_menu_app_changed,
|
||||||
app);
|
app);
|
||||||
app->mainmenu_app_index = 0;
|
|
||||||
variable_item_set_current_value_index(item, app->mainmenu_app_index);
|
|
||||||
if(CharList_size(app->mainmenu_app_labels)) {
|
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(
|
variable_item_set_current_value_text(
|
||||||
item, *CharList_get(app->mainmenu_app_labels, app->mainmenu_app_index));
|
item, *CharList_get(app->mainmenu_app_labels, app->mainmenu_app_index));
|
||||||
} else {
|
} else {
|
||||||
|
app->mainmenu_app_index = 0;
|
||||||
variable_item_set_current_value_text(item, "None");
|
variable_item_set_current_value_text(item, "None");
|
||||||
}
|
}
|
||||||
|
variable_item_set_current_value_index(item, app->mainmenu_app_index);
|
||||||
variable_item_list_add(var_item_list, "Remove App", 0, NULL, app);
|
|
||||||
|
|
||||||
variable_item_list_add(var_item_list, "Add App", 0, NULL, app);
|
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(
|
variable_item_list_set_enter_callback(
|
||||||
var_item_list, xtreme_app_scene_interface_mainmenu_var_item_list_callback, app);
|
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);
|
app->mainmenu_app_labels, app->mainmenu_app_index, app->mainmenu_app_index + 1);
|
||||||
CharList_remove_v(
|
CharList_remove_v(
|
||||||
app->mainmenu_app_exes, app->mainmenu_app_index, app->mainmenu_app_index + 1);
|
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->save_mainmenu_apps = true;
|
||||||
app->require_reboot = true;
|
app->require_reboot = true;
|
||||||
scene_manager_previous_scene(app->scene_manager);
|
scene_manager_previous_scene(app->scene_manager);
|
||||||
|
|||||||
Reference in New Issue
Block a user