X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fcoreconfigwizard.h;h=72dd0aa2563c361e1d66afef0dddea70e14a71a5;hp=bed887bd880ebab222ae8f63426e66e5996379f3;hb=cc6e7c08709c4e761e2fd9c2e322751015497003;hpb=76db8cdfbeffaaba359c8e80cf2146da9e9e7f8a diff --git a/src/qtui/coreconfigwizard.h b/src/qtui/coreconfigwizard.h index bed887bd..72dd0aa2 100644 --- a/src/qtui/coreconfigwizard.h +++ b/src/qtui/coreconfigwizard.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,33 +18,39 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef _CORECONFIGWIZARD_H_ -#define _CORECONFIGWIZARD_H_ +#pragma once + +#include +#include -#include -#include #include +#include -#include "ui_coreconfigwizardintropage.h" #include "ui_coreconfigwizardadminuserpage.h" +#include "ui_coreconfigwizardauthenticationselectionpage.h" +#include "ui_coreconfigwizardintropage.h" #include "ui_coreconfigwizardstorageselectionpage.h" #include "ui_coreconfigwizardsyncpage.h" class CoreConnection; namespace CoreConfigWizardPages { + class SyncPage; class SyncRelayPage; -}; + +} // namespace CoreConfigWizardPages class CoreConfigWizard : public QWizard { Q_OBJECT public: - enum { + enum + { IntroPage, AdminUserPage, + AuthenticationSelectionPage, StorageSelectionPage, SyncPage, SyncRelayPage, @@ -52,112 +58,138 @@ public: ConclusionPage }; - CoreConfigWizard(CoreConnection *connection, const QList &backends, QWidget *parent = 0); - QHash backends() const; + CoreConfigWizard(CoreConnection* connection, const QVariantList& backendInfos, const QVariantList& authInfos, QWidget* parent = nullptr); - inline CoreConnection *coreConnection() const { return _connection; } + inline CoreConnection* coreConnection() const { return _connection; } signals: - void setupCore(const QVariant &setupData); - void loginToCore(const QString &user, const QString &password, bool rememberPassword); + void setupCore(const QVariant& setupData); + void loginToCore(const QString& user, const QString& password, bool rememberPassword); public slots: - void loginSuccess(); void syncFinished(); private slots: - void prepareCoreSetup(const QString &backend, const QVariantMap &connectionProperties); + void prepareCoreSetup(const QString& backend, + const QVariantMap& properties, + const QString& authenticator, + const QVariantMap& authProperties); void coreSetupSuccess(); - void coreSetupFailed(const QString &); + void coreSetupFailed(const QString&); void startOver(); private: - QHash _backends; - CoreConfigWizardPages::SyncPage *syncPage; - CoreConfigWizardPages::SyncRelayPage *syncRelayPage; + CoreConfigWizardPages::SyncPage* syncPage; + CoreConfigWizardPages::SyncRelayPage* syncRelayPage; - CoreConnection *_connection; + CoreConnection* _connection; }; - namespace CoreConfigWizardPages { + class IntroPage : public QWizardPage { Q_OBJECT public: - IntroPage(QWidget *parent = 0); - int nextId() const; + IntroPage(QWidget* parent = nullptr); + int nextId() const override; + private: Ui::CoreConfigWizardIntroPage ui; }; - class AdminUserPage : public QWizardPage { Q_OBJECT public: - AdminUserPage(QWidget *parent = 0); - int nextId() const; - bool isComplete() const; + AdminUserPage(QWidget* parent = nullptr); + int nextId() const override; + bool isComplete() const override; + private: Ui::CoreConfigWizardAdminUserPage ui; }; +class AuthenticationSelectionPage : public QWizardPage +{ + Q_OBJECT + using FieldInfo = std::tuple; + +public: + AuthenticationSelectionPage(const QVariantList& authInfos, QWidget* parent = nullptr); + int nextId() const override; + QString displayName() const; + QString authenticator() const; + QVariantMap authProperties() const; + +private slots: + void on_backendList_currentIndexChanged(int index); + +private: + Ui::CoreConfigWizardAuthenticationSelectionPage ui; + std::vector _authProperties; + std::vector> _authFields; +}; class StorageSelectionPage : public QWizardPage { Q_OBJECT + using FieldInfo = std::tuple; public: - StorageSelectionPage(const QHash &backends, QWidget *parent = 0); - int nextId() const; - QString selectedBackend() const; - QVariantMap connectionProperties() const; + StorageSelectionPage(const QVariantList& backendInfos, QWidget* parent = nullptr); + int nextId() const override; + QString displayName() const; + QString backend() const; + QVariantMap backendProperties() const; private slots: - void on_backendList_currentIndexChanged(); + void on_backendList_currentIndexChanged(int index); + private: Ui::CoreConfigWizardStorageSelectionPage ui; - QGroupBox *_connectionBox; - QHash _backends; + std::vector _backendProperties; + std::vector> _backendFields; }; - class SyncPage : public QWizardPage { Q_OBJECT public: - SyncPage(QWidget *parent = 0); - void initializePage(); - int nextId() const; - bool isComplete() const; + SyncPage(QWidget* parent = nullptr); + void initializePage() override; + int nextId() const override; + bool isComplete() const override; public slots: - void setStatus(const QString &status); + void setStatus(const QString& status); void setError(bool); void setComplete(bool); signals: - void setupCore(const QString &backend, const QVariantMap &); + void setupCore(const QString& backend, const QVariantMap&, const QString& authenticator, const QVariantMap&); private: Ui::CoreConfigWizardSyncPage ui; - bool complete; - bool hasError; + bool _complete{false}; + bool _hasError{false}; }; - class SyncRelayPage : public QWizardPage { Q_OBJECT public: - SyncRelayPage(QWidget *parent = 0); - int nextId() const; - enum Mode { Success, Error }; + SyncRelayPage(QWidget* parent = nullptr); + int nextId() const override; + enum Mode + { + Success, + Error + }; public slots: void setMode(Mode); @@ -168,6 +200,5 @@ signals: private: Mode mode; }; -} -#endif +} // namespace CoreConfigWizardPages