summaryrefslogtreecommitdiff
path: root/src/plugins/cppcheck
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2023-04-20 11:01:48 +0200
committerhjk <hjk@qt.io>2023-04-21 12:17:05 +0000
commit654dae486ac926c81c4ec87a33ae03815f0c9621 (patch)
treed57963b7aa6b396007c813adf8ec25364e72cc9d /src/plugins/cppcheck
parent4659053df4cbea7c71e089d5b3f6f2a86b44e014 (diff)
downloadqt-creator-654dae486ac926c81c4ec87a33ae03815f0c9621.tar.gz
CppCheck: Use IOptionPage::setWidgetCreator() for settings
Change-Id: I0c2b9d96e53ddcecc3d25e519c3df21b1d09ddf7 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/cppcheck')
-rw-r--r--src/plugins/cppcheck/cppcheckoptions.cpp50
-rw-r--r--src/plugins/cppcheck/cppcheckoptions.h10
2 files changed, 30 insertions, 30 deletions
diff --git a/src/plugins/cppcheck/cppcheckoptions.cpp b/src/plugins/cppcheck/cppcheckoptions.cpp
index 11563430cc..9a16319bb2 100644
--- a/src/plugins/cppcheck/cppcheckoptions.cpp
+++ b/src/plugins/cppcheck/cppcheckoptions.cpp
@@ -120,6 +120,33 @@ void OptionsWidget::save(CppcheckOptions &options) const
options.guessArguments = m_guessArguments->isChecked();
}
+class CppcheckOptionsPageWidget : public Core::IOptionsPageWidget
+{
+public:
+ CppcheckOptionsPageWidget(CppcheckOptionsPage *page)
+ : m_page(page)
+ {
+ m_optionWidget = new OptionsWidget;
+
+ auto vbox = new QVBoxLayout(this);
+ vbox->addWidget(m_optionWidget);
+
+ m_optionWidget->load(m_page->m_tool.options());
+ }
+
+ void apply() final
+ {
+ CppcheckOptions options;
+ m_optionWidget->save(options);
+ m_page->save(options);
+ m_page->m_tool.updateOptions(options);
+ m_page->m_trigger.recheck();
+ }
+
+ OptionsWidget *m_optionWidget;
+ CppcheckOptionsPage *m_page;
+};
+
CppcheckOptionsPage::CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &trigger):
m_tool(tool),
m_trigger(trigger)
@@ -130,6 +157,8 @@ CppcheckOptionsPage::CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &tr
setDisplayCategory(::Debugger::Tr::tr("Analyzer"));
setCategoryIconPath(Analyzer::Icons::SETTINGSCATEGORY_ANALYZER);
+ setWidgetCreator([this] { return new CppcheckOptionsPageWidget(this); });
+
CppcheckOptions options;
if (HostOsInfo::isAnyUnixHost()) {
options.binary = "cppcheck";
@@ -145,27 +174,6 @@ CppcheckOptionsPage::CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &tr
m_tool.updateOptions(options);
}
-QWidget *CppcheckOptionsPage::widget()
-{
- if (!m_widget)
- m_widget = new OptionsWidget;
- m_widget->load(m_tool.options());
- return m_widget.data();
-}
-
-void CppcheckOptionsPage::apply()
-{
- CppcheckOptions options;
- m_widget->save(options);
- save(options);
- m_tool.updateOptions(options);
- m_trigger.recheck();
-}
-
-void CppcheckOptionsPage::finish()
-{
-}
-
void CppcheckOptionsPage::save(const CppcheckOptions &options) const
{
QSettings *s = Core::ICore::settings();
diff --git a/src/plugins/cppcheck/cppcheckoptions.h b/src/plugins/cppcheck/cppcheckoptions.h
index 7c23d69f60..48526cd540 100644
--- a/src/plugins/cppcheck/cppcheckoptions.h
+++ b/src/plugins/cppcheck/cppcheckoptions.h
@@ -6,10 +6,6 @@
#include <coreplugin/dialogs/ioptionspage.h>
#include <utils/filepath.h>
-#include <QCoreApplication>
-#include <QPointer>
-#include <QWidget>
-
QT_BEGIN_NAMESPACE
class QLineEdit;
class QCheckBox;
@@ -75,17 +71,13 @@ class CppcheckOptionsPage final : public Core::IOptionsPage
public:
explicit CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &trigger);
- QWidget *widget() final;
- void apply() final;
- void finish() final;
-
private:
+ friend class CppcheckOptionsPageWidget;
void save(const CppcheckOptions &options) const;
void load(CppcheckOptions &options) const;
CppcheckTool &m_tool;
CppcheckTrigger &m_trigger;
- QPointer<OptionsWidget> m_widget;
};
} // Cppcheck::Internal