}
void BufferViewOverlay::updateHelper() {
+ if(!_aboutToUpdate)
+ return;
+
bool changed = false;
bool addBuffersAutomatically = false;
if(minimumActivity == -1 || config->minimumActivity() < minimumActivity)
minimumActivity = config->minimumActivity();
}
+ QSet<BufferId> availableBuffers = Client::networkModel()->allBufferIds().toSet();
+ buffers.intersect(availableBuffers);
+ tempRemovedBuffers.intersect(availableBuffers);
}
changed |= (addBuffersAutomatically != _addBuffersAutomatically);
_removedBuffers = removedBuffers;
_tempRemovedBuffers = tempRemovedBuffers;
+ _aboutToUpdate = false;
+
if(changed)
emit hasChanged();
}
void BufferViewOverlay::customEvent(QEvent *event) {
if(event->type() == _updateEventId) {
updateHelper();
- _aboutToUpdate = false;
}
}
+
+bool BufferViewOverlay::allNetworks() {
+ updateHelper();
+ return _networkIds.contains(NetworkId());
+}
+
+const QSet<NetworkId> &BufferViewOverlay::networkIds() {
+ updateHelper();
+ return _networkIds;
+}
+
+const QSet<BufferId> &BufferViewOverlay::bufferIds() {
+ updateHelper();
+ return _buffers;
+}
+
+const QSet<BufferId> &BufferViewOverlay::removedBufferIds() {
+ updateHelper();
+ return _removedBuffers;
+}
+
+const QSet<BufferId> &BufferViewOverlay::tempRemovedBufferIds() {
+ updateHelper();
+ return _tempRemovedBuffers;
+}
+
+bool BufferViewOverlay::addBuffersAutomatically() {
+ updateHelper();
+ return _addBuffersAutomatically;
+}
+
+bool BufferViewOverlay::hideInactiveBuffers() {
+ updateHelper();
+ return _hideInactiveBuffers;
+}
+
+int BufferViewOverlay::allowedBufferTypes() {
+ updateHelper();
+ return _allowedBufferTypes;
+}
+
+int BufferViewOverlay::minimumActivity() {
+ updateHelper();
+ return _minimumActivity;
+}
public:
BufferViewOverlay(QObject *parent = 0);
- inline bool allNetworks() const { return _networkIds.contains(NetworkId()); }
+ bool allNetworks();
- inline const QSet<NetworkId> &networkIds() const { return _networkIds; }
- inline const QSet<BufferId> &bufferIds() const { return _buffers; }
- inline const QSet<BufferId> &removedBufferIds() const { return _removedBuffers; }
- inline const QSet<BufferId> &tempRemovedBufferIds() const { return _tempRemovedBuffers; }
+ const QSet<NetworkId> &networkIds();
+ const QSet<BufferId> &bufferIds();
+ const QSet<BufferId> &removedBufferIds();
+ const QSet<BufferId> &tempRemovedBufferIds();
- inline bool addBuffersAutomatically() const { return _addBuffersAutomatically; }
- inline bool hideInactiveBuffers() const { return _hideInactiveBuffers; }
- inline int allowedBufferTypes() const { return _allowedBufferTypes; }
- inline int minimumActivity() const { return _minimumActivity; }
+ bool addBuffersAutomatically();
+ bool hideInactiveBuffers();
+ int allowedBufferTypes();
+ int minimumActivity();
public slots:
void addView(int viewId);
_debugLog(&_debugLogBuffer)
{
_signalProxy->synchronize(_ircListHelper);
- connect(this, SIGNAL(requestInitialBacklog()), _backlogManager, SLOT(requestInitialBacklog()), Qt::QueuedConnection);
}
Client::~Client() {
Q_ASSERT(!_bufferViewManager);
_bufferViewManager = new ClientBufferViewManager(signalProxy(), this);
connect(bufferViewManager(), SIGNAL(initDone()), this, SLOT(createDefaultBufferView()));
- connect(bufferViewManager(), SIGNAL(viewsInitialized()), this, SLOT(requestInitialBacklogBarrier()));
+ connect(bufferViewManager(), SIGNAL(viewsInitialized()), this, SLOT(requestInitialBacklog()));
// create AliasManager
Q_ASSERT(!_aliasManager);
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()));
+ disconnect(bufferViewManager(), SIGNAL(viewsInitialized()), this, SLOT(requestInitialBacklog()));
+ connect(bufferSyncer(), SIGNAL(initDone()), this, SLOT(requestInitialBacklog()));
return;
}
- emit requestInitialBacklog();
+ _backlogManager->requestInitialBacklog();
}
void Client::createDefaultBufferView() {
static inline void registerClientSyncer(ClientSyncer *syncer) { emit instance()->newClientSyncer(syncer); }
signals:
- void requestInitialBacklog();
void requestNetworkStates();
void showConfigWizard(const QVariantMap &coredata);
void setConnectedToCore(AccountId id, QIODevice *socket = 0);
void setSyncedToCore();
- void requestInitialBacklogBarrier();
+ void requestInitialBacklog();
void createDefaultBufferView();
void sendBufferedUserInput();