#include "PacksListModel.h" #include "../dictionary/CardPack.h" QVariant PacksListModel::data( const QModelIndex &index, int role ) const { if (!index.isValid()) return QVariant(); if (index.row() >= rowCount()) return QVariant(); switch( role ) { case Qt::DisplayRole: case Qt::EditRole: { const CardPack* pack = m_parent->m_dict.cardPack( index.row() ); if( !pack ) return QVariant(); return pack->id(); } default: return QVariant(); } } bool PacksListModel::setData(const QModelIndex& index, const QVariant& aValue, int role) { if( !index.isValid() || role != Qt::EditRole ) return false; m_parent->m_dict.cardPack( index.row() )->setName( aValue.toString() ); emit dataChanged(index, index); return true; } Qt::ItemFlags PacksListModel::flags(const QModelIndex &index) const { Qt::ItemFlags defaultFlags = DraggableListModel::flags(index); return defaultFlags; } bool PacksListModel::insertRows(int position, int rows, const QModelIndex &/*parent*/) { beginInsertRows(QModelIndex(), position, position+rows-1); for (int i = 0; i < rows; i++) { CardPack* newPack = new CardPack( &(m_parent->m_dict) ); newPack->addField( m_parent->m_dict.field(0) ); m_parent->m_dict.insertPack( position + i, newPack ); } endInsertRows(); return true; } bool PacksListModel::removeRows(int position, int rows, const QModelIndex &/*parent*/) { beginRemoveRows(QModelIndex(), position, position+rows-1); for (int row = 0; row < rows; ++row) m_parent->m_dict.removePack( position ); endRemoveRows(); return true; } const void* PacksListModel::dataPtr( const QModelIndex& aIndex ) const { CardPack* pack = m_parent->m_dict.cardPack( aIndex.row() ); return static_cast( pack ); } void PacksListModel::insertPointer( int aPos, void* aData ) { beginInsertRows(QModelIndex(), aPos, aPos ); m_parent->m_dict.insertPack( aPos, static_cast( aData ) ); endInsertRows(); } void PacksListModel::removePack( int aPos ) { beginRemoveRows(QModelIndex(), aPos, aPos); m_parent->m_dict.destroyPack( aPos ); endRemoveRows(); }