MimeDatabase: add FilePath convenience function

Change-Id: I59c825490b3b5c49f3c177584ea4cc885c4f920b
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2021-05-18 14:35:07 +02:00
parent b6367b6359
commit e13c2b7403
13 changed files with 24 additions and 17 deletions

View File

@@ -116,7 +116,7 @@ static QVector<Tool> toolsForMimeType(const Utils::MimeType &mimeType)
static QVector<Tool> toolsForFilePath(const Utils::FilePath &fp) static QVector<Tool> toolsForFilePath(const Utils::FilePath &fp)
{ {
return toolsForMimeType(Utils::mimeTypeForFile(fp.toString())); return toolsForMimeType(Utils::mimeTypeForFile(fp));
} }
static Utils::optional<Tool> resolveTool(const Tool &tool) static Utils::optional<Tool> resolveTool(const Tool &tool)

View File

@@ -47,6 +47,8 @@
#include "mimeprovider_p.h" #include "mimeprovider_p.h"
#include "mimetype_p.h" #include "mimetype_p.h"
#include <utils/fileutils.h>
#include <QtCore/QCoreApplication> #include <QtCore/QCoreApplication>
#include <QtCore/QFile> #include <QtCore/QFile>
#include <QtCore/QFileInfo> #include <QtCore/QFileInfo>
@@ -733,6 +735,12 @@ MimeType Utils::mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode)
return mdb.mimeTypeForFile(fileInfo, MimeDatabase::MatchMode(mode)); return mdb.mimeTypeForFile(fileInfo, MimeDatabase::MatchMode(mode));
} }
MimeType Utils::mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode)
{
MimeDatabase mdb;
return mdb.mimeTypeForFile(filePath.toString(), MimeDatabase::MatchMode(mode));
}
QList<MimeType> Utils::mimeTypesForFileName(const QString &fileName) QList<MimeType> Utils::mimeTypesForFileName(const QString &fileName)
{ {
MimeDatabase mdb; MimeDatabase mdb;

View File

@@ -50,6 +50,8 @@ QT_END_NAMESPACE
namespace Utils { namespace Utils {
class FilePath;
// Wrapped QMimeDataBase functions // Wrapped QMimeDataBase functions
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForName(const QString &nameOrAlias); QTCREATOR_UTILS_EXPORT MimeType mimeTypeForName(const QString &nameOrAlias);
@@ -61,6 +63,7 @@ enum class MimeMatchMode {
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QString &fileName, MimeMatchMode mode = MimeMatchMode::MatchDefault); QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QString &fileName, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode = MimeMatchMode::MatchDefault); QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const QFileInfo &fileInfo, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForFile(const FilePath &filePath, MimeMatchMode mode = MimeMatchMode::MatchDefault);
QTCREATOR_UTILS_EXPORT QList<MimeType> mimeTypesForFileName(const QString &fileName); QTCREATOR_UTILS_EXPORT QList<MimeType> mimeTypesForFileName(const QString &fileName);
QTCREATOR_UTILS_EXPORT MimeType mimeTypeForData(const QByteArray &data); QTCREATOR_UTILS_EXPORT MimeType mimeTypeForData(const QByteArray &data);
QTCREATOR_UTILS_EXPORT QList<MimeType> allMimeTypes(); QTCREATOR_UTILS_EXPORT QList<MimeType> allMimeTypes();

View File

@@ -1316,9 +1316,7 @@ bool InternalCppCompletionAssistProcessor::objcKeywordsWanted() const
if (!m_interface->languageFeatures().objCEnabled) if (!m_interface->languageFeatures().objCEnabled)
return false; return false;
const QString fileName = m_interface->filePath().toString(); const Utils::MimeType mt = Utils::mimeTypeForFile(m_interface->filePath());
const Utils::MimeType mt = Utils::mimeTypeForFile(fileName);
return mt.matchesName(QLatin1String(CppTools::Constants::OBJECTIVE_C_SOURCE_MIMETYPE)) return mt.matchesName(QLatin1String(CppTools::Constants::OBJECTIVE_C_SOURCE_MIMETYPE))
|| mt.matchesName(QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE)); || mt.matchesName(QLatin1String(CppTools::Constants::OBJECTIVE_CPP_SOURCE_MIMETYPE));
} }

View File

@@ -145,7 +145,7 @@ Core::IDocument::OpenResult ImageViewerFile::openImpl(QString *errorString,
} }
setFilePath(filePath); setFilePath(filePath);
setMimeType(Utils::mimeTypeForFile(fileName).name()); setMimeType(Utils::mimeTypeForFile(filePath).name());
return OpenResult::Success; return OpenResult::Success;
} }

View File

@@ -972,8 +972,8 @@ bool Client::isSupportedFile(const Utils::FilePath &filePath, const QString &mim
bool Client::isSupportedUri(const DocumentUri &uri) const bool Client::isSupportedUri(const DocumentUri &uri) const
{ {
return m_languagFilter.isSupported(uri.toFilePath(), const FilePath &filePath = uri.toFilePath();
Utils::mimeTypeForFile(uri.toFilePath().fileName()).name()); return m_languagFilter.isSupported(filePath, Utils::mimeTypeForFile(filePath).name());
} }
void Client::addAssistProcessor(TextEditor::IAssistProcessor *processor) void Client::addAssistProcessor(TextEditor::IAssistProcessor *processor)

View File

@@ -642,9 +642,8 @@ BuildConfigurationFactory *BuildConfigurationFactory::find(const Kit *k, const F
QTC_ASSERT(k, return nullptr); QTC_ASSERT(k, return nullptr);
const Utils::Id deviceType = DeviceTypeKitAspect::deviceTypeId(k); const Utils::Id deviceType = DeviceTypeKitAspect::deviceTypeId(k);
for (BuildConfigurationFactory *factory : qAsConst(g_buildConfigurationFactories)) { for (BuildConfigurationFactory *factory : qAsConst(g_buildConfigurationFactories)) {
if (Utils::mimeTypeForFile(projectPath.toString()) if (Utils::mimeTypeForFile(projectPath).matchesName(factory->m_supportedProjectMimeTypeName)
.matchesName(factory->m_supportedProjectMimeTypeName) && factory->supportsTargetDeviceType(deviceType))
&& factory->supportsTargetDeviceType(deviceType))
return factory; return factory;
} }
return nullptr; return nullptr;

View File

@@ -4024,7 +4024,7 @@ QStringList ProjectExplorerPlugin::projectFilePatterns()
bool ProjectExplorerPlugin::isProjectFile(const Utils::FilePath &filePath) bool ProjectExplorerPlugin::isProjectFile(const Utils::FilePath &filePath)
{ {
Utils::MimeType mt = Utils::mimeTypeForFile(filePath.toString()); Utils::MimeType mt = Utils::mimeTypeForFile(filePath);
for (auto it = dd->m_projectCreators.cbegin(); it != dd->m_projectCreators.cend(); ++it) { for (auto it = dd->m_projectCreators.cbegin(); it != dd->m_projectCreators.cend(); ++it) {
if (mt.inherits(it.key())) if (mt.inherits(it.key()))
return true; return true;

View File

@@ -307,8 +307,7 @@ FileType Node::fileTypeForMimeType(const Utils::MimeType &mt)
FileType Node::fileTypeForFileName(const Utils::FilePath &file) FileType Node::fileTypeForFileName(const Utils::FilePath &file)
{ {
return fileTypeForMimeType(Utils::mimeTypeForFile(file.toString(), return fileTypeForMimeType(Utils::mimeTypeForFile(file, Utils::MimeMatchMode::MatchExtension));
Utils::MimeMatchMode::MatchExtension));
} }
QString Node::pathOrDirectory(bool dir) const QString Node::pathOrDirectory(bool dir) const

View File

@@ -150,7 +150,7 @@ void TreeScanner::scanForFiles(FutureInterface &fi, const Utils::FilePath& direc
{ {
Result nodes = FileNode::scanForFiles(fi, directory, Result nodes = FileNode::scanForFiles(fi, directory,
[&filter, &factory](const Utils::FilePath &fn) -> FileNode * { [&filter, &factory](const Utils::FilePath &fn) -> FileNode * {
const Utils::MimeType mimeType = Utils::mimeTypeForFile(fn.toString()); const Utils::MimeType mimeType = Utils::mimeTypeForFile(fn);
// Skip some files during scan. // Skip some files during scan.
if (filter && filter(mimeType, fn)) if (filter && filter(mimeType, fn))

View File

@@ -119,7 +119,7 @@ ModelManagerInterface::ProjectInfo ModelManager::defaultProjectInfoForProject(
return false; return false;
const FileNode *fn = n->asFileNode(); const FileNode *fn = n->asFileNode();
return fn && fn->fileType() == FileType::QML return fn && fn->fileType() == FileType::QML
&& qmlTypeNames.contains(Utils::mimeTypeForFile(fn->filePath().toString(), && qmlTypeNames.contains(Utils::mimeTypeForFile(fn->filePath(),
MimeMatchMode::MatchExtension).name()); MimeMatchMode::MatchExtension).name());
}), &FilePath::toString); }), &FilePath::toString);
activeTarget = project->activeTarget(); activeTarget = project->activeTarget();

View File

@@ -719,7 +719,7 @@ Core::IDocument::OpenResult TextDocument::open(QString *errorString,
emit aboutToOpen(filePath, realFilePath); emit aboutToOpen(filePath, realFilePath);
OpenResult success = openImpl(errorString, filePath, realFilePath, /*reload =*/ false); OpenResult success = openImpl(errorString, filePath, realFilePath, /*reload =*/ false);
if (success == OpenResult::Success) { if (success == OpenResult::Success) {
setMimeType(Utils::mimeTypeForFile(filePath.toString()).name()); setMimeType(Utils::mimeTypeForFile(filePath).name());
emit openFinishedSuccessfully(); emit openFinishedSuccessfully();
} }
return success; return success;

View File

@@ -3204,7 +3204,7 @@ void TextEditorWidgetPrivate::updateCodeFoldingVisible()
void TextEditorWidgetPrivate::reconfigure() void TextEditorWidgetPrivate::reconfigure()
{ {
m_document->setMimeType(Utils::mimeTypeForFile(m_document->filePath().toString()).name()); m_document->setMimeType(Utils::mimeTypeForFile(m_document->filePath()).name());
q->configureGenericHighlighter(); q->configureGenericHighlighter();
} }