X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=c25f19392db985bb396134412fb09fbbb7c43c86;hb=fdf69d69f0dda76a65a27ce7059b7b86696ff79c;hp=d04e258d82515b6626181d684198e6e6351a78bb;hpb=ab16c77fe03b73a863d9b52b11919bcbac903f58;p=quassel.git diff --git a/src/client/client.cpp b/src/client/client.cpp index d04e258d..c25f1939 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -39,6 +39,7 @@ #include "message.h" #include "messagemodel.h" #include "network.h" +#include "networkconfig.h" #include "networkmodel.h" #include "quassel.h" #include "signalproxy.h" @@ -89,6 +90,7 @@ Client::Client(QObject *parent) _bufferViewOverlay(new BufferViewOverlay(this)), _ircListHelper(new ClientIrcListHelper(this)), _inputHandler(0), + _networkConfig(0), _messageModel(0), _messageProcessor(0), _connectedToCore(false), @@ -97,7 +99,6 @@ Client::Client(QObject *parent) _debugLog(&_debugLogBuffer) { _signalProxy->synchronize(_ircListHelper); - connect(this, SIGNAL(requestInitialBacklog()), _backlogManager, SLOT(requestInitialBacklog()), Qt::QueuedConnection); } Client::~Client() { @@ -323,7 +324,6 @@ void Client::setSyncedToCore() { Q_ASSERT(!_bufferViewManager); _bufferViewManager = new ClientBufferViewManager(signalProxy(), this); connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(createDefaultBufferView())); - connect(bufferViewManager(), SIGNAL(viewsInitialized()), this, SLOT(requestInitialBacklogBarrier())); // create AliasManager Q_ASSERT(!_aliasManager); @@ -331,21 +331,29 @@ void Client::setSyncedToCore() { connect(aliasManager(), SIGNAL(initDone()), SLOT(sendBufferedUserInput())); signalProxy()->synchronize(aliasManager()); + // create NetworkConfig + Q_ASSERT(!_networkConfig); + _networkConfig = new NetworkConfig("GlobalNetworkConfig", this); + signalProxy()->synchronize(networkConfig()); + + // trigger backlog request once all active bufferviews are initialized + connect(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); + _syncedToCore = true; emit connected(); emit coreConnectionStateChanged(true); } -void Client::requestInitialBacklogBarrier() { +void Client::requestInitialBacklog() { // usually it _should_ take longer until the bufferViews are initialized, so that's what // triggers this slot. But we have to make sure that we know all buffers yet. // so we check the BufferSyncer and in case it wasn't initialized we wait for that instead if(!bufferSyncer()->isInitialized()) { - disconnect(bufferViewManager(), SIGNAL(viewsInitialized()), this, SLOT(requestInitialBacklogBarrier())); - connect(bufferSyncer(), SIGNAL(initDone()), this, SLOT(requestInitialBacklogBarrier())); + connect(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); + connect(bufferSyncer(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); return; } - emit requestInitialBacklog(); + _backlogManager->requestInitialBacklog(); } void Client::createDefaultBufferView() { @@ -416,6 +424,10 @@ void Client::disconnectedFromCore() { } Q_ASSERT(_identities.isEmpty()); + if(_networkConfig) { + _networkConfig->deleteLater(); + _networkConfig = 0; + } } /*** ***/