From bb7a50e16e85d3baf326f33a2a0c9cedf29510b4 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 26 Jan 2024 16:29:18 +0100 Subject: [PATCH] Utils: Promote a local conversion function to FilePath::fromUrl() Change-Id: I748cceb50084a29b971f31a8bd2ad7159738d7fd Reviewed-by: Marcus Tillmanns --- src/libs/utils/filepath.cpp | 13 +++++++++++++ src/libs/utils/filepath.h | 1 + src/libs/utils/fileutils.cpp | 13 +++---------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index c38c80d182f..1dd0eb65cd0 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -182,6 +182,19 @@ FilePath FilePath::fromVariant(const QVariant &variant) return fromSettings(variant); // FIXME: Use variant.value() } +/*! + Constructs a FilePath from \a url. + + \sa toVariant() +*/ +FilePath FilePath::fromUrl(const QUrl &url) +{ + FilePath result; + if (url.isLocalFile()) + return FilePath::fromString(url.toLocalFile()); + return FilePath::fromParts(url.scheme(), url.host(), url.path()); +} + FilePath FilePath::fromParts(const QStringView scheme, const QStringView host, const QStringView path) { FilePath result; diff --git a/src/libs/utils/filepath.h b/src/libs/utils/filepath.h index 24048a84fce..69667a0d7e5 100644 --- a/src/libs/utils/filepath.h +++ b/src/libs/utils/filepath.h @@ -68,6 +68,7 @@ public: [[nodiscard]] static FilePath fromUtf8(const char *filepath, int filepathSize = -1); [[nodiscard]] static FilePath fromSettings(const QVariant &variant); [[nodiscard]] static FilePath fromVariant(const QVariant &variant); + [[nodiscard]] static FilePath fromUrl(const QUrl &url); [[nodiscard]] static FilePath fromParts(const QStringView scheme, const QStringView host, const QStringView path); [[nodiscard]] static FilePath fromPathPart(const QStringView path); diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 3d8f074962e..4530ea206b8 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -397,19 +397,12 @@ static QWidget *dialogParent(QWidget *parent) return parent ? parent : s_dialogParentGetter ? s_dialogParentGetter() : nullptr; } -static FilePath qUrlToFilePath(const QUrl &url) -{ - if (url.isLocalFile()) - return FilePath::fromString(url.toLocalFile()); - return FilePath::fromParts(url.scheme(), url.host(), url.path()); -} - static QUrl filePathToQUrl(const FilePath &filePath) { return QUrl::fromLocalFile(filePath.toFSPathString()); } -void prepareNonNativeDialog(QFileDialog &dialog) +static void prepareNonNativeDialog(QFileDialog &dialog) { const auto isValidSideBarPath = [](const FilePath &fp) { return !fp.needsDevice() || fp.hasFileAccess(); @@ -422,7 +415,7 @@ void prepareNonNativeDialog(QFileDialog &dialog) // Check existing urls, remove paths that need a device and are no longer valid. for (const QUrl &url : dialog.sidebarUrls()) { - FilePath path = qUrlToFilePath(url); + FilePath path = FilePath::fromUrl(url); if (isValidSideBarPath(path)) sideBarPaths.append(path); } @@ -467,7 +460,7 @@ FilePaths getFilePaths(QWidget *parent, if (dialog.exec() == QDialog::Accepted) { if (selectedFilter) *selectedFilter = dialog.selectedNameFilter(); - return Utils::transform(dialog.selectedUrls(), &qUrlToFilePath); + return Utils::transform(dialog.selectedUrls(), &FilePath::fromUrl); } return {}; }