From 872da99bbf5027d0eb4e84584f18b8f0093144ba Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@digia.com>
Date: Thu, 28 Feb 2013 14:41:43 +0100
Subject: [PATCH] QtVersionManager: Add method isLoaded()

This method will be used to assert that we are in a good state.

Change-Id: I2ea5067d90c9920cc529226444696709dd27b682
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
---
 src/plugins/qtsupport/qtversionmanager.cpp | 12 ++++++++++++
 src/plugins/qtsupport/qtversionmanager.h   |  3 +++
 2 files changed, 15 insertions(+)

diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp
index 6c83b053f40..4a97026564e 100644
--- a/src/plugins/qtsupport/qtversionmanager.cpp
+++ b/src/plugins/qtsupport/qtversionmanager.cpp
@@ -143,6 +143,7 @@ void QtVersionManager::extensionsInitialized()
         findSystemQt();
     }
 
+    emit qtVersionsLoaded();
     emit qtVersionsChanged(m_versions.keys(), QList<int>(), QList<int>());
     saveQtVersions();
 
@@ -162,6 +163,11 @@ bool QtVersionManager::delayedInitialize()
     return true;
 }
 
+bool QtVersionManager::isLoaded() const
+{
+    return m_writer;
+}
+
 QtVersionManager::~QtVersionManager()
 {
     delete m_writer;
@@ -232,6 +238,7 @@ bool QtVersionManager::restoreQtVersions()
                      qPrintable(filename.toUserOutput()));
     }
     ++m_idcount;
+
     return true;
 }
 
@@ -398,6 +405,7 @@ void QtVersionManager::findSystemQt()
 
 void QtVersionManager::addVersion(BaseQtVersion *version)
 {
+    QTC_ASSERT(m_writer, return);
     QTC_ASSERT(version != 0, return);
     if (m_versions.contains(version->uniqueId()))
         return;
@@ -453,6 +461,7 @@ int QtVersionManager::getUniqueId()
 QList<BaseQtVersion *> QtVersionManager::versions() const
 {
     QList<BaseQtVersion *> versions;
+    QTC_ASSERT(isLoaded(), return versions);
     foreach (BaseQtVersion *version, m_versions)
         versions << version;
     qSort(versions.begin(), versions.end(), &qtVersionNumberCompare);
@@ -462,6 +471,7 @@ QList<BaseQtVersion *> QtVersionManager::versions() const
 QList<BaseQtVersion *> QtVersionManager::validVersions() const
 {
     QList<BaseQtVersion *> results;
+    QTC_ASSERT(isLoaded(), return results);
     foreach (BaseQtVersion *v, m_versions) {
         if (v->isValid())
             results.append(v);
@@ -472,6 +482,7 @@ QList<BaseQtVersion *> QtVersionManager::validVersions() const
 
 bool QtVersionManager::isValidId(int id) const
 {
+    QTC_ASSERT(isLoaded(), return false);
     return m_versions.contains(id);
 }
 
@@ -508,6 +519,7 @@ QString QtVersionManager::displayNameForPlatform(const QString &string) const
 
 BaseQtVersion *QtVersionManager::version(int id) const
 {
+    QTC_ASSERT(isLoaded(), return 0);
     QMap<int, BaseQtVersion *>::const_iterator it = m_versions.find(id);
     if (it == m_versions.constEnd())
         return 0;
diff --git a/src/plugins/qtsupport/qtversionmanager.h b/src/plugins/qtsupport/qtversionmanager.h
index 6df52625978..0701fd42c9f 100644
--- a/src/plugins/qtsupport/qtversionmanager.h
+++ b/src/plugins/qtsupport/qtversionmanager.h
@@ -68,6 +68,8 @@ public:
     void extensionsInitialized();
     bool delayedInitialize();
 
+    bool isLoaded() const;
+
     // This will *always* return at least one (Qt in Path), even if that is
     // unconfigured.
     QList<BaseQtVersion *> versions() const;
@@ -99,6 +101,7 @@ signals:
     // content of BaseQtVersion objects with qmake path might have changed
     void dumpUpdatedFor(const Utils::FileName &qmakeCommand);
     void qtVersionsChanged(const QList<int> &addedIds, const QList<int> &removedIds, const QList<int> &changedIds);
+    void qtVersionsLoaded();
 
 public slots:
     void updateDumpFor(const Utils::FileName &qmakeCommand);
-- 
GitLab