allow topic changes to be hidden
[quassel.git] / src / uisupport / networkmodelcontroller.cpp
index 8a1d90a..58db561 100644 (file)
@@ -115,7 +115,7 @@ QString NetworkModelController::nickName(const QModelIndex &index) const {
   BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
   if(!bufferInfo.isValid())
     return QString();
   BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
   if(!bufferInfo.isValid())
     return QString();
-  if(!bufferInfo.type() == BufferInfo::QueryBuffer)
+  if(bufferInfo.type() != BufferInfo::QueryBuffer)
     return QString();
 
   return bufferInfo.bufferName(); // FIXME this might break with merged queries maybe
     return QString();
 
   return bufferInfo.bufferName(); // FIXME this might break with merged queries maybe
@@ -232,11 +232,14 @@ void NetworkModelController::handleBufferAction(ActionType type, QAction *) {
     removeBuffers(indexList());
   } else {
 
     removeBuffers(indexList());
   } else {
 
+    QList<BufferInfo> bufferList; // create temp list because model indexes might change
     foreach(QModelIndex index, indexList()) {
       BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
     foreach(QModelIndex index, indexList()) {
       BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
-      if(!bufferInfo.isValid())
-        continue;
+      if(bufferInfo.isValid())
+        bufferList << bufferInfo;
+    }
 
 
+    foreach(BufferInfo bufferInfo, bufferList) {
       switch(type) {
         case BufferJoin:
           Client::userInput(bufferInfo, QString("/JOIN %1").arg(bufferInfo.bufferName()));
       switch(type) {
         case BufferJoin:
           Client::userInput(bufferInfo, QString("/JOIN %1").arg(bufferInfo.bufferName()));
@@ -273,6 +276,8 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action)
     filter |= Message::Mode;
   if(NetworkModelController::action(HideDayChange)->isChecked())
     filter |= Message::DayChange;
     filter |= Message::Mode;
   if(NetworkModelController::action(HideDayChange)->isChecked())
     filter |= Message::DayChange;
+  if(NetworkModelController::action(HideTopic)->isChecked())
+    filter |= Message::Topic;
 
   switch(type) {
   case HideJoin:
 
   switch(type) {
   case HideJoin:
@@ -281,6 +286,7 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action)
   case HideNick:
   case HideMode:
   case HideDayChange:
   case HideNick:
   case HideMode:
   case HideDayChange:
+  case HideTopic:
     if(_messageFilter)
       BufferSettings(_messageFilter->idString()).setMessageFilter(filter);
     else {
     if(_messageFilter)
       BufferSettings(_messageFilter->idString()).setMessageFilter(filter);
     else {