Fixing a client crash that could be triggered under certain preconditions if a ircUse...
[quassel.git] / src / qtopia / coreconnectdlg.h
index 8f03ee0..36ce26f 100644 (file)
@@ -1,11 +1,11 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by The Quassel IRC Development Team             *
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
+ *   (at your option) version 3.                                           *
  *                                                                         *
  *   This program is distributed in the hope that it will be useful,       *
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 #ifndef _CORECONNECTDLG_H
 #define _CORECONNECTDLG_H
 
+#include <QAbstractSocket>
+
+#include "types.h"
+
 #include "ui_coreconnectdlg.h"
 #include "ui_coreconnectprogressdlg.h"
-#include "ui_editcoreacctdlg.h"
-#include "global.h"
+#include "ui_coreaccounteditdlg.h"
 
+class ClientSyncer;
 class CoreConnectProgressDlg;
 
 class CoreConnectDlg : public QDialog {
@@ -45,9 +49,28 @@ class CoreConnectDlg : public QDialog {
     void connectionSuccess();
     void connectionFailure();
 
+    /*** Phase One: Connection ***/
+
+    void restartPhaseNull();
+    void initPhaseError(const QString &error);
+    void initPhaseMsg(const QString &msg);
+    void initPhaseSocketState(QAbstractSocket::SocketState);
+
+    /*** Phase Two: Login ***/
+    void startLogin();
+    void loginFailed(const QString &);
+
+    /*** Phase Three: Sync ***/
+    void startSync();
+
   private:
     Ui::CoreConnectDlg ui;
-    QVariant coreState;
+    ClientSyncer *clientSyncer;
+
+    AccountId autoConnectAccount;
+    QHash<AccountId, QVariantMap> accounts;
+    QVariantMap accountData;
+    AccountId account;
 
     void editAccount(QString);
 
@@ -56,12 +79,12 @@ class CoreConnectDlg : public QDialog {
     CoreConnectProgressDlg *progressDlg;
 };
 
-class EditCoreAcctDlg : public QDialog {
+class CoreAccountEditDlg : public QDialog {
   Q_OBJECT
 
   public:
-    EditCoreAcctDlg(QString accname = 0, QDialog *parent = 0);
-    QString accountName() const;
+    CoreAccountEditDlg(AccountId id, const QVariantMap &data, const QStringList &existing = QStringList(), QWidget *parent = 0);
+    QVariantMap accountData();
 
   public slots:
     void accept();
@@ -70,8 +93,9 @@ class EditCoreAcctDlg : public QDialog {
 
 
   private:
-    Ui::EditCoreAcctDlg ui;
-    QString accName;
+    Ui::CoreAccountEditDlg ui;
+    QVariantMap account;
+    QStringList existing;
 
 };
 
@@ -79,20 +103,19 @@ class CoreConnectProgressDlg : public QDialog {
   Q_OBJECT
 
   public:
-    CoreConnectProgressDlg(QDialog *parent = 0);
-    bool isConnected() const;
-
-  public slots:
-    void connectToCore(QVariantMap connInfo);
+    CoreConnectProgressDlg(ClientSyncer *, QDialog *parent = 0);
 
   private slots:
-    void coreConnected();
-    void coreConnectionError(QString);
-    void updateProgressBar(uint partial, uint total);
+
+    void syncFinished();
+
+    void coreSessionProgress(quint32, quint32);
+    void coreNetworksProgress(quint32, quint32);
+    void coreChannelsProgress(quint32, quint32);
+    void coreIrcUsersProgress(quint32, quint32);
 
   private:
     Ui::CoreConnectProgressDlg ui;
-    bool connectsuccess;
 
 };