#ifndef SETTINGSDIALOGNEXUS_H #define SETTINGSDIALOGNEXUS_H #include "nexusoauthlogin.h" #include "nexusoauthtokens.h" #include "nxmaccessmanager.h" #include "settings.h" #include "settingsdialog.h" #include #include class QAbstractButton; class QListWidget; // used by the settings dialog and the create instance dialog // class NexusConnectionUI : public QObject { Q_OBJECT; public: NexusConnectionUI(QWidget* parent, Settings* s, QAbstractButton* connectButton, QAbstractButton* disconnectButton, QAbstractButton* manualButton, QListWidget* logList); void connect(); void manual(); void disconnect(); signals: void stateChanged(); void keyChanged(); private: QWidget* m_parent; Settings* m_settings; QAbstractButton* m_connect; QAbstractButton* m_disconnect; QAbstractButton* m_manual; QListWidget* m_log; std::unique_ptr m_nexusLogin; std::unique_ptr m_nexusValidator; std::optional m_pendingTokens; void addLog(const QString& s); void updateState(); void validateCredentials(const NexusOAuthTokens& tokens); bool persistTokens(const NexusOAuthTokens& tokens); bool clearCredentials(); void onTokensReceived(const NexusOAuthTokens& tokens); void onOAuthStateChanged(NXMAccessManager::OAuthState s, const QString& message); void onValidatorFinished(ValidationAttempt::Result r, const QString& message, std::optional user); }; class NexusSettingsTab : public SettingsTab { public: NexusSettingsTab(Settings& settings, SettingsDialog& dialog); void update(); private: std::unique_ptr m_connectionUI; void clearCache(); void updateNexusData(); void updateCustomBrowser(); void browseCustomBrowser(); }; #endif // SETTINGSDIALOGNEXUS_H