diff options
12 files changed, 74 insertions, 63 deletions
diff --git a/src/plugins/android/androiddeployconfiguration.cpp b/src/plugins/android/androiddeployconfiguration.cpp index 327d08668a..7f68941d97 100644 --- a/src/plugins/android/androiddeployconfiguration.cpp +++ b/src/plugins/android/androiddeployconfiguration.cpp @@ -135,10 +135,5 @@ QString AndroidDeployConfigurationFactory::displayNameForId(Core::Id id) const return QString(); } -bool AndroidDeployConfigurationFactory::canHandle(Target *parent) const -{ - return AndroidManager::supportsAndroid(parent); -} - } // namespace Internal } // namespace Android diff --git a/src/plugins/android/androiddeployconfiguration.h b/src/plugins/android/androiddeployconfiguration.h index d414fcf4b7..8e5530a58d 100644 --- a/src/plugins/android/androiddeployconfiguration.h +++ b/src/plugins/android/androiddeployconfiguration.h @@ -70,9 +70,6 @@ public: QList<Core::Id> availableCreationIds(ProjectExplorer::Target *parent) const; // used to translate the ids to names to display to the user QString displayNameForId(Core::Id id) const; - -private: - bool canHandle(ProjectExplorer::Target *parent) const; }; } // namespace Internal diff --git a/src/plugins/ios/iosdeployconfiguration.cpp b/src/plugins/ios/iosdeployconfiguration.cpp index a2dbce94d7..e1940553ee 100644 --- a/src/plugins/ios/iosdeployconfiguration.cpp +++ b/src/plugins/ios/iosdeployconfiguration.cpp @@ -128,10 +128,5 @@ QString IosDeployConfigurationFactory::displayNameForId(Core::Id id) const return QString(); } -bool IosDeployConfigurationFactory::canHandle(Target *parent) const -{ - return IosManager::supportsIos(parent); -} - } // namespace Internal } // namespace Ios diff --git a/src/plugins/ios/iosdeployconfiguration.h b/src/plugins/ios/iosdeployconfiguration.h index 86080d23e9..90974b12ad 100644 --- a/src/plugins/ios/iosdeployconfiguration.h +++ b/src/plugins/ios/iosdeployconfiguration.h @@ -72,9 +72,6 @@ public: QList<Core::Id> availableCreationIds(ProjectExplorer::Target *parent) const Q_DECL_OVERRIDE; // used to translate the ids to names to display to the user QString displayNameForId(Core::Id id) const Q_DECL_OVERRIDE; - -private: - bool canHandle(ProjectExplorer::Target *parent) const Q_DECL_OVERRIDE; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/deployconfiguration.cpp b/src/plugins/projectexplorer/deployconfiguration.cpp index 1c39a177b5..3ed2a4e707 100644 --- a/src/plugins/projectexplorer/deployconfiguration.cpp +++ b/src/plugins/projectexplorer/deployconfiguration.cpp @@ -182,14 +182,42 @@ DeployConfigurationFactory::DeployConfigurationFactory(QObject *parent) : DeployConfigurationFactory::~DeployConfigurationFactory() { } -QList<Core::Id> DeployConfigurationFactory::availableCreationIds(Target *parent) const +DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, const QVariantMap &map) +{ + return ExtensionSystem::PluginManager::getObject<DeployConfigurationFactory>( + [&parent, &map](DeployConfigurationFactory *factory) { + return factory->canRestore(parent, map); + }); +} + +QList<DeployConfigurationFactory *> DeployConfigurationFactory::find(Target *parent) +{ + return ExtensionSystem::PluginManager::getObjects<DeployConfigurationFactory>( + [&parent](DeployConfigurationFactory *factory) { + return !factory->availableCreationIds(parent).isEmpty(); + }); +} + +DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, DeployConfiguration *dc) +{ + return ExtensionSystem::PluginManager::getObject<DeployConfigurationFactory>( + [&parent, &dc](DeployConfigurationFactory *factory) { + return factory->canClone(parent, dc); + }); +} + +/// +// DefaultDeployConfigurationFactory +/// + +QList<Core::Id> DefaultDeployConfigurationFactory::availableCreationIds(Target *parent) const { if (!canHandle(parent)) return QList<Core::Id>(); return QList<Core::Id>() << Core::Id(Constants::DEFAULT_DEPLOYCONFIGURATION_ID); } -QString DeployConfigurationFactory::displayNameForId(Core::Id id) const +QString DefaultDeployConfigurationFactory::displayNameForId(Core::Id id) const { if (id == Constants::DEFAULT_DEPLOYCONFIGURATION_ID) //: Display name of the default deploy configuration @@ -197,26 +225,26 @@ QString DeployConfigurationFactory::displayNameForId(Core::Id id) const return QString(); } -bool DeployConfigurationFactory::canCreate(Target *parent, Core::Id id) const +bool DefaultDeployConfigurationFactory::canCreate(Target *parent, Core::Id id) const { if (!canHandle(parent)) return false; return id == Constants::DEFAULT_DEPLOYCONFIGURATION_ID; } -DeployConfiguration *DeployConfigurationFactory::create(Target *parent, Core::Id id) +DeployConfiguration *DefaultDeployConfigurationFactory::create(Target *parent, Core::Id id) { if (!canCreate(parent, id)) return 0; return new DefaultDeployConfiguration(parent, id); } -bool DeployConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const +bool DefaultDeployConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const { return canCreate(parent, idFromMap(map)); } -DeployConfiguration *DeployConfigurationFactory::restore(Target *parent, const QVariantMap &map) +DeployConfiguration *DefaultDeployConfigurationFactory::restore(Target *parent, const QVariantMap &map) { if (!canRestore(parent, map)) return 0; @@ -228,43 +256,19 @@ DeployConfiguration *DeployConfigurationFactory::restore(Target *parent, const Q return dc; } -bool DeployConfigurationFactory::canClone(Target *parent, DeployConfiguration *product) const +bool DefaultDeployConfigurationFactory::canClone(Target *parent, DeployConfiguration *product) const { return canCreate(parent, product->id()); } -DeployConfiguration *DeployConfigurationFactory::clone(Target *parent, DeployConfiguration *product) +DeployConfiguration *DefaultDeployConfigurationFactory::clone(Target *parent, DeployConfiguration *product) { if (!canClone(parent, product)) return 0; return new DefaultDeployConfiguration(parent, product); } -DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, const QVariantMap &map) -{ - return ExtensionSystem::PluginManager::getObject<DeployConfigurationFactory>( - [&parent, &map](DeployConfigurationFactory *factory) { - return factory->canRestore(parent, map); - }); -} - -QList<DeployConfigurationFactory *> DeployConfigurationFactory::find(Target *parent) -{ - return ExtensionSystem::PluginManager::getObjects<DeployConfigurationFactory>( - [&parent](DeployConfigurationFactory *factory) { - return !factory->availableCreationIds(parent).isEmpty(); - }); -} - -DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, DeployConfiguration *dc) -{ - return ExtensionSystem::PluginManager::getObject<DeployConfigurationFactory>( - [&parent, &dc](DeployConfigurationFactory *factory) { - return factory->canClone(parent, dc); - }); -} - -bool DeployConfigurationFactory::canHandle(Target *parent) const +bool DefaultDeployConfigurationFactory::canHandle(Target *parent) const { if (!parent->project()->supportsKit(parent->kit()) || parent->project()->needsSpecialDeployment()) return false; diff --git a/src/plugins/projectexplorer/deployconfiguration.h b/src/plugins/projectexplorer/deployconfiguration.h index aed5611091..92734be0ac 100644 --- a/src/plugins/projectexplorer/deployconfiguration.h +++ b/src/plugins/projectexplorer/deployconfiguration.h @@ -84,7 +84,7 @@ private: class PROJECTEXPLORER_EXPORT DefaultDeployConfiguration : public DeployConfiguration { Q_OBJECT - friend class DeployConfigurationFactory; // for the ctors + friend class DefaultDeployConfigurationFactory; // for the ctors protected: DefaultDeployConfiguration(Target *target, Core::Id id); DefaultDeployConfiguration(Target *target, DeployConfiguration *source); @@ -100,17 +100,17 @@ public: virtual ~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; + virtual QList<Core::Id> availableCreationIds(Target *parent) const = 0; // used to translate the types to names to display to the user - virtual QString displayNameForId(Core::Id id) const; + virtual QString displayNameForId(Core::Id id) const = 0; - virtual bool canCreate(Target *parent, Core::Id id) const; - virtual DeployConfiguration *create(Target *parent, Core::Id id); + virtual bool canCreate(Target *parent, Core::Id id) const = 0; + virtual DeployConfiguration *create(Target *parent, Core::Id id) = 0; // used to recreate the runConfigurations when restoring settings - virtual bool canRestore(Target *parent, const QVariantMap &map) const; - virtual DeployConfiguration *restore(Target *parent, const QVariantMap &map); - virtual bool canClone(Target *parent, DeployConfiguration *product) const; - virtual DeployConfiguration *clone(Target *parent, DeployConfiguration *product); + 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; static DeployConfigurationFactory *find(Target *parent, const QVariantMap &map); static QList<DeployConfigurationFactory *> find(Target *parent); @@ -118,11 +118,22 @@ public: signals: void availableCreationIdsChanged(); +}; -protected: - virtual bool canHandle(Target *parent) const; - +class DefaultDeployConfigurationFactory : public DeployConfigurationFactory +{ +public: + QList<Core::Id> availableCreationIds(Target *parent) const; + // used to translate the types to names to display to the user + QString displayNameForId(Core::Id id) const; + bool canCreate(Target *parent, Core::Id id) const; + DeployConfiguration *create(Target *parent, Core::Id id); + 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); private: + bool canHandle(Target *parent) const; }; } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 30e251459a..7c57dbd7a9 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1008,7 +1008,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er addAutoReleasedObject(new ProjectTreeWidgetFactory); addAutoReleasedObject(new FolderNavigationWidgetFactory); - addAutoReleasedObject(new DeployConfigurationFactory); + addAutoReleasedObject(new DefaultDeployConfigurationFactory); QSettings *s = ICore::settings(); const QStringList fileNames = diff --git a/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.cpp b/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.cpp index 933a4e9f2d..71f45eabf5 100644 --- a/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.cpp +++ b/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.cpp @@ -142,6 +142,11 @@ ProjectExplorer::DeployConfiguration return dc; } +bool QbsDeployConfigurationFactory::canClone(ProjectExplorer::Target *parent, ProjectExplorer::DeployConfiguration *product) const +{ + return canCreate(parent, product->id()); +} + ProjectExplorer::DeployConfiguration *QbsDeployConfigurationFactory::clone(ProjectExplorer::Target *parent, ProjectExplorer::DeployConfiguration *product) diff --git a/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.h b/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.h index c9fb2eefac..2965f9de67 100644 --- a/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.h +++ b/src/plugins/qbsprojectmanager/qbsdeployconfigurationfactory.h @@ -69,6 +69,7 @@ public: ProjectExplorer::DeployConfiguration *create(ProjectExplorer::Target *parent, Core::Id id); bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const; ProjectExplorer::DeployConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map); + bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::DeployConfiguration *product) const; ProjectExplorer::DeployConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::DeployConfiguration *product); }; diff --git a/src/plugins/qnx/qnxdeployconfigurationfactory.h b/src/plugins/qnx/qnxdeployconfigurationfactory.h index 1899f1301b..215f90a704 100644 --- a/src/plugins/qnx/qnxdeployconfigurationfactory.h +++ b/src/plugins/qnx/qnxdeployconfigurationfactory.h @@ -58,7 +58,7 @@ public: ProjectExplorer::DeployConfiguration *source) const; ProjectExplorer::DeployConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::DeployConfiguration *source); - +private: bool canHandle(ProjectExplorer::Target *t) const; }; diff --git a/src/plugins/remotelinux/remotelinuxdeployconfigurationfactory.cpp b/src/plugins/remotelinux/remotelinuxdeployconfigurationfactory.cpp index b058ef2cdd..bee60f7d2b 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfigurationfactory.cpp +++ b/src/plugins/remotelinux/remotelinuxdeployconfigurationfactory.cpp @@ -115,6 +115,11 @@ DeployConfiguration *RemoteLinuxDeployConfigurationFactory::restore(Target *pare return dc; } +bool RemoteLinuxDeployConfigurationFactory::canClone(Target *parent, DeployConfiguration *product) const +{ + return canCreate(parent, product->id()); +} + DeployConfiguration *RemoteLinuxDeployConfigurationFactory::clone(Target *parent, DeployConfiguration *product) { diff --git a/src/plugins/remotelinux/remotelinuxdeployconfigurationfactory.h b/src/plugins/remotelinux/remotelinuxdeployconfigurationfactory.h index fd919e4e09..74b482c602 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfigurationfactory.h +++ b/src/plugins/remotelinux/remotelinuxdeployconfigurationfactory.h @@ -48,6 +48,7 @@ public: ProjectExplorer::DeployConfiguration *create(ProjectExplorer::Target *parent, Core::Id id); bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const; ProjectExplorer::DeployConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map); + bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::DeployConfiguration *product) const; ProjectExplorer::DeployConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::DeployConfiguration *product); |