diff options
author | hjk <[email protected]> | 2019-01-18 14:51:05 +0100 |
---|---|---|
committer | hjk <[email protected]> | 2019-01-22 09:33:19 +0000 |
commit | a8d2546dad8d8a05515ff867271e46ebed5841d7 (patch) | |
tree | e18fb62782f43a2b69625c90ebf684a059a30db2 /src/plugins | |
parent | d89ad246becad9758c17f1fa89766fcd3692f4e9 (diff) |
ProjectExplorer: Allow specifying deploy config widgets in the factory
Keep the generality of creating any widget, but also add a convenience
function handling the single special case that was ever used.
Change-Id: Iab4cbe62de04b9fcc6cb0bb305eaf9a48649d991
Reviewed-by: Christian Kandeler <[email protected]>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/projectexplorer/deployconfiguration.cpp | 24 | ||||
-rw-r--r-- | src/plugins/projectexplorer/deployconfiguration.h | 10 | ||||
-rw-r--r-- | src/plugins/qnx/qnxdeployconfiguration.cpp | 15 | ||||
-rw-r--r-- | src/plugins/qnx/qnxdeployconfiguration.h | 9 | ||||
-rw-r--r-- | src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp | 7 | ||||
-rw-r--r-- | src/plugins/remotelinux/remotelinuxdeployconfiguration.h | 2 |
6 files changed, 31 insertions, 36 deletions
diff --git a/src/plugins/projectexplorer/deployconfiguration.cpp b/src/plugins/projectexplorer/deployconfiguration.cpp index 8ff683a7f49..5bb84f4f6c9 100644 --- a/src/plugins/projectexplorer/deployconfiguration.cpp +++ b/src/plugins/projectexplorer/deployconfiguration.cpp @@ -27,6 +27,7 @@ #include "buildsteplist.h" #include "buildconfiguration.h" +#include "deploymentdataview.h" #include "kitinformation.h" #include "project.h" #include "projectexplorer.h" @@ -67,6 +68,13 @@ const BuildStepList *DeployConfiguration::stepList() const return &m_stepList; } +NamedWidget *DeployConfiguration::createConfigWidget() const +{ + if (!m_configWidgetCreator) + return nullptr; + return m_configWidgetCreator(target()); +} + QVariantMap DeployConfiguration::toMap() const { QVariantMap map(ProjectConfiguration::toMap()); @@ -75,11 +83,6 @@ QVariantMap DeployConfiguration::toMap() const return map; } -NamedWidget *DeployConfiguration::createConfigWidget() -{ - return nullptr; -} - bool DeployConfiguration::isEnabled() const { return false; @@ -176,6 +179,16 @@ bool DeployConfigurationFactory::canHandle(Target *target) const return true; } +void DeployConfigurationFactory::setConfigWidgetCreator(const std::function<NamedWidget *(Target *)> &configWidgetCreator) +{ + m_configWidgetCreator = configWidgetCreator; +} + +void DeployConfigurationFactory::setUseDeploymentDataView() +{ + m_configWidgetCreator = [](Target *target) { return new DeploymentDataView(target); }; +} + bool DeployConfigurationFactory::canCreate(Target *parent, Core::Id id) const { if (!canHandle(parent)) @@ -197,6 +210,7 @@ DeployConfiguration *DeployConfigurationFactory::create(Target *parent, Core::Id if (!info.condition || info.condition(parent)) dc->stepList()->appendStep(info.deployStepId); } + dc->m_configWidgetCreator = m_configWidgetCreator; return dc; } diff --git a/src/plugins/projectexplorer/deployconfiguration.h b/src/plugins/projectexplorer/deployconfiguration.h index ea8bd0d6777..4c146f9ee8e 100644 --- a/src/plugins/projectexplorer/deployconfiguration.h +++ b/src/plugins/projectexplorer/deployconfiguration.h @@ -51,11 +51,11 @@ public: BuildStepList *stepList(); const BuildStepList *stepList() const; + NamedWidget *createConfigWidget() const; + bool fromMap(const QVariantMap &map) override; QVariantMap toMap() const override; - virtual NamedWidget *createConfigWidget(); - virtual bool isEnabled() const; virtual QString disabledReason() const; @@ -69,6 +69,7 @@ signals: private: BuildStepList m_stepList; + std::function<NamedWidget *(Target *)> m_configWidgetCreator; }; class PROJECTEXPLORER_EXPORT DeployConfigurationFactory @@ -100,6 +101,9 @@ public: virtual bool canHandle(ProjectExplorer::Target *target) const; + void setConfigWidgetCreator(const std::function<NamedWidget *(Target *)> &configWidgetCreator); + void setUseDeploymentDataView(); + protected: using DeployConfigurationCreator = std::function<DeployConfiguration *(Target *)>; @@ -109,6 +113,7 @@ protected: m_creator = [this, deployConfigBaseId](Target *t) { auto dc = new DeployConfig(t, deployConfigBaseId); dc->setDefaultDisplayName(m_defaultDisplayName); + dc->m_configWidgetCreator = m_configWidgetCreator; return dc; }; m_deployConfigBaseId = deployConfigBaseId; @@ -125,6 +130,7 @@ private: QList<Core::Id> m_supportedTargetDeviceTypes; QList<DeployStepCreationInfo> m_initialSteps; QString m_defaultDisplayName; + std::function<NamedWidget *(Target *)> m_configWidgetCreator; }; class DefaultDeployConfigurationFactory : public DeployConfigurationFactory diff --git a/src/plugins/qnx/qnxdeployconfiguration.cpp b/src/plugins/qnx/qnxdeployconfiguration.cpp index 82c68e48e0c..20fa709506d 100644 --- a/src/plugins/qnx/qnxdeployconfiguration.cpp +++ b/src/plugins/qnx/qnxdeployconfiguration.cpp @@ -29,7 +29,6 @@ #include "qnxdevicefactory.h" #include <projectexplorer/devicesupport/devicecheckbuildstep.h> -#include <projectexplorer/deploymentdataview.h> #include <remotelinux/genericdirectuploadstep.h> #include <remotelinux/remotelinuxcheckforfreediskspacestep.h> @@ -40,22 +39,14 @@ using namespace RemoteLinux; namespace Qnx { namespace Internal { -QnxDeployConfiguration::QnxDeployConfiguration(Target *target, Core::Id id) - : DeployConfiguration(target, id) -{ -} - -NamedWidget *QnxDeployConfiguration::createConfigWidget() -{ - return new DeploymentDataView(target()); -} - QnxDeployConfigurationFactory::QnxDeployConfigurationFactory() { registerDeployConfiguration<DeployConfiguration> (Constants::QNX_QNX_DEPLOYCONFIGURATION_ID); - setDefaultDisplayName(QnxDeployConfiguration::tr("Deploy to QNX Device")); + setDefaultDisplayName(QCoreApplication::translate("Qnx::Internal::QnxDeployConfiguration", + "Deploy to QNX Device")); addSupportedTargetDeviceType(QnxDeviceFactory::deviceType()); + setUseDeploymentDataView(); addInitialStep(DeviceCheckBuildStep::stepId()); addInitialStep(RemoteLinuxCheckForFreeDiskSpaceStep::stepId()); diff --git a/src/plugins/qnx/qnxdeployconfiguration.h b/src/plugins/qnx/qnxdeployconfiguration.h index baa89b1c032..397b32d0623 100644 --- a/src/plugins/qnx/qnxdeployconfiguration.h +++ b/src/plugins/qnx/qnxdeployconfiguration.h @@ -30,15 +30,6 @@ namespace Qnx { namespace Internal { -class QnxDeployConfiguration : public ProjectExplorer::DeployConfiguration -{ - Q_OBJECT - -public: - QnxDeployConfiguration(ProjectExplorer::Target *target, Core::Id id); - ProjectExplorer::NamedWidget *createConfigWidget() override; -}; - class QnxDeployConfigurationFactory : public ProjectExplorer::DeployConfigurationFactory { public: diff --git a/src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp b/src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp index cf5767af484..ad9147042a9 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp +++ b/src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp @@ -33,7 +33,6 @@ #include "rsyncdeploystep.h" #include <projectexplorer/abi.h> -#include <projectexplorer/deploymentdataview.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/project.h> #include <projectexplorer/target.h> @@ -50,11 +49,6 @@ RemoteLinuxDeployConfiguration::RemoteLinuxDeployConfiguration(Target *target, C : DeployConfiguration(target, id) {} -NamedWidget *RemoteLinuxDeployConfiguration::createConfigWidget() -{ - return new DeploymentDataView(target()); -} - Core::Id RemoteLinuxDeployConfiguration::genericDeployConfigurationId() { return "DeployToGenericLinux"; @@ -69,6 +63,7 @@ RemoteLinuxDeployConfigurationFactory::RemoteLinuxDeployConfigurationFactory() addSupportedTargetDeviceType(RemoteLinux::Constants::GenericLinuxOsType); setDefaultDisplayName(QCoreApplication::translate("RemoteLinux", "Deploy to Remote Linux Host")); + setUseDeploymentDataView(); addInitialStep(RemoteLinuxCheckForFreeDiskSpaceStep::stepId()); addInitialStep(RemoteLinuxKillAppStep::stepId()); diff --git a/src/plugins/remotelinux/remotelinuxdeployconfiguration.h b/src/plugins/remotelinux/remotelinuxdeployconfiguration.h index 7033e100077..bb99f1f3c89 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfiguration.h +++ b/src/plugins/remotelinux/remotelinuxdeployconfiguration.h @@ -42,8 +42,6 @@ public: static Core::Id genericDeployConfigurationId(); - ProjectExplorer::NamedWidget *createConfigWidget() override; - template<class T> T *earlierBuildStep(const ProjectExplorer::BuildStep *laterBuildStep) const { const QList<ProjectExplorer::BuildStep *> &buildSteps = stepList()->steps(); |