Refactor settings to be managed by singletons

This commit is contained in:
Dan Paulat 2023-10-05 21:55:43 -05:00
parent acc782b2bc
commit b66ca2cb09
21 changed files with 138 additions and 133 deletions

View file

@ -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;
}

View file

@ -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();

View file

@ -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

View file

@ -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());

View file

@ -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);

View file

@ -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();

View file

@ -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())

View file

@ -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_ &&

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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_;

View file

@ -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

View file

@ -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)

View file

@ -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,8 +175,8 @@ void AlertDockWidgetImpl::ConnectSignals()
// If an item is selected
if (selectedAlertKey_ != types::TextEventKey {})
{
types::AlertAction alertAction = types::GetAlertAction(
manager::SettingsManager::general_settings()
types::AlertAction alertAction =
types::GetAlertAction(settings::GeneralSettings::Instance()
.default_alert_action()
.GetValue());

View file

@ -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)));

View file

@ -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 =

View file

@ -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(

View file

@ -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];

View file

@ -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]};

View file

@ -1,5 +1,10 @@
#include <scwx/qt/manager/settings_manager.hpp>
#include <scwx/qt/config/radar_site.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 <filesystem>
#include <fstream>
@ -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");
}
}