diff options
author | hjk <[email protected]> | 2021-07-16 15:24:26 +0200 |
---|---|---|
committer | hjk <[email protected]> | 2021-07-26 09:44:20 +0000 |
commit | 3edc5673b58e55971150ff4971c4ad6585ef0dc8 (patch) | |
tree | a012a312ad8c912283b064751f940f30a5e569ec /src/libs/utils/fileutils.cpp | |
parent | 09286d062f276244949e45dd086c359d8a38d29c (diff) |
Utils: Provide FilePath based wrappers for common dialogs
Change-Id: I464a7b5775495f32648905335f2d798384867900
Reviewed-by: Christian Stenger <[email protected]>
Diffstat (limited to 'src/libs/utils/fileutils.cpp')
-rw-r--r-- | src/libs/utils/fileutils.cpp | 73 |
1 files changed, 72 insertions, 1 deletions
diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index ff7745761c8..48d9fc5a21c 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -405,5 +405,76 @@ void withNtfsPermissions(const std::function<void()> &task) } #endif -} // namespace Utils +#ifdef QT_WIDGETS_LIB + +static std::function<QWidget *()> s_dialogParentGetter; + +void FileUtils::setDialogParentGetter(const std::function<QWidget *()> &getter) +{ + s_dialogParentGetter = getter; +} + +static QWidget *dialogParent() +{ + return s_dialogParentGetter ? s_dialogParentGetter() : nullptr; +} + +FilePath FileUtils::getOpenFilePath(const QString &caption, + const FilePath &dir, + const QString &filter, + QString *selectedFilter, + QFileDialog::Options options) +{ + const QString result = QFileDialog::getOpenFileName(dialogParent(), + caption, + dir.toString(), + filter, + selectedFilter, + options); + return FilePath::fromString(result); +} + +FilePath FileUtils::getSaveFilePath(const QString &caption, + const FilePath &dir, + const QString &filter, + QString *selectedFilter, + QFileDialog::Options options) +{ + const QString result = QFileDialog::getSaveFileName(dialogParent(), + caption, + dir.toString(), + filter, + selectedFilter, + options); + return FilePath::fromString(result); +} + +FilePath FileUtils::getExistingDirectory(const QString &caption, + const FilePath &dir, + QFileDialog::Options options) +{ + const QString result = QFileDialog::getExistingDirectory(dialogParent(), + caption, + dir.toString(), + options); + return FilePath::fromString(result); +} + +FilePaths FileUtils::getOpenFilePaths(const QString &caption, + const FilePath &dir, + const QString &filter, + QString *selectedFilter, + QFileDialog::Options options) +{ + const QStringList result = QFileDialog::getOpenFileNames(dialogParent(), + caption, + dir.toString(), + filter, + selectedFilter, + options); + return transform(result, &FilePath::fromString); +} +#endif // QT_WIDGETS_LIB + +} // namespace Utils |