Refactoring the GUI. Work in progress.
[quassel.git] / main / main_gui.cpp
index 7dc2d53..e9bd6c8 100644 (file)
 
 #include <iostream>
 
+#include <QtGui>
 #include <QApplication>
 
+#include "style.h"
 #include "global.h"
 #include "guiproxy.h"
+#include "coreconnectdlg.h"
 #include "util.h"
+#include "chatwidget.h"
 
 #include "mainwin.h"
 
@@ -38,15 +42,56 @@ int main(int argc, char **argv) {
   Global::quasselDir = QDir::homePath() + "/.quassel";
 
   global = new Global();
-  guiProxy = new GUIProxy();
+  guiProxy = new GuiProxy();
+
+  Style::init();
 
   MainWin mainWin;
+  mainWin.init();
   int exitCode = app.exec();
   delete guiProxy;
   delete global;
+  return exitCode;
 }
 
-GUIProxy::GUIProxy() {
+void MainWin::syncToCore() {
+  Q_ASSERT(!global->getData("CoreReady").toBool());
+  // ok, we are running as standalone GUI
+  coreConnectDlg = new CoreConnectDlg(this);
+  if(coreConnectDlg->exec() != QDialog::Accepted) {
+    //qApp->quit();
+    exit(1);
+  }
+  VarMap state = coreConnectDlg->getCoreState().toMap();
+  delete coreConnectDlg;
+  VarMap data = state["CoreData"].toMap();
+  QString key;
+  foreach(key, data.keys()) {
+    global->updateData(key, data[key]);
+  }
+  if(!global->getData("CoreReady").toBool()) {
+    QMessageBox::critical(this, tr("Fatal Error"), tr("<b>Could not synchronize with Quassel Core!</b><br>Quassel GUI will be aborted."), QMessageBox::Abort);
+    //qApp->quit();
+    exit(1);
+  }
+  /*
+  foreach(QString net, state["CoreBackLog"].toMap().keys()) {
+    QByteArray logbuf = state["CoreBackLog"].toMap()[net].toByteArray();
+    QDataStream in(&logbuf, QIODevice::ReadOnly); in.setVersion(QDataStream::Qt_4_2);
+    while(!in.atEnd()) {
+      Message msg; in >> msg;
+      coreBackLog[net].append(msg);
+    }
+    qDebug() << net << coreBackLog[net].count();
+  }
+  */
+  coreBuffers.clear();
+  foreach(QVariant v, state["CoreBuffers"].toList()) { coreBuffers.append(v.value<BufferId>()); }
+}
+
+/*
+
+GuiProxy::GuiProxy() {
   if(guiProxy) qFatal("Trying to instantiate more than one CoreProxy object!");
 
   blockSize = 0;
@@ -61,20 +106,20 @@ GUIProxy::GUIProxy() {
 
 }
 
-void GUIProxy::connectToCore(QString host, quint16 port) {
+void GuiProxy::connectToCore(QString host, quint16 port) {
   socket.connectToHost(host, port);
 }
 
-void GUIProxy::disconnectFromCore() {
+void GuiProxy::disconnectFromCore() {
   socket.close();
 }
 
-void GUIProxy::serverError(QAbstractSocket::SocketError) {
+void GuiProxy::serverError(QAbstractSocket::SocketError) {
   emit coreConnectionError(socket.errorString());
   //qFatal(QString("Connection error: %1").arg(socket.errorString()).toAscii());
 }
 
-void GUIProxy::serverHasData() {
+void GuiProxy::serverHasData() {
   QVariant item;
   while(readDataFromDevice(&socket, blockSize, item)) {
     emit recvPartialItem(1,1);
@@ -87,15 +132,17 @@ void GUIProxy::serverHasData() {
     emit recvPartialItem(socket.bytesAvailable(), blockSize);
   }
 }
-
-void GUIProxy::send(GUISignal sig, QVariant arg1, QVariant arg2, QVariant arg3) {
+*/
+/*
+void GuiProxy::send(GuiSignal sig, QVariant arg1, QVariant arg2, QVariant arg3) {
   QList<QVariant> sigdata;
   sigdata.append(sig); sigdata.append(arg1); sigdata.append(arg2); sigdata.append(arg3);
   //qDebug() << "Sending signal: " << sigdata;
   writeDataToDevice(&socket, QVariant(sigdata));
 }
+*/
 
-void GUIProxy::updateCoreData(QString key) {
+void GuiProxy::updateCoreData(QString key) {
   QVariant data = global->getData(key);
   send(GS_UPDATE_GLOBAL_DATA, key, data);
 }