summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHugues Delorme <delorme.hugues@fougsys.fr>2015-03-09 17:10:25 +0100
committerHugues Delorme <delorme.hugues@fougsys.fr>2015-03-11 13:45:16 +0000
commit20a0b97e82e306e065a421488d66adbcb9fd543a (patch)
tree7ccdfa0b6d20190ad2c4a857e7616afe9b0ec513 /src
parentb1a71f7b9680df8f9e27eb6564d08c94b60796c1 (diff)
downloadqt-creator-20a0b97e82e306e065a421488d66adbcb9fd543a.tar.gz
Vcs: fix missing icons in SubmitFileModel
In SubmitFileModel, filetype icons are missing for not "overlaid" icons in Core::FileIconProvider. This is fixed by ensuring valid file paths are passed to QFileInfo. VcsBase::SubmitFileModel has now a "repositoryRoot" property so it can constructs absolute file paths. VcsBaseSubmitEditor::setFileModel() now relies on SubmitFileModel::repositoryRoot() instead of passing this info as annex parameter. Change-Id: Ie045c3a7b247a5b5d48d10aaaf67cb3fdcf9fa7e Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/bazaar/commiteditor.cpp3
-rw-r--r--src/plugins/clearcase/clearcasesubmiteditor.cpp3
-rw-r--r--src/plugins/git/gitsubmiteditor.cpp3
-rw-r--r--src/plugins/mercurial/commiteditor.cpp6
-rw-r--r--src/plugins/subversion/subversionsubmiteditor.cpp7
-rw-r--r--src/plugins/vcsbase/submitfilemodel.cpp25
-rw-r--r--src/plugins/vcsbase/submitfilemodel.h6
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.cpp4
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.h2
9 files changed, 43 insertions, 16 deletions
diff --git a/src/plugins/bazaar/commiteditor.cpp b/src/plugins/bazaar/commiteditor.cpp
index 332f753949..c2372d06f1 100644
--- a/src/plugins/bazaar/commiteditor.cpp
+++ b/src/plugins/bazaar/commiteditor.cpp
@@ -61,8 +61,9 @@ void CommitEditor::setFields(const QString &repositoryRoot,
bazaarWidget->setFields(branch, userName, email);
m_fileModel = new VcsBase::SubmitFileModel(this);
+ m_fileModel->setRepositoryRoot(repositoryRoot);
foreach (const VcsBase::VcsBaseClient::StatusItem &item, repoStatus)
if (item.flags != QLatin1String("Unknown"))
m_fileModel->addFile(item.file, item.flags);
- setFileModel(m_fileModel, repositoryRoot);
+ setFileModel(m_fileModel);
}
diff --git a/src/plugins/clearcase/clearcasesubmiteditor.cpp b/src/plugins/clearcase/clearcasesubmiteditor.cpp
index 2f36dabcaf..f4936c4cb9 100644
--- a/src/plugins/clearcase/clearcasesubmiteditor.cpp
+++ b/src/plugins/clearcase/clearcasesubmiteditor.cpp
@@ -58,11 +58,12 @@ void ClearCaseSubmitEditor::setStatusList(const QStringList &statusOutput)
{
typedef QStringList::const_iterator ConstIterator;
auto model = new VcsBase::SubmitFileModel(this);
+ model->setRepositoryRoot(checkScriptWorkingDirectory());
const ConstIterator cend = statusOutput.constEnd();
for (ConstIterator it = statusOutput.constBegin(); it != cend; ++it)
model->addFile(*it, QLatin1String("C"));
- setFileModel(model, checkScriptWorkingDirectory());
+ setFileModel(model);
if (statusOutput.count() > 1)
submitEditorWidget()->addKeep();
}
diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp
index 298e154c87..819b9b73c6 100644
--- a/src/plugins/git/gitsubmiteditor.cpp
+++ b/src/plugins/git/gitsubmiteditor.cpp
@@ -174,6 +174,7 @@ 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);
if (!d.files.isEmpty()) {
for (QList<CommitData::StateFilePair>::const_iterator it = d.files.constBegin();
it != d.files.constEnd(); ++it) {
@@ -192,7 +193,7 @@ void GitSubmitEditor::setCommitData(const CommitData &d)
QVariant(static_cast<int>(state)));
}
}
- setFileModel(m_model, d.panelInfo.repository);
+ setFileModel(m_model);
}
void GitSubmitEditor::slotDiffSelected(const QList<int> &rows)
diff --git a/src/plugins/mercurial/commiteditor.cpp b/src/plugins/mercurial/commiteditor.cpp
index 724ce2d100..4ab9e4f5b7 100644
--- a/src/plugins/mercurial/commiteditor.cpp
+++ b/src/plugins/mercurial/commiteditor.cpp
@@ -64,6 +64,7 @@ void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &bra
mercurialWidget->setFields(repositoryRoot.absoluteFilePath(), branch, userName, email);
fileModel = new SubmitFileModel(this);
+ fileModel->setRepositoryRoot(repositoryRoot.absoluteFilePath());
QStringList shouldTrack;
@@ -74,8 +75,7 @@ void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &bra
fileModel->addFile(item.file, item.flags, Unchecked);
}
- VcsBaseSubmitEditor::filterUntrackedFilesOfProject(repositoryRoot.absoluteFilePath(),
- &shouldTrack);
+ VcsBaseSubmitEditor::filterUntrackedFilesOfProject(fileModel->repositoryRoot(), &shouldTrack);
foreach (const QString &track, shouldTrack) {
foreach (const VcsBaseClient::StatusItem &item, repoStatus) {
@@ -84,7 +84,7 @@ void CommitEditor::setFields(const QFileInfo &repositoryRoot, const QString &bra
}
}
- setFileModel(fileModel, repositoryRoot.absoluteFilePath());
+ setFileModel(fileModel);
}
QString CommitEditor::committerInfo()
diff --git a/src/plugins/subversion/subversionsubmiteditor.cpp b/src/plugins/subversion/subversionsubmiteditor.cpp
index 9483d720bc..21186879c8 100644
--- a/src/plugins/subversion/subversionsubmiteditor.cpp
+++ b/src/plugins/subversion/subversionsubmiteditor.cpp
@@ -47,13 +47,14 @@ void SubversionSubmitEditor::setStatusList(const QList<StatusFilePair> &statusOu
{
typedef QList<StatusFilePair>::const_iterator ConstIterator;
auto model = new VcsBase::SubmitFileModel(this);
+ // Hack to allow completion in "description" field : completion needs a root repository, the
+ // checkScriptWorkingDirectory property is fine (at this point it was set by SubversionPlugin)
+ model->setRepositoryRoot(checkScriptWorkingDirectory());
const ConstIterator cend = statusOutput.constEnd();
for (ConstIterator it = statusOutput.constBegin(); it != cend; ++it)
model->addFile(it->second, it->first);
- // Hack to allow completion in "description" field : completion needs a root repository, the
- // checkScriptWorkingDirectory property is fine (at this point it was set by SubversionPlugin)
- setFileModel(model, this->checkScriptWorkingDirectory());
+ setFileModel(model);
}
QByteArray SubversionSubmitEditor::fileContents() const
diff --git a/src/plugins/vcsbase/submitfilemodel.cpp b/src/plugins/vcsbase/submitfilemodel.cpp
index 354bd39c66..8bfbba6036 100644
--- a/src/plugins/vcsbase/submitfilemodel.cpp
+++ b/src/plugins/vcsbase/submitfilemodel.cpp
@@ -45,8 +45,11 @@ namespace VcsBase {
enum { fileColumn = 1 };
-static QList<QStandardItem *> createFileRow(const QString &fileName, const QString &status,
- CheckMode checked, const QVariant &v)
+static QList<QStandardItem *> createFileRow(const QString &repositoryRoot,
+ const QString &fileName,
+ const QString &status,
+ CheckMode checked,
+ const QVariant &v)
{
auto statusItem = new QStandardItem(status);
Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
@@ -58,7 +61,11 @@ static QList<QStandardItem *> createFileRow(const QString &fileName, const QStri
statusItem->setData(v);
auto fileItem = new QStandardItem(fileName);
fileItem->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
- fileItem->setIcon(Core::FileIconProvider::icon(fileName));
+ // 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 Core::FileIconProvider a valid file path is not required
+ const QFileInfo fi(repositoryRoot + QLatin1Char('/') + fileName);
+ fileItem->setIcon(Core::FileIconProvider::icon(fi));
QList<QStandardItem *> row;
row << statusItem << fileItem;
return row;
@@ -86,10 +93,20 @@ SubmitFileModel::SubmitFileModel(QObject *parent) :
setHorizontalHeaderLabels(headerLabels);
}
+const QString &SubmitFileModel::repositoryRoot() const
+{
+ return m_repositoryRoot;
+}
+
+void SubmitFileModel::setRepositoryRoot(const QString &repoRoot)
+{
+ m_repositoryRoot = repoRoot;
+}
+
QList<QStandardItem *> SubmitFileModel::addFile(const QString &fileName, const QString &status, CheckMode checkMode,
const QVariant &v)
{
- const QList<QStandardItem *> row = createFileRow(fileName, status, checkMode, v);
+ const QList<QStandardItem *> row = createFileRow(m_repositoryRoot, fileName, status, checkMode, v);
appendRow(row);
return row;
}
diff --git a/src/plugins/vcsbase/submitfilemodel.h b/src/plugins/vcsbase/submitfilemodel.h
index ccb17906ba..db5bec44a2 100644
--- a/src/plugins/vcsbase/submitfilemodel.h
+++ b/src/plugins/vcsbase/submitfilemodel.h
@@ -50,6 +50,9 @@ class VCSBASE_EXPORT SubmitFileModel : public QStandardItemModel
public:
explicit SubmitFileModel(QObject *parent = 0);
+ const QString &repositoryRoot() const;
+ void setRepositoryRoot(const QString &repoRoot);
+
// Convenience to create and add rows containing a file plus status text.
QList<QStandardItem *> addFile(const QString &fileName, const QString &status = QString(),
CheckMode checkMode = Checked, const QVariant &data = QVariant());
@@ -69,6 +72,9 @@ public:
unsigned int filterFiles(const QStringList &filter);
virtual void updateSelections(SubmitFileModel *source);
+
+private:
+ QString m_repositoryRoot;
};
} // namespace VcsBase
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index b0610527c1..2b40ceb67e 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -432,7 +432,7 @@ QStringList VcsBaseSubmitEditor::checkedFiles() const
return d->m_widget->checkedFiles();
}
-void VcsBaseSubmitEditor::setFileModel(SubmitFileModel *model, const QString &repositoryDirectory)
+void VcsBaseSubmitEditor::setFileModel(SubmitFileModel *model)
{
QTC_ASSERT(model, return);
if (SubmitFileModel *oldModel = d->m_widget->fileModel()) {
@@ -446,7 +446,7 @@ void VcsBaseSubmitEditor::setFileModel(SubmitFileModel *model, const QString &re
// Iterate over the files and get interesting symbols
for (int row = 0; row < model->rowCount(); ++row) {
- const QFileInfo fileInfo(repositoryDirectory, model->file(row));
+ const QFileInfo fileInfo(model->repositoryRoot(), model->file(row));
// Add file name
uniqueSymbols.insert(fileInfo.fileName());
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h
index 4adefffd3b..5bfbf38a52 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.h
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h
@@ -121,7 +121,7 @@ public:
QStringList checkedFiles() const;
- void setFileModel(SubmitFileModel *m, const QString &repositoryDirectory = QString());
+ void setFileModel(SubmitFileModel *m);
SubmitFileModel *fileModel() const;
virtual void updateFileModel() { }
QStringList rowsToFiles(const QList<int> &rows) const;