diff --git a/src/libs/utils/pathchooser.cpp b/src/libs/utils/pathchooser.cpp index 31d5a1aeaf5..40a14240429 100644 --- a/src/libs/utils/pathchooser.cpp +++ b/src/libs/utils/pathchooser.cpp @@ -171,7 +171,7 @@ public: QString m_dialogTitleOverride; QString m_dialogFilter; QString m_initialBrowsePathOverride; - QString m_baseDirectory; + FilePath m_baseDirectory; Environment m_environment; BinaryVersionToolTipEventFilter *m_binaryVersionToolTipEventFilter = nullptr; QList m_buttons; @@ -201,7 +201,7 @@ QString PathChooserPrivate::expandedPath(const QString &input) const switch (m_acceptingKind) { case PathChooser::Command: case PathChooser::ExistingCommand: { - const FilePath expanded = m_environment.searchInPath(path, {FilePath::fromString(m_baseDirectory)}); + const FilePath expanded = m_environment.searchInPath(path, {m_baseDirectory}); return expanded.isEmpty() ? path : expanded.toString(); } case PathChooser::Any: @@ -211,7 +211,7 @@ QString PathChooserPrivate::expandedPath(const QString &input) const case PathChooser::File: case PathChooser::SaveFile: if (!m_baseDirectory.isEmpty() && QFileInfo(path).isRelative()) - return QFileInfo(m_baseDirectory + '/' + path).absoluteFilePath(); + return m_baseDirectory.pathAppended(path).toFileInfo().absoluteFilePath(); break; } return path; @@ -280,27 +280,17 @@ QAbstractButton *PathChooser::buttonAtIndex(int index) const return d->m_buttons.at(index); } -QString PathChooser::baseDirectory() const +void PathChooser::setBaseDirectory(const FilePath &base) { - return d->m_baseDirectory; -} - -void PathChooser::setBaseDirectory(const QString &directory) -{ - if (d->m_baseDirectory == directory) + if (d->m_baseDirectory == base) return; - d->m_baseDirectory = directory; + d->m_baseDirectory = base; triggerChanged(); } -FilePath PathChooser::baseFileName() const +FilePath PathChooser::baseDirectory() const { - return FilePath::fromString(d->m_baseDirectory); -} - -void PathChooser::setBaseFileName(const FilePath &base) -{ - setBaseDirectory(base.toString()); + return d->m_baseDirectory; } void PathChooser::setEnvironment(const Environment &env) diff --git a/src/libs/utils/pathchooser.h b/src/libs/utils/pathchooser.h index 09d98e71c88..36776804875 100644 --- a/src/libs/utils/pathchooser.h +++ b/src/libs/utils/pathchooser.h @@ -51,12 +51,11 @@ class QTCREATOR_UTILS_EXPORT PathChooser : public QWidget Q_PROPERTY(QString promptDialogTitle READ promptDialogTitle WRITE setPromptDialogTitle DESIGNABLE true) Q_PROPERTY(QString promptDialogFilter READ promptDialogFilter WRITE setPromptDialogFilter DESIGNABLE true) Q_PROPERTY(Kind expectedKind READ expectedKind WRITE setExpectedKind DESIGNABLE true) - Q_PROPERTY(QString baseDirectory READ baseDirectory WRITE setBaseDirectory DESIGNABLE true) + Q_PROPERTY(Utils::FilePath baseDirectory READ baseDirectory WRITE setBaseDirectory DESIGNABLE true) Q_PROPERTY(QStringList commandVersionArguments READ commandVersionArguments WRITE setCommandVersionArguments) Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly DESIGNABLE true) // Designer does not know this type, so force designable to false: Q_PROPERTY(Utils::FilePath fileName READ fileName WRITE setFileName DESIGNABLE false) - Q_PROPERTY(Utils::FilePath baseFileName READ baseFileName WRITE setBaseFileName DESIGNABLE false) Q_PROPERTY(QColor errorColor READ errorColor WRITE setErrorColor DESIGNABLE true) Q_PROPERTY(QColor okColor READ okColor WRITE setOkColor DESIGNABLE true) @@ -99,11 +98,8 @@ public: static QString expandedDirectory(const QString &input, const Environment &env, const QString &baseDir); - QString baseDirectory() const; - void setBaseDirectory(const QString &directory); - - FilePath baseFileName() const; - void setBaseFileName(const FilePath &base); + FilePath baseDirectory() const; + void setBaseDirectory(const FilePath &base); void setEnvironment(const Environment &env); diff --git a/src/plugins/autotoolsprojectmanager/autotoolsopenprojectwizard.cpp b/src/plugins/autotoolsprojectmanager/autotoolsopenprojectwizard.cpp index ef57ca24ea5..d56f2ecdb7d 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsopenprojectwizard.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsopenprojectwizard.cpp @@ -86,7 +86,7 @@ BuildPathPage::BuildPathPage(AutotoolsOpenProjectWizard *w) : QWizardPage(w), fl->addWidget(label); m_pc->setHistoryCompleter(QLatin1String("AutoTools.BuildDir.History")); auto wiz = static_cast(wizard()); - m_pc->setBaseDirectory(wiz->sourceDirectory()); + m_pc->setBaseDirectory(Utils::FilePath::fromString(wiz->sourceDirectory())); m_pc->setPath(wiz->buildDirectory()); connect(m_pc, &Utils::PathChooser::rawPathChanged, this, &BuildPathPage::buildDirectoryChanged); fl->addRow(tr("Build directory:"), m_pc); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp index 1652ed959f6..ac2898657d4 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp @@ -107,7 +107,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) auto project = bc->project(); auto buildDirChooser = new Utils::PathChooser; - buildDirChooser->setBaseFileName(project->projectDirectory()); + buildDirChooser->setBaseDirectory(project->projectDirectory()); buildDirChooser->setFileName(bc->buildDirectory()); connect(buildDirChooser, &Utils::PathChooser::rawPathChanged, this, [this](const QString &path) { diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index 939383672d5..92f6d1b6808 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -463,7 +463,7 @@ CMakeToolItemConfigWidget::CMakeToolItemConfigWidget(CMakeToolItemModel *model) connect(m_binaryChooser, &PathChooser::rawPathChanged, this, [this]() { updateQchFilePath(); - m_qchFileChooser->setBaseFileName(m_binaryChooser->fileName().parentDir()); + m_qchFileChooser->setBaseDirectory(m_binaryChooser->fileName().parentDir()); store(); }); connect(m_qchFileChooser, &PathChooser::rawPathChanged, this, &CMakeToolItemConfigWidget::store); @@ -508,7 +508,7 @@ void CMakeToolItemConfigWidget::load(const CMakeToolTreeItem *item) m_binaryChooser->setFileName(item->m_executable); m_qchFileChooser->setReadOnly(item->m_autodetected); - m_qchFileChooser->setBaseFileName(item->m_executable.parentDir()); + m_qchFileChooser->setBaseDirectory(item->m_executable.parentDir()); m_qchFileChooser->setFileName(item->m_qchFile); m_autoRunCheckBox->setChecked(item->m_isAutoRun); diff --git a/src/plugins/cmakeprojectmanager/configmodelitemdelegate.cpp b/src/plugins/cmakeprojectmanager/configmodelitemdelegate.cpp index c7e7d645aa8..726f532ce6a 100644 --- a/src/plugins/cmakeprojectmanager/configmodelitemdelegate.cpp +++ b/src/plugins/cmakeprojectmanager/configmodelitemdelegate.cpp @@ -42,7 +42,7 @@ QWidget *ConfigModelItemDelegate::createEditor(QWidget *parent, const QStyleOpti if (data.type == ConfigModel::DataItem::FILE || data.type == ConfigModel::DataItem::DIRECTORY) { auto edit = new Utils::PathChooser(parent); edit->setFocusPolicy(Qt::StrongFocus); - edit->setBaseFileName(m_base); + edit->setBaseDirectory(m_base); edit->setAutoFillBackground(true); if (data.type == ConfigModel::DataItem::FILE) { edit->setExpectedKind(Utils::PathChooser::File); diff --git a/src/plugins/projectexplorer/importwidget.cpp b/src/plugins/projectexplorer/importwidget.cpp index 33db7d48df2..e74d283bbce 100644 --- a/src/plugins/projectexplorer/importwidget.cpp +++ b/src/plugins/projectexplorer/importwidget.cpp @@ -79,7 +79,7 @@ ImportWidget::ImportWidget(QWidget *parent) : void ImportWidget::setCurrentDirectory(const Utils::FilePath &dir) { - m_pathChooser->setBaseFileName(dir); + m_pathChooser->setBaseDirectory(dir); m_pathChooser->setFileName(dir); } @@ -93,7 +93,7 @@ void ImportWidget::handleImportRequest() Utils::FilePath dir = m_pathChooser->fileName(); emit importFrom(dir); - m_pathChooser->setFileName(m_pathChooser->baseFileName()); + m_pathChooser->setFileName(m_pathChooser->baseDirectory()); } } // namespace Internal diff --git a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp index dbae037260a..dad78b5aa04 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp @@ -773,7 +773,7 @@ void PathChooserField::initializeData(MacroExpander *expander) { auto w = qobject_cast(widget()); QTC_ASSERT(w, return); - w->setBaseDirectory(expander->expand(m_basePath)); + w->setBaseDirectory(expander->expand(FilePath::fromString(m_basePath))); w->setExpectedKind(m_kind); if (m_currentPath.isNull()) diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index 8358ea4df38..3fc0b8c645a 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -408,7 +408,7 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) } m_ui->makeLineEdit->setExpectedKind(Utils::PathChooser::ExistingCommand); - m_ui->makeLineEdit->setBaseDirectory(Utils::PathChooser::homePath()); + m_ui->makeLineEdit->setBaseDirectory(FilePath::fromString(PathChooser::homePath())); m_ui->makeLineEdit->setHistoryCompleter("PE.MakeCommand.History"); m_ui->makeLineEdit->setPath(m_makeStep->makeCommand().toString()); m_ui->makeArgumentsLineEdit->setText(m_makeStep->userArguments()); diff --git a/src/plugins/projectexplorer/projectconfigurationaspects.cpp b/src/plugins/projectexplorer/projectconfigurationaspects.cpp index 55fc6f744ad..44e765e3c19 100644 --- a/src/plugins/projectexplorer/projectconfigurationaspects.cpp +++ b/src/plugins/projectexplorer/projectconfigurationaspects.cpp @@ -268,7 +268,7 @@ void BaseStringAspect::setBaseFileName(const FilePath &baseFileName) { d->m_baseFileName = baseFileName; if (d->m_pathChooserDisplay) - d->m_pathChooserDisplay->setBaseFileName(baseFileName); + d->m_pathChooserDisplay->setBaseDirectory(baseFileName); } void BaseStringAspect::setReadOnly(bool readOnly) @@ -323,7 +323,7 @@ void BaseStringAspect::addToLayout(LayoutBuilder &builder) if (!d->m_historyCompleterKey.isEmpty()) d->m_pathChooserDisplay->setHistoryCompleter(d->m_historyCompleterKey); d->m_pathChooserDisplay->setEnvironment(d->m_environment); - d->m_pathChooserDisplay->setBaseFileName(d->m_baseFileName); + d->m_pathChooserDisplay->setBaseDirectory(d->m_baseFileName); d->m_pathChooserDisplay->setReadOnly(d->m_readOnly); useMacroExpander(d->m_pathChooserDisplay->lineEdit()); connect(d->m_pathChooserDisplay, &PathChooser::pathChanged, diff --git a/src/plugins/projectexplorer/runconfigurationaspects.cpp b/src/plugins/projectexplorer/runconfigurationaspects.cpp index e092bf8b0c2..115a9feaecb 100644 --- a/src/plugins/projectexplorer/runconfigurationaspects.cpp +++ b/src/plugins/projectexplorer/runconfigurationaspects.cpp @@ -147,7 +147,7 @@ void WorkingDirectoryAspect::addToLayout(LayoutBuilder &builder) m_chooser->setHistoryCompleter(settingsKey()); m_chooser->setExpectedKind(Utils::PathChooser::Directory); m_chooser->setPromptDialogTitle(tr("Select Working Directory")); - m_chooser->setBaseFileName(m_defaultWorkingDirectory); + m_chooser->setBaseDirectory(m_defaultWorkingDirectory); m_chooser->setFileName(m_workingDirectory.isEmpty() ? m_defaultWorkingDirectory : m_workingDirectory); connect(m_chooser.data(), &PathChooser::pathChanged, this, [this]() { @@ -234,7 +234,7 @@ void WorkingDirectoryAspect::setDefaultWorkingDirectory(const FilePath &defaultW Utils::FilePath oldDefaultDir = m_defaultWorkingDirectory; m_defaultWorkingDirectory = defaultWorkingDir; if (m_chooser) - m_chooser->setBaseFileName(m_defaultWorkingDirectory); + m_chooser->setBaseDirectory(m_defaultWorkingDirectory); if (m_workingDirectory.isEmpty() || m_workingDirectory == oldDefaultDir) { if (m_chooser) diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index e753ad79a1d..3acd20f51bb 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -229,7 +229,7 @@ void FindInFiles::setDirectory(const FilePath &directory) void FindInFiles::setBaseDirectory(const FilePath &directory) { - m_directory->setBaseFileName(directory); + m_directory->setBaseDirectory(directory); } FilePath FindInFiles::directory() const