Utils: Use FilePath for PathChooser::m_baseDirectory

... and collapse the two accessor versions to one.

Change-Id: I282753a0092601cff073684053ff914016452645
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
hjk
2019-12-17 11:53:58 +01:00
parent b519a5b482
commit 84d0e3dda8
12 changed files with 25 additions and 39 deletions

View File

@@ -171,7 +171,7 @@ public:
QString m_dialogTitleOverride; QString m_dialogTitleOverride;
QString m_dialogFilter; QString m_dialogFilter;
QString m_initialBrowsePathOverride; QString m_initialBrowsePathOverride;
QString m_baseDirectory; FilePath m_baseDirectory;
Environment m_environment; Environment m_environment;
BinaryVersionToolTipEventFilter *m_binaryVersionToolTipEventFilter = nullptr; BinaryVersionToolTipEventFilter *m_binaryVersionToolTipEventFilter = nullptr;
QList<QAbstractButton *> m_buttons; QList<QAbstractButton *> m_buttons;
@@ -201,7 +201,7 @@ QString PathChooserPrivate::expandedPath(const QString &input) const
switch (m_acceptingKind) { switch (m_acceptingKind) {
case PathChooser::Command: case PathChooser::Command:
case PathChooser::ExistingCommand: { 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(); return expanded.isEmpty() ? path : expanded.toString();
} }
case PathChooser::Any: case PathChooser::Any:
@@ -211,7 +211,7 @@ QString PathChooserPrivate::expandedPath(const QString &input) const
case PathChooser::File: case PathChooser::File:
case PathChooser::SaveFile: case PathChooser::SaveFile:
if (!m_baseDirectory.isEmpty() && QFileInfo(path).isRelative()) if (!m_baseDirectory.isEmpty() && QFileInfo(path).isRelative())
return QFileInfo(m_baseDirectory + '/' + path).absoluteFilePath(); return m_baseDirectory.pathAppended(path).toFileInfo().absoluteFilePath();
break; break;
} }
return path; return path;
@@ -280,27 +280,17 @@ QAbstractButton *PathChooser::buttonAtIndex(int index) const
return d->m_buttons.at(index); return d->m_buttons.at(index);
} }
QString PathChooser::baseDirectory() const void PathChooser::setBaseDirectory(const FilePath &base)
{ {
return d->m_baseDirectory; if (d->m_baseDirectory == base)
}
void PathChooser::setBaseDirectory(const QString &directory)
{
if (d->m_baseDirectory == directory)
return; return;
d->m_baseDirectory = directory; d->m_baseDirectory = base;
triggerChanged(); triggerChanged();
} }
FilePath PathChooser::baseFileName() const FilePath PathChooser::baseDirectory() const
{ {
return FilePath::fromString(d->m_baseDirectory); return d->m_baseDirectory;
}
void PathChooser::setBaseFileName(const FilePath &base)
{
setBaseDirectory(base.toString());
} }
void PathChooser::setEnvironment(const Environment &env) void PathChooser::setEnvironment(const Environment &env)

View File

@@ -51,12 +51,11 @@ class QTCREATOR_UTILS_EXPORT PathChooser : public QWidget
Q_PROPERTY(QString promptDialogTitle READ promptDialogTitle WRITE setPromptDialogTitle DESIGNABLE true) Q_PROPERTY(QString promptDialogTitle READ promptDialogTitle WRITE setPromptDialogTitle DESIGNABLE true)
Q_PROPERTY(QString promptDialogFilter READ promptDialogFilter WRITE setPromptDialogFilter DESIGNABLE true) Q_PROPERTY(QString promptDialogFilter READ promptDialogFilter WRITE setPromptDialogFilter DESIGNABLE true)
Q_PROPERTY(Kind expectedKind READ expectedKind WRITE setExpectedKind 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(QStringList commandVersionArguments READ commandVersionArguments WRITE setCommandVersionArguments)
Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly DESIGNABLE true) Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly DESIGNABLE true)
// Designer does not know this type, so force designable to false: // 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 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 errorColor READ errorColor WRITE setErrorColor DESIGNABLE true)
Q_PROPERTY(QColor okColor READ okColor WRITE setOkColor 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, static QString expandedDirectory(const QString &input, const Environment &env,
const QString &baseDir); const QString &baseDir);
QString baseDirectory() const; FilePath baseDirectory() const;
void setBaseDirectory(const QString &directory); void setBaseDirectory(const FilePath &base);
FilePath baseFileName() const;
void setBaseFileName(const FilePath &base);
void setEnvironment(const Environment &env); void setEnvironment(const Environment &env);

View File

@@ -86,7 +86,7 @@ BuildPathPage::BuildPathPage(AutotoolsOpenProjectWizard *w) : QWizardPage(w),
fl->addWidget(label); fl->addWidget(label);
m_pc->setHistoryCompleter(QLatin1String("AutoTools.BuildDir.History")); m_pc->setHistoryCompleter(QLatin1String("AutoTools.BuildDir.History"));
auto wiz = static_cast<AutotoolsOpenProjectWizard *>(wizard()); auto wiz = static_cast<AutotoolsOpenProjectWizard *>(wizard());
m_pc->setBaseDirectory(wiz->sourceDirectory()); m_pc->setBaseDirectory(Utils::FilePath::fromString(wiz->sourceDirectory()));
m_pc->setPath(wiz->buildDirectory()); m_pc->setPath(wiz->buildDirectory());
connect(m_pc, &Utils::PathChooser::rawPathChanged, this, &BuildPathPage::buildDirectoryChanged); connect(m_pc, &Utils::PathChooser::rawPathChanged, this, &BuildPathPage::buildDirectoryChanged);
fl->addRow(tr("Build directory:"), m_pc); fl->addRow(tr("Build directory:"), m_pc);

View File

@@ -107,7 +107,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
auto project = bc->project(); auto project = bc->project();
auto buildDirChooser = new Utils::PathChooser; auto buildDirChooser = new Utils::PathChooser;
buildDirChooser->setBaseFileName(project->projectDirectory()); buildDirChooser->setBaseDirectory(project->projectDirectory());
buildDirChooser->setFileName(bc->buildDirectory()); buildDirChooser->setFileName(bc->buildDirectory());
connect(buildDirChooser, &Utils::PathChooser::rawPathChanged, this, connect(buildDirChooser, &Utils::PathChooser::rawPathChanged, this,
[this](const QString &path) { [this](const QString &path) {

View File

@@ -463,7 +463,7 @@ CMakeToolItemConfigWidget::CMakeToolItemConfigWidget(CMakeToolItemModel *model)
connect(m_binaryChooser, &PathChooser::rawPathChanged, this, [this]() { connect(m_binaryChooser, &PathChooser::rawPathChanged, this, [this]() {
updateQchFilePath(); updateQchFilePath();
m_qchFileChooser->setBaseFileName(m_binaryChooser->fileName().parentDir()); m_qchFileChooser->setBaseDirectory(m_binaryChooser->fileName().parentDir());
store(); store();
}); });
connect(m_qchFileChooser, &PathChooser::rawPathChanged, this, &CMakeToolItemConfigWidget::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_binaryChooser->setFileName(item->m_executable);
m_qchFileChooser->setReadOnly(item->m_autodetected); 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_qchFileChooser->setFileName(item->m_qchFile);
m_autoRunCheckBox->setChecked(item->m_isAutoRun); m_autoRunCheckBox->setChecked(item->m_isAutoRun);

View File

@@ -42,7 +42,7 @@ QWidget *ConfigModelItemDelegate::createEditor(QWidget *parent, const QStyleOpti
if (data.type == ConfigModel::DataItem::FILE || data.type == ConfigModel::DataItem::DIRECTORY) { if (data.type == ConfigModel::DataItem::FILE || data.type == ConfigModel::DataItem::DIRECTORY) {
auto edit = new Utils::PathChooser(parent); auto edit = new Utils::PathChooser(parent);
edit->setFocusPolicy(Qt::StrongFocus); edit->setFocusPolicy(Qt::StrongFocus);
edit->setBaseFileName(m_base); edit->setBaseDirectory(m_base);
edit->setAutoFillBackground(true); edit->setAutoFillBackground(true);
if (data.type == ConfigModel::DataItem::FILE) { if (data.type == ConfigModel::DataItem::FILE) {
edit->setExpectedKind(Utils::PathChooser::File); edit->setExpectedKind(Utils::PathChooser::File);

View File

@@ -79,7 +79,7 @@ ImportWidget::ImportWidget(QWidget *parent) :
void ImportWidget::setCurrentDirectory(const Utils::FilePath &dir) void ImportWidget::setCurrentDirectory(const Utils::FilePath &dir)
{ {
m_pathChooser->setBaseFileName(dir); m_pathChooser->setBaseDirectory(dir);
m_pathChooser->setFileName(dir); m_pathChooser->setFileName(dir);
} }
@@ -93,7 +93,7 @@ void ImportWidget::handleImportRequest()
Utils::FilePath dir = m_pathChooser->fileName(); Utils::FilePath dir = m_pathChooser->fileName();
emit importFrom(dir); emit importFrom(dir);
m_pathChooser->setFileName(m_pathChooser->baseFileName()); m_pathChooser->setFileName(m_pathChooser->baseDirectory());
} }
} // namespace Internal } // namespace Internal

View File

@@ -773,7 +773,7 @@ void PathChooserField::initializeData(MacroExpander *expander)
{ {
auto w = qobject_cast<PathChooser *>(widget()); auto w = qobject_cast<PathChooser *>(widget());
QTC_ASSERT(w, return); QTC_ASSERT(w, return);
w->setBaseDirectory(expander->expand(m_basePath)); w->setBaseDirectory(expander->expand(FilePath::fromString(m_basePath)));
w->setExpectedKind(m_kind); w->setExpectedKind(m_kind);
if (m_currentPath.isNull()) if (m_currentPath.isNull())

View File

@@ -408,7 +408,7 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep)
} }
m_ui->makeLineEdit->setExpectedKind(Utils::PathChooser::ExistingCommand); 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->setHistoryCompleter("PE.MakeCommand.History");
m_ui->makeLineEdit->setPath(m_makeStep->makeCommand().toString()); m_ui->makeLineEdit->setPath(m_makeStep->makeCommand().toString());
m_ui->makeArgumentsLineEdit->setText(m_makeStep->userArguments()); m_ui->makeArgumentsLineEdit->setText(m_makeStep->userArguments());

View File

@@ -268,7 +268,7 @@ void BaseStringAspect::setBaseFileName(const FilePath &baseFileName)
{ {
d->m_baseFileName = baseFileName; d->m_baseFileName = baseFileName;
if (d->m_pathChooserDisplay) if (d->m_pathChooserDisplay)
d->m_pathChooserDisplay->setBaseFileName(baseFileName); d->m_pathChooserDisplay->setBaseDirectory(baseFileName);
} }
void BaseStringAspect::setReadOnly(bool readOnly) void BaseStringAspect::setReadOnly(bool readOnly)
@@ -323,7 +323,7 @@ void BaseStringAspect::addToLayout(LayoutBuilder &builder)
if (!d->m_historyCompleterKey.isEmpty()) if (!d->m_historyCompleterKey.isEmpty())
d->m_pathChooserDisplay->setHistoryCompleter(d->m_historyCompleterKey); d->m_pathChooserDisplay->setHistoryCompleter(d->m_historyCompleterKey);
d->m_pathChooserDisplay->setEnvironment(d->m_environment); 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); d->m_pathChooserDisplay->setReadOnly(d->m_readOnly);
useMacroExpander(d->m_pathChooserDisplay->lineEdit()); useMacroExpander(d->m_pathChooserDisplay->lineEdit());
connect(d->m_pathChooserDisplay, &PathChooser::pathChanged, connect(d->m_pathChooserDisplay, &PathChooser::pathChanged,

View File

@@ -147,7 +147,7 @@ void WorkingDirectoryAspect::addToLayout(LayoutBuilder &builder)
m_chooser->setHistoryCompleter(settingsKey()); m_chooser->setHistoryCompleter(settingsKey());
m_chooser->setExpectedKind(Utils::PathChooser::Directory); m_chooser->setExpectedKind(Utils::PathChooser::Directory);
m_chooser->setPromptDialogTitle(tr("Select Working 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); m_chooser->setFileName(m_workingDirectory.isEmpty() ? m_defaultWorkingDirectory : m_workingDirectory);
connect(m_chooser.data(), &PathChooser::pathChanged, this, connect(m_chooser.data(), &PathChooser::pathChanged, this,
[this]() { [this]() {
@@ -234,7 +234,7 @@ void WorkingDirectoryAspect::setDefaultWorkingDirectory(const FilePath &defaultW
Utils::FilePath oldDefaultDir = m_defaultWorkingDirectory; Utils::FilePath oldDefaultDir = m_defaultWorkingDirectory;
m_defaultWorkingDirectory = defaultWorkingDir; m_defaultWorkingDirectory = defaultWorkingDir;
if (m_chooser) if (m_chooser)
m_chooser->setBaseFileName(m_defaultWorkingDirectory); m_chooser->setBaseDirectory(m_defaultWorkingDirectory);
if (m_workingDirectory.isEmpty() || m_workingDirectory == oldDefaultDir) { if (m_workingDirectory.isEmpty() || m_workingDirectory == oldDefaultDir) {
if (m_chooser) if (m_chooser)

View File

@@ -229,7 +229,7 @@ void FindInFiles::setDirectory(const FilePath &directory)
void FindInFiles::setBaseDirectory(const FilePath &directory) void FindInFiles::setBaseDirectory(const FilePath &directory)
{ {
m_directory->setBaseFileName(directory); m_directory->setBaseDirectory(directory);
} }
FilePath FindInFiles::directory() const FilePath FindInFiles::directory() const