summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/deployconfiguration.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/deployconfiguration.h')
-rw-r--r--src/plugins/projectexplorer/deployconfiguration.h97
1 files changed, 52 insertions, 45 deletions
diff --git a/src/plugins/projectexplorer/deployconfiguration.h b/src/plugins/projectexplorer/deployconfiguration.h
index db3b37c5c3..4e42e5e00f 100644
--- a/src/plugins/projectexplorer/deployconfiguration.h
+++ b/src/plugins/projectexplorer/deployconfiguration.h
@@ -27,12 +27,9 @@
#include "projectexplorer_export.h"
+#include "buildsteplist.h"
#include "projectconfiguration.h"
-#include <QString>
-
-QT_FORWARD_DECLARE_CLASS(QStringList)
-
namespace ProjectExplorer {
class BuildStepList;
@@ -44,11 +41,16 @@ class PROJECTEXPLORER_EXPORT DeployConfiguration : public ProjectConfiguration
{
Q_OBJECT
+protected:
+ friend class DeployConfigurationFactory;
+ explicit DeployConfiguration(Target *target, Core::Id id);
+
public:
- // ctors are protected
- ~DeployConfiguration() override;
+ ~DeployConfiguration() override = default;
+ virtual void initialize();
- BuildStepList *stepList() const;
+ BuildStepList *stepList();
+ const BuildStepList *stepList() const;
bool fromMap(const QVariantMap &map) override;
QVariantMap toMap() const override;
@@ -66,26 +68,8 @@ public:
signals:
void enabledChanged();
-protected:
- DeployConfiguration(Target *target, Core::Id id);
- DeployConfiguration(Target *target, DeployConfiguration *source);
-
- void cloneSteps(DeployConfiguration *source);
-
private:
- void ctor();
-
- BuildStepList *m_stepList = nullptr;
-};
-
-class PROJECTEXPLORER_EXPORT DefaultDeployConfiguration : public DeployConfiguration
-{
- Q_OBJECT
- friend class DefaultDeployConfigurationFactory; // for the ctors
-
-protected:
- DefaultDeployConfiguration(Target *target, Core::Id id);
- DefaultDeployConfiguration(Target *target, DeployConfiguration *source);
+ BuildStepList m_stepList;
};
class PROJECTEXPLORER_EXPORT DeployConfigurationFactory : public QObject
@@ -93,43 +77,66 @@ class PROJECTEXPLORER_EXPORT DeployConfigurationFactory : public QObject
Q_OBJECT
public:
- explicit DeployConfigurationFactory(QObject *parent = nullptr);
+ DeployConfigurationFactory();
// used to show the list of possible additons to a target, returns a list of types
- virtual QList<Core::Id> availableCreationIds(Target *parent) const = 0;
+ QList<Core::Id> availableCreationIds(Target *parent) const;
// used to translate the types to names to display to the user
- virtual QString displayNameForId(Core::Id id) const = 0;
+ QString displayNameForId(Core::Id id) const;
- virtual bool canCreate(Target *parent, Core::Id id) const = 0;
- virtual DeployConfiguration *create(Target *parent, Core::Id id) = 0;
+ virtual bool canHandle(ProjectExplorer::Target *target) const;
+
+ bool canCreate(Target *parent, Core::Id id) const;
+ virtual DeployConfiguration *create(Target *parent, Core::Id id);
// used to recreate the runConfigurations when restoring settings
- virtual bool canRestore(Target *parent, const QVariantMap &map) const = 0;
- virtual DeployConfiguration *restore(Target *parent, const QVariantMap &map) = 0;
- virtual bool canClone(Target *parent, DeployConfiguration *product) const = 0;
- virtual DeployConfiguration *clone(Target *parent, DeployConfiguration *product) = 0;
+ bool canRestore(Target *parent, const QVariantMap &map) const;
+ DeployConfiguration *restore(Target *parent, const QVariantMap &map);
+ bool canClone(Target *parent, DeployConfiguration *product) const;
+ DeployConfiguration *clone(Target *parent, DeployConfiguration *product);
static DeployConfigurationFactory *find(Target *parent, const QVariantMap &map);
static QList<DeployConfigurationFactory *> find(Target *parent);
static DeployConfigurationFactory *find(Target *parent, DeployConfiguration *dc);
+ void setSupportedTargetDeviceTypes(const QList<Core::Id> &ids);
+ void setDefaultDisplayName(const QString &defaultDisplayName);
+ void setSupportedProjectType(Core::Id id);
+
+protected:
+ virtual QList<QString> availableBuildTargets(Target *parent) const;
+ virtual QString displayNameForBuildTarget(const QString &buildTarget) const;
+
+ using DeployConfigurationCreator = std::function<DeployConfiguration *(Target *)>;
+
+ template <class DeployConfig>
+ void registerDeployConfiguration(Core::Id deployConfigBaseId)
+ {
+ m_creator = [this](Target *t) {
+ auto dc = new DeployConfig(t);
+ dc->setDefaultDisplayName(m_defaultDisplayName);
+ return dc;
+ };
+ m_deployConfigBaseId = deployConfigBaseId;
+ }
+
signals:
void availableCreationIdsChanged();
+
+private:
+ DeployConfigurationCreator m_creator;
+ Core::Id m_deployConfigBaseId;
+ Core::Id m_supportedProjectType;
+ QList<Core::Id> m_supportedTargetDeviceTypes;
+ QString m_defaultDisplayName;
};
class DefaultDeployConfigurationFactory : public DeployConfigurationFactory
{
public:
- QList<Core::Id> availableCreationIds(Target *parent) const override;
- // used to translate the types to names to display to the user
- QString displayNameForId(Core::Id id) const override;
- bool canCreate(Target *parent, Core::Id id) const override;
- DeployConfiguration *create(Target *parent, Core::Id id) override;
- bool canRestore(Target *parent, const QVariantMap &map) const override;
- DeployConfiguration *restore(Target *parent, const QVariantMap &map) override;
- bool canClone(Target *parent, DeployConfiguration *product) const override;
- DeployConfiguration *clone(Target *parent, DeployConfiguration *product) override;
+ DefaultDeployConfigurationFactory();
+
private:
- bool canHandle(Target *parent) const;
+ bool canHandle(Target *parent) const override;
};
} // namespace ProjectExplorer