X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcore.cpp;h=d03ca6b6c2bfdb35fb6e4d084ce95106b863eb18;hb=a18660ee87e81b6f4072537be3aa10c93a243b2a;hp=9bd36fbe3e563d601ddfb7bd84ab356076f2c91d;hpb=97d674034551438238c568e8b42efb08e1ba7354;p=quassel.git diff --git a/src/core/core.cpp b/src/core/core.cpp index 9bd36fbe..d03ca6b6 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005-07 by The Quassel IRC Development Team * + * Copyright (C) 2005-07 by the Quassel IRC Team * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * + * (at your option) version 3. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * @@ -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(); @@ -169,7 +198,7 @@ void Core::clientHasData() { return; } } - blockSizes[socket] = bsize = 0; // FIXME blockSizes aufräum0rn! + blockSizes[socket] = bsize = 0; // FIXME blockSizes aufr�um0rn! } // FIXME: no longer called, since connection handling is now in SignalProxy @@ -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); } }