summaryrefslogtreecommitdiffstats
path: root/gui
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-03-26 17:43:49 +0100
committerPetr Mrázek <peterix@gmail.com>2013-03-26 17:43:49 +0100
commit737273348faa598af906bef2d96e6520a85cbc88 (patch)
treebf418b4e877c1d78561752e6dcdc5575a269b784 /gui
parentd24c4823ef8e144a3ffefc208c5a15e86b0b31b1 (diff)
downloadMultiMC-737273348faa598af906bef2d96e6520a85cbc88.tar
MultiMC-737273348faa598af906bef2d96e6520a85cbc88.tar.gz
MultiMC-737273348faa598af906bef2d96e6520a85cbc88.tar.lz
MultiMC-737273348faa598af906bef2d96e6520a85cbc88.tar.xz
MultiMC-737273348faa598af906bef2d96e6520a85cbc88.zip
Use Keyring in the login dialog
Diffstat (limited to 'gui')
-rw-r--r--gui/logindialog.cpp51
-rw-r--r--gui/logindialog.h6
-rw-r--r--gui/logindialog.ui33
3 files changed, 73 insertions, 17 deletions
diff --git a/gui/logindialog.cpp b/gui/logindialog.cpp
index 426757a9..842a4541 100644
--- a/gui/logindialog.cpp
+++ b/gui/logindialog.cpp
@@ -15,12 +15,18 @@
#include "logindialog.h"
#include "ui_logindialog.h"
+#include "keyring.h"
LoginDialog::LoginDialog(QWidget *parent, const QString& loginErrMsg) :
QDialog(parent),
ui(new Ui::LoginDialog)
{
ui->setupUi(this);
+ //FIXME: translateable?
+ ui->usernameTextBox->lineEdit()->setPlaceholderText(QApplication::translate("LoginDialog", "Name", 0));
+
+ connect(ui->usernameTextBox, SIGNAL(currentTextChanged(QString)), this, SLOT(userTextChanged(QString)));
+ connect(ui->forgetButton, SIGNAL(clicked(bool)), this, SLOT(forgetCurrentUser()));
if (loginErrMsg.isEmpty())
ui->loginErrorLabel->setVisible(false);
@@ -33,6 +39,10 @@ LoginDialog::LoginDialog(QWidget *parent, const QString& loginErrMsg) :
resize(minimumSizeHint());
layout()->setSizeConstraint(QLayout::SetFixedSize);
+ Keyring * k = Keyring::instance();
+ QStringList accounts = k->getStoredAccounts("minecraft");
+ ui->usernameTextBox->addItems(accounts);
+
}
LoginDialog::~LoginDialog()
@@ -42,10 +52,49 @@ LoginDialog::~LoginDialog()
QString LoginDialog::getUsername() const
{
- return ui->usernameTextBox->text();
+ return ui->usernameTextBox->currentText();
}
QString LoginDialog::getPassword() const
{
return ui->passwordTextBox->text();
}
+
+void LoginDialog::forgetCurrentUser()
+{
+ Keyring * k = Keyring::instance();
+ QString acct = ui->usernameTextBox->currentText();
+ k->removeStoredAccount("minecraft", acct);
+ ui->passwordTextBox->clear();
+ int index = ui->usernameTextBox->findText(acct);
+ if(index != -1)
+ ui->usernameTextBox->removeItem(index);
+}
+
+void LoginDialog::userTextChanged ( const QString& user )
+{
+ Keyring * k = Keyring::instance();
+ QString acct = ui->usernameTextBox->currentText();
+ QString passwd = k->getPassword("minecraft",acct);
+ ui->passwordTextBox->setText(passwd);
+}
+
+
+void LoginDialog::accept()
+{
+ bool saveName = ui->rememberUsernameCheckbox->isChecked();
+ bool savePass = ui->rememberPasswordCheckbox->isChecked();
+ if(saveName)
+ {
+ Keyring * k = Keyring::instance();
+ if(savePass)
+ {
+ k->storePassword("minecraft",getUsername(),getPassword());
+ }
+ else
+ {
+ k->storePassword("minecraft",getUsername(),QString());
+ }
+ }
+ QDialog::accept();
+}
diff --git a/gui/logindialog.h b/gui/logindialog.h
index 1b70dcd5..5f4410f5 100644
--- a/gui/logindialog.h
+++ b/gui/logindialog.h
@@ -32,7 +32,11 @@ public:
QString getUsername() const;
QString getPassword() const;
-
+
+public slots:
+ virtual void accept();
+ virtual void userTextChanged(const QString& user);
+ virtual void forgetCurrentUser();
private:
Ui::LoginDialog *ui;
};
diff --git a/gui/logindialog.ui b/gui/logindialog.ui
index ce41d2f5..0aaad52b 100644
--- a/gui/logindialog.ui
+++ b/gui/logindialog.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>365</width>
- <height>145</height>
+ <width>476</width>
+ <height>168</height>
</rect>
</property>
<property name="windowTitle">
@@ -31,9 +31,9 @@
</widget>
</item>
<item row="0" column="1">
- <widget class="QLineEdit" name="usernameTextBox">
- <property name="placeholderText">
- <string>Username</string>
+ <widget class="QComboBox" name="usernameTextBox">
+ <property name="editable">
+ <bool>true</bool>
</property>
</widget>
</item>
@@ -54,20 +54,23 @@
</property>
</widget>
</item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="checkboxLayout">
- <item>
- <widget class="QPushButton" name="forceUpdateButton">
- <property name="text">
- <string>&amp;Force Update</string>
+ <item row="0" column="2" rowspan="2">
+ <widget class="QPushButton" name="forgetButton">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="checkable">
- <bool>true</bool>
+ <property name="text">
+ <string>Forget</string>
</property>
</widget>
</item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="checkboxLayout">
<item>
<widget class="QCheckBox" name="rememberUsernameCheckbox">
<property name="sizePolicy">