From 9d7fc860bfbc41bd6f8bfbc317f7d276dc3069cb Mon Sep 17 00:00:00 2001
From: ck <qt-info@nokia.com>
Date: Thu, 8 Jul 2010 12:17:54 +0200
Subject: [PATCH] Maemo: Add watcher for project files.

Reviewed-by: kh1
---
 .../qt-maemo/maemodeployablelistmodel.cpp            |  2 +-
 .../qt4projectmanager/qt-maemo/maemodeployables.cpp  | 12 ++++++++++--
 .../qt4projectmanager/qt-maemo/maemodeployables.h    |  2 ++
 .../qt-maemo/maemopackagecreationwidget.cpp          | 10 ++++------
 4 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp
index caae7b25b03..920c61f075c 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployablelistmodel.cpp
@@ -219,7 +219,7 @@ QString MaemoDeployableListModel::projectName() const
 
 QString MaemoDeployableListModel::projectDir() const
 {
-    return m_proFileNode->path();
+    return QFileInfo(m_proFileNode->path()).dir().path();
 }
 
 } // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
index 52e8da93d99..203b0333a04 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.cpp
@@ -56,16 +56,24 @@ namespace Qt4ProjectManager {
 namespace Internal {
 
 MaemoDeployables::MaemoDeployables(MaemoPackageCreationStep *packagingStep)
-    : m_packagingStep(packagingStep)
+    : m_packagingStep(packagingStep), m_proFilesWatcher(0)
 {
     QTimer::singleShot(0, this, SLOT(createModels()));
 }
 
 void MaemoDeployables::createModels()
 {
-    const Qt4ProFileNode *rootNode = m_packagingStep->qt4BuildConfiguration()
+    m_listModels.clear();
+    Qt4ProFileNode *rootNode = m_packagingStep->qt4BuildConfiguration()
         ->qt4Target()->qt4Project()->rootProjectNode();
     createModels(rootNode);
+    if (!m_proFilesWatcher) {
+        m_proFilesWatcher = new Qt4NodesWatcher(this);
+        connect(m_proFilesWatcher,
+            SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
+            this, SLOT(createModels()));
+        rootNode->registerWatcher(m_proFilesWatcher);
+    }
     emit modelsCreated();
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.h b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.h
index 7c66c5d39ee..d732882f690 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeployables.h
@@ -51,6 +51,7 @@ namespace Qt4ProjectManager {
 namespace Internal {
 class MaemoDeployableListModel;
 class MaemoPackageCreationStep;
+class Qt4NodesWatcher;
 class Qt4ProFileNode;
 
 class MaemoDeployables : public QObject
@@ -75,6 +76,7 @@ private:
 
     QList<MaemoDeployableListModel *> m_listModels;
     MaemoPackageCreationStep * const m_packagingStep;
+    Qt4NodesWatcher *m_proFilesWatcher;
 };
 
 } // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp
index 4360badbbfe..6c0c5cf13f6 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationwidget.cpp
@@ -71,12 +71,9 @@ MaemoPackageCreationWidget::MaemoPackageCreationWidget(MaemoPackageCreationStep
     m_ui->patch->setValue(list.value(2, QLatin1String("0")).toInt());
     versionInfoChanged();
 
-    if (step->deployables()->modelCount() > 0) {
-        handleModelsCreated();
-    } else {
-        connect(m_step->deployables(), SIGNAL(modelsCreated()), this,
-            SLOT(handleModelsCreated()));
-    }
+    connect(m_step->deployables(), SIGNAL(modelsCreated()), this,
+        SLOT(handleModelsCreated()));
+    handleModelsCreated();
 }
 
 void MaemoPackageCreationWidget::init()
@@ -107,6 +104,7 @@ void MaemoPackageCreationWidget::versionInfoChanged()
 
 void MaemoPackageCreationWidget::handleModelsCreated()
 {
+    m_ui->tabWidget->clear();
     for (int i = 0; i < m_step->deployables()->modelCount(); ++i) {
         MaemoDeployableListModel * const model
             = m_step->deployables()->modelAt(i);
-- 
GitLab