X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientsyncer.cpp;h=ed59b9962daea7b505108e9e9783e069ebb25920;hp=79d8c91fb09b89ee6ac953e3cb143dcd47ce4c5f;hb=0d49f7e83bd1055711e66aa880f3a0d62f7eefc9;hpb=332069a1830ed3a055ac6f2d7661bae1cc83e40c diff --git a/src/client/clientsyncer.cpp b/src/client/clientsyncer.cpp index 79d8c91f..ed59b996 100644 --- a/src/client/clientsyncer.cpp +++ b/src/client/clientsyncer.cpp @@ -25,15 +25,14 @@ #endif #include "client.h" -#include "global.h" #include "identity.h" #include "ircuser.h" #include "ircchannel.h" #include "network.h" #include "networkmodel.h" +#include "quassel.h" #include "signalproxy.h" - ClientSyncer::ClientSyncer(QObject *parent) : QObject(parent) { @@ -124,7 +123,7 @@ void ClientSyncer::connectToCore(const QVariantMap &conn) { //emit coreConnectionMsg(tr("Connecting...")); Q_ASSERT(!socket); -#ifndef QT_NO_OPENSSL +#ifdef HAVE_SSL QSslSocket *sock = new QSslSocket(Client::instance()); #else if(conn["useSsl"].toBool()) { @@ -157,10 +156,9 @@ void ClientSyncer::coreSocketConnected() { //emit coreConnectionMsg(tr("Synchronizing to core...")); QVariantMap clientInit; clientInit["MsgType"] = "ClientInit"; - clientInit["ClientVersion"] = Global::quasselVersion; - clientInit["ClientBuild"] = 860; // FIXME legacy! - clientInit["ClientDate"] = Global::quasselBuildDate; - clientInit["ProtocolVersion"] = Global::protocolVersion; + clientInit["ClientVersion"] = Quassel::buildInfo().fancyVersionString; + clientInit["ClientDate"] = Quassel::buildInfo().buildDate; + clientInit["ProtocolVersion"] = Quassel::buildInfo().protocolVersion; clientInit["UseSsl"] = coreConnectionInfo["useSsl"]; #ifndef QT_NO_COMPRESS clientInit["UseCompression"] = true; @@ -171,6 +169,11 @@ void ClientSyncer::coreSocketConnected() { SignalProxy::writeDataToDevice(socket, clientInit); } +void ClientSyncer::useInternalCore() { + emit startInternalCore(); + emit connectToInternalCore(Client::instance()->signalProxy()); +} + void ClientSyncer::coreSocketDisconnected() { emit socketDisconnected(); Client::instance()->disconnectFromCore(); @@ -185,18 +188,16 @@ void ClientSyncer::coreSocketDisconnected() { void ClientSyncer::clientInitAck(const QVariantMap &msg) { // Core has accepted our version info and sent its own. Let's see if we accept it as well... - uint ver = 0; - if(!msg.contains("ProtocolVersion") && msg["CoreBuild"].toUInt() >= 732) ver = 1; // legacy! - if(msg.contains("ProtocolVersion")) ver = msg["ProtocolVersion"].toUInt(); - if(ver < Global::clientNeedsProtocol) { + uint ver = msg["ProtocolVersion"].toUInt(); + if(ver < Quassel::buildInfo().clientNeedsProtocol) { emit connectionError(tr("The Quassel Core you are trying to connect to is too old!
" - "Need at least core/client protocol v%1 to connect.").arg(Global::clientNeedsProtocol)); + "Need at least core/client protocol v%1 to connect.").arg(Quassel::buildInfo().clientNeedsProtocol)); disconnectFromCore(); return; } emit connectionMsg(msg["CoreInfo"].toString()); -#ifndef QT_NO_OPENSSL +#ifdef HAVE_SSL if(coreConnectionInfo["useSsl"].toBool()) { if(msg["SupportSsl"].toBool()) { QSslSocket *sslSocket = qobject_cast(socket); @@ -219,7 +220,7 @@ void ClientSyncer::clientInitAck(const QVariantMap &msg) { socket->setProperty("UseCompression", true); } #endif - + if(!msg["Configured"].toBool()) { // start wizard emit startCoreSetup(msg["StorageBackends"].toList()); @@ -244,17 +245,22 @@ void ClientSyncer::loginToCore(const QString &user, const QString &passwd) { SignalProxy::writeDataToDevice(socket, clientLogin); } +void ClientSyncer::internalSessionStateReceived(const QVariant &packedState) { + QVariantMap state = packedState.toMap(); + emit sessionProgress(1, 1); + Client::instance()->setConnectedToInternalCore(); + syncToCore(state); +} + void ClientSyncer::sessionStateReceived(const QVariantMap &state) { emit sessionProgress(1, 1); disconnect(this, SIGNAL(recvPartialItem(quint32, quint32)), this, SIGNAL(sessionProgress(quint32, quint32))); disconnect(socket, 0, this, 0); // rest of communication happens through SignalProxy - //Client::signalProxy()->addPeer(socket); Client::instance()->setConnectedToCore(socket, coreConnectionInfo["AccountId"].value()); syncToCore(state); } void ClientSyncer::syncToCore(const QVariantMap &sessionState) { - // create identities foreach(QVariant vid, sessionState["Identities"].toList()) { Client::instance()->coreIdentityCreated(vid.value()); @@ -299,7 +305,7 @@ void ClientSyncer::checkSyncState() { } } -#ifndef QT_NO_OPENSSL +#ifdef HAVE_SSL void ClientSyncer::sslErrors(const QList &errors) { qDebug() << "SSL Errors:"; foreach(QSslError err, errors)