[FL-3008], [FL-2734], [FL-2766], [FL-2898] NFC bug fixes (#2098)
* nfc: rework mf classic update * nfc: rename cache folder to .cache * nfc: fix ATQA order bytes in nfc files * file browser: add hide dot files option * nfc: fix iso-14443-4 uid cards emulation * nfc: fix unit tests Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
@@ -84,6 +84,7 @@ struct FileBrowser {
|
||||
BrowserWorker* worker;
|
||||
const char* ext_filter;
|
||||
bool skip_assets;
|
||||
bool hide_dot_files;
|
||||
bool hide_ext;
|
||||
|
||||
FileBrowserCallback callback;
|
||||
@@ -163,6 +164,7 @@ void file_browser_configure(
|
||||
FileBrowser* browser,
|
||||
const char* extension,
|
||||
bool skip_assets,
|
||||
bool hide_dot_files,
|
||||
const Icon* file_icon,
|
||||
bool hide_ext) {
|
||||
furi_assert(browser);
|
||||
@@ -170,6 +172,7 @@ void file_browser_configure(
|
||||
browser->ext_filter = extension;
|
||||
browser->skip_assets = skip_assets;
|
||||
browser->hide_ext = hide_ext;
|
||||
browser->hide_dot_files = hide_dot_files;
|
||||
|
||||
with_view_model(
|
||||
browser->view,
|
||||
@@ -183,7 +186,8 @@ void file_browser_configure(
|
||||
|
||||
void file_browser_start(FileBrowser* browser, FuriString* path) {
|
||||
furi_assert(browser);
|
||||
browser->worker = file_browser_worker_alloc(path, browser->ext_filter, browser->skip_assets);
|
||||
browser->worker = file_browser_worker_alloc(
|
||||
path, browser->ext_filter, browser->skip_assets, browser->hide_dot_files);
|
||||
file_browser_worker_set_callback_context(browser->worker, browser);
|
||||
file_browser_worker_set_folder_callback(browser->worker, browser_folder_open_cb);
|
||||
file_browser_worker_set_list_callback(browser->worker, browser_list_load_cb);
|
||||
|
@@ -30,6 +30,7 @@ void file_browser_configure(
|
||||
FileBrowser* browser,
|
||||
const char* extension,
|
||||
bool skip_assets,
|
||||
bool hide_dot_files,
|
||||
const Icon* file_icon,
|
||||
bool hide_ext);
|
||||
|
||||
|
@@ -42,6 +42,7 @@ struct BrowserWorker {
|
||||
uint32_t load_offset;
|
||||
uint32_t load_count;
|
||||
bool skip_assets;
|
||||
bool hide_dot_files;
|
||||
idx_last_array_t idx_last;
|
||||
|
||||
void* cb_ctx;
|
||||
@@ -76,6 +77,13 @@ static bool browser_path_trim(FuriString* path) {
|
||||
}
|
||||
|
||||
static bool browser_filter_by_name(BrowserWorker* browser, FuriString* name, bool is_folder) {
|
||||
// Skip dot files if enabled
|
||||
if(browser->hide_dot_files) {
|
||||
if(furi_string_start_with_str(name, ".")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(is_folder) {
|
||||
// Skip assets folders (if enabled)
|
||||
if(browser->skip_assets) {
|
||||
@@ -361,14 +369,18 @@ static int32_t browser_worker(void* context) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
BrowserWorker*
|
||||
file_browser_worker_alloc(FuriString* path, const char* filter_ext, bool skip_assets) {
|
||||
BrowserWorker* file_browser_worker_alloc(
|
||||
FuriString* path,
|
||||
const char* filter_ext,
|
||||
bool skip_assets,
|
||||
bool hide_dot_files) {
|
||||
BrowserWorker* browser = malloc(sizeof(BrowserWorker)); //-V773
|
||||
|
||||
idx_last_array_init(browser->idx_last);
|
||||
|
||||
browser->filter_extension = furi_string_alloc_set(filter_ext);
|
||||
browser->skip_assets = skip_assets;
|
||||
browser->hide_dot_files = hide_dot_files;
|
||||
browser->path_start = furi_string_alloc_set(path);
|
||||
browser->path_current = furi_string_alloc_set(path);
|
||||
browser->path_next = furi_string_alloc_set(path);
|
||||
@@ -437,11 +449,13 @@ void file_browser_worker_set_config(
|
||||
BrowserWorker* browser,
|
||||
FuriString* path,
|
||||
const char* filter_ext,
|
||||
bool skip_assets) {
|
||||
bool skip_assets,
|
||||
bool hide_dot_files) {
|
||||
furi_assert(browser);
|
||||
furi_string_set(browser->path_next, path);
|
||||
furi_string_set(browser->filter_extension, filter_ext);
|
||||
browser->skip_assets = skip_assets;
|
||||
browser->hide_dot_files = hide_dot_files;
|
||||
furi_thread_flags_set(furi_thread_get_id(browser->thread), WorkerEvtConfigChange);
|
||||
}
|
||||
|
||||
|
@@ -21,8 +21,11 @@ typedef void (*BrowserWorkerListItemCallback)(
|
||||
bool is_last);
|
||||
typedef void (*BrowserWorkerLongLoadCallback)(void* context);
|
||||
|
||||
BrowserWorker*
|
||||
file_browser_worker_alloc(FuriString* path, const char* filter_ext, bool skip_assets);
|
||||
BrowserWorker* file_browser_worker_alloc(
|
||||
FuriString* path,
|
||||
const char* filter_ext,
|
||||
bool skip_assets,
|
||||
bool hide_dot_files);
|
||||
|
||||
void file_browser_worker_free(BrowserWorker* browser);
|
||||
|
||||
@@ -48,7 +51,8 @@ void file_browser_worker_set_config(
|
||||
BrowserWorker* browser,
|
||||
FuriString* path,
|
||||
const char* filter_ext,
|
||||
bool skip_assets);
|
||||
bool skip_assets,
|
||||
bool hide_dot_files);
|
||||
|
||||
void file_browser_worker_folder_enter(BrowserWorker* browser, FuriString* path, int32_t item_idx);
|
||||
|
||||
|
Reference in New Issue
Block a user