From 12f6534e77d28ba5dc5fd5f555d43e7cd9da9336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 15 Nov 2016 02:51:22 +0100 Subject: NOISSUE mark used accounts/sessions in selection menus --- api/logic/minecraft/auth/AuthSession.h | 3 +++ api/logic/minecraft/auth/MojangAccount.cpp | 22 ++++++++++++++++++++++ api/logic/minecraft/auth/MojangAccount.h | 11 ++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) (limited to 'api/logic/minecraft/auth') 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 m_accountPtr; }; typedef std::shared_ptr 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 #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 { Q_OBJECT public: /* construction */ @@ -157,6 +161,11 @@ protected: /* variables */ // current task we are executing here std::shared_ptr m_currentTask; +protected: /* methods */ + + void incrementUses() override; + void decrementUses() override; + private slots: void authSucceeded(); -- cgit v1.2.3