-void BufferModel::selectBuffer(Buffer *buffer) {
- QModelIndex index = (qobject_cast<NetworkModel *>(parent()))->bufferIndex(buffer->bufferInfo());
- if(!index.isValid()) {
- qWarning() << "BufferModel::selectBuffer(): unknown Buffer has been selected.";
+void BufferModel::switchToOrJoinBuffer(NetworkId networkId, const QString &name, bool isQuery) {
+ BufferId bufId = Client::networkModel()->bufferId(networkId, name);
+ if(bufId.isValid()) {
+ QModelIndex targetIdx = Client::networkModel()->bufferIndex(bufId);
+ switchToBuffer(bufId);
+ if(!targetIdx.data(NetworkModel::ItemActiveRole).toBool()) {
+ qDebug() << "switchToOrJoinBuffer failed to switch even though bufId:" << bufId << "is valid.";
+ Client::userInput(BufferInfo::fakeStatusBuffer(networkId), QString(isQuery ? "/QUERY %1" : "/JOIN %1").arg(name));
+ }
+ } else {
+ _bufferToSwitchTo = qMakePair(networkId, name);
+ Client::userInput(BufferInfo::fakeStatusBuffer(networkId), QString(isQuery ? "/QUERY %1" : "/JOIN %1").arg(name));
+ }
+}
+
+void BufferModel::debug_currentChanged(QModelIndex current, QModelIndex previous) {
+ Q_UNUSED(previous);
+ qDebug() << "Switched current Buffer: " << current << current.data().toString() << "Buffer:" << current.data(NetworkModel::BufferIdRole).value<BufferId>();
+}
+
+void BufferModel::newBuffers(const QModelIndex &parent, int start, int end) {
+ if(parent.data(NetworkModel::ItemTypeRole) != NetworkModel::NetworkItemType)