97 lines
No EOL
2.4 KiB
C
97 lines
No EOL
2.4 KiB
C
// Header file
|
|
#include "mainmenu.h"
|
|
|
|
// Structures
|
|
typedef enum {
|
|
FP_Scene_MainMenu_Event_View,
|
|
FP_Scene_MainMenu_Event_Create,
|
|
FP_Scene_MainMenu_Event_Archive,
|
|
FP_Scene_MainMenu_Event_About
|
|
} FP_Scene_MainMenu_Event;
|
|
|
|
// Functions
|
|
void FP_Scene_Callback_MainMenu(void* context, uint32_t index) {
|
|
// Setting context
|
|
FP_App* app = context;
|
|
|
|
// Sending it to the scene manager
|
|
scene_manager_handle_custom_event(app->scene_manager, index);
|
|
}
|
|
void FP_Scene_Enter_MainMenu(void* context) {
|
|
// Setting context
|
|
FP_App* app = context;
|
|
|
|
// Reset menu for next draw
|
|
submenu_reset(app->submenu);
|
|
|
|
// Adding items to menu
|
|
submenu_add_item(
|
|
app->submenu,
|
|
"View Passwords",
|
|
FP_Scene_MainMenu_Event_View,
|
|
FP_Scene_Callback_MainMenu,
|
|
app
|
|
);
|
|
submenu_add_item(
|
|
app->submenu,
|
|
"Create Password",
|
|
FP_Scene_MainMenu_Event_Create,
|
|
FP_Scene_Callback_MainMenu,
|
|
app
|
|
);
|
|
submenu_add_item(
|
|
app->submenu,
|
|
"Archive Actions",
|
|
FP_Scene_MainMenu_Event_Archive,
|
|
FP_Scene_Callback_MainMenu,
|
|
app
|
|
);
|
|
submenu_add_item(
|
|
app->submenu,
|
|
"About",
|
|
FP_Scene_MainMenu_Event_About,
|
|
FP_Scene_Callback_MainMenu,
|
|
app
|
|
);
|
|
|
|
// Switching to current view
|
|
view_dispatcher_switch_to_view(app->view_dispatcher, FP_View_Submenu);
|
|
}
|
|
void FP_Scene_Exit_MainMenu(void* context) {
|
|
// Setting context
|
|
FP_App* app = context;
|
|
|
|
// Reset menu
|
|
submenu_reset(app->submenu);
|
|
}
|
|
bool FP_Scene_Event_MainMenu(void* context, SceneManagerEvent event) {
|
|
// Setting context
|
|
FP_App* app = context;
|
|
bool consumed = false;
|
|
|
|
// Switching based on event
|
|
if (event.type == SceneManagerEventTypeCustom) {
|
|
// We consumed it
|
|
consumed = true;
|
|
|
|
// What to do?
|
|
switch (event.event) {
|
|
case FP_Scene_MainMenu_Event_About:
|
|
scene_manager_next_scene(app->scene_manager, FP_Scene_About);
|
|
break;
|
|
case FP_Scene_MainMenu_Event_View:
|
|
scene_manager_next_scene(app->scene_manager, FP_Scene_Overview);
|
|
break;
|
|
case FP_Scene_MainMenu_Event_Create:
|
|
scene_manager_next_scene(app->scene_manager, FP_Scene_Create);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
} else {
|
|
consumed = false;
|
|
}
|
|
|
|
// Return result
|
|
return consumed;
|
|
} |