1
Fork 0
mirror of https://github.com/redstrate/Astra.git synced 2025-04-21 20:27:45 +00:00
astra/launcher/include/account.h
Joshua Goins 8dd26f74a5 Improve the config/data directory, introduce more separation
The data directory has been rearranged, and all the Dalamud data is
stored separately, so it's no longer clogging up everything. Dalamud
logs (and our own logs, when that's implemented) now exist in
XDG_STATE_HOME, instead of the data directory.

The game directory now exists under the data directory, instead of
~/.wine. The user path is set before launching the game, and it now
 exists under the data directory too. These are also prefixed to the
user and profile UUID that it belongs to.

The "keep patches" option is now implemented (which is off by default)
and it lives in the temporary directory now.
2023-08-18 14:52:06 -04:00

101 lines
No EOL
2.9 KiB
C++

// SPDX-FileCopyrightText: 2023 Joshua Goins <josh@redstrate.com>
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <QDir>
#include <QObject>
#include "accountconfig.h"
class LauncherCore;
class Account : public QObject
{
Q_OBJECT
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
Q_PROPERTY(QString lodestoneId READ lodestoneId WRITE setLodestoneId NOTIFY lodestoneIdChanged)
Q_PROPERTY(QString avatarUrl READ avatarUrl NOTIFY avatarUrlChanged)
Q_PROPERTY(bool isSapphire READ isSapphire WRITE setIsSapphire NOTIFY isSapphireChanged)
Q_PROPERTY(QString lobbyUrl READ lobbyUrl WRITE setLobbyUrl NOTIFY lobbyUrlChanged)
Q_PROPERTY(bool rememberPassword READ rememberPassword WRITE setRememberPassword NOTIFY rememberPasswordChanged)
Q_PROPERTY(bool rememberOTP READ rememberOTP WRITE setRememberOTP NOTIFY rememberOTPChanged)
Q_PROPERTY(bool useOTP READ useOTP WRITE setUseOTP NOTIFY useOTPChanged)
Q_PROPERTY(GameLicense license READ license WRITE setLicense NOTIFY licenseChanged)
Q_PROPERTY(bool isFreeTrial READ isFreeTrial WRITE setIsFreeTrial NOTIFY isFreeTrialChanged)
public:
explicit Account(LauncherCore &launcher, const QString &key, QObject *parent = nullptr);
enum class GameLicense { WindowsStandalone, WindowsSteam, macOS };
Q_ENUM(GameLicense)
QString uuid() const;
QString name() const;
void setName(const QString &name);
QString lodestoneId() const;
void setLodestoneId(const QString &id);
QString avatarUrl() const;
bool isSapphire() const;
void setIsSapphire(bool value);
QString lobbyUrl() const;
void setLobbyUrl(const QString &url);
bool rememberPassword() const;
void setRememberPassword(bool value);
bool rememberOTP() const;
void setRememberOTP(bool value);
bool useOTP() const;
void setUseOTP(bool value);
GameLicense license() const;
void setLicense(GameLicense license);
bool isFreeTrial() const;
void setIsFreeTrial(bool value);
Q_INVOKABLE QString getPassword();
void setPassword(const QString &password);
Q_INVOKABLE QString getOTP();
QDir getConfigDir() const;
Q_SIGNALS:
void nameChanged();
void lodestoneIdChanged();
void avatarUrlChanged();
void isSapphireChanged();
void lobbyUrlChanged();
void rememberPasswordChanged();
void rememberOTPChanged();
void useOTPChanged();
void licenseChanged();
void isFreeTrialChanged();
private:
void fetchAvatar();
/*
* Sets a value in the keychain. This function is asynchronous.
*/
void setKeychainValue(const QString &key, const QString &value);
/*
* Retrieves a value from the keychain. This function is synchronous.
*/
QString getKeychainValue(const QString &key);
AccountConfig m_config;
QString m_key;
QUrl m_url;
LauncherCore &m_launcher;
};