|
@@ -1,5 +1,11 @@
|
|
|
#include "../wifi_marauder_app_i.h"
|
|
#include "../wifi_marauder_app_i.h"
|
|
|
|
|
|
|
|
|
|
+const char* Y = "Y";
|
|
|
|
|
+const char* N = "N";
|
|
|
|
|
+
|
|
|
|
|
+#define PROMPT_PCAPS 0
|
|
|
|
|
+#define PROMPT_LOGS 1
|
|
|
|
|
+
|
|
|
void wifi_marauder_scene_settings_init_widget_callback(
|
|
void wifi_marauder_scene_settings_init_widget_callback(
|
|
|
GuiButtonType result,
|
|
GuiButtonType result,
|
|
|
InputType type,
|
|
InputType type,
|
|
@@ -10,24 +16,44 @@ void wifi_marauder_scene_settings_init_widget_callback(
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void wifi_marauder_scene_settings_init_on_enter(void* context) {
|
|
|
|
|
- WifiMarauderApp* app = context;
|
|
|
|
|
|
|
+void wifi_marauder_scene_settings_init_setup_widget(WifiMarauderApp* app) {
|
|
|
Widget* widget = app->widget;
|
|
Widget* widget = app->widget;
|
|
|
|
|
|
|
|
|
|
+ widget_reset(widget);
|
|
|
|
|
+
|
|
|
widget_add_button_element(
|
|
widget_add_button_element(
|
|
|
widget, GuiButtonTypeLeft, "No", wifi_marauder_scene_settings_init_widget_callback, app);
|
|
widget, GuiButtonTypeLeft, "No", wifi_marauder_scene_settings_init_widget_callback, app);
|
|
|
widget_add_button_element(
|
|
widget_add_button_element(
|
|
|
widget, GuiButtonTypeRight, "Yes", wifi_marauder_scene_settings_init_widget_callback, app);
|
|
widget, GuiButtonTypeRight, "Yes", wifi_marauder_scene_settings_init_widget_callback, app);
|
|
|
|
|
|
|
|
- widget_add_string_element(app->widget, 0, 0, AlignLeft, AlignTop, FontPrimary, "Save pcaps?");
|
|
|
|
|
- widget_add_text_scroll_element(
|
|
|
|
|
- app->widget,
|
|
|
|
|
- 0,
|
|
|
|
|
- 12,
|
|
|
|
|
- 128,
|
|
|
|
|
- 38,
|
|
|
|
|
- "With compatible marauder\nfirmware, you can choose to\nsave captures (pcaps) to the\nflipper sd card here:\n/" MARAUDER_APP_FOLDER_USER
|
|
|
|
|
- "\n\nYou can change this setting in the app at any time. Would\nyou like to enable this feature now?");
|
|
|
|
|
|
|
+ if(app->which_prompt == PROMPT_PCAPS) {
|
|
|
|
|
+ widget_add_string_element(widget, 0, 0, AlignLeft, AlignTop, FontPrimary, "Save pcaps?");
|
|
|
|
|
+ widget_add_text_scroll_element(
|
|
|
|
|
+ widget,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ 12,
|
|
|
|
|
+ 128,
|
|
|
|
|
+ 38,
|
|
|
|
|
+ "With compatible marauder\nfirmware, you can choose to\nsave captures (pcaps) to the\nflipper sd card here:\n/" MARAUDER_APP_FOLDER_USER
|
|
|
|
|
+ "\n\nYou can change this setting in the app at any time. Would\nyou like to enable this feature now?");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ widget_add_string_element(widget, 0, 0, AlignLeft, AlignTop, FontPrimary, "Save logs?");
|
|
|
|
|
+ widget_add_text_scroll_element(
|
|
|
|
|
+ widget,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ 12,
|
|
|
|
|
+ 128,
|
|
|
|
|
+ 38,
|
|
|
|
|
+ "This app supports saving text\nlogs of console output to the\nflipper sd card here:\n/" MARAUDER_APP_FOLDER_USER
|
|
|
|
|
+ "\n\nYou can change this setting in the app at any time. Would\nyou like to enable this feature now?");
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void wifi_marauder_scene_settings_init_on_enter(void* context) {
|
|
|
|
|
+ WifiMarauderApp* app = context;
|
|
|
|
|
+
|
|
|
|
|
+ app->which_prompt = PROMPT_PCAPS;
|
|
|
|
|
+ wifi_marauder_scene_settings_init_setup_widget(app);
|
|
|
|
|
|
|
|
view_dispatcher_switch_to_view(app->view_dispatcher, WifiMarauderAppViewWidget);
|
|
view_dispatcher_switch_to_view(app->view_dispatcher, WifiMarauderAppViewWidget);
|
|
|
}
|
|
}
|
|
@@ -37,9 +63,55 @@ bool wifi_marauder_scene_settings_init_on_event(void* context, SceneManagerEvent
|
|
|
bool consumed = false;
|
|
bool consumed = false;
|
|
|
|
|
|
|
|
if(event.type == SceneManagerEventTypeCustom) {
|
|
if(event.type == SceneManagerEventTypeCustom) {
|
|
|
- // go back to start scene (main menu)
|
|
|
|
|
- app->need_to_prompt_settings_init = false;
|
|
|
|
|
- scene_manager_previous_scene(app->scene_manager);
|
|
|
|
|
|
|
+ // get which button press: "Yes" or "No"
|
|
|
|
|
+ if(event.event == GuiButtonTypeRight) {
|
|
|
|
|
+ // Yes
|
|
|
|
|
+ if(app->which_prompt == PROMPT_PCAPS) {
|
|
|
|
|
+ app->ok_to_save_pcaps = true;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ app->ok_to_save_logs = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ } else if(event.event == GuiButtonTypeLeft) {
|
|
|
|
|
+ // No
|
|
|
|
|
+ if(app->which_prompt == PROMPT_PCAPS) {
|
|
|
|
|
+ app->ok_to_save_pcaps = false;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ app->ok_to_save_logs = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // save setting to file, load next widget or scene
|
|
|
|
|
+ if(app->which_prompt == PROMPT_PCAPS) {
|
|
|
|
|
+ if(storage_file_open(
|
|
|
|
|
+ app->save_pcap_setting_file,
|
|
|
|
|
+ SAVE_PCAP_SETTING_FILEPATH,
|
|
|
|
|
+ FSAM_WRITE,
|
|
|
|
|
+ FSOM_CREATE_ALWAYS)) {
|
|
|
|
|
+ const char* ok = app->ok_to_save_pcaps ? Y : N;
|
|
|
|
|
+ storage_file_write(app->save_pcap_setting_file, ok, sizeof(ok));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ dialog_message_show_storage_error(app->dialogs, "Cannot save settings");
|
|
|
|
|
+ }
|
|
|
|
|
+ storage_file_close(app->save_pcap_setting_file);
|
|
|
|
|
+ // same scene, different-looking widget
|
|
|
|
|
+ app->which_prompt = PROMPT_LOGS;
|
|
|
|
|
+ wifi_marauder_scene_settings_init_setup_widget(app);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if(storage_file_open(
|
|
|
|
|
+ app->save_logs_setting_file,
|
|
|
|
|
+ SAVE_LOGS_SETTING_FILEPATH,
|
|
|
|
|
+ FSAM_WRITE,
|
|
|
|
|
+ FSOM_CREATE_ALWAYS)) {
|
|
|
|
|
+ const char* ok = app->ok_to_save_logs ? Y : N;
|
|
|
|
|
+ storage_file_write(app->save_logs_setting_file, ok, sizeof(ok));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ dialog_message_show_storage_error(app->dialogs, "Cannot save settings");
|
|
|
|
|
+ }
|
|
|
|
|
+ storage_file_close(app->save_logs_setting_file);
|
|
|
|
|
+ // go back to start scene (main menu)
|
|
|
|
|
+ app->need_to_prompt_settings_init = false;
|
|
|
|
|
+ scene_manager_previous_scene(app->scene_manager);
|
|
|
|
|
+ }
|
|
|
consumed = true;
|
|
consumed = true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -49,4 +121,10 @@ bool wifi_marauder_scene_settings_init_on_event(void* context, SceneManagerEvent
|
|
|
void wifi_marauder_scene_settings_init_on_exit(void* context) {
|
|
void wifi_marauder_scene_settings_init_on_exit(void* context) {
|
|
|
WifiMarauderApp* app = context;
|
|
WifiMarauderApp* app = context;
|
|
|
widget_reset(app->widget);
|
|
widget_reset(app->widget);
|
|
|
|
|
+ if(storage_file_is_open(app->save_pcap_setting_file)) {
|
|
|
|
|
+ storage_file_close(app->save_pcap_setting_file);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(storage_file_is_open(app->save_logs_setting_file)) {
|
|
|
|
|
+ storage_file_close(app->save_logs_setting_file);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|