diff --git a/src/SettingsList.h b/src/SettingsList.h index 346932ba..12cbf0be 100644 --- a/src/SettingsList.h +++ b/src/SettingsList.h @@ -40,11 +40,11 @@ inline std::vector getSettingsList() { SettingInfo::Enum("refreshFrequency", "Refresh Frequency", &CrossPointSettings::refreshFrequency, {"1 page", "5 pages", "10 pages", "15 pages", "30 pages"}), SettingInfo::String("opdsServerUrl", "Calibre Web URL", SETTINGS.opdsServerUrl, - sizeof(SETTINGS.opdsServerUrl) - 1), + sizeof(SETTINGS.opdsServerUrl) - 1, true), SettingInfo::String("calibreUsername", "Calibre Username", SETTINGS.calibreUsername, - sizeof(SETTINGS.calibreUsername) - 1), + sizeof(SETTINGS.calibreUsername) - 1, true), SettingInfo::String("calibrePassword", "Calibre Password", SETTINGS.calibrePassword, - sizeof(SETTINGS.calibrePassword) - 1), + sizeof(SETTINGS.calibrePassword) - 1, true), SettingInfo::Action("Calibre Settings"), SettingInfo::Action("Check for updates"), }; diff --git a/src/activities/settings/SettingsActivity.cpp b/src/activities/settings/SettingsActivity.cpp index 42e5b100..813b6f81 100644 --- a/src/activities/settings/SettingsActivity.cpp +++ b/src/activities/settings/SettingsActivity.cpp @@ -15,8 +15,16 @@ // Get settings list from shared source (lazily initialized to avoid static init issues) namespace { const std::vector& getSettings() { - static const std::vector settingsList = getSettingsList(); - return settingsList; + static std::vector filteredSettings = []() { + std::vector filtered; + for (const auto& setting : getSettingsList()) { + if (!setting.hideFromDeviceUI) { + filtered.push_back(setting); + } + } + return filtered; + }(); + return filteredSettings; } } // namespace diff --git a/src/activities/settings/SettingsActivity.h b/src/activities/settings/SettingsActivity.h index 66b88d9d..8ee982c3 100644 --- a/src/activities/settings/SettingsActivity.h +++ b/src/activities/settings/SettingsActivity.h @@ -21,6 +21,7 @@ struct SettingInfo { uint8_t CrossPointSettings::* valuePtr; // Pointer to member in CrossPointSettings (for TOGGLE/ENUM/VALUE) char* stringPtr; // Pointer to char array (for STRING type) size_t stringMaxLen; // Max length for STRING type + bool hideFromDeviceUI; // Hide from device settings menu (but show in web API) std::vector enumValues; struct ValueRange { @@ -33,25 +34,25 @@ struct SettingInfo { // Static constructors static SettingInfo Toggle(const char* key, const char* name, uint8_t CrossPointSettings::* ptr) { - return {key, name, SettingType::TOGGLE, ptr, nullptr, 0, {}, {}}; + return {key, name, SettingType::TOGGLE, ptr, nullptr, 0, false, {}, {}}; } static SettingInfo Enum(const char* key, const char* name, uint8_t CrossPointSettings::* ptr, std::vector values) { - return {key, name, SettingType::ENUM, ptr, nullptr, 0, std::move(values), {}}; + return {key, name, SettingType::ENUM, ptr, nullptr, 0, false, std::move(values), {}}; } static SettingInfo Action(const char* name) { - return {nullptr, name, SettingType::ACTION, nullptr, nullptr, 0, {}, {}}; + return {nullptr, name, SettingType::ACTION, nullptr, nullptr, 0, false, {}, {}}; } static SettingInfo Value(const char* key, const char* name, uint8_t CrossPointSettings::* ptr, const ValueRange valueRange) { - return {key, name, SettingType::VALUE, ptr, nullptr, 0, {}, valueRange}; + return {key, name, SettingType::VALUE, ptr, nullptr, 0, false, {}, valueRange}; } - static SettingInfo String(const char* key, const char* name, char* ptr, size_t maxLen) { - return {key, name, SettingType::STRING, nullptr, ptr, maxLen, {}, {}}; + static SettingInfo String(const char* key, const char* name, char* ptr, size_t maxLen, bool hideFromDeviceUI = false) { + return {key, name, SettingType::STRING, nullptr, ptr, maxLen, hideFromDeviceUI, {}, {}}; } };