fixing a bug where quit messages from different networks were shown if the user has...
[quassel.git] / src / client / buffermodel.cpp
index faf6090..de41550 100644 (file)
 
 #include "buffermodel.h"
 
+#include <QAbstractItemView>
+
 #include "client.h"
-#include "global.h"
 #include "mappedselectionmodel.h"
 #include "networkmodel.h"
-
-#include <QAbstractItemView>
+#include "quassel.h"
 
 BufferModel::BufferModel(NetworkModel *parent)
   : QSortFilterProxyModel(parent),
     _selectionModelSynchronizer(this)
 {
   setSourceModel(parent);
-  if(Global::parser.isSet("debugbufferswitches")) {
+  if(Quassel::isOptionSet("debugbufferswitches")) {
     connect(_selectionModelSynchronizer.selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
            this, SLOT(debug_currentChanged(const QModelIndex &, const QModelIndex &)));
   }
@@ -71,6 +71,21 @@ void BufferModel::switchToBuffer(const BufferId &bufferId) {
   setCurrentIndex(mapFromSource(source_index));
 }
 
+void BufferModel::switchToBufferIndex(const QModelIndex &bufferIdx) {
+  // we accept indexes that directly belong to us or our parent - nothing else
+  if(bufferIdx.model() == this) {
+    setCurrentIndex(bufferIdx);
+    return;
+  }
+
+  if(bufferIdx.model() == sourceModel()) {
+    setCurrentIndex(mapFromSource(bufferIdx));
+    return;
+  }
+
+  qWarning() << "BufferModel::switchToBufferIndex(const QModelIndex &):" << bufferIdx << "does not belong to BufferModel or NetworkModel";
+}
+
 void BufferModel::debug_currentChanged(QModelIndex current, QModelIndex previous) {
   Q_UNUSED(previous);
   qDebug() << "Switched current Buffer: " << current << current.data().toString() << "Buffer:" << current.data(NetworkModel::BufferIdRole).value<BufferId>();