Skip to content

Commit 42ce380

Browse files
committed
Moving settings
1 parent d852cc8 commit 42ce380

File tree

9 files changed

+403
-404
lines changed

9 files changed

+403
-404
lines changed

lib/led/nfc_playlist_led.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const NotificationSequence blink_sequence_error = {
2626
};
2727

2828
void start_blink(NfcPlaylist* nfc_playlist, int state) {
29-
if (nfc_playlist->emulate_led_indicator) {
29+
if (nfc_playlist->settings.emulate_led_indicator) {
3030
if (state == NfcPlaylistLedState_Normal) {
3131
notification_message_block(nfc_playlist->notification, &blink_sequence_normal);
3232
} else if (state == NfcPlaylistLedState_Error) {
@@ -36,7 +36,7 @@ void start_blink(NfcPlaylist* nfc_playlist, int state) {
3636
}
3737

3838
void stop_blink(NfcPlaylist* nfc_playlist) {
39-
if (nfc_playlist->emulate_led_indicator) {
39+
if (nfc_playlist->settings.emulate_led_indicator) {
4040
notification_message_block(nfc_playlist->notification, &sequence_blink_stop);
4141
}
4242
}

nfc_playlist.c

Lines changed: 78 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -2,102 +2,105 @@
22
#include "nfc_playlist_i.h"
33

44
static void (*const nfc_playlist_scene_on_enter_handlers[])(void*) = {
5-
nfc_playlist_main_menu_scene_on_enter,
6-
nfc_playlist_settings_scene_on_enter,
7-
nfc_playlist_emulation_scene_on_enter,
8-
nfc_playlist_file_select_scene_on_enter,
9-
nfc_playlist_file_edit_scene_on_enter,
10-
nfc_playlist_text_input_scene_on_enter
5+
nfc_playlist_main_menu_scene_on_enter,
6+
nfc_playlist_settings_scene_on_enter,
7+
nfc_playlist_emulation_scene_on_enter,
8+
nfc_playlist_file_select_scene_on_enter,
9+
nfc_playlist_file_edit_scene_on_enter,
10+
nfc_playlist_text_input_scene_on_enter
1111
};
1212

1313
static bool (*const nfc_playlist_scene_on_event_handlers[])(void*, SceneManagerEvent) = {
14-
nfc_playlist_main_menu_scene_on_event,
15-
nfc_playlist_settings_scene_on_event,
16-
nfc_playlist_emulation_scene_on_event,
17-
nfc_playlist_file_select_scene_on_event,
18-
nfc_playlist_file_edit_scene_on_event,
19-
nfc_playlist_text_input_scene_on_event
14+
nfc_playlist_main_menu_scene_on_event,
15+
nfc_playlist_settings_scene_on_event,
16+
nfc_playlist_emulation_scene_on_event,
17+
nfc_playlist_file_select_scene_on_event,
18+
nfc_playlist_file_edit_scene_on_event,
19+
nfc_playlist_text_input_scene_on_event
2020
};
2121

2222
static void (*const nfc_playlist_scene_on_exit_handlers[])(void*) = {
23-
nfc_playlist_main_menu_scene_on_exit,
24-
nfc_playlist_settings_scene_on_exit,
25-
nfc_playlist_emulation_scene_on_exit,
26-
nfc_playlist_file_select_scene_on_exit,
27-
nfc_playlist_file_edit_scene_on_exit,
28-
nfc_playlist_text_input_scene_on_exit
23+
nfc_playlist_main_menu_scene_on_exit,
24+
nfc_playlist_settings_scene_on_exit,
25+
nfc_playlist_emulation_scene_on_exit,
26+
nfc_playlist_file_select_scene_on_exit,
27+
nfc_playlist_file_edit_scene_on_exit,
28+
nfc_playlist_text_input_scene_on_exit
2929
};
3030

3131
static const SceneManagerHandlers nfc_playlist_scene_manager_handlers = {
32-
.on_enter_handlers = nfc_playlist_scene_on_enter_handlers,
33-
.on_event_handlers = nfc_playlist_scene_on_event_handlers,
34-
.on_exit_handlers = nfc_playlist_scene_on_exit_handlers,
35-
.scene_num = NfcPlaylistScene_count,
32+
.on_enter_handlers = nfc_playlist_scene_on_enter_handlers,
33+
.on_event_handlers = nfc_playlist_scene_on_event_handlers,
34+
.on_exit_handlers = nfc_playlist_scene_on_exit_handlers,
35+
.scene_num = NfcPlaylistScene_count
3636
};
3737

3838
static bool nfc_playlist_custom_callback(void* context, uint32_t custom_event) {
39-
furi_assert(context);
40-
NfcPlaylist* nfc_playlist = context;
41-
return scene_manager_handle_custom_event(nfc_playlist->scene_manager, custom_event);
39+
furi_assert(context);
40+
NfcPlaylist* nfc_playlist = context;
41+
return scene_manager_handle_custom_event(nfc_playlist->scene_manager, custom_event);
4242
}
4343

4444
static bool nfc_playlist_back_event_callback(void* context) {
45-
furi_assert(context);
46-
NfcPlaylist* nfc_playlist = context;
47-
return scene_manager_handle_back_event(nfc_playlist->scene_manager);
45+
furi_assert(context);
46+
NfcPlaylist* nfc_playlist = context;
47+
return scene_manager_handle_back_event(nfc_playlist->scene_manager);
4848
}
4949

5050
static NfcPlaylist* nfc_playlist_alloc() {
51-
NfcPlaylist* nfc_playlist = malloc(sizeof(NfcPlaylist));
52-
furi_assert(nfc_playlist);
53-
nfc_playlist->scene_manager = scene_manager_alloc(&nfc_playlist_scene_manager_handlers, nfc_playlist);
54-
nfc_playlist->view_dispatcher = view_dispatcher_alloc();
55-
view_dispatcher_enable_queue(nfc_playlist->view_dispatcher);
56-
nfc_playlist->variable_item_list = variable_item_list_alloc();
57-
nfc_playlist->submenu = submenu_alloc();
58-
nfc_playlist->base_file_path = furi_string_alloc_set_str("/ext/apps_data/nfc_playlist/");
59-
nfc_playlist->file_path = nfc_playlist->base_file_path;
60-
nfc_playlist->file_selected = false;
61-
nfc_playlist->file_selected_check = false;
62-
nfc_playlist->file_browser = file_browser_alloc(nfc_playlist->file_path);
63-
nfc_playlist->text_input = text_input_alloc();
64-
nfc_playlist->popup = popup_alloc();
65-
nfc_playlist->emulate_timeout = default_emulate_timeout;
66-
nfc_playlist->emulate_delay = default_emulate_delay;
67-
nfc_playlist->emulate_led_indicator = default_emulate_led_indicator;
68-
nfc_playlist->notification = furi_record_open(RECORD_NOTIFICATION);
69-
view_dispatcher_set_event_callback_context(nfc_playlist->view_dispatcher, nfc_playlist);
70-
view_dispatcher_set_custom_event_callback(nfc_playlist->view_dispatcher, nfc_playlist_custom_callback);
71-
view_dispatcher_set_navigation_event_callback(nfc_playlist->view_dispatcher, nfc_playlist_back_event_callback);
72-
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu, submenu_get_view(nfc_playlist->submenu));
73-
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Settings, variable_item_list_get_view(nfc_playlist->variable_item_list));
74-
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Popup, popup_get_view(nfc_playlist->popup));
75-
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileSelect, file_browser_get_view(nfc_playlist->file_browser));
76-
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit, submenu_get_view(nfc_playlist->submenu));
77-
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_TextInput, text_input_get_view(nfc_playlist->text_input));
78-
return nfc_playlist;
51+
NfcPlaylist* nfc_playlist = malloc(sizeof(NfcPlaylist));
52+
furi_assert(nfc_playlist);
53+
nfc_playlist->scene_manager = scene_manager_alloc(&nfc_playlist_scene_manager_handlers, nfc_playlist);
54+
nfc_playlist->view_dispatcher = view_dispatcher_alloc();
55+
view_dispatcher_enable_queue(nfc_playlist->view_dispatcher);
56+
nfc_playlist->variable_item_list = variable_item_list_alloc();
57+
nfc_playlist->submenu = submenu_alloc();
58+
59+
nfc_playlist->settings.base_file_path = furi_string_alloc_set_str("/ext/apps_data/nfc_playlist/");
60+
nfc_playlist->settings.file_path = nfc_playlist->settings.base_file_path;
61+
nfc_playlist->settings.file_selected = false;
62+
nfc_playlist->settings.file_selected_check = false;
63+
nfc_playlist->settings.emulate_timeout = default_emulate_timeout;
64+
nfc_playlist->settings.emulate_delay = default_emulate_delay;
65+
nfc_playlist->settings.emulate_led_indicator = default_emulate_led_indicator;
66+
67+
nfc_playlist->notification = furi_record_open(RECORD_NOTIFICATION);
68+
nfc_playlist->file_browser = file_browser_alloc(nfc_playlist->settings.file_path);
69+
nfc_playlist->text_input = text_input_alloc();
70+
nfc_playlist->popup = popup_alloc();
71+
72+
view_dispatcher_set_event_callback_context(nfc_playlist->view_dispatcher, nfc_playlist);
73+
view_dispatcher_set_custom_event_callback(nfc_playlist->view_dispatcher, nfc_playlist_custom_callback);
74+
view_dispatcher_set_navigation_event_callback(nfc_playlist->view_dispatcher, nfc_playlist_back_event_callback);
75+
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu, submenu_get_view(nfc_playlist->submenu));
76+
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Settings, variable_item_list_get_view(nfc_playlist->variable_item_list));
77+
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Popup, popup_get_view(nfc_playlist->popup));
78+
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileSelect, file_browser_get_view(nfc_playlist->file_browser));
79+
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit, submenu_get_view(nfc_playlist->submenu));
80+
view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_TextInput, text_input_get_view(nfc_playlist->text_input));
81+
return nfc_playlist;
7982
}
8083

8184
static void nfc_playlist_free(NfcPlaylist* nfc_playlist) {
82-
furi_assert(nfc_playlist);
83-
scene_manager_free(nfc_playlist->scene_manager);
84-
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu);
85-
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Settings);
86-
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Popup);
87-
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileSelect);
88-
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit);
89-
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_TextInput);
90-
view_dispatcher_free(nfc_playlist->view_dispatcher);
91-
variable_item_list_free(nfc_playlist->variable_item_list);
92-
submenu_free(nfc_playlist->submenu);
93-
file_browser_free(nfc_playlist->file_browser);
94-
text_input_free(nfc_playlist->text_input);
95-
popup_free(nfc_playlist->popup);
96-
furi_record_close(RECORD_NOTIFICATION);
97-
furi_string_free(nfc_playlist->base_file_path);
98-
furi_string_free(nfc_playlist->file_path);
99-
free(nfc_playlist->playlist_name);
100-
free(nfc_playlist);
85+
furi_assert(nfc_playlist);
86+
scene_manager_free(nfc_playlist->scene_manager);
87+
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu);
88+
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Settings);
89+
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Popup);
90+
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileSelect);
91+
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit);
92+
view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_TextInput);
93+
view_dispatcher_free(nfc_playlist->view_dispatcher);
94+
variable_item_list_free(nfc_playlist->variable_item_list);
95+
submenu_free(nfc_playlist->submenu);
96+
file_browser_free(nfc_playlist->file_browser);
97+
text_input_free(nfc_playlist->text_input);
98+
popup_free(nfc_playlist->popup);
99+
furi_record_close(RECORD_NOTIFICATION);
100+
furi_string_free(nfc_playlist->settings.base_file_path);
101+
furi_string_free(nfc_playlist->settings.file_path);
102+
free(nfc_playlist->playlist_name);
103+
free(nfc_playlist);
101104
}
102105

103106
int32_t nfc_playlist_main(void* p) {

nfc_playlist.h

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ typedef enum {
3333
NfcPlaylistScene_count
3434
} NfcPlaylistScene;
3535

36+
typedef struct {
37+
FuriString* base_file_path;
38+
FuriString* file_path;
39+
bool file_selected;
40+
bool file_selected_check;
41+
uint8_t emulate_timeout;
42+
uint8_t emulate_delay;
43+
bool emulate_led_indicator;
44+
} NfcPlaylistSettings;
45+
3646
typedef struct {
3747
SceneManager* scene_manager;
3848
ViewDispatcher* view_dispatcher;
@@ -44,13 +54,7 @@ typedef struct {
4454
NotificationApp* notification;
4555
FuriThread* thread;
4656
NfcPlaylistWorker* nfc_playlist_worker;
47-
FuriString* base_file_path;
48-
bool file_selected;
49-
bool file_selected_check;
50-
uint8_t emulate_timeout;
51-
uint8_t emulate_delay;
52-
bool emulate_led_indicator;
53-
FuriString* file_path;
57+
NfcPlaylistSettings settings;
5458
char* playlist_name;
5559
} NfcPlaylist;
5660

0 commit comments

Comments
 (0)