CustusX  18.04
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 "cxEnumConverter.h"
18 #include "cxStateService.h"
19 #include "cxTrackingService.h"
20 #include "cxSelectionGroupBox.h"
21 #include "cxToolListWidget.h"
22 #include "cxTrackerConfiguration.h"
23 #include "cxStringProperty.h"
24 #include "cxHelperWidgets.h"
25 #include "cxHelperWidgets.h"
26 #include "cxLogger.h"
27 
28 namespace cx
29 {
30 
32  QGroupBox(parent),
33  mTrackingService(trackingService)
34 {
35  this->setTitle("Available tools");
36 
37  this->createAppSelector();
38 
39  mToolListWidget = new FilteringToolListWidget(trackingService, NULL);
40  connect(mToolListWidget, SIGNAL(toolSelected(QString)), this, SIGNAL(toolSelected(QString)));
41 
42  QVBoxLayout* layout = new QVBoxLayout(this);
43 
44  layout->addWidget(sscCreateDataWidget(this, mAppSelector));
45  layout->addWidget(mToolListWidget);
46 }
47 
48 void ToolFilterGroupBox::createAppSelector()
49 {
50  QString defaultValue = "all";
51  TrackerConfigurationPtr config = mTrackingService->getConfiguration();
52  QStringList range = config->getAllApplications();
53  range.prepend("all");
54  mAppSelector = StringProperty::initialize("applications", "Application",
55  "Display tools for a given applications",
56  defaultValue,
57  range,
58  QDomNode());
59  connect(mAppSelector.get(), SIGNAL(changed()), this, SLOT(filterSlot()));
60 }
61 
63 {}
64 
66 {
67  if (mTrackingSystemSelector)
68  disconnect(mTrackingSystemSelector.get(), SIGNAL(changed()), this, SLOT(filterSlot()));
69 
70  mTrackingSystemSelector = selector;
71 
72  if (mTrackingSystemSelector)
73  connect(mTrackingSystemSelector.get(), SIGNAL(changed()), this, SLOT(filterSlot()));
74 
75  this->filterSlot();
76 }
77 
79 {
80  TrackerConfigurationPtr config = mTrackingService->getConfiguration();
81  QStringList range = config->getAllApplications();
82  for (int i=0; i<range.size(); ++i)
83  {
84  if (val.contains(range[i], Qt::CaseInsensitive))
85  mAppSelector->setValue(range[i]);
86  }
87 }
88 
89 void ToolFilterGroupBox::filterSlot()
90 {
91  QStringList applicationFilter;
92  if (mAppSelector->getValue().contains("all", Qt::CaseInsensitive))
93  {
94  TrackerConfigurationPtr config = mTrackingService->getConfiguration();
95  applicationFilter = config->getAllApplications();
96  applicationFilter << "all";
97  }
98  else
99  applicationFilter = QStringList() << mAppSelector->getValue();
100  QStringList trackingSystemFilter = QStringList() << mTrackingSystemSelector->getValue();
101 
102  mToolListWidget->filterSlot(applicationFilter, trackingSystemFilter);
103 }
104 
105 }//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.