MX 2 лет назад
Родитель
Сommit
730d5c5c70

+ 2 - 13
hex_viewer.c

@@ -71,17 +71,7 @@ HexViewer* hex_viewer_app_alloc() {
         hex_viewer_startscreen_get_view(app->hex_viewer_startscreen));
         hex_viewer_startscreen_get_view(app->hex_viewer_startscreen));
 
 
     view_dispatcher_add_view(
     view_dispatcher_add_view(
-        app->view_dispatcher, HexViewerViewIdScene1, text_input_get_view(app->text_input));
-
-    app->hex_viewer_scene_2 = hex_viewer_scene_2_alloc();
-    view_dispatcher_add_view(
-        app->view_dispatcher,
-        HexViewerViewIdScene2,
-        hex_viewer_scene_2_get_view(app->hex_viewer_scene_2));
-
-    app->button_menu = button_menu_alloc();
-    view_dispatcher_add_view(
-        app->view_dispatcher, HexViewerViewIdScene3, button_menu_get_view(app->button_menu));
+        app->view_dispatcher, HexViewerViewIdScroll, text_input_get_view(app->text_input));
 
 
     app->variable_item_list = variable_item_list_alloc();
     app->variable_item_list = variable_item_list_alloc();
     view_dispatcher_add_view(
     view_dispatcher_add_view(
@@ -104,8 +94,7 @@ void hex_viewer_app_free(HexViewer* app) {
 
 
     // View Dispatcher
     // View Dispatcher
     view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdMenu);
     view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdMenu);
-    view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdScene1);
-    view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdScene2);
+    view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdScroll);
     view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdSettings);
     view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdSettings);
 
 
     submenu_free(app->submenu);
     submenu_free(app->submenu);

+ 1 - 16
hex_viewer.h

@@ -17,8 +17,6 @@
 #include <gui/modules/dialog_ex.h>
 #include <gui/modules/dialog_ex.h>
 #include "scenes/hex_viewer_scene.h"
 #include "scenes/hex_viewer_scene.h"
 #include "views/hex_viewer_startscreen.h"
 #include "views/hex_viewer_startscreen.h"
-#include "views/hex_viewer_scene_1.h"
-#include "views/hex_viewer_scene_2.h"
 #include "helpers/hex_viewer_storage.h"
 #include "helpers/hex_viewer_storage.h"
 
 
 #include <storage/storage.h>
 #include <storage/storage.h>
@@ -28,9 +26,6 @@
 
 
 #define TAG "HexViewer"
 #define TAG "HexViewer"
 
 
-// #define SUBGHZ_APP_EXTENSION ".sub"
-// #define SUBGHZ_APP_FOLDER ANY_PATH("subghz")
-
 #define HEX_VIEWER_APP_PATH_FOLDER "/any" // TODO ANY_PATH
 #define HEX_VIEWER_APP_PATH_FOLDER "/any" // TODO ANY_PATH
 #define HEX_VIEWER_APP_EXTENSION "*"
 #define HEX_VIEWER_APP_EXTENSION "*"
 #define HEX_VIEWER_PERCENT_INPUT 16
 #define HEX_VIEWER_PERCENT_INPUT 16
@@ -39,9 +34,6 @@
 #define HEX_VIEWER_LINES_ON_SCREEN 4u
 #define HEX_VIEWER_LINES_ON_SCREEN 4u
 #define HEX_VIEWER_BUF_SIZE (HEX_VIEWER_LINES_ON_SCREEN * HEX_VIEWER_BYTES_PER_LINE)
 #define HEX_VIEWER_BUF_SIZE (HEX_VIEWER_LINES_ON_SCREEN * HEX_VIEWER_BYTES_PER_LINE)
 
 
-// typedef struct HexViewerModel HexViewerModel;
-// typedef struct HexViewer HexViewer;
-
 typedef struct {
 typedef struct {
     uint8_t file_bytes[HEX_VIEWER_LINES_ON_SCREEN][HEX_VIEWER_BYTES_PER_LINE];
     uint8_t file_bytes[HEX_VIEWER_LINES_ON_SCREEN][HEX_VIEWER_BYTES_PER_LINE];
     uint32_t file_offset;
     uint32_t file_offset;
@@ -64,26 +56,19 @@ typedef struct {
     SceneManager* scene_manager;
     SceneManager* scene_manager;
     VariableItemList* variable_item_list;
     VariableItemList* variable_item_list;
     HexViewerStartscreen* hex_viewer_startscreen;
     HexViewerStartscreen* hex_viewer_startscreen;
-    HexViewerScene1* hex_viewer_scene_1;
-    HexViewerScene2* hex_viewer_scene_2;
     DialogsApp* dialogs; // File Browser
     DialogsApp* dialogs; // File Browser
     FuriString* file_path; // File Browser
     FuriString* file_path; // File Browser
     uint32_t haptic;
     uint32_t haptic;
     uint32_t speaker;
     uint32_t speaker;
     uint32_t led;
     uint32_t led;
     uint32_t save_settings;
     uint32_t save_settings;
-    ButtonMenu* button_menu; // Button Menu
     char percent_buf[HEX_VIEWER_PERCENT_INPUT];
     char percent_buf[HEX_VIEWER_PERCENT_INPUT];
 } HexViewer;
 } HexViewer;
 
 
 typedef enum {
 typedef enum {
     HexViewerViewIdStartscreen,
     HexViewerViewIdStartscreen,
     HexViewerViewIdMenu,
     HexViewerViewIdMenu,
-    HexViewerViewIdScene1,
-    HexViewerViewIdScene2,
-    HexViewerViewIdScene3,
-    HexViewerViewIdScene4,
-    HexViewerViewIdScene5,
+    HexViewerViewIdScroll,
     HexViewerViewIdSettings,
     HexViewerViewIdSettings,
 } HexViewerViewId;
 } HexViewerViewId;
 
 

+ 3 - 4
scenes/hex_viewer_scene_config.h

@@ -1,7 +1,6 @@
 ADD_SCENE(hex_viewer, startscreen, Startscreen)
 ADD_SCENE(hex_viewer, startscreen, Startscreen)
 ADD_SCENE(hex_viewer, menu, Menu)
 ADD_SCENE(hex_viewer, menu, Menu)
-ADD_SCENE(hex_viewer, scene_1, Scene_1)
-ADD_SCENE(hex_viewer, scene_2, Scene_2)
-ADD_SCENE(hex_viewer, scene_3, Scene_3)
-ADD_SCENE(hex_viewer, scene_4, Scene_4)
+ADD_SCENE(hex_viewer, scroll, Scroll)
+ADD_SCENE(hex_viewer, info, Info)
+ADD_SCENE(hex_viewer, open, Open)
 ADD_SCENE(hex_viewer, settings, Settings)
 ADD_SCENE(hex_viewer, settings, Settings)

+ 4 - 16
scenes/hex_viewer_scene_scene_2.c → scenes/hex_viewer_scene_info.c

@@ -1,16 +1,6 @@
 #include "../hex_viewer.h"
 #include "../hex_viewer.h"
-#include "../helpers/hex_viewer_custom_event.h"
-#include "../helpers/hex_viewer_haptic.h"
-#include "../helpers/hex_viewer_led.h"
-#include "../views/hex_viewer_scene_2.h"
-
-// void hex_viewer_scene_2_callback(HexViewerCustomEvent event, void* context) {
-//     furi_assert(context);
-//     HexViewer* app = context;
-//     view_dispatcher_send_custom_event(app->view_dispatcher, event);
-// }
-
-void hex_viewer_scene_scene_2_on_enter(void* context) {
+
+void hex_viewer_scene_info_on_enter(void* context) {
     furi_assert(context);
     furi_assert(context);
     HexViewer* app = context;
     HexViewer* app = context;
 
 
@@ -23,7 +13,6 @@ void hex_viewer_scene_scene_2_on_enter(void* context) {
         app->model->file_size,
         app->model->file_size,
         app->model->file_size);
         app->model->file_size);
 
 
-    // DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
     DialogMessage* message = dialog_message_alloc();
     DialogMessage* message = dialog_message_alloc();
     dialog_message_set_header(message, "Hex Viewer v2.0", 16, 2, AlignLeft, AlignTop);
     dialog_message_set_header(message, "Hex Viewer v2.0", 16, 2, AlignLeft, AlignTop);
     dialog_message_set_icon(message, &I_hex_10px, 3, 2);
     dialog_message_set_icon(message, &I_hex_10px, 3, 2);
@@ -33,13 +22,12 @@ void hex_viewer_scene_scene_2_on_enter(void* context) {
 
 
     furi_string_free(buffer);
     furi_string_free(buffer);
     dialog_message_free(message);
     dialog_message_free(message);
-    // furi_record_close(RECORD_DIALOGS);
 
 
     scene_manager_search_and_switch_to_previous_scene(
     scene_manager_search_and_switch_to_previous_scene(
         app->scene_manager, HexViewerViewIdStartscreen);
         app->scene_manager, HexViewerViewIdStartscreen);
 }
 }
 
 
-bool hex_viewer_scene_scene_2_on_event(void* context, SceneManagerEvent event) {
+bool hex_viewer_scene_info_on_event(void* context, SceneManagerEvent event) {
     HexViewer* app = context;
     HexViewer* app = context;
     UNUSED(app);
     UNUSED(app);
     UNUSED(event);
     UNUSED(event);
@@ -48,7 +36,7 @@ bool hex_viewer_scene_scene_2_on_event(void* context, SceneManagerEvent event) {
     return consumed;
     return consumed;
 }
 }
 
 
-void hex_viewer_scene_scene_2_on_exit(void* context) {
+void hex_viewer_scene_info_on_exit(void* context) {
     HexViewer* app = context;
     HexViewer* app = context;
     UNUSED(app);
     UNUSED(app);
 }
 }

+ 15 - 23
scenes/hex_viewer_scene_menu.c

@@ -1,11 +1,9 @@
 #include "../hex_viewer.h"
 #include "../hex_viewer.h"
 
 
 enum SubmenuIndex {
 enum SubmenuIndex {
-    SubmenuIndexScene1 = 10,
-    SubmenuIndexScene2,
-    // SubmenuIndexScene3,
-    SubmenuIndexScene4,
-    // SubmenuIndexScene5,
+    SubmenuIndexScroll = 10,
+    SubmenuIndexInfo,
+    SubmenuIndexOpen,
     // SubmenuIndexSettings,
     // SubmenuIndexSettings,
 };
 };
 
 
@@ -21,21 +19,19 @@ void hex_viewer_scene_menu_on_enter(void* context) {
     submenu_add_item(
     submenu_add_item(
         app->submenu,
         app->submenu,
         "Open file ...",
         "Open file ...",
-        SubmenuIndexScene4,
+        SubmenuIndexOpen,
         hex_viewer_scene_menu_submenu_callback,
         hex_viewer_scene_menu_submenu_callback,
         app);
         app);
-    // submenu_add_item(app->submenu, "Scene 2 (Inputs/Effects)", SubmenuIndexScene2, hex_viewer_scene_menu_submenu_callback, app);
-    // submenu_add_item(app->submenu, "Scene 3 (Buttonmenu)", SubmenuIndexScene3, hex_viewer_scene_menu_submenu_callback, app);
     submenu_add_item(
     submenu_add_item(
         app->submenu,
         app->submenu,
         "Scroll to ...",
         "Scroll to ...",
-        SubmenuIndexScene1,
+        SubmenuIndexScroll,
         hex_viewer_scene_menu_submenu_callback,
         hex_viewer_scene_menu_submenu_callback,
         app);
         app);
     submenu_add_item(
     submenu_add_item(
         app->submenu,
         app->submenu,
         "Show info ...",
         "Show info ...",
-        SubmenuIndexScene2,
+        SubmenuIndexInfo,
         hex_viewer_scene_menu_submenu_callback,
         hex_viewer_scene_menu_submenu_callback,
         app);
         app);
     // submenu_add_item(app->submenu, "Settings", SubmenuIndexSettings, hex_viewer_scene_menu_submenu_callback, app);
     // submenu_add_item(app->submenu, "Settings", SubmenuIndexSettings, hex_viewer_scene_menu_submenu_callback, app);
@@ -56,24 +52,20 @@ bool hex_viewer_scene_menu_on_event(void* context, SceneManagerEvent event) {
         scene_manager_previous_scene(app->scene_manager);
         scene_manager_previous_scene(app->scene_manager);
         return true;
         return true;
     } else if(event.type == SceneManagerEventTypeCustom) {
     } else if(event.type == SceneManagerEventTypeCustom) {
-        if(event.event == SubmenuIndexScene1) {
+        if(event.event == SubmenuIndexScroll) {
             scene_manager_set_scene_state(
             scene_manager_set_scene_state(
-                app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene1);
-            scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_1);
+                app->scene_manager, HexViewerSceneMenu, SubmenuIndexScroll);
+            scene_manager_next_scene(app->scene_manager, HexViewerSceneScroll);
             return true;
             return true;
-        } else if(event.event == SubmenuIndexScene2) {
+        } else if(event.event == SubmenuIndexInfo) {
             scene_manager_set_scene_state(
             scene_manager_set_scene_state(
-                app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene2);
-            scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_2);
+                app->scene_manager, HexViewerSceneMenu, SubmenuIndexInfo);
+            scene_manager_next_scene(app->scene_manager, HexViewerSceneInfo);
             return true;
             return true;
-            // } else if (event.event == SubmenuIndexScene3) {
-            //     scene_manager_set_scene_state(
-            //         app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene3);
-            //     scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_3);
-        } else if(event.event == SubmenuIndexScene4) {
+        } else if(event.event == SubmenuIndexOpen) {
             scene_manager_set_scene_state(
             scene_manager_set_scene_state(
-                app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene4);
-            scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_4);
+                app->scene_manager, HexViewerSceneMenu, SubmenuIndexOpen);
+            scene_manager_next_scene(app->scene_manager, HexViewerSceneOpen);
             // } else if (event.event == SubmenuIndexSettings) {
             // } else if (event.event == SubmenuIndexSettings) {
             //     scene_manager_set_scene_state(
             //     scene_manager_set_scene_state(
             //         app->scene_manager, HexViewerSceneMenu, SubmenuIndexSettings);
             //         app->scene_manager, HexViewerSceneMenu, SubmenuIndexSettings);

+ 3 - 7
scenes/hex_viewer_scene_scene_4.c → scenes/hex_viewer_scene_open.c

@@ -1,6 +1,6 @@
 #include "../hex_viewer.h"
 #include "../hex_viewer.h"
 
 
-void hex_viewer_scene_scene_4_on_enter(void* context) {
+void hex_viewer_scene_open_on_enter(void* context) {
     furi_assert(context);
     furi_assert(context);
     HexViewer* app = context;
     HexViewer* app = context;
 
 
@@ -22,18 +22,14 @@ void hex_viewer_scene_scene_4_on_enter(void* context) {
     }
     }
 
 
     if(success) {
     if(success) {
-        // Load page to do something with result
-        //scene_manager_next_scene(app->scene_manager, HexViewerViewIdMenu);
-        //scene_manager_previous_scene(app->scene_manager); // temp for showcase
         scene_manager_search_and_switch_to_previous_scene(
         scene_manager_search_and_switch_to_previous_scene(
             app->scene_manager, HexViewerViewIdStartscreen);
             app->scene_manager, HexViewerViewIdStartscreen);
     } else {
     } else {
-        // This is basically if someone quites the browser
         scene_manager_previous_scene(app->scene_manager);
         scene_manager_previous_scene(app->scene_manager);
     }
     }
 }
 }
 
 
-bool hex_viewer_scene_scene_4_on_event(void* context, SceneManagerEvent event) {
+bool hex_viewer_scene_open_on_event(void* context, SceneManagerEvent event) {
     UNUSED(context);
     UNUSED(context);
     UNUSED(event);
     UNUSED(event);
     bool consumed = true;
     bool consumed = true;
@@ -41,6 +37,6 @@ bool hex_viewer_scene_scene_4_on_event(void* context, SceneManagerEvent event) {
     return consumed;
     return consumed;
 }
 }
 
 
-void hex_viewer_scene_scene_4_on_exit(void* context) {
+void hex_viewer_scene_open_on_exit(void* context) {
     UNUSED(context);
     UNUSED(context);
 }
 }

+ 0 - 141
scenes/hex_viewer_scene_scene_3.c

@@ -1,141 +0,0 @@
-#include "../hex_viewer.h"
-#include "../helpers/hex_viewer_custom_event.h"
-#include "../helpers/hex_viewer_haptic.h"
-#include "../helpers/hex_viewer_led.h"
-
-typedef enum {
-    ButtonIndexControl3 = -3,
-    ButtonIndexControl2 = -2,
-    ButtonIndexControl1 = -1,
-    ButtonIndexButton1 = 0,
-    ButtonIndexButton2 = 1,
-    ButtonIndexButton3 = 2,
-} ButtonIndex;
-
-static void hex_viewer_scene_3_callback(void* context, int32_t index, InputType type) {
-    HexViewer* app = context;
-
-    uint16_t custom_type;
-    if(type == InputTypePress) {
-        custom_type = HexViewerCustomEventMenuSelected;
-    } else if(type == InputTypeRelease) {
-        custom_type = HexViewerCustomEventMenuVoid;
-    } else if(type == InputTypeShort) {
-        //somehow ButtonMenuItemTypeCommon uses InputTypeShort
-        custom_type = HexViewerCustomEventMenuSelected;
-    } else {
-        furi_crash("Unexpected Input Type");
-    }
-    view_dispatcher_send_custom_event(app->view_dispatcher, hex_viewer_custom_menu_event_pack(custom_type, index));
-}
-
-void hex_viewer_scene_scene_3_on_enter(void* context) {
-    furi_assert(context);
-    HexViewer* app = context;
-    ButtonMenu* button_menu = app->button_menu;
-    SceneManager* scene_manager = app->scene_manager;
-
-    button_menu_add_item(
-        button_menu,
-        "Common",
-        ButtonIndexButton1,
-        hex_viewer_scene_3_callback,
-        ButtonMenuItemTypeCommon,
-        context);
-    button_menu_add_item(
-        button_menu,
-        "Button",
-        ButtonIndexButton2,
-        hex_viewer_scene_3_callback,
-        ButtonMenuItemTypeCommon,
-        context);
-    button_menu_add_item(
-        button_menu,
-        "Examples",
-        ButtonIndexButton1,
-        hex_viewer_scene_3_callback,
-        ButtonMenuItemTypeCommon,
-        context);
-
-    button_menu_add_item(
-        button_menu,
-        "Control",
-        ButtonIndexControl1,
-        hex_viewer_scene_3_callback,
-        ButtonMenuItemTypeControl,
-        context);
-    
-    button_menu_add_item(
-        button_menu,
-        "Button",
-        ButtonIndexControl2,
-        hex_viewer_scene_3_callback,
-        ButtonMenuItemTypeControl,
-        context);
-
-    button_menu_add_item(
-        button_menu,
-        "Examples",
-        ButtonIndexControl3,
-        hex_viewer_scene_3_callback,
-        ButtonMenuItemTypeControl,
-        context);
-
-    button_menu_set_header(button_menu, "Button Menu");
-    const int16_t button_index =
-        (signed)scene_manager_get_scene_state(app->scene_manager, HexViewerViewIdScene3);
-    button_menu_set_selected_item(button_menu, button_index);
-    scene_manager_set_scene_state(scene_manager, HexViewerSceneScene_3, ButtonIndexButton1);
-
-    view_dispatcher_switch_to_view(app->view_dispatcher, HexViewerViewIdScene3);
-}
-
-bool hex_viewer_scene_scene_3_on_event(void* context, SceneManagerEvent event) {
-    HexViewer* app = context;
-    bool consumed = false;
-
-    if(event.type == SceneManagerEventTypeCustom) {
-        const uint16_t custom_type = hex_viewer_custom_menu_event_get_type(event.event);
-        const int16_t button_index = hex_viewer_custom_menu_event_get_value(event.event);
-        if (custom_type == HexViewerCustomEventMenuSelected) {
-            switch(button_index) {
-                case ButtonIndexButton1:
-                    hex_viewer_play_happy_bump(app);
-                    hex_viewer_led_set_rgb(app, 255, 0, 0);
-                    break;
-                case ButtonIndexButton2:
-                    hex_viewer_play_happy_bump(app);
-                    hex_viewer_led_set_rgb(app, 0, 255, 0);
-                    break;
-                case ButtonIndexButton3:
-                    hex_viewer_play_happy_bump(app);
-                    hex_viewer_led_set_rgb(app, 0, 0, 255);
-                    break;
-                case ButtonIndexControl1:
-                    hex_viewer_play_bad_bump(app);
-                    hex_viewer_led_set_rgb(app, 255, 0, 255);
-                    break;
-                case ButtonIndexControl2:
-                    hex_viewer_play_bad_bump(app);
-                    hex_viewer_led_set_rgb(app, 255, 255, 0);
-                    break;
-                case ButtonIndexControl3:
-                    hex_viewer_play_bad_bump(app);
-                    hex_viewer_led_set_rgb(app, 0, 255, 255);
-                    break;
-            }
-            consumed = true;
-        }
-    }
-
-    return consumed;
-}
-
-void hex_viewer_scene_scene_3_on_exit(void* context) {
-    HexViewer* app = context;
-    button_menu_reset(app->button_menu);
-    notification_message(app->notification, &sequence_reset_red);
-    notification_message(app->notification, &sequence_reset_green);
-    notification_message(app->notification, &sequence_reset_blue);
-}
-

+ 6 - 39
scenes/hex_viewer_scene_scene_1.c → scenes/hex_viewer_scene_scroll.c

@@ -1,14 +1,13 @@
 #include "../hex_viewer.h"
 #include "../hex_viewer.h"
 #include "../helpers/hex_viewer_custom_event.h"
 #include "../helpers/hex_viewer_custom_event.h"
-#include "../views/hex_viewer_scene_1.h"
 
 
-void hex_viewer_scene_scene_1_callback(void* context) {
+void hex_viewer_scene_scroll_callback(void* context) {
     HexViewer* app = (HexViewer*)context;
     HexViewer* app = (HexViewer*)context;
     view_dispatcher_send_custom_event(
     view_dispatcher_send_custom_event(
         app->view_dispatcher, HexViewerCustomEventMenuPercentEntered);
         app->view_dispatcher, HexViewerCustomEventMenuPercentEntered);
 }
 }
 
 
-void hex_viewer_scene_scene_1_on_enter(void* context) {
+void hex_viewer_scene_scroll_on_enter(void* context) {
     furi_assert(context);
     furi_assert(context);
     HexViewer* app = context;
     HexViewer* app = context;
 
 
@@ -17,42 +16,22 @@ void hex_viewer_scene_scene_1_on_enter(void* context) {
     text_input_set_header_text(text_input, "Scroll to percent (0..100)");
     text_input_set_header_text(text_input, "Scroll to percent (0..100)");
     text_input_set_result_callback(
     text_input_set_result_callback(
         text_input,
         text_input,
-        hex_viewer_scene_scene_1_callback,
+        hex_viewer_scene_scroll_callback,
         app,
         app,
         app->percent_buf,
         app->percent_buf,
         HEX_VIEWER_PERCENT_INPUT,
         HEX_VIEWER_PERCENT_INPUT,
         false);
         false);
 
 
-    // ValidatorIsFile* validator_is_file = validator_is_file_alloc_init(
-    //     IBUTTON_APP_FOLDER, IBUTTON_APP_FILENAME_EXTENSION, ibutton->key_name);
-    // text_input_set_validator(text_input, validator_is_file_callback, validator_is_file);
-
-    view_dispatcher_switch_to_view(app->view_dispatcher, HexViewerSceneScene_1);
-
-    // if(success) {
-    //     //
-    // }
-
-    // if(success) {
-    //     // Load page to do something with result
-    //     //scene_manager_next_scene(app->scene_manager, HexViewerViewIdMenu);
-    //     //scene_manager_previous_scene(app->scene_manager); // temp for showcase
-    //     scene_manager_search_and_switch_to_previous_scene(
-    //         app->scene_manager, HexViewerViewIdStartscreen);
-    // } else {
-    //     // This is basically if someone quites the browser
-    //     scene_manager_previous_scene(app->scene_manager);
-    // }
+    view_dispatcher_switch_to_view(app->view_dispatcher, HexViewerSceneScroll);
 }
 }
 
 
-bool hex_viewer_scene_scene_1_on_event(void* context, SceneManagerEvent event) {
+bool hex_viewer_scene_scroll_on_event(void* context, SceneManagerEvent event) {
     HexViewer* app = (HexViewer*)context;
     HexViewer* app = (HexViewer*)context;
     bool consumed = false;
     bool consumed = false;
 
 
     if(event.type == SceneManagerEventTypeCustom) {
     if(event.type == SceneManagerEventTypeCustom) {
         if(event.event == HexViewerCustomEventMenuPercentEntered) {
         if(event.event == HexViewerCustomEventMenuPercentEntered) {
             int ipercent = atoi(app->percent_buf);
             int ipercent = atoi(app->percent_buf);
-            // float percent = atof(app->percent_buf);
             ipercent = MIN(ipercent, 100);
             ipercent = MIN(ipercent, 100);
             ipercent = MAX(ipercent, 0);
             ipercent = MAX(ipercent, 0);
             float percent = ipercent / 100.0;
             float percent = ipercent / 100.0;
@@ -62,18 +41,6 @@ bool hex_viewer_scene_scene_1_on_event(void* context, SceneManagerEvent event) {
             uint32_t scrollable_lines = line_count - HEX_VIEWER_LINES_ON_SCREEN;
             uint32_t scrollable_lines = line_count - HEX_VIEWER_LINES_ON_SCREEN;
             uint32_t target_line = (uint32_t)(percent * scrollable_lines);
             uint32_t target_line = (uint32_t)(percent * scrollable_lines);
 
 
-            // uint32_t first_line_on_screen = model->file_offset / HEX_VIEWER_BYTES_PER_LINE;
-            // if(line_count > HEX_VIEWER_LINES_ON_SCREEN) {
-            //     uint8_t width = canvas_width(canvas);
-            //     elements_scrollbar_pos(
-            //         canvas,
-            //         width,
-            //         0,
-            //         ROW_HEIGHT * HEX_VIEWER_LINES_ON_SCREEN,
-            //         first_line_on_screen, // TODO
-            //         line_count - (HEX_VIEWER_LINES_ON_SCREEN - 1));
-            // }
-
             uint32_t new_file_offset = target_line * HEX_VIEWER_BYTES_PER_LINE;
             uint32_t new_file_offset = target_line * HEX_VIEWER_BYTES_PER_LINE;
             if(app->model->file_size > new_file_offset) {
             if(app->model->file_size > new_file_offset) {
                 app->model->file_offset = new_file_offset;
                 app->model->file_offset = new_file_offset;
@@ -89,6 +56,6 @@ bool hex_viewer_scene_scene_1_on_event(void* context, SceneManagerEvent event) {
     return consumed;
     return consumed;
 }
 }
 
 
-void hex_viewer_scene_scene_1_on_exit(void* context) {
+void hex_viewer_scene_scroll_on_exit(void* context) {
     UNUSED(context);
     UNUSED(context);
 }
 }

+ 1 - 2
scenes/hex_viewer_scene_startscreen.c

@@ -27,7 +27,6 @@ bool hex_viewer_scene_startscreen_on_event(void* context, SceneManagerEvent even
             consumed = true;
             consumed = true;
             break;
             break;
         case HexViewerCustomEventStartscreenRight:
         case HexViewerCustomEventStartscreenRight:
-            // TODO Dialog
             consumed = true;
             consumed = true;
             break;
             break;
         case HexViewerCustomEventStartscreenUp:
         case HexViewerCustomEventStartscreenUp:
@@ -38,7 +37,7 @@ bool hex_viewer_scene_startscreen_on_event(void* context, SceneManagerEvent even
             break;
             break;
         case HexViewerCustomEventStartscreenOk:
         case HexViewerCustomEventStartscreenOk:
             if(!app->model->file_size)
             if(!app->model->file_size)
-                scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_4);
+                scene_manager_next_scene(app->scene_manager, HexViewerSceneOpen);
             else
             else
                 scene_manager_next_scene(app->scene_manager, HexViewerSceneMenu);
                 scene_manager_next_scene(app->scene_manager, HexViewerSceneMenu);
             consumed = true;
             consumed = true;

+ 0 - 136
views/hex_viewer_scene_1.c

@@ -1,136 +0,0 @@
-#include "../hex_viewer.h"
-#include <furi.h>
-#include <furi_hal.h>
-#include <input/input.h>
-#include <gui/elements.h>
-#include <dolphin/dolphin.h>
-
-struct HexViewerScene1 {
-    View* view;
-    HexViewerScene1Callback callback;
-    void* context;
-};
-
-
-typedef struct {
-    int some_value;
-} HexViewerScene1Model;
-
-void hex_viewer_scene_1_set_callback(
-    HexViewerScene1* instance,
-    HexViewerScene1Callback callback,
-    void* context) {
-    furi_assert(instance);
-    furi_assert(callback);
-    instance->callback = callback;
-    instance->context = context;
-}
-
-void hex_viewer_scene_1_draw(Canvas* canvas, HexViewerScene1Model* model) {
-    UNUSED(model);
-    canvas_clear(canvas);
-    canvas_set_color(canvas, ColorBlack);
-    canvas_set_font(canvas, FontPrimary);
-    canvas_draw_str_aligned(canvas, 0, 10, AlignLeft, AlignTop, "This is Scene 1"); 
-    canvas_set_font(canvas, FontSecondary);
-    canvas_draw_str_aligned(canvas, 0, 22, AlignLeft, AlignTop, "An empty scene to be"); 
-    canvas_draw_str_aligned(canvas, 0, 32, AlignLeft, AlignTop, "used as hex_viewer"); 
-}
-
-static void hex_viewer_scene_1_model_init(HexViewerScene1Model* const model) {
-    model->some_value = 1;
-}
-
-bool hex_viewer_scene_1_input(InputEvent* event, void* context) {
-    furi_assert(context); 
-    HexViewerScene1* instance = context;
-    if (event->type == InputTypeRelease) {
-        switch(event->key) {
-            case InputKeyBack:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene1Model * model,
-                    {
-                        UNUSED(model);
-                        instance->callback(HexViewerCustomEventScene1Back, instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyLeft:
-            case InputKeyRight:
-            case InputKeyUp:
-            case InputKeyDown:
-            case InputKeyOk:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene1Model* model,
-                    {
-                        UNUSED(model);
-                    },
-                    true);
-                break;
-            case InputKeyMAX:
-                break;
-        }
-    }
-    return true;
-}
-
-void hex_viewer_scene_1_exit(void* context) {
-    furi_assert(context);
-}
-
-void hex_viewer_scene_1_enter(void* context) {
-    furi_assert(context);
-    HexViewerScene1* instance = (HexViewerScene1*)context;
-    with_view_model(
-        instance->view,
-        HexViewerScene1Model * model,
-        {
-            hex_viewer_scene_1_model_init(model);
-        },
-        true
-    );
-}
-
-HexViewerScene1* hex_viewer_scene_1_alloc() {
-    HexViewerScene1* instance = malloc(sizeof(HexViewerScene1));
-    instance->view = view_alloc();
-    view_allocate_model(instance->view, ViewModelTypeLocking, sizeof(HexViewerScene1Model));
-    view_set_context(instance->view, instance); // furi_assert crashes in events without this
-    view_set_draw_callback(instance->view, (ViewDrawCallback)hex_viewer_scene_1_draw);
-    view_set_input_callback(instance->view, hex_viewer_scene_1_input);
-    view_set_enter_callback(instance->view, hex_viewer_scene_1_enter);
-    view_set_exit_callback(instance->view, hex_viewer_scene_1_exit);
-
-    with_view_model(
-        instance->view,
-        HexViewerScene1Model * model,
-        {
-            hex_viewer_scene_1_model_init(model);
-        },
-        true
-    );
-    
-    return instance;
-}
-
-void hex_viewer_scene_1_free(HexViewerScene1* instance) {
-    furi_assert(instance);
-
-    with_view_model(
-        instance->view,
-        HexViewerScene1Model * model,
-        {
-            UNUSED(model);
-        },
-        true);
-    view_free(instance->view);
-    free(instance);
-}
-
-View* hex_viewer_scene_1_get_view(HexViewerScene1* instance) {
-    furi_assert(instance);
-    return instance->view;
-}
-

+ 0 - 19
views/hex_viewer_scene_1.h

@@ -1,19 +0,0 @@
-#pragma once
-
-#include <gui/view.h>
-#include "../helpers/hex_viewer_custom_event.h"
-
-typedef struct HexViewerScene1 HexViewerScene1;
-
-typedef void (*HexViewerScene1Callback)(HexViewerCustomEvent event, void* context);
-
-void hex_viewer_scene_1_set_callback(
-    HexViewerScene1* hex_viewer_scene_1,
-    HexViewerScene1Callback callback,
-    void* context);
-
-View* hex_viewer_scene_1_get_view(HexViewerScene1* hex_viewer_static);
-
-HexViewerScene1* hex_viewer_scene_1_alloc();
-
-void hex_viewer_scene_1_free(HexViewerScene1* hex_viewer_static);

+ 0 - 254
views/hex_viewer_scene_2.c

@@ -1,254 +0,0 @@
-#include "../hex_viewer.h"
-#include <furi.h>
-#include <furi_hal.h>
-#include <input/input.h>
-#include <gui/elements.h>
-#include <dolphin/dolphin.h>
-#include "../helpers/hex_viewer_haptic.h"
-#include "../helpers/hex_viewer_speaker.h"
-#include "../helpers/hex_viewer_led.h"
-
-struct HexViewerScene2 {
-    View* view;
-    HexViewerScene2Callback callback;
-    void* context;
-};
-
-typedef struct {
-    int screen_text;
-} HexViewerScene2Model;
-
-char buttonText[11][14] = {
-    "",
-    "Press Up",
-    "Press Down",
-    "Press Left",
-    "Press Right",
-    "Press Ok",
-    "Release Up",
-    "Release Down",
-    "Release Left",
-    "Release Right",
-    "Release Ok",
-};
-
-void hex_viewer_scene_2_set_callback(
-    HexViewerScene2* instance,
-    HexViewerScene2Callback callback,
-    void* context) {
-    furi_assert(instance);
-    furi_assert(callback);
-    instance->callback = callback;
-    instance->context = context;
-}
-
-void hex_viewer_scene_2_draw(Canvas* canvas, HexViewerScene2Model* model) {
-    canvas_clear(canvas);
-    canvas_set_color(canvas, ColorBlack);
-    canvas_set_font(canvas, FontPrimary);
-    canvas_draw_str_aligned(canvas, 0, 10, AlignLeft, AlignTop, "Scene 2: Input Examples"); 
-    canvas_set_font(canvas, FontSecondary);
-    char *strInput = malloc(15);
-    strcpy(strInput, buttonText[model->screen_text]);
-    canvas_draw_str_aligned(canvas, 0, 22, AlignLeft, AlignTop, strInput); 
-    free(strInput);
-}
-
-static void hex_viewer_scene_2_model_init(HexViewerScene2Model* const model) {
-    model->screen_text = 0;
-}
-
-bool hex_viewer_scene_2_input(InputEvent* event, void* context) {
-    furi_assert(context);
-    HexViewerScene2* instance = context;
-    if (event->type == InputTypeRelease) {
-        switch(event->key) {
-            case InputKeyBack:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        UNUSED(model);
-                        hex_viewer_stop_all_sound(instance->context);
-                        instance->callback(HexViewerCustomEventScene2Back, instance->context);
-                        hex_viewer_play_long_bump(instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyUp:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 6;
-                        hex_viewer_play_bad_bump(instance->context);
-                        hex_viewer_stop_all_sound(instance->context);
-                        hex_viewer_led_set_rgb(instance->context, 255, 0, 255);
-                    },
-                    true);
-                break;
-            case InputKeyDown:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 7;
-                        hex_viewer_play_bad_bump(instance->context);
-                        hex_viewer_stop_all_sound(instance->context);
-                        hex_viewer_led_set_rgb(instance->context, 255, 255, 0);
-                    },
-                    true);
-                break;
-            case InputKeyLeft:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 8;
-                        hex_viewer_play_bad_bump(instance->context);
-                        hex_viewer_stop_all_sound(instance->context);
-                        hex_viewer_led_set_rgb(instance->context, 0, 255, 255);
-                    },
-                    true);
-                break;
-            case InputKeyRight:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 9;
-                        hex_viewer_play_bad_bump(instance->context);
-                        hex_viewer_stop_all_sound(instance->context);
-                        hex_viewer_led_set_rgb(instance->context, 255, 0, 0);
-                    },
-                    true);
-                break;
-            case InputKeyOk:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 10;
-                        hex_viewer_play_bad_bump(instance->context);
-                        hex_viewer_stop_all_sound(instance->context);
-                        hex_viewer_led_set_rgb(instance->context, 255, 255, 255);
-                    },
-                    true);
-                break;
-            case InputKeyMAX:
-                break;
-        }
-    } else if (event->type == InputTypePress) {
-         switch(event->key) {
-            case InputKeyUp:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 1;
-                        hex_viewer_play_happy_bump(instance->context);
-                        hex_viewer_play_input_sound(instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyDown:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 2;
-                        hex_viewer_play_happy_bump(instance->context);
-                        hex_viewer_play_input_sound(instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyLeft:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 3;
-                        hex_viewer_play_happy_bump(instance->context);
-                        hex_viewer_play_input_sound(instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyRight:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 4;
-                        hex_viewer_play_happy_bump(instance->context);
-                        hex_viewer_play_input_sound(instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyOk:
-                with_view_model(
-                    instance->view,
-                    HexViewerScene2Model * model,
-                    {
-                        model->screen_text = 5;
-                        hex_viewer_play_happy_bump(instance->context);
-                        hex_viewer_play_input_sound(instance->context);
-                    },
-                    true);
-                break;
-            case InputKeyBack:
-            case InputKeyMAX:
-                break;
-        }
-    }
-    
-    return true;
-}
-
-void hex_viewer_scene_2_exit(void* context) {
-    furi_assert(context);
-    HexViewer* app = context;
-    hex_viewer_stop_all_sound(app);
-    //hex_viewer_led_reset(app);
-}
-
-void hex_viewer_scene_2_enter(void* context) {
-    furi_assert(context);
-    dolphin_deed(DolphinDeedPluginStart);
-}
-
-HexViewerScene2* hex_viewer_scene_2_alloc() {
-    HexViewerScene2* instance = malloc(sizeof(HexViewerScene2));
-    instance->view = view_alloc();
-    view_allocate_model(instance->view, ViewModelTypeLocking, sizeof(HexViewerScene2Model));
-    view_set_context(instance->view, instance);
-    view_set_draw_callback(instance->view, (ViewDrawCallback)hex_viewer_scene_2_draw);
-    view_set_input_callback(instance->view, hex_viewer_scene_2_input);
-    //view_set_enter_callback(instance->view, hex_viewer_scene_2_enter);
-    view_set_exit_callback(instance->view, hex_viewer_scene_2_exit);
-
-    with_view_model(
-        instance->view,
-        HexViewerScene2Model * model,
-        {
-            hex_viewer_scene_2_model_init(model);
-        },
-        true);
-    
-    return instance;
-}
-
-void hex_viewer_scene_2_free(HexViewerScene2* instance) {
-    furi_assert(instance);
-
-
-    view_free(instance->view);
-    free(instance);
-}
-
-View* hex_viewer_scene_2_get_view(HexViewerScene2* instance) {
-    furi_assert(instance);
-
-
-    return instance->view;
-}
-

+ 0 - 19
views/hex_viewer_scene_2.h

@@ -1,19 +0,0 @@
-#pragma once
-
-#include <gui/view.h>
-#include "../helpers/hex_viewer_custom_event.h"
-
-typedef struct HexViewerScene2 HexViewerScene2;
-
-typedef void (*HexViewerScene2Callback)(HexViewerCustomEvent event, void* context);
-
-void hex_viewer_scene_2_set_callback(
-    HexViewerScene2* instance,
-    HexViewerScene2Callback callback,
-    void * context);
-
-HexViewerScene2* hex_viewer_scene_2_alloc();
-
-void hex_viewer_scene_2_free(HexViewerScene2* hex_viewer_static);
-
-View* hex_viewer_scene_2_get_view(HexViewerScene2* boilerpate_static);

+ 1 - 8
views/hex_viewer_startscreen.c

@@ -147,14 +147,7 @@ bool hex_viewer_startscreen_input(InputEvent* event, void* context) {
             break;
             break;
         case InputKeyRight:
         case InputKeyRight:
             with_view_model(
             with_view_model(
-                instance->view,
-                HexViewerStartscreenModel * model,
-                {
-                    // instance->callback(HexViewerCustomEventStartscreenRight, instance->context);
-                    // update_local_model_from_app(instance->context, model);
-                    model->dbg = 0;
-                },
-                true);
+                instance->view, HexViewerStartscreenModel * model, { model->dbg = 0; }, true);
             break;
             break;
         case InputKeyUp:
         case InputKeyUp:
             with_view_model(
             with_view_model(