diff --git a/lib/I18n/translations/english.yaml b/lib/I18n/translations/english.yaml index f5b80b8e..25b39b34 100644 --- a/lib/I18n/translations/english.yaml +++ b/lib/I18n/translations/english.yaml @@ -111,6 +111,7 @@ STR_SCREEN_MARGIN: "Reader Screen Margin" STR_PARA_ALIGNMENT: "Reader Paragraph Alignment" STR_HYPHENATION: "Hyphenation" STR_TIME_TO_SLEEP: "Time to Sleep" +STR_SHOW_HIDDEN_FILES: "Show Hidden Files" STR_REFRESH_FREQ: "Refresh Frequency" STR_CALIBRE_SETTINGS: "Calibre Settings" STR_KOREADER_SYNC: "KOReader Sync" diff --git a/src/CrossPointSettings.h b/src/CrossPointSettings.h index 5ba7bde2..00b11962 100644 --- a/src/CrossPointSettings.h +++ b/src/CrossPointSettings.h @@ -192,6 +192,8 @@ class CrossPointSettings { uint8_t fadingFix = 0; // Use book's embedded CSS styles for EPUB rendering (1 = enabled, 0 = disabled) uint8_t embeddedStyle = 1; + // Show hidden files/directories (starting with '.') in the file browser (0 = hidden, 1 = show) + uint8_t showHiddenFiles = 0; ~CrossPointSettings() = default; diff --git a/src/SettingsList.h b/src/SettingsList.h index c10d58c6..1939a1c8 100644 --- a/src/SettingsList.h +++ b/src/SettingsList.h @@ -75,6 +75,8 @@ inline const std::vector& getSettingsList() { SettingInfo::Enum(StrId::STR_TIME_TO_SLEEP, &CrossPointSettings::sleepTimeout, {StrId::STR_MIN_1, StrId::STR_MIN_5, StrId::STR_MIN_10, StrId::STR_MIN_15, StrId::STR_MIN_30}, "sleepTimeout", StrId::STR_CAT_SYSTEM), + SettingInfo::Toggle(StrId::STR_SHOW_HIDDEN_FILES, &CrossPointSettings::showHiddenFiles, "showHiddenFiles", + StrId::STR_CAT_SYSTEM), // --- KOReader Sync (web-only, uses KOReaderCredentialStore) --- SettingInfo::DynamicString( diff --git a/src/activities/home/FileBrowserActivity.cpp b/src/activities/home/FileBrowserActivity.cpp index 1e394d14..c33f0fe5 100644 --- a/src/activities/home/FileBrowserActivity.cpp +++ b/src/activities/home/FileBrowserActivity.cpp @@ -8,11 +8,13 @@ #include #include "../util/ConfirmationActivity.h" +#include "CrossPointSettings.h" #include "MappedInputManager.h" #include "components/UITheme.h" #include "fontIds.h" #include "util/StringUtils.h" + namespace { constexpr unsigned long GO_HOME_MS = 1000; } // namespace @@ -83,7 +85,7 @@ void FileBrowserActivity::loadFiles() { char name[500]; for (auto file = root.openNextFile(); file; file = root.openNextFile()) { file.getName(name, sizeof(name)); - if (name[0] == '.' || strcmp(name, "System Volume Information") == 0) { + if ((!SETTINGS.showHiddenFiles && name[0] == '.') || strcmp(name, "System Volume Information") == 0) { file.close(); continue; } diff --git a/src/network/CrossPointWebServer.cpp b/src/network/CrossPointWebServer.cpp index 5578c59e..2e58b9dc 100644 --- a/src/network/CrossPointWebServer.cpp +++ b/src/network/CrossPointWebServer.cpp @@ -355,7 +355,7 @@ void CrossPointWebServer::scanFiles(const char* path, const std::function