1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-22 12:47:44 +00:00
astra/launcher/include/accountmanager.h
Joshua Goins c602f01062 Move fetchAvatar from Account to LauncherCore
This is to head towards removing the LauncherCore dependency inside of
Account (and by extension, AccountManager.) This function should really
belong here anyway, since it uses a lot of functionality from
LauncherCore.
2024-08-22 18:46:45 -04:00

55 lines
No EOL
1.5 KiB
C++

// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <QAbstractListModel>
#include "account.h"
class AccountManager : public QAbstractListModel
{
Q_OBJECT
QML_ELEMENT
QML_UNCREATABLE("Use LauncherCore.accountManager")
Q_PROPERTY(int numAccounts READ numAccounts NOTIFY accountsChanged)
public:
explicit AccountManager(LauncherCore &launcher, QObject *parent = nullptr);
void load();
enum CustomRoles {
AccountRole = Qt::UserRole,
};
[[nodiscard]] int rowCount(const QModelIndex &index) const override;
[[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
[[nodiscard]] QHash<int, QByteArray> roleNames() const override;
Q_INVOKABLE Account *createSquareEnixAccount(const QString &username, int licenseType, bool isFreeTrial);
Q_INVOKABLE Account *createSapphireAccount(const QString &lobbyUrl, const QString &username);
[[nodiscard]] Account *getByUuid(const QString &uuid) const;
Q_INVOKABLE bool canDelete(const Account *account) const;
Q_INVOKABLE void deleteAccount(Account *account);
Q_INVOKABLE [[nodiscard]] bool hasAnyAccounts() const;
Q_INVOKABLE [[nodiscard]] int numAccounts() const;
Q_SIGNALS:
void accountsChanged();
void accountAdded(Account *account);
void accountLodestoneIdChanged(Account *account);
private:
void insertAccount(Account *account);
QList<Account *> m_accounts;
LauncherCore &m_launcher;
};