#include #include namespace scwx { namespace qt { namespace settings { static const std::string logPrefix_ = "scwx::qt::settings::general_settings"; class GeneralSettingsImpl { public: explicit GeneralSettingsImpl() { debugEnabled_.SetDefault(false); defaultRadarSite_.SetDefault("KLSX"); fontSizes_.SetDefault({16}); gridWidth_.SetDefault(1); gridHeight_.SetDefault(1); mapboxApiKey_.SetDefault("?"); updateNotificationsEnabled_.SetDefault(true); fontSizes_.SetElementMinimum(1); fontSizes_.SetElementMaximum(72); fontSizes_.SetValidator([](const std::vector& value) { return !value.empty(); }); gridWidth_.SetMinimum(1); gridWidth_.SetMaximum(2); gridHeight_.SetMinimum(1); gridHeight_.SetMaximum(2); mapboxApiKey_.SetValidator([](const std::string& value) { return !value.empty(); }); } ~GeneralSettingsImpl() {} SettingsVariable debugEnabled_ {"debug_enabled"}; SettingsVariable defaultRadarSite_ {"default_radar_site"}; SettingsContainer> fontSizes_ {"font_sizes"}; SettingsVariable gridWidth_ {"grid_width"}; SettingsVariable gridHeight_ {"grid_height"}; SettingsVariable mapboxApiKey_ {"mapbox_api_key"}; SettingsVariable updateNotificationsEnabled_ {"update_notifications"}; }; GeneralSettings::GeneralSettings() : SettingsCategory("general"), p(std::make_unique()) { RegisterVariables({&p->debugEnabled_, &p->defaultRadarSite_, &p->fontSizes_, &p->gridWidth_, &p->gridHeight_, &p->mapboxApiKey_, &p->updateNotificationsEnabled_}); SetDefaults(); } GeneralSettings::~GeneralSettings() = default; GeneralSettings::GeneralSettings(GeneralSettings&&) noexcept = default; GeneralSettings& GeneralSettings::operator=(GeneralSettings&&) noexcept = default; SettingsVariable& GeneralSettings::debug_enabled() const { return p->debugEnabled_; } SettingsVariable& GeneralSettings::default_radar_site() const { return p->defaultRadarSite_; } SettingsContainer>& GeneralSettings::font_sizes() const { return p->fontSizes_; } SettingsVariable& GeneralSettings::grid_height() const { return p->gridHeight_; } SettingsVariable& GeneralSettings::grid_width() const { return p->gridWidth_; } SettingsVariable& GeneralSettings::mapbox_api_key() const { return p->mapboxApiKey_; } SettingsVariable& GeneralSettings::update_notifications_enabled() const { return p->updateNotificationsEnabled_; } bool operator==(const GeneralSettings& lhs, const GeneralSettings& rhs) { return (lhs.p->debugEnabled_ == rhs.p->debugEnabled_ && lhs.p->defaultRadarSite_ == rhs.p->defaultRadarSite_ && lhs.p->fontSizes_ == rhs.p->fontSizes_ && lhs.p->gridWidth_ == rhs.p->gridWidth_ && lhs.p->gridHeight_ == rhs.p->gridHeight_ && lhs.p->mapboxApiKey_ == rhs.p->mapboxApiKey_ && lhs.p->updateNotificationsEnabled_ == rhs.p->updateNotificationsEnabled_); } } // namespace settings } // namespace qt } // namespace scwx