From 64380e11776da5d05a4d815276093e745230711b Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 7 Jan 2020 14:59:32 +0100 Subject: [PATCH] Cmake: Use new settings page convenience for CMakeSettings Following the pattern introduced in 809e62e373. Change-Id: I3fc42afcdfd71634bd0749cb970c4bf94ed7932a Reviewed-by: Eike Ziller --- .../cmakeprojectmanager/cmakesettingspage.cpp | 28 ++++--------------- .../cmakeprojectmanager/cmakesettingspage.h | 14 ---------- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index 92f6d1b6808..0fd07e35345 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -522,7 +522,7 @@ void CMakeToolItemConfigWidget::load(const CMakeToolTreeItem *item) // CMakeToolConfigWidget // -------------------------------------------------------------------------- -class CMakeToolConfigWidget : public QWidget +class CMakeToolConfigWidget : public Core::IOptionsPageWidget { Q_OBJECT public: @@ -588,7 +588,9 @@ public: m_container->setWidget(m_itemConfigWidget); } - void apply(); + void apply() final; + void finish() final {} + void cloneCMakeTool(); void addCMakeTool(); void removeCMakeTool(); @@ -608,6 +610,7 @@ public: void CMakeToolConfigWidget::apply() { + m_itemConfigWidget->store(); m_model.apply(); } @@ -688,26 +691,7 @@ CMakeSettingsPage::CMakeSettingsPage() setId(Constants::CMAKE_SETTINGSPAGE_ID); setDisplayName(tr("CMake")); setCategory(ProjectExplorer::Constants::KITS_SETTINGS_CATEGORY); -} - -QWidget *CMakeSettingsPage::widget() -{ - if (!m_widget) - m_widget = new CMakeToolConfigWidget; - return m_widget; -} - -void CMakeSettingsPage::apply() -{ - QTC_ASSERT(m_widget, return); - m_widget->m_itemConfigWidget->store(); - m_widget->apply(); -} - -void CMakeSettingsPage::finish() -{ - delete m_widget; - m_widget = nullptr; + setWidgetCreator([] { return new CMakeToolConfigWidget; }); } } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.h b/src/plugins/cmakeprojectmanager/cmakesettingspage.h index d1e20c0236e..ce9f6547338 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.h +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.h @@ -26,30 +26,16 @@ #pragma once #include -#include - -#include - -#include "cmaketool.h" namespace CMakeProjectManager { namespace Internal { -class CMakeToolConfigWidget; - class CMakeSettingsPage : public Core::IOptionsPage { Q_OBJECT public: CMakeSettingsPage(); - - QWidget *widget() override; - void apply() override; - void finish() override; - -private: - CMakeToolConfigWidget *m_widget = nullptr; }; } // namespace Internal