Commit be5c2ea3 authored by Nikita Baryshnikov's avatar Nikita Baryshnikov Committed by hjk

Mercurial: Handle HTTP authentication

Make it possible to pull and push onto online repositories with http
authorization.

Task-number: QTCREATORBUG-5104

Change-Id: Id5f5a865d301e644002e4fa8b7056d08fd9b7467
Reviewed-by: default avatarhjk <hjk121@nokiamail.com>
parent b3dd4db0
......@@ -29,8 +29,13 @@
#include "srcdestdialog.h"
#include "ui_srcdestdialog.h"
#include "mercurialplugin.h"
#include <QInputDialog>
#include <QSettings>
#include <QUrl>
using namespace VcsBase;
using namespace Mercurial::Internal;
SrcDestDialog::SrcDestDialog(QWidget *parent) :
......@@ -39,6 +44,13 @@ SrcDestDialog::SrcDestDialog(QWidget *parent) :
{
m_ui->setupUi(this);
m_ui->localPathChooser->setExpectedKind(Utils::PathChooser::ExistingDirectory);
QUrl repoUrl(getRepoUrl());
if (repoUrl.isEmpty())
return;
if (!repoUrl.password().isEmpty())
repoUrl.setPassword(QLatin1String("***"));
m_ui->defaultPath->setText(repoUrl.toString());
m_ui->promptForCredentials->setChecked(!repoUrl.scheme().isEmpty() && repoUrl.scheme() != QLatin1String("file"));
}
SrcDestDialog::~SrcDestDialog()
......@@ -53,9 +65,32 @@ void SrcDestDialog::setPathChooserKind(Utils::PathChooser::Kind kind)
QString SrcDestDialog::getRepositoryString() const
{
if (m_ui->defaultButton->isChecked())
return QString();
if (m_ui->defaultButton->isChecked()) {
QUrl repoUrl(getRepoUrl());
if (m_ui->promptForCredentials && (repoUrl.userName().isEmpty() || repoUrl.password().isEmpty())) {
if (repoUrl.userName().isEmpty()) {
QString user = QInputDialog::getText(0, tr("Enter user name"), tr("User name:"));
if (user.isEmpty())
return repoUrl.toString();
repoUrl.setUserName(user);
}
if (repoUrl.password().isEmpty()) {
QString password = QInputDialog::getText(0, tr("Enter password"), tr("Password:"), QLineEdit::Password);
if (!password.isEmpty())
repoUrl.setPassword(password);
}
}
return repoUrl.toString();
}
if (m_ui->localButton->isChecked())
return m_ui->localPathChooser->path();
return m_ui->urlLineEdit->text();
}
QUrl SrcDestDialog::getRepoUrl() const
{
MercurialPlugin *plugin = MercurialPlugin::instance();
const VcsBasePluginState state = plugin->currentState();
QSettings settings(QString(QLatin1String("%1/.hg/hgrc")).arg(state.currentProjectPath()), QSettings::IniFormat);
return settings.value(QLatin1String("paths/default")).toUrl();
}
......@@ -49,6 +49,9 @@ public:
void setPathChooserKind(Utils::PathChooser::Kind kind);
QString getRepositoryString() const;
private:
QUrl getRepoUrl() const;
private:
Ui::SrcDestDialog *m_ui;
};
......
......@@ -60,6 +60,24 @@
</property>
</widget>
</item>
<item row="0" column="1">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="defaultPath">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="promptForCredentials">
<property name="text">
<string>Prompt for credentials</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment