diff options
author | Fabian Bumberger <fbumberger@rim.com> | 2014-03-07 14:05:45 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-08 11:45:29 +0100 |
commit | 43af92be45b5ea59c7db71b977faf5870a0baa24 (patch) | |
tree | 9f36ec53222a7c81815d423d02c1b1568169f43c /src/plugins/platforms/qnx | |
parent | 7591abbe0402d7fcb6305728c1456c1e148d1c40 (diff) |
BlackBerry: Choose the appropriate file dialog type
This chooses the appropriate file dialog type based on the nameFilters that were set.
Change-Id: I0c674eacbaebf862ce4359e744271c0d6382c216
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Diffstat (limited to 'src/plugins/platforms/qnx')
-rw-r--r-- | src/plugins/platforms/qnx/qqnxfilepicker.cpp | 36 | ||||
-rw-r--r-- | src/plugins/platforms/qnx/qqnxfilepicker.h | 1 |
2 files changed, 36 insertions, 1 deletions
diff --git a/src/plugins/platforms/qnx/qqnxfilepicker.cpp b/src/plugins/platforms/qnx/qqnxfilepicker.cpp index 843b035037..830b110f2a 100644 --- a/src/plugins/platforms/qnx/qqnxfilepicker.cpp +++ b/src/plugins/platforms/qnx/qqnxfilepicker.cpp @@ -48,6 +48,7 @@ #include <QJsonObject> #include <QJsonArray> #include <QJsonParseError> +#include <QMimeDatabase> #include <QUrl> #include <private/qppsobject_p.h> @@ -119,7 +120,7 @@ void QQnxFilePicker::open() } QVariantMap map; - map[QStringLiteral("Type")] = QStringLiteral("Other"); + map[QStringLiteral("Type")] = filePickerType(); map[QStringLiteral("Mode")] = modeToString(m_mode); map[QStringLiteral("Title")] = m_title; map[QStringLiteral("ViewMode")] = QStringLiteral("Default"); @@ -281,6 +282,39 @@ void QQnxFilePicker::handleFilePickerResponse(const char *data) cleanup(); } +QString QQnxFilePicker::filePickerType() const +{ + bool images = false; + bool video = false; + bool music = false; + QMimeDatabase mimeDb; + for (int i = 0; i < filters().count(); i++) { + QList<QMimeType> mimeTypes = mimeDb.mimeTypesForFileName(filters().at(i)); + if (mimeTypes.isEmpty()) + return QStringLiteral("Other"); + + if (mimeTypes.first().name().startsWith(QLatin1String("image"))) + images = true; + else if (mimeTypes.first().name().startsWith(QLatin1String("audio"))) + music = true; + else if (mimeTypes.first().name().startsWith(QLatin1String("video"))) + video = true; + else + return QStringLiteral("Other"); + } + + if (!video && !music) + return QStringLiteral("Picture"); + + if (!images && !music) + return QStringLiteral("Video"); + + if (!images && !video) + return QStringLiteral("Music"); + + return QStringLiteral("Other"); +} + QString QQnxFilePicker::modeToString(QQnxFilePicker::Mode mode) const { switch (mode) { diff --git a/src/plugins/platforms/qnx/qqnxfilepicker.h b/src/plugins/platforms/qnx/qqnxfilepicker.h index 5bb8f0969f..e8272900b0 100644 --- a/src/plugins/platforms/qnx/qqnxfilepicker.h +++ b/src/plugins/platforms/qnx/qqnxfilepicker.h @@ -92,6 +92,7 @@ public Q_SLOTS: private: void cleanup(); void handleFilePickerResponse(const char *data); + QString filePickerType() const; QString modeToString(Mode mode) const; |