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:
Eike Ziller
2024-08-09 10:38:03 +02:00
parent 5934131590
commit 39412afa6b
2 changed files with 23 additions and 13 deletions

View File

@@ -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);

View File

@@ -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