Commit line settings changes on apply

This commit is contained in:
Dan Paulat 2024-09-21 23:31:47 -05:00
parent 8212d24d34
commit 6b0aaea773
5 changed files with 53 additions and 0 deletions

View file

@ -68,6 +68,34 @@ void SettingsCategory::SetDefaults()
} }
} }
bool SettingsCategory::Commit()
{
bool committed = false;
// Commit subcategory arrays
for (auto& subcategoryArray : p->subcategoryArrays_)
{
for (auto& subcategory : subcategoryArray.second)
{
committed |= subcategory->Commit();
}
}
// Commit subcategories
for (auto& subcategory : p->subcategories_)
{
committed |= subcategory->Commit();
}
// Commit variables
for (auto& variable : p->variables_)
{
committed |= variable->Commit();
}
return committed;
}
bool SettingsCategory::ReadJson(const boost::json::object& json) bool SettingsCategory::ReadJson(const boost::json::object& json)
{ {
bool validated = true; bool validated = true;

View file

@ -33,6 +33,15 @@ public:
*/ */
void SetDefaults(); void SetDefaults();
/**
* Sets the current value of all variables to the staged
* value.
*
* @return true if any staged value was committed, false if no staged values
* are present.
*/
bool Commit();
/** /**
* Reads the variables from the JSON object. * Reads the variables from the JSON object.
* *

View file

@ -248,6 +248,8 @@ void AlertPaletteSettingsWidget::Impl::AddPhenomenonLine(
layout->addWidget(lineLabel, row, 1); layout->addWidget(lineLabel, row, 1);
layout->addWidget(toolButton, row, 2); layout->addWidget(toolButton, row, 2);
self_->AddSettingsCategory(&lineSettings);
connect( connect(
toolButton, toolButton,
&QAbstractButton::clicked, &QAbstractButton::clicked,

View file

@ -19,6 +19,7 @@ public:
explicit Impl() {} explicit Impl() {}
~Impl() = default; ~Impl() = default;
std::vector<settings::SettingsCategory*> categories_;
std::vector<settings::SettingsInterfaceBase*> settings_; std::vector<settings::SettingsInterfaceBase*> settings_;
}; };
@ -29,6 +30,12 @@ SettingsPageWidget::SettingsPageWidget(QWidget* parent) :
SettingsPageWidget::~SettingsPageWidget() = default; SettingsPageWidget::~SettingsPageWidget() = default;
void SettingsPageWidget::AddSettingsCategory(
settings::SettingsCategory* category)
{
p->categories_.push_back(category);
}
void SettingsPageWidget::AddSettingsInterface( void SettingsPageWidget::AddSettingsInterface(
settings::SettingsInterfaceBase* setting) settings::SettingsInterfaceBase* setting)
{ {
@ -39,6 +46,11 @@ bool SettingsPageWidget::CommitChanges()
{ {
bool committed = false; bool committed = false;
for (auto& category : p->categories_)
{
committed |= category->Commit();
}
for (auto& setting : p->settings_) for (auto& setting : p->settings_)
{ {
committed |= setting->Commit(); committed |= setting->Commit();

View file

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <scwx/qt/settings/settings_category.hpp>
#include <scwx/qt/settings/settings_interface_base.hpp> #include <scwx/qt/settings/settings_interface_base.hpp>
#include <QWidget> #include <QWidget>
@ -59,6 +60,7 @@ public:
void ResetToDefault(); void ResetToDefault();
protected: protected:
void AddSettingsCategory(settings::SettingsCategory* category);
void AddSettingsInterface(settings::SettingsInterfaceBase* setting); void AddSettingsInterface(settings::SettingsInterfaceBase* setting);
private: private: