aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorOrgad Shaneh <[email protected]>2013-01-11 10:45:00 +0200
committerTobias Hunger <[email protected]>2013-01-11 13:13:39 +0100
commit76f672989206a7c8d1ccc10fc758b0e42065c6c0 (patch)
tree9f33a6b47efbc303d14961a3bade45f6c683047d /src/plugins
parent39e9c5ef20df0b75eb8b5a1b27af609fa7ff20e3 (diff)
Git: Pass rows instead of files for diffSelectedFiles
Useful when the same file can appear more than once (e.g. staged + modified) Task-number: QTCREATORBUG-5347 Change-Id: I3ce716c22840c149490e00e6948612607ae57159 Reviewed-by: Petar Perisin <[email protected]> Reviewed-by: Tobias Hunger <[email protected]>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/bazaar/bazaarplugin.cpp3
-rw-r--r--src/plugins/clearcase/clearcaseplugin.cpp3
-rw-r--r--src/plugins/cvs/cvsplugin.cpp3
-rw-r--r--src/plugins/git/gitplugin.cpp3
-rw-r--r--src/plugins/git/gitsubmiteditor.cpp25
-rw-r--r--src/plugins/git/gitsubmiteditor.h2
-rw-r--r--src/plugins/mercurial/mercurialplugin.cpp3
-rw-r--r--src/plugins/perforce/perforceplugin.cpp3
-rw-r--r--src/plugins/subversion/subversionplugin.cpp3
-rw-r--r--src/plugins/vcsbase/submiteditorwidget.cpp19
-rw-r--r--src/plugins/vcsbase/submiteditorwidget.h5
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.cpp22
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.h5
13 files changed, 52 insertions, 47 deletions
diff --git a/src/plugins/bazaar/bazaarplugin.cpp b/src/plugins/bazaar/bazaarplugin.cpp
index 6c5989eb4e2..5144d36a79a 100644
--- a/src/plugins/bazaar/bazaarplugin.cpp
+++ b/src/plugins/bazaar/bazaarplugin.cpp
@@ -108,7 +108,8 @@ static const VcsBase::VcsBaseSubmitEditorParameters submitEditorParameters = {
Constants::COMMITMIMETYPE,
Constants::COMMIT_ID,
Constants::COMMIT_DISPLAY_NAME,
- Constants::COMMIT_ID
+ Constants::COMMIT_ID,
+ VcsBase::VcsBaseSubmitEditorParameters::DiffFiles
};
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 27ac04307c0..aa85372c1dd 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -258,7 +258,8 @@ static const VcsBase::VcsBaseSubmitEditorParameters submitParameters = {
ClearCase::Constants::CLEARCASE_SUBMIT_MIMETYPE,
ClearCase::Constants::CLEARCASECHECKINEDITOR_ID,
ClearCase::Constants::CLEARCASECHECKINEDITOR_DISPLAY_NAME,
- ClearCase::Constants::CLEARCASECHECKINEDITOR
+ ClearCase::Constants::CLEARCASECHECKINEDITOR,
+ VcsBase::VcsBaseSubmitEditorParameters::DiffFiles
};
bool ClearCasePlugin::initialize(const QStringList & /*arguments */, QString *errorMessage)
diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp
index 91097dcec94..4da18516c74 100644
--- a/src/plugins/cvs/cvsplugin.cpp
+++ b/src/plugins/cvs/cvsplugin.cpp
@@ -213,7 +213,8 @@ static const VcsBaseSubmitEditorParameters submitParameters = {
Constants::CVS_SUBMIT_MIMETYPE,
Constants::CVSCOMMITEDITOR_ID,
Constants::CVSCOMMITEDITOR_DISPLAY_NAME,
- Constants::CVSCOMMITEDITOR
+ Constants::CVSCOMMITEDITOR,
+ VcsBase::VcsBaseSubmitEditorParameters::DiffFiles
};
bool CvsPlugin::initialize(const QStringList &arguments, QString *errorMessage)
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 2dc0a05f593..e4ffae16283 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -175,7 +175,8 @@ static const VcsBase::VcsBaseSubmitEditorParameters submitParameters = {
Git::Constants::SUBMIT_MIMETYPE,
Git::Constants::GITSUBMITEDITOR_ID,
Git::Constants::GITSUBMITEDITOR_DISPLAY_NAME,
- Git::Constants::C_GITSUBMITEDITOR
+ Git::Constants::C_GITSUBMITEDITOR,
+ VcsBase::VcsBaseSubmitEditorParameters::DiffRows
};
// Create a parameter action
diff --git a/src/plugins/git/gitsubmiteditor.cpp b/src/plugins/git/gitsubmiteditor.cpp
index 51e9121364f..0803e16cd5e 100644
--- a/src/plugins/git/gitsubmiteditor.cpp
+++ b/src/plugins/git/gitsubmiteditor.cpp
@@ -85,7 +85,7 @@ GitSubmitEditor::GitSubmitEditor(const VcsBase::VcsBaseSubmitEditorParameters *p
m_model(0),
m_amend(false)
{
- connect(this, SIGNAL(diffSelectedFiles(QStringList)), this, SLOT(slotDiffSelected(QStringList)));
+ connect(this, SIGNAL(diffSelectedFiles(QList<int>)), this, SLOT(slotDiffSelected(QList<int>)));
}
GitSubmitEditorWidget *GitSubmitEditor::submitEditorWidget()
@@ -131,24 +131,21 @@ void GitSubmitEditor::setAmend(bool amend)
setEmptyFileListEnabled(amend); // Allow for just correcting the message
}
-void GitSubmitEditor::slotDiffSelected(const QStringList &files)
+void GitSubmitEditor::slotDiffSelected(const QList<int> &rows)
{
// Sort it apart into unmerged/staged/unstaged files
QStringList unmergedFiles;
QStringList unstagedFiles;
QStringList stagedFiles;
- const int rowCount = m_model->rowCount();
- for (int r = 0; r < rowCount; r++) {
- const QString fileName = m_model->file(r);
- if (files.contains(fileName)) {
- const FileStates state = static_cast<FileStates>(m_model->extraData(r).toInt());
- if (state & UnmergedFile)
- unmergedFiles.push_back(fileName);
- else if (state & StagedFile)
- stagedFiles.push_back(fileName);
- else if (state != UntrackedFile)
- unstagedFiles.push_back(fileName);
- }
+ foreach (int row, rows) {
+ const QString fileName = m_model->file(row);
+ const FileStates state = static_cast<FileStates>(m_model->extraData(row).toInt());
+ if (state & UnmergedFile)
+ unmergedFiles.push_back(fileName);
+ else if (state & StagedFile)
+ stagedFiles.push_back(fileName);
+ else if (state != UntrackedFile)
+ unstagedFiles.push_back(fileName);
}
if (!unstagedFiles.empty() || !stagedFiles.empty())
emit diff(unstagedFiles, stagedFiles);
diff --git a/src/plugins/git/gitsubmiteditor.h b/src/plugins/git/gitsubmiteditor.h
index 79c43473280..4e6fb734c13 100644
--- a/src/plugins/git/gitsubmiteditor.h
+++ b/src/plugins/git/gitsubmiteditor.h
@@ -64,7 +64,7 @@ protected:
void updateFileModel();
private slots:
- void slotDiffSelected(const QStringList &);
+ void slotDiffSelected(const QList<int> &rows);
private:
inline GitSubmitEditorWidget *submitEditorWidget();
diff --git a/src/plugins/mercurial/mercurialplugin.cpp b/src/plugins/mercurial/mercurialplugin.cpp
index f2a23d86020..a17451c371c 100644
--- a/src/plugins/mercurial/mercurialplugin.cpp
+++ b/src/plugins/mercurial/mercurialplugin.cpp
@@ -108,7 +108,8 @@ static const VcsBaseSubmitEditorParameters submitEditorParameters = {
Constants::COMMITMIMETYPE,
Constants::COMMIT_ID,
Constants::COMMIT_DISPLAY_NAME,
- Constants::COMMIT_ID
+ Constants::COMMIT_ID,
+ VcsBase::VcsBaseSubmitEditorParameters::DiffFiles
};
MercurialPlugin *MercurialPlugin::m_instance = 0;
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index d821a52e6b6..af684c9f462 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -211,7 +211,8 @@ static const VcsBase::VcsBaseSubmitEditorParameters submitParameters = {
Perforce::Constants::SUBMIT_MIMETYPE,
Perforce::Constants::PERFORCE_SUBMIT_EDITOR_ID,
Perforce::Constants::PERFORCE_SUBMIT_EDITOR_DISPLAY_NAME,
- Perforce::Constants::PERFORCESUBMITEDITOR_CONTEXT
+ Perforce::Constants::PERFORCESUBMITEDITOR_CONTEXT,
+ VcsBase::VcsBaseSubmitEditorParameters::DiffFiles
};
bool PerforcePlugin::initialize(const QStringList & /* arguments */, QString *errorMessage)
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index c6369649730..ec8f7c5d659 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -236,7 +236,8 @@ static const VcsBase::VcsBaseSubmitEditorParameters submitParameters = {
Subversion::Constants::SUBVERSION_SUBMIT_MIMETYPE,
Subversion::Constants::SUBVERSIONCOMMITEDITOR_ID,
Subversion::Constants::SUBVERSIONCOMMITEDITOR_DISPLAY_NAME,
- Subversion::Constants::SUBVERSIONCOMMITEDITOR
+ Subversion::Constants::SUBVERSIONCOMMITEDITOR,
+ VcsBase::VcsBaseSubmitEditorParameters::DiffFiles
};
bool SubversionPlugin::initialize(const QStringList & /*arguments */, QString *errorMessage)
diff --git a/src/plugins/vcsbase/submiteditorwidget.cpp b/src/plugins/vcsbase/submiteditorwidget.cpp
index e5b8ac7d1b1..6c63ed67f10 100644
--- a/src/plugins/vcsbase/submiteditorwidget.cpp
+++ b/src/plugins/vcsbase/submiteditorwidget.cpp
@@ -403,20 +403,6 @@ SubmitFileModel *SubmitEditorWidget::fileModel() const
return static_cast<SubmitFileModel *>(d->m_ui.fileView->model());
}
-QStringList SubmitEditorWidget::selectedFiles() const
-{
- const QList<int> selection = selectedRows(d->m_ui.fileView);
- if (selection.empty())
- return QStringList();
-
- QStringList rc;
- const SubmitFileModel *model = fileModel();
- const int count = selection.size();
- for (int i = 0; i < count; i++)
- rc.push_back(model->file(selection.at(i)));
- return rc;
-}
-
QStringList SubmitEditorWidget::checkedFiles() const
{
QStringList rc;
@@ -437,15 +423,14 @@ Utils::CompletingTextEdit *SubmitEditorWidget::descriptionEdit() const
void SubmitEditorWidget::triggerDiffSelected()
{
- const QStringList sel = selectedFiles();
+ const QList<int> sel = selectedRows(d->m_ui.fileView);
if (!sel.empty())
emit diffSelected(sel);
}
void SubmitEditorWidget::diffActivatedDelayed()
{
- const QStringList files = QStringList(fileModel()->file(d->m_activatedRow));
- emit diffSelected(files);
+ emit diffSelected(QList<int>() << d->m_activatedRow);
}
void SubmitEditorWidget::diffActivated(const QModelIndex &index)
diff --git a/src/plugins/vcsbase/submiteditorwidget.h b/src/plugins/vcsbase/submiteditorwidget.h
index da09173df7c..83dccf4d2bd 100644
--- a/src/plugins/vcsbase/submiteditorwidget.h
+++ b/src/plugins/vcsbase/submiteditorwidget.h
@@ -95,9 +95,6 @@ public:
// Files to be included in submit
QStringList checkedFiles() const;
- // Selected files for diff
- QStringList selectedFiles() const;
-
Utils::CompletingTextEdit *descriptionEdit() const;
void addDescriptionEditContextMenuAction(QAction *a);
@@ -109,7 +106,7 @@ public:
virtual bool canSubmit() const;
signals:
- void diffSelected(const QStringList &);
+ void diffSelected(const QList<int> &);
void fileSelectionChanged(bool someFileSelected);
void submitActionTextChanged(const QString &);
void submitActionEnabledChanged(bool);
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index c78c3de010f..7506a080d43 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -210,7 +210,7 @@ VcsBaseSubmitEditor::VcsBaseSubmitEditor(const VcsBaseSubmitEditorParameters *pa
connect(d->m_file, SIGNAL(saveMe(QString*,QString,bool)),
this, SLOT(save(QString*,QString,bool)));
- connect(d->m_widget, SIGNAL(diffSelected(QStringList)), this, SLOT(slotDiffSelectedVcsFiles(QStringList)));
+ connect(d->m_widget, SIGNAL(diffSelected(QList<int>)), this, SLOT(slotDiffSelectedVcsFiles(QList<int>)));
connect(d->m_widget->descriptionEdit(), SIGNAL(textChanged()), this, SLOT(slotDescriptionChanged()));
const CommonVcsSettings settings = VcsPlugin::instance()->settings();
@@ -540,9 +540,25 @@ SubmitFileModel *VcsBaseSubmitEditor::fileModel() const
return d->m_widget->fileModel();
}
-void VcsBaseSubmitEditor::slotDiffSelectedVcsFiles(const QStringList &rawList)
+QStringList VcsBaseSubmitEditor::rowsToFiles(const QList<int> &rows) const
{
- emit diffSelectedFiles(rawList);
+ if (rows.empty())
+ return QStringList();
+
+ QStringList rc;
+ const SubmitFileModel *model = fileModel();
+ const int count = rows.size();
+ for (int i = 0; i < count; i++)
+ rc.push_back(model->file(rows.at(i)));
+ return rc;
+}
+
+void VcsBaseSubmitEditor::slotDiffSelectedVcsFiles(const QList<int> &rawList)
+{
+ if (d->m_parameters->diffType == VcsBaseSubmitEditorParameters::DiffRows)
+ emit diffSelectedFiles(rawList);
+ else
+ emit diffSelectedFiles(rowsToFiles(rawList));
}
bool VcsBaseSubmitEditor::save(QString *errorString, const QString &fileName, bool autoSave)
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h
index eaeba204288..0f696b5c157 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.h
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h
@@ -56,6 +56,7 @@ public:
const char *id;
const char *displayName;
const char *context;
+ enum DiffType { DiffRows, DiffFiles } diffType;
};
class VCSBASE_EXPORT VcsBaseSubmitEditor : public Core::IEditor
@@ -130,6 +131,7 @@ public:
void setFileModel(SubmitFileModel *m, const QString &repositoryDirectory = QString());
SubmitFileModel *fileModel() const;
virtual void updateFileModel() { }
+ QStringList rowsToFiles(const QList<int> &rows) const;
// Utilities returning some predefined icons for actions
static QIcon diffIcon();
@@ -148,9 +150,10 @@ public:
signals:
void diffSelectedFiles(const QStringList &files);
+ void diffSelectedFiles(const QList<int> &rows);
private slots:
- void slotDiffSelectedVcsFiles(const QStringList &rawList);
+ void slotDiffSelectedVcsFiles(const QList<int> &rawList);
bool save(QString *errorString, const QString &fileName, bool autoSave);
void slotDescriptionChanged();
void slotCheckSubmitMessage();