acegoal07 1 год назад
Родитель
Сommit
8c94d965ee
4 измененных файлов с 15 добавлено и 9 удалено
  1. 1 1
      README.md
  2. 1 1
      nfc_playlist.c
  3. 1 1
      nfc_playlist.h
  4. 12 6
      scences/text_input.c

+ 1 - 1
README.md

@@ -15,4 +15,4 @@ An example file can be found in the repository
 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
 
 ## Known Issues
-- A weird crash after renaming a playlist multiple times
+- A weird freeze which occurs when trying to rename a playlist (occurs randomly doesn't happen when renaming it the first time)

+ 1 - 1
nfc_playlist.c

@@ -61,7 +61,6 @@ static NfcPlaylist* nfc_playlist_alloc() {
     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;
@@ -97,6 +96,7 @@ static void nfc_playlist_free(NfcPlaylist* nfc_playlist) {
     furi_record_close(RECORD_NOTIFICATION);
     furi_string_free(nfc_playlist->base_file_path);
     furi_string_free(nfc_playlist->file_path);
+    free(nfc_playlist->playlist_name);
     free(nfc_playlist);
 }
 

+ 1 - 1
nfc_playlist.h

@@ -51,7 +51,7 @@ typedef struct {
    uint8_t emulate_delay;
    bool emulate_led_indicator;
    FuriString* file_path;
-   char* text_input_data;
+   char* playlist_name;
 } NfcPlaylist;
 
 static const int options_emulate_timeout[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

+ 12 - 6
scences/text_input.c

@@ -5,22 +5,28 @@ 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");
+   char path[28] = "/ext/apps_data/nfc_playlist/";
+   
+   int size = (strlen(nfc_playlist->playlist_name) + strlen(".txt") + strlen(path) + 1);
+
+   char* new_file_name = (char*)malloc(size);
+   snprintf(new_file_name, size, "%s%s%s", path, nfc_playlist->playlist_name, ".txt");
    storage_common_rename(storage, furi_string_get_cstr(nfc_playlist->file_path), new_file_name);
+   nfc_playlist->file_path = furi_string_alloc_set_str(new_file_name);
 
+   free(new_file_name);
+   free(nfc_playlist->playlist_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;
+   nfc_playlist->playlist_name = (char*)malloc(50);
    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);
+   text_input_set_result_callback(nfc_playlist->text_input, nfc_playlist_text_input_menu_callback, nfc_playlist, nfc_playlist->playlist_name, 50, true);
    view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_TextInput);
 }