X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=23456ab3fc782c436a55d89eaab166ea011cdeb6;hp=e89f821a42483133400738037dea90c14a16a391;hb=28f1a9d9d96645757691cdea19500aefce4bcdac;hpb=5b083e1f67c77ceb7d1d134e976cd6081b70bf12 diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index e89f821a..23456ab3 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -18,11 +18,14 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include + #include "core.h" #include "coresession.h" #include "networkconnection.h" #include "signalproxy.h" +#include "buffersyncer.h" #include "storage.h" #include "network.h" @@ -33,11 +36,10 @@ #include "util.h" #include "coreusersettings.h" -#include - CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) : QObject(parent), _user(uid), _signalProxy(new SignalProxy(SignalProxy::Server, 0, this)), + _bufferSyncer(new BufferSyncer(this)), scriptEngine(new QScriptEngine(this)) { @@ -67,6 +69,12 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) : QObje loadSettings(); initScriptEngine(); + // init BufferSyncer + //QHash lastSeenHash = Core::bufferLastSeenDates(user()); + //foreach(BufferId id, lastSeenHash.keys()) _bufferSyncer->requestSetLastSeen(id, lastSeenHash[id]); + // FIXME connect(_bufferSyncer, SIGNAL(lastSeenSet(BufferId, const QDateTime &)), this, SLOT(storeBufferLastSeen(BufferId, const QDateTime &))); + p->synchronize(_bufferSyncer); + // Restore session state if(restoreState) restoreSessionState(); @@ -135,6 +143,17 @@ void CoreSession::loadSettings() { qDebug() << "Migrating Networksettings to DB Storage for User:" << user(); foreach(NetworkId id, netIds) { NetworkInfo info = s.networkInfo(id); + + // default new options + info.useRandomServer = false; + info.useAutoReconnect = true; + info.autoReconnectInterval = 60; + info.autoReconnectRetries = 20; + info.unlimitedReconnectRetries = false; + info.useAutoIdentify = false; + info.autoIdentifyService = "NickServ"; + info.rejoinChannels = true; + Core::updateNetwork(user(), info); s.removeNetworkInfo(id); } @@ -211,7 +230,7 @@ void CoreSession::connectToNetwork(NetworkId id, const QVariant &previousState) void CoreSession::attachNetworkConnection(NetworkConnection *conn) { connect(conn, SIGNAL(connected(NetworkId)), this, SLOT(networkConnected(NetworkId))); - connect(conn, SIGNAL(disconnected(NetworkId)), this, SLOT(networkDisconnected(NetworkId))); + connect(conn, SIGNAL(quitRequested(NetworkId)), this, SLOT(networkDisconnected(NetworkId))); // I guess we don't need these anymore, client-side can just connect the network's signals directly //signalProxy()->attachSignal(conn, SIGNAL(connected(NetworkId)), SIGNAL(networkConnected(NetworkId))); @@ -253,12 +272,9 @@ void CoreSession::networkConnected(NetworkId networkid) { Core::bufferInfo(user(), networkid, BufferInfo::StatusBuffer); // create status buffer } +// called now only on /quit and requested disconnects, not on normal disconnects! void CoreSession::networkDisconnected(NetworkId networkid) { - // FIXME - // connection should only go away on explicit /part, and handle reconnections etcpp internally otherwise - - Q_ASSERT(_connections.contains(networkid)); - _connections.take(networkid)->deleteLater(); + if(_connections.contains(networkid)) _connections.take(networkid)->deleteLater(); } // FIXME switch to BufferId @@ -322,6 +338,10 @@ QVariant CoreSession::sessionState() { return v; } +void CoreSession::storeBufferLastSeen(BufferId buffer, const QDateTime &lastSeen) { + Core::setBufferLastSeen(user(), buffer, lastSeen); +} + void CoreSession::sendBacklog(BufferInfo id, QVariant v1, QVariant v2) { QList log; QList msglist;