acegoal07 1 год назад
Родитель
Сommit
0107074b1d
4 измененных файлов с 20 добавлено и 9 удалено
  1. 3 4
      README.md
  2. 6 4
      scences/file_edit.c
  3. 10 1
      scences/text_input.c
  4. 1 0
      scences/text_input.h

+ 3 - 4
README.md

@@ -12,8 +12,7 @@ All the playlists should be placed in ext/apps_data/nfc_playlist and an example
 An example file can be found in the repository
 
 ## How to build
-This app was design, built and tested using the <a href="https://github.com/Flipper-XFW/Xtreme-Firmware">Xtreme firmware</a> i don't see why it wont work with other firmwares but do keep this in mind when building it with FBT/uFBT
+This app was design, built and tested using the <a href="https://github.com/Flipper-XFW/Xtreme-Firmware">Xtreme firmware</a> so keep that in mind when building the FAP for yourself
 
-## Ideas
-- [X] Add the ability to change playlist
-- [ ] Make it so changed settings are saved (maybe make it so settings can be specified for each playlist changing the settings based on the playlist selected)
+## Known Issues
+- A weird crash after renaming a playlist multiple times

+ 6 - 4
scences/file_edit.c

@@ -37,12 +37,14 @@ void nfc_playlist_file_edit_scene_on_enter(void* context) {
 
    submenu_set_header(nfc_playlist->submenu, "Edit Playlist");
 
-   submenu_add_item(
+   submenu_add_lockable_item(
       nfc_playlist->submenu,
       "Delete Playlist",
       NfcPlaylistMenuSelection_DeletePlaylist,
       nfc_playlist_file_edit_menu_callback,
-      nfc_playlist);
+      nfc_playlist,
+      !nfc_playlist->file_selected_check,
+      "Playlist\nNot\nSelected");
 
    submenu_add_lockable_item(
       nfc_playlist->submenu,
@@ -50,8 +52,8 @@ void nfc_playlist_file_edit_scene_on_enter(void* context) {
       NfcPlaylistMenuSelection_RenamePlaylist,
       nfc_playlist_file_edit_menu_callback,
       nfc_playlist,
-      true,
-      "Under construction");
+      !nfc_playlist->file_selected_check,
+      "Playlist\nNot\nSelected");
 
    view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_FileEdit);
 }

+ 10 - 1
scences/text_input.c

@@ -3,12 +3,21 @@
 
 void nfc_playlist_text_input_menu_callback(void* context) {
    NfcPlaylist* nfc_playlist = context;
+   Storage* storage = furi_record_open(RECORD_STORAGE);
+
+   char path[29] = "/ext/apps_data/nfc_playlist/";
+   int size = (sizeof(nfc_playlist->text_input_data) + sizeof(".txt") + sizeof(path));
+   char new_file_name[size];
+   snprintf(new_file_name, size, "%s%s%s", path, nfc_playlist->text_input_data, ".txt");
+   storage_common_rename(storage, furi_string_get_cstr(nfc_playlist->file_path), new_file_name);
+
+   furi_record_close(RECORD_STORAGE);
+   nfc_playlist->file_path = furi_string_alloc_set_str(new_file_name);
    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);

+ 1 - 0
scences/text_input.h

@@ -1,5 +1,6 @@
 #pragma once
 #include <furi.h>
+#include <string.h>
 #include <gui/gui.h>
 #include <gui/view_dispatcher.h>
 #include <gui/scene_manager.h>