Kaynağa Gözat

playlist select tweaks

- Renames file_select to playlist_select to better describe what its used for
- Changes the file browser to instead of changing file_path for the output instead changes a different variable so it can be reused
acegoal07 1 yıl önce
ebeveyn
işleme
1f56464bf9

+ 11 - 9
nfc_playlist.c

@@ -5,7 +5,7 @@ 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_file_select_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
@@ -15,7 +15,7 @@ static bool (*const nfc_playlist_scene_on_event_handlers[])(void*, SceneManagerE
    nfc_playlist_main_menu_scene_on_event,
    nfc_playlist_settings_scene_on_event,
    nfc_playlist_emulation_scene_on_event,
-   nfc_playlist_file_select_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
@@ -25,7 +25,7 @@ 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_file_select_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
@@ -61,15 +61,16 @@ static NfcPlaylist* nfc_playlist_alloc() {
    nfc_playlist->widget= widget_alloc();
 
    nfc_playlist->settings.base_file_path = furi_string_alloc_set_str("/ext/apps_data/nfc_playlist/");
-   nfc_playlist->settings.file_path = nfc_playlist->settings.base_file_path;
-   nfc_playlist->settings.file_selected = false;
-   nfc_playlist->settings.file_selected_check = false;
+   nfc_playlist->settings.file_path = furi_string_alloc();
+   nfc_playlist->file_browser_output = furi_string_alloc();
+   nfc_playlist->settings.playlist_selected = false;
+   nfc_playlist->settings.playlist_selected_check = false;
    nfc_playlist->settings.emulate_timeout = default_emulate_timeout;
    nfc_playlist->settings.emulate_delay = default_emulate_delay;
    nfc_playlist->settings.emulate_led_indicator = default_emulate_led_indicator;
 
    nfc_playlist->notification = furi_record_open(RECORD_NOTIFICATION);
-   nfc_playlist->file_browser = file_browser_alloc(nfc_playlist->settings.file_path);
+   nfc_playlist->file_browser = file_browser_alloc(nfc_playlist->file_browser_output);
    nfc_playlist->text_input = text_input_alloc();
    nfc_playlist->popup = popup_alloc();
 
@@ -79,7 +80,7 @@ static NfcPlaylist* nfc_playlist_alloc() {
    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_FileSelect, file_browser_get_view(nfc_playlist->file_browser));
+   view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_PlaylistSelect, file_browser_get_view(nfc_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));
@@ -99,7 +100,7 @@ static void nfc_playlist_free(NfcPlaylist* 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_FileSelect);
+   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);
@@ -117,6 +118,7 @@ static void nfc_playlist_free(NfcPlaylist* nfc_playlist) {
 
    furi_string_free(nfc_playlist->settings.base_file_path);
    furi_string_free(nfc_playlist->settings.file_path);
+   furi_string_free(nfc_playlist->file_browser_output);
    free(nfc_playlist);
 }
 

+ 5 - 4
nfc_playlist.h

@@ -20,7 +20,7 @@ typedef enum {
    NfcPlaylistView_Menu,
    NfcPlaylistView_Settings,
    NfcPlaylistView_Popup,
-   NfcPlaylistView_FileSelect,
+   NfcPlaylistView_PlaylistSelect,
    NfcPlaylistView_FileEdit,
    NfcPlaylistView_FileRename,
    NfcPlaylistView_ConfirmDelete
@@ -30,7 +30,7 @@ typedef enum {
    NfcPlaylistScene_MainMenu,
    NfcPlaylistScene_Settings,
    NfcPlaylistScene_EmulatingPopup,
-   NfcPlaylistScene_FileSelect,
+   NfcPlaylistScene_PlaylistSelect,
    NfcPlaylistScene_FileEdit,
    NfcPlaylistScene_FileRename,
    NfcPlaylistScene_ConfirmDelete,
@@ -40,8 +40,8 @@ typedef enum {
 typedef struct {
    FuriString* base_file_path;
    FuriString* file_path;
-   bool file_selected;
-   bool file_selected_check;
+   bool playlist_selected;
+   bool playlist_selected_check;
    uint8_t emulate_timeout;
    uint8_t emulate_delay;
    bool emulate_led_indicator;
@@ -52,6 +52,7 @@ typedef struct {
    ViewDispatcher* view_dispatcher;
    VariableItemList* variable_item_list;
    FileBrowser* file_browser;
+   FuriString* file_browser_output;
    TextInput* text_input;
    Submenu* submenu;
    Popup* popup;

+ 1 - 1
nfc_playlist_i.h

@@ -2,7 +2,7 @@
 #include "scences/main_menu.h"
 #include "scences/settings.h"
 #include "scences/emulation.h"
-#include "scences/file_select.h"
+#include "scences/playlist_select.h"
 #include "scences/file_edit.h"
 #include "scences/file_rename.h"
 #include "scences/confirm_delete.h"

+ 2 - 2
scences/confirm_delete.c

@@ -33,8 +33,8 @@ bool nfc_playlist_confirm_delete_scene_on_event(void* context, SceneManagerEvent
          case GuiButtonTypeRight:
             Storage* storage = furi_record_open(RECORD_STORAGE);
             storage_simply_remove(storage, furi_string_get_cstr(nfc_playlist->settings.file_path));
-            nfc_playlist->settings.file_selected = false;
-            nfc_playlist->settings.file_selected_check = false;
+            nfc_playlist->settings.playlist_selected = false;
+            nfc_playlist->settings.playlist_selected_check = false;
             nfc_playlist->settings.file_path = nfc_playlist->settings.base_file_path;
             furi_record_close(RECORD_STORAGE);
             consumed = true;

+ 1 - 1
scences/emulation.c

@@ -13,7 +13,7 @@ int32_t nfc_playlist_emulation_task(void* context) {
    popup_set_context(nfc_playlist->popup, nfc_playlist);
    view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Popup);
 
-   if (file_stream_open(stream, furi_string_get_cstr(nfc_playlist->settings.file_path), FSAM_READ, FSOM_OPEN_EXISTING) && nfc_playlist->settings.file_selected_check) {
+   if (file_stream_open(stream, furi_string_get_cstr(nfc_playlist->settings.file_path), FSAM_READ, FSOM_OPEN_EXISTING) && nfc_playlist->settings.playlist_selected_check) {
       EmulationState = NfcPlaylistEmulationState_Emulating;
       int file_position = 0;
 

+ 2 - 2
scences/file_edit.c

@@ -17,7 +17,7 @@ void nfc_playlist_file_edit_scene_on_enter(void* context) {
       NfcPlaylistMenuSelection_DeletePlaylist,
       nfc_playlist_file_edit_menu_callback,
       nfc_playlist,
-      !nfc_playlist->settings.file_selected_check,
+      !nfc_playlist->settings.playlist_selected_check,
       "No\nplaylist\nselected");
 
    submenu_add_lockable_item(
@@ -26,7 +26,7 @@ void nfc_playlist_file_edit_scene_on_enter(void* context) {
       NfcPlaylistMenuSelection_RenamePlaylist,
       nfc_playlist_file_edit_menu_callback,
       nfc_playlist,
-      !nfc_playlist->settings.file_selected_check,
+      !nfc_playlist->settings.playlist_selected_check,
       "No\nplaylist\nselected");
 
    view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit);

+ 0 - 9
scences/file_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_file_select_scene_on_enter(void* context);
-bool nfc_playlist_file_select_scene_on_event(void* context, SceneManagerEvent event);
-void nfc_playlist_file_select_scene_on_exit(void* context);

+ 11 - 8
scences/main_menu.c

@@ -8,13 +8,16 @@ void nfc_playlist_main_menu_menu_callback(void* context, uint32_t index) {
 
 void nfc_playlist_main_menu_scene_on_enter(void* context) {
    NfcPlaylist* nfc_playlist = context;
-   if (!nfc_playlist->settings.file_selected) {
-      nfc_playlist->settings.file_selected = true;
-      scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileSelect);
+   if (!nfc_playlist->settings.playlist_selected) {
+      nfc_playlist->settings.playlist_selected = true;
+      scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_PlaylistSelect);
       return;
    }
 
-   submenu_set_header(nfc_playlist->submenu, "NFC Playlist");
+   FuriString* tmp_str = furi_string_alloc();
+   furi_string_printf(tmp_str, "NFC Playlist v%s", FAP_VERSION);
+   submenu_set_header(nfc_playlist->submenu, furi_string_get_cstr(tmp_str));
+   furi_string_free(tmp_str);
 
    submenu_add_lockable_item(
       nfc_playlist->submenu,
@@ -22,13 +25,13 @@ void nfc_playlist_main_menu_scene_on_enter(void* context) {
       NfcPlaylistMenuSelection_Start,
       nfc_playlist_main_menu_menu_callback,
       nfc_playlist,
-      !nfc_playlist->settings.file_selected_check,
+      !nfc_playlist->settings.playlist_selected_check,
       "No\nplaylist\nselected");
 
    submenu_add_item(
       nfc_playlist->submenu,
       "Select playlist",
-      NfcPlaylistMenuSelection_FileSelect,
+      NfcPlaylistMenuSelection_PlaylistSelect,
       nfc_playlist_main_menu_menu_callback,
       nfc_playlist);
 
@@ -57,8 +60,8 @@ bool nfc_playlist_main_menu_scene_on_event(void* context, SceneManagerEvent even
             scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_EmulatingPopup);
             consumed = true;
             break;
-         case NfcPlaylistEvent_ShowFileSelect:
-            scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileSelect);
+         case NfcPlaylistEvent_ShowPlaylistSelect:
+            scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_PlaylistSelect);
             consumed = true;
             break;
          case NfcPlaylistEvent_ShowFileEdit:

+ 2 - 2
scences/main_menu.h

@@ -10,14 +10,14 @@ void nfc_playlist_main_menu_scene_on_exit(void* context);
 
 typedef enum {
    NfcPlaylistEvent_ShowEmulatingPopup,
-   NfcPlaylistEvent_ShowFileSelect,
+   NfcPlaylistEvent_ShowPlaylistSelect,
    NfcPlaylistEvent_ShowFileEdit,
    NfcPlaylistEvent_ShowSettings
 } NfcPlaylistMainMenuEvent;
 
 typedef enum {
    NfcPlaylistMenuSelection_Start,
-   NfcPlaylistMenuSelection_FileSelect,
+   NfcPlaylistMenuSelection_PlaylistSelect,
    NfcPlaylistMenuSelection_FileEdit,
    NfcPlaylistMenuSelection_Settings
 } NfcPlaylistMainMenuMenuSelection;

+ 10 - 8
scences/file_select.c → scences/playlist_select.c

@@ -1,13 +1,15 @@
 #include "nfc_playlist.h"
-#include "scences/file_select.h"
+#include "scences/playlist_select.h"
 
-void nfc_playlist_file_select_menu_callback(void* context) {
+void nfc_playlist_playlist_select_menu_callback(void* context) {
    NfcPlaylist* nfc_playlist = context;
-   nfc_playlist->settings.file_selected_check = true;
+   nfc_playlist->settings.playlist_selected_check = true;
+   furi_string_move(nfc_playlist->settings.file_path, nfc_playlist->file_browser_output);
+   furi_string_reset(nfc_playlist->file_browser_output);
    scene_manager_previous_scene(nfc_playlist->scene_manager);
 }
 
-void nfc_playlist_file_select_scene_on_enter(void* context) {
+void nfc_playlist_playlist_select_scene_on_enter(void* context) {
    NfcPlaylist* nfc_playlist = context;
    file_browser_configure(
       nfc_playlist->file_browser,
@@ -17,18 +19,18 @@ void nfc_playlist_file_select_scene_on_enter(void* context) {
       true,
       &I_sub1_10px,
       true);
-   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileSelect);
-   file_browser_set_callback(nfc_playlist->file_browser, nfc_playlist_file_select_menu_callback, nfc_playlist);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_PlaylistSelect);
+   file_browser_set_callback(nfc_playlist->file_browser, nfc_playlist_playlist_select_menu_callback, nfc_playlist);
    file_browser_start(nfc_playlist->file_browser, nfc_playlist->settings.base_file_path);
 }
 
-bool nfc_playlist_file_select_scene_on_event(void* context, SceneManagerEvent event) {
+bool nfc_playlist_playlist_select_scene_on_event(void* context, SceneManagerEvent event) {
    UNUSED(event);
    UNUSED(context);
    return false;
 }
 
-void nfc_playlist_file_select_scene_on_exit(void* context) {
+void nfc_playlist_playlist_select_scene_on_exit(void* context) {
    NfcPlaylist* nfc_playlist = context;
    file_browser_stop(nfc_playlist->file_browser);
 }

+ 9 - 0
scences/playlist_select.h

@@ -0,0 +1,9 @@
+#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);

+ 1 - 6
scences/settings.c

@@ -73,14 +73,9 @@ void nfc_playlist_settings_scene_on_enter(void* context) {
    VariableItem* credits = variable_item_list_add(nfc_playlist->variable_item_list, "acegoal07", 1, NULL, NULL);
    variable_item_set_current_value_text(credits, "Credits");
    
-   furi_string_printf(tmp_str, "\ev%s\e", FAP_VERSION);
-   variable_item_list_add(nfc_playlist->variable_item_list, furi_string_get_cstr(tmp_str), 1, NULL, NULL);
-
    variable_item_list_set_enter_callback(nfc_playlist->variable_item_list, nfc_playlist_settings_menu_callback, nfc_playlist);
-
-   furi_string_free(tmp_str);
-
    view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Settings);
+   furi_string_free(tmp_str);
 }
 
 bool nfc_playlist_settings_scene_on_event(void* context, SceneManagerEvent event) {