1#include "InitialRepoConfig.h"
2#include "ui_InitialRepoConfig.h"
3
4#include <CredentialsDlg.h>
5#include <GitConfig.h>
6#include <GitCredentials.h>
7#include <GitQlientSettings.h>
8#include <GitQlientStyles.h>
9
10InitialRepoConfig::InitialRepoConfig(const QSharedPointer<GitBase> &git,
11 const QSharedPointer<GitQlientSettings> &settings, QWidget *parent)
12 : QDialog(parent)
13 , ui(new Ui::InitialRepoConfig)
14 , mGit(git)
15 , mSettings(settings)
16{
17 setAttribute(Qt::WA_DeleteOnClose);
18
19 ui->setupUi(this);
20
21 setStyleSheet(GitQlientStyles::getInstance()->getStyles());
22
23 ui->autoFetch->setValue(mSettings->localValue("AutoFetch", 5).toInt());
24 ui->pruneOnFetch->setChecked(settings->localValue("PruneOnFetch", true).toBool());
25 ui->updateOnPull->setChecked(settings->localValue("UpdateOnPull", false).toBool());
26 ui->sbMaxCommits->setValue(settings->localValue("MaxCommits", 0).toInt());
27
28 QScopedPointer<GitConfig> gitConfig(new GitConfig(git));
29
30 const auto url = gitConfig->getServerUrl();
31 ui->credentialsFrames->setVisible(url.startsWith("https"));
32
33 connect(ui->buttonGroup, SIGNAL(buttonClicked(QAbstractButton *)), this,
34 SLOT(onCredentialsOptionChanged(QAbstractButton *)));
35}
36
37InitialRepoConfig::~InitialRepoConfig()
38{
39 mSettings->setLocalValue("AutoFetch", ui->autoFetch->value());
40 mSettings->setLocalValue("PruneOnFetch", ui->pruneOnFetch->isChecked());
41 mSettings->setLocalValue("UpdateOnPull", ui->updateOnPull->isChecked());
42 mSettings->setLocalValue("MaxCommits", ui->sbMaxCommits->value());
43
44 delete ui;
45}
46
47void InitialRepoConfig::accept()
48{
49 // Store credentials if allowed and the user checked the box
50 if (ui->credentialsFrames->isVisible() && ui->chbCredentials->isChecked())
51 {
52 if (ui->rbCache->isChecked())
53 GitCredentials::configureCache(ui->sbTimeout->value(), mGit);
54 else
55 {
56 CredentialsDlg dlg(mGit, this);
57 dlg.exec();
58 }
59 }
60
61 QDialog::accept();
62}
63
64void InitialRepoConfig::onCredentialsOptionChanged(QAbstractButton *button)
65{
66 ui->sbTimeout->setEnabled(button == ui->rbCache);
67}
68