diff options
author | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2022-11-22 11:33:24 +0100 |
---|---|---|
committer | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2022-12-09 08:59:13 +0000 |
commit | b3f82887a3ccc0a576a4720d8804ab99db7ae2b6 (patch) | |
tree | 5299cc9ebea974d4d43fb0bfe35fa2cffdca4293 /src/libs/utils/fileutils.cpp | |
parent | 36be7b83757af6380aa88489963829026f79305d (diff) |
Utils: Change browse button to OptionPushButton
Allows the user to choose whether he wants to browse local files,
or remote files.
Change-Id: I0d262034a5c2df56bea2efca876c9019099e3da9
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/libs/utils/fileutils.cpp')
-rw-r--r-- | src/libs/utils/fileutils.cpp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 069bb89969..cc985f312f 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -481,15 +481,29 @@ FilePath firstOrEmpty(const FilePaths &filePaths) return filePaths.isEmpty() ? FilePath() : filePaths.first(); } +bool FileUtils::hasNativeFileDialog() +{ + static std::optional<bool> hasNative; + if (!hasNative.has_value()) { + // Checking QFileDialog::itemDelegate() seems to be the only way to determine + // whether the dialog is native or not. + QFileDialog dialog; + hasNative = dialog.itemDelegate() == nullptr; + } + + return *hasNative; +} + FilePath FileUtils::getOpenFilePath(QWidget *parent, const QString &caption, const FilePath &dir, const QString &filter, QString *selectedFilter, QFileDialog::Options options, - bool fromDeviceIfShiftIsPressed) + bool fromDeviceIfShiftIsPressed, + bool forceNonNativeDialog) { - bool forceNonNativeDialog = dir.needsDevice(); + forceNonNativeDialog = forceNonNativeDialog || dir.needsDevice(); #ifdef QT_GUI_LIB if (fromDeviceIfShiftIsPressed && qApp->queryKeyboardModifiers() & Qt::ShiftModifier) { forceNonNativeDialog = true; @@ -514,9 +528,10 @@ FilePath FileUtils::getSaveFilePath(QWidget *parent, const FilePath &dir, const QString &filter, QString *selectedFilter, - QFileDialog::Options options) + QFileDialog::Options options, + bool forceNonNativeDialog) { - bool forceNonNativeDialog = dir.needsDevice(); + forceNonNativeDialog = forceNonNativeDialog || dir.needsDevice(); const QStringList schemes = QStringList(QStringLiteral("file")); return firstOrEmpty(getFilePaths(dialogParent(parent), @@ -535,9 +550,10 @@ FilePath FileUtils::getExistingDirectory(QWidget *parent, const QString &caption, const FilePath &dir, QFileDialog::Options options, - bool fromDeviceIfShiftIsPressed) + bool fromDeviceIfShiftIsPressed, + bool forceNonNativeDialog) { - bool forceNonNativeDialog = dir.needsDevice(); + forceNonNativeDialog = forceNonNativeDialog || dir.needsDevice(); #ifdef QT_GUI_LIB if (fromDeviceIfShiftIsPressed && qApp->queryKeyboardModifiers() & Qt::ShiftModifier) { |