Browse Source

Merge pull request #18 from acegoal07/new_scene_manager

New scene manager
acegoal07 1 year ago
parent
commit
b586b0095c

+ 0 - 3
application.fam

@@ -14,8 +14,5 @@ App(
         Lib(
             name="worker",
         ),
-        Lib(
-            name="led",
-        ),
     ],
 )

+ 0 - 42
lib/led/nfc_playlist_led.c

@@ -1,42 +0,0 @@
-#include "nfc_playlist_led.h"
-
-NotificationMessage blink_message_normal = {
-   .type = NotificationMessageTypeLedBlinkStart,
-   .data.led_blink.color = LightBlue | LightGreen,
-   .data.led_blink.on_time = 10,
-   .data.led_blink.period = 100
-};
-const NotificationSequence blink_sequence_normal = {
-   &blink_message_normal,
-   &message_do_not_reset,
-   NULL
-};
-
-NotificationMessage blink_message_error = {
-   .type = NotificationMessageTypeLedBlinkStart,
-   .data.led_blink.color = LightRed,
-   .data.led_blink.on_time = 10,
-   .data.led_blink.period = 100
-};
-
-const NotificationSequence blink_sequence_error = {
-   &blink_message_error,
-   &message_do_not_reset,
-   NULL
-};
-
-void start_blink(NfcPlaylist* nfc_playlist, int state) {
-   if (nfc_playlist->settings.emulate_led_indicator) {
-      if (state == NfcPlaylistLedState_Normal) {
-         notification_message_block(nfc_playlist->notification, &blink_sequence_normal);
-      } else if (state == NfcPlaylistLedState_Error) {
-         notification_message_block(nfc_playlist->notification, &blink_sequence_error);
-      }
-   }
-}
-
-void stop_blink(NfcPlaylist* nfc_playlist) {
-   if (nfc_playlist->settings.emulate_led_indicator) {
-      notification_message_block(nfc_playlist->notification, &sequence_blink_stop);
-   }
-}

+ 0 - 11
lib/led/nfc_playlist_led.h

@@ -1,11 +0,0 @@
-#pragma once
-#include <../../nfc_playlist.h>
-#include <notification/notification_messages.h>
-
-typedef enum NfcPlaylistLedState {
-   NfcPlaylistLedState_Normal,
-   NfcPlaylistLedState_Error
-} NfcPlaylistLedState;
-
-void start_blink(NfcPlaylist* nfc_playlist, int state);
-void stop_blink(NfcPlaylist* nfc_playlist);

+ 62 - 68
nfc_playlist.c

@@ -1,51 +1,4 @@
 #include "nfc_playlist.h"
-#include "nfc_playlist_i.h"
-
-static void (*const nfc_playlist_scene_on_enter_handlers[])(void*) = {
-   nfc_playlist_main_menu_scene_on_enter,
-   nfc_playlist_settings_scene_on_enter,
-   nfc_playlist_emulation_scene_on_enter,
-   nfc_playlist_playlist_select_scene_on_enter,
-   nfc_playlist_file_edit_scene_on_enter,
-   nfc_playlist_file_rename_scene_on_enter,
-   nfc_playlist_confirm_delete_scene_on_enter,
-   nfc_playlist_view_playlist_content_scene_on_enter,
-   nfc_playlist_nfc_select_scene_on_enter,
-   nfc_playlist_name_new_file_scene_on_enter
-};
-
-static bool (*const nfc_playlist_scene_on_event_handlers[])(void*, SceneManagerEvent) = {
-   nfc_playlist_main_menu_scene_on_event,
-   nfc_playlist_settings_scene_on_event,
-   nfc_playlist_emulation_scene_on_event,
-   nfc_playlist_playlist_select_scene_on_event,
-   nfc_playlist_file_edit_scene_on_event,
-   nfc_playlist_file_rename_scene_on_event,
-   nfc_playlist_confirm_delete_scene_on_event,
-   nfc_playlist_view_playlist_content_scene_on_event,
-   nfc_playlist_nfc_select_scene_on_event,
-   nfc_playlist_name_new_file_scene_on_event
-};
-
-static void (*const nfc_playlist_scene_on_exit_handlers[])(void*) = {
-   nfc_playlist_main_menu_scene_on_exit,
-   nfc_playlist_settings_scene_on_exit,
-   nfc_playlist_emulation_scene_on_exit,
-   nfc_playlist_playlist_select_scene_on_exit,
-   nfc_playlist_file_edit_scene_on_exit,
-   nfc_playlist_file_rename_scene_on_exit,
-   nfc_playlist_confirm_delete_scene_on_exit,
-   nfc_playlist_view_playlist_content_scene_on_exit,
-   nfc_playlist_nfc_select_scene_on_exit,
-   nfc_playlist_name_new_file_scene_on_exit
-};
-
-static const SceneManagerHandlers nfc_playlist_scene_manager_handlers = {
-   .on_enter_handlers = nfc_playlist_scene_on_enter_handlers,
-   .on_event_handlers = nfc_playlist_scene_on_event_handlers,
-   .on_exit_handlers = nfc_playlist_scene_on_exit_handlers,
-   .scene_num = NfcPlaylistScene_count
-};
 
 static bool nfc_playlist_custom_callback(void* context, uint32_t custom_event) {
    furi_assert(context);
@@ -62,7 +15,7 @@ static bool nfc_playlist_back_event_callback(void* context) {
 static NfcPlaylist* nfc_playlist_alloc() {
    NfcPlaylist* nfc_playlist = malloc(sizeof(NfcPlaylist));
    furi_assert(nfc_playlist);
-   nfc_playlist->scene_manager = scene_manager_alloc(&nfc_playlist_scene_manager_handlers, nfc_playlist);
+   nfc_playlist->scene_manager = scene_manager_alloc(&nfc_playlist_scene_handlers, nfc_playlist);
    nfc_playlist->view_dispatcher = view_dispatcher_alloc();
    view_dispatcher_enable_queue(nfc_playlist->view_dispatcher);
    nfc_playlist->variable_item_list = variable_item_list_alloc();
@@ -86,16 +39,16 @@ static NfcPlaylist* nfc_playlist_alloc() {
    view_dispatcher_set_event_callback_context(nfc_playlist->view_dispatcher, nfc_playlist);
    view_dispatcher_set_custom_event_callback(nfc_playlist->view_dispatcher, nfc_playlist_custom_callback);
    view_dispatcher_set_navigation_event_callback(nfc_playlist->view_dispatcher, nfc_playlist_back_event_callback);
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu, submenu_get_view(nfc_playlist->submenu));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Settings, variable_item_list_get_view(nfc_playlist->variable_item_list));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Popup, popup_get_view(nfc_playlist->popup));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_PlaylistSelect, file_browser_get_view(nfc_playlist->playlist_file_browser));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit, submenu_get_view(nfc_playlist->submenu));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileRename, text_input_get_view(nfc_playlist->text_input));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_ConfirmDelete, widget_get_view(nfc_playlist->widget));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_ViewPlaylistContent, widget_get_view(nfc_playlist->widget));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_NfcSelect, file_browser_get_view(nfc_playlist->nfc_file_browser));
-   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_NameNewFile, text_input_get_view(nfc_playlist->text_input));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_MainMenu, submenu_get_view(nfc_playlist->submenu));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_Settings, variable_item_list_get_view(nfc_playlist->variable_item_list));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_Emulation, popup_get_view(nfc_playlist->popup));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_PlaylistSelect, file_browser_get_view(nfc_playlist->playlist_file_browser));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_FileEdit, submenu_get_view(nfc_playlist->submenu));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_FileRename, text_input_get_view(nfc_playlist->text_input));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_ConfirmDelete, widget_get_view(nfc_playlist->widget));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_ViewPlaylistContent, widget_get_view(nfc_playlist->widget));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_NfcSelect, file_browser_get_view(nfc_playlist->nfc_file_browser));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_NameNewFile, text_input_get_view(nfc_playlist->text_input));
 
    Storage* storage = furi_record_open(RECORD_STORAGE);
    if (!storage_common_exists(storage, PLAYLIST_DIR)) {
@@ -109,16 +62,16 @@ static NfcPlaylist* nfc_playlist_alloc() {
 static void nfc_playlist_free(NfcPlaylist* nfc_playlist) {
    furi_assert(nfc_playlist);
 
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Settings);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Popup);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_PlaylistSelect);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileRename);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_ConfirmDelete);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_ViewPlaylistContent);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_NfcSelect);
-   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_NameNewFile);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_MainMenu);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_Settings);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_Emulation);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_PlaylistSelect);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_FileEdit);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_FileRename);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_ConfirmDelete);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_ViewPlaylistContent);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_NfcSelect);
+   view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_NameNewFile);
 
    scene_manager_free(nfc_playlist->scene_manager);
    view_dispatcher_free(nfc_playlist->view_dispatcher);
@@ -161,4 +114,45 @@ int32_t nfc_playlist_main(void* p) {
    nfc_playlist_free(nfc_playlist);
 
    return 0;
+}
+
+NotificationMessage blink_message_normal = {
+   .type = NotificationMessageTypeLedBlinkStart,
+   .data.led_blink.color = LightBlue | LightGreen,
+   .data.led_blink.on_time = 10,
+   .data.led_blink.period = 100
+};
+const NotificationSequence blink_sequence_normal = {
+   &blink_message_normal,
+   &message_do_not_reset,
+   NULL
+};
+
+NotificationMessage blink_message_error = {
+   .type = NotificationMessageTypeLedBlinkStart,
+   .data.led_blink.color = LightRed,
+   .data.led_blink.on_time = 10,
+   .data.led_blink.period = 100
+};
+
+const NotificationSequence blink_sequence_error = {
+   &blink_message_error,
+   &message_do_not_reset,
+   NULL
+};
+
+void start_blink(NfcPlaylist* nfc_playlist, int state) {
+   if (nfc_playlist->settings.emulate_led_indicator) {
+      if (state == NfcPlaylistLedState_Normal) {
+         notification_message_block(nfc_playlist->notification, &blink_sequence_normal);
+      } else if (state == NfcPlaylistLedState_Error) {
+         notification_message_block(nfc_playlist->notification, &blink_sequence_error);
+      }
+   }
+}
+
+void stop_blink(NfcPlaylist* nfc_playlist) {
+   if (nfc_playlist->settings.emulate_led_indicator) {
+      notification_message_block(nfc_playlist->notification, &sequence_blink_stop);
+   }
 }

+ 15 - 27
nfc_playlist.h

@@ -19,34 +19,14 @@
 
 #include <notification/notification_messages.h>
 
-#include <nfc_playlist_worker.h>
+#include <storage/storage.h>
 
-typedef enum {
-   NfcPlaylistView_Menu,
-   NfcPlaylistView_Settings,
-   NfcPlaylistView_Popup,
-   NfcPlaylistView_PlaylistSelect,
-   NfcPlaylistView_FileEdit,
-   NfcPlaylistView_FileRename,
-   NfcPlaylistView_ConfirmDelete,
-   NfcPlaylistView_ViewPlaylistContent,
-   NfcPlaylistView_NfcSelect,
-   NfcPlaylistView_NameNewFile
-} NfcPlayScenesView;
+#include <toolbox/stream/stream.h>
+#include <toolbox/stream/file_stream.h>
 
-typedef enum {
-   NfcPlaylistScene_MainMenu,
-   NfcPlaylistScene_Settings,
-   NfcPlaylistScene_EmulatingPopup,
-   NfcPlaylistScene_PlaylistSelect,
-   NfcPlaylistScene_FileEdit,
-   NfcPlaylistScene_FileRename,
-   NfcPlaylistScene_ConfirmDelete,
-   NfcPlaylistScene_ViewPlaylistContent,
-   NfcPlaylistScene_NfcSelect,
-   NfcPlaylistScene_NameNewFile,
-   NfcPlaylistScene_count
-} NfcPlaylistScene;
+#include "lib/worker/nfc_playlist_worker.h"
+
+#include "scenes/nfc_playlist_scene.h"
 
 typedef struct {
    FuriString* file_path;
@@ -81,4 +61,12 @@ static const int default_emulate_delay = 0;
 static const bool default_emulate_led_indicator = true;
 
 #define PLAYLIST_LOCATION "/ext/apps_data/nfc_playlist/"
-#define PLAYLIST_DIR "/ext/apps_data/nfc_playlist"
+#define PLAYLIST_DIR "/ext/apps_data/nfc_playlist"
+
+typedef enum NfcPlaylistLedState {
+   NfcPlaylistLedState_Normal,
+   NfcPlaylistLedState_Error
+} NfcPlaylistLedState;
+
+void start_blink(NfcPlaylist* nfc_playlist, int state);
+void stop_blink(NfcPlaylist* nfc_playlist);

+ 0 - 11
nfc_playlist_i.h

@@ -1,11 +0,0 @@
-#pragma once
-#include "scenes/main_menu.h"
-#include "scenes/settings.h"
-#include "scenes/emulation.h"
-#include "scenes/playlist_select.h"
-#include "scenes/file_edit.h"
-#include "scenes/file_rename.h"
-#include "scenes/confirm_delete.h"
-#include "scenes/view_playlist_content.h"
-#include "scenes/nfc_select.h"
-#include "scenes/name_new_file.h"

+ 0 - 10
scenes/confirm_delete.h

@@ -1,10 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/widget.h>
-#include <storage/storage.h>
-
-void nfc_playlist_confirm_delete_scene_on_enter(void* context);
-bool nfc_playlist_confirm_delete_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_confirm_delete_scene_on_exit(void* context);

+ 0 - 20
scenes/emulation.h

@@ -1,20 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <storage/storage.h>
-#include <toolbox/stream/stream.h>
-#include <toolbox/stream/file_stream.h>
-#include <lib/worker/nfc_playlist_worker.h>
-#include <lib/led/nfc_playlist_led.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/popup.h>
-
-void nfc_playlist_emulation_scene_on_enter(void* context);
-bool nfc_playlist_emulation_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_emulation_scene_on_exit(void* context);
-
-typedef enum NfcPlaylistEmulationState {
-   NfcPlaylistEmulationState_Emulating,
-   NfcPlaylistEmulationState_Stopped,
-   NfcPlaylistEmulationState_Canceled
-} NfcPlaylistEmulationState;

+ 0 - 17
scenes/file_edit.h

@@ -1,17 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/submenu.h>
-
-void nfc_playlist_file_edit_scene_on_enter(void* context);
-bool nfc_playlist_file_edit_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_file_edit_scene_on_exit(void* context);
-
-typedef enum {
-   NfcPlaylistMenuSelection_CreatePlaylist,
-   NfcPlaylistMenuSelection_DeletePlaylist,
-   NfcPlaylistMenuSelection_RenamePlaylist,
-   NfcPlaylistMenuSelection_ViewPlaylistContent,
-   NfcPlaylistMenuSelection_AddNfcItem
-} NfcPlaylistFileEditMenuSelection;

+ 0 - 10
scenes/file_rename.h

@@ -1,10 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/text_input.h>
-#include <storage/storage.h>
-
-void nfc_playlist_file_rename_scene_on_enter(void* context);
-bool nfc_playlist_file_rename_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_file_rename_scene_on_exit(void* context);

+ 0 - 23
scenes/main_menu.h

@@ -1,23 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/submenu.h>
-
-void nfc_playlist_main_menu_scene_on_enter(void* context);
-bool nfc_playlist_main_menu_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_main_menu_scene_on_exit(void* context);
-
-typedef enum {
-   NfcPlaylistEvent_ShowEmulatingPopup,
-   NfcPlaylistEvent_ShowPlaylistSelect,
-   NfcPlaylistEvent_ShowFileEdit,
-   NfcPlaylistEvent_ShowSettings
-} NfcPlaylistMainMenuEvent;
-
-typedef enum {
-   NfcPlaylistMenuSelection_Start,
-   NfcPlaylistMenuSelection_PlaylistSelect,
-   NfcPlaylistMenuSelection_FileEdit,
-   NfcPlaylistMenuSelection_Settings
-} NfcPlaylistMainMenuMenuSelection;

+ 0 - 10
scenes/name_new_file.h

@@ -1,10 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/text_input.h>
-#include <storage/storage.h>
-
-void nfc_playlist_name_new_file_scene_on_enter(void* context);
-bool nfc_playlist_name_new_file_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_name_new_file_scene_on_exit(void* context);

+ 30 - 0
scenes/nfc_playlist_scene.c

@@ -0,0 +1,30 @@
+#include "nfc_playlist_scene.h"
+
+// Generate scene on_enter handlers definition
+#define ADD_SCENE(prefix, name, id) prefix##_##name##_scene_on_enter,
+void (*const nfc_playlist_on_enter_handlers[])(void*) = {
+#include "nfc_playlist_scene_config.h"
+};
+#undef ADD_SCENE
+
+// Generate scene on_event handlers array
+#define ADD_SCENE(prefix, name, id) prefix##_##name##_scene_on_event,
+bool (*const nfc_playlist_on_event_handlers[])(void* context, SceneManagerEvent event) = {
+#include "nfc_playlist_scene_config.h"
+};
+#undef ADD_SCENE
+
+// Generate scene on_exit handlers array
+#define ADD_SCENE(prefix, name, id) prefix##_##name##_scene_on_exit,
+void (*const nfc_playlist_on_exit_handlers[])(void* context) = {
+#include "nfc_playlist_scene_config.h"
+};
+#undef ADD_SCENE
+
+// Initialize scene handlers configuration structure
+const SceneManagerHandlers nfc_playlist_scene_handlers = {
+   .on_enter_handlers = nfc_playlist_on_enter_handlers,
+   .on_event_handlers = nfc_playlist_on_event_handlers,
+   .on_exit_handlers = nfc_playlist_on_exit_handlers,
+   .scene_num = NfcPlaylistScene_Count,
+};

+ 29 - 0
scenes/nfc_playlist_scene.h

@@ -0,0 +1,29 @@
+#pragma once
+
+#include <gui/scene_manager.h>
+
+// Generate scene id and total number
+#define ADD_SCENE(prefix, name, id) NfcPlaylistScene_##id,
+typedef enum {
+#include "nfc_playlist_scene_config.h"
+   NfcPlaylistScene_Count
+} NfcPlaylistScene;
+#undef ADD_SCENE
+
+extern const SceneManagerHandlers nfc_playlist_scene_handlers;
+
+// Generate scene on_enter handlers declaration
+#define ADD_SCENE(prefix, name, id) void prefix##_##name##_scene_on_enter(void*);
+#include "nfc_playlist_scene_config.h"
+#undef ADD_SCENE
+
+// Generate scene on_event handlers declaration
+#define ADD_SCENE(prefix, name, id) \
+   bool prefix##_##name##_scene_on_event(void* context, SceneManagerEvent event);
+#include "nfc_playlist_scene_config.h"
+#undef ADD_SCENE
+
+// Generate scene on_exit handlers declaration
+#define ADD_SCENE(prefix, name, id) void prefix##_##name##_scene_on_exit(void* context);
+#include "nfc_playlist_scene_config.h"
+#undef ADD_SCENE

+ 10 - 0
scenes/nfc_playlist_scene_config.h

@@ -0,0 +1,10 @@
+ADD_SCENE(nfc_playlist, confirm_delete, ConfirmDelete)
+ADD_SCENE(nfc_playlist, emulation, Emulation)
+ADD_SCENE(nfc_playlist, file_edit, FileEdit)
+ADD_SCENE(nfc_playlist, file_rename, FileRename)
+ADD_SCENE(nfc_playlist, main_menu, MainMenu)
+ADD_SCENE(nfc_playlist, name_new_file, NameNewFile)
+ADD_SCENE(nfc_playlist, nfc_select, NfcSelect)
+ADD_SCENE(nfc_playlist, playlist_select, PlaylistSelect)
+ADD_SCENE(nfc_playlist, settings, Settings)
+ADD_SCENE(nfc_playlist, view_playlist_content, ViewPlaylistContent)

+ 2 - 3
scenes/confirm_delete.c → scenes/nfc_playlist_scene_confirm_delete.c

@@ -1,5 +1,4 @@
-#include "nfc_playlist.h"
-#include "scenes/confirm_delete.h"
+#include "../nfc_playlist.h"
 
 void nfc_playlist_confirm_delete_menu_callback(GuiButtonType result, InputType type, void* context) {
    NfcPlaylist* nfc_playlist = context;
@@ -22,7 +21,7 @@ void nfc_playlist_confirm_delete_scene_on_enter(void* context) {
 
    furi_string_free(temp_str);
 
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_ConfirmDelete);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_ConfirmDelete);
 }
 
 bool nfc_playlist_confirm_delete_scene_on_event(void* context, SceneManagerEvent event) {

+ 8 - 3
scenes/emulation.c → scenes/nfc_playlist_scene_emulation.c

@@ -1,5 +1,10 @@
-#include "nfc_playlist.h"
-#include "scenes/emulation.h"
+#include "../nfc_playlist.h"
+
+typedef enum NfcPlaylistEmulationState {
+   NfcPlaylistEmulationState_Emulating,
+   NfcPlaylistEmulationState_Stopped,
+   NfcPlaylistEmulationState_Canceled
+} NfcPlaylistEmulationState;
 
 NfcPlaylistEmulationState EmulationState = NfcPlaylistEmulationState_Stopped;
 
@@ -11,7 +16,7 @@ int32_t nfc_playlist_emulation_task(void* context) {
 
    popup_reset(nfc_playlist->popup);
    popup_set_context(nfc_playlist->popup, nfc_playlist);
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Popup);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_Emulation);
 
    if (file_stream_open(stream, furi_string_get_cstr(nfc_playlist->settings.file_path), FSAM_READ, FSOM_OPEN_EXISTING)) {
       EmulationState = NfcPlaylistEmulationState_Emulating;

+ 10 - 3
scenes/file_edit.c → scenes/nfc_playlist_scene_file_edit.c

@@ -1,5 +1,12 @@
-#include "nfc_playlist.h"
-#include "scenes/file_edit.h"
+#include "../nfc_playlist.h"
+
+typedef enum {
+   NfcPlaylistMenuSelection_CreatePlaylist,
+   NfcPlaylistMenuSelection_DeletePlaylist,
+   NfcPlaylistMenuSelection_RenamePlaylist,
+   NfcPlaylistMenuSelection_ViewPlaylistContent,
+   NfcPlaylistMenuSelection_AddNfcItem
+} NfcPlaylistFileEditMenuSelection;
 
 void nfc_playlist_file_edit_menu_callback(void* context, uint32_t index) {
    NfcPlaylist* nfc_playlist = context;
@@ -54,7 +61,7 @@ void nfc_playlist_file_edit_scene_on_enter(void* context) {
       furi_string_empty(nfc_playlist->settings.file_path),
       "No\nplaylist\nselected");
 
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_FileEdit);
 }
 
 bool nfc_playlist_file_edit_scene_on_event(void* context, SceneManagerEvent event) {

+ 2 - 3
scenes/file_rename.c → scenes/nfc_playlist_scene_file_rename.c

@@ -1,5 +1,4 @@
-#include "nfc_playlist.h"
-#include "scenes/file_rename.h"
+#include "../nfc_playlist.h"
 
 void nfc_playlist_file_rename_menu_callback(void* context) {
    NfcPlaylist* nfc_playlist = context;
@@ -32,7 +31,7 @@ void nfc_playlist_file_rename_scene_on_enter(void* context) {
    text_input_set_header_text(nfc_playlist->text_input, "Enter new file name");
    text_input_set_minimum_length(nfc_playlist->text_input, 1);
    text_input_set_result_callback(nfc_playlist->text_input, nfc_playlist_file_rename_menu_callback, nfc_playlist, nfc_playlist->text_input_output, 50, true);
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileRename);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_FileRename);
 }
 
 bool nfc_playlist_file_rename_scene_on_event(void* context, SceneManagerEvent event) {

+ 18 - 5
scenes/main_menu.c → scenes/nfc_playlist_scene_main_menu.c

@@ -1,5 +1,18 @@
-#include "nfc_playlist.h"
-#include "scenes/main_menu.h"
+#include "../nfc_playlist.h"
+
+typedef enum {
+   NfcPlaylistEvent_ShowEmulation,
+   NfcPlaylistEvent_ShowPlaylistSelect,
+   NfcPlaylistEvent_ShowFileEdit,
+   NfcPlaylistEvent_ShowSettings
+} NfcPlaylistMainMenuEvent;
+
+typedef enum {
+   NfcPlaylistMenuSelection_Start,
+   NfcPlaylistMenuSelection_PlaylistSelect,
+   NfcPlaylistMenuSelection_FileEdit,
+   NfcPlaylistMenuSelection_Settings
+} NfcPlaylistMainMenuMenuSelection;
 
 void nfc_playlist_main_menu_menu_callback(void* context, uint32_t index) {
    NfcPlaylist* nfc_playlist = context;
@@ -48,7 +61,7 @@ void nfc_playlist_main_menu_scene_on_enter(void* context) {
       NfcPlaylistMenuSelection_Settings,
       nfc_playlist_main_menu_menu_callback,
       nfc_playlist);
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_MainMenu);
 }
 
 bool nfc_playlist_main_menu_scene_on_event(void* context, SceneManagerEvent event) {
@@ -56,8 +69,8 @@ bool nfc_playlist_main_menu_scene_on_event(void* context, SceneManagerEvent even
    bool consumed = false;
    if (event.type == SceneManagerEventTypeCustom) {
       switch(event.event) {
-         case NfcPlaylistEvent_ShowEmulatingPopup:
-            scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_EmulatingPopup);
+         case NfcPlaylistEvent_ShowEmulation:
+            scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_Emulation);
             consumed = true;
             break;
          case NfcPlaylistEvent_ShowPlaylistSelect:

+ 2 - 3
scenes/name_new_file.c → scenes/nfc_playlist_scene_name_new_file.c

@@ -1,5 +1,4 @@
-#include "nfc_playlist.h"
-#include "scenes/name_new_file.h"
+#include "../nfc_playlist.h"
 
 void nfc_playlist_name_new_file_menu_callback(void* context) {
    NfcPlaylist* nfc_playlist = context;
@@ -25,7 +24,7 @@ void nfc_playlist_name_new_file_scene_on_enter(void* context) {
    text_input_set_header_text(nfc_playlist->text_input, "Enter file name");
    text_input_set_minimum_length(nfc_playlist->text_input, 1);
    text_input_set_result_callback(nfc_playlist->text_input, nfc_playlist_name_new_file_menu_callback, nfc_playlist, nfc_playlist->text_input_output, 50, true);
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileRename);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_FileRename);
 }
 
 bool nfc_playlist_name_new_file_scene_on_event(void* context, SceneManagerEvent event) {

+ 4 - 3
scenes/nfc_select.c → scenes/nfc_playlist_scene_nfc_select.c

@@ -1,5 +1,6 @@
-#include "nfc_playlist.h"
-#include "scenes/nfc_select.h"
+#include "../nfc_playlist.h"
+
+#define MAX_PLAYLIST_SIZE 1000
 
 void nfc_playlist_nfc_select_menu_callback(void* context) {
    NfcPlaylist* nfc_playlist = context;
@@ -41,7 +42,7 @@ void nfc_playlist_nfc_select_scene_on_enter(void* context) {
       true,
       &I_Nfc_10px,
       true);
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_PlaylistSelect);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_PlaylistSelect);
    file_browser_set_callback(nfc_playlist->playlist_file_browser, nfc_playlist_nfc_select_menu_callback, nfc_playlist);
    FuriString* tmp_str = furi_string_alloc_set_str("/ext/nfc/");
    file_browser_start(nfc_playlist->playlist_file_browser, tmp_str);

+ 2 - 3
scenes/playlist_select.c → scenes/nfc_playlist_scene_playlist_select.c

@@ -1,5 +1,4 @@
-#include "nfc_playlist.h"
-#include "scenes/playlist_select.h"
+#include "../nfc_playlist.h"
 
 void nfc_playlist_playlist_select_menu_callback(void* context) {
    NfcPlaylist* nfc_playlist = context;
@@ -18,7 +17,7 @@ void nfc_playlist_playlist_select_scene_on_enter(void* context) {
       true,
       &I_Nfc_10px,
       true);
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_PlaylistSelect);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_PlaylistSelect);
    file_browser_set_callback(nfc_playlist->playlist_file_browser, nfc_playlist_playlist_select_menu_callback, nfc_playlist);
    FuriString* tmp_str = furi_string_alloc_set_str(PLAYLIST_LOCATION);
    file_browser_start(nfc_playlist->playlist_file_browser, tmp_str);

+ 9 - 3
scenes/settings.c → scenes/nfc_playlist_scene_settings.c

@@ -1,5 +1,11 @@
-#include "nfc_playlist.h"
-#include "scenes/settings.h"
+#include "../nfc_playlist.h"
+
+typedef enum {
+   NfcPlaylistSettings_Timeout,
+   NfcPlaylistSettings_Delay,
+   NfcPlaylistSettings_LedIndicator,
+   NfcPlaylistSettings_Reset
+} NfcPlaylistSettingsMenuSelection;
 
 void nfc_playlist_settings_menu_callback(void* context, uint32_t index) {
    NfcPlaylist* nfc_playlist = context;
@@ -74,7 +80,7 @@ void nfc_playlist_settings_scene_on_enter(void* context) {
    variable_item_set_current_value_text(credits, "Credits");
 
    variable_item_list_set_enter_callback(nfc_playlist->variable_item_list, nfc_playlist_settings_menu_callback, nfc_playlist);
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Settings);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_Settings);
    furi_string_free(tmp_str);
 }
 

+ 4 - 3
scenes/view_playlist_content.c → scenes/nfc_playlist_scene_view_playlist_content.c

@@ -1,5 +1,6 @@
-#include "nfc_playlist.h"
-#include "scenes/view_playlist_content.h"
+#include "../nfc_playlist.h"
+
+#define MAX_PLAYLIST_SIZE 1000
 
 void nfc_playlist_view_playlist_content_scene_on_enter(void* context) {
    NfcPlaylist* nfc_playlist = context;
@@ -23,7 +24,7 @@ void nfc_playlist_view_playlist_content_scene_on_enter(void* context) {
    storage_file_free(file);
    furi_record_close(RECORD_STORAGE);
 
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_ViewPlaylistContent);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_ViewPlaylistContent);
 }
 
 bool nfc_playlist_view_playlist_content_scene_on_event(void* context, SceneManagerEvent event) {

+ 0 - 12
scenes/nfc_select.h

@@ -1,12 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/file_browser.h>
-#include <storage/storage.h>
-
-void nfc_playlist_nfc_select_scene_on_enter(void* context);
-bool nfc_playlist_nfc_select_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_nfc_select_scene_on_exit(void* context);
-
-#define MAX_PLAYLIST_SIZE 1000

+ 0 - 9
scenes/playlist_select.h

@@ -1,9 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/file_browser.h>
-
-void nfc_playlist_playlist_select_scene_on_enter(void* context);
-bool nfc_playlist_playlist_select_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_playlist_select_scene_on_exit(void* context);

+ 0 - 16
scenes/settings.h

@@ -1,16 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/variable_item_list.h>
-
-void nfc_playlist_settings_scene_on_enter(void* context);
-bool nfc_playlist_settings_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_settings_scene_on_exit(void* context);
-
-typedef enum {
-   NfcPlaylistSettings_Timeout,
-   NfcPlaylistSettings_Delay,
-   NfcPlaylistSettings_LedIndicator,
-   NfcPlaylistSettings_Reset
-} NfcPlaylistSettingsMenuSelection;

+ 0 - 12
scenes/view_playlist_content.h

@@ -1,12 +0,0 @@
-#pragma once
-#include <furi.h>
-#include <gui/view_dispatcher.h>
-#include <gui/scene_manager.h>
-#include <gui/modules/widget.h>
-#include <storage/storage.h>
-
-void nfc_playlist_view_playlist_content_scene_on_enter(void* context);
-bool nfc_playlist_view_playlist_content_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_view_playlist_content_scene_on_exit(void* context);
-
-#define MAX_PLAYLIST_SIZE 1000