Finishing the renaming of the BufferTreeView, since SVN doesn't allow
[quassel.git] / src / core / core.cpp
index b3abba6..d03ca6b 100644 (file)
@@ -21,8 +21,8 @@
 #include "core.h"
 #include "coresession.h"
 #include "coresettings.h"
+#include "signalproxy.h"
 #include "sqlitestorage.h"
-#include "util.h"
 
 #include <QMetaObject>
 #include <QMetaMethod>
@@ -64,6 +64,7 @@ void Core::init() {
   connect(&server, SIGNAL(newConnection()), this, SLOT(incomingConnection()));
   startListening(s.port());
   guiUser = 0;
+
 }
 
 bool Core::initStorageSqlite(QVariantMap dbSettings, bool setup) {
@@ -92,6 +93,34 @@ Core::~Core() {
   }
 }
 
+void Core::restoreState() {
+  Q_ASSERT(!instance()->sessions.count());
+  CoreSettings s;
+  QList<QVariant> users = s.coreState().toList();
+  if(users.count() > 0) {
+    qDebug() << "Restoring previous core state...";
+    foreach(QVariant v, users) {
+      QVariantMap m = v.toMap();
+      if(m.contains("UserId")) {
+        CoreSession *sess = createSession(m["UserId"].toUInt());
+        sess->restoreState(m["State"]);
+      }
+    }
+  }
+}
+
+void Core::saveState() {
+  CoreSettings s;
+  QList<QVariant> users;
+  foreach(CoreSession *sess, instance()->sessions.values()) {
+    QVariantMap m;
+    m["UserId"] = sess->userId();
+    m["State"] = sess->state();
+    users << m;
+  }
+  s.setCoreState(users);
+}
+
 CoreSession *Core::session(UserId uid) {
   Core *core = instance();
   if(core->sessions.contains(uid)) return core->sessions[uid];
@@ -147,7 +176,7 @@ void Core::clientHasData() {
   Q_ASSERT(socket && blockSizes.contains(socket));
   quint32 bsize = blockSizes.value(socket);
   QVariant item;
-  if(readDataFromDevice(socket, bsize, item)) {
+  if(SignalProxy::readDataFromDevice(socket, bsize, item)) {
     // we need to auth the client
     try {
       QVariantMap msg = item.toMap();
@@ -209,7 +238,7 @@ void Core::processClientInit(QTcpSocket *socket, const QVariantMap &msg) {
   disconnect(socket, 0, this, 0);
   sessions[uid]->addClient(socket);
   qDebug() << "Client initialized successfully.";
-  writeDataToDevice(socket, reply);
+  SignalProxy::writeDataToDevice(socket, reply);
 }
 
 void Core::processCoreSetup(QTcpSocket *socket, QVariantMap &msg) {
@@ -232,7 +261,7 @@ void Core::processCoreSetup(QTcpSocket *socket, QVariantMap &msg) {
       QVariantMap reply;
       reply["StartWizard"] = true;
       reply["StorageProviders"] = availableStorageProviders();
-      writeDataToDevice(socket, reply);
+      SignalProxy::writeDataToDevice(socket, reply);
     } else {
       // write coresettings
       CoreSettings s;
@@ -248,7 +277,7 @@ void Core::processCoreSetup(QTcpSocket *socket, QVariantMap &msg) {
     QVariantMap reply;
     reply["StartWizard"] = true;
     reply["StorageProviders"] = availableStorageProviders();
-    writeDataToDevice(socket, reply);
+    SignalProxy::writeDataToDevice(socket, reply);
   }
 }