-void Client::connectionStateChanged(CoreConnection::ConnectionState state) {
- switch(state) {
- case CoreConnection::Disconnected:
- setDisconnectedFromCore();
- break;
- case CoreConnection::Synchronized:
- setSyncedToCore();
- break;
- default:
- break;
- }
-}
-
-void Client::setSyncedToCore() {
- // create buffersyncer
- Q_ASSERT(!_bufferSyncer);
- _bufferSyncer = new BufferSyncer(this);
- connect(bufferSyncer(), SIGNAL(lastSeenMsgSet(BufferId, MsgId)), _networkModel, SLOT(setLastSeenMsgId(BufferId, MsgId)));
- connect(bufferSyncer(), SIGNAL(markerLineSet(BufferId,MsgId)), _networkModel, SLOT(setMarkerLineMsgId(BufferId,MsgId)));
- connect(bufferSyncer(), SIGNAL(bufferRemoved(BufferId)), this, SLOT(bufferRemoved(BufferId)));
- connect(bufferSyncer(), SIGNAL(bufferRenamed(BufferId, QString)), this, SLOT(bufferRenamed(BufferId, QString)));
- connect(bufferSyncer(), SIGNAL(buffersPermanentlyMerged(BufferId, BufferId)), this, SLOT(buffersPermanentlyMerged(BufferId, BufferId)));
- connect(bufferSyncer(), SIGNAL(buffersPermanentlyMerged(BufferId, BufferId)), _messageModel, SLOT(buffersPermanentlyMerged(BufferId, BufferId)));
- connect(bufferSyncer(), SIGNAL(bufferMarkedAsRead(BufferId)), SIGNAL(bufferMarkedAsRead(BufferId)));
- connect(networkModel(), SIGNAL(requestSetLastSeenMsg(BufferId, MsgId)), bufferSyncer(), SLOT(requestSetLastSeenMsg(BufferId, const MsgId &)));
- signalProxy()->synchronize(bufferSyncer());
-
- // create a new BufferViewManager
- Q_ASSERT(!_bufferViewManager);
- _bufferViewManager = new ClientBufferViewManager(signalProxy(), this);
- connect(_bufferViewManager, SIGNAL(initDone()), _bufferViewOverlay, SLOT(restore()));
-
- // create AliasManager
- Q_ASSERT(!_aliasManager);
- _aliasManager = new ClientAliasManager(this);
- 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()));
-
- _connected = true;
- emit connected();
- emit coreConnectionStateChanged(true);
-}
-
-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(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
- connect(bufferSyncer(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
- return;
- }
- disconnect(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
- disconnect(bufferSyncer(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));