CppCheck: Use IOptionPage::setWidgetCreator() for settings

Change-Id: I0c2b9d96e53ddcecc3d25e519c3df21b1d09ddf7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-04-20 11:01:48 +02:00
parent 4659053df4
commit 654dae486a
2 changed files with 30 additions and 30 deletions

View File

@@ -120,6 +120,33 @@ void OptionsWidget::save(CppcheckOptions &options) const
options.guessArguments = m_guessArguments->isChecked(); 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): CppcheckOptionsPage::CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &trigger):
m_tool(tool), m_tool(tool),
m_trigger(trigger) m_trigger(trigger)
@@ -130,6 +157,8 @@ CppcheckOptionsPage::CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &tr
setDisplayCategory(::Debugger::Tr::tr("Analyzer")); setDisplayCategory(::Debugger::Tr::tr("Analyzer"));
setCategoryIconPath(Analyzer::Icons::SETTINGSCATEGORY_ANALYZER); setCategoryIconPath(Analyzer::Icons::SETTINGSCATEGORY_ANALYZER);
setWidgetCreator([this] { return new CppcheckOptionsPageWidget(this); });
CppcheckOptions options; CppcheckOptions options;
if (HostOsInfo::isAnyUnixHost()) { if (HostOsInfo::isAnyUnixHost()) {
options.binary = "cppcheck"; options.binary = "cppcheck";
@@ -145,27 +174,6 @@ CppcheckOptionsPage::CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &tr
m_tool.updateOptions(options); 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 void CppcheckOptionsPage::save(const CppcheckOptions &options) const
{ {
QSettings *s = Core::ICore::settings(); QSettings *s = Core::ICore::settings();

View File

@@ -6,10 +6,6 @@
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
#include <utils/filepath.h> #include <utils/filepath.h>
#include <QCoreApplication>
#include <QPointer>
#include <QWidget>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QLineEdit; class QLineEdit;
class QCheckBox; class QCheckBox;
@@ -75,17 +71,13 @@ class CppcheckOptionsPage final : public Core::IOptionsPage
public: public:
explicit CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &trigger); explicit CppcheckOptionsPage(CppcheckTool &tool, CppcheckTrigger &trigger);
QWidget *widget() final;
void apply() final;
void finish() final;
private: private:
friend class CppcheckOptionsPageWidget;
void save(const CppcheckOptions &options) const; void save(const CppcheckOptions &options) const;
void load(CppcheckOptions &options) const; void load(CppcheckOptions &options) const;
CppcheckTool &m_tool; CppcheckTool &m_tool;
CppcheckTrigger &m_trigger; CppcheckTrigger &m_trigger;
QPointer<OptionsWidget> m_widget;
}; };
} // Cppcheck::Internal } // Cppcheck::Internal