mirror of
https://github.com/redstrate/Astra.git
synced 2025-06-08 15:07:45 +00:00
Add "use one-time password" option that can hide the field
This is useful for users who choose to not use OTP, and the layout is improved so the field is automatically hidden for Sapphire servers, which don't support OTP. The register button is also hidden automatically for Square Enix accounts, instead of simply disabling the button.
This commit is contained in:
parent
9ed269c697
commit
a9c6bda52a
6 changed files with 42 additions and 10 deletions
|
@ -75,6 +75,7 @@ struct ProfileSettings {
|
||||||
bool isSapphire = false;
|
bool isSapphire = false;
|
||||||
QString lobbyURL;
|
QString lobbyURL;
|
||||||
bool rememberUsername = false, rememberPassword = false;
|
bool rememberUsername = false, rememberPassword = false;
|
||||||
|
bool useOneTimePassword = false;
|
||||||
|
|
||||||
GameLicense license = GameLicense::WindowsStandalone;
|
GameLicense license = GameLicense::WindowsStandalone;
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QTreeWidget>
|
#include <QTreeWidget>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
|
#include <QFormLayout>
|
||||||
|
|
||||||
#include "launchercore.h"
|
#include "launchercore.h"
|
||||||
#include "headline.h"
|
#include "headline.h"
|
||||||
|
@ -31,6 +32,7 @@ private:
|
||||||
bool currentlyReloadingControls = false;
|
bool currentlyReloadingControls = false;
|
||||||
|
|
||||||
QGridLayout* layout;
|
QGridLayout* layout;
|
||||||
|
QFormLayout* loginLayout;
|
||||||
|
|
||||||
QLabel* bannerImageView;
|
QLabel* bannerImageView;
|
||||||
QTreeWidget* newsListView;
|
QTreeWidget* newsListView;
|
||||||
|
|
|
@ -54,6 +54,7 @@ private:
|
||||||
QLineEdit* lobbyServerURL = nullptr;
|
QLineEdit* lobbyServerURL = nullptr;
|
||||||
QCheckBox* rememberUsernameBox = nullptr, *rememberPasswordBox = nullptr;
|
QCheckBox* rememberUsernameBox = nullptr, *rememberPasswordBox = nullptr;
|
||||||
QComboBox* gameLicenseBox = nullptr;
|
QComboBox* gameLicenseBox = nullptr;
|
||||||
|
QCheckBox* useOneTimePassword = nullptr;
|
||||||
|
|
||||||
// dalamud
|
// dalamud
|
||||||
QCheckBox* enableDalamudBox = nullptr;
|
QCheckBox* enableDalamudBox = nullptr;
|
||||||
|
|
|
@ -370,6 +370,7 @@ void LauncherCore::readInitialInformation() {
|
||||||
profile.lobbyURL = settings.value("lobbyURL", defaultSettings.lobbyURL).toString();
|
profile.lobbyURL = settings.value("lobbyURL", defaultSettings.lobbyURL).toString();
|
||||||
profile.rememberUsername = settings.value("rememberUsername", defaultSettings.rememberUsername).toBool();
|
profile.rememberUsername = settings.value("rememberUsername", defaultSettings.rememberUsername).toBool();
|
||||||
profile.rememberPassword = settings.value("rememberPassword", defaultSettings.rememberPassword).toBool();
|
profile.rememberPassword = settings.value("rememberPassword", defaultSettings.rememberPassword).toBool();
|
||||||
|
profile.useOneTimePassword = settings.value("useOneTimePassword", defaultSettings.useOneTimePassword).toBool();
|
||||||
profile.license = (GameLicense)settings.value("license", (int)defaultSettings.license).toInt();
|
profile.license = (GameLicense)settings.value("license", (int)defaultSettings.license).toInt();
|
||||||
|
|
||||||
profile.useDX9 = settings.value("useDX9", defaultSettings.useDX9).toBool();
|
profile.useDX9 = settings.value("useDX9", defaultSettings.useDX9).toBool();
|
||||||
|
@ -589,6 +590,7 @@ void LauncherCore::saveSettings() {
|
||||||
settings.setValue("lobbyURL", profile.lobbyURL);
|
settings.setValue("lobbyURL", profile.lobbyURL);
|
||||||
settings.setValue("rememberUsername", profile.rememberUsername);
|
settings.setValue("rememberUsername", profile.rememberUsername);
|
||||||
settings.setValue("rememberPassword", profile.rememberPassword);
|
settings.setValue("rememberPassword", profile.rememberPassword);
|
||||||
|
settings.setValue("useOneTimePassword", profile.useOneTimePassword);
|
||||||
settings.setValue("license", (int)profile.license);
|
settings.setValue("license", (int)profile.license);
|
||||||
|
|
||||||
settings.setValue("enableDalamud", profile.dalamud.enabled);
|
settings.setValue("enableDalamud", profile.dalamud.enabled);
|
||||||
|
|
|
@ -110,7 +110,7 @@ LauncherWindow::LauncherWindow(LauncherCore& core, QWidget* parent) : QMainWindo
|
||||||
QDesktopServices::openUrl(url);
|
QDesktopServices::openUrl(url);
|
||||||
});
|
});
|
||||||
|
|
||||||
auto loginLayout = new QFormLayout();
|
loginLayout = new QFormLayout();
|
||||||
layout->addLayout(loginLayout, 0, 1, 1, 1);
|
layout->addLayout(loginLayout, 0, 1, 1, 1);
|
||||||
|
|
||||||
profileSelect = new QComboBox();
|
profileSelect = new QComboBox();
|
||||||
|
@ -142,13 +142,8 @@ LauncherWindow::LauncherWindow(LauncherCore& core, QWidget* parent) : QMainWindo
|
||||||
loginLayout->addRow("Remember Password?", rememberPasswordBox);
|
loginLayout->addRow("Remember Password?", rememberPasswordBox);
|
||||||
|
|
||||||
otpEdit = new QLineEdit();
|
otpEdit = new QLineEdit();
|
||||||
loginLayout->addRow("One-Time Password", otpEdit);
|
|
||||||
|
|
||||||
loginButton = new QPushButton("Login");
|
loginButton = new QPushButton("Login");
|
||||||
loginLayout->addRow(loginButton);
|
|
||||||
|
|
||||||
registerButton = new QPushButton("Register");
|
registerButton = new QPushButton("Register");
|
||||||
loginLayout->addRow(registerButton);
|
|
||||||
|
|
||||||
auto emptyWidget = new QWidget();
|
auto emptyWidget = new QWidget();
|
||||||
emptyWidget->setLayout(layout);
|
emptyWidget->setLayout(layout);
|
||||||
|
@ -274,10 +269,6 @@ void LauncherWindow::reloadControls() {
|
||||||
loginButton->setText("Login (Game is not installed)");
|
loginButton->setText("Login (Game is not installed)");
|
||||||
}
|
}
|
||||||
|
|
||||||
loginButton->setEnabled(canLogin);
|
|
||||||
registerButton->setEnabled(currentProfile().isSapphire);
|
|
||||||
otpEdit->setEnabled(!currentProfile().isSapphire);
|
|
||||||
|
|
||||||
launchOfficial->setEnabled(currentProfile().isGameInstalled());
|
launchOfficial->setEnabled(currentProfile().isGameInstalled());
|
||||||
launchSysInfo->setEnabled(currentProfile().isGameInstalled());
|
launchSysInfo->setEnabled(currentProfile().isGameInstalled());
|
||||||
launchCfgBackup->setEnabled(currentProfile().isGameInstalled());
|
launchCfgBackup->setEnabled(currentProfile().isGameInstalled());
|
||||||
|
@ -292,6 +283,30 @@ void LauncherWindow::reloadControls() {
|
||||||
layout->removeWidget(newsListView);
|
layout->removeWidget(newsListView);
|
||||||
newsListView->hide();
|
newsListView->hide();
|
||||||
|
|
||||||
|
auto field = loginLayout->labelForField(otpEdit);
|
||||||
|
if(field != nullptr)
|
||||||
|
field->deleteLater();
|
||||||
|
|
||||||
|
loginLayout->takeRow(otpEdit);
|
||||||
|
otpEdit->hide();
|
||||||
|
|
||||||
|
if(currentProfile().useOneTimePassword && !currentProfile().isSapphire) {
|
||||||
|
loginLayout->addRow("One-Time Password", otpEdit);
|
||||||
|
otpEdit->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
loginLayout->takeRow(loginButton);
|
||||||
|
loginButton->setEnabled(canLogin);
|
||||||
|
loginLayout->addRow(loginButton);
|
||||||
|
|
||||||
|
loginLayout->takeRow(registerButton);
|
||||||
|
registerButton->hide();
|
||||||
|
|
||||||
|
if(currentProfile().isSapphire) {
|
||||||
|
loginLayout->addRow(registerButton);
|
||||||
|
registerButton->show();
|
||||||
|
}
|
||||||
|
|
||||||
if(core.appSettings.showBanners || core.appSettings.showNewsList) {
|
if(core.appSettings.showBanners || core.appSettings.showNewsList) {
|
||||||
int totalRow = 0;
|
int totalRow = 0;
|
||||||
if(core.appSettings.showBanners) {
|
if(core.appSettings.showBanners) {
|
||||||
|
|
|
@ -239,6 +239,16 @@ SettingsWindow::SettingsWindow(int defaultTab, LauncherWindow& window, LauncherC
|
||||||
});
|
});
|
||||||
loginBoxLayout->addRow("Remember Password", rememberPasswordBox);
|
loginBoxLayout->addRow("Remember Password", rememberPasswordBox);
|
||||||
|
|
||||||
|
useOneTimePassword = new QCheckBox();
|
||||||
|
connect(useOneTimePassword, &QCheckBox::stateChanged, [=](int) {
|
||||||
|
getCurrentProfile().useOneTimePassword =
|
||||||
|
useOneTimePassword->isChecked();
|
||||||
|
|
||||||
|
this->core.saveSettings();
|
||||||
|
this->window.reloadControls();
|
||||||
|
});
|
||||||
|
loginBoxLayout->addRow("Use One-time Password", useOneTimePassword);
|
||||||
|
|
||||||
#if defined(Q_OS_MAC) || defined(Q_OS_LINUX)
|
#if defined(Q_OS_MAC) || defined(Q_OS_LINUX)
|
||||||
auto wineBox = new QGroupBox("Wine Options");
|
auto wineBox = new QGroupBox("Wine Options");
|
||||||
auto wineBoxLayout = new QFormLayout();
|
auto wineBoxLayout = new QFormLayout();
|
||||||
|
@ -516,6 +526,7 @@ void SettingsWindow::reloadControls() {
|
||||||
}
|
}
|
||||||
rememberUsernameBox->setChecked(profile.rememberUsername);
|
rememberUsernameBox->setChecked(profile.rememberUsername);
|
||||||
rememberPasswordBox->setChecked(profile.rememberPassword);
|
rememberPasswordBox->setChecked(profile.rememberPassword);
|
||||||
|
useOneTimePassword->setChecked(profile.useOneTimePassword);
|
||||||
gameLicenseBox->setCurrentIndex((int)profile.license);
|
gameLicenseBox->setCurrentIndex((int)profile.license);
|
||||||
|
|
||||||
// dalamud
|
// dalamud
|
||||||
|
|
Loading…
Add table
Reference in a new issue