diff options
author | David Faure <faure@kde.org> | 2011-12-12 19:19:07 +0100 |
---|---|---|
committer | David Faure <faure@kde.org> | 2011-12-12 19:51:12 +0100 |
commit | 04ed07012fbc6b9893a0bd8426adf94a582f741f (patch) | |
tree | 464040bb3476e367fc87d086a3c6bc1d1cab610a /src | |
parent | d9704be38cd9445b8cd1022d19ab109f6cbbeb7a (diff) |
Add missing method findByData(QIODevice *)
Diffstat (limited to 'src')
-rw-r--r-- | src/mimetypes/qmimedatabase.cpp | 23 | ||||
-rw-r--r-- | src/mimetypes/qmimedatabase.h | 3 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/mimetypes/qmimedatabase.cpp b/src/mimetypes/qmimedatabase.cpp index 7925807..2d2ddcc 100644 --- a/src/mimetypes/qmimedatabase.cpp +++ b/src/mimetypes/qmimedatabase.cpp @@ -489,6 +489,29 @@ QMimeType QMimeDatabase::findByData(const QByteArray &data) const // ------------------------------------------------------------------------------------------------ /*! + Returns a MIME type for the data in \a device. + + A valid MIME type is always returned. If \a data doesn't match any + known MIME type data, the default MIME type (application/octet-stream) + is returned. +*/ +QMimeType QMimeDatabase::findByData(QIODevice* device) const +{ + QMutexLocker locker(&d->mutex); + + int accuracy = 0; + if (device->isOpen() || device->open(QIODevice::ReadOnly)) { + // Read 16K in one go (QIODEVICE_BUFFERSIZE in qiodevice_p.h). + // This is much faster than seeking back and forth into QIODevice. + const QByteArray data = device->read(16384); + return d->findByData(data, &accuracy); + } + return mimeTypeForName(d->defaultMimeType()); +} + +// ------------------------------------------------------------------------------------------------ + +/*! Returns a MIME type for \a url. If the url is a local file, this calls findByFile. diff --git a/src/mimetypes/qmimedatabase.h b/src/mimetypes/qmimedatabase.h index 9c0465a..f8e1cd8 100644 --- a/src/mimetypes/qmimedatabase.h +++ b/src/mimetypes/qmimedatabase.h @@ -47,6 +47,7 @@ public: QMimeType mimeTypeForName(const QString &nameOrAlias) const; QMimeType findByName(const QString &fileName) const; QMimeType findByData(const QByteArray &data) const; + QMimeType findByData(QIODevice *device) const; QMimeType findByFile(const QString &fileName) const; QMimeType findByFile(const QFileInfo &fileInfo) const; @@ -71,5 +72,5 @@ private: }; QT_END_NAMESPACE - + #endif // QMIMEDATABASE_H_INCLUDED |