From 3401de4a83b38ec2bdbad86d5911baf3d5c366a2 Mon Sep 17 00:00:00 2001 From: Colin Wallace Date: Fri, 20 Apr 2018 19:01:11 -0700 Subject: [PATCH] Use themed file dialogs everywhere. (#4298) Previously lmms used themed dialogs for project saving/opening, but not when editing settings (edit -> settings). With this change, the settings editor also uses themed dialogs. --- include/FileDialog.h | 10 ++++++++++ src/gui/dialogs/FileDialog.cpp | 35 ++++++++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/include/FileDialog.h b/include/FileDialog.h index dd14cd65b..0cade9967 100644 --- a/include/FileDialog.h +++ b/include/FileDialog.h @@ -38,6 +38,16 @@ public: const QString &directory = QString(), const QString &filter = QString() ); + static QString getExistingDirectory(QWidget *parent, + const QString &caption, + const QString &directory, + QFileDialog::Options options = QFileDialog::ShowDirsOnly); + static QString getOpenFileName(QWidget *parent = 0, + const QString &caption = QString(), + const QString &directory = QString(), + const QString &filter = QString(), + QString *selectedFilter = 0, + QFileDialog::Options options = 0); void clearSelection(); }; diff --git a/src/gui/dialogs/FileDialog.cpp b/src/gui/dialogs/FileDialog.cpp index a9e7dba90..fb9c7faac 100644 --- a/src/gui/dialogs/FileDialog.cpp +++ b/src/gui/dialogs/FileDialog.cpp @@ -78,6 +78,39 @@ FileDialog::FileDialog( QWidget *parent, const QString &caption, } +QString FileDialog::getExistingDirectory(QWidget *parent, + const QString &caption, + const QString &directory, + QFileDialog::Options options) +{ + FileDialog dialog(parent, caption, directory, QString()); + dialog.setFileMode(QFileDialog::Directory); + dialog.setOptions(dialog.options() | options); + if (dialog.exec() == QDialog::Accepted) { + return dialog.selectedFiles().value(0); + } + return QString(); +} + +QString FileDialog::getOpenFileName(QWidget *parent, + const QString &caption, + const QString &directory, + const QString &filter, + QString *selectedFilter, + QFileDialog::Options options) +{ + FileDialog dialog(parent, caption, directory, filter); + dialog.setOptions(dialog.options() | options); + if (selectedFilter && !selectedFilter->isEmpty()) + dialog.selectNameFilter(*selectedFilter); + if (dialog.exec() == QDialog::Accepted) { + if (selectedFilter) + *selectedFilter = dialog.selectedNameFilter(); + return dialog.selectedFiles().value(0); + } + return QString(); +} + void FileDialog::clearSelection() { @@ -86,5 +119,3 @@ void FileDialog::clearSelection() view->clearSelection(); } - -