diff --git a/project/backend/ui.c b/project/backend/ui.c index fb9a817..be848fe 100644 --- a/project/backend/ui.c +++ b/project/backend/ui.c @@ -7,6 +7,7 @@ typedef enum { FP_Scene_MainMenu, FP_Scene_Overview, FP_Scene_View, + FP_Scene_Send, FP_Scene_Create, FP_Scene_Archive, FP_Scene_About, @@ -62,6 +63,13 @@ void FP_Scene_Callback_View(DialogExResult result, void* context) { // Sending it to the scene manager scene_manager_handle_custom_event(app->scene_manager, result); } +void FP_Scene_Callback_Send(DialogExResult result, void* context) { + // Setting context + FP_App* app = context; + + // Sending it to the scene manager + scene_manager_handle_custom_event(app->scene_manager, result); +} void FP_Scene_Enter_MainMenu(void* context) { // Setting context @@ -155,9 +163,9 @@ void FP_Scene_Enter_View(void* context) { app->dialog, "Show" ); - dialog_ex_set_center_button_text( + dialog_ex_set_right_button_text( app->dialog, - "Send" + "BadUSB" ); // Left & Right @@ -167,6 +175,44 @@ void FP_Scene_Enter_View(void* context) { // Sending view to Flipper view_dispatcher_switch_to_view(app->view_dispatcher, FP_View_Dialog); } +void FP_Scene_Enter_Send(void* context) { + // Setting context + FP_App* app = context; + + // Reset view + dialog_ex_reset(app->dialog); + + // Adding dialog content + dialog_ex_set_header( + app->dialog, + "Send via BadUSB", + 0,0, + AlignLeft, + AlignTop + ); + dialog_ex_set_text( + app->dialog, + "This will type out either the Username or Password using BadUSB", + 5,15, + AlignLeft, + AlignTop + ); + dialog_ex_set_left_button_text( + app->dialog, + "Username" + ); + dialog_ex_set_right_button_text( + app->dialog, + "Password" + ); + + // Setting context and callback + dialog_ex_set_result_callback(app->dialog, FP_Scene_Callback_Send); + dialog_ex_set_context(app->dialog, app); + + // Send view to Flipper + view_dispatcher_switch_to_view(app->view_dispatcher, FP_View_Dialog); +} void FP_Scene_Exit_MainMenu(void* context) { // Setting context @@ -189,6 +235,13 @@ void FP_Scene_Exit_View(void* context) { // Reset menu dialog_ex_reset(app->dialog); } +void FP_Scene_Exit_Send(void* context) { + // Setting context + FP_App* app = context; + + // Reset menu + dialog_ex_reset(app->dialog); +} bool FP_Scene_Event_MainMenu(void* context, SceneManagerEvent event) { // Setting context @@ -275,6 +328,10 @@ bool FP_Scene_Event_View(void* context, SceneManagerEvent event) { ); dialog_ex_set_left_button_text(app->dialog, NULL); break; + case DialogExResultRight: + // Changing scenes + scene_manager_next_scene(app->scene_manager, FP_Scene_Send); + break; default: break; } @@ -288,22 +345,49 @@ bool FP_Scene_Event_View(void* context, SceneManagerEvent event) { // Return result return consumed; } +bool FP_Scene_Event_Send(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; + + UNUSED(app); + + // What to do? + switch (event.event) { + default: + break; + } + } else { + consumed = false; + } + + // Return result + return consumed; +} /* Handlers */ void (*const FP_Scene_Enter_Handlers[])(void*) = { FP_Scene_Enter_MainMenu, FP_Scene_Enter_Overview, - FP_Scene_Enter_View + FP_Scene_Enter_View, + FP_Scene_Enter_Send }; bool (*const FP_Scene_Event_Handlers[])(void*, SceneManagerEvent) = { FP_Scene_Event_MainMenu, FP_Scene_Event_Overview, - FP_Scene_Event_View + FP_Scene_Event_View, + FP_Scene_Event_Send }; void (*const FP_Scene_Exit_Handlers[])(void*) = { FP_Scene_Exit_MainMenu, FP_Scene_Exit_Overview, - FP_Scene_Exit_View + FP_Scene_Exit_View, + FP_Scene_Exit_Send }; /* Event Handlers */