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();
}
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();