From 80705c163fa18b91b4b5178c8c35829d9768264f Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Mon, 27 Jul 2009 12:28:25 +0200
Subject: [PATCH] Find examples also with shadow built Qt developer build.

Reviewed-by: Daniel Molkentin
---
 .../qt4projectmanager/qtversionmanager.cpp      |  9 +++------
 .../qt4projectmanager/qtversionmanager.h        |  1 -
 src/plugins/welcome/welcomemode.cpp             | 17 ++++++++++-------
 src/plugins/welcome/welcomemode.h               |  4 ++--
 4 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index e8323c2c624..aa655204ffc 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -121,11 +121,6 @@ QtVersionManager::QtVersionManager()
 
     writeVersionsIntoSettings();
 
-    if (Welcome::WelcomeMode *welcomeMode = qobject_cast<Welcome::WelcomeMode*>
-        (Core::ICore::instance()->modeManager()->mode(Core::Constants::MODE_WELCOME))) {
-        connect(this, SIGNAL(updatedExamples(QString, QString)),
-                welcomeMode, SIGNAL(updatedExamples(QString, QString)));
-    }
     updateDocumentation();
     updateExamples();
 }
@@ -190,7 +185,9 @@ void QtVersionManager::updateExamples()
         if (version->hasDemos())
             demosPath = version->demosPath();
         if (!examplesPath.isEmpty() && !demosPath.isEmpty()) {
-            emit updatedExamples(examplesPath, demosPath);
+            if (Welcome::WelcomeMode *welcomeMode = qobject_cast<Welcome::WelcomeMode*>
+                    (Core::ICore::instance()->modeManager()->mode(Core::Constants::MODE_WELCOME)))
+                welcomeMode->updateExamples(examplesPath, demosPath, version->sourcePath());
             return;
         }
     }
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index c1fe58f9f0d..0f2144c2500 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -201,7 +201,6 @@ public:
 signals:
     void defaultQtVersionChanged();
     void qtVersionsChanged();
-    void updatedExamples(const QString& examplesPath, const QString& demosPath);
 private:
     static QString findQMakeLine(const QString &directory);
     static QString trimLine(const QString line);
diff --git a/src/plugins/welcome/welcomemode.cpp b/src/plugins/welcome/welcomemode.cpp
index f712399dcc8..0035fefe7bb 100644
--- a/src/plugins/welcome/welcomemode.cpp
+++ b/src/plugins/welcome/welcomemode.cpp
@@ -169,9 +169,6 @@ WelcomeMode::WelcomeMode() :
     connect(m_d->ui.openExampleButton, SIGNAL(clicked()), SLOT(slotOpenExample()));
     connect(m_d->ui.examplesComboBox, SIGNAL(currentIndexChanged(int)), SLOT(slotEnableExampleButton(int)));
 
-    connect(this, SIGNAL(updatedExamples(QString, QString)),
-            this, SLOT(slotUpdateExamples(QString, QString)));
-
     connect(m_d->rssFetcher, SIGNAL(newsItemReady(QString, QString, QString)),
         m_d->ui.newsTreeWidget, SLOT(slotAddNewsItem(QString, QString, QString)));
 
@@ -315,11 +312,14 @@ void WelcomeMode::slotUrlClicked(const QString &data)
     QDesktopServices::openUrl(QUrl(data));
 }
 
-void WelcomeMode::slotUpdateExamples(const QString& examplePath, const QString& demosPath)
+void WelcomeMode::updateExamples(const QString& examplePath, const QString& demosPath, const QString &sourcePath)
 {
     QString demoxml = demosPath + "/qtdemo/xml/examples.xml";
-    if (!QFile::exists(demoxml))
-        return;
+    if (!QFile::exists(demoxml)) {
+        demoxml = sourcePath + "/demos/qtdemo/xml/examples.xml";
+        if (!QFile::exists(demoxml))
+            return;
+    }
 
     QFile description(demoxml);
     if (!description.open(QFile::ReadOnly))
@@ -353,7 +353,10 @@ void WelcomeMode::slotUpdateExamples(const QString& examplePath, const QString&
             if (inExamples && reader.name() == "example") {
                 QString name = reader.attributes().value(QLatin1String("name")).toString();
                 QString fn = reader.attributes().value(QLatin1String("filename")).toString();
-                QString fileName = examplePath + '/' + dirName + '/' + fn + '/' + fn + ".pro";
+                QString relativeProPath = '/' + dirName + '/' + fn + '/' + fn + ".pro";
+                QString fileName = examplePath + relativeProPath;
+                if (!QFile::exists(fileName))
+                    fileName = sourcePath + "/examples" + relativeProPath;
                 QString helpPath = "qthelp://com.trolltech.qt/qdoc/" + dirName.replace("/", "-") + "-" + fn + ".html";
 
                 m_d->ui.examplesComboBox->addItem("  " + name, fileName);
diff --git a/src/plugins/welcome/welcomemode.h b/src/plugins/welcome/welcomemode.h
index 3825b9dbef3..f5c6eb1b43c 100644
--- a/src/plugins/welcome/welcomemode.h
+++ b/src/plugins/welcome/welcomemode.h
@@ -76,20 +76,20 @@ public:
     void activated();
     QString contextHelpId() const { return QLatin1String("Qt Creator"); }
 
+    void updateExamples(const QString& examplePath, const QString& demosPath, const QString &demosPath);
+
 signals:
     void requestProject(const QString &project);
     void requestSession(const QString &session);
     void openHelpPage(const QString& url);
     void openContextHelpPage(const QString& url);
     void manageSessions();
-    void updatedExamples(const QString& examplePath, const QString& demosPath);
 
 private slots:
     void slotFeedback();
     void slotSessionClicked(const QString &data);
     void slotProjectClicked(const QString &data);
     void slotUrlClicked(const QString &data);
-    void slotUpdateExamples(const QString& examplePath, const QString& demosPath);
     void slotEnableExampleButton(int);
     void slotOpenExample();
     void slotCreateNewProject();
-- 
GitLab