From 1e299c1b74e95ca87f08c251a0f8736354a4f481 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 5 Jun 2023 00:39:52 +0100 Subject: [PATCH] Add hidden files and internal tab settings --- .../main/archive/helpers/archive_browser.c | 16 +++++---- .../xtreme_app_scene_interface_filebrowser.c | 36 +++++++++++++++++++ lib/xtreme/settings.c | 14 +++++++- lib/xtreme/xtreme.h | 2 ++ 4 files changed, 61 insertions(+), 7 deletions(-) diff --git a/applications/main/archive/helpers/archive_browser.c b/applications/main/archive/helpers/archive_browser.c index aaef1c9e5..5c6f486d1 100644 --- a/applications/main/archive/helpers/archive_browser.c +++ b/applications/main/archive/helpers/archive_browser.c @@ -471,10 +471,14 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key) { browser->last_tab_switch_dir = key; - if(key == InputKeyLeft) { - tab = ((tab - 1) + ArchiveTabTotal) % ArchiveTabTotal; - } else { - tab = (tab + 1) % ArchiveTabTotal; + for(int i = 0; i < 2; i++) { + if(key == InputKeyLeft) { + tab = ((tab - 1) + ArchiveTabTotal) % ArchiveTabTotal; + } else { + tab = (tab + 1) % ArchiveTabTotal; + } + if(tab == ArchiveTabInternal && !XTREME_SETTINGS()->show_internal_tab) continue; + break; } browser->is_root = true; @@ -503,14 +507,14 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key) { bool hide_dot_files = !is_browser ? true : tab == ArchiveTabInternal ? false : - !furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug); + !XTREME_SETTINGS()->show_hidden_files; archive_file_browser_set_path( browser, browser->path, archive_get_tab_ext(tab), skip_assets, hide_dot_files); tab_empty = false; // Empty check will be performed later } } - if((tab_empty) && (tab != ArchiveTabBrowser) && (tab != ArchiveTabInternal)) { + if(tab_empty && tab != ArchiveTabBrowser && tab != ArchiveTabInternal) { archive_switch_tab(browser, key); } else { with_view_model( diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_filebrowser.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_filebrowser.c index 2df77cdf3..ed1951626 100644 --- a/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_filebrowser.c +++ b/applications/main/xtreme_app/scenes/xtreme_app_scene_interface_filebrowser.c @@ -2,6 +2,8 @@ enum VarItemListIndex { VarItemListIndexSortDirsFirst, + VarItemListIndexShowHiddenFiles, + VarItemListIndexShowInternalTab, VarItemListIndexFavoriteTimeout, }; @@ -18,6 +20,22 @@ static void xtreme_app_scene_interface_filebrowser_sort_dirs_first_changed(Varia app->save_settings = true; } +static void xtreme_app_scene_interface_filebrowser_show_hidden_files_changed(VariableItem* item) { + XtremeApp* app = variable_item_get_context(item); + bool value = variable_item_get_current_value_index(item); + variable_item_set_current_value_text(item, value ? "ON" : "OFF"); + XTREME_SETTINGS()->show_hidden_files = value; + app->save_settings = true; +} + +static void xtreme_app_scene_interface_filebrowser_show_internal_tab_changed(VariableItem* item) { + XtremeApp* app = variable_item_get_context(item); + bool value = variable_item_get_current_value_index(item); + variable_item_set_current_value_text(item, value ? "ON" : "OFF"); + XTREME_SETTINGS()->show_internal_tab = value; + app->save_settings = true; +} + static void xtreme_app_scene_interface_filebrowser_favorite_timeout_changed(VariableItem* item) { XtremeApp* app = variable_item_get_context(item); uint32_t value = variable_item_get_current_value_index(item); @@ -43,6 +61,24 @@ void xtreme_app_scene_interface_filebrowser_on_enter(void* context) { variable_item_set_current_value_index(item, xtreme_settings->sort_dirs_first); variable_item_set_current_value_text(item, xtreme_settings->sort_dirs_first ? "ON" : "OFF"); + item = variable_item_list_add( + var_item_list, + "Show Hidden Files", + 2, + xtreme_app_scene_interface_filebrowser_show_hidden_files_changed, + app); + variable_item_set_current_value_index(item, xtreme_settings->show_hidden_files); + variable_item_set_current_value_text(item, xtreme_settings->show_hidden_files ? "ON" : "OFF"); + + item = variable_item_list_add( + var_item_list, + "Show Internal Tab", + 2, + xtreme_app_scene_interface_filebrowser_show_internal_tab_changed, + app); + variable_item_set_current_value_index(item, xtreme_settings->show_internal_tab); + variable_item_set_current_value_text(item, xtreme_settings->show_internal_tab ? "ON" : "OFF"); + item = variable_item_list_add( var_item_list, "Favorite Timeout", diff --git a/lib/xtreme/settings.c b/lib/xtreme/settings.c index d69800154..023cbcbc9 100644 --- a/lib/xtreme/settings.c +++ b/lib/xtreme/settings.c @@ -6,7 +6,7 @@ #define TAG "XtremeSettings" XtremeSettings xtreme_settings = { - .asset_pack = "", + .asset_pack = "", // SFW .anim_speed = 100, // 100% .cycle_anims = 0, // Meta.txt .unlock_anims = false, // OFF @@ -24,6 +24,8 @@ XtremeSettings xtreme_settings = { .bar_borders = true, // ON .bar_background = false, // OFF .sort_dirs_first = true, // ON + .show_hidden_files = false, // OFF + .show_internal_tab = false, // OFF .favorite_timeout = 0, // OFF .bad_bt = false, // USB .bad_bt_remember = false, // OFF @@ -117,6 +119,14 @@ void XTREME_SETTINGS_LOAD() { x->sort_dirs_first = b; } flipper_format_rewind(file); + if(flipper_format_read_bool(file, "show_hidden_files", &b, 1)) { + x->show_hidden_files = b; + } + flipper_format_rewind(file); + if(flipper_format_read_bool(file, "show_internal_tab", &b, 1)) { + x->show_internal_tab = b; + } + flipper_format_rewind(file); if(flipper_format_read_uint32(file, "favorite_timeout", &u, 1)) { x->favorite_timeout = CLAMP(u, 60U, 0U); } @@ -174,6 +184,8 @@ void XTREME_SETTINGS_SAVE() { flipper_format_write_bool(file, "bar_borders", &x->bar_borders, 1); flipper_format_write_bool(file, "bar_background", &x->bar_background, 1); flipper_format_write_bool(file, "sort_dirs_first", &x->sort_dirs_first, 1); + flipper_format_write_bool(file, "show_hidden_files", &x->show_hidden_files, 1); + flipper_format_write_bool(file, "show_internal_tab", &x->show_internal_tab, 1); flipper_format_write_uint32(file, "favorite_timeout", &x->favorite_timeout, 1); flipper_format_write_bool(file, "bad_bt", &x->bad_bt, 1); flipper_format_write_bool(file, "bad_bt_remember", &x->bad_bt_remember, 1); diff --git a/lib/xtreme/xtreme.h b/lib/xtreme/xtreme.h index 4a52cd7cf..89a126201 100644 --- a/lib/xtreme/xtreme.h +++ b/lib/xtreme/xtreme.h @@ -33,6 +33,8 @@ typedef struct { bool bar_borders; bool bar_background; bool sort_dirs_first; + bool show_hidden_files; + bool show_internal_tab; uint32_t favorite_timeout; bool bad_bt; bool bad_bt_remember;