NOISSUE mark used accounts/sessions in selection menus

This commit is contained in:
Petr Mrázek
2016-11-15 02:51:22 +01:00
parent 3769897be1
commit 12f6534e77
13 changed files with 194 additions and 5 deletions

View File

@ -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;

View File

@ -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.";
}
}

View File

@ -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();