aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/fileutils.cpp
diff options
context:
space:
mode:
authorhjk <[email protected]>2021-07-16 15:24:26 +0200
committerhjk <[email protected]>2021-07-26 09:44:20 +0000
commit3edc5673b58e55971150ff4971c4ad6585ef0dc8 (patch)
treea012a312ad8c912283b064751f940f30a5e569ec /src/libs/utils/fileutils.cpp
parent09286d062f276244949e45dd086c359d8a38d29c (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.cpp73
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