From 35de9566b6b83d9ac42903fb1fabb0b4dca3f5f0 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Wed, 12 Oct 2022 14:09:37 +0200 Subject: [PATCH] MainWindow: Use FileUtils::get... functions Changes the MainWindow to use FileUtils::getFilePaths function to access files on devices instead of QFileDialog. Change-Id: I0981c960b643edd69510cfed1cce16346962d75a Reviewed-by: Eike Ziller --- src/plugins/coreplugin/documentmanager.cpp | 5 +-- src/plugins/coreplugin/documentmanager.h | 4 ++- .../editormanager/editormanager.cpp | 4 +-- .../coreplugin/editormanager/editormanager.h | 3 +- src/plugins/coreplugin/mainwindow.cpp | 32 +------------------ 5 files changed, 11 insertions(+), 37 deletions(-) diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp index c19e65366b5..48c2227a3b1 100644 --- a/src/plugins/coreplugin/documentmanager.cpp +++ b/src/plugins/coreplugin/documentmanager.cpp @@ -1032,11 +1032,12 @@ void DocumentManager::showFilePropertiesDialog(const FilePath &filePath) FilePaths DocumentManager::getOpenFileNames(const QString &filters, const FilePath &pathIn, - QString *selectedFilter) + QString *selectedFilter, + QFileDialog::Options options) { const FilePath path = pathIn.isEmpty() ? fileDialogInitialDirectory() : pathIn; const FilePaths files = FileUtils::getOpenFilePaths(nullptr, tr("Open File"), path, filters, - selectedFilter); + selectedFilter, options); if (!files.isEmpty()) setFileDialogLastVisitedDirectory(files.front().absolutePath()); return files; diff --git a/src/plugins/coreplugin/documentmanager.h b/src/plugins/coreplugin/documentmanager.h index c2ecf69d8d8..07d3e0b890d 100644 --- a/src/plugins/coreplugin/documentmanager.h +++ b/src/plugins/coreplugin/documentmanager.h @@ -8,6 +8,7 @@ #include #include +#include #include #include @@ -64,7 +65,8 @@ public: static Utils::FilePaths getOpenFileNames(const QString &filters, const Utils::FilePath &path = {}, - QString *selectedFilter = nullptr); + QString *selectedFilter = nullptr, + QFileDialog::Options options = {}); static Utils::FilePath getSaveFileName(const QString &title, const Utils::FilePath &pathIn, const QString &filter = {}, diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 54622fcaf73..c0044573f50 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -3249,11 +3249,11 @@ void EditorManager::addCloseEditorListener(const std::function \sa DocumentManager::getOpenFileNames() */ -FilePaths EditorManager::getOpenFilePaths() +FilePaths EditorManager::getOpenFilePaths(QFileDialog::Options options) { QString selectedFilter; const QString &fileFilters = DocumentManager::fileDialogFilter(&selectedFilter); - return DocumentManager::getOpenFileNames(fileFilters, {}, &selectedFilter); + return DocumentManager::getOpenFileNames(fileFilters, {}, &selectedFilter, options); } static QString makeTitleUnique(QString *titlePattern) diff --git a/src/plugins/coreplugin/editormanager/editormanager.h b/src/plugins/coreplugin/editormanager/editormanager.h index ab285328b48..928f9c717bc 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.h +++ b/src/plugins/coreplugin/editormanager/editormanager.h @@ -12,6 +12,7 @@ #include "utils/link.h" #include "utils/textfileformat.h" +#include #include #include @@ -90,7 +91,7 @@ public: static bool openExternalEditor(const Utils::FilePath &filePath, Utils::Id editorId); static void addCloseEditorListener(const std::function &listener); - static Utils::FilePaths getOpenFilePaths(); + static Utils::FilePaths getOpenFilePaths(QFileDialog::Options options = {}); static IDocument *currentDocument(); static IEditor *currentEditor(); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index a7e943c1961..a872320cafc 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -1078,37 +1078,7 @@ void MainWindow::openFileWith() void MainWindow::openFileFromDevice() { - QSettings *settings = PluginManager::settings(); - settings->beginGroup(QLatin1String(settingsGroup)); - QVariant dialogSettings = settings->value(QLatin1String(openFromDeviceDialogKey)); - - QFileDialog dialog; - dialog.setOption(QFileDialog::DontUseNativeDialog); - if (!dialogSettings.isNull()) { - dialog.restoreState(dialogSettings.toByteArray()); - } - QList sideBarUrls = Utils::transform(Utils::filtered(FSEngine::registeredDeviceRoots(), - [](const auto &filePath) { - return filePath.exists(); - }), - [](const auto &filePath) { - return QUrl::fromLocalFile(filePath.toFSPathString()); - }); - dialog.setSidebarUrls(sideBarUrls); - dialog.setFileMode(QFileDialog::AnyFile); - - dialog.setIconProvider(FileIconProvider::iconProvider()); - - if (dialog.exec()) { - FilePaths filePaths = Utils::transform(dialog.selectedFiles(), [](const auto &path) { - return FilePath::fromString(path); - }); - - openFiles(filePaths, ICore::SwitchMode); - } - - settings->setValue(QLatin1String(openFromDeviceDialogKey), dialog.saveState()); - settings->endGroup(); + openFiles(EditorManager::getOpenFilePaths(QFileDialog::DontUseNativeDialog), ICore::SwitchMode); } IContext *MainWindow::contextObject(QWidget *widget) const