summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-07-30 00:58:03 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2020-11-03 11:39:06 -0500
commit44d9ebaf076ff5be5235b65fe68a8b0699c8cf6f (patch)
treeb3e1f70c4ea46a9dc69d12bd2bbfacce182dced3
parentc4df6b8ec98feb34cc9b9785e6d4d0eac6b3f571 (diff)
implemented nexus page
-rw-r--r--src/createinstancedialogpages.cpp17
-rw-r--r--src/createinstancedialogpages.h6
-rw-r--r--src/settingsdialognexus.cpp33
-rw-r--r--src/settingsdialognexus.h10
4 files changed, 41 insertions, 25 deletions
diff --git a/src/createinstancedialogpages.cpp b/src/createinstancedialogpages.cpp
index 37d50ee1..b2e3612f 100644
--- a/src/createinstancedialogpages.cpp
+++ b/src/createinstancedialogpages.cpp
@@ -3,6 +3,7 @@
#include "instancemanager.h"
#include "settings.h"
#include "plugincontainer.h"
+#include "settingsdialognexus.h"
#include "shared/appconfig.h"
#include <iplugingame.h>
#include <report.h>
@@ -998,10 +999,22 @@ bool PathsPage::checkPath(
NexusPage::NexusPage(CreateInstanceDialog& dlg)
- : Page(dlg)
+ : Page(dlg), m_skip(false)
{
+ m_connectionUI.reset(new NexusConnectionUI(
+ Settings::instance(), &m_dlg,
+ ui->nexusConnect,
+ nullptr,
+ ui->nexusManual,
+ ui->nexusLog));
+
+ // just check it once, or connecting and then going back and forth would skip
+ // the page, which would be unexpected
+ m_skip = Settings::instance().nexus().hasApiKey();
}
+NexusPage::~NexusPage() = default;
+
bool NexusPage::ready() const
{
return true;
@@ -1009,7 +1022,7 @@ bool NexusPage::ready() const
bool NexusPage::skip() const
{
- return Settings::instance().nexus().hasApiKey();
+ return m_skip;
}
void NexusPage::activated()
diff --git a/src/createinstancedialogpages.h b/src/createinstancedialogpages.h
index 88e49628..412f2d84 100644
--- a/src/createinstancedialogpages.h
+++ b/src/createinstancedialogpages.h
@@ -9,6 +9,8 @@
#include <QCommandLinkButton>
namespace MOBase { class IPluginGame; }
+class NexusConnectionUI;
+
namespace cid
{
@@ -207,13 +209,15 @@ class NexusPage : public Page
{
public:
NexusPage(CreateInstanceDialog& dlg);
+ ~NexusPage();
bool ready() const override;
bool skip() const override;
void activated() override;
private:
-
+ std::unique_ptr<NexusConnectionUI> m_connectionUI;
+ bool m_skip;
};
diff --git a/src/settingsdialognexus.cpp b/src/settingsdialognexus.cpp
index a76b9ad7..54af9b59 100644
--- a/src/settingsdialognexus.cpp
+++ b/src/settingsdialognexus.cpp
@@ -71,35 +71,31 @@ private:
};
-NexusConnectionUI::NexusConnectionUI(Settings& s, QWidget* parent) :
- m_parent(parent), m_settings(s),
- m_connect(nullptr), m_disconnect(nullptr), m_manual(nullptr), m_log(nullptr)
-{
-}
-
-void NexusConnectionUI::set(
+NexusConnectionUI::NexusConnectionUI(
+ Settings& s,
+ QWidget* parent,
QAbstractButton* connectButton,
QAbstractButton* disconnectButton,
QAbstractButton* manualButton,
- QListWidget* logList)
+ QListWidget* logList) :
+ m_parent(parent), m_settings(s),
+ m_connect(connectButton),
+ m_disconnect(disconnectButton),
+ m_manual(manualButton),
+ m_log(logList)
{
- m_connect = connectButton;
if (m_connect) {
QObject::connect(m_connect, &QPushButton::clicked, [&]{ connect(); });
}
- m_disconnect = disconnectButton;
if (m_disconnect) {
QObject::connect(m_disconnect, &QPushButton::clicked, [&]{ disconnect(); });
}
- m_manual = manualButton;
if (m_manual) {
QObject::connect(manualButton, &QPushButton::clicked, [&]{ manual(); });
}
- m_log = logList;
-
if (m_settings.nexus().hasApiKey()) {
addLog(tr("Connected."));
} else {
@@ -296,7 +292,7 @@ void NexusConnectionUI::updateState()
NexusSettingsTab::NexusSettingsTab(Settings& s, SettingsDialog& d)
- : SettingsTab(s, d), m_connectionUI(s, &d)
+ : SettingsTab(s, d)
{
ui->offlineBox->setChecked(settings().network().offlineMode());
ui->proxyBox->setChecked(settings().network().useProxy());
@@ -330,18 +326,19 @@ NexusSettingsTab::NexusSettingsTab(Settings& s, SettingsDialog& d)
ui->preferredServersList->sortItems(Qt::DescendingOrder);
}
- m_connectionUI.set(
+ m_connectionUI.reset(new NexusConnectionUI(
+ settings(), &dialog(),
ui->nexusConnect,
ui->nexusDisconnect,
ui->nexusManualKey,
- ui->nexusLog);
+ ui->nexusLog));
QObject::connect(
- &m_connectionUI, &NexusConnectionUI::stateChanged, &d,
+ m_connectionUI.get(), &NexusConnectionUI::stateChanged, &d,
[&]{ updateNexusData(); }, Qt::QueuedConnection);
QObject::connect(
- &m_connectionUI, &NexusConnectionUI::keyChanged, &d,
+ m_connectionUI.get(), &NexusConnectionUI::keyChanged, &d,
[&]{ dialog().setExitNeeded(Exit::Restart); });
diff --git a/src/settingsdialognexus.h b/src/settingsdialognexus.h
index 0adf67c7..a2d6a4f8 100644
--- a/src/settingsdialognexus.h
+++ b/src/settingsdialognexus.h
@@ -5,14 +5,16 @@
#include "settingsdialog.h"
#include "nxmaccessmanager.h"
+// used by the settings dialog and the create instance dialog
+//
class NexusConnectionUI : public QObject
{
Q_OBJECT;
public:
- NexusConnectionUI(Settings& s, QWidget* parent=nullptr);
-
- void set(
+ NexusConnectionUI(
+ Settings& s,
+ QWidget* parent,
QAbstractButton* connectButton,
QAbstractButton* disconnectButton,
QAbstractButton* manualButton,
@@ -61,7 +63,7 @@ public:
void update();
private:
- NexusConnectionUI m_connectionUI;
+ std::unique_ptr<NexusConnectionUI> m_connectionUI;
void on_clearCacheButton_clicked();
void on_associateButton_clicked();