X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcore.cpp;h=d03ca6b6c2bfdb35fb6e4d084ce95106b863eb18;hb=788fd0058595c815dc42597e9956c02aea45261f;hp=b3abba622d7507465f4b60b174919533c7bb33f4;hpb=d6b056e936ec441258d291b7a8af7b83f9f53016;p=quassel.git diff --git a/src/core/core.cpp b/src/core/core.cpp index b3abba62..d03ca6b6 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -21,8 +21,8 @@ #include "core.h" #include "coresession.h" #include "coresettings.h" +#include "signalproxy.h" #include "sqlitestorage.h" -#include "util.h" #include #include @@ -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 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 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); } }