X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=a2ffd8e9c90d0260871b7dae8ea1c848b8037044;hp=d29726343f51b5b3cede3055276664853675c289;hb=c2718511214289f58a02207f7988876c420e8c7e;hpb=9950dd55446bedbccba1e7a27c4d042fb896d3c6 diff --git a/src/client/client.cpp b/src/client/client.cpp index d2972634..a2ffd8e9 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -77,7 +77,6 @@ Client::Client(QObject *parent) _connectedToCore(false), _syncedToCore(false) { - _monitorBuffer = new Buffer(BufferInfo(), this); _signalProxy->synchronize(_ircListHelper); connect(_backlogManager, SIGNAL(backlog(BufferId, const QVariantList &)), @@ -111,13 +110,11 @@ void Client::init() { p->attachSignal(this, SIGNAL(requestNetworkStates())); p->attachSignal(this, SIGNAL(requestCreateIdentity(const Identity &)), SIGNAL(createIdentity(const Identity &))); - p->attachSignal(this, SIGNAL(requestUpdateIdentity(const Identity &)), SIGNAL(updateIdentity(const Identity &))); p->attachSignal(this, SIGNAL(requestRemoveIdentity(IdentityId)), SIGNAL(removeIdentity(IdentityId))); p->attachSlot(SIGNAL(identityCreated(const Identity &)), this, SLOT(coreIdentityCreated(const Identity &))); p->attachSlot(SIGNAL(identityRemoved(IdentityId)), this, SLOT(coreIdentityRemoved(IdentityId))); p->attachSignal(this, SIGNAL(requestCreateNetwork(const NetworkInfo &)), SIGNAL(createNetwork(const NetworkInfo &))); - p->attachSignal(this, SIGNAL(requestUpdateNetwork(const NetworkInfo &)), SIGNAL(updateNetwork(const NetworkInfo &))); p->attachSignal(this, SIGNAL(requestRemoveNetwork(NetworkId)), SIGNAL(removeNetwork(NetworkId))); p->attachSlot(SIGNAL(networkCreated(NetworkId)), this, SLOT(coreNetworkCreated(NetworkId))); p->attachSlot(SIGNAL(networkRemoved(NetworkId)), this, SLOT(coreNetworkRemoved(NetworkId))); @@ -161,15 +158,10 @@ Buffer *Client::statusBuffer(const NetworkId &networkId) const { return 0; } -Buffer *Client::buffer(BufferId bufferId) { - if(instance()->_buffers.contains(bufferId)) - return instance()->_buffers[bufferId]; - else - return 0; -} - Buffer *Client::buffer(BufferInfo bufferInfo) { - Buffer *buff = buffer(bufferInfo.bufferId()); + Buffer *buff = 0; + if(instance()->_buffers.contains(bufferInfo.bufferId())) + buff = instance()->_buffers[bufferInfo.bufferId()]; if(!buff) { Client *client = Client::instance(); @@ -214,14 +206,19 @@ void Client::createNetwork(const NetworkInfo &info) { emit instance()->requestCreateNetwork(info); } -void Client::updateNetwork(const NetworkInfo &info) { - emit instance()->requestUpdateNetwork(info); -} - void Client::removeNetwork(NetworkId id) { emit instance()->requestRemoveNetwork(id); } +void Client::updateNetwork(const NetworkInfo &info) { + Network *netptr = instance()->_networks.value(info.networkId, 0); + if(!netptr) { + qWarning() << "Update for unknown network requested:" << info; + return; + } + netptr->requestSetNetworkInfo(info); +} + void Client::addNetwork(Network *net) { net->setProxy(signalProxy()); signalProxy()->synchronize(net); @@ -263,8 +260,13 @@ void Client::createIdentity(const Identity &id) { emit instance()->requestCreateIdentity(id); } -void Client::updateIdentity(const Identity &id) { - emit instance()->requestUpdateIdentity(id); +void Client::updateIdentity(IdentityId id, const QVariantMap &ser) { + Identity *idptr = instance()->_identities.value(id, 0); + if(!idptr) { + qWarning() << "Update for unknown identity requested:" << id; + return; + } + idptr->requestUpdate(ser); } void Client::removeIdentity(IdentityId id) { @@ -309,7 +311,7 @@ void Client::setSyncedToCore() { // create buffersyncer Q_ASSERT(!_bufferSyncer); _bufferSyncer = new BufferSyncer(this); - connect(bufferSyncer(), SIGNAL(lastSeenMsgSet(BufferId, MsgId)), this, SLOT(updateLastSeenMsg(BufferId, MsgId))); + connect(bufferSyncer(), SIGNAL(lastSeenMsgSet(BufferId, MsgId)), _networkModel, SLOT(setLastSeenMsgId(BufferId, MsgId))); connect(bufferSyncer(), SIGNAL(bufferRemoved(BufferId)), this, SLOT(bufferRemoved(BufferId))); connect(bufferSyncer(), SIGNAL(bufferRenamed(BufferId, QString)), this, SLOT(bufferRenamed(BufferId, QString))); signalProxy()->synchronize(bufferSyncer()); @@ -342,6 +344,8 @@ void Client::disconnectFromCore() { emit disconnected(); emit coreConnectionStateChanged(false); + messageProcessor()->reset(); + // Clear internal data. Hopefully nothing relies on it at this point. setCurrentCoreAccount(0); @@ -448,21 +452,14 @@ void Client::receiveBacklog(BufferId bufferId, const QVariantList &msgs) { //QTime start = QTime::currentTime(); QList msglist; foreach(QVariant v, msgs) { - msglist << v.value(); + Message msg = v.value(); + msg.setFlags(msg.flags() | Message::Backlog); + msglist << msg; } messageProcessor()->process(msglist); //qDebug() << "processed" << msgs.count() << "backlog lines in" << start.msecsTo(QTime::currentTime()); } -void Client::updateLastSeenMsg(BufferId id, const MsgId &msgId) { - Buffer *b = buffer(id); - if(!b) { - qWarning() << "Client::updateLastSeen(): Unknown buffer" << id; - return; - } - b->setLastSeenMsg(msgId); -} - void Client::setBufferLastSeenMsg(BufferId id, const MsgId &msgId) { if(!bufferSyncer()) return;