some minor improvements to the NetworkModel and added a sanity check to TreeModel
[quassel.git] / src / client / networkmodel.cpp
index 1cde086..7890099 100644 (file)
@@ -227,14 +227,13 @@ void BufferItem::removeUserFromCategory(IrcUser *ircUser) {
   UserCategoryItem *categoryItem = 0;
   for(int i = 0; i < childCount(); i++) {
     categoryItem = qobject_cast<UserCategoryItem *>(child(i));
-    if(success = categoryItem->removeChildById((quint64)ircUser)) {
+    if(success = categoryItem->removeUser(ircUser)) {
       if(categoryItem->childCount() == 0)
        removeChild(i);
       break;
     }
   }
 
-  
   if(!success) {
     qDebug() << "didn't find User:" << ircUser << (quint64)ircUser;
     qDebug() << "==== Childlist for Item:" << this << id() << bufferName() << "====";
@@ -405,6 +404,10 @@ void UserCategoryItem::addUser(IrcUser *ircUser) {
   newChild(new IrcUserItem(ircUser, this));
 }
 
+bool UserCategoryItem::removeUser(IrcUser *ircUser) {
+  return removeChildById((quint64)ircUser);
+}
+
 int UserCategoryItem::categoryFromModes(const QString &modes) {
   for(int i = 0; i < categories.count(); i++) {
     if(modes.contains(categories[i].mode))
@@ -415,6 +418,8 @@ int UserCategoryItem::categoryFromModes(const QString &modes) {
 
 QVariant UserCategoryItem::data(int column, int role) const {
   switch(role) {
+  case NetworkModel::ItemActiveRole:
+    return true;
   case NetworkModel::ItemTypeRole:
     return NetworkModel::UserCategoryItemType;
   case NetworkModel::BufferIdRole:
@@ -457,6 +462,8 @@ quint64 IrcUserItem::id() const {
 
 QVariant IrcUserItem::data(int column, int role) const {
   switch(role) {
+  case NetworkModel::ItemActiveRole:
+    return !_ircUser->isAway();
   case NetworkModel::ItemTypeRole:
     return NetworkModel::IrcUserItemType;
   case NetworkModel::BufferIdRole: