X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fclient%2Fclient.cpp;h=b1c0ced891447cd92cfb1b6dab50a7199360ea16;hb=eabf97d25da5af06033807c2697fd687fc48d2e7;hp=d04e258d82515b6626181d684198e6e6351a78bb;hpb=ab16c77fe03b73a863d9b52b11919bcbac903f58;p=quassel.git diff --git a/src/client/client.cpp b/src/client/client.cpp index d04e258d..b1c0ced8 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -33,12 +33,14 @@ #include "clientbufferviewmanager.h" #include "clientirclisthelper.h" #include "clientidentity.h" +#include "clientignorelistmanager.h" #include "clientuserinputhandler.h" #include "ircchannel.h" #include "ircuser.h" #include "message.h" #include "messagemodel.h" #include "network.h" +#include "networkconfig.h" #include "networkmodel.h" #include "quassel.h" #include "signalproxy.h" @@ -89,6 +91,8 @@ Client::Client(QObject *parent) _bufferViewOverlay(new BufferViewOverlay(this)), _ircListHelper(new ClientIrcListHelper(this)), _inputHandler(0), + _networkConfig(0), + _ignoreListManager(0), _messageModel(0), _messageProcessor(0), _connectedToCore(false), @@ -97,7 +101,6 @@ Client::Client(QObject *parent) _debugLog(&_debugLogBuffer) { _signalProxy->synchronize(_ircListHelper); - connect(this, SIGNAL(requestInitialBacklog()), _backlogManager, SLOT(requestInitialBacklog()), Qt::QueuedConnection); } Client::~Client() { @@ -323,7 +326,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,27 +333,40 @@ 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()); + + // create IgnoreListManager + Q_ASSERT(!_ignoreListManager); + _ignoreListManager = new ClientIgnoreListManager(this); + signalProxy()->synchronize(ignoreListManager()); + + // 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() { if(bufferViewManager()->bufferViewConfigs().isEmpty()) { BufferViewConfig config(-1); - config.setBufferViewName(tr("All Buffers")); + config.setBufferViewName(tr("All Chats")); config.initSetBufferList(networkModel()->allBufferIdsSorted()); bufferViewManager()->requestCreateBufferView(config.toVariantMap()); } @@ -391,6 +406,10 @@ void Client::disconnectedFromCore() { _aliasManager = 0; } + if(_ignoreListManager) { + _ignoreListManager->deleteLater(); + _ignoreListManager = 0; + } // we probably don't want to save pending input for reconnect _userInputBuffer.clear(); @@ -416,6 +435,10 @@ void Client::disconnectedFromCore() { } Q_ASSERT(_identities.isEmpty()); + if(_networkConfig) { + _networkConfig->deleteLater(); + _networkConfig = 0; + } } /*** ***/ @@ -520,4 +543,3 @@ void Client::logMessage(QtMsgType type, const char *msg) { emit instance()->logUpdated(msgString); } } -