Explorar el Código

Rename playlist

- Begins work on rename playlist feature
acegoal07 hace 1 año
padre
commit
9154d4518c
Se han modificado 6 ficheros con 77 adiciones y 6 borrados
  1. 11 3
      nfc_playlist.c
  2. 6 1
      nfc_playlist.h
  3. 2 1
      nfc_playlist_i.h
  4. 19 1
      scences/file_edit.c
  5. 27 0
      scences/text_input.c
  6. 12 0
      scences/text_input.h

+ 11 - 3
nfc_playlist.c

@@ -6,7 +6,8 @@ static void (*const nfc_playlist_scene_on_enter_handlers[])(void*) = {
     nfc_playlist_settings_scene_on_enter,
     nfc_playlist_emulation_scene_on_enter,
     nfc_playlist_file_select_scene_on_enter,
-    nfc_playlist_file_edit_scene_on_enter
+    nfc_playlist_file_edit_scene_on_enter,
+    nfc_playlist_text_input_scene_on_enter
 };
 
 static bool (*const nfc_playlist_scene_on_event_handlers[])(void*, SceneManagerEvent) = {
@@ -14,7 +15,8 @@ static bool (*const nfc_playlist_scene_on_event_handlers[])(void*, SceneManagerE
     nfc_playlist_settings_scene_on_event,
     nfc_playlist_emulation_scene_on_event,
     nfc_playlist_file_select_scene_on_event,
-    nfc_playlist_file_edit_scene_on_event
+    nfc_playlist_file_edit_scene_on_event,
+    nfc_playlist_text_input_scene_on_event
 };
 
 static void (*const nfc_playlist_scene_on_exit_handlers[])(void*) = {
@@ -22,7 +24,8 @@ static void (*const nfc_playlist_scene_on_exit_handlers[])(void*) = {
     nfc_playlist_settings_scene_on_exit,
     nfc_playlist_emulation_scene_on_exit,
     nfc_playlist_file_select_scene_on_exit,
-    nfc_playlist_file_edit_scene_on_exit
+    nfc_playlist_file_edit_scene_on_exit,
+    nfc_playlist_text_input_scene_on_exit
 };
 
 static const SceneManagerHandlers nfc_playlist_scene_manager_handlers = {
@@ -57,6 +60,8 @@ static NfcPlaylist* nfc_playlist_alloc() {
     nfc_playlist->file_selected = false;
     nfc_playlist->file_selected_check = false;
     nfc_playlist->file_browser = file_browser_alloc(nfc_playlist->file_path);
+    nfc_playlist->text_input = text_input_alloc();
+    nfc_playlist->text_input_data = malloc(50);
     nfc_playlist->popup = popup_alloc();
     nfc_playlist->emulate_timeout = default_emulate_timeout;
     nfc_playlist->emulate_delay = default_emulate_delay;
@@ -70,6 +75,7 @@ static NfcPlaylist* nfc_playlist_alloc() {
     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_FileEdit, submenu_get_view(nfc_playlist->submenu));
+    view_dispatcher_add_view(nfc_playlist->view_dispatcher, NfcPlaylistView_TextInput, text_input_get_view(nfc_playlist->text_input));
     return nfc_playlist;
 }
 
@@ -81,10 +87,12 @@ static void nfc_playlist_free(NfcPlaylist* nfc_playlist) {
     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_FileEdit);
+    view_dispatcher_remove_view(nfc_playlist->view_dispatcher, NfcPlaylistView_TextInput);
     view_dispatcher_free(nfc_playlist->view_dispatcher);
     variable_item_list_free(nfc_playlist->variable_item_list);
     submenu_free(nfc_playlist->submenu);
     file_browser_free(nfc_playlist->file_browser);
+    text_input_free(nfc_playlist->text_input);
     popup_free(nfc_playlist->popup);
     furi_record_close(RECORD_NOTIFICATION);
     furi_string_free(nfc_playlist->base_file_path);

+ 6 - 1
nfc_playlist.h

@@ -10,6 +10,7 @@
 #include <gui/modules/variable_item_list.h>
 #include <gui/modules/submenu.h>
 #include <gui/modules/file_browser.h>
+#include <gui/modules/text_input.h>
 #include <notification/notification_messages.h>
 #include <nfc_playlist_worker.h>
 
@@ -18,7 +19,8 @@ typedef enum {
    NfcPlaylistView_Settings,
    NfcPlaylistView_Popup,
    NfcPlaylistView_FileSelect,
-   NfcPlaylistView_FileEdit
+   NfcPlaylistView_FileEdit,
+   NfcPlaylistView_TextInput,
 } NfcPlayScenesView;
 
 typedef enum {
@@ -27,6 +29,7 @@ typedef enum {
    NfcPlaylistScene_EmulatingPopup,
    NfcPlaylistScene_FileSelect,
    NfcPlaylistScene_FileEdit,
+   NfcPlaylistScene_TextInput,
    NfcPlaylistScene_count
 } NfcPlaylistScene;
 
@@ -35,6 +38,7 @@ typedef struct {
    ViewDispatcher* view_dispatcher;
    VariableItemList* variable_item_list;
    FileBrowser* file_browser;
+   TextInput* text_input;
    Submenu* submenu;
    Popup* popup;
    NotificationApp* notification;
@@ -47,6 +51,7 @@ typedef struct {
    uint8_t emulate_delay;
    bool emulate_led_indicator;
    FuriString* file_path;
+   char* text_input_data;
 } NfcPlaylist;
 
 static const int options_emulate_timeout[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

+ 2 - 1
nfc_playlist_i.h

@@ -3,4 +3,5 @@
 #include "scences/settings.h"
 #include "scences/emulation.h"
 #include "scences/file_select.h"
-#include "scences/file_edit.h"
+#include "scences/file_edit.h"
+#include "scences/text_input.h"

+ 19 - 1
scences/file_edit.c

@@ -2,7 +2,9 @@
 #include "scences/file_edit.h"
 
 typedef enum {
-   NfcPlaylistMenuSelection_DeletePlaylist
+   NfcPlaylistMenuSelection_DeletePlaylist,
+   NfcPlaylistMenuSelection_RenamePlaylist,
+   NfcPlaylistMenuSelection_EditList
 } NfcPlaylistMenuSelection;
 
 void nfc_playlist_file_edit_menu_callback(void* context, uint32_t index) {
@@ -17,6 +19,13 @@ void nfc_playlist_file_edit_menu_callback(void* context, uint32_t index) {
          scene_manager_previous_scene(nfc_playlist->scene_manager);
          break;
       }
+      case NfcPlaylistMenuSelection_RenamePlaylist: {
+         scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_TextInput);
+         break;
+      }
+      case NfcPlaylistMenuSelection_EditList: {
+         break;
+      }
       default:
          break;
    }
@@ -35,6 +44,15 @@ void nfc_playlist_file_edit_scene_on_enter(void* context) {
       nfc_playlist_file_edit_menu_callback,
       nfc_playlist);
 
+   submenu_add_lockable_item(
+      nfc_playlist->submenu,
+      "Rename Playlist",
+      NfcPlaylistMenuSelection_RenamePlaylist,
+      nfc_playlist_file_edit_menu_callback,
+      nfc_playlist,
+      true,
+      "Under construction");
+
    view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit);
 }
 

+ 27 - 0
scences/text_input.c

@@ -0,0 +1,27 @@
+#include "nfc_playlist.h"
+#include "scences/text_input.h"
+
+void nfc_playlist_text_input_menu_callback(void* context) {
+   NfcPlaylist* nfc_playlist = context;
+   scene_manager_previous_scene(nfc_playlist->scene_manager);
+}
+
+void nfc_playlist_text_input_scene_on_enter(void* context) {
+   NfcPlaylist* nfc_playlist = 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_text_input_menu_callback, nfc_playlist, nfc_playlist->text_input_data, 50, true);
+   view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_TextInput);
+}
+
+bool nfc_playlist_text_input_scene_on_event(void* context, SceneManagerEvent event) {
+   UNUSED(event);
+   UNUSED(context);
+   return false;
+}
+
+void nfc_playlist_text_input_scene_on_exit(void* context) {
+   NfcPlaylist* nfc_playlist = context;
+   text_input_reset(nfc_playlist->text_input);
+}

+ 12 - 0
scences/text_input.h

@@ -0,0 +1,12 @@
+#pragma once
+#include <furi.h>
+#include <gui/gui.h>
+#include <gui/view_dispatcher.h>
+#include <gui/scene_manager.h>
+#include <gui/modules/file_browser.h>
+#include <gui/modules/text_input.h>
+#include <storage/storage.h>
+
+void nfc_playlist_text_input_scene_on_enter(void* context);
+bool nfc_playlist_text_input_scene_on_event(void* context, SceneManagerEvent event);
+void nfc_playlist_text_input_scene_on_exit(void* context);