BufferModel::BufferModel(NetworkModel *parent)
: QSortFilterProxyModel(parent),
- _selectionModelSynchronizer(new SelectionModelSynchronizer(this)),
- _propertyMapper(new ModelPropertyMapper(this))
+ _selectionModelSynchronizer(this),
+ _propertyMapper(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)));
+ _propertyMapper.setModel(this);
+ _selectionModelSynchronizer.addRegularSelectionModel(_propertyMapper.selectionModel());
+ connect(_propertyMapper.selectionModel(), SIGNAL(currentChanged(QModelIndex, QModelIndex)),
+ this, SLOT(currentChanged(QModelIndex, QModelIndex)));
}
BufferModel::~BufferModel() {
}
bool BufferModel::filterAcceptsRow(int sourceRow, const QModelIndex &parent) const {
- Q_UNUSED(sourceRow)
-
+ Q_UNUSED(sourceRow);
+ // hide childs of buffers and everything below
if(parent.data(NetworkModel::ItemTypeRole) == NetworkModel::BufferItemType)
return false;
else
}
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) {
- propertyMapper()->addMapping(column, role, target, property);
+ _propertyMapper.addMapping(column, role, target, property);
}
-// 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)
- Buffer *newCurrentBuffer;
- NetworkModel *networkModel = qobject_cast<NetworkModel *>(parent());
- if(networkModel->isBufferIndex(mapToSource(index)) && currentBuffer != (newCurrentBuffer = networkModel->getBufferByIndex(mapToSource(index)))) {
- currentBuffer = newCurrentBuffer;
- networkModel->bufferActivity(Buffer::NoActivity, currentBuffer);
- emit bufferSelected(currentBuffer);
- emit selectionChanged(index);
- }
+QModelIndex BufferModel::currentIndex() {
+ return propertyMapper()->selectionModel()->currentIndex();
}
-void BufferModel::selectBuffer(Buffer *buffer) {
- QModelIndex index = (qobject_cast<NetworkModel *>(parent()))->bufferIndex(buffer->bufferInfo());
- if(!index.isValid()) {
- qWarning() << "BufferModel::selectBuffer(): unknown Buffer has been selected.";
- return;
- }
- // SUPER UGLY!
- setCurrentIndex(mapFromSource(index), 0);
+void BufferModel::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) {
+ Q_UNUSED(current);
+ setData(current, QDateTime::currentDateTime(), NetworkModel::LastSeenRole);
+ setData(previous, QDateTime::currentDateTime(), NetworkModel::LastSeenRole);
+ setData(previous, qVariantFromValue((int)BufferItem::NoActivity), NetworkModel::BufferActivityRole);
}