From 218b6ac4910fe0ec8676063cf555e1ae20122509 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 27 Jan 2020 11:39:22 +0100 Subject: [PATCH] Perf: Move closer to now-standard option page setup The aspect widgets need to serve two purposes (global settings, and in run configurations), but that's still possible with an IOptionPageWidget base, the in-project use simply never triggers the apply(). Change-Id: I1344a37b6dba558b950904378443682b5a068214 Reviewed-by: Christian Stenger --- src/plugins/perfprofiler/perfconfigwidget.cpp | 11 +++++++-- src/plugins/perfprofiler/perfconfigwidget.h | 7 ++++-- src/plugins/perfprofiler/perfoptionspage.cpp | 24 ++++--------------- src/plugins/perfprofiler/perfoptionspage.h | 14 ++++------- .../perfprofiler/perfprofilerplugin.cpp | 2 +- 5 files changed, 23 insertions(+), 35 deletions(-) diff --git a/src/plugins/perfprofiler/perfconfigwidget.cpp b/src/plugins/perfprofiler/perfconfigwidget.cpp index bdf2a0540e2..6473d19d2e8 100644 --- a/src/plugins/perfprofiler/perfconfigwidget.cpp +++ b/src/plugins/perfprofiler/perfconfigwidget.cpp @@ -62,9 +62,11 @@ public: const QModelIndex &index) const override; }; -PerfConfigWidget::PerfConfigWidget(PerfSettings *settings, QWidget *parent) : - QWidget(parent), m_settings(settings), m_ui(new Ui::PerfConfigWidget) +PerfConfigWidget::PerfConfigWidget(PerfSettings *settings, QWidget *parent) + : m_settings(settings), m_ui(new Ui::PerfConfigWidget) { + setParent(parent); + m_ui->setupUi(this); m_ui->useTracePointsButton->setVisible(false); @@ -178,6 +180,11 @@ void PerfConfigWidget::setTracePointsButtonVisible(bool visible) m_ui->useTracePointsButton->setVisible(visible); } +void PerfConfigWidget::apply() +{ + m_settings->writeGlobalSettings(); +} + void PerfConfigWidget::readTracePoints() { QMessageBox messageBox; diff --git a/src/plugins/perfprofiler/perfconfigwidget.h b/src/plugins/perfprofiler/perfconfigwidget.h index 12cb5eefe7e..4ff5064db9c 100644 --- a/src/plugins/perfprofiler/perfconfigwidget.h +++ b/src/plugins/perfprofiler/perfconfigwidget.h @@ -27,24 +27,27 @@ #include "perfsettings.h" -#include +#include namespace PerfProfiler { namespace Internal { namespace Ui { class PerfConfigWidget; } -class PerfConfigWidget : public QWidget +class PerfConfigWidget : public Core::IOptionsPageWidget { Q_OBJECT public: explicit PerfConfigWidget(PerfSettings *settings, QWidget *parent = nullptr); ~PerfConfigWidget(); + void updateUi(); void setTarget(ProjectExplorer::Target *target); void setTracePointsButtonVisible(bool visible); private: + void apply() final; + void readTracePoints(); void handleProcessFinished(); void handleProcessError(QProcess::ProcessError error); diff --git a/src/plugins/perfprofiler/perfoptionspage.cpp b/src/plugins/perfprofiler/perfoptionspage.cpp index d445ecc560c..4cb6e167a8c 100644 --- a/src/plugins/perfprofiler/perfoptionspage.cpp +++ b/src/plugins/perfprofiler/perfoptionspage.cpp @@ -23,40 +23,24 @@ ** ****************************************************************************/ -#include "perfconfigwidget.h" #include "perfoptionspage.h" + +#include "perfconfigwidget.h" #include "perfprofilerconstants.h" -#include "perfprofilerplugin.h" #include namespace PerfProfiler { namespace Internal { -PerfOptionsPage::PerfOptionsPage() +PerfOptionsPage::PerfOptionsPage(PerfSettings *settings) { setId(Constants::PerfSettingsId); setDisplayName(QCoreApplication::translate("PerfProfiler::PerfOptionsPage", "CPU Usage")); setCategory("T.Analyzer"); setDisplayCategory(QCoreApplication::translate("Analyzer", "Analyzer")); setCategoryIconPath(Analyzer::Icons::SETTINGSCATEGORY_ANALYZER); -} - -QWidget *PerfOptionsPage::widget() -{ - if (!m_widget) - m_widget = new PerfConfigWidget(PerfProfilerPlugin::globalSettings()); - return m_widget; -} - -void PerfOptionsPage::apply() -{ - PerfProfilerPlugin::globalSettings()->writeGlobalSettings(); -} - -void PerfOptionsPage::finish() -{ - delete m_widget; + setWidgetCreator([settings] { return new PerfConfigWidget(settings); }); } } // namespace Internal diff --git a/src/plugins/perfprofiler/perfoptionspage.h b/src/plugins/perfprofiler/perfoptionspage.h index febde556e0b..c873fc8f7ee 100644 --- a/src/plugins/perfprofiler/perfoptionspage.h +++ b/src/plugins/perfprofiler/perfoptionspage.h @@ -27,23 +27,17 @@ #include -#include - namespace PerfProfiler { + +class PerfSettings; + namespace Internal { class PerfOptionsPage : public Core::IOptionsPage { Q_OBJECT public: - PerfOptionsPage(); - - QWidget *widget(); - void apply(); - void finish(); - -private: - QPointer m_widget; + explicit PerfOptionsPage(PerfSettings *settings); }; } // namespace Internal diff --git a/src/plugins/perfprofiler/perfprofilerplugin.cpp b/src/plugins/perfprofiler/perfprofilerplugin.cpp index 03d1de8eafd..d66a12a5003 100644 --- a/src/plugins/perfprofiler/perfprofilerplugin.cpp +++ b/src/plugins/perfprofiler/perfprofilerplugin.cpp @@ -73,7 +73,7 @@ public: {ProjectExplorer::Constants::PERFPROFILER_RUN_MODE} }; - PerfOptionsPage optionsPage; + PerfOptionsPage optionsPage{perfGlobalSettings()}; PerfProfilerTool profilerTool; };