diff --git a/src/widgets/kurlrequester.h b/src/widgets/kurlrequester.h --- a/src/widgets/kurlrequester.h +++ b/src/widgets/kurlrequester.h @@ -141,6 +141,19 @@ QString filter() const; /** + * Returns the mimetype filters for the file dialog. + * @see QFileDialog::setMimeTypeFilters() + * @since 5.31 + */ + void setMimeTypeFilters(const QStringList &mimeTypes); + /** + * Sets the mimetype filters for the file dialog. + * @see QFileDialog::mimeTypeFilters() + * @since 5.31 + */ + QStringList mimeTypeFilters() const; + + /** * @returns a pointer to the filedialog. * You can use this to customize the dialog, e.g. to call setLocationLabel * or other things which are not accessible in the KUrlRequester API. diff --git a/src/widgets/kurlrequester.cpp b/src/widgets/kurlrequester.cpp --- a/src/widgets/kurlrequester.cpp +++ b/src/widgets/kurlrequester.cpp @@ -249,6 +249,7 @@ KComboBox *combo; KFile::Modes fileDialogMode; QString fileDialogFilter; + QStringList mimeTypeFilters; KEditListWidget::CustomEditor editor; KUrlDragPushButton *myButton; QFileDialog *myFileDialog; @@ -492,12 +493,30 @@ return d->fileDialogFilter; } +void KUrlRequester::setMimeTypeFilters(const QStringList &mimeTypes) +{ + d->mimeTypeFilters = mimeTypes; + + if (d->myFileDialog) { + d->myFileDialog->setMimeTypeFilters(d->mimeTypeFilters); + } +} + +QStringList KUrlRequester::mimeTypeFilters() const +{ + return d->mimeTypeFilters; +} + #ifndef KIOWIDGETS_NO_DEPRECATED QFileDialog *KUrlRequester::fileDialog() const { if (!d->myFileDialog) { d->myFileDialog = new QFileDialog(window(), windowTitle()); - d->myFileDialog->setNameFilters(d->kToQFilters(d->fileDialogFilter)); + if (!d->mimeTypeFilters.isEmpty()) { + d->myFileDialog->setMimeTypeFilters(d->mimeTypeFilters); + } else { + d->myFileDialog->setNameFilters(d->kToQFilters(d->fileDialogFilter)); + } d->applyFileMode(d->myFileDialog, d->fileDialogMode);