diff options
author | Orgad Shaneh <[email protected]> | 2013-01-11 10:45:00 +0200 |
---|---|---|
committer | Tobias Hunger <[email protected]> | 2013-01-11 13:13:39 +0100 |
commit | 76f672989206a7c8d1ccc10fc758b0e42065c6c0 (patch) | |
tree | 9f33a6b47efbc303d14961a3bade45f6c683047d /src/plugins | |
parent | 39e9c5ef20df0b75eb8b5a1b27af609fa7ff20e3 (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.cpp | 3 | ||||
-rw-r--r-- | src/plugins/clearcase/clearcaseplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/cvs/cvsplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/git/gitplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/git/gitsubmiteditor.cpp | 25 | ||||
-rw-r--r-- | src/plugins/git/gitsubmiteditor.h | 2 | ||||
-rw-r--r-- | src/plugins/mercurial/mercurialplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/perforce/perforceplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/subversion/subversionplugin.cpp | 3 | ||||
-rw-r--r-- | src/plugins/vcsbase/submiteditorwidget.cpp | 19 | ||||
-rw-r--r-- | src/plugins/vcsbase/submiteditorwidget.h | 5 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbasesubmiteditor.cpp | 22 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbasesubmiteditor.h | 5 |
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(); |