diff options
author | hjk <hjk@qt.io> | 2019-03-14 09:17:59 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-03-18 14:14:28 +0000 |
commit | fb4d8b5a01440046d19b27449261b98415fefdf5 (patch) | |
tree | 31069a7a29afb95f62037150cc9a76fb1b437f53 /src/plugins/projectexplorer/kitmanager.h | |
parent | fbc043c96d66d35c02d50f75c7bdea5876bc7d2c (diff) |
ProjectExplorer: Make kit aspects self-register
Also, construct the KitManager implicitly when the first
KitAspect is created. Ramp-down is still explicit and
somewhat odd.
Change-Id: If1506e1d0789ecabbaad2d8008851d0b42c5218b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/kitmanager.h')
-rw-r--r-- | src/plugins/projectexplorer/kitmanager.h | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h index c771980048..0a1fc213a1 100644 --- a/src/plugins/projectexplorer/kitmanager.h +++ b/src/plugins/projectexplorer/kitmanager.h @@ -63,7 +63,7 @@ class KitModel; * * One piece of information stored in the kit. * - * This needs to get registered with the \a KitManager. + * They auto-register with the \a KitManager for their life time */ class PROJECTEXPLORER_EXPORT KitAspect : public QObject { @@ -105,6 +105,9 @@ public: virtual bool isApplicableToKit(const Kit *) const { return true; } protected: + KitAspect(); + ~KitAspect(); + void setId(Core::Id id) { m_id = id; } void setDisplayName(const QString &name) { m_displayName = name; } void setDescription(const QString &desc) { m_description = desc; } @@ -175,11 +178,6 @@ public: static void deregisterKit(Kit *k); static void setDefaultKit(Kit *k); - template<typename KI, typename... Args> - static void registerKitAspect(Args&&... args) { - registerKitAspect(std::make_unique<KI>(std::forward<Args>(args)...)); - } - static QSet<Core::Id> supportedPlatforms(); static QSet<Core::Id> availableFeatures(Core::Id platformId); @@ -204,20 +202,16 @@ signals: void kitsLoaded(); private: - explicit KitManager(QObject *parent = nullptr); + KitManager(); + + static void destroy(); - static void registerKitAspect(std::unique_ptr<KitAspect> &&ki); + static void registerKitAspect(KitAspect *ki); + static void deregisterKitAspect(KitAspect *ki); // Make sure the this is only called after all // KitAspects are registered! - void restoreKits(); - class KitList - { - public: - Core::Id defaultKit; - std::vector<std::unique_ptr<Kit>> kits; - }; - KitList restoreKits(const Utils::FileName &fileName); + static void restoreKits(); static void notifyAboutUpdate(Kit *k); static void completeKit(Kit *k); @@ -225,7 +219,7 @@ private: friend class ProjectExplorerPlugin; // for constructor friend class Kit; friend class Internal::KitModel; - friend class KitAspect; // for notifyAbutUpdate + friend class KitAspect; // for notifyAboutUpdate and self-registration }; } // namespace ProjectExplorer |