X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=main%2Fmain_gui.cpp;h=e9bd6c8ed92751e482394df823ca4f7ca830e89c;hb=f0a6776fc5102ff6a7fe1469917fe231e4cd3a8a;hp=31f30e6592073649c328f4e9e9809b304af4fca1;hpb=82403b8a8777d44cbc35619e3bbd4feabfad5dc4;p=quassel.git diff --git a/main/main_gui.cpp b/main/main_gui.cpp index 31f30e65..e9bd6c8e 100644 --- a/main/main_gui.cpp +++ b/main/main_gui.cpp @@ -20,11 +20,15 @@ #include +#include #include +#include "style.h" #include "global.h" #include "guiproxy.h" +#include "coreconnectdlg.h" #include "util.h" +#include "chatwidget.h" #include "mainwin.h" @@ -35,16 +39,59 @@ int main(int argc, char **argv) { QApplication::setOrganizationName("The Quassel Team"); Global::runMode = Global::GUIOnly; + 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; +} + +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(); + } + */ + coreBuffers.clear(); + foreach(QVariant v, state["CoreBuffers"].toList()) { coreBuffers.append(v.value()); } } -GUIProxy::GUIProxy() { +/* + +GuiProxy::GuiProxy() { if(guiProxy) qFatal("Trying to instantiate more than one CoreProxy object!"); blockSize = 0; @@ -59,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); @@ -85,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 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); }