aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorhjk <[email protected]>2019-01-18 14:51:05 +0100
committerhjk <[email protected]>2019-01-22 09:33:19 +0000
commita8d2546dad8d8a05515ff867271e46ebed5841d7 (patch)
treee18fb62782f43a2b69625c90ebf684a059a30db2 /src/plugins
parentd89ad246becad9758c17f1fa89766fcd3692f4e9 (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.cpp24
-rw-r--r--src/plugins/projectexplorer/deployconfiguration.h10
-rw-r--r--src/plugins/qnx/qnxdeployconfiguration.cpp15
-rw-r--r--src/plugins/qnx/qnxdeployconfiguration.h9
-rw-r--r--src/plugins/remotelinux/remotelinuxdeployconfiguration.cpp7
-rw-r--r--src/plugins/remotelinux/remotelinuxdeployconfiguration.h2
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();