CustusX  2023.01.05-dev+develop.0da12
An IGT application
cxToolFilterWidget.cpp
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
12 #include <cxToolFilterWidget.h>
13 
14 #include <QVBoxLayout>
15 #include <QHBoxLayout>
16 #include <QLabel>
17 #include "cxStateService.h"
18 #include "cxTrackingService.h"
19 #include "cxSelectionGroupBox.h"
20 #include "cxToolListWidget.h"
21 #include "cxTrackerConfiguration.h"
22 #include "cxStringProperty.h"
23 #include "cxHelperWidgets.h"
24 #include "cxHelperWidgets.h"
25 #include "cxLogger.h"
26 
27 namespace cx
28 {
29 
31  QGroupBox(parent),
32  mTrackingService(trackingService)
33 {
34  this->setTitle("Available tools");
35 
36  this->createAppSelector();
37 
38  mToolListWidget = new FilteringToolListWidget(trackingService, NULL);
39  connect(mToolListWidget, SIGNAL(toolSelected(QString)), this, SIGNAL(toolSelected(QString)));
40 
41  QVBoxLayout* layout = new QVBoxLayout(this);
42 
43  layout->addWidget(sscCreateDataWidget(this, mAppSelector));
44  layout->addWidget(mToolListWidget);
45 }
46 
47 void ToolFilterGroupBox::createAppSelector()
48 {
49  QString defaultValue = "all";
50  TrackerConfigurationPtr config = mTrackingService->getConfiguration();
51  QStringList range = config->getAllApplications();
52  range.prepend("all");
53  mAppSelector = StringProperty::initialize("applications", "Application",
54  "Display tools for a given applications",
55  defaultValue,
56  range,
57  QDomNode());
58  connect(mAppSelector.get(), SIGNAL(changed()), this, SLOT(filterSlot()));
59 }
60 
62 {}
63 
65 {
66  if (mTrackingSystemSelector)
67  disconnect(mTrackingSystemSelector.get(), SIGNAL(changed()), this, SLOT(filterSlot()));
68 
69  mTrackingSystemSelector = selector;
70 
71  if (mTrackingSystemSelector)
72  connect(mTrackingSystemSelector.get(), SIGNAL(changed()), this, SLOT(filterSlot()));
73 
74  this->filterSlot();
75 }
76 
78 {
79  TrackerConfigurationPtr config = mTrackingService->getConfiguration();
80  QStringList range = config->getAllApplications();
81  for (int i=0; i<range.size(); ++i)
82  {
83  if (val.contains(range[i], Qt::CaseInsensitive))
84  mAppSelector->setValue(range[i]);
85  }
86 }
87 
88 void ToolFilterGroupBox::filterSlot()
89 {
90  QStringList applicationFilter;
91  if (mAppSelector->getValue().contains("all", Qt::CaseInsensitive))
92  {
93  TrackerConfigurationPtr config = mTrackingService->getConfiguration();
94  applicationFilter = config->getAllApplications();
95  applicationFilter << "all";
96  }
97  else
98  applicationFilter = QStringList() << mAppSelector->getValue();
99  QStringList trackingSystemFilter = QStringList() << mTrackingSystemSelector->getValue();
100 
101  mToolListWidget->filterSlot(applicationFilter, trackingSystemFilter);
102 }
103 
104 }//namespace cx
void setClinicalApplicationSlot(QString val)
boost::shared_ptr< class TrackingService > TrackingServicePtr
ToolFilterGroupBox(TrackingServicePtr trackingService, QWidget *parent=NULL)
boost::shared_ptr< class TrackerConfiguration > TrackerConfigurationPtr
void setTrackingSystemSelector(StringPropertyBasePtr selector)
boost::shared_ptr< class StringPropertyBase > StringPropertyBasePtr
Helper class for tool list display.
void toolSelected(QString absoluteFilePath)
static StringPropertyPtr initialize(const QString &uid, QString name, QString help, QString value, QStringList range, QDomNode root=QDomNode())
QWidget * sscCreateDataWidget(QWidget *parent, PropertyPtr data, QGridLayout *gridLayout, int row)
Create a widget capable of displaying the input data.
void filterSlot(QStringList applicationsFilter, QStringList trackingsystemsFilter)
Namespace for all CustusX production code.