#include "measurementmodel.h" #include "../unit.h" #include MeasurementModel::MeasurementModel(Calibration *cal, std::vector measurements) : QAbstractTableModel(), cal(cal), measurements(measurements) { } int MeasurementModel::rowCount(const QModelIndex &) const { return measurements.size(); } int MeasurementModel::columnCount(const QModelIndex &) const { return ColIndexLast; } QVariant MeasurementModel::data(const QModelIndex &index, int role) const { auto info = cal->getMeasurementInfo(measurements[index.row()]); if(role == Qt::DisplayRole) { switch(index.column()) { case ColIndexName: return info.name; break; case ColIndexDescription: return info.prerequisites; break; case ColIndexData: if(info.points > 0) { QString data = QString::number(info.points); data.append(" points from "); data.append(Unit::ToString(info.fmin, "Hz", " kMG")); data.append(" to "); data.append(Unit::ToString(info.fmax, "Hz", " kMG")); return data; } else { return "Not available"; } break; case ColIndexDate: return info.timestamp.toString("dd.MM.yyyy hh:mm:ss"); break; } } else if(role == Qt::SizeHintRole) { switch(index.column()) { case ColIndexName: return 200; break; case ColIndexDescription: return 500; break; case ColIndexData: return 300; break; case ColIndexDate: return 300; break; default: return QVariant(); break; } } return QVariant(); } QVariant MeasurementModel::headerData(int section, Qt::Orientation orientation, int role) const { if(orientation == Qt::Horizontal && role == Qt::DisplayRole) { switch(section) { case ColIndexName: return "Type"; break; case ColIndexDescription: return "Prerequisites"; break; case ColIndexData: return "Statistics"; break; case ColIndexDate: return "Timestamp"; break; default: return QVariant(); break; } } else { return QVariant(); } } void MeasurementModel::measurementUpdated(Calibration::Measurement m) { // find correct index in vector auto it = std::find(measurements.begin(), measurements.end(), m); if(it != measurements.end()) { int row = it - measurements.begin(); emit dataChanged(index(row, 0), index(row, ColIndexLast - 1)); } }