diff options
author | Eike Ziller <eike.ziller@qt.io> | 2019-07-16 09:17:45 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2019-07-16 09:17:45 +0200 |
commit | 5af1f95f25c62123c83ed27cd644ab7ead8f65f1 (patch) | |
tree | 88dfd33889f1ea3ca3a207522f3da3e671514a9b /src/libs | |
parent | 1c438aadde0ee73fe2fedb41116b38cd18ac21fb (diff) | |
parent | 9693882d6dc53e3cebb5614d74f205210d75ed20 (diff) |
Merge remote-tracking branch 'origin/4.9' into 4.10
Conflicts:
src/libs/utils/mimetypes/mimeprovider.cpp
Change-Id: If771d3fba60b670cb0de3a43c9039e24c74aabb1
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/utils/mimetypes/mimeprovider.cpp | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/src/libs/utils/mimetypes/mimeprovider.cpp b/src/libs/utils/mimetypes/mimeprovider.cpp index 46d3eb71bd..9c63c9d08e 100644 --- a/src/libs/utils/mimetypes/mimeprovider.cpp +++ b/src/libs/utils/mimetypes/mimeprovider.cpp @@ -784,28 +784,22 @@ void MimeXMLProvider::ensureLoaded() { if (!m_loaded /*|| shouldCheck()*/) { m_loaded = true; -// bool fdoXmlFound = false; - QStringList allFiles; - -// const QStringList packageDirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("mime/packages"), QStandardPaths::LocateDirectory); -// //qDebug() << "packageDirs=" << packageDirs; -// for (const QString &packageDir : packageDirs) { -// QDir dir(packageDir); -// const QStringList files = dir.entryList(QDir::Files | QDir::NoDotAndDotDot); -// //qDebug() << static_cast<const void *>(this) << packageDir << files; -// if (!fdoXmlFound) -// fdoXmlFound = files.contains(QLatin1String("freedesktop.org.xml")); -// QStringList::const_iterator endIt(files.constEnd()); -// for (QStringList::const_iterator it(files.constBegin()); it != endIt; ++it) { -// allFiles.append(packageDir + QLatin1Char('/') + *it); -// } -// } - -// if (!fdoXmlFound) { -// // We could instead install the file as part of installing Qt? - const char freedesktopOrgXml[] = ":/qt-project.org/qmime/packages/freedesktop.org.xml"; - allFiles.prepend(QLatin1String(freedesktopOrgXml)); -// } + QStringList allFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, + QStringLiteral("mime/packages/freedesktop.org.xml"), + QStandardPaths::LocateFile); + + if (allFiles.isEmpty()) { + // System freedesktop.org.xml file not found, try to use the one in QtCore. + // This is private API and has changed in the past: + // - Qt 5.11 added "package" subdir in 7a5644d6481a3c1a7416772998ca4e60c977bfbd + // - Qt 5.13 added an option to not bundle it at all + const QString fdoXml5_11 = QStringLiteral(":/qt-project.org/qmime/packages/freedesktop.org.xml"); + if (QFile::exists(fdoXml5_11)) + allFiles << fdoXml5_11; + else + qFatal("Utils::MimeXMLProvider: could not find the system freedesktop.org.xml file " + "and QtCore does not have an accessible copy."); + } m_nameMimeTypeMap.clear(); m_aliases.clear(); |