#include "sensorlistwidget.h" #include #include #include SensorListWidget::SensorListWidget(const bool showHidden, QWidget *parent): QTableWidget(parent), showHidden_(showHidden) { setColumnCount(2); setSelectionBehavior(QAbstractItemView::SelectRows); horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); QScroller::grabGesture(this, QScroller::LeftMouseButtonGesture); setAutoScroll(true); setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); setHorizontalHeaderItem(0, new QTableWidgetItem("Sensor")); setHorizontalHeaderItem(1, new QTableWidgetItem("Value")); } SensorListWidget::SensorListWidget(SensorStore& sensorStore, const bool showHidden, QWidget* parent): QTableWidget (parent), showHidden_(showHidden) { sensorsChanged(*(sensorStore.getSensors())); } void SensorListWidget::sensorsChanged(std::vector sensors) { clear(); setHorizontalHeaderItem(0, new QTableWidgetItem("Sensor")); setHorizontalHeaderItem(1, new QTableWidgetItem("Value")); size_t nonHiddenCount = sensors.size(); if(!showHidden_) { nonHiddenCount = 0; for(size_t i = 0; i < sensors.size(); ++i) { if(!sensors[i].hidden) nonHiddenCount++; } } size_t listLen = 0; for(size_t i = 0; i < sensors.size(); ++i) if(showHidden_ || !sensors[i].hidden) ++listLen; setRowCount(static_cast(listLen)); size_t row = 0; for(size_t i = 0; i < sensors.size(); ++i) { if(showHidden_ || !sensors[i].hidden) { QString itemString; itemString.append(QString::number(sensors[i].field)); itemString.append(' '); if(sensors[i].type == Sensor::TYPE_DOOR) { if(static_cast(sensors[i].field)) itemString.append("\"Open\""); else itemString.append("\"Closed\""); } else if(sensors[i].type == Sensor::TYPE_AUDIO_OUTPUT) { if(static_cast(sensors[i].field)) itemString.append("\"Playing\""); else itemString.append("\"Silent\""); } setItem(static_cast(row), 0, new QTableWidgetItem(sensors[i].name + (sensors[i].hidden ? "(H)" : ""))); setItem(static_cast(row), 1, new QTableWidgetItem(itemString)); ++row; } } } void SensorListWidget::setShowHidden(const bool showHidden) { showHidden_=showHidden; }