mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 08:20:05 +00:00
Add unit settings
This commit is contained in:
parent
7a71b9e244
commit
3bfcaede96
5 changed files with 151 additions and 3 deletions
|
|
@ -176,7 +176,8 @@ set(HDR_SETTINGS source/scwx/qt/settings/audio_settings.hpp
|
|||
source/scwx/qt/settings/settings_variable.hpp
|
||||
source/scwx/qt/settings/settings_variable_base.hpp
|
||||
source/scwx/qt/settings/text_settings.hpp
|
||||
source/scwx/qt/settings/ui_settings.hpp)
|
||||
source/scwx/qt/settings/ui_settings.hpp
|
||||
source/scwx/qt/settings/unit_settings.hpp)
|
||||
set(SRC_SETTINGS source/scwx/qt/settings/audio_settings.cpp
|
||||
source/scwx/qt/settings/general_settings.cpp
|
||||
source/scwx/qt/settings/hotkey_settings.cpp
|
||||
|
|
@ -190,7 +191,8 @@ set(SRC_SETTINGS source/scwx/qt/settings/audio_settings.cpp
|
|||
source/scwx/qt/settings/settings_variable.cpp
|
||||
source/scwx/qt/settings/settings_variable_base.cpp
|
||||
source/scwx/qt/settings/text_settings.cpp
|
||||
source/scwx/qt/settings/ui_settings.cpp)
|
||||
source/scwx/qt/settings/ui_settings.cpp
|
||||
source/scwx/qt/settings/unit_settings.cpp)
|
||||
set(HDR_TYPES source/scwx/qt/types/alert_types.hpp
|
||||
source/scwx/qt/types/event_types.hpp
|
||||
source/scwx/qt/types/font_types.hpp
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
#include <scwx/qt/settings/product_settings.hpp>
|
||||
#include <scwx/qt/settings/text_settings.hpp>
|
||||
#include <scwx/qt/settings/ui_settings.hpp>
|
||||
#include <scwx/qt/settings/unit_settings.hpp>
|
||||
#include <scwx/qt/util/json.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
|
|
@ -139,6 +140,7 @@ boost::json::value SettingsManager::Impl::ConvertSettingsToJson()
|
|||
settings::ProductSettings::Instance().WriteJson(settingsJson);
|
||||
settings::TextSettings::Instance().WriteJson(settingsJson);
|
||||
settings::UiSettings::Instance().WriteJson(settingsJson);
|
||||
settings::UnitSettings::Instance().WriteJson(settingsJson);
|
||||
|
||||
return settingsJson;
|
||||
}
|
||||
|
|
@ -155,6 +157,7 @@ void SettingsManager::Impl::GenerateDefaultSettings()
|
|||
settings::ProductSettings::Instance().SetDefaults();
|
||||
settings::TextSettings::Instance().SetDefaults();
|
||||
settings::UiSettings::Instance().SetDefaults();
|
||||
settings::UnitSettings::Instance().SetDefaults();
|
||||
}
|
||||
|
||||
bool SettingsManager::Impl::LoadSettings(
|
||||
|
|
@ -172,6 +175,7 @@ bool SettingsManager::Impl::LoadSettings(
|
|||
jsonDirty |= !settings::ProductSettings::Instance().ReadJson(settingsJson);
|
||||
jsonDirty |= !settings::TextSettings::Instance().ReadJson(settingsJson);
|
||||
jsonDirty |= !settings::UiSettings::Instance().ReadJson(settingsJson);
|
||||
jsonDirty |= !settings::UnitSettings::Instance().ReadJson(settingsJson);
|
||||
|
||||
return jsonDirty;
|
||||
}
|
||||
|
|
|
|||
99
scwx-qt/source/scwx/qt/settings/unit_settings.cpp
Normal file
99
scwx-qt/source/scwx/qt/settings/unit_settings.cpp
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
#include <scwx/qt/settings/unit_settings.hpp>
|
||||
#include <scwx/qt/settings/settings_definitions.hpp>
|
||||
#include <scwx/qt/types/unit_types.hpp>
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace qt
|
||||
{
|
||||
namespace settings
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ = "scwx::qt::settings::unit_settings";
|
||||
|
||||
class UnitSettings::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl()
|
||||
{
|
||||
std::string defaultAccumulationUnitsValue =
|
||||
types::GetAccumulationUnitsName(types::AccumulationUnits::Inches);
|
||||
std::string defaultEchoTopsUnitsValue =
|
||||
types::GetEchoTopsUnitsName(types::EchoTopsUnits::Kilofeet);
|
||||
std::string defaultSpeedUnitsValue =
|
||||
types::GetSpeedUnitsName(types::SpeedUnits::Knots);
|
||||
|
||||
boost::to_lower(defaultAccumulationUnitsValue);
|
||||
boost::to_lower(defaultEchoTopsUnitsValue);
|
||||
boost::to_lower(defaultSpeedUnitsValue);
|
||||
|
||||
accumulationUnits_.SetDefault(defaultAccumulationUnitsValue);
|
||||
echoTopsUnits_.SetDefault(defaultEchoTopsUnitsValue);
|
||||
speedUnits_.SetDefault(defaultSpeedUnitsValue);
|
||||
|
||||
accumulationUnits_.SetValidator(
|
||||
SCWX_SETTINGS_ENUM_VALIDATOR(types::AccumulationUnits,
|
||||
types::AccumulationUnitsIterator(),
|
||||
types::GetAccumulationUnitsName));
|
||||
echoTopsUnits_.SetValidator(
|
||||
SCWX_SETTINGS_ENUM_VALIDATOR(types::EchoTopsUnits,
|
||||
types::EchoTopsUnitsIterator(),
|
||||
types::GetEchoTopsUnitsName));
|
||||
speedUnits_.SetValidator(
|
||||
SCWX_SETTINGS_ENUM_VALIDATOR(types::SpeedUnits,
|
||||
types::SpeedUnitsIterator(),
|
||||
types::GetSpeedUnitsName));
|
||||
}
|
||||
|
||||
~Impl() {}
|
||||
|
||||
SettingsVariable<std::string> accumulationUnits_ {"accumulation_units"};
|
||||
SettingsVariable<std::string> echoTopsUnits_ {"echo_tops_units"};
|
||||
SettingsVariable<std::string> speedUnits_ {"speed_units"};
|
||||
};
|
||||
|
||||
UnitSettings::UnitSettings() :
|
||||
SettingsCategory("unit"), p(std::make_unique<Impl>())
|
||||
{
|
||||
RegisterVariables(
|
||||
{&p->accumulationUnits_, &p->echoTopsUnits_, &p->speedUnits_});
|
||||
SetDefaults();
|
||||
}
|
||||
UnitSettings::~UnitSettings() = default;
|
||||
|
||||
UnitSettings::UnitSettings(UnitSettings&&) noexcept = default;
|
||||
UnitSettings& UnitSettings::operator=(UnitSettings&&) noexcept = default;
|
||||
|
||||
SettingsVariable<std::string>& UnitSettings::accumulation_units() const
|
||||
{
|
||||
return p->accumulationUnits_;
|
||||
}
|
||||
|
||||
SettingsVariable<std::string>& UnitSettings::echo_tops_units() const
|
||||
{
|
||||
return p->echoTopsUnits_;
|
||||
}
|
||||
|
||||
SettingsVariable<std::string>& UnitSettings::speed_units() const
|
||||
{
|
||||
return p->speedUnits_;
|
||||
}
|
||||
|
||||
UnitSettings& UnitSettings::Instance()
|
||||
{
|
||||
static UnitSettings generalSettings_;
|
||||
return generalSettings_;
|
||||
}
|
||||
|
||||
bool operator==(const UnitSettings& lhs, const UnitSettings& rhs)
|
||||
{
|
||||
return (lhs.p->accumulationUnits_ == rhs.p->accumulationUnits_ &&
|
||||
lhs.p->echoTopsUnits_ == rhs.p->echoTopsUnits_ &&
|
||||
lhs.p->speedUnits_ == rhs.p->speedUnits_);
|
||||
}
|
||||
|
||||
} // namespace settings
|
||||
} // namespace qt
|
||||
} // namespace scwx
|
||||
43
scwx-qt/source/scwx/qt/settings/unit_settings.hpp
Normal file
43
scwx-qt/source/scwx/qt/settings/unit_settings.hpp
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/qt/settings/settings_category.hpp>
|
||||
#include <scwx/qt/settings/settings_variable.hpp>
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace qt
|
||||
{
|
||||
namespace settings
|
||||
{
|
||||
|
||||
class UnitSettings : public SettingsCategory
|
||||
{
|
||||
public:
|
||||
explicit UnitSettings();
|
||||
~UnitSettings();
|
||||
|
||||
UnitSettings(const UnitSettings&) = delete;
|
||||
UnitSettings& operator=(const UnitSettings&) = delete;
|
||||
|
||||
UnitSettings(UnitSettings&&) noexcept;
|
||||
UnitSettings& operator=(UnitSettings&&) noexcept;
|
||||
|
||||
SettingsVariable<std::string>& accumulation_units() const;
|
||||
SettingsVariable<std::string>& echo_tops_units() const;
|
||||
SettingsVariable<std::string>& speed_units() const;
|
||||
|
||||
static UnitSettings& Instance();
|
||||
|
||||
friend bool operator==(const UnitSettings& lhs, const UnitSettings& rhs);
|
||||
|
||||
private:
|
||||
class Impl;
|
||||
std::unique_ptr<Impl> p;
|
||||
};
|
||||
|
||||
} // namespace settings
|
||||
} // namespace qt
|
||||
} // namespace scwx
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit e350743fd8ca6858ce49a22bb8e40a0c6710ca86
|
||||
Subproject commit 03b6188cdf1b85f65bae0de822194bc6fab9bd14
|
||||
Loading…
Add table
Add a link
Reference in a new issue