mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 01:30:05 +00:00 
			
		
		
		
	Refactor settings to be managed by singletons
This commit is contained in:
		
							parent
							
								
									acc782b2bc
								
							
						
					
					
						commit
						b66ca2cb09
					
				
					 21 changed files with 138 additions and 133 deletions
				
			
		|  | @ -7,13 +7,14 @@ | |||
| #include <scwx/qt/main/versions.hpp> | ||||
| #include <scwx/qt/manager/placefile_manager.hpp> | ||||
| #include <scwx/qt/manager/radar_product_manager.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/manager/text_event_manager.hpp> | ||||
| #include <scwx/qt/manager/timeline_manager.hpp> | ||||
| #include <scwx/qt/manager/update_manager.hpp> | ||||
| #include <scwx/qt/map/map_provider.hpp> | ||||
| #include <scwx/qt/map/map_widget.hpp> | ||||
| #include <scwx/qt/model/radar_product_model.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/qt/settings/map_settings.hpp> | ||||
| #include <scwx/qt/settings/ui_settings.hpp> | ||||
| #include <scwx/qt/ui/about_dialog.hpp> | ||||
| #include <scwx/qt/ui/alert_dock_widget.hpp> | ||||
|  | @ -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; | ||||
|          } | ||||
|  |  | |||
|  | @ -1,5 +1,8 @@ | |||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/map/map_provider.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/qt/settings/map_settings.hpp> | ||||
| #include <scwx/qt/settings/palette_settings.hpp> | ||||
| #include <scwx/qt/settings/text_settings.hpp> | ||||
| #include <scwx/qt/settings/ui_settings.hpp> | ||||
| #include <scwx/qt/util/json.hpp> | ||||
|  | @ -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(); | ||||
|  |  | |||
|  | @ -1,8 +1,6 @@ | |||
| #pragma once | ||||
| 
 | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/qt/settings/map_settings.hpp> | ||||
| #include <scwx/qt/settings/palette_settings.hpp> | ||||
| #include <string> | ||||
| 
 | ||||
| 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
 | ||||
|  |  | |||
|  | @ -2,7 +2,7 @@ | |||
| 
 | ||||
| #include <scwx/qt/manager/timeline_manager.hpp> | ||||
| #include <scwx/qt/manager/radar_product_manager.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/util/logger.hpp> | ||||
| #include <scwx/util/map.hpp> | ||||
| #include <scwx/util/time.hpp> | ||||
|  | @ -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()); | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| #include <scwx/qt/map/alert_layer.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/manager/text_event_manager.hpp> | ||||
| #include <scwx/qt/settings/palette_settings.hpp> | ||||
| #include <scwx/qt/util/color.hpp> | ||||
| #include <scwx/util/logger.hpp> | ||||
| #include <scwx/util/threads.hpp> | ||||
|  | @ -394,7 +394,7 @@ static void AddAlertLayer(std::shared_ptr<QMapLibreGL::Map> map, | |||
|                           const QString&                    beforeLayer) | ||||
| { | ||||
|    settings::PaletteSettings& paletteSettings = | ||||
|       manager::SettingsManager::palette_settings(); | ||||
|       settings::PaletteSettings::Instance(); | ||||
| 
 | ||||
|    QString sourceId     = GetSourceId(phenomenon, alertActive); | ||||
|    QString idSuffix     = GetSuffix(phenomenon, alertActive); | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| #include <scwx/qt/map/map_provider.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| 
 | ||||
| #include <unordered_map> | ||||
| 
 | ||||
|  | @ -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(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -3,7 +3,6 @@ | |||
| #include <scwx/qt/manager/font_manager.hpp> | ||||
| #include <scwx/qt/manager/placefile_manager.hpp> | ||||
| #include <scwx/qt/manager/radar_product_manager.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/map/alert_layer.hpp> | ||||
| #include <scwx/qt/map/color_table_layer.hpp> | ||||
| #include <scwx/qt/map/layer_wrapper.hpp> | ||||
|  | @ -13,6 +12,8 @@ | |||
| #include <scwx/qt/map/radar_product_layer.hpp> | ||||
| #include <scwx/qt/map/radar_range_layer.hpp> | ||||
| #include <scwx/qt/model/imgui_context_model.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/qt/settings/palette_settings.hpp> | ||||
| #include <scwx/qt/util/file.hpp> | ||||
| #include <scwx/qt/util/maplibre.hpp> | ||||
| #include <scwx/qt/util/tooltip.hpp> | ||||
|  | @ -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()) | ||||
|  |  | |||
|  | @ -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<bool>        debugEnabled_ {"debug_enabled"}; | ||||
|    SettingsVariable<std::string> defaultAlertAction_ {"default_alert_action"}; | ||||
|  | @ -120,7 +120,7 @@ public: | |||
| }; | ||||
| 
 | ||||
| GeneralSettings::GeneralSettings() : | ||||
|     SettingsCategory("general"), p(std::make_unique<GeneralSettingsImpl>()) | ||||
|     SettingsCategory("general"), p(std::make_unique<Impl>()) | ||||
| { | ||||
|    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_ && | ||||
|  |  | |||
|  | @ -13,8 +13,6 @@ namespace qt | |||
| namespace settings | ||||
| { | ||||
| 
 | ||||
| class GeneralSettingsImpl; | ||||
| 
 | ||||
| class GeneralSettings : public SettingsCategory | ||||
| { | ||||
| public: | ||||
|  | @ -41,13 +39,16 @@ public: | |||
|    SettingsVariable<std::string>&                maptiler_api_key() const; | ||||
|    SettingsVariable<bool>& update_notifications_enabled() const; | ||||
| 
 | ||||
|    static GeneralSettings& Instance(); | ||||
| 
 | ||||
|    friend bool operator==(const GeneralSettings& lhs, | ||||
|                           const GeneralSettings& rhs); | ||||
| 
 | ||||
|    bool Shutdown(); | ||||
| 
 | ||||
| private: | ||||
|    std::unique_ptr<GeneralSettingsImpl> p; | ||||
|    class Impl; | ||||
|    std::unique_ptr<Impl> p; | ||||
| }; | ||||
| 
 | ||||
| } // namespace settings
 | ||||
|  |  | |||
|  | @ -35,7 +35,7 @@ static const std::string kDefaultRadarProductGroupString_ = "L3"; | |||
| static const std::array<std::string, kCount_> kDefaultRadarProduct_ { | ||||
|    "N0B", "N0G", "N0C", "N0X"}; | ||||
| 
 | ||||
| class MapSettingsImpl | ||||
| class MapSettings::Impl | ||||
| { | ||||
| public: | ||||
|    struct MapData | ||||
|  | @ -47,7 +47,7 @@ public: | |||
|       SettingsVariable<std::string> 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<MapData, kCount_>       map_ {}; | ||||
|    std::vector<SettingsVariableBase*> variables_ {}; | ||||
| }; | ||||
| 
 | ||||
| MapSettings::MapSettings() : | ||||
|     SettingsCategory("maps"), p(std::make_unique<MapSettingsImpl>()) | ||||
|     SettingsCategory("maps"), p(std::make_unique<Impl>()) | ||||
| { | ||||
|    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
 | ||||
|  |  | |||
|  | @ -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<MapSettingsImpl> p; | ||||
|    class Impl; | ||||
|    std::unique_ptr<Impl> p; | ||||
| }; | ||||
| 
 | ||||
| } // namespace settings
 | ||||
|  |  | |||
|  | @ -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<SettingsVariableBase*> 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<PaletteSettingsImpl>()) | ||||
|     SettingsCategory("palette"), p(std::make_unique<Impl>()) | ||||
| { | ||||
|    RegisterVariables(p->variables_); | ||||
|    SetDefaults(); | ||||
|  | @ -200,6 +200,12 @@ const std::vector<awips::Phenomenon>& 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_; | ||||
|  |  | |||
|  | @ -14,8 +14,6 @@ namespace qt | |||
| namespace settings | ||||
| { | ||||
| 
 | ||||
| class PaletteSettingsImpl; | ||||
| 
 | ||||
| class PaletteSettings : public SettingsCategory | ||||
| { | ||||
| public: | ||||
|  | @ -34,11 +32,14 @@ public: | |||
| 
 | ||||
|    static const std::vector<awips::Phenomenon>& alert_phenomena(); | ||||
| 
 | ||||
|    static PaletteSettings& Instance(); | ||||
| 
 | ||||
|    friend bool operator==(const PaletteSettings& lhs, | ||||
|                           const PaletteSettings& rhs); | ||||
| 
 | ||||
| private: | ||||
|    std::unique_ptr<PaletteSettingsImpl> p; | ||||
|    class Impl; | ||||
|    std::unique_ptr<Impl> p; | ||||
| }; | ||||
| 
 | ||||
| } // namespace settings
 | ||||
|  |  | |||
|  | @ -169,8 +169,8 @@ SettingsVariable<std::string>& 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) | ||||
|  |  | |||
|  | @ -1,10 +1,10 @@ | |||
| #include "alert_dock_widget.hpp" | ||||
| #include "ui_alert_dock_widget.h" | ||||
| 
 | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/manager/text_event_manager.hpp> | ||||
| #include <scwx/qt/model/alert_model.hpp> | ||||
| #include <scwx/qt/model/alert_proxy_model.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/qt/types/alert_types.hpp> | ||||
| #include <scwx/qt/types/qt_types.hpp> | ||||
| #include <scwx/qt/ui/alert_dialog.hpp> | ||||
|  | @ -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) | ||||
|                  { | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| #include "animation_dock_widget.hpp" | ||||
| #include "ui_animation_dock_widget.h" | ||||
| 
 | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/qt/util/time.hpp> | ||||
| #include <scwx/util/logger.hpp> | ||||
| 
 | ||||
|  | @ -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<std::int64_t>(d * 1000.0)); | ||||
|          Q_EMIT self_->LoopDelayChanged(std::chrono::milliseconds( | ||||
|             static_cast<typename std::chrono::milliseconds::rep>(d * 1000.0))); | ||||
|  |  | |||
|  | @ -6,6 +6,8 @@ | |||
| #include <scwx/qt/config/radar_site.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/map/map_provider.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/qt/settings/palette_settings.hpp> | ||||
| #include <scwx/qt/settings/settings_interface.hpp> | ||||
| #include <scwx/qt/settings/text_settings.hpp> | ||||
| #include <scwx/qt/types/alert_types.hpp> | ||||
|  | @ -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 = | ||||
|  |  | |||
|  | @ -5,8 +5,8 @@ | |||
| #define _CRT_SECURE_NO_WARNINGS | ||||
| 
 | ||||
| #include <scwx/qt/util/font.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/model/imgui_context_model.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/util/logger.hpp> | ||||
| 
 | ||||
| #include <codecvt> | ||||
|  | @ -337,7 +337,7 @@ std::shared_ptr<Font> 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( | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| #include <scwx/qt/util/imgui.hpp> | ||||
| #include <scwx/qt/manager/resource_manager.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/util/logger.hpp> | ||||
| 
 | ||||
| #include <mutex> | ||||
|  | @ -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<std::int64_t>&) | ||||
|                                     { 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]; | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| #include <scwx/qt/util/tooltip.hpp> | ||||
| #include <scwx/qt/manager/settings_manager.hpp> | ||||
| #include <scwx/qt/settings/general_settings.hpp> | ||||
| #include <scwx/qt/settings/text_settings.hpp> | ||||
| #include <scwx/qt/types/font_types.hpp> | ||||
| #include <scwx/qt/types/text_types.hpp> | ||||
|  | @ -100,7 +100,7 @@ void Show(const std::string& text, const QPointF& mouseGlobalPos) | |||
|       // Get monospace font size
 | ||||
|       units::font_size::pixels<double> 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<double> {fontSizes[1]}; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat