X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=55fccf23393161953cbb90ce3c6fd90e4d55dd2d;hp=f77ab6c4ae38cc474e97f7e73d4d207eec68f704;hb=2f05c5d7e94d5e96d2b4bae59140fd3b60a7a62f;hpb=8699dd758516d0ded076811e8ea656adc95e69d0 diff --git a/src/client/client.cpp b/src/client/client.cpp index f77ab6c4..55fccf23 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -28,6 +28,7 @@ #include "message.h" #include "networkinfo.h" #include "networkmodel.h" +#include "buffermodel.h" #include "quasselui.h" #include "signalproxy.h" #include "util.h" @@ -52,27 +53,28 @@ void Client::init(AbstractUi *ui) { } Client::Client(QObject *parent) - : QObject(parent), + : QObject(parent), socket(0), _signalProxy(new SignalProxy(SignalProxy::Client, this)), mainUi(0), _networkModel(0), + _bufferModel(0), connectedToCore(false) { - } Client::~Client() { - } void Client::init() { blockSize = 0; _networkModel = new NetworkModel(this); + _bufferModel = new BufferModel(_networkModel); connect(this, SIGNAL(bufferSelected(Buffer *)), - _networkModel, SLOT(selectBuffer(Buffer *))); + _bufferModel, SLOT(selectBuffer(Buffer *))); + connect(this, SIGNAL(bufferUpdated(Buffer *)), _networkModel, SLOT(bufferUpdated(Buffer *))); connect(this, SIGNAL(bufferActivity(Buffer::ActivityLevel, Buffer *)), @@ -192,6 +194,11 @@ NetworkModel *Client::networkModel() { return instance()->_networkModel; } +BufferModel *Client::bufferModel() { + return instance()->_bufferModel; +} + + SignalProxy *Client::signalProxy() { return instance()->_signalProxy; } @@ -321,7 +328,7 @@ void Client::coreSocketDisconnected() { /* Clear internal data. Hopefully nothing relies on it at this point. */ _networkModel->clear(); - QHash::iterator bufferIter = _buffers.begin(); + QHash::iterator bufferIter = _buffers.begin(); while(bufferIter != _buffers.end()) { Buffer *buffer = bufferIter.value(); disconnect(buffer, SIGNAL(destroyed()), this, 0); @@ -331,7 +338,7 @@ void Client::coreSocketDisconnected() { Q_ASSERT(_buffers.isEmpty()); - QHash::iterator netIter = _networkInfo.begin(); + QHash::iterator netIter = _networkInfo.begin(); while(netIter != _networkInfo.end()) { NetworkInfo *net = netIter.value(); disconnect(net, SIGNAL(destroyed()), this, 0); @@ -340,6 +347,15 @@ void Client::coreSocketDisconnected() { } Q_ASSERT(_networkInfo.isEmpty()); + QHash::iterator idIter = _identities.begin(); + while(idIter != _identities.end()) { + Identity *id = idIter.value(); + emit identityRemoved(id->id()); + idIter = _identities.erase(idIter); + id->deleteLater(); + } + Q_ASSERT(_identities.isEmpty()); + coreConnectionInfo.clear(); sessionData.clear(); layoutQueue.clear(); @@ -370,10 +386,11 @@ void Client::syncToCore(const QVariant &coreState) { // create identities foreach(QVariant vid, sessionState["Identities"].toList()) { - Identity *id = new Identity(vid.value(), this); - _identities[id->id()] = id; - signalProxy()->synchronize(id); - qDebug() << "received identity" << id->identityName(); + coreIdentityCreated(vid.value()); + //Identity *id = new Identity(vid.value(), this); + //_identities[id->id()] = id; + //signalProxy()->synchronize(id); + //qDebug() << "received identity" << id->identityName(); } // store Buffer details