X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=d6dc3d1b43ffaaa3e9504f0aab91f6e08b4d3eb7;hb=93605206bc40e06446efabc71e155a3216dbb0b9;hp=e89f907d2131587244b18a84f84e34e11c95cacf;hpb=9a1986fea34e6204757159efe16b7d7097920210;p=quassel.git diff --git a/src/client/client.cpp b/src/client/client.cpp index e89f907d..d6dc3d1b 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -56,7 +56,6 @@ #include QPointer Client::instanceptr = 0; -Quassel::Features Client::_coreFeatures = 0; /*** Initialization/destruction ***/ @@ -107,6 +106,7 @@ Client::Client(QObject *parent) _inputHandler(0), _networkConfig(0), _ignoreListManager(0), + _highlightRuleManager(0), _transferManager(0), _transferModel(new TransferModel(this)), _messageModel(0), @@ -187,9 +187,9 @@ AbstractUi *Client::mainUi() } -void Client::setCoreFeatures(Quassel::Features features) +bool Client::isCoreFeatureEnabled(Quassel::Feature feature) { - _coreFeatures = features; + return coreConnection()->peer() ? coreConnection()->peer()->hasFeature(feature) : false; } @@ -420,16 +420,23 @@ void Client::setSyncedToCore() _ignoreListManager = new ClientIgnoreListManager(this); p->synchronize(ignoreListManager()); + // create Core-Side HighlightRuleManager + Q_ASSERT(!_highlightRuleManager); + _highlightRuleManager = new HighlightRuleManager(this); + p->synchronize(highlightRuleManager()); + +/* not ready yet // create TransferManager and DccConfig if core supports them Q_ASSERT(!_dccConfig); Q_ASSERT(!_transferManager); - if (coreFeatures() & Quassel::DccFileTransfer) { + if (isCoreFeatureEnabled(Quassel::Feature::DccFileTransfer)) { _dccConfig = new DccConfig(this); p->synchronize(dccConfig()); _transferManager = new ClientTransferManager(this); _transferModel->setManager(_transferManager); p->synchronize(transferManager()); } +*/ // trigger backlog request once all active bufferviews are initialized connect(bufferViewOverlay(), SIGNAL(initDone()), this, SLOT(finishConnectionInitialization())); @@ -453,7 +460,7 @@ void Client::finishConnectionInitialization() disconnect(bufferSyncer(), SIGNAL(initDone()), this, SLOT(finishConnectionInitialization())); requestInitialBacklog(); - if (coreFeatures().testFlag(Quassel::BufferActivitySync)) + if (isCoreFeatureEnabled(Quassel::Feature::BufferActivitySync)) bufferSyncer()->markActivitiesChanged(); } @@ -476,7 +483,6 @@ void Client::disconnectFromCore() void Client::setDisconnectedFromCore() { _connected = false; - _coreFeatures = 0; emit disconnected(); emit coreConnectionStateChanged(false); @@ -508,6 +514,11 @@ void Client::setDisconnectedFromCore() _ignoreListManager = 0; } + if (_highlightRuleManager) { + _highlightRuleManager->deleteLater(); + _highlightRuleManager = nullptr; + } + if (_transferManager) { _transferModel->setManager(nullptr); _transferManager->deleteLater();