X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=58725988d57290ae28538ab8eb877ba571dfa028;hp=d57678dd49905ad9bfa8ad35d8b816750555bab2;hb=f1e45389df014fb5445ee96769bf02dcf34f1e21;hpb=f953257711e147661ce79e4da4c8b84f083e3e95 diff --git a/src/client/client.cpp b/src/client/client.cpp index d57678dd..58725988 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -285,6 +285,7 @@ void Client::setSyncedToCore() { _bufferSyncer = new BufferSyncer(this); connect(bufferSyncer(), SIGNAL(lastSeenSet(BufferId, const QDateTime &)), this, SLOT(updateLastSeen(BufferId, const QDateTime &))); connect(bufferSyncer(), SIGNAL(bufferRemoved(BufferId)), this, SLOT(bufferRemoved(BufferId))); + connect(bufferSyncer(), SIGNAL(bufferRenamed(BufferId, QString)), this, SLOT(bufferRenamed(BufferId, QString))); signalProxy()->synchronize(bufferSyncer()); _syncedToCore = true; @@ -463,7 +464,20 @@ void Client::setBufferLastSeen(BufferId id, const QDateTime &lastSeen) { bufferSyncer()->requestSetLastSeen(id, lastSeen); } +void Client::removeBuffer(BufferId id) { + if(!bufferSyncer()) return; + bufferSyncer()->requestRemoveBuffer(id); +} + void Client::bufferRemoved(BufferId bufferId) { + QModelIndex current = bufferModel()->currentIndex(); + if(current.data(NetworkModel::BufferIdRole).value() == bufferId) { + // select the status buffer if the currently displayed buffer is about to be removed + QModelIndex newCurrent = current.sibling(0,0); + bufferModel()->standardSelectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); + bufferModel()->standardSelectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect); + } + networkModel()->removeBuffer(bufferId); if(_buffers.contains(bufferId)) { Buffer *buff = _buffers.take(bufferId); @@ -471,3 +485,10 @@ void Client::bufferRemoved(BufferId bufferId) { buff->deleteLater(); } } + +void Client::bufferRenamed(BufferId bufferId, const QString &newName) { + QModelIndex bufferIndex = networkModel()->bufferIndex(bufferId); + if(bufferIndex.isValid()) { + networkModel()->setData(bufferIndex, newName, Qt::DisplayRole); + } +}