diff options
author | David Faure <david.faure@kdab.com> | 2012-11-19 17:14:02 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-22 00:11:21 +0100 |
commit | 8a83c1bb5504d34e07ce7cce36c10b6d5a9876bd (patch) | |
tree | 671ed649e6459ae275727b67cdaa6e63882d019c /src/corelib/mimetypes/qmimeprovider.cpp | |
parent | 11afecbaa700a03ab1e307f6096e0a185667bb6c (diff) |
Add QMimeType::aliases().
Requested by Allan Sandfeld Jensen for QWebkit, which needs to register
upfront all the mimetypes that a given plugin can handle.
Change-Id: I64b8d39c7988adfc7db4ed8bfdc73acd16e999da
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
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(); |