-void CoreBufferSyncer::mergeBuffersPermanently(BufferId bufferId1, BufferId bufferId2) {
- BufferInfo bufferInfo1 = Core::getBufferInfo(_coreSession->user(), bufferId1);
- BufferInfo bufferInfo2 = Core::getBufferInfo(_coreSession->user(), bufferId2);
- if(!bufferInfo1.isValid() || !bufferInfo2.isValid()) {
- qWarning() << "CoreBufferSyncer::mergeBufferPermanently(): invalid BufferIds:" << bufferId1 << bufferId2 << "for User:" << _coreSession->user();
- return;
- }
-
- if(bufferInfo1.type() != BufferInfo::QueryBuffer || bufferInfo2.type() != BufferInfo::QueryBuffer) {
- qWarning() << "CoreBufferSyncer::mergeBufferPermanently(): only QueryBuffers can be merged!" << bufferId1 << bufferId2;
- return;
- }
-
- if(Core::mergeBuffersPermanently(_coreSession->user(), bufferId1, bufferId2)) {
- BufferSyncer::mergeBuffersPermanently(bufferId1, bufferId2);
- }
+void CoreBufferSyncer::renameBuffer(BufferId bufferId, QString newName)
+{
+ BufferInfo bufferInfo = Core::getBufferInfo(_coreSession->user(), bufferId);
+ if (!bufferInfo.isValid()) {
+ qWarning() << "CoreBufferSyncer::renameBuffer(): invalid BufferId:" << bufferId << "for User:" << _coreSession->user();
+ return;
+ }
+
+ if (bufferInfo.type() != BufferInfo::QueryBuffer) {
+ qWarning() << "CoreBufferSyncer::renameBuffer(): only QueryBuffers can be renamed" << bufferId;
+ return;
+ }
+
+ if (Core::renameBuffer(_coreSession->user(), bufferId, newName))
+ BufferSyncer::renameBuffer(bufferId, newName);
+}
+
+void CoreBufferSyncer::mergeBuffersPermanently(BufferId bufferId1, BufferId bufferId2)
+{
+ BufferInfo bufferInfo1 = Core::getBufferInfo(_coreSession->user(), bufferId1);
+ BufferInfo bufferInfo2 = Core::getBufferInfo(_coreSession->user(), bufferId2);
+ if (!bufferInfo1.isValid() || !bufferInfo2.isValid()) {
+ qWarning() << "CoreBufferSyncer::mergeBuffersPermanently(): invalid BufferIds:" << bufferId1 << bufferId2
+ << "for User:" << _coreSession->user();
+ return;
+ }
+
+ if ((bufferInfo1.type() != BufferInfo::QueryBuffer && bufferInfo1.type() != BufferInfo::ChannelBuffer)
+ || (bufferInfo2.type() != BufferInfo::QueryBuffer && bufferInfo2.type() != BufferInfo::ChannelBuffer)) {
+ qWarning() << "CoreBufferSyncer::mergeBuffersPermanently(): only QueryBuffers and/or ChannelBuffers can be merged!" << bufferId1
+ << bufferId2;
+ return;
+ }
+
+ if (Core::mergeBuffersPermanently(_coreSession->user(), bufferId1, bufferId2)) {
+ BufferSyncer::mergeBuffersPermanently(bufferId1, bufferId2);
+ }
+}
+
+void CoreBufferSyncer::customEvent(QEvent* event)
+{
+ if (event->type() != QEvent::User)
+ return;
+
+ purgeBufferIds();
+ event->accept();
+}
+
+void CoreBufferSyncer::requestPurgeBufferIds()
+{
+ if (_purgeBuffers)
+ return;
+
+ _purgeBuffers = true;
+ QCoreApplication::postEvent(this, new PurgeEvent());
+}
+
+void CoreBufferSyncer::purgeBufferIds()
+{
+ _purgeBuffers = false;
+ auto bufferInfos = Core::requestBuffers(_coreSession->user());
+ std::set<BufferId> actualBuffers;
+ std::transform(bufferInfos.cbegin(), bufferInfos.cend(), std::inserter(actualBuffers, actualBuffers.end()),
+ [](auto&& bufferInfo) { return bufferInfo.bufferId(); });
+
+ QSet<BufferId> storedIds = toQSet(lastSeenBufferIds()) + toQSet(markerLineBufferIds());
+ foreach (BufferId bufferId, storedIds) {
+ if (actualBuffers.find(bufferId) == actualBuffers.end()) {
+ BufferSyncer::removeBuffer(bufferId);
+ }
+ }
+}
+
+void CoreBufferSyncer::setBufferActivity(BufferId buffer, int activity)
+{
+ BufferSyncer::setBufferActivity(buffer, activity);
+ dirtyActivities << buffer;
+}
+
+void CoreBufferSyncer::setHighlightCount(BufferId buffer, int highlightCount)
+{
+ BufferSyncer::setHighlightCount(buffer, highlightCount);
+ dirtyHighlights << buffer;