mirror of
https://github.com/redstrate/Astra.git
synced 2025-04-25 13:57:45 +00:00
Port to declarative type registration
This commit is contained in:
parent
f4a8b9ac78
commit
3e7139c216
9 changed files with 35 additions and 26 deletions
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QtQml/qqmlregistration.h>
|
||||||
|
|
||||||
#include "accountconfig.h"
|
#include "accountconfig.h"
|
||||||
|
|
||||||
|
@ -13,6 +14,8 @@ class LauncherCore;
|
||||||
class Account : public QObject
|
class Account : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_UNCREATABLE("Use from AccountManager")
|
||||||
|
|
||||||
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
|
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
|
||||||
Q_PROPERTY(int language READ language WRITE setLanguage NOTIFY languageChanged)
|
Q_PROPERTY(int language READ language WRITE setLanguage NOTIFY languageChanged)
|
||||||
|
|
|
@ -4,12 +4,15 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
|
#include <QtQml/qqmlregistration.h>
|
||||||
|
|
||||||
#include "account.h"
|
#include "account.h"
|
||||||
|
|
||||||
class AccountManager : public QAbstractListModel
|
class AccountManager : public QAbstractListModel
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_UNCREATABLE("Use LauncherCore.accountManager")
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit AccountManager(LauncherCore &launcher, QObject *parent = nullptr);
|
explicit AccountManager(LauncherCore &launcher, QObject *parent = nullptr);
|
||||||
|
|
|
@ -5,12 +5,16 @@
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QtQml/qqmlregistration.h>
|
||||||
|
|
||||||
class LauncherCore;
|
class LauncherCore;
|
||||||
|
|
||||||
class CompatibilityToolInstaller : public QObject
|
class CompatibilityToolInstaller : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_UNCREATABLE("Use LauncherCore.createCompatInstaller")
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CompatibilityToolInstaller(LauncherCore &launcher, QObject *parent = nullptr);
|
CompatibilityToolInstaller(LauncherCore &launcher, QObject *parent = nullptr);
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
|
#include <QtQml/qqmlregistration.h>
|
||||||
|
|
||||||
class LauncherCore;
|
class LauncherCore;
|
||||||
class Profile;
|
class Profile;
|
||||||
|
@ -12,6 +13,9 @@ class Profile;
|
||||||
class GameInstaller : public QObject
|
class GameInstaller : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_UNCREATABLE("Use Launchercore.createInstaller")
|
||||||
|
|
||||||
public:
|
public:
|
||||||
GameInstaller(LauncherCore &launcher, Profile &profile, QObject *parent = nullptr);
|
GameInstaller(LauncherCore &launcher, Profile &profile, QObject *parent = nullptr);
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,8 @@ struct LoginAuth {
|
||||||
class LauncherCore : public QObject
|
class LauncherCore : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_SINGLETON
|
||||||
|
|
||||||
Q_PROPERTY(bool loadingFinished READ isLoadingFinished NOTIFY loadingFinished)
|
Q_PROPERTY(bool loadingFinished READ isLoadingFinished NOTIFY loadingFinished)
|
||||||
Q_PROPERTY(bool hasAccount READ hasAccount NOTIFY accountChanged)
|
Q_PROPERTY(bool hasAccount READ hasAccount NOTIFY accountChanged)
|
||||||
|
@ -72,13 +74,15 @@ class LauncherCore : public QObject
|
||||||
Q_PROPERTY(Headline *headline READ headline NOTIFY newsChanged)
|
Q_PROPERTY(Headline *headline READ headline NOTIFY newsChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit LauncherCore(bool isSteam);
|
LauncherCore();
|
||||||
|
|
||||||
QNetworkAccessManager *mgr;
|
QNetworkAccessManager *mgr;
|
||||||
|
|
||||||
ProfileManager *profileManager();
|
ProfileManager *profileManager();
|
||||||
AccountManager *accountManager();
|
AccountManager *accountManager();
|
||||||
|
|
||||||
|
void setIsSteam(bool isSteam);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Begins the login process, and may call SquareBoot or SapphireLauncher depending on the profile type.
|
* Begins the login process, and may call SquareBoot or SapphireLauncher depending on the profile type.
|
||||||
* It's designed to be opaque as possible to the caller.
|
* It's designed to be opaque as possible to the caller.
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QtQml/qqmlregistration.h>
|
||||||
|
|
||||||
#include "squareboot.h"
|
#include "squareboot.h"
|
||||||
|
|
||||||
|
@ -13,6 +14,8 @@ class ProfileConfig;
|
||||||
class Profile : public QObject
|
class Profile : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_UNCREATABLE("Use from ProfileManager")
|
||||||
|
|
||||||
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
|
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
|
||||||
Q_PROPERTY(QString gamePath READ gamePath WRITE setGamePath NOTIFY gamePathChanged)
|
Q_PROPERTY(QString gamePath READ gamePath WRITE setGamePath NOTIFY gamePathChanged)
|
||||||
|
|
|
@ -4,12 +4,15 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
|
#include <QtQml/qqmlregistration.h>
|
||||||
|
|
||||||
#include "profile.h"
|
#include "profile.h"
|
||||||
|
|
||||||
class ProfileManager : public QAbstractListModel
|
class ProfileManager : public QAbstractListModel
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
QML_UNCREATABLE("Use LauncherCore.profileManager")
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ProfileManager(LauncherCore &launcher, QObject *parent = nullptr);
|
explicit ProfileManager(LauncherCore &launcher, QObject *parent = nullptr);
|
||||||
|
|
|
@ -371,8 +371,7 @@ void LauncherCore::readInitialInformation()
|
||||||
Q_EMIT loadingFinished();
|
Q_EMIT loadingFinished();
|
||||||
}
|
}
|
||||||
|
|
||||||
LauncherCore::LauncherCore(bool isSteam)
|
LauncherCore::LauncherCore()
|
||||||
: m_isSteam(isSteam)
|
|
||||||
{
|
{
|
||||||
mgr = new QNetworkAccessManager(this);
|
mgr = new QNetworkAccessManager(this);
|
||||||
sapphireLauncher = new SapphireLauncher(*this, this);
|
sapphireLauncher = new SapphireLauncher(*this, this);
|
||||||
|
@ -704,3 +703,8 @@ bool LauncherCore::isSteamDeck() const
|
||||||
{
|
{
|
||||||
return steamApi->isDeck();
|
return steamApi->isDeck();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LauncherCore::setIsSteam(bool isSteam)
|
||||||
|
{
|
||||||
|
m_isSteam = isSteam;
|
||||||
|
}
|
||||||
|
|
|
@ -65,32 +65,13 @@ int main(int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LauncherCore c(parser.isSet(steamOption));
|
|
||||||
#else
|
|
||||||
LauncherCore c(false);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
qmlRegisterSingletonInstance("zone.xiv.astra", 1, 0, "LauncherCore", &c);
|
|
||||||
qmlRegisterUncreatableType<GameInstaller>("zone.xiv.astra", 1, 0, "GameInstaller", QStringLiteral("Use LauncherCore::createInstaller"));
|
|
||||||
qmlRegisterUncreatableType<CompatibilityToolInstaller>("zone.xiv.astra",
|
|
||||||
1,
|
|
||||||
0,
|
|
||||||
"CompatibilityToolInstaller",
|
|
||||||
QStringLiteral("Use LauncherCore::createCompatInstaller"));
|
|
||||||
qmlRegisterUncreatableType<AccountManager>("zone.xiv.astra", 1, 0, "AccountManager", QStringLiteral("Use LauncherCore::accountManager"));
|
|
||||||
qmlRegisterUncreatableType<ProfileManager>("zone.xiv.astra", 1, 0, "ProfileManager", QStringLiteral("Use LauncherCore::profileManager"));
|
|
||||||
qmlRegisterUncreatableType<Profile>("zone.xiv.astra", 1, 0, "Profile", QStringLiteral("Use from ProfileManager"));
|
|
||||||
qmlRegisterUncreatableType<Account>("zone.xiv.astra", 1, 0, "Account", QStringLiteral("Use from AccountManager"));
|
|
||||||
qmlRegisterSingletonType("zone.xiv.astra", 1, 0, "About", [](QQmlEngine *engine, QJSEngine *) -> QJSValue {
|
|
||||||
return engine->toScriptValue(KAboutData::applicationData());
|
|
||||||
});
|
|
||||||
qmlRegisterUncreatableType<Headline>("zone.xiv.astra", 1, 0, "Headline", QStringLiteral("Use from AccountManager"));
|
|
||||||
qRegisterMetaType<Banner>("Banner");
|
|
||||||
qRegisterMetaType<QList<Banner>>("QList<Banner>");
|
|
||||||
qRegisterMetaType<QList<News>>("QList<News>");
|
|
||||||
|
|
||||||
QQmlApplicationEngine engine;
|
QQmlApplicationEngine engine;
|
||||||
|
|
||||||
|
auto core = engine.singletonInstance<LauncherCore *>("zone.xiv.astra", "LauncherCore");
|
||||||
|
core->setIsSteam(parser.isSet(steamOption));
|
||||||
|
|
||||||
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
|
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
|
||||||
QObject::connect(&engine, &QQmlApplicationEngine::quit, &app, &QCoreApplication::quit);
|
QObject::connect(&engine, &QQmlApplicationEngine::quit, &app, &QCoreApplication::quit);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue