diff options
Diffstat (limited to 'src/plugins/projectexplorer/deployconfiguration.h')
-rw-r--r-- | src/plugins/projectexplorer/deployconfiguration.h | 97 |
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 |