/***************************************************************************
- * Copyright (C) 2005-2015 by the Quassel Project *
+ * Copyright (C) 2005-2018 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef _CORECONFIGWIZARD_H_
-#define _CORECONFIGWIZARD_H_
+#pragma once
+
+#include <tuple>
+#include <vector>
-#include <QHash>
#include <QWizard>
#include <QVariantMap>
#include "ui_coreconfigwizardintropage.h"
#include "ui_coreconfigwizardadminuserpage.h"
+#include "ui_coreconfigwizardauthenticationselectionpage.h"
#include "ui_coreconfigwizardstorageselectionpage.h"
#include "ui_coreconfigwizardsyncpage.h"
class CoreConnection;
namespace CoreConfigWizardPages {
+
class SyncPage;
class SyncRelayPage;
+
};
class CoreConfigWizard : public QWizard
enum {
IntroPage,
AdminUserPage,
+ AuthenticationSelectionPage,
StorageSelectionPage,
SyncPage,
SyncRelayPage,
ConclusionPage
};
- CoreConfigWizard(CoreConnection *connection, const QList<QVariant> &backends, QWidget *parent = 0);
- QHash<QString, QVariant> backends() const;
+ CoreConfigWizard(CoreConnection *connection, const QVariantList &backendInfos, const QVariantList &authInfos, QWidget *parent = 0);
inline CoreConnection *coreConnection() const { return _connection; }
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 startOver();
private:
- QHash<QString, QVariant> _backends;
CoreConfigWizardPages::SyncPage *syncPage;
CoreConfigWizardPages::SyncRelayPage *syncRelayPage;
namespace CoreConfigWizardPages {
+
class IntroPage : public QWizardPage
{
Q_OBJECT
};
+class AuthenticationSelectionPage : public QWizardPage
+{
+ Q_OBJECT
+ using FieldInfo = std::tuple<QString, QString, QVariant>;
+
+public:
+ AuthenticationSelectionPage(const QVariantList &authInfos, QWidget *parent = 0);
+ int nextId() const;
+ QString displayName() const;
+ QString authenticator() const;
+ QVariantMap authProperties() const;
+
+private slots:
+ void on_backendList_currentIndexChanged(int index);
+
+private:
+ Ui::CoreConfigWizardAuthenticationSelectionPage ui;
+ std::vector<QVariantMap> _authProperties;
+ std::vector<std::vector<FieldInfo>> _authFields;
+};
+
+
class StorageSelectionPage : public QWizardPage
{
Q_OBJECT
+ using FieldInfo = std::tuple<QString, QString, QVariant>;
public:
- StorageSelectionPage(const QHash<QString, QVariant> &backends, QWidget *parent = 0);
+ StorageSelectionPage(const QVariantList &backendInfos, QWidget *parent = 0);
int nextId() const;
- QString selectedBackend() const;
- QVariantMap connectionProperties() const;
+ 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<QString, QVariant> _backends;
+ std::vector<QVariantMap> _backendProperties;
+ std::vector<std::vector<FieldInfo>> _backendFields;
};
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};
};
private:
Mode mode;
};
-}
-#endif
+}