client: Port old HighlightRule to ExpressionMatch
[quassel.git] / src / qtui / coreconfigwizard.h
index 60691a7..2943c15 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   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
@@ -54,9 +57,7 @@ public:
         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 = 0);
 
     inline CoreConnection *coreConnection() const { return _connection; }
 
@@ -65,19 +66,15 @@ signals:
     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 &properties, const QString &authBackend, const QVariantMap &authProperties);
+    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;
-    QHash<QString, QVariant> _authenticators;
-
     CoreConfigWizardPages::SyncPage *syncPage;
     CoreConfigWizardPages::SyncRelayPage *syncRelayPage;
 
@@ -86,6 +83,7 @@ private:
 
 
 namespace CoreConfigWizardPages {
+
 class IntroPage : public QWizardPage
 {
     Q_OBJECT
@@ -110,43 +108,51 @@ 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);
+    AuthenticationSelectionPage(const QVariantList &authInfos, QWidget *parent = 0);
     int nextId() const;
-    QString selectedBackend() const;
-    QVariantMap connectionProperties() const;
-    
+    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);
+    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;
 };
 
+
 class SyncPage : public QWizardPage
 {
     Q_OBJECT
@@ -167,8 +173,8 @@ signals:
 
 private:
     Ui::CoreConfigWizardSyncPage ui;
-    bool complete;
-    bool hasError;
+    bool _complete {false};
+    bool _hasError {false};
 };
 
 
@@ -190,6 +196,5 @@ signals:
 private:
     Mode mode;
 };
-}
 
-#endif
+}