Skip to content

Commit

Permalink
changed the way connections are organized and retrieved by connection…
Browse files Browse the repository at this point in the history
… window
  • Loading branch information
canpadawan committed Jun 15, 2016
1 parent 6d20a06 commit 45752d1
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 78 deletions.
150 changes: 87 additions & 63 deletions canconnectionmodel.cpp
Original file line number Diff line number Diff line change
@@ -1,17 +1,11 @@
#include "canconnection.h"
#include "canconnectioncontainer.h"
#include "connections/canconnection.h"
#include "canconnectionmodel.h"

CANConnectionModel::CANConnectionModel(QObject *parent)
: QAbstractTableModel(parent)
{
}

void CANConnectionModel::refreshView()
{
beginResetModel();
endResetModel();
}

QVariant CANConnectionModel::headerData(int section, Qt::Orientation orientation, int role) const
{
Expand Down Expand Up @@ -41,6 +35,9 @@ QVariant CANConnectionModel::headerData(int section, Qt::Orientation orientation
return QString(tr("Single Wire"));
break;
case 6:
return QString(tr("Status"));
break;
case 7:
return QString(tr("Active"));
break;
}
Expand All @@ -52,97 +49,124 @@ QVariant CANConnectionModel::headerData(int section, Qt::Orientation orientation
return QVariant();
}

int CANConnectionModel::rowCount(const QModelIndex &parent) const
{
return buses.count();
}

int CANConnectionModel::columnCount(const QModelIndex &parent) const
{
return 7;
}


int CANConnectionModel::rowCount(const QModelIndex &parent) const {
int rows=0;
QList<CANConnection*>::const_iterator iter;

for (iter = mConns.begin() ; iter != mConns.end() ; ++iter) {
rows+=(*iter)->getNumBuses();
}

return rows;
}


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) {
CANBus bus = buses[index.row()];
CANConnection *conn = bus.getContainer()->getRef();
int busId;
CANConnection *conn_p = getAtIdx(index.row(), busId);
if(!conn_p)
return QVariant();

CANBus bus;
bool ret;
ret = conn_p->getBusSettings(busId, bus);
if(!ret) return QVariant();

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();
case 0: //bus
return QString::number(busId);
break;
case 1: //type
if (conn_p)
switch (conn_p->getType()) {
case CANCon::KVASER: return "KVASER";
case CANCon::SOCKETCAN: return "SocketCAN";
case CANCon::GVRET_SERIAL: return "GVRET";
default: {}
}
else qDebug() << "Tried to show connection type but connection was NULL";
break;
case 2: //port
if (conn_p) return conn_p->getPort();
else qDebug() << "Tried to show connection port but connection was NULL";
break;
case 3: //speed
return QString::number(bus.speed);
case 4: //Listen Only
return (bus.listenOnly) ? "True" : "False";
case 5: //Single Wire
return (bus.singleWire) ? "True" : "False";
case 6: //Status
return (conn_p->getStatus()==CANCon::CONNECTED) ? "Connected" : "Not Connected";
case 7: //Active
return (bus.active) ? "True" : "False";
default: {}
}
}
else
return QVariant();

return QVariant();
}


void CANConnectionModel::addBus(CANBus &bus)
void CANConnectionModel::add(CANConnection* pConn_p)
{
beginResetModel();
buses.append(bus);
mConns.append(pConn_p);
endResetModel();
}

void CANConnectionModel::removeBus(int busIdx)

void CANConnectionModel::remove(CANConnection* pConn_p)
{
if (busIdx>=0 && busIdx < buses.count()) {
beginResetModel();
buses.removeAt(busIdx);
endResetModel();
}
beginResetModel();
mConns.removeOne(pConn_p);
endResetModel();
}

CANBus* CANConnectionModel::getBus(int bus)

QList<CANConnection*>& CANConnectionModel::getConnections()
{
if (bus < 0) return NULL;
if (bus >= buses.count()) return NULL;
return &buses[bus];
return mConns;
}


CANBus* CANConnectionModel::findBusByNum(int bus)
CANConnection* CANConnectionModel::getAtIdx(int pIdx, int& pBusId) const
{
for (int i = 0; i < buses.count(); i++)
{
if (buses[i].busNum == bus)
{
return &buses[i];
if (pIdx < 0)
return NULL;

int i=0;
QList<CANConnection*>::const_iterator iter = mConns.begin();

for (iter = mConns.begin() ; iter != mConns.end() ; ++iter) {
if( i <= pIdx && pIdx < i+(*iter)->getNumBuses() ) {
pBusId = pIdx - i;
return (*iter);
}

i+= (*iter)->getNumBuses();
}

return NULL;
}


void CANConnectionModel::refreshView()
{
beginResetModel();
endResetModel();
}
27 changes: 12 additions & 15 deletions canconnectionmodel.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
#ifndef CANCONNECTIONMODEL_H
#define CANCONNECTIONMODEL_H

#include "canconnection.h"
#include "canbus.h"
#include "canconnectioncontainer.h"

#include <QAbstractTableModel>

class CANConnectionContainer;
#include "canbus.h"
#include "connections/canconnection.h"
#include "connectionwindow.h"


class CANConnectionModel : public QAbstractTableModel
{
Expand All @@ -19,24 +19,21 @@ class CANConnectionModel : public QAbstractTableModel
// Header:
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;

int rowCount(const QModelIndex &parent = QModelIndex()) const override;
int columnCount(const QModelIndex &parent = QModelIndex()) const override;

QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;

void addConnection(CANConnectionContainer *conn);
void removeConnection(CANConnection*);
void addBus(CANBus &bus);
void removeBus(int busIdx);
CANBus* getBus(int bus);
CANConnection* getConnection(int conn);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;

void add(CANConnection* pConn_p);
void remove(CANConnection* pConn_p);

QList<CANConnection*>& getConnections();
CANConnection* getAtIdx(int, int&) const;
void refreshView();

private:
QList<CANConnectionContainer *> connections;
QList<CANBus> buses;

CANBus *findBusByNum(int bus);
QList<CANConnection*> mConns;
};

#endif // CANCONNECTIONMODEL_H

0 comments on commit 45752d1

Please sign in to comment.