Moving quasselui.h from common/ to client/ where it belongs.
[quassel.git] / src / client / client.h
index 2bf9c02..2496c66 100644 (file)
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
  ***************************************************************************/
 
-#ifndef _GUI_H_
-#define _GUI_H_
+#ifndef _CLIENT_H_
+#define _CLIENT_H_
 
-#include <QtCore>
-#include <QtGui>
-#include <QtNetwork>
+#include <QAbstractSocket>
+#include <QTcpSocket>
+#include <QList>
+#include <QPointer>
 
-#include "global.h"
 #include "buffer.h"
 #include "message.h"
-#include "guiproxy.h"
-#include "bufferviewwidget.h"
 
-class MainWin;
-class ClientProxy;
-//class BufferTreeModel;
+
+class AbstractUi;
+class BufferTreeModel;
+class QtGui;
+class SignalProxy;
+
+class QTimer;
 
 class Client : public QObject {
   Q_OBJECT
 
   public:
     static Client *instance();
+    static void init(AbstractUi *);
     static void destroy();
 
+    static QList<BufferId> allBufferIds();
     static Buffer *buffer(BufferId);
     static BufferId statusBufferId(QString net);
     static BufferId bufferId(QString net, QString buf);
 
     static BufferTreeModel *bufferModel();
+    static SignalProxy *signalProxy();
+
+    static AbstractUiMsg *layoutMsg(const Message &);
+
+    static bool isConnected();
+
+    static void storeSessionData(const QString &key, const QVariant &data);
+    static QVariant retrieveSessionData(const QString &key, const QVariant &def = QVariant());
+    static QStringList sessionDataKeys();
+
+    enum ClientMode { LocalCore, RemoteCore };
+    static ClientMode clientMode;
 
   signals:
     void sendInput(BufferId, QString message);
@@ -57,40 +73,53 @@ class Client : public QObject {
     void bufferDestroyed(Buffer *);
     void backlogReceived(Buffer *, QList<Message>);
     void requestBacklog(BufferId, QVariant, QVariant);
+    void requestNetworkStates();
 
-    void recvPartialItem(quint32 avail, quint32 size);
+    void recvPartialItem(uint avail, uint size);
     void coreConnectionError(QString errorMsg);
+    void coreConnectionMsg(const QString &msg);
+    void coreConnectionProgress(uint part, uint total);
+
+    void connected();
+    void disconnected();
+
+    void sessionDataChanged(const QString &key);
+    void sessionDataChanged(const QString &key, const QVariant &data);
+    void sendSessionData(const QString &key, const QVariant &data);
 
   public slots:
     //void selectBuffer(Buffer *);
-    void connectToCore(QString host, quint16 port);
+    //void connectToLocalCore();
+    void connectToCore(const QVariantMap &);
     void disconnectFromCore();
 
   private slots:
-    void updateCoreData(UserId, QString);
-    void updateLocalData(QString, QVariant);
-    void recvProxySignal(ClientSignal sig, QVariant arg1, QVariant arg2, QVariant arg3);
+    void recvCoreState(const QVariant &state);
+    void recvSessionData(const QString &key, const QVariant &data);
 
-    void serverError(QAbstractSocket::SocketError);
-    void serverHasData();
-    void coreConnected();
-    void coreDisconnected();
+    void coreSocketError(QAbstractSocket::SocketError);
+    void coreHasData();
+    void coreSocketConnected();
+    void coreSocketDisconnected();
+    void coreSocketStateChanged(QAbstractSocket::SocketState);
 
     void userInput(BufferId, QString);
     void networkConnected(QString);
     void networkDisconnected(QString);
     void recvNetworkState(QString, QVariant);
-    void recvMessage(Message message);
+    void recvMessage(const Message &message);
     void recvStatusMsg(QString network, QString message);
     void setTopic(QString net, QString buf, QString);
-    void addNick(QString net, QString nick, VarMap props);
+    void addNick(QString net, QString nick, QVariantMap props);
     void removeNick(QString net, QString nick);
     void renameNick(QString net, QString oldnick, QString newnick);
-    void updateNick(QString net, QString nick, VarMap props);
+    void updateNick(QString net, QString nick, QVariantMap props);
     void setOwnNick(QString net, QString nick);
-    void recvBacklogData(BufferId, QList<QVariant>, bool);
+    void recvBacklogData(BufferId, QVariantList, bool);
     void updateBufferId(BufferId);
 
+    void removeBuffer(Buffer *);
+
     void layoutMsg();
 
   private:
@@ -99,27 +128,30 @@ class Client : public QObject {
     void init();
     static Client *instanceptr;
 
-    void syncToCore();
+    void syncToCore(const QVariant &coreState);
+    QVariant connectToLocalCore(QString user, QString passwd);  // defined in main.cpp
+    void disconnectFromLocalCore();                             // defined in main.cpp
 
-    enum ClientMode { LocalCore, RemoteCore };
-    static ClientMode clientMode;
-
-    MainWin *mainWin;
-    ClientProxy *clientProxy;
+    AbstractUi *mainUi;
+    SignalProxy *_signalProxy;
     BufferTreeModel *_bufferModel;
 
-    QTcpSocket socket;
+    QPointer<QIODevice> socket;
     quint32 blockSize;
 
+    static bool connectedToCore;
+    static QVariantMap coreConnectionInfo;
     static QHash<BufferId, Buffer *> buffers;
     static QHash<uint, BufferId> bufferIds;
-    static QHash<QString, QHash<QString, VarMap> > nicks;
-    static QHash<QString, bool> connected;
+    static QHash<QString, QHash<QString, QVariantMap> > nicks;
+    static QHash<QString, bool> netConnected;
+    static QStringList netsAwaitingInit;
     static QHash<QString, QString> ownNick;
-    static QList<BufferId> coreBuffers;
 
     QTimer *layoutTimer;
-    QList<Message> layoutQueue;
+    QList<Buffer *> layoutQueue;
+
+    QVariantMap sessionData;
 };
 
 #endif