From: dt Date: Fri, 18 Mar 2011 15:36:25 +0000 (+0100) Subject: Qt4 Maemo: Simplfy code for adding OTHER_FILES to .pro file X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4827d3aa7f6392d18a5d27ba90fb501239fe28ed;p=qt-creator-jp%2Fqt-creator-jp.git Qt4 Maemo: Simplfy code for adding OTHER_FILES to .pro file Task-Nr: QTCREATORBUG-4085 --- diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 6949ea44e3..a19f52dd0b 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2267,8 +2267,13 @@ void ProjectExplorerPlugin::addExistingFiles() void ProjectExplorerPlugin::addExistingFiles(const QStringList &filePaths) { ProjectNode *projectNode = qobject_cast(d->m_currentNode->projectNode()); + addExistingFiles(projectNode, filePaths); +} + +void ProjectExplorerPlugin::addExistingFiles(ProjectNode *projectNode, const QStringList &filePaths) +{ Core::ICore *core = Core::ICore::instance(); - const QString dir = directoryFor(d->m_currentNode); + const QString dir = directoryFor(projectNode); QStringList fileNames = filePaths; QHash fileTypeToFiles; foreach (const QString &fileName, fileNames) { diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index 11389dc6e8..f7c66b53a5 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -61,6 +61,7 @@ class IRunControlFactory; class Project; class Node; class BuildConfiguration; +class ProjectNode; namespace Internal { class ProjectFileFactory; @@ -120,6 +121,7 @@ public: void runProject(Project *pro, const QString &mode); void runRunConfiguration(ProjectExplorer::RunConfiguration *rc, const QString &mode); + void addExistingFiles(ProjectExplorer::ProjectNode *projectNode, const QStringList &filePaths); void addExistingFiles(const QStringList &filePaths); signals: diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.cpp b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.cpp index ab56ae9e76..81a37bc2ae 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.cpp @@ -115,8 +115,9 @@ AbstractQt4MaemoTarget::AbstractQt4MaemoTarget(Qt4Project *parent, const QString { setIcon(QIcon(":/projectexplorer/images/MaemoDevice.png")); connect(parent, SIGNAL(addedTarget(ProjectExplorer::Target*)), - this, SLOT(handleTargetAdded(ProjectExplorer::Target*)), - Qt::QueuedConnection); // Otherwise ProjextExplorerPlugin::addExistingFiles() won't be ready. + this, SLOT(handleTargetAdded(ProjectExplorer::Target*))); + connect(parent, SIGNAL(fromMapFinished()), + this, SLOT(handleFromMapFinished())); } AbstractQt4MaemoTarget::~AbstractQt4MaemoTarget() @@ -273,11 +274,24 @@ QSharedPointer AbstractQt4MaemoTarget::openFile(const QString &filePath, return file; } +void AbstractQt4MaemoTarget::handleFromMapFinished() +{ + handleTargetAdded(this); +} + void AbstractQt4MaemoTarget::handleTargetAdded(ProjectExplorer::Target *target) { if (target != this) return; + if (!project()->rootProjectNode()) { + // Project is not fully setup yet, happens on new project + // we wait for the fromMapFinished that comes afterwards + return; + } + + disconnect(project(), SIGNAL(fromMapFinished()), + this, SLOT(handleFromMapFinished())); disconnect(project(), SIGNAL(addedTarget(ProjectExplorer::Target*)), this, SLOT(handleTargetAdded(ProjectExplorer::Target*))); connect(project(), SIGNAL(aboutToRemoveTarget(ProjectExplorer::Target*)), @@ -346,7 +360,7 @@ AbstractQt4MaemoTarget::ActionStatus AbstractQt4MaemoTarget::createTemplates() .arg(files.join(QLatin1String("\n "))), QMessageBox::Yes | QMessageBox::No); if (button == QMessageBox::Yes) - ProjectExplorer::ProjectExplorerPlugin::instance()->addExistingFiles(files); + ProjectExplorer::ProjectExplorerPlugin::instance()->addExistingFiles(project()->rootProjectNode(), files); } return actionStatus; } diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h index 65fc6e8092..2130e6d842 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h +++ b/src/plugins/qt4projectmanager/qt-maemo/qt4maemotarget.h @@ -104,6 +104,7 @@ protected: private slots: void handleTargetAdded(ProjectExplorer::Target *target); + void handleFromMapFinished(); void handleTargetToBeRemoved(ProjectExplorer::Target *target); private: diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 709767aebb..a3339ee487 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -348,6 +348,8 @@ bool Qt4Project::fromMap(const QVariantMap &map) connect(this, SIGNAL(activeTargetChanged(ProjectExplorer::Target*)), this, SLOT(activeTargetWasChanged())); + emit fromMapFinished(); + return true; } diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index 3fe2e7ffdf..4895eb0a9c 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -191,6 +191,7 @@ signals: void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node, bool); void proFileInvalidated(Qt4ProjectManager::Internal::Qt4ProFileNode *node); void buildDirectoryInitialized(); + void fromMapFinished(); public slots: void proFileParseError(const QString &errorMessage);