diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-11-15 02:51:22 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-11-17 01:00:15 +0100 |
commit | 12f6534e77d28ba5dc5fd5f555d43e7cd9da9336 (patch) | |
tree | 677c82d8d1a50c7027610e9602e423a568ae7762 /api/logic/minecraft/auth | |
parent | 3769897be19308ada8b975ecf541a3b200b5eb14 (diff) | |
download | MultiMC-12f6534e77d28ba5dc5fd5f555d43e7cd9da9336.tar MultiMC-12f6534e77d28ba5dc5fd5f555d43e7cd9da9336.tar.gz MultiMC-12f6534e77d28ba5dc5fd5f555d43e7cd9da9336.tar.lz MultiMC-12f6534e77d28ba5dc5fd5f555d43e7cd9da9336.tar.xz MultiMC-12f6534e77d28ba5dc5fd5f555d43e7cd9da9336.zip |
NOISSUE mark used accounts/sessions in selection menus
Diffstat (limited to 'api/logic/minecraft/auth')
-rw-r--r-- | api/logic/minecraft/auth/AuthSession.h | 3 | ||||
-rw-r--r-- | api/logic/minecraft/auth/MojangAccount.cpp | 22 | ||||
-rw-r--r-- | api/logic/minecraft/auth/MojangAccount.h | 11 |
3 files changed, 35 insertions, 1 deletions
diff --git a/api/logic/minecraft/auth/AuthSession.h b/api/logic/minecraft/auth/AuthSession.h index dede90a9..d2f66db8 100644 --- a/api/logic/minecraft/auth/AuthSession.h +++ b/api/logic/minecraft/auth/AuthSession.h @@ -6,6 +6,8 @@ #include "multimc_logic_export.h" +class MojangAccount; + struct User { QString id; @@ -46,6 +48,7 @@ struct MULTIMC_LOGIC_EXPORT AuthSession bool auth_server_online = false; // Did the user request online mode? bool wants_online = true; + std::shared_ptr<MojangAccount> m_accountPtr; }; typedef std::shared_ptr<AuthSession> AuthSessionPtr; diff --git a/api/logic/minecraft/auth/MojangAccount.cpp b/api/logic/minecraft/auth/MojangAccount.cpp index 69a24c09..2b073aac 100644 --- a/api/logic/minecraft/auth/MojangAccount.cpp +++ b/api/logic/minecraft/auth/MojangAccount.cpp @@ -275,4 +275,26 @@ void MojangAccount::fillSession(AuthSessionPtr session) session->session = "-"; } session->u = user(); + session->m_accountPtr = shared_from_this(); +} + +void MojangAccount::decrementUses() +{ + Usable::decrementUses(); + if(!isInUse()) + { + emit changed(); + qWarning() << "Account" << m_username << "is no longer in use."; + } +} + +void MojangAccount::incrementUses() +{ + bool wasInUse = isInUse(); + Usable::incrementUses(); + if(!wasInUse) + { + emit changed(); + qWarning() << "Account" << m_username << "is now in use."; + } } diff --git a/api/logic/minecraft/auth/MojangAccount.h b/api/logic/minecraft/auth/MojangAccount.h index 2de0c19c..4902ec11 100644 --- a/api/logic/minecraft/auth/MojangAccount.h +++ b/api/logic/minecraft/auth/MojangAccount.h @@ -24,6 +24,7 @@ #include <memory> #include "AuthSession.h" +#include "Usable.h" #include "multimc_logic_export.h" @@ -60,7 +61,10 @@ enum AccountStatus * Said information may include things such as that account's username, client token, and access * token if the user chose to stay logged in. */ -class MULTIMC_LOGIC_EXPORT MojangAccount : public QObject +class MULTIMC_LOGIC_EXPORT MojangAccount : + public QObject, + public Usable, + public std::enable_shared_from_this<MojangAccount> { Q_OBJECT public: /* construction */ @@ -157,6 +161,11 @@ protected: /* variables */ // current task we are executing here std::shared_ptr<YggdrasilTask> m_currentTask; +protected: /* methods */ + + void incrementUses() override; + void decrementUses() override; + private slots: void authSucceeded(); |