diff options
author | David Faure <faure@kde.org> | 2012-01-07 10:00:58 +0100 |
---|---|---|
committer | David Faure <faure@kde.org> | 2012-01-10 11:58:11 +0100 |
commit | 5be84d2080af421c901df735c3526053041d9ff3 (patch) | |
tree | 6644310dd724833c6dcd718f2fe301f355c65df2 /src | |
parent | 18a2bb7c27da5ba1f3b3945c67f965e58e8731dc (diff) |
Add findMimeTypesByFileName which returns a list of mimetypes.
This is needed in order to implement delayed mimetype determination.
If, based on the filename only, we get 0 or multiple mimetypes, then
we know findByData will be necessary later. If we get exactly 1
mimetype, then that is authoritative and we won't need findByData.
Change-Id: Ib22edb512fb45099268aafd92500109849c331c4
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Wolf-Michael Bolle <wolf-michael.bolle@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/mimetypes/qmimedatabase.cpp | 32 | ||||
-rw-r--r-- | src/mimetypes/qmimedatabase.h | 4 |
2 files changed, 34 insertions, 2 deletions
diff --git a/src/mimetypes/qmimedatabase.cpp b/src/mimetypes/qmimedatabase.cpp index 25ac133..c410377 100644 --- a/src/mimetypes/qmimedatabase.cpp +++ b/src/mimetypes/qmimedatabase.cpp @@ -426,15 +426,18 @@ QMimeType QMimeDatabase::findByFile(const QString &fileName) const /*! \fn QMimeType QMimeDatabase::findByName(const QString &fileName) const; - \brief Returns a MIME type for the file \a fileName. + \brief Returns a MIME type for the file name \a fileName. A valid MIME type is always returned. If the file name doesn't match any known pattern, the default MIME type (application/octet-stream) is returned. + If multiple MIME types match this file, the first one (alphabetically) is returned. This function does not try to open the file. To also use the content when determining the MIME type, use findByFile() or findByNameAndData() instead. + + \sa findMimeTypesByFileName */ QMimeType QMimeDatabase::findByName(const QString &fileName) const { @@ -456,6 +459,33 @@ QMimeType QMimeDatabase::findByName(const QString &fileName) const // ------------------------------------------------------------------------------------------------ /*! + \fn QMimeType QMimeDatabase::findMimeTypesByFileName(const QString &fileName) const; + \brief Returns the MIME types for the file name \a fileName. + + If the file name doesn't match any known pattern, an empty list is returned. + If multiple MIME types match this file, they are all returned. + + This function does not try to open the file. To also use the content + when determining the MIME type, use findByFile() or + findByNameAndData() instead. + + \sa findByName +*/ +QList<QMimeType> QMimeDatabase::findMimeTypesByFileName(const QString &fileName) const +{ + QMutexLocker locker(&d->mutex); + + QStringList matches = d->findByName(fileName); + QList<QMimeType> mimes; + matches.sort(); // Make it deterministic + foreach (const QString& mime, matches) { + mimes.append(d->mimeTypeForName(mime)); + } + return mimes; +} +// ------------------------------------------------------------------------------------------------ + +/*! Returns the suffix for the file \a fileName, as known by the MIME database. This allows to pre-select "tar.bz2" for foo.tar.bz2, but still only diff --git a/src/mimetypes/qmimedatabase.h b/src/mimetypes/qmimedatabase.h index f8e1cd8..738a1d4 100644 --- a/src/mimetypes/qmimedatabase.h +++ b/src/mimetypes/qmimedatabase.h @@ -41,11 +41,13 @@ class QMIME_EXPORT QMimeDatabase public: QMimeDatabase(); - //explicit QMimeDatabase(QMimeDatabasePrivate *theD); ~QMimeDatabase(); QMimeType mimeTypeForName(const QString &nameOrAlias) const; + QMimeType findByName(const QString &fileName) const; + QList<QMimeType> findMimeTypesByFileName(const QString &fileName) const; + QMimeType findByData(const QByteArray &data) const; QMimeType findByData(QIODevice *device) const; |