Przeglądaj źródła

Hex Viewer: Open file from argument, fix mem leaks

Willy-JL 1 rok temu
rodzic
commit
7630b45810
2 zmienionych plików z 14 dodań i 7 usunięć
  1. 1 0
      hex_viewer/.gitsubtree
  2. 13 7
      hex_viewer/hex_viewer.c

+ 1 - 0
hex_viewer/.gitsubtree

@@ -1 +1,2 @@
 https://github.com/xMasterX/all-the-plugins dev base_pack/hex_viewer
+https://github.com/QtRoS/flipper-zero-hex-viewer master /

+ 13 - 7
hex_viewer/hex_viewer.c

@@ -45,9 +45,6 @@ HexViewer* hex_viewer_app_alloc() {
     view_dispatcher_set_custom_event_callback(
         app->view_dispatcher, hex_viewer_custom_event_callback);
 
-    app->submenu = submenu_alloc();
-    app->text_input = text_input_alloc();
-
     // Set defaults, in case no config loaded
     app->haptic = 1;
     app->speaker = 1;
@@ -61,6 +58,7 @@ HexViewer* hex_viewer_app_alloc() {
     // Load configs
     hex_viewer_read_settings(app);
 
+    app->submenu = submenu_alloc();
     view_dispatcher_add_view(
         app->view_dispatcher, HexViewerViewIdMenu, submenu_get_view(app->submenu));
 
@@ -70,6 +68,7 @@ HexViewer* hex_viewer_app_alloc() {
         HexViewerViewIdStartscreen,
         hex_viewer_startscreen_get_view(app->hex_viewer_startscreen));
 
+    app->text_input = text_input_alloc();
     view_dispatcher_add_view(
         app->view_dispatcher, HexViewerViewIdScroll, text_input_get_view(app->text_input));
 
@@ -97,12 +96,13 @@ void hex_viewer_app_free(HexViewer* app) {
 
     // View Dispatcher
     view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdMenu);
+    submenu_free(app->submenu);
     view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdStartscreen);
+    hex_viewer_startscreen_free(app->hex_viewer_startscreen);
     view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdScroll);
-    view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdSettings);
-
-    submenu_free(app->submenu);
     text_input_free(app->text_input);
+    view_dispatcher_remove_view(app->view_dispatcher, HexViewerViewIdSettings);
+    variable_item_list_free(app->variable_item_list);
 
     view_dispatcher_free(app->view_dispatcher);
     furi_record_close(RECORD_STORAGE);
@@ -128,7 +128,13 @@ int32_t hex_viewer_app(void* p) {
 
     view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
 
-    scene_manager_next_scene(app->scene_manager, HexViewerSceneStartscreen);
+    if(p && strlen(p) && hex_viewer_open_file(app, (const char*)p)) {
+        hex_viewer_read_file(app);
+        scene_manager_next_scene(app->scene_manager, HexViewerSceneStartscreen);
+    } else {
+        scene_manager_next_scene(app->scene_manager, HexViewerSceneStartscreen);
+        scene_manager_next_scene(app->scene_manager, HexViewerSceneOpen);
+    }
 
     furi_hal_power_suppress_charge_enter();