X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fnetworkinfo.cpp;h=8791ffff3ccbc08e1450bf7130157784e8fd91b5;hp=24ed8d7f52600b9830a092101e2053ca84e7827c;hb=a7f5d6a23f7214b11f6db85346a67fd7d02767da;hpb=cd122ca8e0d2c0ffc5397e0a813c75d791a7e6e3 diff --git a/src/common/networkinfo.cpp b/src/common/networkinfo.cpp index 24ed8d7f..8791ffff 100644 --- a/src/common/networkinfo.cpp +++ b/src/common/networkinfo.cpp @@ -20,7 +20,6 @@ #include "networkinfo.h" #include "signalproxy.h" -#include "synchronizer.h" #include "ircuser.h" #include "ircchannel.h" @@ -31,7 +30,7 @@ // ==================== // Public: // ==================== -NetworkInfo::NetworkInfo(const uint &networkid, SignalProxy *proxy, QObject *parent) +NetworkInfo::NetworkInfo(const uint &networkid, QObject *parent) : QObject(parent), _networkId(networkid), _initialized(false), @@ -39,10 +38,10 @@ NetworkInfo::NetworkInfo(const uint &networkid, SignalProxy *proxy, QObject *par _networkName(QString()), _currentServer(QString()), _prefixes(QString()), - _prefixModes(QString()) + _prefixModes(QString()), + _proxy(NULL) { setObjectName(QString::number(networkid)); - _synchronizer = new Synchronizer(this, proxy); } // I think this is unnecessary since IrcUsers have us as their daddy :) @@ -62,8 +61,13 @@ bool NetworkInfo::initialized() const { return _initialized; } -Synchronizer *NetworkInfo::synchronizer() { - return _synchronizer; +SignalProxy *NetworkInfo::proxy() const { + return _proxy; +} + +void NetworkInfo::setProxy(SignalProxy *proxy) { + _proxy = proxy; + proxy->synchronize(this); } bool NetworkInfo::isMyNick(const QString &nick) const { @@ -162,7 +166,11 @@ IrcUser *NetworkInfo::newIrcUser(const QString &hostmask) { QString nick(nickFromMask(hostmask)); if(!_ircUsers.contains(nick)) { IrcUser *ircuser = new IrcUser(hostmask, this); - new Synchronizer(ircuser, synchronizer()->proxy()); + // mark IrcUser as already initialized to keep the SignalProxy from requesting initData + if(initialized()) + ircuser->setInitialized(); + _proxy->synchronize(ircuser); + connect(ircuser, SIGNAL(nickSet(QString)), this, SLOT(ircUserNickChanged(QString))); connect(ircuser, SIGNAL(initDone()), this, SIGNAL(ircUserInitDone())); connect(ircuser, SIGNAL(destroyed()), this, SLOT(ircUserDestroyed())); @@ -186,7 +194,11 @@ QList NetworkInfo::ircUsers() const { IrcChannel *NetworkInfo::newIrcChannel(const QString &channelname) { if(!_ircChannels.contains(channelname)) { IrcChannel *channel = new IrcChannel(channelname, this); - new Synchronizer(channel, synchronizer()->proxy()); + // mark IrcUser as already initialized to keep the SignalProxy from requesting initData + if(initialized()) + channel->setInitialized(); + _proxy->synchronize(channel); + connect(channel, SIGNAL(initDone()), this, SIGNAL(ircChannelInitDone())); connect(channel, SIGNAL(destroyed()), this, SLOT(channelDestroyed())); _ircChannels[channelname] = channel;