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

@ -26,7 +26,7 @@
#include "logger/QsLog.h"
AuthenticateTask::AuthenticateTask(MojangAccount* account, const QString& password, QObject* parent) :
AuthenticateTask::AuthenticateTask(MojangAccountPtr account, const QString& password, QObject* parent) :
YggdrasilTask(account, parent), m_password(password)
{
}

View File

@ -29,7 +29,7 @@ class AuthenticateTask : public YggdrasilTask
{
Q_OBJECT
public:
AuthenticateTask(MojangAccount* account, const QString& password, QObject* parent=0);
AuthenticateTask(MojangAccountPtr account, const QString& password, QObject* parent=0);
protected:
virtual QJsonObject getRequestContent() const;

View File

@ -41,6 +41,16 @@ MojangAccount::MojangAccount(const QString& username, const QString& clientToken
m_currentProfile = -1;
}
MojangAccount::MojangAccount(const MojangAccount& other, QObject* parent)
{
m_username = other.username();
m_clientToken = other.clientToken();
m_accessToken = other.accessToken();
m_profiles = other.m_profiles;
m_currentProfile = other.m_currentProfile;
}
QString MojangAccount::username() const
{

View File

@ -19,6 +19,7 @@
#include <QString>
#include <QList>
#include <memory>
/**
* Class that represents a profile within someone's Mojang account.
@ -65,6 +66,11 @@ public:
*/
explicit MojangAccount(const QString& username, const QString& clientToken, const QString& accessToken, QObject* parent = 0);
/**
* Constructs a new MojangAccount matching the given account.
*/
MojangAccount(const MojangAccount& other, QObject* parent);
/**
* This MojangAccount's username. May be an email address if the account is migrated.
@ -124,3 +130,6 @@ protected:
ProfileList m_profiles; // List of available profiles.
};
typedef std::shared_ptr<MojangAccount> MojangAccountPtr;
Q_DECLARE_METATYPE(MojangAccountPtr)

View File

@ -25,7 +25,7 @@
#include <MultiMC.h>
#include <logic/auth/MojangAccount.h>
YggdrasilTask::YggdrasilTask(MojangAccount* account, QObject* parent) : Task(parent)
YggdrasilTask::YggdrasilTask(MojangAccountPtr account, QObject* parent) : Task(parent)
{
m_error = nullptr;
m_account = account;
@ -175,7 +175,7 @@ YggdrasilTask::Error *YggdrasilTask::getError() const
return this->m_error;
}
MojangAccount* YggdrasilTask::getMojangAccount() const
MojangAccountPtr YggdrasilTask::getMojangAccount() const
{
return this->m_account;
}

View File

@ -20,8 +20,7 @@
#include <QString>
#include <QJsonObject>
class MojangAccount;
#include "logic/auth/MojangAccount.h"
class QNetworkReply;
@ -33,7 +32,7 @@ class YggdrasilTask : public Task
{
Q_OBJECT
public:
explicit YggdrasilTask(MojangAccount* account, QObject* parent=0);
explicit YggdrasilTask(MojangAccountPtr account, QObject* parent=0);
~YggdrasilTask();
/**
@ -61,7 +60,7 @@ public:
/**
* Gets the Mojang account that this task is operating on.
*/
virtual MojangAccount* getMojangAccount() const;
virtual MojangAccountPtr getMojangAccount() const;
/**
* Returns a pointer to a YggdrasilTask::Error object if an error has occurred.
@ -117,7 +116,7 @@ protected:
*/
virtual QString getStateMessage(const State state) const;
MojangAccount* m_account;
MojangAccountPtr m_account;
QNetworkReply* m_netReply;