From 95907b0f7dc9b3dd69c70e4c0ccba3b33203b0c7 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 27 Sep 2021 09:58:54 +0200 Subject: [PATCH] Utils: Allow full file paths with directory parts ... when creating a new empty file. This simplifies file creation with file paths cut&paste from external applications as it removes the need to split it into a directory part and the file name. Change-Id: I3f81db89d5ae7db4117c29a4f947cdf92dc4d50c Reviewed-by: Eike Ziller --- src/libs/utils/filewizardpage.cpp | 5 ++++ src/libs/utils/filewizardpage.h | 1 + .../jsonwizard/jsonfilepage.cpp | 23 ++++++++++--------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/libs/utils/filewizardpage.cpp b/src/libs/utils/filewizardpage.cpp index d280cf2dbb3..130c40395e8 100644 --- a/src/libs/utils/filewizardpage.cpp +++ b/src/libs/utils/filewizardpage.cpp @@ -95,6 +95,11 @@ void FileWizardPage::setFileName(const QString &name) d->m_ui.nameLineEdit->setText(name); } +void FileWizardPage::setAllowDirectoriesInFileSelector(bool allow) +{ + d->m_ui.nameLineEdit->setAllowDirectories(allow); +} + bool FileWizardPage::isComplete() const { return d->m_complete; diff --git a/src/libs/utils/filewizardpage.h b/src/libs/utils/filewizardpage.h index 0ce3287bef5..26ab0ee9443 100644 --- a/src/libs/utils/filewizardpage.h +++ b/src/libs/utils/filewizardpage.h @@ -54,6 +54,7 @@ public: bool forceFirstCapitalLetterForFileName() const; void setForceFirstCapitalLetterForFileName(bool b); + void setAllowDirectoriesInFileSelector(bool allow); // Validate a base name entry field (potentially containing extension) static bool validateBaseName(const QString &name, QString *errorMessage = nullptr); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonfilepage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonfilepage.cpp index 19615f929ae..0b4c93649e8 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonfilepage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonfilepage.cpp @@ -27,13 +27,17 @@ #include "jsonwizard.h" -#include -#include +#include + +using namespace Utils; namespace ProjectExplorer { -JsonFilePage::JsonFilePage(QWidget *parent) : Utils::FileWizardPage(parent) -{ } +JsonFilePage::JsonFilePage(QWidget *parent) + : FileWizardPage(parent) +{ + setAllowDirectoriesInFileSelector(true); +} void JsonFilePage::initializePage() { @@ -53,16 +57,13 @@ bool JsonFilePage::validatePage() if (path().isEmpty() || fileName().isEmpty()) return false; - QFileInfo d(path()); - if (!d.isDir()) + const FilePath dir = FilePath::fromString(path()); + if (!dir.isDir()) return false; - QString target = d.absoluteFilePath(); - if (!target.endsWith(QLatin1Char('/'))) - target += QLatin1Char('/'); - target += fileName(); + const FilePath target = dir.resolvePath(fileName()); - wizard()->setProperty("TargetPath", target); + wizard()->setProperty("TargetPath", target.toString()); return true; }