Implement account list and account list dialog

This commit is contained in:
Andrew
2013-11-18 12:05:35 -06:00
parent ad8aeb0b2b
commit cdca530139
12 changed files with 520 additions and 9 deletions

View File

@ -0,0 +1,90 @@
/* Copyright 2013 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "AccountListDialog.h"
#include "ui_AccountListDialog.h"
#include <logger/QsLog.h>
#include <logic/auth/AuthenticateTask.h>
#include <gui/dialogs/LoginDialog.h>
#include <gui/dialogs/ProgressDialog.h>
AccountListDialog::AccountListDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::AccountListDialog)
{
ui->setupUi(this);
ui->listView->setModel(&m_accounts);
}
AccountListDialog::~AccountListDialog()
{
delete ui;
}
void AccountListDialog::on_addAccountBtn_clicked()
{
doLogin("Please log in to add your account.");
}
void AccountListDialog::on_rmAccountBtn_clicked()
{
// TODO
}
void AccountListDialog::on_editAccountBtn_clicked()
{
// TODO
}
void AccountListDialog::on_closedBtnBox_rejected()
{
close();
}
void AccountListDialog::doLogin(const QString& errMsg)
{
// TODO: We can use the login dialog for this for now, but we'll have to make something better for it eventually.
LoginDialog loginDialog(this);
loginDialog.exec();
if (loginDialog.result() == QDialog::Accepted)
{
QString username(loginDialog.getUsername());
QString password(loginDialog.getPassword());
MojangAccountPtr account = MojangAccountPtr(new MojangAccount(username));
ProgressDialog* progDialog = new ProgressDialog(this);
m_authTask = new AuthenticateTask(account, password, progDialog);
connect(m_authTask, SIGNAL(succeeded()), SLOT(onLoginComplete()), Qt::QueuedConnection);
connect(m_authTask, SIGNAL(failed(QString)), SLOT(doLogin(QString)), Qt::QueuedConnection);
progDialog->exec(m_authTask);
//delete m_authTask;
}
}
void AccountListDialog::onLoginComplete()
{
// Add the authenticated account to the accounts list.
MojangAccountPtr account = m_authTask->getMojangAccount();
m_accounts.addAccount(account);
//ui->listView->update();
}

View File

@ -0,0 +1,60 @@
/* Copyright 2013 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <QDialog>
#include "logic/lists/MojangAccountList.h"
namespace Ui {
class AccountListDialog;
}
class AuthenticateTask;
class AccountListDialog : public QDialog
{
Q_OBJECT
public:
explicit AccountListDialog(QWidget *parent = 0);
~AccountListDialog();
public
slots:
void on_addAccountBtn_clicked();
void on_rmAccountBtn_clicked();
void on_editAccountBtn_clicked();
// This will be sent when the "close" button is clicked.
void on_closedBtnBox_rejected();
protected:
// Temporarily putting this here...
MojangAccountList m_accounts;
AuthenticateTask* m_authTask;
protected
slots:
void doLogin(const QString& errMsg="");
void onLoginComplete();
private:
Ui::AccountListDialog *ui;
};

View File

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AccountListDialog</class>
<widget class="QDialog" name="AccountListDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="welcomeLabel">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Welcome! If you're new here, you can click the &amp;quot;Add&amp;quot; button to add your Mojang or Minecraft account.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QListView" name="listView"/>
</item>
<item>
<layout class="QVBoxLayout" name="manageAcctsBtnBox">
<item>
<widget class="QPushButton" name="addAccountBtn">
<property name="text">
<string>&amp;Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="editAccountBtn">
<property name="text">
<string>&amp;Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="rmAccountBtn">
<property name="text">
<string>&amp;Remove</string>
</property>
</widget>
</item>
<item>
<spacer name="buttonSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
<item>
<widget class="QDialogButtonBox" name="closeBtnBox">
<property name="standardButtons">
<set>QDialogButtonBox::Close</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>