X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=07b3c26550da1b13c3e174ac90c6ff39bfb0fafa;hp=019c67c97f7a2e1d479b18d1e1658b6608edcffa;hb=86bd6b1ffb870e65af6d830a2ea16471c348ed5a;hpb=fa00b68a21c777682d9feb37ade6b3904fc19d92 diff --git a/src/client/client.cpp b/src/client/client.cpp index 019c67c9..07b3c265 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -52,6 +52,7 @@ #include QPointer Client::instanceptr = 0; +Quassel::Features Client::_coreFeatures = 0; /*** Initialization/destruction ***/ @@ -98,6 +99,7 @@ Client::Client(QObject *parent) _messageProcessor(0), _coreAccountModel(new CoreAccountModel(this)), _coreConnection(new CoreConnection(_coreAccountModel, this)), + _connected(false), _debugLog(&_debugLogBuffer) { _signalProxy->synchronize(_ircListHelper); @@ -158,12 +160,12 @@ AbstractUi *Client::mainUi() { return instance()->_mainUi; } -bool Client::isConnected() { - return coreConnection()->state() >= CoreConnection::Connected; +void Client::setCoreFeatures(Quassel::Features features) { + _coreFeatures = features; } -bool Client::isSynced() { - return coreConnection()->state() == CoreConnection::Synchronized; +bool Client::isConnected() { + return instance()->_connected; } bool Client::internalCore() { @@ -314,6 +316,7 @@ void Client::setSyncedToCore() { 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))); @@ -345,6 +348,7 @@ void Client::setSyncedToCore() { // trigger backlog request once all active bufferviews are initialized connect(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog())); + _connected = true; emit connected(); emit coreConnectionStateChanged(true); } @@ -378,6 +382,9 @@ void Client::disconnectFromCore() { } void Client::setDisconnectedFromCore() { + _connected = false; + _coreFeatures = 0; + emit disconnected(); emit coreConnectionStateChanged(false); @@ -462,9 +469,13 @@ void Client::recvMessage(const Message &msg) { } void Client::setBufferLastSeenMsg(BufferId id, const MsgId &msgId) { - if(!bufferSyncer()) - return; - bufferSyncer()->requestSetLastSeenMsg(id, msgId); + if(bufferSyncer()) + bufferSyncer()->requestSetLastSeenMsg(id, msgId); +} + +void Client::setBufferMarkerLine(BufferId id, const MsgId &msgId) { + if(bufferSyncer()) + bufferSyncer()->requestSetMarkerLine(id, msgId); } void Client::removeBuffer(BufferId id) {