aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/modeleditor/modelindexer.cpp29
-rw-r--r--src/plugins/modeleditor/modelindexer.h5
2 files changed, 21 insertions, 13 deletions
diff --git a/src/plugins/modeleditor/modelindexer.cpp b/src/plugins/modeleditor/modelindexer.cpp
index c5a44375085..5186a269f33 100644
--- a/src/plugins/modeleditor/modelindexer.cpp
+++ b/src/plugins/modeleditor/modelindexer.cpp
@@ -399,17 +399,20 @@ void ModelIndexer::scanProject(ProjectExplorer::Project *project)
QQueue<QueuedFile> filesQueue;
QSet<QueuedFile> filesSet;
- for (const Utils::FilePath &file : files) {
- QFileInfo fileInfo = file.toFileInfo();
- Utils::MimeType mimeType = Utils::mimeTypeForFile(fileInfo);
- if (mimeType.name() == QLatin1String(Constants::MIME_TYPE_MODEL)) {
- QueuedFile queuedFile(file.toString(), project, fileInfo.lastModified());
- filesQueue.append(queuedFile);
- filesSet.insert(queuedFile);
+ const Utils::MimeType modelMimeType = Utils::mimeTypeForName(Constants::MIME_TYPE_MODEL);
+ if (modelMimeType.isValid()) {
+ for (const Utils::FilePath &file : files) {
+ const QFileInfo fileInfo = file.toFileInfo();
+ if (modelMimeType.suffixes().contains(fileInfo.completeSuffix())) {
+ QueuedFile queuedFile(file.toString(), project, fileInfo.lastModified());
+ filesQueue.append(queuedFile);
+ filesSet.insert(queuedFile);
+ }
}
}
- QString defaultModelFile = findFirstModel(project->rootProjectNode());
+ // FIXME: This potentially iterates over all files again.
+ QString defaultModelFile = findFirstModel(project->rootProjectNode(), modelMimeType);
bool filesAreQueued = false;
{
@@ -460,15 +463,17 @@ void ModelIndexer::scanProject(ProjectExplorer::Project *project)
emit filesQueued();
}
-QString ModelIndexer::findFirstModel(ProjectExplorer::FolderNode *folderNode)
+QString ModelIndexer::findFirstModel(ProjectExplorer::FolderNode *folderNode,
+ const Utils::MimeType &mimeType)
{
+ if (!mimeType.isValid())
+ return QString();
foreach (ProjectExplorer::FileNode *fileNode, folderNode->fileNodes()) {
- Utils::MimeType mimeType = Utils::mimeTypeForFile(fileNode->filePath().toFileInfo());
- if (mimeType.name() == QLatin1String(Constants::MIME_TYPE_MODEL))
+ if (mimeType.suffixes().contains(fileNode->filePath().toFileInfo().completeSuffix()))
return fileNode->filePath().toString();
}
foreach (ProjectExplorer::FolderNode *subFolderNode, folderNode->folderNodes()) {
- QString modelFileName = findFirstModel(subFolderNode);
+ QString modelFileName = findFirstModel(subFolderNode, mimeType);
if (!modelFileName.isEmpty())
return modelFileName;
}
diff --git a/src/plugins/modeleditor/modelindexer.h b/src/plugins/modeleditor/modelindexer.h
index da925977b6a..708ec26e9b4 100644
--- a/src/plugins/modeleditor/modelindexer.h
+++ b/src/plugins/modeleditor/modelindexer.h
@@ -34,6 +34,8 @@ class Project;
class FolderNode;
}
+namespace Utils { class MimeType; }
+
namespace ModelEditor {
namespace Internal {
@@ -72,7 +74,8 @@ private:
private:
void scanProject(ProjectExplorer::Project *project);
- QString findFirstModel(ProjectExplorer::FolderNode *folderNode);
+ QString findFirstModel(ProjectExplorer::FolderNode *folderNode,
+ const Utils::MimeType &mimeType);
void forgetProject(ProjectExplorer::Project *project);
void removeModelFile(const QString &file, ProjectExplorer::Project *project);
void removeDiagramReferenceFile(const QString &file, ProjectExplorer::Project *project);