aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/help/filtersettingspage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/help/filtersettingspage.cpp')
-rw-r--r--src/plugins/help/filtersettingspage.cpp74
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