diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2013-04-25 13:04:45 +0200 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2013-09-30 19:20:11 +0200 |
commit | 9654df9f1f92ab2c1548c10ca614a6ab82783ac4 (patch) | |
tree | 108ea87e710651322fc7bcdd86555f8b16ba7403 /src/plugins/git/gitsubmiteditorwidget.cpp | |
parent | 02825b589443836eff985e61a03af8be28a2f17d (diff) |
Git: Allow direct push after commit
Git commit dialog: Added a drop-down menu to the commit button to
execute "git push" or open the "Push to Gerrit" dialog directly after
a commit or amend.
Task-number: QTCREATORBUG-8854
Change-Id: I00ff8f816d1768e0cdaf6929126b55826788e578
Reviewed-by: Petar Perisin <petar.perisin@gmail.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/git/gitsubmiteditorwidget.cpp')
-rw-r--r-- | src/plugins/git/gitsubmiteditorwidget.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/plugins/git/gitsubmiteditorwidget.cpp b/src/plugins/git/gitsubmiteditorwidget.cpp index 98dec3c9d3..133e5583f0 100644 --- a/src/plugins/git/gitsubmiteditorwidget.cpp +++ b/src/plugins/git/gitsubmiteditorwidget.cpp @@ -39,6 +39,7 @@ #include <QGroupBox> #include <QRegExp> #include <QVBoxLayout> +#include <QMenu> namespace Git { namespace Internal { @@ -46,6 +47,7 @@ namespace Internal { // ------------------ GitSubmitEditorWidget::GitSubmitEditorWidget(QWidget *parent) : VcsBase::SubmitEditorWidget(parent), + m_pushAction(CommitOnly), m_gitSubmitPanel(new QWidget), m_logChangeWidget(0), m_hasUnmerged(false), @@ -105,6 +107,14 @@ void GitSubmitEditorWidget::initialize(CommitType commitType, insertTopWidget(m_gitSubmitPanel); setPanelData(data); setPanelInfo(info); + + if (data.hasRemotes && commitType != FixupCommit) { + QMenu *menu = new QMenu(this); + menu->addAction(tr("Commit only"), this, SLOT(commitOnlySlot())); + menu->addAction(tr("Commit and Push"), this, SLOT(commitAndPushSlot())); + menu->addAction(tr("Commit and Push to Gerrit"), this, SLOT(commitAndPushToGerritSlot())); + addSubmitButtonMenu(menu); + } } void GitSubmitEditorWidget::refreshLog(const QString &repository) @@ -119,6 +129,7 @@ GitSubmitEditorPanelData GitSubmitEditorWidget::panelData() const rc.author = m_gitSubmitPanelUi.authorLineEdit->text(); rc.email = m_gitSubmitPanelUi.emailLineEdit->text(); rc.bypassHooks = m_gitSubmitPanelUi.bypassHooksCheckBox->isChecked(); + rc.pushAction = m_pushAction; return rc; } @@ -158,6 +169,16 @@ QString GitSubmitEditorWidget::cleanupDescription(const QString &input) const } +QString GitSubmitEditorWidget::commitName() const +{ + if (m_pushAction == CommitAndPush) + return tr("Commit and Push"); + else if (m_pushAction == CommitAndPushToGerrit) + return tr("Commit and Push to Gerrit"); + + return tr("Commit"); +} + void GitSubmitEditorWidget::authorInformationChanged() { bool bothEmpty = m_gitSubmitPanelUi.authorLineEdit->text().isEmpty() && @@ -171,6 +192,24 @@ void GitSubmitEditorWidget::authorInformationChanged() updateSubmitAction(); } +void GitSubmitEditorWidget::commitOnlySlot() +{ + m_pushAction = CommitOnly; + updateSubmitAction(); +} + +void GitSubmitEditorWidget::commitAndPushSlot() +{ + m_pushAction = CommitAndPush; + updateSubmitAction(); +} + +void GitSubmitEditorWidget::commitAndPushToGerritSlot() +{ + m_pushAction = CommitAndPushToGerrit; + updateSubmitAction(); +} + bool GitSubmitEditorWidget::emailIsValid() const { int pos = m_gitSubmitPanelUi.emailLineEdit->cursorPosition(); |