Updated View scene
This commit is contained in:
parent
1190b52701
commit
24f365fec0
2 changed files with 123 additions and 81 deletions
|
@ -10,6 +10,7 @@ typedef enum {
|
||||||
FP_Scene_MainMenu,
|
FP_Scene_MainMenu,
|
||||||
FP_Scene_Overview,
|
FP_Scene_Overview,
|
||||||
FP_Scene_View,
|
FP_Scene_View,
|
||||||
|
FP_Scene_Cred,
|
||||||
FP_Scene_Send,
|
FP_Scene_Send,
|
||||||
FP_Scene_Create,
|
FP_Scene_Create,
|
||||||
FP_Scene_Archive,
|
FP_Scene_Archive,
|
||||||
|
@ -18,14 +19,7 @@ typedef enum {
|
||||||
} FP_Scene;
|
} FP_Scene;
|
||||||
|
|
||||||
/* Types of Views */
|
/* Types of Views */
|
||||||
typedef enum { FP_View_VariableItemList, FP_View_Submenu, FP_View_Dialog, FP_View_Popup } FP_View;
|
typedef enum { FP_View_VariableItemList, FP_View_Submenu, FP_View_TextBox, FP_View_Dialog, FP_View_Popup } FP_View;
|
||||||
|
|
||||||
/* All events */
|
|
||||||
typedef enum {
|
|
||||||
FP_Event_SwitchTo_About,
|
|
||||||
FP_Event_SwitchTo_Overview,
|
|
||||||
FP_Event_SwitchTo_Create
|
|
||||||
} FP_Event;
|
|
||||||
|
|
||||||
/* Scene events */
|
/* Scene events */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -34,6 +28,11 @@ typedef enum {
|
||||||
FP_Scene_MainMenu_Event_Archive,
|
FP_Scene_MainMenu_Event_Archive,
|
||||||
FP_Scene_MainMenu_Event_About
|
FP_Scene_MainMenu_Event_About
|
||||||
} FP_Scene_MainMenu_Event;
|
} FP_Scene_MainMenu_Event;
|
||||||
|
typedef enum {
|
||||||
|
FP_Scene_View_Event_Username,
|
||||||
|
FP_Scene_View_Event_Password,
|
||||||
|
FP_Scene_View_Event_BadUSB
|
||||||
|
} FP_Scene_View_Event;
|
||||||
|
|
||||||
/* Extras */
|
/* Extras */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -55,21 +54,8 @@ void FP_Scene_Callback_MainMenu(void* context, uint32_t index) {
|
||||||
// Setting context
|
// Setting context
|
||||||
FP_App* app = context;
|
FP_App* app = context;
|
||||||
|
|
||||||
// Switching on Index
|
// Sending it to the scene manager
|
||||||
switch (index) {
|
scene_manager_handle_custom_event(app->scene_manager, index);
|
||||||
case FP_Scene_MainMenu_Event_About:
|
|
||||||
scene_manager_handle_custom_event(app->scene_manager, FP_Event_SwitchTo_About);
|
|
||||||
break;
|
|
||||||
case FP_Scene_MainMenu_Event_View:
|
|
||||||
scene_manager_handle_custom_event(app->scene_manager, FP_Event_SwitchTo_Overview);
|
|
||||||
break;
|
|
||||||
case FP_Scene_MainMenu_Event_Create:
|
|
||||||
scene_manager_handle_custom_event(app->scene_manager, FP_Event_SwitchTo_Create);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
FURI_LOG_I(TAG, "S_MAINMENU: Unimplemented!");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
void FP_Scene_Callback_Overview(void* context, uint32_t index) {
|
void FP_Scene_Callback_Overview(void* context, uint32_t index) {
|
||||||
// Setting context
|
// Setting context
|
||||||
|
@ -78,12 +64,19 @@ void FP_Scene_Callback_Overview(void* context, uint32_t index) {
|
||||||
// Sending it to the scene manager
|
// Sending it to the scene manager
|
||||||
scene_manager_handle_custom_event(app->scene_manager, index);
|
scene_manager_handle_custom_event(app->scene_manager, index);
|
||||||
}
|
}
|
||||||
void FP_Scene_Callback_View(DialogExResult result, void* context) {
|
void FP_Scene_Callback_View(void* context, uint32_t index) {
|
||||||
// Setting context
|
// Setting context
|
||||||
FP_App* app = context;
|
FP_App* app = context;
|
||||||
|
|
||||||
// Sending it to the scene manager
|
// Sending it to the scene manager
|
||||||
scene_manager_handle_custom_event(app->scene_manager, result);
|
scene_manager_handle_custom_event(app->scene_manager, index);
|
||||||
|
}
|
||||||
|
void FP_Scene_Callback_Cred(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_Callback_Send(DialogExResult result, void* context) {
|
void FP_Scene_Callback_Send(DialogExResult result, void* context) {
|
||||||
// Setting context
|
// Setting context
|
||||||
|
@ -173,43 +166,56 @@ void FP_Scene_Enter_View(void* context) {
|
||||||
FP_App* app = context;
|
FP_App* app = context;
|
||||||
|
|
||||||
// Freeing Dialog
|
// Freeing Dialog
|
||||||
dialog_ex_reset(app->dialog);
|
submenu_reset(app->submenu);
|
||||||
|
|
||||||
// Username
|
|
||||||
FuriString* text = furi_string_alloc();
|
|
||||||
furi_string_printf(text, "U: %s", app->manager->current->user);
|
|
||||||
|
|
||||||
// Adding some content
|
// Adding some content
|
||||||
dialog_ex_set_header(
|
submenu_add_item(
|
||||||
app->dialog,
|
app->submenu,
|
||||||
app->manager->current->name,
|
"View Username",
|
||||||
0, 0,
|
FP_Scene_View_Event_Username,
|
||||||
AlignLeft,
|
FP_Scene_Callback_View,
|
||||||
AlignTop
|
app
|
||||||
);
|
);
|
||||||
dialog_ex_set_text(
|
submenu_add_item(
|
||||||
app->dialog,
|
app->submenu,
|
||||||
furi_string_get_cstr(text),
|
"View Password",
|
||||||
5,
|
FP_Scene_View_Event_Password,
|
||||||
15,
|
FP_Scene_Callback_View,
|
||||||
AlignLeft,
|
app
|
||||||
AlignTop
|
|
||||||
);
|
);
|
||||||
dialog_ex_set_left_button_text(
|
submenu_add_item(
|
||||||
app->dialog,
|
app->submenu,
|
||||||
"Show"
|
"BadUSB",
|
||||||
|
FP_Scene_View_Event_BadUSB,
|
||||||
|
FP_Scene_Callback_View,
|
||||||
|
app
|
||||||
);
|
);
|
||||||
dialog_ex_set_right_button_text(
|
|
||||||
app->dialog,
|
|
||||||
"BadUSB"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Left & Right
|
|
||||||
dialog_ex_set_result_callback(app->dialog, FP_Scene_Callback_View);
|
|
||||||
dialog_ex_set_context(app->dialog, app);
|
|
||||||
|
|
||||||
// Sending view to Flipper
|
// Sending view to Flipper
|
||||||
view_dispatcher_switch_to_view(app->view_dispatcher, FP_View_Dialog);
|
view_dispatcher_switch_to_view(app->view_dispatcher, FP_View_Submenu);
|
||||||
|
}
|
||||||
|
void FP_Scene_Enter_Cred(void* context) {
|
||||||
|
// Set context
|
||||||
|
FP_App* app = context;
|
||||||
|
|
||||||
|
// Reset view
|
||||||
|
text_box_reset(app->textbox);
|
||||||
|
|
||||||
|
// Setting text
|
||||||
|
if (!strcmp(app->temp, "Username")) {
|
||||||
|
text_box_set_text(
|
||||||
|
app->textbox,
|
||||||
|
app->manager->current->user
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
text_box_set_text(
|
||||||
|
app->textbox,
|
||||||
|
app->manager->current->phrase
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send view to Flipper
|
||||||
|
view_dispatcher_switch_to_view(app->view_dispatcher, FP_View_TextBox);
|
||||||
}
|
}
|
||||||
void FP_Scene_Enter_Send(void* context) {
|
void FP_Scene_Enter_Send(void* context) {
|
||||||
// Setting context
|
// Setting context
|
||||||
|
@ -261,21 +267,21 @@ void FP_Scene_Enter_Create(void* context) {
|
||||||
app->varitemlist,
|
app->varitemlist,
|
||||||
"Name",
|
"Name",
|
||||||
1,
|
1,
|
||||||
FP_Scene_Callback_Create_Change,
|
NULL,
|
||||||
app
|
app
|
||||||
);
|
);
|
||||||
variable_item_list_add(
|
variable_item_list_add(
|
||||||
app->varitemlist,
|
app->varitemlist,
|
||||||
"Username",
|
"Username",
|
||||||
1,
|
1,
|
||||||
FP_Scene_Callback_Create_Change,
|
NULL,
|
||||||
app
|
app
|
||||||
);
|
);
|
||||||
variable_item_list_add(
|
variable_item_list_add(
|
||||||
app->varitemlist,
|
app->varitemlist,
|
||||||
"Password",
|
"Password",
|
||||||
1,
|
1,
|
||||||
FP_Scene_Callback_Create_Change,
|
NULL,
|
||||||
app
|
app
|
||||||
);
|
);
|
||||||
variable_item_list_add(
|
variable_item_list_add(
|
||||||
|
@ -318,6 +324,16 @@ void FP_Scene_Exit_View(void* context) {
|
||||||
// Reset menu
|
// Reset menu
|
||||||
dialog_ex_reset(app->dialog);
|
dialog_ex_reset(app->dialog);
|
||||||
}
|
}
|
||||||
|
void FP_Scene_Exit_Cred(void* context) {
|
||||||
|
// Setting context
|
||||||
|
FP_App* app = context;
|
||||||
|
|
||||||
|
// Free the temp string
|
||||||
|
free(app->temp);
|
||||||
|
|
||||||
|
// Reset menu
|
||||||
|
dialog_ex_reset(app->dialog);
|
||||||
|
}
|
||||||
void FP_Scene_Exit_Send(void* context) {
|
void FP_Scene_Exit_Send(void* context) {
|
||||||
// Setting context
|
// Setting context
|
||||||
FP_App* app = context;
|
FP_App* app = context;
|
||||||
|
@ -345,13 +361,13 @@ bool FP_Scene_Event_MainMenu(void* context, SceneManagerEvent event) {
|
||||||
|
|
||||||
// What to do?
|
// What to do?
|
||||||
switch (event.event) {
|
switch (event.event) {
|
||||||
case FP_Event_SwitchTo_About:
|
case FP_Scene_MainMenu_Event_About:
|
||||||
scene_manager_next_scene(app->scene_manager, FP_Scene_About);
|
scene_manager_next_scene(app->scene_manager, FP_Scene_About);
|
||||||
break;
|
break;
|
||||||
case FP_Event_SwitchTo_Overview:
|
case FP_Scene_MainMenu_Event_View:
|
||||||
scene_manager_next_scene(app->scene_manager, FP_Scene_Overview);
|
scene_manager_next_scene(app->scene_manager, FP_Scene_Overview);
|
||||||
break;
|
break;
|
||||||
case FP_Event_SwitchTo_Create:
|
case FP_Scene_MainMenu_Event_Create:
|
||||||
scene_manager_next_scene(app->scene_manager, FP_Scene_Create);
|
scene_manager_next_scene(app->scene_manager, FP_Scene_Create);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -404,33 +420,49 @@ bool FP_Scene_Event_View(void* context, SceneManagerEvent event) {
|
||||||
|
|
||||||
// What did we press?
|
// What did we press?
|
||||||
switch (event.event) {
|
switch (event.event) {
|
||||||
case DialogExResultLeft:
|
case FP_Scene_View_Event_Username:
|
||||||
// Getting password and storing it in memory
|
app->temp = malloc(sizeof(char*));
|
||||||
FuriString* text = furi_string_alloc();
|
app->temp = "Username";
|
||||||
furi_string_printf(text, "U: %s\nP: %s",
|
scene_manager_next_scene(app->scene_manager, FP_Scene_Cred);
|
||||||
app->manager->current->user,
|
|
||||||
app->manager->current->phrase
|
|
||||||
);
|
|
||||||
|
|
||||||
dialog_ex_set_text(
|
|
||||||
app->dialog,
|
|
||||||
furi_string_get_cstr(text),
|
|
||||||
5,15,
|
|
||||||
AlignLeft,
|
|
||||||
AlignTop
|
|
||||||
);
|
|
||||||
dialog_ex_set_left_button_text(app->dialog, NULL);
|
|
||||||
break;
|
break;
|
||||||
case DialogExResultRight:
|
case FP_Scene_View_Event_Password:
|
||||||
// Changing scenes
|
app->temp = malloc(sizeof(char*));
|
||||||
|
app->temp = "Password";
|
||||||
|
scene_manager_next_scene(app->scene_manager, FP_Scene_Cred);
|
||||||
|
break;
|
||||||
|
case FP_Scene_View_Event_BadUSB:
|
||||||
scene_manager_next_scene(app->scene_manager, FP_Scene_Send);
|
scene_manager_next_scene(app->scene_manager, FP_Scene_Send);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
consumed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return result
|
||||||
|
return consumed;
|
||||||
|
}
|
||||||
|
bool FP_Scene_Event_Cred(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;
|
||||||
|
|
||||||
|
// Debug log about what we pressed
|
||||||
|
FURI_LOG_D(TAG, "Pressed %li", event.event);
|
||||||
|
|
||||||
// Switching based on event
|
|
||||||
UNUSED(app);
|
UNUSED(app);
|
||||||
|
|
||||||
|
// What to do?
|
||||||
|
switch (event.event) {
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
consumed = false;
|
consumed = false;
|
||||||
}
|
}
|
||||||
|
@ -495,6 +527,7 @@ void (*const FP_Scene_Enter_Handlers[])(void*) = {
|
||||||
FP_Scene_Enter_MainMenu,
|
FP_Scene_Enter_MainMenu,
|
||||||
FP_Scene_Enter_Overview,
|
FP_Scene_Enter_Overview,
|
||||||
FP_Scene_Enter_View,
|
FP_Scene_Enter_View,
|
||||||
|
FP_Scene_Enter_Cred,
|
||||||
FP_Scene_Enter_Send,
|
FP_Scene_Enter_Send,
|
||||||
FP_Scene_Enter_Create
|
FP_Scene_Enter_Create
|
||||||
};
|
};
|
||||||
|
@ -502,6 +535,7 @@ bool (*const FP_Scene_Event_Handlers[])(void*, SceneManagerEvent) = {
|
||||||
FP_Scene_Event_MainMenu,
|
FP_Scene_Event_MainMenu,
|
||||||
FP_Scene_Event_Overview,
|
FP_Scene_Event_Overview,
|
||||||
FP_Scene_Event_View,
|
FP_Scene_Event_View,
|
||||||
|
FP_Scene_Event_Cred,
|
||||||
FP_Scene_Event_Send,
|
FP_Scene_Event_Send,
|
||||||
FP_Scene_Event_Create
|
FP_Scene_Event_Create
|
||||||
};
|
};
|
||||||
|
@ -509,6 +543,7 @@ void (*const FP_Scene_Exit_Handlers[])(void*) = {
|
||||||
FP_Scene_Exit_MainMenu,
|
FP_Scene_Exit_MainMenu,
|
||||||
FP_Scene_Exit_Overview,
|
FP_Scene_Exit_Overview,
|
||||||
FP_Scene_Exit_View,
|
FP_Scene_Exit_View,
|
||||||
|
FP_Scene_Exit_Cred,
|
||||||
FP_Scene_Exit_Send,
|
FP_Scene_Exit_Send,
|
||||||
FP_Scene_Exit_Create
|
FP_Scene_Exit_Create
|
||||||
};
|
};
|
||||||
|
@ -561,6 +596,7 @@ FP_App* fp_app_init() {
|
||||||
result->varitemlist = variable_item_list_alloc();
|
result->varitemlist = variable_item_list_alloc();
|
||||||
result->dialog = dialog_ex_alloc();
|
result->dialog = dialog_ex_alloc();
|
||||||
result->submenu = submenu_alloc();
|
result->submenu = submenu_alloc();
|
||||||
|
result->textbox = text_box_alloc();
|
||||||
result->popup = popup_alloc();
|
result->popup = popup_alloc();
|
||||||
|
|
||||||
// Event handling
|
// Event handling
|
||||||
|
@ -570,8 +606,9 @@ FP_App* fp_app_init() {
|
||||||
|
|
||||||
// Adding views to dispatcher
|
// Adding views to dispatcher
|
||||||
view_dispatcher_add_view(result->view_dispatcher, FP_View_VariableItemList, variable_item_list_get_view(result->varitemlist));
|
view_dispatcher_add_view(result->view_dispatcher, FP_View_VariableItemList, variable_item_list_get_view(result->varitemlist));
|
||||||
view_dispatcher_add_view(result->view_dispatcher, FP_View_Submenu, submenu_get_view(result->submenu));
|
view_dispatcher_add_view(result->view_dispatcher, FP_View_TextBox, text_box_get_view(result->textbox));
|
||||||
view_dispatcher_add_view(result->view_dispatcher, FP_View_Dialog, dialog_ex_get_view(result->dialog));
|
view_dispatcher_add_view(result->view_dispatcher, FP_View_Dialog, dialog_ex_get_view(result->dialog));
|
||||||
|
view_dispatcher_add_view(result->view_dispatcher, FP_View_Submenu, submenu_get_view(result->submenu));
|
||||||
view_dispatcher_add_view(result->view_dispatcher, FP_View_Popup, popup_get_view(result->popup));
|
view_dispatcher_add_view(result->view_dispatcher, FP_View_Popup, popup_get_view(result->popup));
|
||||||
|
|
||||||
// Return app
|
// Return app
|
||||||
|
@ -601,11 +638,13 @@ void fp_app_free(FP_App* app) {
|
||||||
scene_manager_free(app->scene_manager);
|
scene_manager_free(app->scene_manager);
|
||||||
view_dispatcher_remove_view(app->view_dispatcher, FP_View_VariableItemList);
|
view_dispatcher_remove_view(app->view_dispatcher, FP_View_VariableItemList);
|
||||||
view_dispatcher_remove_view(app->view_dispatcher, FP_View_Submenu);
|
view_dispatcher_remove_view(app->view_dispatcher, FP_View_Submenu);
|
||||||
|
view_dispatcher_remove_view(app->view_dispatcher, FP_View_TextBox);
|
||||||
view_dispatcher_remove_view(app->view_dispatcher, FP_View_Dialog);
|
view_dispatcher_remove_view(app->view_dispatcher, FP_View_Dialog);
|
||||||
view_dispatcher_remove_view(app->view_dispatcher, FP_View_Popup);
|
view_dispatcher_remove_view(app->view_dispatcher, FP_View_Popup);
|
||||||
view_dispatcher_free(app->view_dispatcher);
|
view_dispatcher_free(app->view_dispatcher);
|
||||||
variable_item_list_free(app->varitemlist);
|
variable_item_list_free(app->varitemlist);
|
||||||
dialog_ex_free(app->dialog);
|
dialog_ex_free(app->dialog);
|
||||||
|
text_box_free(app->textbox);
|
||||||
submenu_free(app->submenu);
|
submenu_free(app->submenu);
|
||||||
popup_free(app->popup);
|
popup_free(app->popup);
|
||||||
free(app);
|
free(app);
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <gui/modules/submenu.h>
|
#include <gui/modules/submenu.h>
|
||||||
#include <gui/modules/popup.h>
|
#include <gui/modules/popup.h>
|
||||||
#include <gui/modules/variable_item_list.h>
|
#include <gui/modules/variable_item_list.h>
|
||||||
|
#include <gui/modules/text_box.h>
|
||||||
|
|
||||||
#include "app.h"
|
#include "app.h"
|
||||||
#include "manager.h"
|
#include "manager.h"
|
||||||
|
@ -25,9 +26,11 @@ typedef struct {
|
||||||
VariableItemList* varitemlist;
|
VariableItemList* varitemlist;
|
||||||
DialogEx* dialog;
|
DialogEx* dialog;
|
||||||
Submenu* submenu;
|
Submenu* submenu;
|
||||||
|
TextBox* textbox;
|
||||||
Popup* popup;
|
Popup* popup;
|
||||||
|
|
||||||
Manager* manager;
|
Manager* manager;
|
||||||
|
char* temp;
|
||||||
} FP_App;
|
} FP_App;
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|
Loading…
Reference in a new issue