-void NetworkView::buffersUpdated(BufferHash buffers) {
- tree->clear(); items.clear();
- if(network.isEmpty()) {
- tree->setHeaderLabel(tr("Networks"));
- foreach(QString net, buffers.keys()) {
- QTreeWidgetItem *netItem = new QTreeWidgetItem(QStringList(net));
- foreach(QString buf, buffers[net].keys()) {
- Buffer *b = buffers[net][buf];
- QStringList label;
- if(buf.isEmpty()) label << tr("Status");
- else label << buf;
- QTreeWidgetItem *item = new QTreeWidgetItem(netItem, label);
- items[net][buf] = item;
- VarMap d;
- d["Network"] = net;
- d["Buffer"] = buf;
- item->setData(0, Qt::UserRole, d);
- if(!b->isActive()) {
- item->setForeground(0, QColor("grey"));
- }
+void NetworkView::setBuffers(QList<Buffer *> buffers) {
+ tree->clear(); bufitems.clear(); netitems.clear();
+ foreach(Buffer *b, buffers) {
+ bufferUpdated(b);
+ }
+}
+
+void NetworkView::bufferUpdated(Buffer *b) {
+ if(bufitems.contains(b)) {
+ // FIXME this looks ugly
+ /*
+ this is actually fugly! :) - EgS
+ if anyone else wonders what this does: it takes the TreeItem related to the buffer out of the parents child list
+ therefore we need to know the childs index
+ */
+ QTreeWidgetItem *item = bufitems[b]->parent()->takeChild(bufitems[b]->parent()->indexOfChild(bufitems[b]));
+ delete item;
+ bufitems.remove(b);
+ }
+ if(shouldShow(b)) {
+ QString net = b->networkName();
+ QString buf = b->bufferName();
+ QTreeWidgetItem *item;
+ QStringList label;
+ if(b->bufferType() == Buffer::ServerBuffer) label << tr("Status");
+ else label << buf;
+ if((mode & SomeNets) || ( mode & AllNets)) {
+ if(!netitems.contains(net)) {
+ netitems[net] = new QTreeWidgetItem(tree, QStringList(net));
+ netitems[net]->setFlags(Qt::ItemIsEnabled);