More small tweaks to fix scrollbar behavior. This really sucks.
[quassel.git] / core / coreproxy.cpp
index dd14c81..11fdf95 100644 (file)
 #include <QDebug>
 
 #include "coreproxy.h"
-#include "quassel.h"
+#include "global.h"
 #include "util.h"
+#include "core.h"
 
 CoreProxy::CoreProxy() {
   if(coreProxy) qFatal("Trying to instantiate more than one CoreProxy object!");
+  coreProxy = this;
+  core = new Core();
 
   connect(global, SIGNAL(dataPutLocally(QString)), this, SLOT(updateGlobalData(QString)));
   connect(&server, SIGNAL(newConnection()), this, SLOT(incomingConnection()));
@@ -85,11 +88,19 @@ void CoreProxy::processClientInit(QTcpSocket *socket, const QVariant &v) {
     coreData[key] = global->getData(key);
   }
   reply["CoreData"] = coreData;
-  //QVariant payload = QByteArray(1000000, 'a');
-  //reply["payload"] = payload;
+  VarMap bl;
+  QHash<QString, QList<Message> > log = core->getBackLog();
+  foreach(QString net, log.keys()) {
+    QByteArray buf;
+    QDataStream out(&buf, QIODevice::WriteOnly); out.setVersion(QDataStream::Qt_4_2);
+    foreach(Message msg, log[net]) { out << msg; }
+    bl[net] = buf;
+  }
+  reply["CoreBackLog"] = bl;
   QList<QVariant> sigdata;
   sigdata.append(CS_CORE_STATE); sigdata.append(QVariant(reply)); sigdata.append(QVariant()); sigdata.append(QVariant());
   writeDataToDevice(socket, QVariant(sigdata));
+  emit requestServerStates();
 }
 
 void CoreProxy::processClientUpdate(QTcpSocket *socket, QString key, QVariant data) {
@@ -122,8 +133,8 @@ void CoreProxy::recv(GUISignal sig, QVariant arg1, QVariant arg2, QVariant arg3)
   //qDebug() << "[CORE] Received signal" << sig << ":" << arg1<<arg2<<arg3;
   switch(sig) {
     case GS_UPDATE_GLOBAL_DATA: emit gsPutGlobalData(arg1.toString(), arg2); break;
-    case GS_USER_INPUT: emit gsUserInput(arg1.toString()); break;
-    case GS_REQUEST_CONNECT: emit gsRequestConnect(arg1.toString(), arg2.toUInt()); break;
+    case GS_USER_INPUT: emit gsUserInput(arg1.toString(), arg2.toString(), arg3.toString()); break;
+    case GS_REQUEST_CONNECT: emit gsRequestConnect(arg1.toStringList()); break;
     default: qWarning() << "Unknown signal in CoreProxy::recv: " << sig;
   }
 }