forked from qt-creator/qt-creator
Vcs: Proliferate FilePath a bit further
Change-Id: I8490917bf0bde59b1cef2509ec14c3ca985fa43d Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user