summaryrefslogtreecommitdiffstats
path: root/src/widgets/dialogs/qfiledialog.cpp
diff options
context:
space:
mode:
authorAlexander Volkov <a.volkov@rusbitech.ru>2018-04-23 14:10:01 +0300
committerAlexander Volkov <a.volkov@rusbitech.ru>2018-06-27 12:14:44 +0000
commit4d73ab73c81fff83e4423f0d3c918781587f14bf (patch)
treee5c306cbbc2e34ba769c49211385a31efd30665e /src/widgets/dialogs/qfiledialog.cpp
parent4af292fe5158c2d19e8ab1351c71c3940c7f1032 (diff)
Return a correct filter from QFileDialog::selectedMimeTypeFilter()
QFileDialog::selectedMimeTypeFilter() returns either an empty filter in the case when a platform file dialog doesn't implement mime type filters, or initiallySelectedMimeTypeFilter() in the case of Qt's file dialog. In both cases the result is incorrect. Make it return a mime type filter corresponding to a selected name filter. As a result, tst_QFiledialog::setMimeTypeFilters() has to be fixed: QFileDialog::selectMimeTypeFilter() can't select a name filter for an invalid mime type, and "application/json" is not supported by RHEL 6.6, so replace it by "application/pdf". Change-Id: I58d3be860a9b5e8a72cba86d74b520178115a812 Reviewed-by: David Faure <david.faure@kdab.com>
Diffstat (limited to 'src/widgets/dialogs/qfiledialog.cpp')
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp43
1 files changed, 30 insertions, 13 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index 5d8ca458c2..ecd2ab6776 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -1463,19 +1463,6 @@ void QFileDialog::selectNameFilter(const QString &filter)
}
/*!
- * \since 5.9
- * \return The mimetype of the file that the user selected in the file dialog.
- */
-QString QFileDialog::selectedMimeTypeFilter() const
-{
- Q_D(const QFileDialog);
- if (!d->usingWidgets())
- return d->selectedMimeTypeFilter_sys();
-
- return d->options->initiallySelectedMimeTypeFilter();
-}
-
-/*!
\since 4.4
Returns the filter that the user selected in the file dialog.
@@ -1612,6 +1599,36 @@ void QFileDialog::selectMimeTypeFilter(const QString &filter)
#endif // QT_NO_MIMETYPE
/*!
+ * \since 5.9
+ * \return The mimetype of the file that the user selected in the file dialog.
+ */
+QString QFileDialog::selectedMimeTypeFilter() const
+{
+ Q_D(const QFileDialog);
+ QString mimeTypeFilter;
+ if (!d->usingWidgets())
+ mimeTypeFilter = d->selectedMimeTypeFilter_sys();
+
+#ifndef QT_NO_MIMETYPE
+ if (mimeTypeFilter.isNull() && !d->options->mimeTypeFilters().isEmpty()) {
+ const auto nameFilter = selectedNameFilter();
+ const auto mimeTypes = d->options->mimeTypeFilters();
+ for (const auto &mimeType: mimeTypes) {
+ QString filter = nameFilterForMime(mimeType);
+ if (testOption(HideNameFilterDetails))
+ filter = qt_strip_filters({ filter }).first();
+ if (filter == nameFilter) {
+ mimeTypeFilter = mimeType;
+ break;
+ }
+ }
+ }
+#endif
+
+ return mimeTypeFilter;
+}
+
+/*!
\property QFileDialog::viewMode
\brief the way files and directories are displayed in the dialog