Vcs: Proliferate FilePath a bit further

Change-Id: I8490917bf0bde59b1cef2509ec14c3ca985fa43d
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2022-11-09 15:19:13 +01:00
parent 9c69a63b3b
commit 30312cc74a
12 changed files with 33 additions and 38 deletions

View File

@@ -708,7 +708,7 @@ void BazaarPluginPrivate::showCommitWidget(const QList<VcsBaseClient::StatusItem
commitEditor->document()->setPreferredDisplayName(msg);
const BranchInfo branch = m_client.synchronousBranchQuery(m_submitRepository);
commitEditor->setFields(m_submitRepository.toString(), branch,
commitEditor->setFields(m_submitRepository, branch,
m_settings.userName.value(),
m_settings.userEmail.value(), status);
}

View File

@@ -11,7 +11,7 @@
#include <coreplugin/idocument.h>
#include <vcsbase/submitfilemodel.h>
#include <QDebug>
using namespace Utils;
namespace Bazaar::Internal {
@@ -26,7 +26,7 @@ BazaarCommitWidget *CommitEditor::commitWidget()
return static_cast<BazaarCommitWidget *>(widget());
}
void CommitEditor::setFields(const QString &repositoryRoot, const BranchInfo &branch,
void CommitEditor::setFields(const FilePath &repositoryRoot, const BranchInfo &branch,
const QString &userName, const QString &email,
const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus)
{

View File

@@ -20,7 +20,7 @@ class CommitEditor : public VcsBase::VcsBaseSubmitEditor
public:
CommitEditor();
void setFields(const QString &repositoryRoot, const BranchInfo &branch,
void setFields(const Utils::FilePath &repositoryRoot, const BranchInfo &branch,
const QString &userName, const QString &email,
const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus);

View File

@@ -2792,7 +2792,7 @@ bool GitClient::getCommitData(const FilePath &workingDirectory,
// Filter out untracked files that are not part of the project
QStringList untrackedFiles = commitData.filterFiles(UntrackedFile);
VcsBaseSubmitEditor::filterUntrackedFilesOfProject(repoDirectory.toString(), &untrackedFiles);
VcsBaseSubmitEditor::filterUntrackedFilesOfProject(repoDirectory, &untrackedFiles);
QList<CommitData::StateFilePair> filteredFiles;
QList<CommitData::StateFilePair>::const_iterator it = commitData.files.constBegin();
for ( ; it != commitData.files.constEnd(); ++it) {

View File

@@ -115,10 +115,8 @@ void GitSubmitEditor::setCommitData(const CommitData &d)
setEmptyFileListEnabled(m_commitType == AmendCommit); // Allow for just correcting the message
m_model = new GitSubmitFileModel(this);
m_model->setRepositoryRoot(d.panelInfo.repository.toString());
m_model->setFileStatusQualifier([](const QString &, const QVariant &extraData)
-> SubmitFileModel::FileStatusHint
{
m_model->setRepositoryRoot(d.panelInfo.repository);
m_model->setFileStatusQualifier([](const QString &, const QVariant &extraData) {
const FileStates state = static_cast<FileStates>(extraData.toInt());
if (state & (UnmergedFile | UnmergedThem | UnmergedUs))
return SubmitFileModel::FileUnmerged;

View File

@@ -9,9 +9,8 @@
#include <coreplugin/idocument.h>
#include <vcsbase/submitfilemodel.h>
#include <QDebug>
using namespace VcsBase;
using namespace Utils;
namespace Mercurial::Internal {
@@ -26,7 +25,7 @@ MercurialCommitWidget *CommitEditor::commitWidget() const
return static_cast<MercurialCommitWidget *>(widget());
}
void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &branch,
void CommitEditor::setFields(const FilePath &repositoryRoot, const QString &branch,
const QString &userName, const QString &email,
const QList<VcsBaseClient::StatusItem> &repoStatus)
{
@@ -34,7 +33,7 @@ void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &bra
if (!mercurialWidget)
return;
mercurialWidget->setFields(repositoryRoot.absoluteFilePath(), branch, userName, email);
mercurialWidget->setFields(repositoryRoot.absoluteFilePath().toString(), branch, userName, email);
fileModel = new SubmitFileModel(this);
fileModel->setRepositoryRoot(repositoryRoot.absoluteFilePath());

View File

@@ -6,8 +6,6 @@
#include <vcsbase/vcsbaseclient.h>
#include <vcsbase/vcsbasesubmiteditor.h>
#include <QFileInfo>
namespace VcsBase { class SubmitFileModel; }
namespace Mercurial::Internal {
@@ -21,7 +19,7 @@ class CommitEditor : public VcsBase::VcsBaseSubmitEditor
public:
CommitEditor();
void setFields(const QFileInfo &repositoryRoot, const QString &branch,
void setFields(const Utils::FilePath &repositoryRoot, const QString &branch,
const QString &userName, const QString &email,
const QList<VcsBase::VcsBaseClient::StatusItem> &repoStatus);
@@ -30,6 +28,7 @@ public:
private:
MercurialCommitWidget *commitWidget() const;
VcsBase::SubmitFileModel *fileModel = nullptr;
};

View File

@@ -634,7 +634,7 @@ void MercurialPluginPrivate::showCommitWidget(const QList<VcsBaseClient::StatusI
commitEditor->document()->setPreferredDisplayName(msg);
const QString branch = vcsTopic(m_submitRepository);
commitEditor->setFields(QFileInfo(m_submitRepository.toString()), branch,
commitEditor->setFields(m_submitRepository, branch,
m_settings.userName.value(),
m_settings.userEmail.value(), status);
}

View File

@@ -3,15 +3,15 @@
#include "submitfilemodel.h"
#include <utils/fileutils.h>
#include <utils/fsengine/fileiconprovider.h>
#include <utils/qtcassert.h>
#include <utils/theme/theme.h>
#include <QStandardItem>
#include <QFileInfo>
#include <QDebug>
using namespace Utils;
namespace VcsBase {
// --------------------------------------------------------------------------
@@ -22,7 +22,6 @@ enum { StateColumn = 0, FileColumn = 1 };
static QBrush fileStatusTextForeground(SubmitFileModel::FileStatusHint statusHint)
{
using Utils::Theme;
Theme::Color statusTextColor = Theme::VcsBase_FileStatusUnknown_TextColor;
switch (statusHint) {
case SubmitFileModel::FileStatusUnknown:
@@ -47,7 +46,7 @@ static QBrush fileStatusTextForeground(SubmitFileModel::FileStatusHint statusHin
return QBrush(Utils::creatorTheme()->color(statusTextColor));
}
static QList<QStandardItem *> createFileRow(const QString &repositoryRoot,
static QList<QStandardItem *> createFileRow(const FilePath &repositoryRoot,
const QString &fileName,
const QString &status,
SubmitFileModel::FileStatusHint statusHint,
@@ -67,8 +66,7 @@ static QList<QStandardItem *> createFileRow(const QString &repositoryRoot,
// For some reason, Windows (at least) requires a valid (existing) file path to the icon, so
// the repository root is needed here.
// Note: for "overlaid" icons in Utils::FileIconProvider a valid file path is not required
fileItem->setIcon(Utils::FileIconProvider::icon(
Utils::FilePath::fromString(repositoryRoot).pathAppended(fileName)));
fileItem->setIcon(FileIconProvider::icon(repositoryRoot.pathAppended(fileName)));
const QList<QStandardItem *> row{statusItem, fileItem};
if (statusHint != SubmitFileModel::FileStatusUnknown) {
const QBrush textForeground = fileStatusTextForeground(statusHint);
@@ -97,12 +95,12 @@ SubmitFileModel::SubmitFileModel(QObject *parent) :
setHorizontalHeaderLabels({tr("State"), tr("File")});
}
const QString &SubmitFileModel::repositoryRoot() const
const FilePath &SubmitFileModel::repositoryRoot() const
{
return m_repositoryRoot;
}
void SubmitFileModel::setRepositoryRoot(const QString &repoRoot)
void SubmitFileModel::setRepositoryRoot(const FilePath &repoRoot)
{
m_repositoryRoot = repoRoot;
}

View File

@@ -5,6 +5,8 @@
#include "vcsbase_global.h"
#include <utils/filepath.h>
#include <QStandardItemModel>
#include <functional>
@@ -24,8 +26,8 @@ class VCSBASE_EXPORT SubmitFileModel : public QStandardItemModel
public:
explicit SubmitFileModel(QObject *parent = nullptr);
const QString &repositoryRoot() const;
void setRepositoryRoot(const QString &repoRoot);
const Utils::FilePath &repositoryRoot() const;
void setRepositoryRoot(const Utils::FilePath &repoRoot);
// Convenience to create and add rows containing a file plus status text.
QList<QStandardItem *> addFile(const QString &fileName, const QString &status = QString(),
@@ -67,7 +69,7 @@ public:
void setFileStatusQualifier(FileStatusQualifier &&func);
private:
QString m_repositoryRoot;
Utils::FilePath m_repositoryRoot;
FileStatusQualifier m_fileStatusQualifier;
};

View File

@@ -328,9 +328,9 @@ Core::IDocument *VcsBaseSubmitEditor::document() const
return &d->m_file;
}
QString VcsBaseSubmitEditor::checkScriptWorkingDirectory() const
FilePath VcsBaseSubmitEditor::checkScriptWorkingDirectory() const
{
return d->m_checkScriptWorkingDirectory.toString();
return d->m_checkScriptWorkingDirectory;
}
void VcsBaseSubmitEditor::setCheckScriptWorkingDirectory(const FilePath &s)
@@ -380,8 +380,7 @@ static QSet<FilePath> filesFromModel(SubmitFileModel *model)
QSet<FilePath> result;
result.reserve(model->rowCount());
for (int row = 0; row < model->rowCount(); ++row) {
result.insert(FilePath::fromString(
QFileInfo(model->repositoryRoot(), model->file(row)).absoluteFilePath()));
result.insert(model->repositoryRoot().resolvePath(model->file(row)).absoluteFilePath());
}
return result;
}
@@ -628,13 +627,12 @@ QIcon VcsBaseSubmitEditor::submitIcon()
// Reduce a list of untracked files reported by a VCS down to the files
// that are actually part of the current project(s).
void VcsBaseSubmitEditor::filterUntrackedFilesOfProject(const QString &repositoryDirectory,
void VcsBaseSubmitEditor::filterUntrackedFilesOfProject(const FilePath &repositoryDirectory,
QStringList *untrackedFiles)
{
const QDir repoDir(repositoryDirectory);
for (QStringList::iterator it = untrackedFiles->begin(); it != untrackedFiles->end(); ) {
const QString path = repoDir.absoluteFilePath(*it);
if (ProjectExplorer::SessionManager::projectForFile(FilePath::fromString(path)))
const FilePath path = repositoryDirectory.resolvePath(*it).absoluteFilePath();
if (ProjectExplorer::SessionManager::projectForFile(path))
++it;
else
it = untrackedFiles->erase(it);

View File

@@ -63,7 +63,7 @@ public:
int lineWrapWidth() const;
void setLineWrapWidth(int);
QString checkScriptWorkingDirectory() const;
Utils::FilePath checkScriptWorkingDirectory() const;
void setCheckScriptWorkingDirectory(const Utils::FilePath &);
Core::IDocument *document() const override;
@@ -83,7 +83,8 @@ public:
// Reduce a list of untracked files reported by a VCS down to the files
// that are actually part of the current project(s).
static void filterUntrackedFilesOfProject(const QString &repositoryDirectory, QStringList *untrackedFiles);
static void filterUntrackedFilesOfProject(const Utils::FilePath &repositoryDirectory,
QStringList *untrackedFiles);
signals:
void diffSelectedFiles(const QStringList &files);