Skip to content

Commit b6c3ee6

Browse files
committed
fix: Few minor improvements. Lost events - to go
1 parent c827137 commit b6c3ee6

6 files changed

+165
-174
lines changed

helpers/hex_viewer_storage.c

+2
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,11 @@ bool hex_viewer_open_file(void* context, const char* file_path) {
120120
furi_assert(hex_viewer);
121121
furi_assert(file_path);
122122

123+
// TODO Separate function?
123124
if(hex_viewer->model->stream) {
124125
buffered_file_stream_close(hex_viewer->model->stream);
125126
stream_free(hex_viewer->model->stream); // TODO Check
127+
hex_viewer->model->file_offset = 0;
126128
}
127129

128130
hex_viewer->model->stream = buffered_file_stream_alloc(hex_viewer->storage);

hex_viewer.h

+2-6
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
#define HEX_VIEWER_LINES_ON_SCREEN 4u
3939
#define HEX_VIEWER_BUF_SIZE (HEX_VIEWER_LINES_ON_SCREEN * HEX_VIEWER_BYTES_PER_LINE)
4040

41-
4241
// typedef struct HexViewerModel HexViewerModel;
4342
// typedef struct HexViewer HexViewer;
4443

@@ -47,12 +46,10 @@ typedef struct {
4746
uint32_t file_offset;
4847
uint32_t file_read_bytes;
4948
uint32_t file_size;
50-
bool mode; // Print address or content
51-
49+
5250
Stream* stream;
5351
} HexViewerModel;
5452

55-
5653
// TODO Clean
5754
typedef struct {
5855
HexViewerModel* model;
@@ -70,14 +67,13 @@ typedef struct {
7067
HexViewerScene2* hex_viewer_scene_2;
7168
DialogsApp* dialogs; // File Browser
7269
FuriString* file_path; // File Browser
73-
uint32_t haptic;
70+
uint32_t haptic;
7471
uint32_t speaker;
7572
uint32_t led;
7673
uint32_t save_settings;
7774
ButtonMenu* button_menu; // Button Menu
7875
} HexViewer;
7976

80-
8177
typedef enum {
8278
HexViewerViewIdStartscreen,
8379
HexViewerViewIdMenu,

scenes/hex_viewer_scene_menu.c

+22-18
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@ void hex_viewer_scene_menu_submenu_callback(void* context, uint32_t index) {
1717
void hex_viewer_scene_menu_on_enter(void* context) {
1818
HexViewer* app = context;
1919

20-
submenu_add_item(app->submenu, "Open ...", SubmenuIndexScene4, hex_viewer_scene_menu_submenu_callback, app);
20+
submenu_set_header(app->submenu, "Select action");
21+
submenu_add_item(
22+
app->submenu, "Open ...", SubmenuIndexScene4, hex_viewer_scene_menu_submenu_callback, app);
2123
// submenu_add_item(app->submenu, "Scene 2 (Inputs/Effects)", SubmenuIndexScene2, hex_viewer_scene_menu_submenu_callback, app);
2224
// submenu_add_item(app->submenu, "Scene 3 (Buttonmenu)", SubmenuIndexScene3, hex_viewer_scene_menu_submenu_callback, app);
23-
submenu_add_item(app->submenu, "Go to ...", SubmenuIndexScene1, hex_viewer_scene_menu_submenu_callback, app);
25+
submenu_add_item(
26+
app->submenu, "Go to ...", SubmenuIndexScene1, hex_viewer_scene_menu_submenu_callback, app);
2427
// submenu_add_item(app->submenu, "Settings", SubmenuIndexSettings, hex_viewer_scene_menu_submenu_callback, app);
2528

26-
submenu_set_selected_item(app->submenu, scene_manager_get_scene_state(app->scene_manager, HexViewerSceneMenu));
29+
submenu_set_selected_item(
30+
app->submenu, scene_manager_get_scene_state(app->scene_manager, HexViewerSceneMenu));
2731

2832
view_dispatcher_switch_to_view(app->view_dispatcher, HexViewerViewIdMenu);
2933
}
@@ -44,24 +48,24 @@ bool hex_viewer_scene_menu_on_event(void* context, SceneManagerEvent event) {
4448
app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene1);
4549
scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_1);
4650
return true;
47-
// } else if (event.event == SubmenuIndexScene2) {
48-
// scene_manager_set_scene_state(
49-
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene2);
50-
// scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_2);
51-
// return true;
52-
// } else if (event.event == SubmenuIndexScene3) {
53-
// scene_manager_set_scene_state(
54-
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene3);
55-
// scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_3);
56-
} else if (event.event == SubmenuIndexScene4) {
51+
// } else if (event.event == SubmenuIndexScene2) {
52+
// scene_manager_set_scene_state(
53+
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene2);
54+
// scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_2);
55+
// return true;
56+
// } else if (event.event == SubmenuIndexScene3) {
57+
// scene_manager_set_scene_state(
58+
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene3);
59+
// scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_3);
60+
} else if(event.event == SubmenuIndexScene4) {
5761
scene_manager_set_scene_state(
5862
app->scene_manager, HexViewerSceneMenu, SubmenuIndexScene4);
5963
scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_4);
60-
// } else if (event.event == SubmenuIndexSettings) {
61-
// scene_manager_set_scene_state(
62-
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexSettings);
63-
// scene_manager_next_scene(app->scene_manager, HexViewerSceneSettings);
64-
// return true;
64+
// } else if (event.event == SubmenuIndexSettings) {
65+
// scene_manager_set_scene_state(
66+
// app->scene_manager, HexViewerSceneMenu, SubmenuIndexSettings);
67+
// scene_manager_next_scene(app->scene_manager, HexViewerSceneSettings);
68+
// return true;
6569
}
6670
}
6771
return false;

scenes/hex_viewer_scene_scene_4.c

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#include "../hex_viewer.h"
22

3-
43
void hex_viewer_scene_scene_4_on_enter(void* context) {
54
furi_assert(context);
65
HexViewer* app = context;
@@ -21,23 +20,24 @@ void hex_viewer_scene_scene_4_on_enter(void* context) {
2120
furi_string_set(initial_path, HEX_VIEWER_APP_PATH_FOLDER);
2221

2322
DialogsFileBrowserOptions browser_options;
24-
dialog_file_browser_set_basic_options(
25-
&browser_options, HEX_VIEWER_APP_EXTENSION, &I_hex_10px);
23+
dialog_file_browser_set_basic_options(&browser_options, HEX_VIEWER_APP_EXTENSION, &I_hex_10px);
2624
browser_options.hide_ext = false;
2725

28-
bool success = dialog_file_browser_show(app->dialogs, app->file_path, initial_path, &browser_options);
26+
bool success =
27+
dialog_file_browser_show(app->dialogs, app->file_path, initial_path, &browser_options);
2928
furi_string_free(initial_path);
3029

31-
if (success) {
30+
if(success) {
3231
success = hex_viewer_open_file(app, furi_string_get_cstr(app->file_path));
33-
if(success)
34-
hex_viewer_read_file(app);
32+
if(success) hex_viewer_read_file(app);
3533
}
3634

3735
if(success) {
3836
// Load page to do something with result
3937
//scene_manager_next_scene(app->scene_manager, HexViewerViewIdMenu);
40-
scene_manager_previous_scene(app->scene_manager); // temp for showcase
38+
//scene_manager_previous_scene(app->scene_manager); // temp for showcase
39+
scene_manager_search_and_switch_to_previous_scene(
40+
app->scene_manager, HexViewerViewIdStartscreen);
4141
} else {
4242
// This is basically if someone quites the browser
4343
scene_manager_previous_scene(app->scene_manager);
@@ -55,4 +55,3 @@ bool hex_viewer_scene_scene_4_on_event(void* context, SceneManagerEvent event) {
5555
void hex_viewer_scene_scene_4_on_exit(void* context) {
5656
UNUSED(context);
5757
}
58-

scenes/hex_viewer_scene_startscreen.c

+49-49
Original file line numberDiff line numberDiff line change
@@ -11,67 +11,67 @@ void hex_viewer_scene_startscreen_callback(HexViewerCustomEvent event, void* con
1111
void hex_viewer_scene_startscreen_on_enter(void* context) {
1212
furi_assert(context);
1313
HexViewer* app = context;
14-
hex_viewer_startscreen_set_callback(app->hex_viewer_startscreen, hex_viewer_scene_startscreen_callback, app);
14+
hex_viewer_startscreen_set_callback(
15+
app->hex_viewer_startscreen, hex_viewer_scene_startscreen_callback, app);
1516
view_dispatcher_switch_to_view(app->view_dispatcher, HexViewerViewIdStartscreen);
1617
}
1718

1819
bool hex_viewer_scene_startscreen_on_event(void* context, SceneManagerEvent event) {
1920
HexViewer* app = context;
2021
bool consumed = false;
21-
22+
uint32_t last_byte_on_screen;
23+
2224
if(event.type == SceneManagerEventTypeCustom) {
2325
switch(event.event) {
24-
case HexViewerCustomEventStartscreenLeft:
25-
app->model->mode = !app->model->mode;
26-
consumed = true;
27-
break;
28-
case HexViewerCustomEventStartscreenRight:
29-
// TODO Dialog
30-
consumed = true;
31-
break;
32-
case HexViewerCustomEventStartscreenUp:
33-
//furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
34-
if(app->model->file_offset > 0) {
35-
app->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE;
36-
if(!hex_viewer_read_file(app)) break;
37-
}
38-
consumed = true;
39-
//furi_mutex_release(hex_viewer->mutex);
40-
break;
41-
case HexViewerCustomEventStartscreenDown:
42-
{
43-
//furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
44-
uint32_t last_byte_on_screen =
45-
app->model->file_offset + app->model->file_read_bytes;
26+
case HexViewerCustomEventStartscreenLeft:
27+
//app->model->mode = !app->model->mode;
28+
consumed = true;
29+
break;
30+
case HexViewerCustomEventStartscreenRight:
31+
// TODO Dialog
32+
consumed = true;
33+
break;
34+
case HexViewerCustomEventStartscreenUp:
35+
//furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
36+
if(app->model->file_offset > 0) {
37+
app->model->file_offset -= HEX_VIEWER_BYTES_PER_LINE;
38+
if(!hex_viewer_read_file(app)) break; // TODO Do smth
39+
}
40+
consumed = true;
41+
//furi_mutex_release(hex_viewer->mutex);
42+
break;
43+
case HexViewerCustomEventStartscreenDown:
44+
//furi_check(furi_mutex_acquire(hex_viewer->mutex, FuriWaitForever) == FuriStatusOk);
45+
last_byte_on_screen = app->model->file_offset + app->model->file_read_bytes;
4646

47-
if(app->model->file_size > last_byte_on_screen) {
48-
app->model->file_offset += HEX_VIEWER_BYTES_PER_LINE;
49-
if(!hex_viewer_read_file(app)) break; // TODO Do smth
50-
}
51-
consumed = true;
52-
//furi_mutex_release(hex_viewer->mutex);
53-
break;
47+
if(app->model->file_size > last_byte_on_screen) {
48+
app->model->file_offset += HEX_VIEWER_BYTES_PER_LINE;
49+
if(!hex_viewer_read_file(app)) break; // TODO Do smth
5450
}
55-
case HexViewerCustomEventStartscreenOk:
56-
if (!app->model->file_size) // TODO
57-
scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_4);
58-
else scene_manager_next_scene(app->scene_manager, HexViewerSceneMenu);
59-
consumed = true;
60-
break;
61-
case HexViewerCustomEventStartscreenBack: // TODO DElete
62-
notification_message(app->notification, &sequence_reset_red);
63-
notification_message(app->notification, &sequence_reset_green);
64-
notification_message(app->notification, &sequence_reset_blue);
65-
if(!scene_manager_search_and_switch_to_previous_scene(
66-
app->scene_manager, HexViewerSceneStartscreen)) {
67-
scene_manager_stop(app->scene_manager);
68-
view_dispatcher_stop(app->view_dispatcher);
69-
}
70-
consumed = true;
71-
break;
51+
consumed = true;
52+
//furi_mutex_release(hex_viewer->mutex);
53+
break;
54+
case HexViewerCustomEventStartscreenOk:
55+
if(!app->model->file_size) // TODO
56+
scene_manager_next_scene(app->scene_manager, HexViewerSceneScene_4);
57+
else
58+
scene_manager_next_scene(app->scene_manager, HexViewerSceneMenu);
59+
consumed = true;
60+
break;
61+
case HexViewerCustomEventStartscreenBack: // TODO Delete
62+
notification_message(app->notification, &sequence_reset_red);
63+
notification_message(app->notification, &sequence_reset_green);
64+
notification_message(app->notification, &sequence_reset_blue);
65+
if(!scene_manager_search_and_switch_to_previous_scene(
66+
app->scene_manager, HexViewerSceneStartscreen)) {
67+
scene_manager_stop(app->scene_manager);
68+
view_dispatcher_stop(app->view_dispatcher);
69+
}
70+
consumed = true;
71+
break;
7272
}
7373
}
74-
74+
7575
return consumed;
7676
}
7777

0 commit comments

Comments
 (0)