Don't allow opening the same generic project multiple times

Quick fix by copying code also found in Qt4 and QML project managers.
Would be better to have some common solution...

Task-number: QTCREATORBUG-1383
This commit is contained in:
Thorbjørn Lindeijer
2010-05-17 16:18:34 +02:00
parent 896f474511
commit 2816ccbd37
4 changed files with 18 additions and 8 deletions

View File

@@ -32,8 +32,11 @@
#include "genericproject.h" #include "genericproject.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h>
#include <coreplugin/uniqueidmanager.h> #include <coreplugin/uniqueidmanager.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/session.h>
#include <QtDebug> #include <QtDebug>
@@ -60,14 +63,21 @@ QString Manager::mimeType() const
ProjectExplorer::Project *Manager::openProject(const QString &fileName) ProjectExplorer::Project *Manager::openProject(const QString &fileName)
{ {
QFileInfo fileInfo(fileName); if (!QFileInfo(fileName).isFile())
return 0;
if (fileInfo.isFile()) { ProjectExplorer::ProjectExplorerPlugin *projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance();
GenericProject *project = new GenericProject(this, fileName); foreach (ProjectExplorer::Project *pi, projectExplorer->session()->projects()) {
return project; if (fileName == pi->file()->fileName()) {
Core::MessageManager *messageManager = Core::ICore::instance()->messageManager();
messageManager->printToOutputPanePopup(tr("Failed opening project '%1': Project already open")
.arg(QDir::toNativeSeparators(fileName)));
return 0;
}
} }
return 0; GenericProject *project = new GenericProject(this, fileName);
return project;
} }
void Manager::registerProject(GenericProject *project) void Manager::registerProject(GenericProject *project)