Yay! After months, distributed client/core operation is working again!
[quassel.git] / src / client / client.h
index 452bed0..cb031ac 100644 (file)
@@ -55,6 +55,13 @@ class Client : public QObject {
 
     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);
     void showBuffer(Buffer *);
@@ -68,10 +75,16 @@ class Client : public QObject {
 
     void recvPartialItem(quint32 avail, quint32 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 connectToLocalCore();
@@ -79,14 +92,14 @@ class Client : public QObject {
     void disconnectFromCore();
 
   private slots:
-    void updateCoreData(UserId, QString);
-    void updateLocalData(QString, QVariant);
+    void recvCoreState(const QVariant &state);
+    void recvSessionData(const QString &key, const QVariant &data);
     void recvProxySignal(ClientSignal sig, QVariant arg1, QVariant arg2, QVariant arg3);
 
     void serverError(QAbstractSocket::SocketError);
     void serverHasData();
-    void coreConnected();
-    void coreDisconnected();
+    void coreSocketConnected();
+    void coreSocketDisconnected();
 
     void userInput(BufferId, QString);
     void networkConnected(QString);
@@ -111,13 +124,10 @@ 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;
-
     AbstractUi *mainUi;
     ClientProxy *clientProxy;
     BufferTreeModel *_bufferModel;
@@ -126,14 +136,18 @@ class Client : public QObject {
     quint32 blockSize;
 
     static bool connectedToCore;
+    static VarMap coreConnectionInfo;
     static QHash<BufferId, Buffer *> buffers;
     static QHash<uint, BufferId> bufferIds;
     static QHash<QString, QHash<QString, VarMap> > nicks;
     static QHash<QString, bool> netConnected;
+    static QStringList netsAwaitingInit;
     static QHash<QString, QString> ownNick;
 
     QTimer *layoutTimer;
     QList<Buffer *> layoutQueue;
+
+    VarMap sessionData;
 };
 
 #endif