}
void Client::setSyncedToCore() {
- // create buffersyncer
+ // create buffersyncer
Q_ASSERT(!_bufferSyncer);
_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;
}
void Client::disconnectFromCore() {
+ if(!isConnected())
+ return;
+
if(socket) {
socket->close();
socket->deleteLater();
emit coreConnectionStateChanged(false);
// Clear internal data. Hopefully nothing relies on it at this point.
- _bufferSyncer->deleteLater();
- _bufferSyncer = 0;
+ if(_bufferSyncer) {
+ _bufferSyncer->deleteLater();
+ _bufferSyncer = 0;
+ }
_networkModel->clear();
QHash<BufferId, Buffer *>::iterator bufferIter = _buffers.begin();
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>() == bufferId) {
+ // select the status buffer if the currently displayed buffer is about to be removed
+ bufferModel()->setCurrentIndex(current.sibling(0,0));
+ }
+
networkModel()->removeBuffer(bufferId);
if(_buffers.contains(bufferId)) {
Buffer *buff = _buffers.take(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);
+ }
+}