13 Private(lager::cursor<MultiSensorData> _sensorsData)
22 : QAbstractListModel(parent),
34 return m_d->sensorsData->size();
39 if (!index.isValid())
return QVariant();
41 if (role == Qt::DisplayRole) {
42 return m_d->sensorsData->at(index.row()).first.name();
44 else if (role == Qt::CheckStateRole) {
45 return m_d->sensorsData->at(index.row()).second ? Qt::Checked : Qt::Unchecked;
54 if (role == Qt::CheckStateRole) {
55 const bool checked = (
value.toInt() == Qt::Checked);
58 const int numActiveSensors =
59 std::count_if(sensors.begin(), sensors.end(),
60 std::mem_fn(&SensorData::second));
63 if (checked || numActiveSensors > 1 ) {
64 sensors[index.row()].second = checked;
76 return Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled;
81 if (!index.isValid())
return 0;
82 return m_d->sensorsData->at(index.row()).first.id();
87 const size_t foundIndex =
88 std::distance(
m_d->sensorsData->begin(),
89 std::find_if(
m_d->sensorsData->begin(),
m_d->sensorsData->end(),
91 return sensor.first.id() == id;
94 return foundIndex <
m_d->sensorsData->size() ?
95 index(foundIndex) : QModelIndex();
100 Q_EMIT dataChanged(index(0), index(
rowCount() - 1));
float value(const T *src, size_t ch)
int rowCount(const QModelIndex &parent=QModelIndex()) const override
std::pair< KoID, bool > SensorData
QString getSensorId(const QModelIndex &index)
QScopedPointer< Private > m_d
Qt::ItemFlags flags(const QModelIndex &index) const override
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
void slotSensorModelChanged()
KisMultiSensorsModel(lager::cursor< MultiSensorData > sensorsData, QObject *parent=0)
QModelIndex sensorIndex(const QString &id)
std::vector< SensorData > MultiSensorData
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
~KisMultiSensorsModel() override
Private(lager::cursor< MultiSensorData > _sensorsData)
lager::cursor< MultiSensorData > sensorsData