summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2012-01-07 10:00:58 +0100
committerDavid Faure <faure@kde.org>2012-01-10 11:58:11 +0100
commit5be84d2080af421c901df735c3526053041d9ff3 (patch)
tree6644310dd724833c6dcd718f2fe301f355c65df2 /src
parent18a2bb7c27da5ba1f3b3945c67f965e58e8731dc (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.cpp32
-rw-r--r--src/mimetypes/qmimedatabase.h4
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;