Skip to content

Commit

Permalink
fix: Few minor improvements. Lost events - to go
Browse files Browse the repository at this point in the history
  • Loading branch information
QtRoS committed Sep 30, 2023
1 parent c827137 commit b6c3ee6
Show file tree
Hide file tree
Showing 6 changed files with 165 additions and 174 deletions.
2 changes: 2 additions & 0 deletions helpers/hex_viewer_storage.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,11 @@ bool hex_viewer_open_file(void* context, const char* file_path) {
furi_assert(hex_viewer);
furi_assert(file_path);

// TODO Separate function?
if(hex_viewer->model->stream) {
buffered_file_stream_close(hex_viewer->model->stream);
stream_free(hex_viewer->model->stream); // TODO Check
hex_viewer->model->file_offset = 0;
}

hex_viewer->model->stream = buffered_file_stream_alloc(hex_viewer->storage);
Expand Down
8 changes: 2 additions & 6 deletions hex_viewer.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
#define HEX_VIEWER_LINES_ON_SCREEN 4u
#define HEX_VIEWER_BUF_SIZE (HEX_VIEWER_LINES_ON_SCREEN * HEX_VIEWER_BYTES_PER_LINE)


// typedef struct HexViewerModel HexViewerModel;
// typedef struct HexViewer HexViewer;

Expand All @@ -47,12 +46,10 @@ typedef struct {
uint32_t file_offset;
uint32_t file_read_bytes;
uint32_t file_size;
bool mode; // Print address or content


Stream* stream;
} HexViewerModel;


// TODO Clean
typedef struct {
HexViewerModel* model;
Expand All @@ -70,14 +67,13 @@ typedef struct {
HexViewerScene2* hex_viewer_scene_2;
DialogsApp* dialogs; // File Browser
FuriString* file_path; // File Browser
uint32_t haptic;
uint32_t haptic;
uint32_t speaker;
uint32_t led;
uint32_t save_settings;
ButtonMenu* button_menu; // Button Menu
} HexViewer;


typedef enum {
HexViewerViewIdStartscreen,
HexViewerViewIdMenu,
Expand Down
40 changes: 22 additions & 18 deletions scenes/hex_viewer_scene_menu.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,17 @@ void hex_viewer_scene_menu_submenu_callback(void* context, uint32_t index) {
void hex_viewer_scene_menu_on_enter(void* context) {
HexViewer* app = context;

submenu_add_item(app->submenu, "Open ...", SubmenuIndexScene4, hex_viewer_scene_menu_submenu_callback, app);
submenu_set_header(app->submenu, "Select action");
submenu_add_item(
app->submenu, "Open ...", SubmenuIndexScene4, hex_viewer_scene_menu_submenu_callback, 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(app->submenu, "Go to ...", SubmenuIndexScene1, hex_viewer_scene_menu_submenu_callback, app);
submenu_add_item(
app->submenu, "Go to ...", SubmenuIndexScene1, hex_viewer_scene_menu_submenu_callback, app);
// submenu_add_item(app->submenu, "Settings", SubmenuIndexSettings, hex_viewer_scene_menu_submenu_callback, app);

submenu_set_selected_item(app->submenu, scene_manager_get_scene_state(app->scene_manager, HexViewerSceneMenu));
submenu_set_selected_item(
app->submenu, scene_manager_get_scene_state(app->scene_manager, HexViewerSceneMenu));

view_dispatcher_switch_to_view(app->view_dispatcher, HexViewerViewIdMenu);
}
Expand All @@ -44,24 +48,24 @@ bool hex_viewer_scene_menu_on_event(void* context, SceneManagerEvent event) {
app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene1);
scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_1);
return true;
// } else if (event.event == SubmenuIndexScene2) {
// scene_manager_set_scene_state(
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene2);
// scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_2);
// 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 == SubmenuIndexScene2) {
// scene_manager_set_scene_state(
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene2);
// scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_2);
// 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) {
scene_manager_set_scene_state(
app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene4);
scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_4);
// } else if (event.event == SubmenuIndexSettings) {
// scene_manager_set_scene_state(
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexSettings);
// scene_manager_next_scene(app->scene_manager, HexViewerSceneSettings);
// return true;
// } else if (event.event == SubmenuIndexSettings) {
// scene_manager_set_scene_state(
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexSettings);
// scene_manager_next_scene(app->scene_manager, HexViewerSceneSettings);
// return true;
}
}
return false;
Expand Down
17 changes: 8 additions & 9 deletions scenes/hex_viewer_scene_scene_4.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include "../hex_viewer.h"


void hex_viewer_scene_scene_4_on_enter(void* context) {
furi_assert(context);
HexViewer* app = context;
Expand All @@ -21,23 +20,24 @@ void hex_viewer_scene_scene_4_on_enter(void* context) {
furi_string_set(initial_path, HEX_VIEWER_APP_PATH_FOLDER);

DialogsFileBrowserOptions browser_options;
dialog_file_browser_set_basic_options(
&browser_options, HEX_VIEWER_APP_EXTENSION, &I_hex_10px);
dialog_file_browser_set_basic_options(&browser_options, HEX_VIEWER_APP_EXTENSION, &I_hex_10px);
browser_options.hide_ext = false;

bool success = dialog_file_browser_show(app->dialogs, app->file_path, initial_path, &browser_options);
bool success =
dialog_file_browser_show(app->dialogs, app->file_path, initial_path, &browser_options);
furi_string_free(initial_path);

if (success) {
if(success) {
success = hex_viewer_open_file(app, furi_string_get_cstr(app->file_path));
if(success)
hex_viewer_read_file(app);
if(success) hex_viewer_read_file(app);
}

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_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);
Expand All @@ -55,4 +55,3 @@ bool hex_viewer_scene_scene_4_on_event(void* context, SceneManagerEvent event) {
void hex_viewer_scene_scene_4_on_exit(void* context) {
UNUSED(context);
}

98 changes: 49 additions & 49 deletions scenes/hex_viewer_scene_startscreen.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,67 +11,67 @@ void hex_viewer_scene_startscreen_callback(HexViewerCustomEvent event, void* con
void hex_viewer_scene_startscreen_on_enter(void* context) {
furi_assert(context);
HexViewer* app = context;
hex_viewer_startscreen_set_callback(app->hex_viewer_startscreen, hex_viewer_scene_startscreen_callback, app);
hex_viewer_startscreen_set_callback(
app->hex_viewer_startscreen, hex_viewer_scene_startscreen_callback, app);
view_dispatcher_switch_to_view(app->view_dispatcher, HexViewerViewIdStartscreen);
}

bool hex_viewer_scene_startscreen_on_event(void* context, SceneManagerEvent event) {
HexViewer* app = context;
bool consumed = false;

uint32_t last_byte_on_screen;

if(event.type == SceneManagerEventTypeCustom) {
switch(event.event) {
case HexViewerCustomEventStartscreenLeft:
app->model->mode = !app->model->mode;
consumed = true;
break;
case HexViewerCustomEventStartscreenRight:
// TODO Dialog
consumed = true;
break;
case HexViewerCustomEventStartscreenUp:
//furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
if(app->model->file_offset > 0) {
app->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE;
if(!hex_viewer_read_file(app)) break;
}
consumed = true;
//furi_mutex_release(hex_viewer->mutex);
break;
case HexViewerCustomEventStartscreenDown:
{
//furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
uint32_t last_byte_on_screen =
app->model->file_offset + app->model->file_read_bytes;
case HexViewerCustomEventStartscreenLeft:
//app->model->mode = !app->model->mode;
consumed = true;
break;
case HexViewerCustomEventStartscreenRight:
// TODO Dialog
consumed = true;
break;
case HexViewerCustomEventStartscreenUp:
//furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
if(app->model->file_offset > 0) {
app->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE;
if(!hex_viewer_read_file(app)) break; // TODO Do smth
}
consumed = true;
//furi_mutex_release(hex_viewer->mutex);
break;
case HexViewerCustomEventStartscreenDown:
//furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
last_byte_on_screen = app->model->file_offset + app->model->file_read_bytes;

if(app->model->file_size > last_byte_on_screen) {
app->model->file_offset += HEX_VIEWER_BYTES_PER_LINE;
if(!hex_viewer_read_file(app)) break; // TODO Do smth
}
consumed = true;
//furi_mutex_release(hex_viewer->mutex);
break;
if(app->model->file_size > last_byte_on_screen) {
app->model->file_offset += HEX_VIEWER_BYTES_PER_LINE;
if(!hex_viewer_read_file(app)) break; // TODO Do smth
}
case HexViewerCustomEventStartscreenOk:
if (!app->model->file_size) // TODO
scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_4);
else scene_manager_next_scene(app->scene_manager, HexViewerSceneMenu);
consumed = true;
break;
case HexViewerCustomEventStartscreenBack: // TODO DElete
notification_message(app->notification, &sequence_reset_red);
notification_message(app->notification, &sequence_reset_green);
notification_message(app->notification, &sequence_reset_blue);
if(!scene_manager_search_and_switch_to_previous_scene(
app->scene_manager, HexViewerSceneStartscreen)) {
scene_manager_stop(app->scene_manager);
view_dispatcher_stop(app->view_dispatcher);
}
consumed = true;
break;
consumed = true;
//furi_mutex_release(hex_viewer->mutex);
break;
case HexViewerCustomEventStartscreenOk:
if(!app->model->file_size) // TODO
scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_4);
else
scene_manager_next_scene(app->scene_manager, HexViewerSceneMenu);
consumed = true;
break;
case HexViewerCustomEventStartscreenBack: // TODO Delete
notification_message(app->notification, &sequence_reset_red);
notification_message(app->notification, &sequence_reset_green);
notification_message(app->notification, &sequence_reset_blue);
if(!scene_manager_search_and_switch_to_previous_scene(
app->scene_manager, HexViewerSceneStartscreen)) {
scene_manager_stop(app->scene_manager);
view_dispatcher_stop(app->view_dispatcher);
}
consumed = true;
break;
}
}

return consumed;
}

Expand Down
Loading

0 comments on commit b6c3ee6

Please sign in to comment.