aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2018-06-21 15:11:39 +0200
committerEike Ziller <eike.ziller@qt.io>2018-06-25 08:08:14 +0000
commita8c5af56a9438bdd8e6df2787082666350cb9b37 (patch)
tree7c1e9bdb74a7c57d18574667d574267d48998294
parente00218b997ad6c4061ab9c9ed7a29b1ab40b3563 (diff)
Remove unneeded checks for validity of mime types
mimeTypeForFile(...) is documented to never return an invalid mime type (it will fall back to binary if everything else fails), so remove unneeded checks. This also removes fallback code that used text/plain in case of invalid mime type, which is probably a relict from the old mime implementation. Change-Id: I88ed41fa3b81704f110f9f481b0f01424a487cbb Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r--src/plugins/coreplugin/dialogs/filepropertiesdialog.cpp3
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp61
-rw-r--r--src/plugins/coreplugin/editormanager/ieditorfactory.cpp5
-rw-r--r--src/plugins/coreplugin/mainwindow.cpp13
-rw-r--r--src/plugins/cppeditor/resourcepreviewhoverhandler.cpp12
-rw-r--r--src/plugins/cpptools/cppprojectfile.cpp2
-rw-r--r--src/plugins/designer/formeditorplugin.cpp2
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp49
8 files changed, 59 insertions, 88 deletions
diff --git a/src/plugins/coreplugin/dialogs/filepropertiesdialog.cpp b/src/plugins/coreplugin/dialogs/filepropertiesdialog.cpp
index 9f486a5e26b..73ef3ef1853 100644
--- a/src/plugins/coreplugin/dialogs/filepropertiesdialog.cpp
+++ b/src/plugins/coreplugin/dialogs/filepropertiesdialog.cpp
@@ -70,8 +70,7 @@ void FilePropertiesDialog::refresh()
m_ui->name->setText(fileInfo.fileName());
m_ui->path->setText(fileInfo.canonicalPath());
- const Utils::MimeType mt = Utils::mimeTypeForFile(fileInfo);
- m_ui->mimeType->setText(mt.isValid() ? mt.name() : tr("Undefined"));
+ m_ui->mimeType->setText(Utils::mimeTypeForFile(fileInfo).name());
const Core::EditorFactoryList factories = Core::IEditorFactory::editorFactories(m_fileName);
m_ui->defaultEditor->setText(!factories.isEmpty() ? factories.at(0)->displayName() : tr("Undefined"));
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index 318bc0a0714..aa7ed308510 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -936,10 +936,7 @@ void EditorManagerPrivate::showPopupOrSelectDocument()
Id EditorManagerPrivate::getOpenWithEditorId(const QString &fileName, bool *isExternalEditor)
{
// Collect editors that can open the file
- Utils::MimeType mt = Utils::mimeTypeForFile(fileName);
- //Unable to determine mime type of fileName. Falling back to text/plain",
- if (!mt.isValid())
- mt = Utils::mimeTypeForName("text/plain");
+ const Utils::MimeType mt = Utils::mimeTypeForFile(fileName);
QList<Id> allEditorIds;
QStringList allEditorDisplayNames;
QList<Id> externalEditorIds;
@@ -2470,37 +2467,33 @@ void EditorManager::populateOpenWithMenu(QMenu *menu, const QString &fileName)
menu->clear();
- bool anyMatches = false;
-
const Utils::MimeType mt = Utils::mimeTypeForFile(fileName);
- if (mt.isValid()) {
- const EditorFactoryList factories = IEditorFactory::editorFactories(mt, false);
- const ExternalEditorList extEditors = IExternalEditor::externalEditors(mt);
- anyMatches = !factories.empty() || !extEditors.empty();
- if (anyMatches) {
- // Add all suitable editors
- foreach (IEditorFactory *editorFactory, factories) {
- Core::Id editorId = editorFactory->id();
- // Add action to open with this very editor factory
- QString const actionTitle = editorFactory->displayName();
- QAction *action = menu->addAction(actionTitle);
- // Below we need QueuedConnection because otherwise, if a qrc file
- // is inside of a qrc file itself, and the qrc editor opens the Open with menu,
- // crashes happen, because the editor instance is deleted by openEditorWith
- // while the menu is still being processed.
- connect(action, &QAction::triggered, d,
- [fileName, editorId]() {
- EditorManagerPrivate::openEditorWith(fileName, editorId);
- }, Qt::QueuedConnection);
- }
- // Add all suitable external editors
- foreach (IExternalEditor *externalEditor, extEditors) {
- QAction *action = menu->addAction(externalEditor->displayName());
- Core::Id editorId = externalEditor->id();
- connect(action, &QAction::triggered, [fileName, editorId]() {
- EditorManager::openExternalEditor(fileName, editorId);
- });
- }
+ const EditorFactoryList factories = IEditorFactory::editorFactories(mt, false);
+ const ExternalEditorList extEditors = IExternalEditor::externalEditors(mt);
+ const bool anyMatches = !factories.empty() || !extEditors.empty();
+ if (anyMatches) {
+ // Add all suitable editors
+ foreach (IEditorFactory *editorFactory, factories) {
+ Core::Id editorId = editorFactory->id();
+ // Add action to open with this very editor factory
+ QString const actionTitle = editorFactory->displayName();
+ QAction *action = menu->addAction(actionTitle);
+ // Below we need QueuedConnection because otherwise, if a qrc file
+ // is inside of a qrc file itself, and the qrc editor opens the Open with menu,
+ // crashes happen, because the editor instance is deleted by openEditorWith
+ // while the menu is still being processed.
+ connect(action, &QAction::triggered, d,
+ [fileName, editorId]() {
+ EditorManagerPrivate::openEditorWith(fileName, editorId);
+ }, Qt::QueuedConnection);
+ }
+ // Add all suitable external editors
+ foreach (IExternalEditor *externalEditor, extEditors) {
+ QAction *action = menu->addAction(externalEditor->displayName());
+ Core::Id editorId = externalEditor->id();
+ connect(action, &QAction::triggered, [fileName, editorId]() {
+ EditorManager::openExternalEditor(fileName, editorId);
+ });
}
}
menu->setEnabled(anyMatches);
diff --git a/src/plugins/coreplugin/editormanager/ieditorfactory.cpp b/src/plugins/coreplugin/editormanager/ieditorfactory.cpp
index ad17ef5b2f6..46f3050abd5 100644
--- a/src/plugins/coreplugin/editormanager/ieditorfactory.cpp
+++ b/src/plugins/coreplugin/editormanager/ieditorfactory.cpp
@@ -65,11 +65,6 @@ const EditorFactoryList IEditorFactory::editorFactories(const QString &fileName,
const QFileInfo fileInfo(fileName);
// Find by mime type
Utils::MimeType mimeType = Utils::mimeTypeForFile(fileInfo);
- if (!mimeType.isValid()) {
- qWarning("%s unable to determine mime type of %s. Falling back to text/plain",
- Q_FUNC_INFO, fileName.toUtf8().constData());
- mimeType = Utils::mimeTypeForName("text/plain");
- }
// open text files > 48 MB in binary editor
if (fileInfo.size() > EditorManager::maxTextFileSize()
&& mimeType.inherits("text/plain")) {
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp
index c8ad39bea0c..53e2edcbf71 100644
--- a/src/plugins/coreplugin/mainwindow.cpp
+++ b/src/plugins/coreplugin/mainwindow.cpp
@@ -795,15 +795,10 @@ void MainWindow::openFile()
static IDocumentFactory *findDocumentFactory(const QList<IDocumentFactory*> &fileFactories,
const QFileInfo &fi)
{
- const MimeType mt = Utils::mimeTypeForFile(fi);
- if (mt.isValid()) {
- const QString typeName = mt.name();
- foreach (IDocumentFactory *factory, fileFactories) {
- if (factory->mimeTypes().contains(typeName))
- return factory;
- }
- }
- return 0;
+ const QString typeName = Utils::mimeTypeForFile(fi).name();
+ return Utils::findOrDefault(fileFactories, [typeName](IDocumentFactory *f) {
+ return f->mimeTypes().contains(typeName);
+ });
}
/*! Either opens \a fileNames with editors or loads a project.
diff --git a/src/plugins/cppeditor/resourcepreviewhoverhandler.cpp b/src/plugins/cppeditor/resourcepreviewhoverhandler.cpp
index a657fcd6bc3..a454361d302 100644
--- a/src/plugins/cppeditor/resourcepreviewhoverhandler.cpp
+++ b/src/plugins/cppeditor/resourcepreviewhoverhandler.cpp
@@ -200,14 +200,12 @@ QString ResourcePreviewHoverHandler::makeTooltip() const
QString ret;
const Utils::MimeType mimeType = Utils::mimeTypeForFile(m_resPath);
- if (mimeType.isValid()) {
- if (mimeType.name().startsWith("image", Qt::CaseInsensitive))
- ret += QString("<img src=\"file:///%1\" /><br/>").arg(m_resPath);
+ if (mimeType.name().startsWith("image", Qt::CaseInsensitive))
+ ret += QString("<img src=\"file:///%1\" /><br/>").arg(m_resPath);
- ret += QString("<a href=\"file:///%1\">%2</a>")
- .arg(m_resPath)
- .arg(QDir::toNativeSeparators(m_resPath));
- }
+ ret += QString("<a href=\"file:///%1\">%2</a>")
+ .arg(m_resPath)
+ .arg(QDir::toNativeSeparators(m_resPath));
return ret;
}
diff --git a/src/plugins/cpptools/cppprojectfile.cpp b/src/plugins/cpptools/cppprojectfile.cpp
index 2df1a287c76..e01d3726c9f 100644
--- a/src/plugins/cpptools/cppprojectfile.cpp
+++ b/src/plugins/cpptools/cppprojectfile.cpp
@@ -51,8 +51,6 @@ ProjectFile::Kind ProjectFile::classify(const QString &filePath)
return AmbiguousHeader;
const Utils::MimeType mimeType = Utils::mimeTypeForFile(filePath);
- if (!mimeType.isValid())
- return Unsupported;
const QString mt = mimeType.name();
if (mt == QLatin1String(CppTools::Constants::C_SOURCE_MIMETYPE))
return CSource;
diff --git a/src/plugins/designer/formeditorplugin.cpp b/src/plugins/designer/formeditorplugin.cpp
index 5198582c207..3972bd8f30f 100644
--- a/src/plugins/designer/formeditorplugin.cpp
+++ b/src/plugins/designer/formeditorplugin.cpp
@@ -160,8 +160,6 @@ static QString otherFile()
if (current.isEmpty())
return QString();
const Utils::MimeType currentMimeType = Utils::mimeTypeForFile(current);
- if (!currentMimeType.isValid())
- return QString();
// Determine potential suffixes of candidate files
// 'ui' -> 'cpp', 'cpp/h' -> 'ui'.
QStringList candidateSuffixes;
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 67157f370a5..3344761cda1 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -1819,36 +1819,31 @@ ProjectExplorerPlugin::OpenProjectResult ProjectExplorerPlugin::openProjects(con
}
Utils::MimeType mt = Utils::mimeTypeForFile(fileName);
- if (mt.isValid()) {
- if (ProjectManager::canOpenProjectForMimeType(mt)) {
- if (!QFileInfo(filePath).isFile()) {
- appendError(errorString,
- tr("Failed opening project \"%1\": Project is not a file.").arg(fileName));
- } else if (Project *pro = ProjectManager::openProject(mt, Utils::FileName::fromString(filePath))) {
- QObject::connect(pro, &Project::parsingFinished, [pro]() {
- emit SessionManager::instance()->projectFinishedParsing(pro);
- });
- QString restoreError;
- Project::RestoreResult restoreResult = pro->restoreSettings(&restoreError);
- if (restoreResult == Project::RestoreResult::Ok) {
- connect(pro, &Project::fileListChanged,
- m_instance, &ProjectExplorerPlugin::fileListChanged);
- SessionManager::addProject(pro);
- openedPro += pro;
- } else {
- if (restoreResult == Project::RestoreResult::Error)
- appendError(errorString, restoreError);
- delete pro;
- }
+ if (ProjectManager::canOpenProjectForMimeType(mt)) {
+ if (!QFileInfo(filePath).isFile()) {
+ appendError(errorString,
+ tr("Failed opening project \"%1\": Project is not a file.").arg(fileName));
+ } else if (Project *pro = ProjectManager::openProject(mt, Utils::FileName::fromString(filePath))) {
+ QObject::connect(pro, &Project::parsingFinished, [pro]() {
+ emit SessionManager::instance()->projectFinishedParsing(pro);
+ });
+ QString restoreError;
+ Project::RestoreResult restoreResult = pro->restoreSettings(&restoreError);
+ if (restoreResult == Project::RestoreResult::Ok) {
+ connect(pro, &Project::fileListChanged,
+ m_instance, &ProjectExplorerPlugin::fileListChanged);
+ SessionManager::addProject(pro);
+ openedPro += pro;
+ } else {
+ if (restoreResult == Project::RestoreResult::Error)
+ appendError(errorString, restoreError);
+ delete pro;
}
- } else {
- appendError(errorString, tr("Failed opening project \"%1\": No plugin can open project type \"%2\".")
- .arg(QDir::toNativeSeparators(fileName))
- .arg(mt.name()));
}
} else {
- appendError(errorString, tr("Failed opening project \"%1\": Unknown project type.")
- .arg(QDir::toNativeSeparators(fileName)));
+ appendError(errorString, tr("Failed opening project \"%1\": No plugin can open project type \"%2\".")
+ .arg(QDir::toNativeSeparators(fileName))
+ .arg(mt.name()));
}
if (fileNames.size() > 1)
SessionManager::reportProjectLoadingProgress();