aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/fileutils.cpp
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2022-11-22 11:33:24 +0100
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2022-12-09 08:59:13 +0000
commitb3f82887a3ccc0a576a4720d8804ab99db7ae2b6 (patch)
tree5299cc9ebea974d4d43fb0bfe35fa2cffdca4293 /src/libs/utils/fileutils.cpp
parent36be7b83757af6380aa88489963829026f79305d (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.cpp28
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) {