diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 4fff5ca0..756ca182 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -7,13 +7,14 @@ #include #include #include -#include #include #include #include #include #include #include +#include +#include #include #include #include @@ -89,10 +90,8 @@ public: elevationButtonsChanged_ {false}, resizeElevationButtons_ {false} { - mapProvider_ = - map::GetMapProvider(manager::SettingsManager::general_settings() - .map_provider() - .GetValue()); + mapProvider_ = map::GetMapProvider( + settings::GeneralSettings::Instance().map_provider().GetValue()); const map::MapProviderInfo& mapProviderInfo = map::GetMapProviderInfo(mapProvider_); @@ -230,7 +229,7 @@ MainWindow::MainWindow(QWidget* parent) : ui->actionAlerts->setVisible(false); ui->menuDebug->menuAction()->setVisible( - manager::SettingsManager::general_settings().debug_enabled().GetValue()); + settings::GeneralSettings::Instance().debug_enabled().GetValue()); // Configure Resource Explorer Dock ui->resourceExplorerDock->setVisible(false); @@ -306,7 +305,7 @@ MainWindow::MainWindow(QWidget* parent) : // Update Dialog p->updateDialog_ = new ui::UpdateDialog(this); - auto& mapSettings = manager::SettingsManager::map_settings(); + auto& mapSettings = settings::MapSettings::Instance(); for (size_t i = 0; i < p->maps_.size(); i++) { p->SelectRadarProduct(p->maps_.at(i), @@ -582,7 +581,7 @@ void MainWindow::on_resourceTreeView_doubleClicked(const QModelIndex& index) void MainWindowImpl::AsyncSetup() { - auto& generalSettings = manager::SettingsManager::general_settings(); + auto& generalSettings = settings::GeneralSettings::Instance(); // Check for updates if (generalSettings.update_notifications_enabled().GetValue()) @@ -595,7 +594,7 @@ void MainWindowImpl::AsyncSetup() void MainWindowImpl::ConfigureMapLayout() { - auto& generalSettings = manager::SettingsManager::general_settings(); + auto& generalSettings = settings::GeneralSettings::Instance(); const int64_t gridWidth = generalSettings.grid_width().GetValue(); const int64_t gridHeight = generalSettings.grid_height().GetValue(); @@ -646,7 +645,7 @@ void MainWindowImpl::ConfigureMapLayout() void MainWindowImpl::ConfigureMapStyles() { const auto& mapProviderInfo = map::GetMapProviderInfo(mapProvider_); - auto& mapSettings = manager::SettingsManager::map_settings(); + auto& mapSettings = settings::MapSettings::Instance(); for (std::size_t i = 0; i < maps_.size(); i++) { @@ -897,8 +896,7 @@ void MainWindowImpl::ConnectOtherSignals() { if (maps_[i] == activeMap_) { - auto& mapSettings = - manager::SettingsManager::map_settings(); + auto& mapSettings = settings::MapSettings::Instance(); mapSettings.map_style(i).StageValue(text.toStdString()); break; } @@ -1075,7 +1073,7 @@ void MainWindowImpl::UpdateMapStyle(const std::string& styleName) { if (maps_[i] == activeMap_) { - auto& mapSettings = manager::SettingsManager::map_settings(); + auto& mapSettings = settings::MapSettings::Instance(); mapSettings.map_style(i).StageValue(styleName); break; } diff --git a/scwx-qt/source/scwx/qt/manager/settings_manager.cpp b/scwx-qt/source/scwx/qt/manager/settings_manager.cpp index 7c973ca4..1a2f6c04 100644 --- a/scwx-qt/source/scwx/qt/manager/settings_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/settings_manager.cpp @@ -1,5 +1,8 @@ #include #include +#include +#include +#include #include #include #include @@ -96,8 +99,8 @@ void Shutdown() { bool dataChanged = false; - dataChanged |= general_settings().Shutdown(); - dataChanged |= map_settings().Shutdown(); + dataChanged |= settings::GeneralSettings::Instance().Shutdown(); + dataChanged |= settings::MapSettings::Instance().Shutdown(); dataChanged |= settings::UiSettings::Instance().Shutdown(); if (dataChanged) @@ -106,31 +109,13 @@ void Shutdown() } } -settings::GeneralSettings& general_settings() -{ - static settings::GeneralSettings generalSettings_; - return generalSettings_; -} - -settings::MapSettings& map_settings() -{ - static settings::MapSettings mapSettings_; - return mapSettings_; -} - -settings::PaletteSettings& palette_settings() -{ - static settings::PaletteSettings paletteSettings_; - return paletteSettings_; -} - static boost::json::value ConvertSettingsToJson() { boost::json::object settingsJson; - general_settings().WriteJson(settingsJson); - map_settings().WriteJson(settingsJson); - palette_settings().WriteJson(settingsJson); + settings::GeneralSettings::Instance().WriteJson(settingsJson); + settings::MapSettings::Instance().WriteJson(settingsJson); + settings::PaletteSettings::Instance().WriteJson(settingsJson); settings::TextSettings::Instance().WriteJson(settingsJson); settings::UiSettings::Instance().WriteJson(settingsJson); @@ -141,9 +126,9 @@ static void GenerateDefaultSettings() { logger_->info("Generating default settings"); - general_settings().SetDefaults(); - map_settings().SetDefaults(); - palette_settings().SetDefaults(); + settings::GeneralSettings::Instance().SetDefaults(); + settings::MapSettings::Instance().SetDefaults(); + settings::PaletteSettings::Instance().SetDefaults(); settings::TextSettings::Instance().SetDefaults(); settings::UiSettings::Instance().SetDefaults(); } @@ -154,9 +139,9 @@ static bool LoadSettings(const boost::json::object& settingsJson) bool jsonDirty = false; - jsonDirty |= !general_settings().ReadJson(settingsJson); - jsonDirty |= !map_settings().ReadJson(settingsJson); - jsonDirty |= !palette_settings().ReadJson(settingsJson); + jsonDirty |= !settings::GeneralSettings::Instance().ReadJson(settingsJson); + jsonDirty |= !settings::MapSettings::Instance().ReadJson(settingsJson); + jsonDirty |= !settings::PaletteSettings::Instance().ReadJson(settingsJson); jsonDirty |= !settings::TextSettings::Instance().ReadJson(settingsJson); jsonDirty |= !settings::UiSettings::Instance().ReadJson(settingsJson); @@ -169,7 +154,7 @@ static void ValidateSettings() bool settingsChanged = false; - auto& generalSettings = general_settings(); + auto& generalSettings = settings::GeneralSettings::Instance(); // Validate map provider std::string mapProviderName = generalSettings.map_provider().GetValue(); diff --git a/scwx-qt/source/scwx/qt/manager/settings_manager.hpp b/scwx-qt/source/scwx/qt/manager/settings_manager.hpp index ed05ca1e..5cc17b19 100644 --- a/scwx-qt/source/scwx/qt/manager/settings_manager.hpp +++ b/scwx-qt/source/scwx/qt/manager/settings_manager.hpp @@ -1,8 +1,6 @@ #pragma once -#include -#include -#include +#include namespace scwx { @@ -18,10 +16,6 @@ void ReadSettings(const std::string& settingsPath); void SaveSettings(); void Shutdown(); -settings::GeneralSettings& general_settings(); -settings::MapSettings& map_settings(); -settings::PaletteSettings& palette_settings(); - } // namespace SettingsManager } // namespace manager } // namespace qt diff --git a/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp b/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp index 8e79a552..f7fc3f48 100644 --- a/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp @@ -2,7 +2,7 @@ #include #include -#include +#include #include #include #include @@ -39,7 +39,7 @@ class TimelineManager::Impl public: explicit Impl(TimelineManager* self) : self_ {self} { - auto& generalSettings = SettingsManager::general_settings(); + auto& generalSettings = settings::GeneralSettings::Instance(); loopDelay_ = std::chrono::milliseconds(generalSettings.loop_delay().GetValue()); diff --git a/scwx-qt/source/scwx/qt/map/alert_layer.cpp b/scwx-qt/source/scwx/qt/map/alert_layer.cpp index f769231c..044cfb00 100644 --- a/scwx-qt/source/scwx/qt/map/alert_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/alert_layer.cpp @@ -1,6 +1,6 @@ #include -#include #include +#include #include #include #include @@ -394,7 +394,7 @@ static void AddAlertLayer(std::shared_ptr map, const QString& beforeLayer) { settings::PaletteSettings& paletteSettings = - manager::SettingsManager::palette_settings(); + settings::PaletteSettings::Instance(); QString sourceId = GetSourceId(phenomenon, alertActive); QString idSuffix = GetSuffix(phenomenon, alertActive); diff --git a/scwx-qt/source/scwx/qt/map/map_provider.cpp b/scwx-qt/source/scwx/qt/map/map_provider.cpp index 2a431614..df4bba08 100644 --- a/scwx-qt/source/scwx/qt/map/map_provider.cpp +++ b/scwx-qt/source/scwx/qt/map/map_provider.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include @@ -128,12 +128,10 @@ std::string GetMapProviderApiKey(MapProvider mapProvider) switch (mapProvider) { case MapProvider::Mapbox: - return manager::SettingsManager::general_settings() - .mapbox_api_key() - .GetValue(); + return settings::GeneralSettings::Instance().mapbox_api_key().GetValue(); case MapProvider::MapTiler: - return manager::SettingsManager::general_settings() + return settings::GeneralSettings::Instance() .maptiler_api_key() .GetValue(); diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index 96aca7a2..adfcc467 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include #include @@ -13,6 +12,8 @@ #include #include #include +#include +#include #include #include #include @@ -81,8 +82,7 @@ public: prevBearing_ {0.0}, prevPitch_ {0.0} { - auto& generalSettings = - scwx::qt::manager::SettingsManager::general_settings(); + auto& generalSettings = settings::GeneralSettings::Instance(); SetRadarSite(generalSettings.default_radar_site().GetValue()); @@ -1227,7 +1227,7 @@ void MapWidgetImpl::InitializeNewRadarProductView( auto radarProductView = context_->radar_product_view(); std::string colorTableFile = - manager::SettingsManager::palette_settings() + settings::PaletteSettings::Instance() .palette(colorPalette) .GetValue(); if (!colorTableFile.empty()) diff --git a/scwx-qt/source/scwx/qt/settings/general_settings.cpp b/scwx-qt/source/scwx/qt/settings/general_settings.cpp index 8f2d3e74..bd94acef 100644 --- a/scwx-qt/source/scwx/qt/settings/general_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/general_settings.cpp @@ -16,10 +16,10 @@ namespace settings static const std::string logPrefix_ = "scwx::qt::settings::general_settings"; -class GeneralSettingsImpl +class GeneralSettings::Impl { public: - explicit GeneralSettingsImpl() + explicit Impl() { std::string defaultDefaultAlertActionValue = types::GetAlertActionName(types::AlertAction::Go); @@ -102,7 +102,7 @@ public: { return !value.empty(); }); } - ~GeneralSettingsImpl() {} + ~Impl() {} SettingsVariable debugEnabled_ {"debug_enabled"}; SettingsVariable defaultAlertAction_ {"default_alert_action"}; @@ -120,7 +120,7 @@ public: }; GeneralSettings::GeneralSettings() : - SettingsCategory("general"), p(std::make_unique()) + SettingsCategory("general"), p(std::make_unique()) { RegisterVariables({&p->debugEnabled_, &p->defaultAlertAction_, @@ -221,6 +221,12 @@ bool GeneralSettings::Shutdown() return dataChanged; } +GeneralSettings& GeneralSettings::Instance() +{ + static GeneralSettings generalSettings_; + return generalSettings_; +} + bool operator==(const GeneralSettings& lhs, const GeneralSettings& rhs) { return (lhs.p->debugEnabled_ == rhs.p->debugEnabled_ && diff --git a/scwx-qt/source/scwx/qt/settings/general_settings.hpp b/scwx-qt/source/scwx/qt/settings/general_settings.hpp index 375d887e..ba58676f 100644 --- a/scwx-qt/source/scwx/qt/settings/general_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/general_settings.hpp @@ -13,8 +13,6 @@ namespace qt namespace settings { -class GeneralSettingsImpl; - class GeneralSettings : public SettingsCategory { public: @@ -41,13 +39,16 @@ public: SettingsVariable& maptiler_api_key() const; SettingsVariable& update_notifications_enabled() const; + static GeneralSettings& Instance(); + friend bool operator==(const GeneralSettings& lhs, const GeneralSettings& rhs); bool Shutdown(); private: - std::unique_ptr p; + class Impl; + std::unique_ptr p; }; } // namespace settings diff --git a/scwx-qt/source/scwx/qt/settings/map_settings.cpp b/scwx-qt/source/scwx/qt/settings/map_settings.cpp index 8edd1c31..2d8e93b0 100644 --- a/scwx-qt/source/scwx/qt/settings/map_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/map_settings.cpp @@ -35,7 +35,7 @@ static const std::string kDefaultRadarProductGroupString_ = "L3"; static const std::array kDefaultRadarProduct_ { "N0B", "N0G", "N0C", "N0X"}; -class MapSettingsImpl +class MapSettings::Impl { public: struct MapData @@ -47,7 +47,7 @@ public: SettingsVariable radarProduct_ {kRadarProductName_}; }; - explicit MapSettingsImpl() + explicit Impl() { for (std::size_t i = 0; i < kCount_; i++) { @@ -101,7 +101,7 @@ public: } } - ~MapSettingsImpl() {} + ~Impl() {} void SetDefaults(std::size_t i) { @@ -111,12 +111,30 @@ public: map_[i].radarProduct_.SetValueToDefault(); } + friend void tag_invoke(boost::json::value_from_tag, + boost::json::value& jv, + const MapData& data) + { + jv = {{kMapStyleName_, data.mapStyle_.GetValue()}, + {kRadarSiteName_, data.radarSite_.GetValue()}, + {kRadarProductGroupName_, data.radarProductGroup_.GetValue()}, + {kRadarProductName_, data.radarProduct_.GetValue()}}; + } + + friend bool operator==(const MapData& lhs, const MapData& rhs) + { + return (lhs.mapStyle_ == rhs.mapStyle_ && // + lhs.radarSite_ == rhs.radarSite_ && + lhs.radarProductGroup_ == rhs.radarProductGroup_ && + lhs.radarProduct_ == rhs.radarProduct_); + } + std::array map_ {}; std::vector variables_ {}; }; MapSettings::MapSettings() : - SettingsCategory("maps"), p(std::make_unique()) + SettingsCategory("maps"), p(std::make_unique()) { RegisterVariables(p->variables_); SetDefaults(); @@ -161,7 +179,7 @@ bool MapSettings::Shutdown() // Commit settings that are managed separate from the settings dialog for (std::size_t i = 0; i < kCount_; ++i) { - MapSettingsImpl::MapData& mapRecordSettings = p->map_[i]; + Impl::MapData& mapRecordSettings = p->map_[i]; dataChanged |= mapRecordSettings.mapStyle_.Commit(); } @@ -184,7 +202,7 @@ bool MapSettings::ReadJson(const boost::json::object& json) if (i < mapArray.size() && mapArray.at(i).is_object()) { const boost::json::object& mapRecord = mapArray.at(i).as_object(); - MapSettingsImpl::MapData& mapRecordSettings = p->map_[i]; + Impl::MapData& mapRecordSettings = p->map_[i]; // Load JSON Elements validated &= mapRecordSettings.mapStyle_.ReadValue(mapRecord); @@ -234,14 +252,10 @@ void MapSettings::WriteJson(boost::json::object& json) const json.insert_or_assign(name(), object); } -void tag_invoke(boost::json::value_from_tag, - boost::json::value& jv, - const MapSettingsImpl::MapData& data) +MapSettings& MapSettings::Instance() { - jv = {{kMapStyleName_, data.mapStyle_.GetValue()}, - {kRadarSiteName_, data.radarSite_.GetValue()}, - {kRadarProductGroupName_, data.radarProductGroup_.GetValue()}, - {kRadarProductName_, data.radarProduct_.GetValue()}}; + static MapSettings mapSettings_; + return mapSettings_; } bool operator==(const MapSettings& lhs, const MapSettings& rhs) @@ -249,15 +263,6 @@ bool operator==(const MapSettings& lhs, const MapSettings& rhs) return (lhs.p->map_ == rhs.p->map_); } -bool operator==(const MapSettingsImpl::MapData& lhs, - const MapSettingsImpl::MapData& rhs) -{ - return (lhs.mapStyle_ == rhs.mapStyle_ && // - lhs.radarSite_ == rhs.radarSite_ && - lhs.radarProductGroup_ == rhs.radarProductGroup_ && - lhs.radarProduct_ == rhs.radarProduct_); -} - } // namespace settings } // namespace qt } // namespace scwx diff --git a/scwx-qt/source/scwx/qt/settings/map_settings.hpp b/scwx-qt/source/scwx/qt/settings/map_settings.hpp index fd0c74dd..c8726491 100644 --- a/scwx-qt/source/scwx/qt/settings/map_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/map_settings.hpp @@ -13,8 +13,6 @@ namespace qt namespace settings { -class MapSettingsImpl; - class MapSettings : public SettingsCategory { public: @@ -52,10 +50,13 @@ public: */ void WriteJson(boost::json::object& json) const override; + static MapSettings& Instance(); + friend bool operator==(const MapSettings& lhs, const MapSettings& rhs); private: - std::unique_ptr p; + class Impl; + std::unique_ptr p; }; } // namespace settings diff --git a/scwx-qt/source/scwx/qt/settings/palette_settings.cpp b/scwx-qt/source/scwx/qt/settings/palette_settings.cpp index 8edf2cf2..f041c078 100644 --- a/scwx-qt/source/scwx/qt/settings/palette_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/palette_settings.cpp @@ -72,10 +72,10 @@ static const std::map< static const std::string kDefaultKey_ {"???"}; static const awips::Phenomenon kDefaultPhenomenon_ {awips::Phenomenon::Marine}; -class PaletteSettingsImpl +class PaletteSettings::Impl { public: - explicit PaletteSettingsImpl() + explicit Impl() { for (const auto& name : kPaletteKeys_) { @@ -120,7 +120,7 @@ public: } } - ~PaletteSettingsImpl() {} + ~Impl() {} static bool ValidateColor(const std::string& value); @@ -132,14 +132,14 @@ public: std::vector variables_ {}; }; -bool PaletteSettingsImpl::ValidateColor(const std::string& value) +bool PaletteSettings::Impl::ValidateColor(const std::string& value) { static const std::regex re {"#[0-9A-Za-z]{8}"}; return std::regex_match(value, re); } PaletteSettings::PaletteSettings() : - SettingsCategory("palette"), p(std::make_unique()) + SettingsCategory("palette"), p(std::make_unique()) { RegisterVariables(p->variables_); SetDefaults(); @@ -200,6 +200,12 @@ const std::vector& PaletteSettings::alert_phenomena() return kAlertPhenomena_; } +PaletteSettings& PaletteSettings::Instance() +{ + static PaletteSettings paletteSettings_; + return paletteSettings_; +} + bool operator==(const PaletteSettings& lhs, const PaletteSettings& rhs) { return lhs.p->palette_ == rhs.p->palette_; diff --git a/scwx-qt/source/scwx/qt/settings/palette_settings.hpp b/scwx-qt/source/scwx/qt/settings/palette_settings.hpp index 948decf5..c0f7985a 100644 --- a/scwx-qt/source/scwx/qt/settings/palette_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/palette_settings.hpp @@ -14,8 +14,6 @@ namespace qt namespace settings { -class PaletteSettingsImpl; - class PaletteSettings : public SettingsCategory { public: @@ -34,11 +32,14 @@ public: static const std::vector& alert_phenomena(); + static PaletteSettings& Instance(); + friend bool operator==(const PaletteSettings& lhs, const PaletteSettings& rhs); private: - std::unique_ptr p; + class Impl; + std::unique_ptr p; }; } // namespace settings diff --git a/scwx-qt/source/scwx/qt/settings/text_settings.cpp b/scwx-qt/source/scwx/qt/settings/text_settings.cpp index 5bc9946b..fdf41acf 100644 --- a/scwx-qt/source/scwx/qt/settings/text_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/text_settings.cpp @@ -169,8 +169,8 @@ SettingsVariable& TextSettings::tooltip_method() const TextSettings& TextSettings::Instance() { - static TextSettings TextSettings_; - return TextSettings_; + static TextSettings textSettings_; + return textSettings_; } bool operator==(const TextSettings& lhs, const TextSettings& rhs) diff --git a/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp b/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp index 5efca78a..e827469c 100644 --- a/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp +++ b/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp @@ -1,10 +1,10 @@ #include "alert_dock_widget.hpp" #include "ui_alert_dock_widget.h" -#include #include #include #include +#include #include #include #include @@ -175,10 +175,10 @@ void AlertDockWidgetImpl::ConnectSignals() // If an item is selected if (selectedAlertKey_ != types::TextEventKey {}) { - types::AlertAction alertAction = types::GetAlertAction( - manager::SettingsManager::general_settings() - .default_alert_action() - .GetValue()); + types::AlertAction alertAction = + types::GetAlertAction(settings::GeneralSettings::Instance() + .default_alert_action() + .GetValue()); switch (alertAction) { diff --git a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp index 34b1001a..f19be01f 100644 --- a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp +++ b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp @@ -1,7 +1,7 @@ #include "animation_dock_widget.hpp" #include "ui_animation_dock_widget.h" -#include +#include #include #include @@ -101,7 +101,7 @@ AnimationDockWidget::AnimationDockWidget(QWidget* parent) : maxDateTimer->start(15000); // Set loop defaults - auto& generalSettings = manager::SettingsManager::general_settings(); + auto& generalSettings = settings::GeneralSettings::Instance(); ui->loopTimeSpinBox->setValue(generalSettings.loop_time().GetValue()); ui->loopSpeedSpinBox->setValue(generalSettings.loop_speed().GetValue()); ui->loopDelaySpinBox->setValue(generalSettings.loop_delay().GetValue() * @@ -175,7 +175,7 @@ void AnimationDockWidgetImpl::ConnectSignals() self_, [this](int i) { - manager::SettingsManager::general_settings().loop_time().StageValue(i); + settings::GeneralSettings::Instance().loop_time().StageValue(i); Q_EMIT self_->LoopTimeChanged(std::chrono::minutes(i)); }); QObject::connect( @@ -184,8 +184,7 @@ void AnimationDockWidgetImpl::ConnectSignals() self_, [this](double d) { - manager::SettingsManager::general_settings().loop_speed().StageValue( - d); + settings::GeneralSettings::Instance().loop_speed().StageValue(d); Q_EMIT self_->LoopSpeedChanged(d); }); QObject::connect( @@ -194,7 +193,7 @@ void AnimationDockWidgetImpl::ConnectSignals() self_, [this](double d) { - manager::SettingsManager::general_settings().loop_delay().StageValue( + settings::GeneralSettings::Instance().loop_delay().StageValue( static_cast(d * 1000.0)); Q_EMIT self_->LoopDelayChanged(std::chrono::milliseconds( static_cast(d * 1000.0))); diff --git a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp index 32464ecf..44a36bf0 100644 --- a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp +++ b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp @@ -6,6 +6,8 @@ #include #include #include +#include +#include #include #include #include @@ -104,7 +106,7 @@ public: &tooltipMethod_}} { // Configure default alert phenomena colors - auto& paletteSettings = manager::SettingsManager::palette_settings(); + auto& paletteSettings = settings::PaletteSettings::Instance(); int index = 0; for (auto& phenomenon : settings::PaletteSettings::alert_phenomena()) @@ -384,7 +386,7 @@ void SettingsDialogImpl::SetupGeneralTab() } settings::GeneralSettings& generalSettings = - manager::SettingsManager::general_settings(); + settings::GeneralSettings::Instance(); defaultRadarSite_.SetSettingsVariable(generalSettings.default_radar_site()); defaultRadarSite_.SetMapFromValueFunction( @@ -525,7 +527,7 @@ void SettingsDialogImpl::SetupGeneralTab() void SettingsDialogImpl::SetupPalettesColorTablesTab() { settings::PaletteSettings& paletteSettings = - manager::SettingsManager::palette_settings(); + settings::PaletteSettings::Instance(); // Palettes > Color Tables QGridLayout* colorTableLayout = @@ -617,7 +619,7 @@ void SettingsDialogImpl::SetupPalettesColorTablesTab() void SettingsDialogImpl::SetupPalettesAlertsTab() { settings::PaletteSettings& paletteSettings = - manager::SettingsManager::palette_settings(); + settings::PaletteSettings::Instance(); // Palettes > Alerts QGridLayout* alertsLayout = diff --git a/scwx-qt/source/scwx/qt/util/font.cpp b/scwx-qt/source/scwx/qt/util/font.cpp index 49fdee3a..74374163 100644 --- a/scwx-qt/source/scwx/qt/util/font.cpp +++ b/scwx-qt/source/scwx/qt/util/font.cpp @@ -5,8 +5,8 @@ #define _CRT_SECURE_NO_WARNINGS #include -#include #include +#include #include #include @@ -337,7 +337,7 @@ std::shared_ptr Font::Create(const std::string& resource) font->p->CreateImGuiFont( fontFile, fontData, - manager::SettingsManager::general_settings().font_sizes().GetValue()); + settings::GeneralSettings::Instance().font_sizes().GetValue()); font->p->atlas_ = ftgl::texture_atlas_new(512, 512, 1); ftgl::texture_font_t* textureFont = ftgl::texture_font_new_from_memory( diff --git a/scwx-qt/source/scwx/qt/util/imgui.cpp b/scwx-qt/source/scwx/qt/util/imgui.cpp index 9d1622ed..0afddf43 100644 --- a/scwx-qt/source/scwx/qt/util/imgui.cpp +++ b/scwx-qt/source/scwx/qt/util/imgui.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include @@ -48,7 +48,7 @@ void ImGui::Impl::Initialize() // Configure monospace font UpdateMonospaceFont(); - manager::SettingsManager::general_settings() + settings::GeneralSettings::Instance() .font_sizes() .RegisterValueChangedCallback([this](const std::vector&) { UpdateMonospaceFont(); }); @@ -61,7 +61,7 @@ void ImGui::Impl::UpdateMonospaceFont() // Get monospace font size std::size_t fontSize = 16; auto fontSizes = - manager::SettingsManager::general_settings().font_sizes().GetValue(); + settings::GeneralSettings::Instance().font_sizes().GetValue(); if (fontSizes.size() > 1) { fontSize = fontSizes[1]; diff --git a/scwx-qt/source/scwx/qt/util/tooltip.cpp b/scwx-qt/source/scwx/qt/util/tooltip.cpp index 5d7b4c6c..3e9432df 100644 --- a/scwx-qt/source/scwx/qt/util/tooltip.cpp +++ b/scwx-qt/source/scwx/qt/util/tooltip.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include @@ -100,7 +100,7 @@ void Show(const std::string& text, const QPointF& mouseGlobalPos) // Get monospace font size units::font_size::pixels fontSize {16}; auto fontSizes = - manager::SettingsManager::general_settings().font_sizes().GetValue(); + settings::GeneralSettings::Instance().font_sizes().GetValue(); if (fontSizes.size() > 1) { fontSize = units::font_size::pixels {fontSizes[1]}; diff --git a/test/source/scwx/qt/manager/settings_manager.test.cpp b/test/source/scwx/qt/manager/settings_manager.test.cpp index be576069..a4d69614 100644 --- a/test/source/scwx/qt/manager/settings_manager.test.cpp +++ b/test/source/scwx/qt/manager/settings_manager.test.cpp @@ -1,5 +1,10 @@ #include #include +#include +#include +#include +#include +#include #include #include @@ -39,10 +44,14 @@ void VerifyDefaults() settings::GeneralSettings defaultGeneralSettings {}; settings::MapSettings defaultMapSettings {}; settings::PaletteSettings defaultPaletteSettings {}; + settings::TextSettings defaultTextSettings {}; + settings::UiSettings defaultUiSettings {}; - EXPECT_EQ(defaultGeneralSettings, SettingsManager::general_settings()); - EXPECT_EQ(defaultMapSettings, SettingsManager::map_settings()); - EXPECT_EQ(defaultPaletteSettings, SettingsManager::palette_settings()); + EXPECT_EQ(defaultGeneralSettings, settings::GeneralSettings::Instance()); + EXPECT_EQ(defaultMapSettings, settings::MapSettings::Instance()); + EXPECT_EQ(defaultPaletteSettings, settings::PaletteSettings::Instance()); + EXPECT_EQ(defaultTextSettings, settings::TextSettings::Instance()); + EXPECT_EQ(defaultUiSettings, settings::UiSettings::Instance()); } void CompareFiles(const std::string& file1, const std::string& file2) @@ -86,11 +95,11 @@ TEST_F(SettingsManagerTest, SettingsKeax) SettingsManager::ReadSettings(filename); EXPECT_EQ( - SettingsManager::general_settings().default_radar_site().GetValue(), + settings::GeneralSettings::Instance().default_radar_site().GetValue(), "KEAX"); - for (size_t i = 0; i < SettingsManager::map_settings().count(); ++i) + for (size_t i = 0; i < settings::MapSettings::Instance().count(); ++i) { - EXPECT_EQ(SettingsManager::map_settings().radar_site(i).GetValue(), + EXPECT_EQ(settings::MapSettings::Instance().radar_site(i).GetValue(), "KEAX"); } }