Merge pull request #113 from andre-hartmann/improve-switch

Improve switch statements with enums and cleaned up a bit
This commit is contained in:
Collin Kidder
2017-11-26 15:33:38 -05:00
committed by GitHub
2 changed files with 74 additions and 85 deletions
+27 -33
View File
@@ -215,6 +215,16 @@ void CANFrameModel::recalcOverwrite()
mutex.unlock(); mutex.unlock();
} }
enum class Column {
TimeStamp = 0, ///< The timestamp when the frame was transmitted or received
FrameId = 1, ///< The frames CAN identifier (Standard: 11 or Extended: 29 bit)
Extended = 2, ///< True if the frames CAN identifier is 29 bit
Direction = 3, ///< Whether the frame was transmitted or received
Bus = 4, ///< The bus where the frame was transmitted or received
Length = 5, ///< The frames payload data length
Data = 6 ///< The frames payload data
};
QVariant CANFrameModel::data(const QModelIndex &index, int role) const QVariant CANFrameModel::data(const QModelIndex &index, int role) const
{ {
int dLen; int dLen;
@@ -257,28 +267,22 @@ QVariant CANFrameModel::data(const QModelIndex &index, int role) const
} }
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
switch (index.column()) switch (Column(index.column()))
{ {
case 0: //timestamp case Column::TimeStamp:
return Utility::formatTimestamp(thisFrame.timestamp); return Utility::formatTimestamp(thisFrame.timestamp);
break; case Column::FrameId:
case 1: //id
return Utility::formatNumber(thisFrame.ID); return Utility::formatNumber(thisFrame.ID);
break; case Column::Extended:
case 2: //ext
return QString::number(thisFrame.extended); return QString::number(thisFrame.extended);
break; case Column::Direction:
case 3: //direction
if (thisFrame.isReceived) return QString(tr("Rx")); if (thisFrame.isReceived) return QString(tr("Rx"));
else return QString(tr("Tx")); return QString(tr("Tx"));
break; case Column::Bus:
case 4: //bus
return QString::number(thisFrame.bus); return QString::number(thisFrame.bus);
break; case Column::Length:
case 5: //len
return QString::number(thisFrame.len); return QString::number(thisFrame.len);
break; case Column::Data:
case 6: //data
dLen = thisFrame.len; dLen = thisFrame.len;
if (dLen < 0) dLen = 0; if (dLen < 0) dLen = 0;
if (dLen > 8) dLen = 8; if (dLen > 8) dLen = 8;
@@ -307,9 +311,6 @@ QVariant CANFrameModel::data(const QModelIndex &index, int role) const
} }
} }
return tempString; return tempString;
break;
default:
return QVariant();
} }
} }
@@ -324,29 +325,22 @@ QVariant CANFrameModel::headerData(int section, Qt::Orientation orientation,
if (orientation == Qt::Horizontal) if (orientation == Qt::Horizontal)
{ {
switch (section) switch (Column(section))
{ {
case 0: case Column::TimeStamp:
return QString(tr("Timestamp")); return QString(tr("Timestamp"));
break; case Column::FrameId:
case 1:
return QString(tr("ID")); return QString(tr("ID"));
break; case Column::Extended:
case 2:
return QString(tr("Ext")); return QString(tr("Ext"));
break; case Column::Direction:
case 3:
return QString(tr("Dir")); return QString(tr("Dir"));
break; case Column::Bus:
case 4:
return QString(tr("Bus")); return QString(tr("Bus"));
break; case Column::Length:
case 5:
return QString(tr("Len")); return QString(tr("Len"));
break; case Column::Data:
case 6:
return QString(tr("Data")); return QString(tr("Data"));
break;
} }
} }
+47 -52
View File
@@ -11,6 +11,16 @@ CANConnectionModel::~CANConnectionModel()
{ {
} }
enum class Column {
Bus = 0, ///< A sequential number describing the bus
Type = 1, ///< The CAN driver/backend type, e.g. GVRET, peakcan, or socketcan
Port = 2, ///< The CAN hardware port, e.g. can0 for socketcan
Speed = 3, ///< The bus speed in bit/second
ListenOnly = 4, ///< True if the bus is in listen-only mode
SingleWire = 5, ///< True if the bus operates in single-wire mode
Active = 6, ///< True if the bus is activated for sending and receiving
Status = 7 ///< The bus status as text message
};
QVariant CANConnectionModel::headerData(int section, Qt::Orientation orientation, int role) const QVariant CANConnectionModel::headerData(int section, Qt::Orientation orientation, int role) const
{ {
@@ -19,32 +29,24 @@ QVariant CANConnectionModel::headerData(int section, Qt::Orientation orientation
if (orientation == Qt::Horizontal) if (orientation == Qt::Horizontal)
{ {
switch (section) switch (Column(section))
{ {
case 0: case Column::Bus:
return QString(tr("Bus")); return QString(tr("Bus"));
break; case Column::Type:
case 1:
return QString(tr("Type")); return QString(tr("Type"));
break; case Column::Port:
case 2:
return QString(tr("Port")); return QString(tr("Port"));
break; case Column::Speed:
case 3:
return QString(tr("Speed")); return QString(tr("Speed"));
break; case Column::ListenOnly:
case 4:
return QString(tr("Listen Only")); return QString(tr("Listen Only"));
break; case Column::SingleWire:
case 5:
return QString(tr("Single Wire")); return QString(tr("Single Wire"));
break; case Column::Active:
case 6:
return QString(tr("Active")); return QString(tr("Active"));
break; case Column::Status:
case 7:
return QString(tr("Status")); return QString(tr("Status"));
break;
} }
} }
@@ -90,23 +92,19 @@ Qt::ItemFlags CANConnectionModel::flags(const QModelIndex &index) const
bool editParams = false; bool editParams = false;
if (conn_p->getType() == CANCon::GVRET_SERIAL) editParams = true; if (conn_p->getType() == CANCon::GVRET_SERIAL) editParams = true;
switch (index.column()) switch (Column(index.column()))
{ {
case 3: //speed case Column::Speed:
if (editParams) return Qt::ItemFlag::ItemIsEditable | Qt::ItemFlag::ItemIsEnabled; if (editParams) return Qt::ItemFlag::ItemIsEditable | Qt::ItemFlag::ItemIsEnabled;
else return Qt::ItemFlag::NoItemFlags; return Qt::ItemFlag::NoItemFlags;
break; case Column::ListenOnly:
case 4: //listen only case Column::SingleWire:
case 5: //single wire
if (editParams) return Qt::ItemFlag::ItemIsEditable | Qt::ItemFlag::ItemIsEnabled | Qt::ItemFlag::ItemIsUserCheckable; if (editParams) return Qt::ItemFlag::ItemIsEditable | Qt::ItemFlag::ItemIsEnabled | Qt::ItemFlag::ItemIsUserCheckable;
else return Qt::ItemFlag::NoItemFlags; return Qt::ItemFlag::NoItemFlags;
break; case Column::Active:
case 6: //enabled
return Qt::ItemFlag::ItemIsEditable | Qt::ItemFlag::ItemIsEnabled | Qt::ItemFlag::ItemIsUserCheckable; return Qt::ItemFlag::ItemIsEditable | Qt::ItemFlag::ItemIsEnabled | Qt::ItemFlag::ItemIsUserCheckable;
break;
default: default:
return Qt::ItemFlag::ItemIsEnabled; return Qt::ItemFlag::ItemIsEnabled;
break;
} }
} }
@@ -122,20 +120,21 @@ bool CANConnectionModel::setData(const QModelIndex &index, const QVariant &value
ret = conn_p->getBusSettings(busId, bus); ret = conn_p->getBusSettings(busId, bus);
if (!ret) return false; if (!ret) return false;
switch (index.column()) switch (Column(index.column()))
{ {
case 3: //speed case Column::Speed:
bus.speed = value.toInt(); bus.speed = value.toInt();
break; break;
case 4: //listen only case Column::ListenOnly:
bus.listenOnly = value.toBool(); bus.listenOnly = value.toBool();
break; break;
case 5: //single wire case Column::SingleWire:
bus.singleWire = value.toBool(); bus.singleWire = value.toBool();
break; break;
case 6: //active case Column::Active:
bus.active = value.toBool(); bus.active = value.toBool();
break; break;
default: {}
} }
conn_p->setBusSettings(busId, bus); conn_p->setBusSettings(busId, bus);
return true; return true;
@@ -157,15 +156,14 @@ QVariant CANConnectionModel::data(const QModelIndex &index, int role) const
//qDebug() << "ConnP: " << conn_p << " ret " << ret; //qDebug() << "ConnP: " << conn_p << " ret " << ret;
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole) {
switch (index.column()) switch (Column(index.column()))
{ {
case 0: //bus case Column::Bus:
//return QString::number(busId); //return QString::number(busId);
return QString::number(index.row()); return QString::number(index.row());
break; case Column::Type:
case 1: //type
if (conn_p) if (conn_p)
switch (conn_p->getType()) { switch (conn_p->getType()) {
case CANCon::KVASER: return "KVASER"; case CANCon::KVASER: return "KVASER";
@@ -175,38 +173,35 @@ QVariant CANConnectionModel::data(const QModelIndex &index, int role) const
} }
else qDebug() << "Tried to show connection type but connection was NULL"; else qDebug() << "Tried to show connection type but connection was NULL";
break; break;
case 2: //port case Column::Port:
if (conn_p) return conn_p->getPort(); if (conn_p) return conn_p->getPort();
else qDebug() << "Tried to show connection port but connection was NULL"; else qDebug() << "Tried to show connection port but connection was NULL";
break; break;
case 3: //speed case Column::Speed:
if(!ret) return QVariant(); if(!ret) return QVariant();
if (!isSocketCAN) return QString::number(bus.speed); if (!isSocketCAN) return QString::number(bus.speed);
else return QString("N/A"); else return QString("N/A");
case 4: //Listen Only case Column::ListenOnly:
return QVariant(); return QVariant();
case 5: //Single Wire case Column::SingleWire:
return QVariant(); return QVariant();
case 6: //Status case Column::Active:
return QVariant(); return QVariant();
case 7: //Active case Column::Status:
return (conn_p->getStatus()==CANCon::CONNECTED) ? "Connected" : "Not Connected"; return (conn_p->getStatus()==CANCon::CONNECTED) ? "Connected" : "Not Connected";
default: {}
} }
} }
if (role == Qt::CheckStateRole) if (role == Qt::CheckStateRole)
{ {
switch (index.column()) switch (Column(index.column()))
{ {
case 4: case Column::ListenOnly:
return (bus.listenOnly) ? Qt::Checked : Qt::Unchecked; return (bus.listenOnly) ? Qt::Checked : Qt::Unchecked;
break; case Column::SingleWire:
case 5:
return (bus.singleWire) ? Qt::Checked : Qt::Unchecked; return (bus.singleWire) ? Qt::Checked : Qt::Unchecked;
break; case Column::Active:
case 6:
return (bus.active) ? Qt::Checked : Qt::Unchecked; return (bus.active) ? Qt::Checked : Qt::Unchecked;
break; default: {}
} }
} }