added a convenience method: Client::bufferModel()->switchToBuffer(bufferId)
[quassel.git] / src / client / buffermodel.cpp
index c487e0f..faf6090 100644 (file)
 
 #include "buffermodel.h"
 
-#include "networkmodel.h"
+#include "client.h"
+#include "global.h"
 #include "mappedselectionmodel.h"
-#include "buffer.h"
+#include "networkmodel.h"
+
 #include <QAbstractItemView>
 
 BufferModel::BufferModel(NetworkModel *parent)
@@ -30,7 +32,7 @@ BufferModel::BufferModel(NetworkModel *parent)
     _selectionModelSynchronizer(this)
 {
   setSourceModel(parent);
-  if(QCoreApplication::instance()->arguments().contains("--debugbufferswitches")) {
+  if(Global::parser.isSet("debugbufferswitches")) {
     connect(_selectionModelSynchronizer.selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
            this, SLOT(debug_currentChanged(const QModelIndex &, const QModelIndex &)));
   }
@@ -59,13 +61,14 @@ void BufferModel::synchronizeView(QAbstractItemView *view) {
   view->setSelectionModel(mappedSelectionModel);
 }
 
-QModelIndex BufferModel::currentIndex() {
-  return standardSelectionModel()->currentIndex();
+void BufferModel::setCurrentIndex(const QModelIndex &newCurrent) {
+  _selectionModelSynchronizer.selectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::Current);
+  _selectionModelSynchronizer.selectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
 }
 
-void BufferModel::setCurrentIndex(const QModelIndex &newCurrent) {
-  _selectionModelSynchronizer.selectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
-  _selectionModelSynchronizer.selectionModel()->select(newCurrent, QItemSelectionModel::Current);
+void BufferModel::switchToBuffer(const BufferId &bufferId) {
+  QModelIndex source_index = Client::networkModel()->bufferIndex(bufferId);
+  setCurrentIndex(mapFromSource(source_index));
 }
 
 void BufferModel::debug_currentChanged(QModelIndex current, QModelIndex previous) {