summaryrefslogtreecommitdiff
path: root/src/plugins/git/branchcheckoutdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/git/branchcheckoutdialog.cpp')
-rw-r--r--src/plugins/git/branchcheckoutdialog.cpp88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/plugins/git/branchcheckoutdialog.cpp b/src/plugins/git/branchcheckoutdialog.cpp
new file mode 100644
index 0000000000..fc0c34aefa
--- /dev/null
+++ b/src/plugins/git/branchcheckoutdialog.cpp
@@ -0,0 +1,88 @@
+#include "branchcheckoutdialog.h"
+#include "ui_branchcheckoutdialog.h"
+
+namespace Git {
+namespace Internal {
+
+BranchCheckoutDialog::BranchCheckoutDialog(QWidget *parent,
+ const QString& currentBranch,
+ const QString& nextBranch) :
+ QDialog(parent),
+ m_ui(new Ui::BranchCheckoutDialog),
+ m_foundStashForNextBranch(false),
+ m_hasLocalChanges(true)
+{
+ m_ui->setupUi(this);
+
+ setWindowTitle(tr("Checkout branch \"%1\"").arg(nextBranch));
+ m_ui->moveChangesRadioButton->setText(tr("Move Local Changes to \"%1\"").arg(nextBranch));
+ m_ui->popStashCheckBox->setText(tr("Pop Stash of \"%1\"").arg(nextBranch));
+
+ if (!currentBranch.isEmpty()) {
+ m_ui->makeStashRadioButton->setText(tr("Create Branch Stash for \"%1\"").arg(currentBranch));
+ } else {
+ m_ui->makeStashRadioButton->setText(tr("Create Branch Stash for Current Branch"));
+ foundNoLocalChanges();
+ }
+
+ connect(m_ui->moveChangesRadioButton, SIGNAL(toggled(bool)), this, SLOT(updatePopStashCheckBox(bool)));
+}
+
+BranchCheckoutDialog::~BranchCheckoutDialog()
+{
+ delete m_ui;
+}
+
+void BranchCheckoutDialog::foundNoLocalChanges()
+{
+ m_ui->discardChangesRadioButton->setChecked(true);
+ m_ui->localChangesGroupBox->setEnabled(false);
+ m_hasLocalChanges = false;
+}
+
+void BranchCheckoutDialog::foundStashForNextBranch()
+{
+ m_ui->popStashCheckBox->setChecked(true);
+ m_ui->popStashCheckBox->setEnabled(true);
+ m_foundStashForNextBranch = true;
+}
+
+bool BranchCheckoutDialog::makeStashOfCurrentBranch()
+{
+ return m_ui->makeStashRadioButton->isChecked();
+}
+
+bool BranchCheckoutDialog::moveLocalChangesToNextBranch()
+{
+ return m_ui->moveChangesRadioButton->isChecked();
+}
+
+bool BranchCheckoutDialog::discardLocalChanges()
+{
+ return m_ui->discardChangesRadioButton->isChecked() && m_ui->localChangesGroupBox->isEnabled();
+}
+
+bool BranchCheckoutDialog::popStashOfNextBranch()
+{
+ return m_ui->popStashCheckBox->isChecked();
+}
+
+bool BranchCheckoutDialog::hasStashForNextBranch()
+{
+ return m_foundStashForNextBranch;
+}
+
+bool BranchCheckoutDialog::hasLocalChanges()
+{
+ return m_hasLocalChanges;
+}
+
+void BranchCheckoutDialog::updatePopStashCheckBox(bool moveChangesChecked)
+{
+ m_ui->popStashCheckBox->setChecked(!moveChangesChecked && m_foundStashForNextBranch);
+ m_ui->popStashCheckBox->setEnabled(!moveChangesChecked && m_foundStashForNextBranch);
+}
+
+} // namespace Internal
+} // namespace Git
+