90 lines
2.2 KiB
C++
90 lines
2.2 KiB
C++
#include "gitbranchdialog.h"
|
|
#include "ui_gitbranchdialog.h"
|
|
#include "gitmanager.h"
|
|
#include "../widgets/infomessagebox.h"
|
|
|
|
GitBranchDialog::GitBranchDialog(const QString& folder, QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::GitBranchDialog),
|
|
mFolder(folder)
|
|
{
|
|
ui->setupUi(this);
|
|
mManager = new GitManager();
|
|
int current=-1;
|
|
QStringList branches =mManager->listBranches(mFolder,current);
|
|
ui->lstBranches->addItems(branches);
|
|
ui->lstBranches->setCurrentIndex(current);
|
|
ui->rbBranch->setChecked(true);
|
|
ui->rbNonSpecifyTrack->setChecked(true);
|
|
ui->txtNewBranch->setEnabled(false);
|
|
if (branches.isEmpty()) {
|
|
QString currentBranch;
|
|
if (mManager->hasRepository(mFolder,currentBranch)) {
|
|
ui->lstBranches->addItem(currentBranch);
|
|
ui->btnOk->setEnabled(false);
|
|
}
|
|
ui->grpOptions->setEnabled(false);
|
|
}
|
|
}
|
|
|
|
GitBranchDialog::~GitBranchDialog()
|
|
{
|
|
delete mManager;
|
|
delete ui;
|
|
}
|
|
|
|
void GitBranchDialog::on_btnCancel_clicked()
|
|
{
|
|
reject();
|
|
}
|
|
|
|
|
|
void GitBranchDialog::on_btnOk_clicked()
|
|
{
|
|
QString branch;
|
|
if (ui->chkCreate->isChecked())
|
|
branch = ui->txtNewBranch->text();
|
|
else
|
|
branch = ui->lstBranches->currentText();
|
|
bool result = false;
|
|
QString output;
|
|
if (!branch.isEmpty()) {
|
|
result = mManager->switchToBranch(
|
|
mFolder,
|
|
branch,
|
|
ui->chkCreate->isChecked(),
|
|
ui->chkForce->isChecked(),
|
|
ui->chkMerge->isChecked(),
|
|
ui->rbForceTrack->isChecked(),
|
|
ui->rbForceNoTrack->isChecked(),
|
|
ui->chkForceCreation->isChecked(),
|
|
output);
|
|
}
|
|
if (result) {
|
|
accept();
|
|
} else if (!output.isEmpty()) {
|
|
InfoMessageBox box;
|
|
box.setMessage(output);
|
|
box.exec();
|
|
reject();
|
|
}
|
|
}
|
|
|
|
|
|
void GitBranchDialog::on_lstBranches_currentIndexChanged(int /*index*/)
|
|
{
|
|
ui->txtNewBranch->setText("branch_"+ui->lstBranches->currentText());
|
|
}
|
|
|
|
|
|
void GitBranchDialog::on_chkCreate_stateChanged(int /*arg1*/)
|
|
{
|
|
ui->txtNewBranch->setEnabled(ui->chkCreate->isChecked());
|
|
}
|
|
|
|
void GitBranchDialog::closeEvent(QCloseEvent */* event */)
|
|
{
|
|
reject();
|
|
}
|
|
|