#include "portlistmodel.h" ----------------------- This file is not used ----------------------- PortListModel::PortListModel(QObject *parent) : QAbstractItemModel(parent) { portList = new QList<PortGroup>; #if 0 // FIXME: Dummy data only for testing; to be removed PortGroup pg; pg.name = "A"; pg.isLocal = TRUE; pg.numPorts = 3; pg.port = new Port[pg.numPorts]; pg.port[0].portId = 0; pg.port[0].name = "A0"; pg.port[0].desc = "a0a0a0a0a0a0"; pg.port[1].portId = 1; pg.port[1].name = "A1"; pg.port[1].desc = "a1a1a1a1a1a1"; pg.port[2].portId = 2; pg.port[2].name = "A2"; pg.port[2].desc = "a2a2a2a2a2a2"; portList->append(pg); pg.name = "B"; pg.isLocal = FALSE; pg.numPorts = 2; pg.port = new Port[pg.numPorts]; pg.port[0].portId = 0; pg.port[0].name = "B0"; pg.port[0].desc = "b0b0b0b0b0b0"; pg.port[1].portId = 1; pg.port[1].name = "B1"; pg.port[1].desc = "b1b1b1b1b1b1"; portList->append(pg); #endif // Do I need to do anything here? } int PortListModel::rowCount(const QModelIndex &parent) const { // qDebug("RowCount Enter\n"); if (!parent.isValid()) { // Top Level Item // qDebug("RowCount top\n"); // qDebug("RowCount Exit: %d\n", portList->size()); return portList->size(); } // qDebug("RowCount non top %d, %d, %llx\n", // parent.row(), parent.column(), parent.internalId()); quint16 p = parent.internalId() & 0xFFFF; if (p == 0xFFFF) { // qDebug("RowCount Exit: %d\n", portList->at(parent.row()).numPorts); return portList->at(parent.row()).numPorts; } else { // Leaf Item return 0; } } int PortListModel::columnCount(const QModelIndex &parent ) const { return 1; // FIXME: hardcoding } Qt::ItemFlags PortListModel::flags(const QModelIndex &index) const { return QAbstractItemModel::flags(index); // FIXME: no need for this func } QVariant PortListModel::data(const QModelIndex &index, int role) const { //qDebug("Enter PortListModel data\n"); // Check for a valid index if (!index.isValid()) return QVariant(); // Check role if ((role == Qt::DisplayRole)) { #if 0 // Only for debug qDebug("Exit PortListModel data\n"); return "Testing"; // FIXME: for dbg only #endif QModelIndex parent = index.parent(); if (!parent.isValid()) { // Top Level Item return QString("%1 (%2) [%3]"). arg(portList->at(index.row()).name). arg(portList->at(index.row()).isLocal == TRUE? "LOCAL" : "REMOTE"). arg(portList->at(index.row()).numPorts); } return QString("%1: %2 (%3)"). arg(portList->at(parent.row()).port[index.row()].portId). arg(portList->at(parent.row()).port[index.row()].name). arg(portList->at(parent.row()).port[index.row()].desc); } else return QVariant(); } QVariant PortListModel::headerData(int section, Qt::Orientation orientation, int role) const { if (role != Qt::DisplayRole) return QVariant(); if (orientation == Qt::Horizontal) return QVariant(); else return QString("%1").arg(section+1); } QModelIndex PortListModel::index (int row, int col, const QModelIndex & parent) const { #if 0 if (!hasIndex(row, col, parent)) return QModelIndex(); #endif //qDebug("index: R=%d, C=%d, PR=%d, PC=%d, PID=%llx\n", // row, col, parent.row(), parent.column(), parent.internalId()); if (!parent.isValid()) { // Top Level Item quint16 pg = row, p = 0xFFFF; quint32 id = (pg << 16) | p; //qDebug("index (top) dbg: PG=%d, P=%d, ID=%x\n", pg, p, id); return createIndex(row, col, id); } else { quint16 pg = parent.row(), p = row; quint32 id = (pg << 16) | p; //qDebug("index (nontop) dbg: PG=%d, P=%d, ID=%x\n", pg, p, id); return createIndex(row, col, id); } } QModelIndex PortListModel::parent(const QModelIndex &index) const { if (!index.isValid()) return QModelIndex(); //qDebug("parent: R=%d, C=%d ID=%llx\n", // index.row(), index.column(), index.internalId()); quint16 pg = index.internalId() >> 16; quint16 p = index.internalId() & 0x0000FFFF; //qDebug("parent dbg: PG=%d, P=%d\n", pg, p); if (p == 0xFFFF) { //qDebug("parent ret: NULL\n"); // Top Level Item - PG return QModelIndex(); } quint32 id = (pg << 16) | 0xFFFF; //qDebug("parent ret: R=%d, C=%d, ID=%x\n", // pg, 0, id); return createIndex(pg, 0, id); } void PortListModel::doRefresh() { emit layoutChanged(); }