25 , m_DeviceToWidgetIndexMap()
54 m_Controls =
new Ui::QmitkTrackingDeviceConfigurationWidgetControls;
69 const std::string currentDevice = this->GetCurrentDeviceName();
72 m_Controls->m_TrackingSystemWidget->setCurrentIndex(m_DeviceToWidgetIndexMap[currentDevice]);
94 for (
auto& item : m_DeviceToWidgetIndexMap)
96 m_Controls->m_TrackingSystemWidget->removeWidget(
m_Controls->m_TrackingSystemWidget->widget(item.second));
97 MITK_INFO <<
"removing widget for device '" << item.first <<
"'";
102 m_DeviceToWidgetIndexMap.clear();
105 us::ModuleContext* context = us::GetModuleContext();
106 std::vector<us::ServiceReference<mitk::TrackingDeviceTypeCollection> > deviceRefs =
109 if (deviceRefs.empty())
111 MITK_ERROR <<
"No tracking device type service found!";
116 std::vector<us::ServiceReference<mitk::TrackingDeviceWidgetCollection> > widgetRefs =
119 if (widgetRefs.empty())
121 MITK_ERROR <<
"No tracking device configuration widget service found!";
125 const us::ServiceReference<mitk::TrackingDeviceTypeCollection>& deviceServiceReference = deviceRefs.front();
126 const us::ServiceReference<mitk::TrackingDeviceWidgetCollection>& widgetServiceReference = widgetRefs.front();
137 if (
m_Controls->m_TrackingDeviceChooser->findText(QString::fromStdString(name)) == -1)
139 m_Controls->m_TrackingDeviceChooser->addItem(QString::fromStdString(name));
140 QWidget* current = deviceWidgetCollection->GetTrackingDeviceWidgetClone(name);
141 if (current ==
nullptr)
143 MITK_WARN <<
"No widget for tracking device type " << name <<
" available. Please implement and register it!";
144 current =
new QWidget();
147 m_DeviceToWidgetIndexMap[name] =
m_Controls->m_TrackingSystemWidget->addWidget(current);
151 if (!m_DeviceToWidgetIndexMap.empty())
153 m_Controls->m_TrackingDeviceChooser->setCurrentIndex(0);
154 m_Controls->m_TrackingSystemWidget->setCurrentIndex(0);
157 context->UngetService(deviceServiceReference);
158 context->UngetService(widgetServiceReference);
166 if (currentWidget ==
nullptr)
172 currentWidget->repaint();
179 if (currentWidget ==
nullptr)
185 currentWidget->repaint();
202 std::string
id =
"org.mitk.modules.igt.ui.trackingdeviceconfigurationwidget";
204 std::string selectedDevice = this->GetCurrentDeviceName();
208 for (
int index = 0; index <
m_Controls->m_TrackingSystemWidget->count(); index++)
212 if (widget !=
nullptr)
218 if (this->GetPersistenceService())
220 mitk::PropertyList::Pointer propList = this->GetPersistenceService()->GetPropertyList(
id);
221 propList->Set(
"SelectedDevice", selectedDevice);
226 settings.beginGroup(QString::fromStdString(
id));
227 settings.setValue(
"trackingDeviceChooser", QVariant(QString::fromStdString(selectedDevice)));
242 for (
int index = 0; index <
m_Controls->m_TrackingSystemWidget->count(); index++)
246 if (widget !=
nullptr)
252 std::string
id =
"org.mitk.modules.igt.ui.trackingdeviceconfigurationwidget";
253 std::string selectedDevice;
254 if (this->GetPersistenceService())
256 mitk::PropertyList::Pointer propList = this->GetPersistenceService()->GetPropertyList(
id);
257 if (propList.IsNull())
259 MITK_ERROR <<
"Property list for this UI (" <<
id <<
") is not available, could not load UI settings!";
return;
262 propList->Get(
"SelectedDevice", selectedDevice);
264 if (selectedDevice.empty())
266 MITK_ERROR <<
"Loaded data from persistence service is invalid (SelectedDevice:" << selectedDevice <<
"): aborted to restore data!";
270 MITK_INFO <<
"Successfully restored UI settings";
276 settings.beginGroup(QString::fromStdString(
id));
278 selectedDevice = settings.value(
"trackingDeviceChooser",
"").toString().toStdString();
286 const auto& deviceIterator = m_DeviceToWidgetIndexMap.find(selectedDevice);
288 if (deviceIterator != m_DeviceToWidgetIndexMap.end())
303 const int index =
m_Controls->m_TrackingDeviceChooser->findText(QString::fromStdString(selectedDevice));
307 m_Controls->m_TrackingDeviceChooser->setCurrentIndex(index);
311 MITK_ERROR <<
"Failed to load UI setting for tracking device configuration";
315 m_Controls->m_TrackingSystemWidget->setCurrentIndex(m_DeviceToWidgetIndexMap[selectedDevice]);
318std::string QmitkTrackingDeviceConfigurationWidget::GetCurrentDeviceName(
void)
const
320 return m_Controls->m_TrackingDeviceChooser->currentText().toStdString();
325 const auto& deviceIterator = m_DeviceToWidgetIndexMap.find(deviceName);
327 if (deviceIterator != m_DeviceToWidgetIndexMap.end())
329 QWidget* widget =
m_Controls->m_TrackingSystemWidget->widget(deviceIterator->second);
339 this->GetWidget(this->GetCurrentDeviceName())->
OnConnected(_success);
343 this->GetWidget(this->GetCurrentDeviceName())->
OnDisconnected(_success);
348 this->GetWidget(this->GetCurrentDeviceName())->
OnStartTracking(_success);
352 this->GetWidget(this->GetCurrentDeviceName())->
OnStopTracking(_success);
This class is a collection for information of all Tracking Device Types (derived from abstract Tracki...
std::vector< std::string > GetTrackingDeviceTypeNames()