99 lines
2.5 KiB
C++
99 lines
2.5 KiB
C++
|
#include "widgetmodel.h"
|
||
|
#include "qmetaobject.h"
|
||
|
|
||
|
WidgetModel::WidgetModel(QObject *parent)
|
||
|
: QAbstractItemModel(parent)
|
||
|
, widgets_(DmxWidget::availableWidgets())
|
||
|
{
|
||
|
}
|
||
|
|
||
|
QVariant WidgetModel::headerData(int section, Qt::Orientation orientation, int role) const
|
||
|
{
|
||
|
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
|
||
|
switch (static_cast<Column>(section)) {
|
||
|
case PortName:
|
||
|
return tr("Port");
|
||
|
case Manufacturer:
|
||
|
return tr("Manufacturer");
|
||
|
case Description:
|
||
|
return tr("Description");
|
||
|
case SerialNumber:
|
||
|
return tr("Serial");
|
||
|
case FirmwareVersion:
|
||
|
return tr("Firmware");
|
||
|
case OperatingMode:
|
||
|
return tr("Mode");
|
||
|
default:
|
||
|
return QVariant();
|
||
|
}
|
||
|
}
|
||
|
return QVariant();
|
||
|
}
|
||
|
|
||
|
QModelIndex WidgetModel::index(int row, int column, const QModelIndex &parent) const
|
||
|
{
|
||
|
if (parent.isValid() || row >= widgets_.size())
|
||
|
return QModelIndex();
|
||
|
|
||
|
return createIndex(row, column, widgets_.at(row).get());
|
||
|
}
|
||
|
|
||
|
QModelIndex WidgetModel::parent(const QModelIndex &index) const
|
||
|
{
|
||
|
Q_UNUSED(index)
|
||
|
return QModelIndex();
|
||
|
}
|
||
|
|
||
|
int WidgetModel::rowCount(const QModelIndex &parent) const
|
||
|
{
|
||
|
if (parent.isValid())
|
||
|
return 0;
|
||
|
|
||
|
return widgets_.size();
|
||
|
}
|
||
|
|
||
|
int WidgetModel::columnCount(const QModelIndex &parent) const
|
||
|
{
|
||
|
Q_UNUSED(parent);
|
||
|
return QMetaEnum::fromType<Column>().keyCount();
|
||
|
}
|
||
|
|
||
|
QVariant WidgetModel::data(const QModelIndex &index, int role) const
|
||
|
{
|
||
|
if (!index.isValid())
|
||
|
return QVariant();
|
||
|
|
||
|
switch (role) {
|
||
|
case Qt::DisplayRole:
|
||
|
{
|
||
|
auto wdgt = static_cast<DmxWidget*>(index.internalPointer());
|
||
|
auto info = wdgt->portInfo();
|
||
|
switch (static_cast<Column>(index.column()))
|
||
|
{
|
||
|
case PortName:
|
||
|
return info.portName();
|
||
|
case Manufacturer:
|
||
|
return info.manufacturer();
|
||
|
case Description:
|
||
|
return info.description();
|
||
|
case SerialNumber:
|
||
|
return wdgt->serialNumber();
|
||
|
case FirmwareVersion:
|
||
|
return QString::number(wdgt->firmwareVersion() >> 8)
|
||
|
+ "."
|
||
|
+ QString::number(wdgt->firmwareVersion() & 0xff);
|
||
|
case OperatingMode:
|
||
|
return "";
|
||
|
default:
|
||
|
return QVariant();
|
||
|
}
|
||
|
}
|
||
|
case Qt::FontRole:
|
||
|
return QVariant();
|
||
|
case Qt::EditRole:
|
||
|
return QVariant();
|
||
|
default:
|
||
|
return QVariant();
|
||
|
}
|
||
|
}
|