tree = qobject_cast<NetworkViewWidget*>(widget())->tree();
tree->header()->hide();
tree->setSortingEnabled(true);
+ tree->setRootIsDecorated(true);
+ tree->setIndentation(10);
+ //tree->setAnimated(true);
connect(tree, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(itemClicked(QTreeWidgetItem*)));
connect(tree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), this, SLOT(itemDoubleClicked(QTreeWidgetItem*)));
connect(this, SIGNAL(fakeUserInput(BufferId, QString)), guiProxy, SLOT(gsUserInput(BufferId, QString)));
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);
item->setForeground(0, QColor("grey"));
}
if(b == currentBuffer) {
- item->setSelected(true);
+ // this fixes the multiple simultaneous selections
+ emit bufferSelected(b);
+ //item->setSelected(true);
}
}
foreach(QString key, netitems.keys()) {
}
}
+void NetworkView::bufferActivity(uint level, Buffer *b) {
+ QColor c;
+ if(bufitems.contains(b) and b != currentBuffer) {
+ if(level & Highlight) {
+ c = QColor(Qt::red);
+ } else if(level & NewMessage) {
+ c = QColor(Qt::darkYellow);
+ } else if(level & OtherActivity) {
+ c = QColor(Qt::darkGreen);
+ }
+ bufitems[b]->setForeground(0, c);
+ }
+}
+
+void NetworkView::clearActivity(Buffer *b) {
+ QColor c;
+ // it should be sane not to check if b is in bufitems since we just checked before calling this function
+ if(b->isActive()) {
+ c = QColor(Qt::black);
+ } else {
+ c = QColor(Qt::gray);
+ }
+ bufitems[b]->setForeground(0, c);
+}
+
bool NetworkView::shouldShow(Buffer *b) {
- bool f = false;
+ // bool f = false;
if((mode & NoActive) && b->isActive()) return false;
if((mode & NoInactive) && !b->isActive()) return false;
if((mode & NoChannels) && b->bufferType() == Buffer::ChannelBuffer) return false;
void NetworkView::bufferDestroyed(Buffer *b) {
-
}
void NetworkView::itemClicked(QTreeWidgetItem *item) {
Buffer *b = bufitems.key(item);
- if(b) emit bufferSelected(b);
- else {
- b = currentBuffer;
- if(bufitems.contains(b)) bufitems[b]->setSelected(true);
+ if(b) {
+ // there is a buffer associated with the item (aka: status/channel/query)
+ emit bufferSelected(b);
+ } else {
+ // network item
item->setExpanded(!item->isExpanded());
}
}
void NetworkView::itemDoubleClicked(QTreeWidgetItem *item) {
Buffer *b = bufitems.key(item);
- if(b) {
- if(Buffer::ChannelBuffer == b->bufferType()) {
- emit fakeUserInput(b->bufferId(), QString("/join " + b->bufferName()));
- }
+ if(b && Buffer::ChannelBuffer == b->bufferType()) {
+ emit fakeUserInput(b->bufferId(), QString("/join " + b->bufferName()));
+ emit bufferSelected(b);
}
}
foreach(QTreeWidgetItem *i, sel) { if(i != item) i->setSelected(false); }
if(item) {
item->setSelected(true);
+ clearActivity(b);
currentBuffer = b;
} else {
currentBuffer = 0;