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(); } - -