forked from qt-creator/qt-creator
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: hjk <hjk121@nokiamail.com>
This commit is contained in:
@@ -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>
|
||||
|
Reference in New Issue
Block a user