From b3f0a1bfbba0b2455b0b99332f1296a67d8a2b50 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Mon, 8 Dec 2014 15:50:22 +0100 Subject: [PATCH] DeployConfigurationFactory: Properly extract the abstract class Make DeployConfigurationFactory a true base class. Introduce the DefaultDeployConfigurationFactory as the implementation that actually creates DefaultDeployConfigurations. This mostly moves code around. The virtual canHandle method was mostly unused and was removed from most classes. Change-Id: I170d94c648e67f3fe52a76ffb5344f389ae49efc Reviewed-by: Tobias Hunger --- .../android/androiddeployconfiguration.cpp | 5 - .../android/androiddeployconfiguration.h | 3 - src/plugins/ios/iosdeployconfiguration.cpp | 5 - src/plugins/ios/iosdeployconfiguration.h | 3 - .../projectexplorer/deployconfiguration.cpp | 122 +++++++++--------- .../projectexplorer/deployconfiguration.h | 35 +++-- .../projectexplorer/projectexplorer.cpp | 2 +- .../qbsdeployconfigurationfactory.cpp | 5 + .../qbsdeployconfigurationfactory.h | 1 + .../qnx/qnxdeployconfigurationfactory.h | 2 +- .../remotelinuxdeployconfigurationfactory.cpp | 5 + .../remotelinuxdeployconfigurationfactory.h | 1 + 12 files changed, 100 insertions(+), 89 deletions(-) diff --git a/src/plugins/android/androiddeployconfiguration.cpp b/src/plugins/android/androiddeployconfiguration.cpp index 327d08668a4..7f68941d97d 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 d414fcf4b76..8e5530a58d3 100644 --- a/src/plugins/android/androiddeployconfiguration.h +++ b/src/plugins/android/androiddeployconfiguration.h @@ -70,9 +70,6 @@ public: QList 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 a2dbce94d7d..e1940553eef 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 86080d23e96..90974b12adb 100644 --- a/src/plugins/ios/iosdeployconfiguration.h +++ b/src/plugins/ios/iosdeployconfiguration.h @@ -72,9 +72,6 @@ public: QList 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 1c39a177b52..3ed2a4e7072 100644 --- a/src/plugins/projectexplorer/deployconfiguration.cpp +++ b/src/plugins/projectexplorer/deployconfiguration.cpp @@ -182,64 +182,6 @@ DeployConfigurationFactory::DeployConfigurationFactory(QObject *parent) : DeployConfigurationFactory::~DeployConfigurationFactory() { } -QList DeployConfigurationFactory::availableCreationIds(Target *parent) const -{ - if (!canHandle(parent)) - return QList(); - return QList() << Core::Id(Constants::DEFAULT_DEPLOYCONFIGURATION_ID); -} - -QString DeployConfigurationFactory::displayNameForId(Core::Id id) const -{ - if (id == Constants::DEFAULT_DEPLOYCONFIGURATION_ID) - //: Display name of the default deploy configuration - return tr("Deploy Configuration"); - return QString(); -} - -bool DeployConfigurationFactory::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) -{ - if (!canCreate(parent, id)) - return 0; - return new DefaultDeployConfiguration(parent, id); -} - -bool DeployConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const -{ - return canCreate(parent, idFromMap(map)); -} - -DeployConfiguration *DeployConfigurationFactory::restore(Target *parent, const QVariantMap &map) -{ - if (!canRestore(parent, map)) - return 0; - DefaultDeployConfiguration *dc = new DefaultDeployConfiguration(parent, idFromMap(map)); - if (!dc->fromMap(map)) { - delete dc; - return 0; - } - return dc; -} - -bool DeployConfigurationFactory::canClone(Target *parent, DeployConfiguration *product) const -{ - return canCreate(parent, product->id()); -} - -DeployConfiguration *DeployConfigurationFactory::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( @@ -264,7 +206,69 @@ DeployConfigurationFactory *DeployConfigurationFactory::find(Target *parent, Dep }); } -bool DeployConfigurationFactory::canHandle(Target *parent) const +/// +// DefaultDeployConfigurationFactory +/// + +QList DefaultDeployConfigurationFactory::availableCreationIds(Target *parent) const +{ + if (!canHandle(parent)) + return QList(); + return QList() << Core::Id(Constants::DEFAULT_DEPLOYCONFIGURATION_ID); +} + +QString DefaultDeployConfigurationFactory::displayNameForId(Core::Id id) const +{ + if (id == Constants::DEFAULT_DEPLOYCONFIGURATION_ID) + //: Display name of the default deploy configuration + return tr("Deploy Configuration"); + return QString(); +} + +bool DefaultDeployConfigurationFactory::canCreate(Target *parent, Core::Id id) const +{ + if (!canHandle(parent)) + return false; + return id == Constants::DEFAULT_DEPLOYCONFIGURATION_ID; +} + +DeployConfiguration *DefaultDeployConfigurationFactory::create(Target *parent, Core::Id id) +{ + if (!canCreate(parent, id)) + return 0; + return new DefaultDeployConfiguration(parent, id); +} + +bool DefaultDeployConfigurationFactory::canRestore(Target *parent, const QVariantMap &map) const +{ + return canCreate(parent, idFromMap(map)); +} + +DeployConfiguration *DefaultDeployConfigurationFactory::restore(Target *parent, const QVariantMap &map) +{ + if (!canRestore(parent, map)) + return 0; + DefaultDeployConfiguration *dc = new DefaultDeployConfiguration(parent, idFromMap(map)); + if (!dc->fromMap(map)) { + delete dc; + return 0; + } + return dc; +} + +bool DefaultDeployConfigurationFactory::canClone(Target *parent, DeployConfiguration *product) const +{ + return canCreate(parent, product->id()); +} + +DeployConfiguration *DefaultDeployConfigurationFactory::clone(Target *parent, DeployConfiguration *product) +{ + if (!canClone(parent, product)) + return 0; + return new DefaultDeployConfiguration(parent, product); +} + +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 aed56110912..92734be0ac7 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 availableCreationIds(Target *parent) const; + virtual QList 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 find(Target *parent); @@ -118,11 +118,22 @@ public: signals: void availableCreationIdsChanged(); +}; -protected: - virtual bool canHandle(Target *parent) const; - +class DefaultDeployConfigurationFactory : public DeployConfigurationFactory +{ +public: + QList 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 30e251459af..7c57dbd7a9d 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 933a4e9f2dc..71f45eabf57 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 c9fb2eefac8..2965f9de67b 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 1899f1301b2..215f90a704e 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 b058ef2cdd9..bee60f7d2b6 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 fd919e4e098..74b482c6026 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);