X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=f2d1ddd89abf43435d900035ce1e97ab24c9a75f;hb=fee1002dcb914ef9d47ceae97080b8c140e3b1ed;hp=2cb2e1286a51110dafe9763192975e4a7b128a98;hpb=28d87d2379f9af82077d67d034dc93f7e2882651;p=quassel.git diff --git a/src/client/client.cpp b/src/client/client.cpp index 2cb2e128..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) {