diff options
author | Petar Perisin <petar.perisin@gmail.com> | 2013-04-05 14:31:58 +0200 |
---|---|---|
committer | Petar Perisin <petar.perisin@gmail.com> | 2013-04-08 11:25:46 +0200 |
commit | 0dee89bac12c015f34e7cb51c44a79c43e1c3365 (patch) | |
tree | 7cdab0255d46cd1dc33eec5b3b9e883841c6cbbb | |
parent | 1d580bcf9f466250dfb5de447133fc444f0f5388 (diff) | |
download | qt-creator-0dee89bac12c015f34e7cb51c44a79c43e1c3365.tar.gz |
Git: added rename branch
Change-Id: I327a2bc91b871dc03797d9af52bb2d32be8e76d2
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r-- | src/plugins/git/branchadddialog.cpp | 3 | ||||
-rw-r--r-- | src/plugins/git/branchadddialog.h | 2 | ||||
-rw-r--r-- | src/plugins/git/branchadddialog.ui | 2 | ||||
-rw-r--r-- | src/plugins/git/branchdialog.cpp | 32 | ||||
-rw-r--r-- | src/plugins/git/branchdialog.h | 1 | ||||
-rw-r--r-- | src/plugins/git/branchdialog.ui | 7 |
6 files changed, 44 insertions, 3 deletions
diff --git a/src/plugins/git/branchadddialog.cpp b/src/plugins/git/branchadddialog.cpp index bcb16b3925..1beab9c93b 100644 --- a/src/plugins/git/branchadddialog.cpp +++ b/src/plugins/git/branchadddialog.cpp @@ -95,11 +95,12 @@ private: }; -BranchAddDialog::BranchAddDialog(QWidget *parent) : +BranchAddDialog::BranchAddDialog(QWidget *parent, bool addBranch) : QDialog(parent), m_ui(new Ui::BranchAddDialog) { m_ui->setupUi(this); + setWindowTitle(addBranch ? tr("Add Branch") : tr("Rename Branch")); m_ui->branchNameEdit->setValidator(new BranchNameValidator(this)); connect(m_ui->branchNameEdit, SIGNAL(textChanged(QString)), this, SLOT(updateButtonStatus())); } diff --git a/src/plugins/git/branchadddialog.h b/src/plugins/git/branchadddialog.h index ef1088795e..7c50d80c2a 100644 --- a/src/plugins/git/branchadddialog.h +++ b/src/plugins/git/branchadddialog.h @@ -45,7 +45,7 @@ class BranchAddDialog : public QDialog Q_OBJECT public: - explicit BranchAddDialog(QWidget *parent = 0); + explicit BranchAddDialog(QWidget *parent = 0, bool addBranch = true); ~BranchAddDialog(); void setBranchName(const QString &); diff --git a/src/plugins/git/branchadddialog.ui b/src/plugins/git/branchadddialog.ui index b891a7d4ef..d319d79afb 100644 --- a/src/plugins/git/branchadddialog.ui +++ b/src/plugins/git/branchadddialog.ui @@ -11,7 +11,7 @@ </rect> </property> <property name="windowTitle"> - <string>Add Branch</string> + <string/> </property> <layout class="QGridLayout" name="gridLayout"> <item row="0" column="0"> diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp index e902223734..99d315dd00 100644 --- a/src/plugins/git/branchdialog.cpp +++ b/src/plugins/git/branchdialog.cpp @@ -64,6 +64,7 @@ BranchDialog::BranchDialog(QWidget *parent) : connect(m_ui->addButton, SIGNAL(clicked()), this, SLOT(add())); connect(m_ui->checkoutButton, SIGNAL(clicked()), this, SLOT(checkout())); connect(m_ui->removeButton, SIGNAL(clicked()), this, SLOT(remove())); + connect(m_ui->renameButton, SIGNAL(clicked()), this, SLOT(rename())); connect(m_ui->diffButton, SIGNAL(clicked()), this, SLOT(diff())); connect(m_ui->logButton, SIGNAL(clicked()), this, SLOT(log())); connect(m_ui->mergeButton, SIGNAL(clicked()), this, SLOT(merge())); @@ -106,6 +107,7 @@ void BranchDialog::enableButtons() const bool currentLocal = m_model->isLocal(m_model->currentBranch()); m_ui->removeButton->setEnabled(hasSelection && !currentSelected && isLocal && isLeaf); + m_ui->renameButton->setEnabled(hasSelection && isLocal && isLeaf); m_ui->logButton->setEnabled(hasSelection && isLeaf); m_ui->diffButton->setEnabled(hasSelection && isLeaf); m_ui->checkoutButton->setEnabled(hasSelection && !currentSelected && isLeaf); @@ -230,6 +232,36 @@ void BranchDialog::remove() m_model->removeBranch(selected); } +void BranchDialog::rename() +{ + QModelIndex selected = selectedIndex(); + QTC_CHECK(selected != m_model->currentBranch()); // otherwise the button would not be enabled! + QTC_CHECK(m_model->isLocal(selected)); // otherwise the button would not be enabled! + + QString oldBranchName = m_model->branchName(selected); + QStringList localNames = m_model->localBranchNames(); + + QPointer<BranchAddDialog> branchAddDialog = new BranchAddDialog(this, false); + branchAddDialog->setBranchName(oldBranchName); + branchAddDialog->setTrackedBranchName(QString(), false); + + branchAddDialog->exec(); + + if (!branchAddDialog.isNull() && branchAddDialog->result() == QDialog::Accepted && m_model) { + if (branchAddDialog->branchName() == oldBranchName) + return; + if (localNames.contains(branchAddDialog->branchName())) { + QMessageBox::critical(this, tr("Branch exists"), + tr("Local Branch \'%1\' already exists.") + .arg(branchAddDialog->branchName())); + return; + } + m_model->renameBranch(oldBranchName, branchAddDialog->branchName()); + refresh(); + } + enableButtons(); +} + void BranchDialog::diff() { QString branchName = m_model->branchName(selectedIndex()); diff --git a/src/plugins/git/branchdialog.h b/src/plugins/git/branchdialog.h index 0725d00dfc..34afa8aa55 100644 --- a/src/plugins/git/branchdialog.h +++ b/src/plugins/git/branchdialog.h @@ -68,6 +68,7 @@ private slots: void add(); void checkout(); void remove(); + void rename(); void diff(); void log(); void merge(); diff --git a/src/plugins/git/branchdialog.ui b/src/plugins/git/branchdialog.ui index 5c9f1fd462..e23889a342 100644 --- a/src/plugins/git/branchdialog.ui +++ b/src/plugins/git/branchdialog.ui @@ -96,6 +96,13 @@ </widget> </item> <item> + <widget class="QPushButton" name="renameButton"> + <property name="text"> + <string>Re&name</string> + </property> + </widget> + </item> + <item> <widget class="QPushButton" name="checkoutButton"> <property name="text"> <string>&Checkout</string> |