forked from qt-creator/qt-creator
Update mime database from Qt
qtbase/0dbbda670d1e9f79d85edc1599315943d9eec33a QMimeDatabasePrivate: deduplicate QStringLiteral Change-Id: Id0d58f48d1b4c48dd99078258ac603a211523760 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
@@ -26,6 +26,15 @@
|
||||
#include <functional>
|
||||
#include <stack>
|
||||
|
||||
static QString directoryMimeType()
|
||||
{
|
||||
return QStringLiteral("inode/directory");
|
||||
}
|
||||
static QString plainTextMimeType()
|
||||
{
|
||||
return QStringLiteral("text/plain");
|
||||
}
|
||||
|
||||
namespace Utils {
|
||||
|
||||
Q_GLOBAL_STATIC(MimeDatabasePrivate, staticMimeDatabase)
|
||||
@@ -226,7 +235,7 @@ MimeType MimeDatabasePrivate::mimeTypeForName(const QString &nameOrAlias)
|
||||
QStringList MimeDatabasePrivate::mimeTypeForFileName(const QString &fileName)
|
||||
{
|
||||
if (fileName.endsWith(QLatin1Char('/')))
|
||||
return {"inode/directory"};
|
||||
return { directoryMimeType() };
|
||||
|
||||
const MimeGlobMatchResult result = findByFileName(fileName);
|
||||
QStringList matchingMimeTypes = result.m_matchingMimeTypes;
|
||||
@@ -293,18 +302,18 @@ void MimeDatabasePrivate::loadIcon(MimeTypePrivate &mimePrivate)
|
||||
}
|
||||
}
|
||||
|
||||
static QString fallbackParent(const QString &mimeTypeName)
|
||||
QString MimeDatabasePrivate::fallbackParent(const QString &mimeTypeName) const
|
||||
{
|
||||
const QStringView myGroup = QStringView{mimeTypeName}.left(mimeTypeName.indexOf(QLatin1Char('/')));
|
||||
// All text/* types are subclasses of text/plain.
|
||||
if (myGroup == QLatin1String("text") && mimeTypeName != QLatin1String("text/plain"))
|
||||
return QStringLiteral("text/plain");
|
||||
if (myGroup == QLatin1String("text") && mimeTypeName != plainTextMimeType())
|
||||
return plainTextMimeType();
|
||||
// All real-file mimetypes implicitly derive from application/octet-stream
|
||||
if (myGroup != QLatin1String("inode") &&
|
||||
// ignore non-file extensions
|
||||
myGroup != QLatin1String("all") && myGroup != QLatin1String("fonts") && myGroup != QLatin1String("print") && myGroup != QLatin1String("uri")
|
||||
&& mimeTypeName != QLatin1String("application/octet-stream")) {
|
||||
return QStringLiteral("application/octet-stream");
|
||||
&& mimeTypeName != defaultMimeType()) {
|
||||
return defaultMimeType();
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
@@ -390,7 +399,7 @@ MimeType MimeDatabasePrivate::findByData(const QByteArray &data, int *accuracyPt
|
||||
|
||||
if (isTextFile(data)) {
|
||||
*accuracyPtr = 5;
|
||||
return mimeTypeForName(QStringLiteral("text/plain"));
|
||||
return mimeTypeForName(plainTextMimeType());
|
||||
}
|
||||
|
||||
return mimeTypeForName(defaultMimeType());
|
||||
@@ -500,7 +509,7 @@ MimeType MimeDatabasePrivate::mimeTypeForFile(const QString &fileName,
|
||||
QT_STATBUF statBuffer;
|
||||
if (QT_STAT(nativeFilePath.constData(), &statBuffer) == 0) {
|
||||
if (S_ISDIR(statBuffer.st_mode))
|
||||
return mimeTypeForName(QStringLiteral("inode/directory"));
|
||||
return mimeTypeForName(directoryMimeType());
|
||||
if (S_ISCHR(statBuffer.st_mode))
|
||||
return mimeTypeForName(QStringLiteral("inode/chardevice"));
|
||||
if (S_ISBLK(statBuffer.st_mode))
|
||||
@@ -513,7 +522,7 @@ MimeType MimeDatabasePrivate::mimeTypeForFile(const QString &fileName,
|
||||
#else
|
||||
const bool isDirectory = fileInfo ? fileInfo->isDir() : QFileInfo(fileName).isDir();
|
||||
if (isDirectory)
|
||||
return mimeTypeForName(QStringLiteral("inode/directory"));
|
||||
return mimeTypeForName(directoryMimeType());
|
||||
#endif
|
||||
|
||||
switch (mode) {
|
||||
@@ -800,7 +809,7 @@ MimeType MimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, QIODe
|
||||
QMutexLocker locker(&d->mutex);
|
||||
|
||||
if (fileName.endsWith(QLatin1Char('/')))
|
||||
return d->mimeTypeForName(QStringLiteral("inode/directory"));
|
||||
return d->mimeTypeForName(directoryMimeType());
|
||||
|
||||
const bool openedByUs = !device->isOpen() && device->open(QIODevice::ReadOnly);
|
||||
const MimeType result = d->mimeTypeForFileNameAndData(fileName, device);
|
||||
@@ -830,7 +839,7 @@ MimeType MimeDatabase::mimeTypeForFileNameAndData(const QString &fileName, const
|
||||
QMutexLocker locker(&d->mutex);
|
||||
|
||||
if (fileName.endsWith(QLatin1Char('/')))
|
||||
return d->mimeTypeForName(QStringLiteral("inode/directory"));
|
||||
return d->mimeTypeForName(directoryMimeType());
|
||||
|
||||
QBuffer buffer(const_cast<QByteArray *>(&data));
|
||||
buffer.open(QIODevice::ReadOnly);
|
||||
|
@@ -52,7 +52,7 @@ public:
|
||||
|
||||
static MimeDatabasePrivate *instance();
|
||||
|
||||
inline QString defaultMimeType() const { return m_defaultMimeType; }
|
||||
const QString &defaultMimeType() const { return m_defaultMimeType; }
|
||||
|
||||
bool inherits(const QString &mime, const QString &parent);
|
||||
|
||||
@@ -91,7 +91,9 @@ private:
|
||||
const Providers &providers();
|
||||
bool shouldCheck();
|
||||
void loadProviders();
|
||||
QString fallbackParent(const QString &mimeTypeName) const;
|
||||
|
||||
const QString m_defaultMimeType;
|
||||
mutable Providers m_providers;
|
||||
QElapsedTimer m_lastCheck;
|
||||
|
||||
@@ -101,7 +103,6 @@ private:
|
||||
bool m_forceLoad = true;
|
||||
|
||||
public:
|
||||
const QString m_defaultMimeType;
|
||||
QMutex mutex;
|
||||
|
||||
// added for Qt Creator
|
||||
|
Reference in New Issue
Block a user