-void BufferView::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);
- }
- QTreeWidgetItem *ni = netitems[net];
- ni->setExpanded(true);
- ni->setFlags(Qt::ItemIsEnabled);
- item = new QTreeWidgetItem(ni, label);
- } else {
- item = new QTreeWidgetItem(label);
- }
- //item->setFlags(Qt::ItemIsEnabled);
- bufitems[b] = item;
- // TODO Use style engine!
- if(!b->isActive()) {
- item->setForeground(0, QColor("grey"));
- }
- if(b == currentBuffer) {
- // this fixes the multiple simultaneous selections
- emit bufferSelected(b);
- //item->setSelected(true);
- }
- }
- foreach(QString key, netitems.keys()) {
- if(!netitems[key]->childCount()) {
- delete netitems[key];
- QTreeWidgetItem *item = netitems[key]->parent()->takeChild(netitems[key]->parent()->indexOfChild(netitems[key]));
- delete item;
- netitems.remove(key);
- }
- }