30 #include <QMetaObject>
31 #include <QTableWidget>
32 #include <QTableWidgetItem>
39 updateTimer.setInterval(100);
40 updateTimer.setSingleShot(
false);
50 visualizerName = settings->value(
"visualizerName",
"").toString().toStdString();
56 settings->setValue(
"visualizerName", QString::fromStdString(visualizerName));
67 return qobject_cast<PointCloudVisualizationConfigDialog*>(configDialog);
74 configDialog->pointCloudVisualizationProxyFinder->getSelectedProxyName().toStdString();
86 visualizer = getProxy<visionx::PointCloudVisualizationInterfacePrx>(visualizerName);
89 ARMARX_ERROR <<
"Could not obtain point cloud visualizer proxy";
97 QMetaObject::invokeMethod(&updateTimer,
"start", Qt::QueuedConnection);
103 QMetaObject::invokeMethod(&updateTimer,
"stop", Qt::QueuedConnection);
111 providers = visualizer->getAvailableProviders();
113 std::sort(providers.begin(), providers.end());
122 static_cast<unsigned int>(widget.tableWidgetProviders->rowCount()) != providers.size();
125 for (
unsigned int i = 0; i < providers.size(); i++)
127 if (
static_cast<QCheckBox*
>(
128 widget.tableWidgetProviders->cellWidget(
static_cast<int>(i), 0))
130 .toStdString() != providers[i].name)
139 rebuildProviderTable();
142 for (
unsigned int i = 0; i < providers.size(); i++)
144 auto info = visualizer->getCurrentPointCloudVisualizationInfo(providers[i].name);
145 static_cast<QCheckBox*
>(widget.tableWidgetProviders->cellWidget(
static_cast<int>(i), 0))
146 ->setCheckState(info.enabled ? Qt::Checked : Qt::Unchecked);
148 if (providers[i].type == visionx::ePoints)
152 else if (providers[i].type == visionx::eColoredPoints ||
153 providers[i].type == visionx::eColoredOrientedPoints)
155 static_cast<QComboBox*
>(
156 widget.tableWidgetProviders->cellWidget(
static_cast<int>(i), 1))
157 ->setCurrentIndex(info.type == visionx::eColoredPoints ? 1 : 0);
159 else if (providers[i].type == visionx::eLabeledPoints)
161 static_cast<QComboBox*
>(
162 widget.tableWidgetProviders->cellWidget(
static_cast<int>(i), 1))
163 ->setCurrentIndex(info.type == visionx::eLabeledPoints ? 1 : 0);
165 else if (providers[i].type == visionx::eColoredLabeledPoints)
167 static_cast<QComboBox*
>(
168 widget.tableWidgetProviders->cellWidget(
static_cast<int>(i), 1))
169 ->setCurrentIndex(info.type == visionx::eLabeledPoints
171 : (info.type == visionx::eColoredPoints ? 1 : 0));
181 PointCloudVisualizationWidgetController::rebuildProviderTable()
185 widget.tableWidgetProviders->clear();
187 widget.tableWidgetProviders->setColumnCount(2);
188 widget.tableWidgetProviders->setRowCount(
static_cast<int>(providers.size()));
190 for (
unsigned int i = 0; i < providers.size(); i++)
192 QCheckBox* cb =
new QCheckBox(QString::fromStdString(providers[i].name));
194 widget.tableWidgetProviders->setCellWidget(
static_cast<int>(i), 0, cb);
196 if (providers[i].type == visionx::ePoints)
198 widget.tableWidgetProviders->setItem(
199 static_cast<int>(i), 1,
new QTableWidgetItem(
"Plain"));
201 else if (providers[i].type == visionx::eColoredPoints ||
202 providers[i].type == visionx::eColoredOrientedPoints)
204 QComboBox* combo =
new QComboBox();
205 combo->addItem(
"Plain");
206 combo->addItem(
"Colors");
207 combo->setCurrentIndex(1);
209 SIGNAL(currentIndexChanged(
int)),
212 widget.tableWidgetProviders->setCellWidget(
static_cast<int>(i), 1, combo);
214 else if (providers[i].type == visionx::eLabeledPoints)
216 QComboBox* combo =
new QComboBox();
217 combo->addItem(
"Plain");
218 combo->addItem(
"Labels");
219 combo->setCurrentIndex(1);
221 SIGNAL(currentIndexChanged(
int)),
224 widget.tableWidgetProviders->setCellWidget(
static_cast<int>(i), 1, combo);
226 else if (providers[i].type == visionx::eColoredLabeledPoints)
228 QComboBox* combo =
new QComboBox();
229 combo->addItem(
"Plain");
230 combo->addItem(
"Colors");
231 combo->addItem(
"Labels");
232 combo->setCurrentIndex(1);
234 SIGNAL(currentIndexChanged(
int)),
237 widget.tableWidgetProviders->setCellWidget(
static_cast<int>(i), 1, combo);
241 cb->setEnabled(
false);
242 widget.tableWidgetProviders->setItem(
243 static_cast<int>(i), 1,
new QTableWidgetItem(
"Unsupported"));
251 for (
unsigned int i = 0; i < providers.size(); i++)
253 visionx::PointContentType type;
256 dynamic_cast<QCheckBox*
>(widget.tableWidgetProviders->cellWidget(i, 0));
258 if (
dynamic_cast<QComboBox*
>(widget.tableWidgetProviders->cellWidget(i, 1)) !=
nullptr)
261 dynamic_cast<QComboBox*
>(widget.tableWidgetProviders->cellWidget(i, 1));
263 if (combo->currentText() ==
"Colors")
265 type = visionx::eColoredPoints;
267 else if (combo->currentText() ==
"Labels")
269 type = visionx::eLabeledPoints;
273 type = visionx::ePoints;
278 type = providers[i].type;
281 visualizer->begin_enablePointCloudVisualization(
282 providers[i].name, type, check->isChecked());