X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=f2d1ddd89abf43435d900035ce1e97ab24c9a75f;hp=4161ebcb1fbf400684421fe835ca94f501c99995;hb=70706ff642683d03ff091cab25d984ec7d9612de;hpb=521ed7df6d39cd809bd4fdf75974b2aaab59e583 diff --git a/src/client/client.cpp b/src/client/client.cpp index 4161ebcb..f2d1ddd8 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -85,24 +85,21 @@ Buffer *Client::buffer(uint bufferUid) { Buffer *Client::buffer(BufferInfo id) { Buffer *buff = buffer(id.uid()); - + if(!buff) { Client *client = Client::instance(); - Buffer *buff = new Buffer(id, client); + buff = new Buffer(id, client); connect(buff, SIGNAL(userInput(BufferInfo, QString)), client, SLOT(userInput(BufferInfo, QString))); connect(buff, SIGNAL(bufferUpdated(Buffer *)), client, SIGNAL(bufferUpdated(Buffer *))); - connect(buff, SIGNAL(bufferDestroyed(Buffer *)), - client, SIGNAL(bufferDestroyed(Buffer *))); - connect(buff, SIGNAL(bufferDestroyed(Buffer *)), - client, SLOT(removeBuffer(Buffer *))); - + connect(buff, SIGNAL(destroyed()), + client, SLOT(bufferDestroyed())); client->_buffers[id.uid()] = buff; emit client->bufferUpdated(buff); } - + Q_ASSERT(buff); return buff; } @@ -196,10 +193,21 @@ bool Client::isConnected() { return instance()->connectedToCore; } +void Client::fakeInput(uint bufferUid, QString message) { + Buffer *buff = buffer(bufferUid); + if(!buff) + qWarning() << "No Buffer with uid" << bufferUid << "can't send Input" << message; + else + emit instance()->sendInput(buff->bufferInfo(), message); +} + +void Client::fakeInput(BufferInfo bufferInfo, QString message) { + fakeInput(bufferInfo, message); +} + void Client::connectToCore(const QVariantMap &conn) { // TODO implement SSL coreConnectionInfo = conn; - if(isConnected()) { emit coreConnectionError(tr("Already connected to Core!")); return; @@ -258,14 +266,12 @@ void Client::coreSocketDisconnected() { _bufferModel->clear(); foreach(Buffer *buffer, _buffers.values()) { - delete buffer; + buffer->deleteLater(); } - Q_ASSERT(_buffers.empty()); foreach(NetworkInfo *networkinfo, _networkInfo.values()) { - delete networkinfo; + networkinfo->deleteLater(); } - Q_ASSERT(_networkInfo.empty()); coreConnectionInfo.clear(); sessionData.clear(); @@ -444,9 +450,9 @@ void Client::updateBufferInfo(BufferInfo id) { buffer(id)->updateBufferInfo(id); } - -void Client::removeBuffer(Buffer *b) { - _buffers.remove(b->bufferInfo().uid()); +void Client::bufferDestroyed() { + Buffer *buffer = static_cast(sender()); + _buffers.remove(_buffers.key(buffer)); } void Client::recvMessage(const Message &msg) {