diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2020-07-30 00:58:03 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2020-11-03 11:39:06 -0500 |
| commit | 44d9ebaf076ff5be5235b65fe68a8b0699c8cf6f (patch) | |
| tree | b3e1f70c4ea46a9dc69d12bd2bbfacce182dced3 | |
| parent | c4df6b8ec98feb34cc9b9785e6d4d0eac6b3f571 (diff) | |
implemented nexus page
| -rw-r--r-- | src/createinstancedialogpages.cpp | 17 | ||||
| -rw-r--r-- | src/createinstancedialogpages.h | 6 | ||||
| -rw-r--r-- | src/settingsdialognexus.cpp | 33 | ||||
| -rw-r--r-- | src/settingsdialognexus.h | 10 |
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(); |
