33 ui->treeWidget->setColumnCount(4);
34 QTreeWidgetItem* head =
ui->treeWidget->headerItem();
39 head->setToolTip(
idxName,
"The control device's name");
40 head->setToolTip(
idxTags,
"The control device's tags");
41 head->setToolTip(
idxValType,
"The sensor value's' type");
42 head->setToolTip(
idxValue,
"The sensor value");
43 ui->treeWidget->setColumnWidth(
idxName, 150);
44 ui->treeWidget->setColumnWidth(
idxTags, 100);
56 std::unique_lock<std::recursive_timed_mutex> guard{
mutex, std::defer_lock};
57 if (!guard.try_lock_for(std::chrono::microseconds(100)))
61 for (
const auto&
status : allStatus)
63 if (statusUpdates[
status.deviceName].timestampUSec <
status.timestampUSec)
68 QMetaObject::invokeMethod(
this,
"updateContent", Qt::QueuedConnection);
78 statusUpdates.clear();
85 for (
const auto& pair : statusUpdates)
87 if (!entries.count(pair.second.deviceName))
89 add(
robotUnit->getSensorDeviceDescription(pair.second.deviceName));
91 entries.at(pair.second.deviceName)->update(pair.second);
93 statusUpdates.clear();
99 auto temp =
robotUnit->getSensorDeviceDescriptions();
101 std::unique_lock<std::recursive_timed_mutex> guard{
mutex};
102 resetData = std::move(temp);
109 if (resetData.empty())
113 add(resetData.back());
114 resetData.pop_back();
119 SensorDevicesWidget::add(
const SensorDeviceDescription& desc)
121 std::unique_lock<std::recursive_timed_mutex> guard{
mutex};
122 if (!entries.count(desc.deviceName))
124 entries[desc.deviceName] =
new SensorDevicesWidgetEntry(*
this, *(
ui->treeWidget), desc);
129 QTreeWidget& treeWidget,
130 const SensorDeviceDescription& desc) :
133 header =
new QTreeWidgetItem;
134 treeWidget.addTopLevelItem(header);
138 QCheckBox* boxTags =
new QCheckBox{QString::number(desc.tags.size()) +
" Tags"};
141 boxTags->setChecked(
false);
142 connect(boxTags, SIGNAL(clicked(
bool)),
this, SLOT(hideTagList(
bool)));
143 for (
const auto& tag : desc.tags)
145 QTreeWidgetItem* child =
new QTreeWidgetItem{{QString::fromStdString(tag)}};
146 treeWidget.addTopLevelItem(child);
147 tags.emplace_back(child);
151 QString::fromStdString(desc.sensorValueType));
152 value =
new VariantWidget;
153 QTreeWidgetItem* valchild =
new QTreeWidgetItem;
154 header->addChild(valchild);
162 value->layout()->setContentsMargins(0, 0, 0, 0);
174 for (
const auto& tagit : tags)
197 header->setHidden(!vis);
201 SensorDevicesWidgetEntry::hideTagList(
bool hide)
203 for (QTreeWidgetItem* tag : tags)
205 tag->setHidden(hide);