From 933f460ee61a89ff71038c478de92d6c3760cc9a Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Mon, 3 Jun 2019 17:20:31 -0400 Subject: added new dialog to enter api key manually added button in nexus settings to open the dialog added a force flag to apiCheck() to do a check with the new key even if the login was successful before --- src/nexusmanualkey.ui | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ src/nxmaccessmanager.cpp | 6 +++- src/nxmaccessmanager.h | 2 +- src/settingsdialog.cpp | 43 +++++++++++++++++++++++ src/settingsdialog.h | 2 ++ src/settingsdialog.ui | 16 +++++++++ 6 files changed, 156 insertions(+), 2 deletions(-) create mode 100644 src/nexusmanualkey.ui (limited to 'src') diff --git a/src/nexusmanualkey.ui b/src/nexusmanualkey.ui new file mode 100644 index 00000000..191ca218 --- /dev/null +++ b/src/nexusmanualkey.ui @@ -0,0 +1,89 @@ + + + NexusManualKeyDialog + + + + 0 + 0 + 452 + 302 + + + + Dialog + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Enter API key here + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + NexusManualKeyDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + NexusManualKeyDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp index 00bb2a91..684a53fa 100644 --- a/src/nxmaccessmanager.cpp +++ b/src/nxmaccessmanager.cpp @@ -176,12 +176,16 @@ bool NXMAccessManager::validateWaiting() const } -void NXMAccessManager::apiCheck(const QString &apiKey) +void NXMAccessManager::apiCheck(const QString &apiKey, bool force) { if (m_ValidateReply != nullptr) { return; } + if (force) { + m_ValidateState = VALIDATE_NOT_CHECKED; + } + if (m_ValidateState == VALIDATE_VALID) { emit validateSuccessful(false); return; diff --git a/src/nxmaccessmanager.h b/src/nxmaccessmanager.h index 54ae14fb..e3608f8d 100644 --- a/src/nxmaccessmanager.h +++ b/src/nxmaccessmanager.h @@ -46,7 +46,7 @@ public: bool validateAttempted() const; bool validateWaiting() const; - void apiCheck(const QString &apiKey); + void apiCheck(const QString &apiKey, bool force=false); void showCookies() const; diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 7f53a9bb..44d7fde5 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -20,6 +20,7 @@ along with Mod Organizer. If not, see . #include "settingsdialog.h" #include "ui_settingsdialog.h" +#include "ui_nexusmanualkey.h" #include "categoriesdialog.h" #include "helper.h" #include "noeditdelegate.h" @@ -27,6 +28,7 @@ along with Mod Organizer. If not, see . #include "settings.h" #include "instancemanager.h" #include "nexusinterface.h" +#include "nxmaccessmanager.h" #include "plugincontainer.h" #include @@ -47,6 +49,33 @@ along with Mod Organizer. If not, see . using namespace MOBase; + +class NexusManualKeyDialog : public QDialog +{ +public: + NexusManualKeyDialog(QWidget* parent) + : QDialog(parent), ui(new Ui::NexusManualKeyDialog) + { + ui->setupUi(this); + } + + void accept() override + { + m_key = ui->key->toPlainText(); + QDialog::accept(); + } + + const QString& key() const + { + return m_key; + } + +private: + std::unique_ptr ui; + QString m_key; +}; + + SettingsDialog::SettingsDialog(PluginContainer *pluginContainer, QWidget *parent) : TutorableDialog("SettingsDialog", parent) , ui(new Ui::SettingsDialog) @@ -344,6 +373,20 @@ void SettingsDialog::on_nexusConnect_clicked() m_nexusLogin->open(url); } +void SettingsDialog::on_nexusManualKey_clicked() +{ + NexusManualKeyDialog dialog(this); + + if (dialog.exec() != QDialog::Accepted) { + return; + } + + const auto key = dialog.key(); + emit processApiKey(key); + ui->nexusConnect->setText("Nexus API Key Stored"); + NexusInterface::instance(m_PluginContainer)->getAccessManager()->apiCheck(key, true); +} + void SettingsDialog::dispatchLogin() { m_KeyReceived = false; diff --git a/src/settingsdialog.h b/src/settingsdialog.h index afe988bd..a844b391 100644 --- a/src/settingsdialog.h +++ b/src/settingsdialog.h @@ -156,6 +156,8 @@ private slots: void on_nexusConnect_clicked(); + void on_nexusManualKey_clicked(); + void dispatchLogin(); void loginPing(); diff --git a/src/settingsdialog.ui b/src/settingsdialog.ui index fa8893b9..088b7a0d 100644 --- a/src/settingsdialog.ui +++ b/src/settingsdialog.ui @@ -494,6 +494,22 @@ p, li { white-space: pre-wrap; } + + + + + 0 + 0 + + + + Manually enter the API key and try to login + + + Enter API Key Manually + + + -- cgit v1.3.1