X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=b17fa28ae0fc8a230984b02b31aea896264e8b9d;hp=a53d07d7b5d267ebfa214f221d0c1d2c290a3dab;hb=0d49f7e83bd1055711e66aa880f3a0d62f7eefc9;hpb=97513984bfb9f50354942390803d4c75fededc53 diff --git a/src/client/client.cpp b/src/client/client.cpp index a53d07d7..b17fa28a 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -28,7 +28,6 @@ #include "bufferviewmanager.h" #include "clientbacklogmanager.h" #include "clientirclisthelper.h" -#include "global.h" #include "identity.h" #include "ircchannel.h" #include "ircuser.h" @@ -52,8 +51,11 @@ Client *Client::instance() { } void Client::destroy() { - //delete instanceptr; - instanceptr->deleteLater(); + if(instanceptr) { + delete instanceptr->mainUi; + instanceptr->deleteLater(); + instanceptr = 0; + } } void Client::init(AbstractUi *ui) { @@ -63,7 +65,6 @@ void Client::init(AbstractUi *ui) { Client::Client(QObject *parent) : QObject(parent), - socket(0), _signalProxy(new SignalProxy(SignalProxy::Client, this)), mainUi(0), _networkModel(0), @@ -114,7 +115,7 @@ void Client::init() { p->attachSlot(SIGNAL(networkCreated(NetworkId)), this, SLOT(coreNetworkCreated(NetworkId))); p->attachSlot(SIGNAL(networkRemoved(NetworkId)), this, SLOT(coreNetworkRemoved(NetworkId))); - connect(p, SIGNAL(disconnected()), this, SLOT(disconnectFromCore())); + connect(p, SIGNAL(disconnected()), this, SLOT(disconnectedFromCore())); //connect(mainUi, SIGNAL(connectToCore(const QVariantMap &)), this, SLOT(connectToCore(const QVariantMap &))); connect(mainUi, SIGNAL(disconnectFromCore()), this, SLOT(disconnectFromCore())); @@ -250,13 +251,20 @@ void Client::userInput(BufferInfo bufferInfo, QString message) { /*** core connection stuff ***/ -void Client::setConnectedToCore(QIODevice *sock, AccountId id) { - socket = sock; +void Client::setConnectedToCore(QIODevice *socket, AccountId id) { + // if the socket is an orphan, the signalProxy adopts it. + // -> we don't need to care about it anymore + socket->setParent(0); signalProxy()->addPeer(socket); _connectedToCore = true; setCurrentCoreAccount(id); } +void Client::setConnectedToInternalCore() { + _connectedToCore = true; + setCurrentCoreAccount(AccountId()); +} + void Client::setSyncedToCore() { // create buffersyncer Q_ASSERT(!_bufferSyncer); @@ -284,12 +292,12 @@ void Client::setSecuredConnection() { void Client::disconnectFromCore() { if(!isConnected()) return; - _connectedToCore = false; - if(socket) { - socket->close(); - socket->deleteLater(); - } + signalProxy()->removeAllPeers(); +} + +void Client::disconnectedFromCore() { + _connectedToCore = false; _syncedToCore = false; emit disconnected(); emit coreConnectionStateChanged(false); @@ -334,10 +342,6 @@ void Client::disconnectFromCore() { } -void Client::setCoreConfiguration(const QVariantMap &settings) { - SignalProxy::writeDataToDevice(socket, settings); -} - /*** ***/ void Client::networkDestroyed() {