Save the mainwindow state properly when exiting the client.
[quassel.git] / src / client / buffermodel.cpp
index 2fc222e..52d6d54 100644 (file)
 BufferModel::BufferModel(NetworkModel *parent)
   : QSortFilterProxyModel(parent),
     _selectionModelSynchronizer(this),
-    _propertyMapper(this)
+    _standardSelectionModel(this)
 {
   setSourceModel(parent);
-
-  // initialize the Property Mapper
-  _propertyMapper.setModel(this);
-  _selectionModelSynchronizer.addRegularSelectionModel(_propertyMapper.selectionModel());
-  connect(_propertyMapper.selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)),
-         this, SLOT(currentChanged(QModelIndex, QModelIndex)));
+  _selectionModelSynchronizer.addRegularSelectionModel(standardSelectionModel());
 }
 
 BufferModel::~BufferModel() {
@@ -44,11 +39,13 @@ BufferModel::~BufferModel() {
 
 bool BufferModel::filterAcceptsRow(int sourceRow, const QModelIndex &parent) const {
   Q_UNUSED(sourceRow);
-  // hide childs of buffers and everything below
-  if(parent.data(NetworkModel::ItemTypeRole) == NetworkModel::BufferItemType)
-    return false;
-  else
+  // only networks and buffers are allowed
+  if(!parent.isValid())
+    return true;
+  if(parent.data(NetworkModel::ItemTypeRole) == NetworkModel::NetworkItemType)
     return true;
+
+  return false;
 }
 
 void BufferModel::synchronizeSelectionModel(MappedSelectionModel *selectionModel) {
@@ -63,15 +60,11 @@ void BufferModel::synchronizeView(QAbstractItemView *view) {
   view->setSelectionModel(mappedSelectionModel);
 }
 
-void BufferModel::mapProperty(int column, int role, QObject *target, const QByteArray &property) {
-  _propertyMapper.addMapping(column, role, target, property);
-}
-
 QModelIndex BufferModel::currentIndex() {
-  return propertyMapper()->selectionModel()->currentIndex();
+  return standardSelectionModel()->currentIndex();
 }
 
-void BufferModel::currentChanged(const QModelIndex &current, const QModelIndex &previous) {
-  Q_UNUSED(current);
-  setData(previous, qVariantFromValue((int)BufferItem::NoActivity), NetworkModel::BufferActivityRole);
+void BufferModel::setCurrentIndex(const QModelIndex &newCurrent) {
+  _standardSelectionModel.setCurrentIndex(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+  _standardSelectionModel.select(newCurrent, QItemSelectionModel::ClearAndSelect);
 }