Fixes #913 - Core backlog download does not start until main window is unhidden
[quassel.git] / src / client / clientbufferviewmanager.cpp
index 315c2a8..504604f 100644 (file)
 #include "clientbufferviewmanager.h"
 
 #include "clientbufferviewconfig.h"
+#include "client.h"
+#include "networkmodel.h"
 
+INIT_SYNCABLE_OBJECT(ClientBufferViewManager)
 ClientBufferViewManager::ClientBufferViewManager(SignalProxy *proxy, QObject *parent)
   : BufferViewManager(proxy, parent)
 {
-  connect(this, SIGNAL(initDone()), this, SLOT(waitForConfigInit()));
 }
 
 BufferViewConfig *ClientBufferViewManager::bufferViewConfigFactory(int bufferViewConfigId) {
@@ -44,27 +46,12 @@ ClientBufferViewConfig *ClientBufferViewManager::clientBufferViewConfig(int buff
   return static_cast<ClientBufferViewConfig *>(bufferViewConfig(bufferViewId));
 }
 
-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();
+void ClientBufferViewManager::setInitialized() {
+  if(bufferViewConfigs().isEmpty()) {
+    BufferViewConfig config(-1);
+    config.setBufferViewName(tr("All Chats"));
+    config.initSetBufferList(Client::networkModel()->allBufferIdsSorted());
+    requestCreateBufferView(config.toVariantMap());
   }
-  if(initialized)
-    QMetaObject::invokeMethod(this, "viewsInitialized", Qt::QueuedConnection);
+  BufferViewManager::setInitialized();
 }