#include "clientbufferviewconfig.h"
ClientBufferViewManager::ClientBufferViewManager(SignalProxy *proxy, QObject *parent)
- : BufferViewManager(proxy, parent),
- _bufferViewOverlay(0)
+ : BufferViewManager(proxy, parent)
{
- connect(this, SIGNAL(bufferViewConfigAdded(int)), this, SLOT(updateBufferViewOverlay()));
- connect(this, SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(updateBufferViewOverlay()));
+ connect(this, SIGNAL(initDone()), this, SLOT(waitForConfigInit()));
}
BufferViewConfig *ClientBufferViewManager::bufferViewConfigFactory(int bufferViewConfigId) {
return static_cast<ClientBufferViewConfig *>(bufferViewConfig(bufferViewId));
}
-void ClientBufferViewManager::updateBufferViewOverlay() {
-
+void ClientBufferViewManager::waitForConfigInit() {
+ bool initialized = true;
+ foreach(BufferViewConfig *config, bufferViewConfigs()) {
+ initialized &= config->isInitialized();
+ if(config->isInitialized())
+ continue;
+ connect(config, SIGNAL(initDone()), this, SLOT(configInitBarrier()));
+ }
+ if(initialized)
+ QMetaObject::invokeMethod(this, "viewsInitialized", Qt::QueuedConnection);
+}
+
+void ClientBufferViewManager::configInitBarrier() {
+ BufferViewConfig *config = qobject_cast<BufferViewConfig *>(sender());
+ Q_ASSERT(config);
+ disconnect(config, SIGNAL(initDone()), this, SLOT(configInitBarrier()));
+
+ bool initialized = true;
+ foreach(BufferViewConfig *config, bufferViewConfigs()) {
+ initialized &= config->isInitialized();
+ }
+ if(initialized)
+ QMetaObject::invokeMethod(this, "viewsInitialized", Qt::QueuedConnection);
}