aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/kitmanager.h
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-03-14 09:17:59 +0100
committerhjk <hjk@qt.io>2019-03-18 14:14:28 +0000
commitfb4d8b5a01440046d19b27449261b98415fefdf5 (patch)
tree31069a7a29afb95f62037150cc9a76fb1b437f53 /src/plugins/projectexplorer/kitmanager.h
parentfbc043c96d66d35c02d50f75c7bdea5876bc7d2c (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.h28
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