Archive: dont start browser worker on favourites tab (#1628)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
0a6d775fa7
commit
cfc0383b96
@ -77,14 +77,24 @@ static void archive_long_load_cb(void* context) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void archive_file_browser_set_callbacks(ArchiveBrowserView* browser) {
|
static void archive_file_browser_set_path(
|
||||||
|
ArchiveBrowserView* browser,
|
||||||
|
string_t path,
|
||||||
|
const char* filter_ext,
|
||||||
|
bool skip_assets) {
|
||||||
furi_assert(browser);
|
furi_assert(browser);
|
||||||
|
if(!browser->worker_running) {
|
||||||
|
browser->worker = file_browser_worker_alloc(path, filter_ext, skip_assets);
|
||||||
file_browser_worker_set_callback_context(browser->worker, browser);
|
file_browser_worker_set_callback_context(browser->worker, browser);
|
||||||
file_browser_worker_set_folder_callback(browser->worker, archive_folder_open_cb);
|
file_browser_worker_set_folder_callback(browser->worker, archive_folder_open_cb);
|
||||||
file_browser_worker_set_list_callback(browser->worker, archive_list_load_cb);
|
file_browser_worker_set_list_callback(browser->worker, archive_list_load_cb);
|
||||||
file_browser_worker_set_item_callback(browser->worker, archive_list_item_cb);
|
file_browser_worker_set_item_callback(browser->worker, archive_list_item_cb);
|
||||||
file_browser_worker_set_long_load_callback(browser->worker, archive_long_load_cb);
|
file_browser_worker_set_long_load_callback(browser->worker, archive_long_load_cb);
|
||||||
|
browser->worker_running = true;
|
||||||
|
} else {
|
||||||
|
furi_assert(browser->worker);
|
||||||
|
file_browser_worker_set_config(browser->worker, path, filter_ext, skip_assets);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool archive_is_item_in_array(ArchiveBrowserViewModel* model, uint32_t idx) {
|
bool archive_is_item_in_array(ArchiveBrowserViewModel* model, uint32_t idx) {
|
||||||
@ -438,8 +448,8 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key) {
|
|||||||
tab = archive_get_tab(browser);
|
tab = archive_get_tab(browser);
|
||||||
if(archive_is_dir_exists(browser->path)) {
|
if(archive_is_dir_exists(browser->path)) {
|
||||||
bool skip_assets = (strcmp(archive_get_tab_ext(tab), "*") == 0) ? false : true;
|
bool skip_assets = (strcmp(archive_get_tab_ext(tab), "*") == 0) ? false : true;
|
||||||
file_browser_worker_set_config(
|
archive_file_browser_set_path(
|
||||||
browser->worker, browser->path, archive_get_tab_ext(tab), skip_assets);
|
browser, browser->path, archive_get_tab_ext(tab), skip_assets);
|
||||||
tab_empty = false; // Empty check will be performed later
|
tab_empty = false; // Empty check will be performed later
|
||||||
} else {
|
} else {
|
||||||
tab_empty = true;
|
tab_empty = true;
|
||||||
|
@ -87,4 +87,3 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key);
|
|||||||
void archive_enter_dir(ArchiveBrowserView* browser, string_t name);
|
void archive_enter_dir(ArchiveBrowserView* browser, string_t name);
|
||||||
void archive_leave_dir(ArchiveBrowserView* browser);
|
void archive_leave_dir(ArchiveBrowserView* browser);
|
||||||
void archive_refresh_dir(ArchiveBrowserView* browser);
|
void archive_refresh_dir(ArchiveBrowserView* browser);
|
||||||
void archive_file_browser_set_callbacks(ArchiveBrowserView* browser);
|
|
||||||
|
@ -370,18 +370,15 @@ ArchiveBrowserView* browser_alloc() {
|
|||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
browser->worker = file_browser_worker_alloc(browser->path, "*", false);
|
|
||||||
archive_file_browser_set_callbacks(browser);
|
|
||||||
|
|
||||||
file_browser_worker_set_callback_context(browser->worker, browser);
|
|
||||||
|
|
||||||
return browser;
|
return browser;
|
||||||
}
|
}
|
||||||
|
|
||||||
void browser_free(ArchiveBrowserView* browser) {
|
void browser_free(ArchiveBrowserView* browser) {
|
||||||
furi_assert(browser);
|
furi_assert(browser);
|
||||||
|
|
||||||
|
if(browser->worker_running) {
|
||||||
file_browser_worker_free(browser->worker);
|
file_browser_worker_free(browser->worker);
|
||||||
|
}
|
||||||
|
|
||||||
with_view_model(
|
with_view_model(
|
||||||
browser->view, (ArchiveBrowserViewModel * model) {
|
browser->view, (ArchiveBrowserViewModel * model) {
|
||||||
|
@ -74,6 +74,7 @@ typedef enum {
|
|||||||
struct ArchiveBrowserView {
|
struct ArchiveBrowserView {
|
||||||
View* view;
|
View* view;
|
||||||
BrowserWorker* worker;
|
BrowserWorker* worker;
|
||||||
|
bool worker_running;
|
||||||
ArchiveBrowserViewCallback callback;
|
ArchiveBrowserViewCallback callback;
|
||||||
void* context;
|
void* context;
|
||||||
string_t path;
|
string_t path;
|
||||||
|
Loading…
Reference in New Issue
Block a user