#include #include #include namespace scwx { namespace qt { namespace ui { static const std::string logPrefix_ = "scwx::qt::ui::settings::settings_page_widget"; class SettingsPageWidget::Impl { public: explicit Impl() {} ~Impl() = default; std::vector categories_; std::vector settings_; }; SettingsPageWidget::SettingsPageWidget(QWidget* parent) : QWidget(parent), p {std::make_shared()} { } SettingsPageWidget::~SettingsPageWidget() = default; void SettingsPageWidget::AddSettingsCategory( settings::SettingsCategory* category) { p->categories_.push_back(category); } void SettingsPageWidget::AddSettingsInterface( settings::SettingsInterfaceBase* setting) { p->settings_.push_back(setting); } bool SettingsPageWidget::CommitChanges() { bool committed = false; for (auto& category : p->categories_) { committed |= category->Commit(); } for (auto& setting : p->settings_) { committed |= setting->Commit(); } return committed; } void SettingsPageWidget::DiscardChanges() { for (auto& category : p->categories_) { category->Reset(); } for (auto& setting : p->settings_) { setting->Reset(); } } void SettingsPageWidget::ResetToDefault() { for (auto& setting : p->settings_) { setting->StageDefault(); } } } // namespace ui } // namespace qt } // namespace scwx