#include "gitresetdialog.h" #include "ui_gitresetdialog.h" #include "gitmanager.h" #include "../widgets/infomessagebox.h" GitResetDialog::GitResetDialog(const QString& folder, QWidget *parent) : QDialog(parent), ui(new Ui::GitResetDialog), mFolder(folder) { ui->setupUi(this); } GitResetDialog::~GitResetDialog() { delete ui; } int GitResetDialog::resetToCommit(const QString &commit) { GitManager manager; QString branch; if (!manager.hasRepository(mFolder,branch)) return QDialog::Rejected; ui->rbBranch->setEnabled(false); ui->cbBranches->setEnabled(false); ui->rbTag->setEnabled(false); ui->cbTags->setEnabled(false); ui->rbCommit->setChecked(true); ui->cbCommits->addItem(commit); ui->rbMixed->setChecked(true); ui->grpTarget->setTitle(tr("Reset current branch \"%1\" to").arg(branch)); return exec(); } void GitResetDialog::on_btnOk_clicked() { GitManager manager; GitResetStrategy strategy = GitResetStrategy::Mixed; if (ui->rbSoft->isChecked()) strategy = GitResetStrategy::Soft; else if (ui->rbHard->isChecked()) strategy = GitResetStrategy::Hard; QString commit; if (ui->rbCommit->isChecked()) commit = ui->cbCommits->currentText(); else if (ui->rbTag->isChecked()) commit = ui->cbTags->currentText(); else if (ui->rbBranch->isChecked()) commit = ui->cbBranches->currentText(); if (commit.isEmpty()) reject(); QString output; bool result = manager.reset(mFolder,commit,strategy,output); if (!output.trimmed().isEmpty()) { InfoMessageBox infoBox; infoBox.showMessage(output); } if (result) accept(); else reject(); } void GitResetDialog::on_btnCancel_clicked() { reject(); }