#include "networkmodel.h"
#include "mappedselectionmodel.h"
#include "buffer.h"
+#include "global.h"
+
#include <QAbstractItemView>
BufferModel::BufferModel(NetworkModel *parent)
: QSortFilterProxyModel(parent),
- _selectionModelSynchronizer(new SelectionModelSynchronizer(this)),
- _propertyMapper(new ModelPropertyMapper(this))
+ _selectionModelSynchronizer(this)
{
setSourceModel(parent);
-
- // initialize the Property Mapper
- _propertyMapper->setModel(this);
- delete _propertyMapper->selectionModel();
- MappedSelectionModel *mappedSelectionModel = new MappedSelectionModel(this);
- _propertyMapper->setSelectionModel(mappedSelectionModel);
- synchronizeSelectionModel(mappedSelectionModel);
-
- connect(_selectionModelSynchronizer, SIGNAL(setCurrentIndex(QModelIndex, QItemSelectionModel::SelectionFlags)),
- this, SLOT(setCurrentIndex(QModelIndex, QItemSelectionModel::SelectionFlags)));
-}
-
-BufferModel::~BufferModel() {
+ if(Global::parser.isSet("debugbufferswitches")) {
+ connect(_selectionModelSynchronizer.selectionModel(), SIGNAL(currentChanged(const QModelIndex &, const QModelIndex &)),
+ this, SLOT(debug_currentChanged(const QModelIndex &, const QModelIndex &)));
+ }
}
bool BufferModel::filterAcceptsRow(int sourceRow, const QModelIndex &parent) const {
- Q_UNUSED(sourceRow)
-
- if(parent.data(NetworkModel::ItemTypeRole) == NetworkModel::BufferItemType)
- return false;
- else
+ Q_UNUSED(sourceRow);
+ // 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) {
- selectionModelSynchronizer()->addSelectionModel(selectionModel);
+ _selectionModelSynchronizer.addSelectionModel(selectionModel);
}
void BufferModel::synchronizeView(QAbstractItemView *view) {
MappedSelectionModel *mappedSelectionModel = new MappedSelectionModel(view->model());
- selectionModelSynchronizer()->addSelectionModel(mappedSelectionModel);
+ _selectionModelSynchronizer.addSelectionModel(mappedSelectionModel);
Q_ASSERT(mappedSelectionModel);
delete view->selectionModel();
view->setSelectionModel(mappedSelectionModel);
}
-void BufferModel::mapProperty(int column, int role, QObject *target, const QByteArray &property) {
- qDebug() << property;
- propertyMapper()->addMapping(column, role, target, property);
+QModelIndex BufferModel::currentIndex() {
+ return standardSelectionModel()->currentIndex();
}
-// This Slot indicates that the user has selected a different buffer in the gui
-void BufferModel::setCurrentIndex(const QModelIndex &index, QItemSelectionModel::SelectionFlags command) {
- Q_UNUSED(command)
- BufferId newCurrentBuffer;
- if(index.data(NetworkModel::ItemTypeRole) == NetworkModel::BufferItemType && currentBuffer != (newCurrentBuffer = index.data(NetworkModel::BufferIdRole).value<BufferId>())) {
- currentBuffer = newCurrentBuffer;
- // FIXME: to something like: index.setData(ActivitRole, NoActivity);
- // networkModel->bufferActivity(BufferItem::NoActivity, currentBuffer);
- emit selectionChanged(index);
- }
+void BufferModel::setCurrentIndex(const QModelIndex &newCurrent) {
+ _selectionModelSynchronizer.selectionModel()->setCurrentIndex(newCurrent, QItemSelectionModel::Current);
+ _selectionModelSynchronizer.selectionModel()->select(newCurrent, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
}
-QModelIndex BufferModel::currentIndex() {
- return propertyMapper()->selectionModel()->currentIndex();
+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>();
}