diff options
Diffstat (limited to 'src/corelib/mimetypes/qmimeprovider.cpp')
-rw-r--r-- | src/corelib/mimetypes/qmimeprovider.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp index 91ef7efede..78cfc469f5 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -494,6 +494,29 @@ QString QMimeBinaryProvider::resolveAlias(const QString &name) return name; } +QStringList QMimeBinaryProvider::listAliases(const QString &name) +{ + checkCache(); + QStringList result; + const QByteArray input = name.toLatin1(); + foreach (CacheFile *cacheFile, m_cacheFiles) { + const int aliasListOffset = cacheFile->getUint32(PosAliasListOffset); + const int numEntries = cacheFile->getUint32(aliasListOffset); + for (int pos = 0; pos < numEntries; ++pos) { + const int off = aliasListOffset + 4 + 8 * pos; + const int mimeOffset = cacheFile->getUint32(off + 4); + const char *mimeType = cacheFile->getCharStar(mimeOffset); + + if (input == mimeType) { + const int aliasOffset = cacheFile->getUint32(off); + const char *alias = cacheFile->getCharStar(aliasOffset); + result.append(QString::fromLatin1(alias)); + } + } + } + return result; +} + void QMimeBinaryProvider::loadMimeTypeList() { if (!m_mimetypeListLoaded) { @@ -815,6 +838,13 @@ void QMimeXMLProvider::addParent(const QString &child, const QString &parent) m_parents[child].append(parent); } +QStringList QMimeXMLProvider::listAliases(const QString &name) +{ + ensureLoaded(); + // Iterate through the whole hash. This method is rarely used. + return m_aliases.keys(name); +} + QString QMimeXMLProvider::resolveAlias(const QString &name) { ensureLoaded(); |