diff options
Diffstat (limited to 'src/plugins/help/filtersettingspage.cpp')
-rw-r--r-- | src/plugins/help/filtersettingspage.cpp | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/src/plugins/help/filtersettingspage.cpp b/src/plugins/help/filtersettingspage.cpp index 771c39fc689..e227b025ef0 100644 --- a/src/plugins/help/filtersettingspage.cpp +++ b/src/plugins/help/filtersettingspage.cpp @@ -7,56 +7,56 @@ #include "helptr.h" #include "localhelpmanager.h" +#include <utils/layoutbuilder.h> + #include <QHelpFilterEngine> #include <QHelpFilterSettingsWidget> #include <QVersionNumber> -using namespace Help::Internal; - -FilterSettingsPage::FilterSettingsPage() -{ - setId("D.Filters"); - setDisplayName(Tr::tr("Filters")); - setCategory(Help::Constants::HELP_CATEGORY); -} +namespace Help::Internal { -QWidget *FilterSettingsPage::widget() +class FilterSettingsPageWidget : public Core::IOptionsPageWidget { - if (!m_widget) { +public: + FilterSettingsPageWidget(const std::function<void()> &onChanged) + { LocalHelpManager::setupGuiHelpEngine(); - m_widget = new QHelpFilterSettingsWidget(nullptr); - m_widget->readSettings(LocalHelpManager::filterEngine()); - connect(Core::HelpManager::Signals::instance(), - &Core::HelpManager::Signals::documentationChanged, - this, - &FilterSettingsPage::updateFilterPage); + auto widget = new QHelpFilterSettingsWidget; + widget->readSettings(LocalHelpManager::filterEngine()); - updateFilterPage(); - } - return m_widget; -} + Layouting::Column { + Layouting::noMargin, + widget + }.attachTo(this); -void FilterSettingsPage::apply() -{ - if (m_widget->applySettings(LocalHelpManager::filterEngine())) - emit filtersChanged(); + auto updateFilterPage = [widget] { + widget->setAvailableComponents(LocalHelpManager::filterEngine()->availableComponents()); + widget->setAvailableVersions(LocalHelpManager::filterEngine()->availableVersions()); + }; - m_widget->readSettings(LocalHelpManager::filterEngine()); -} + auto connection = connect(Core::HelpManager::Signals::instance(), + &Core::HelpManager::Signals::documentationChanged, + this, + updateFilterPage); + updateFilterPage(); -void FilterSettingsPage::finish() -{ - disconnect(Core::HelpManager::Signals::instance(), - &Core::HelpManager::Signals::documentationChanged, - this, - &FilterSettingsPage::updateFilterPage); - delete m_widget; -} + setOnApply([widget, onChanged] { + if (widget->applySettings(LocalHelpManager::filterEngine())) + onChanged(); + widget->readSettings(LocalHelpManager::filterEngine()); + }); -void FilterSettingsPage::updateFilterPage() + setOnFinish([connection] { disconnect(connection); }); + } +}; + +FilterSettingsPage::FilterSettingsPage(const std::function<void ()> &onChanged) { - m_widget->setAvailableComponents(LocalHelpManager::filterEngine()->availableComponents()); - m_widget->setAvailableVersions(LocalHelpManager::filterEngine()->availableVersions()); + setId("D.Filters"); + setDisplayName(Tr::tr("Filters")); + setCategory(Help::Constants::HELP_CATEGORY); + setWidgetCreator([onChanged] { return new FilterSettingsPageWidget(onChanged); }); } +} // Help::Internal |