diff --git a/launcher/config.kcfg b/launcher/config.kcfg index 2a83829..cc89bdb 100644 --- a/launcher/config.kcfg +++ b/launcher/config.kcfg @@ -32,6 +32,9 @@ SPDX-License-Identifier: CC0-1.0 square-enix.com + + xivapi.com + https diff --git a/launcher/include/launchercore.h b/launcher/include/launchercore.h index b2876f8..4c2680b 100755 --- a/launcher/include/launchercore.h +++ b/launcher/include/launchercore.h @@ -71,6 +71,7 @@ class LauncherCore : public QObject Q_PROPERTY(QString dalamudDistribServer READ dalamudDistribServer WRITE setDalamudDistribServer NOTIFY dalamudDistribServerChanged) Q_PROPERTY(QString squareEnixServer READ squareEnixServer WRITE setSquareEnixServer NOTIFY squareEnixServerChanged) Q_PROPERTY(QString squareEnixLoginServer READ squareEnixLoginServer WRITE setSquareEnixLoginServer NOTIFY squareEnixLoginServerChanged) + Q_PROPERTY(QString xivApiServer READ xivApiServer WRITE setXivApiServer NOTIFY xivApiServerChanged) Q_PROPERTY(QString preferredProtocol READ preferredProtocol WRITE setPreferredProtocol NOTIFY preferredProtocolChanged) Q_PROPERTY(bool argumentsEncrypted READ argumentsEncrypted WRITE setArgumentsEncrypted NOTIFY encryptedArgumentsChanged) Q_PROPERTY(Headline *headline READ headline NOTIFY newsChanged) @@ -143,6 +144,9 @@ public: [[nodiscard]] QString squareEnixLoginServer() const; void setSquareEnixLoginServer(const QString &value); + [[nodiscard]] QString xivApiServer() const; + void setXivApiServer(const QString &value); + [[nodiscard]] QString preferredProtocol() const; void setPreferredProtocol(const QString &value); @@ -185,6 +189,7 @@ signals: void dalamudDistribServerChanged(); void squareEnixServerChanged(); void squareEnixLoginServerChanged(); + void xivApiServerChanged(); void preferredProtocolChanged(); void encryptedArgumentsChanged(); void loginError(QString message); diff --git a/launcher/src/account.cpp b/launcher/src/account.cpp index 0745d80..2320e9f 100644 --- a/launcher/src/account.cpp +++ b/launcher/src/account.cpp @@ -227,7 +227,13 @@ void Account::fetchAvatar() const QString filename(QStringLiteral("%1/%2.jpg").arg(cacheLocation, lodestoneId())); if (!QFile(filename).exists()) { qDebug() << "Did not find lodestone character " << lodestoneId() << " in cache, fetching from xivapi."; - QNetworkRequest request(QStringLiteral("https://xivapi.com/character/%1").arg(lodestoneId())); + + QUrl url; + url.setScheme(m_launcher.preferredProtocol()); + url.setHost(m_launcher.xivApiServer()); + url.setPath(QStringLiteral("/character/%1").arg(lodestoneId())); + + QNetworkRequest request(url); const auto reply = m_launcher.mgr->get(request); connect(reply, &QNetworkReply::finished, [this, filename, reply] { auto document = QJsonDocument::fromJson(reply->readAll()); diff --git a/launcher/src/launchercore.cpp b/launcher/src/launchercore.cpp index 3874c45..d58d267 100755 --- a/launcher/src/launchercore.cpp +++ b/launcher/src/launchercore.cpp @@ -597,6 +597,20 @@ void LauncherCore::setSquareEnixLoginServer(const QString &value) } } +QString LauncherCore::xivApiServer() const +{ + return Config::xivApiServer(); +} + +void LauncherCore::setXivApiServer(const QString &value) +{ + if (value != Config::xivApiServer()) { + Config::setXivApiServer(value); + Config::self()->save(); + Q_EMIT xivApiServerChanged(); + } +} + QString LauncherCore::preferredProtocol() const { return Config::preferredProtocol(); diff --git a/launcher/ui/Settings/DeveloperSettings.qml b/launcher/ui/Settings/DeveloperSettings.qml index 24b3476..65378ce 100644 --- a/launcher/ui/Settings/DeveloperSettings.qml +++ b/launcher/ui/Settings/DeveloperSettings.qml @@ -27,7 +27,7 @@ FormCard.FormCardPage { id: keepPatchesDelegate text: i18n("Keep Patches") - description: i18n("Do not delete patches after they're used. Astra will not redownload patch data, if found.") + description: i18n("Do not delete patches after they're used. Astra will not download patch data, if found.") checked: LauncherCore.keepPatches onCheckedChanged: LauncherCore.keepPatches = checked } @@ -102,5 +102,18 @@ FormCard.FormCardPage { text: LauncherCore.squareEnixLoginServer onTextChanged: LauncherCore.squareEnixLoginServer = text } + + FormCard.FormDelegateSeparator { + above: loginServerDelegate + below: xivApiServerDelegate + } + + FormCard.FormTextFieldDelegate { + id: xivApiServerDelegate + + label: i18n("XIV Api Server") + text: LauncherCore.xivApiServer + onTextChanged: LauncherCore.xivApiServer = text + } } } \ No newline at end of file