146 lines
3.5 KiB
C++
146 lines
3.5 KiB
C++
#include "canconnection.h"
|
|
#include "canconnectioncontainer.h"
|
|
#include "canconnectionmodel.h"
|
|
|
|
CANConnectionModel::CANConnectionModel(QObject *parent)
|
|
: QAbstractTableModel(parent)
|
|
{
|
|
}
|
|
|
|
QVariant CANConnectionModel::headerData(int section, Qt::Orientation orientation, int role) const
|
|
{
|
|
if (role != Qt::DisplayRole)
|
|
return QVariant();
|
|
|
|
if (orientation == Qt::Horizontal)
|
|
{
|
|
switch (section)
|
|
{
|
|
case 0:
|
|
return QString(tr("Bus"));
|
|
break;
|
|
case 1:
|
|
return QString(tr("Type"));
|
|
break;
|
|
case 2:
|
|
return QString(tr("Port"));
|
|
break;
|
|
case 3:
|
|
return QString(tr("Speed"));
|
|
break;
|
|
case 4:
|
|
return QString(tr("Listen Only"));
|
|
break;
|
|
case 5:
|
|
return QString(tr("Single Wire"));
|
|
break;
|
|
case 6:
|
|
return QString(tr("Active"));
|
|
break;
|
|
}
|
|
}
|
|
|
|
else
|
|
return QString::number(section + 1);
|
|
|
|
return QVariant();
|
|
}
|
|
|
|
int CANConnectionModel::rowCount(const QModelIndex &parent) const
|
|
{
|
|
return buses.count();
|
|
}
|
|
|
|
int CANConnectionModel::columnCount(const QModelIndex &parent) const
|
|
{
|
|
return 7;
|
|
}
|
|
|
|
QVariant CANConnectionModel::data(const QModelIndex &index, int role) const
|
|
{
|
|
if (!index.isValid())
|
|
return QVariant();
|
|
|
|
if (index.row() >= (buses.count()))
|
|
return QVariant();
|
|
|
|
if (role == Qt::DisplayRole) {
|
|
CAN_Bus bus = buses[index.row()];
|
|
CANConnection *conn = bus.connection;
|
|
switch (index.column())
|
|
{
|
|
case 0: //bus
|
|
return QString::number(bus.busNum);
|
|
break;
|
|
case 1: //type
|
|
if (conn) return conn->getConnTypeName();
|
|
else qDebug() << "Tried to show connection type but connection was NULL";
|
|
break;
|
|
case 2: //port
|
|
if (conn) return conn->getConnPortName();
|
|
else qDebug() << "Tried to show connection port but connection was NULL";
|
|
break;
|
|
case 3: //speed
|
|
return QString::number(bus.speed);
|
|
break;
|
|
case 4: //Listen Only
|
|
if (bus.listenOnly) return QString("True");
|
|
else return QString("False");
|
|
break;
|
|
case 5: //Single Wire
|
|
if (bus.singleWire) return QString("True");
|
|
else return QString("False");
|
|
break;
|
|
case 6: //Active
|
|
if (bus.active) return QString("True");
|
|
else return QString("False");
|
|
break;
|
|
default:
|
|
return QVariant();
|
|
}
|
|
}
|
|
else
|
|
return QVariant();
|
|
}
|
|
|
|
void CANConnectionModel::addConnection(CANConnection *conn)
|
|
{
|
|
CAN_Bus bus;
|
|
CANConnectionContainer *cont = new CANConnectionContainer(conn);
|
|
connections.append(cont);
|
|
}
|
|
|
|
void CANConnectionModel::addBus(CAN_Bus &bus)
|
|
{
|
|
beginResetModel();
|
|
buses.append(bus);
|
|
endResetModel();
|
|
}
|
|
|
|
CAN_Bus* CANConnectionModel::getBus(int bus)
|
|
{
|
|
if (bus < 0) return NULL;
|
|
if (bus >= buses.count()) return NULL;
|
|
return &buses[bus];
|
|
}
|
|
|
|
CANConnection* CANConnectionModel::getConnection(int conn)
|
|
{
|
|
if (conn < 0) return NULL;
|
|
if (conn >= connections.count()) return NULL;
|
|
return connections[conn]->getRef();
|
|
}
|
|
|
|
CAN_Bus* CANConnectionModel::findBusByNum(int bus)
|
|
{
|
|
for (int i = 0; i < buses.count(); i++)
|
|
{
|
|
if (buses[i].busNum == bus)
|
|
{
|
|
return &buses[i];
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|