From 43af92be45b5ea59c7db71b977faf5870a0baa24 Mon Sep 17 00:00:00 2001 From: Fabian Bumberger Date: Fri, 7 Mar 2014 14:05:45 +0100 Subject: [PATCH] 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 Reviewed-by: Rafael Roquetto --- src/plugins/platforms/qnx/qqnxfilepicker.cpp | 36 +++++++++++++++++++- src/plugins/platforms/qnx/qqnxfilepicker.h | 1 + 2 files changed, 36 insertions(+), 1 deletion(-) 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 #include #include +#include #include #include @@ -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 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;