X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=main%2Fmain_gui.cpp;fp=main%2Fmain_gui.cpp;h=b6e15b09374be6cec53e3ed14d121f933e93ff70;hp=7dc2d53f4d0e2cb6f545b850f907015212ea5b14;hb=d6a96a47a3964b9c0b1ea2413601d70d0d327413;hpb=959e81d7ff35673870505331c012107cf67a5ab9 diff --git a/main/main_gui.cpp b/main/main_gui.cpp index 7dc2d53f..b6e15b09 100644 --- a/main/main_gui.cpp +++ b/main/main_gui.cpp @@ -20,10 +20,12 @@ #include +#include #include #include "global.h" #include "guiproxy.h" +#include "coreconnectdlg.h" #include "util.h" #include "mainwin.h" @@ -46,6 +48,37 @@ int main(int argc, char **argv) { delete global; } +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("Could not synchronize with Quassel Core!
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(); + } +} + GUIProxy::GUIProxy() { if(guiProxy) qFatal("Trying to instantiate more than one CoreProxy object!");