/***************************************************************************
- * Copyright (C) 2005-2016 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>
class CoreConnection;
namespace CoreConfigWizardPages {
+
class SyncPage;
class SyncRelayPage;
-};
+
+}
class CoreConfigWizard : public QWizard
{
ConclusionPage
};
- CoreConfigWizard(CoreConnection *connection, const QList<QVariant> &backends, const QList<QVariant> &authenticators, QWidget *parent = 0);
- QHash<QString, QVariant> backends() const;
- QHash<QString, QVariant> authenticators() const;
+ CoreConfigWizard(CoreConnection *connection, const QVariantList &backendInfos, const QVariantList &authInfos, QWidget *parent = nullptr);
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 startOver();
private:
- QHash<QString, QVariant> _backends;
- QHash<QString, QVariant> _authenticators;
-
CoreConfigWizardPages::SyncPage *syncPage;
CoreConfigWizardPages::SyncRelayPage *syncRelayPage;
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;
};
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;
};
-// Authentication selection before storage selection.
+
class AuthenticationSelectionPage : public QWizardPage
{
Q_OBJECT
+ using FieldInfo = std::tuple<QString, QString, QVariant>;
public:
- AuthenticationSelectionPage(const QHash<QString, QVariant> &backends, QWidget *parent = 0);
- int nextId() const;
- QString selectedBackend() const;
+ 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();
+ void on_backendList_currentIndexChanged(int index);
+
private:
Ui::CoreConfigWizardAuthenticationSelectionPage ui;
- QGroupBox *_connectionBox;
- QHash<QString, QVariant> _backends;
+ 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);
- 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<QString, QVariant> _backends;
+ std::vector<QVariantMap> _backendProperties;
+ std::vector<std::vector<FieldInfo>> _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);
private:
Ui::CoreConfigWizardSyncPage ui;
- bool complete;
- bool hasError;
+ bool _complete {false};
+ bool _hasError {false};
};
Q_OBJECT
public:
- SyncRelayPage(QWidget *parent = 0);
- int nextId() const;
+ SyncRelayPage(QWidget *parent = nullptr);
+ int nextId() const override;
enum Mode { Success, Error };
public slots:
private:
Mode mode;
};
-}
-#endif
+}