From 3af56c2af841b9cac876773299125b3cb406551b Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 29 Aug 2023 02:22:15 +0200 Subject: [PATCH] Last part for 100% OFW compatile API --- .../main/archive/helpers/archive_browser.c | 2 +- .../services/gui/modules/file_browser_worker.c | 14 ++++++++++++-- .../services/gui/modules/file_browser_worker.h | 4 +++- firmware/targets/f7/api_symbols.csv | 3 ++- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/applications/main/archive/helpers/archive_browser.c b/applications/main/archive/helpers/archive_browser.c index de1c30c21..d0111b363 100644 --- a/applications/main/archive/helpers/archive_browser.c +++ b/applications/main/archive/helpers/archive_browser.c @@ -676,6 +676,6 @@ void archive_refresh_dir(ArchiveBrowserView* browser) { if(current != NULL) { path_extract_basename(furi_string_get_cstr(current->path), str); } - file_browser_worker_folder_refresh(browser->worker, furi_string_get_cstr(str)); + file_browser_worker_folder_refresh_sel(browser->worker, furi_string_get_cstr(str)); furi_string_free(str); } diff --git a/applications/services/gui/modules/file_browser_worker.c b/applications/services/gui/modules/file_browser_worker.c index 991e45f24..9f51bc4d6 100644 --- a/applications/services/gui/modules/file_browser_worker.c +++ b/applications/services/gui/modules/file_browser_worker.c @@ -32,6 +32,8 @@ typedef enum { (WorkerEvtStop | WorkerEvtLoad | WorkerEvtFolderEnter | WorkerEvtFolderExit | \ WorkerEvtFolderRefresh | WorkerEvtConfigChange) +ARRAY_DEF(_idx_last_array, int32_t) // Unused, kept for compatibility + struct BrowserWorker { FuriThread* thread; @@ -39,17 +41,20 @@ struct BrowserWorker { FuriString* path_start; FuriString* path_current; FuriString* path_next; - bool keep_selection; + int32_t _item_sel_idx; // Unused, kept for compatibility uint32_t load_offset; uint32_t load_count; bool skip_assets; bool hide_dot_files; + _idx_last_array_t _idx_last; // Unused, kept for compatibility void* cb_ctx; BrowserWorkerFolderOpenCallback folder_cb; BrowserWorkerListLoadCallback list_load_cb; BrowserWorkerListItemCallback list_item_cb; BrowserWorkerLongLoadCallback long_load_cb; + + bool keep_selection; }; static bool browser_path_is_file(FuriString* path) { @@ -574,7 +579,7 @@ void file_browser_worker_folder_exit(BrowserWorker* browser) { furi_thread_flags_set(furi_thread_get_id(browser->thread), WorkerEvtFolderExit); } -void file_browser_worker_folder_refresh(BrowserWorker* browser, const char* item_name) { +void file_browser_worker_folder_refresh_sel(BrowserWorker* browser, const char* item_name) { furi_assert(browser); if(item_name != NULL) { furi_string_set(browser->path_next, item_name); @@ -584,6 +589,11 @@ void file_browser_worker_folder_refresh(BrowserWorker* browser, const char* item furi_thread_flags_set(furi_thread_get_id(browser->thread), WorkerEvtFolderRefresh); } +void file_browser_worker_folder_refresh(BrowserWorker* browser, int32_t item_idx) { + UNUSED(item_idx); + file_browser_worker_folder_refresh_sel(browser, NULL); +} + void file_browser_worker_load(BrowserWorker* browser, uint32_t offset, uint32_t count) { furi_assert(browser); browser->load_offset = offset; diff --git a/applications/services/gui/modules/file_browser_worker.h b/applications/services/gui/modules/file_browser_worker.h index d73f153d2..430c5065b 100644 --- a/applications/services/gui/modules/file_browser_worker.h +++ b/applications/services/gui/modules/file_browser_worker.h @@ -70,7 +70,9 @@ bool file_browser_worker_is_in_start_folder(BrowserWorker* browser); void file_browser_worker_folder_exit(BrowserWorker* browser); -void file_browser_worker_folder_refresh(BrowserWorker* browser, const char* item_name); +void file_browser_worker_folder_refresh(BrowserWorker* browser, int32_t item_idx); + +void file_browser_worker_folder_refresh_sel(BrowserWorker* browser, const char* item_name); void file_browser_worker_load(BrowserWorker* browser, uint32_t offset, uint32_t count); diff --git a/firmware/targets/f7/api_symbols.csv b/firmware/targets/f7/api_symbols.csv index 2e503f7e3..5cc34faf3 100644 --- a/firmware/targets/f7/api_symbols.csv +++ b/firmware/targets/f7/api_symbols.csv @@ -918,7 +918,8 @@ Function,+,file_browser_stop,void,FileBrowser* Function,+,file_browser_worker_alloc,BrowserWorker*,"FuriString*, const char*, const char*, _Bool, _Bool" Function,+,file_browser_worker_folder_enter,void,"BrowserWorker*, FuriString*, int32_t" Function,+,file_browser_worker_folder_exit,void,BrowserWorker* -Function,+,file_browser_worker_folder_refresh,void,"BrowserWorker*, const char*" +Function,+,file_browser_worker_folder_refresh,void,"BrowserWorker*, int32_t" +Function,+,file_browser_worker_folder_refresh_sel,void,"BrowserWorker*, const char*" Function,+,file_browser_worker_free,void,BrowserWorker* Function,+,file_browser_worker_get_filter_ext,const char*,BrowserWorker* Function,+,file_browser_worker_is_in_start_folder,_Bool,BrowserWorker*