Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkXnatExperimentWidget.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
14 
15 #include <ctkXnatExperiment.h>
16 
17 #include <QCompleter>
18 
19 QmitkXnatExperimentWidget::QmitkXnatExperimentWidget(QWidget *parent) : QWidget(parent)
20 {
21  m_Mode = INFO;
22  Init();
23 }
24 
25 QmitkXnatExperimentWidget::QmitkXnatExperimentWidget(Mode mode, QWidget *parent) : QWidget(parent), m_Mode(mode)
26 {
27  Init();
28 }
29 
31 {
32 }
33 
34 void QmitkXnatExperimentWidget::Init()
35 {
36  // Create GUI widgets from the Qt Designer's .ui file
37  m_Controls.setupUi(this);
38 
39  if (m_Mode == Mode::INFO)
40  {
41  // make not needed row invisible
42  m_Controls.labelLabel->setText("ID:");
43  m_Controls.mandatoryLabel->setVisible(false);
44  }
45  if (m_Mode == Mode::CREATE)
46  {
47  // change modality to xsiType
48  m_Controls.modalityLabel->setText("Type*:");
49 
50  // create list of all experiment session types
51  QStringList xsiTypeList;
52  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_CR_SESSION;
53  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_CT_SESSION;
54  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_DX_SESSION;
55  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_DX3DCRANIOFACIAL_SESSION;
56  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_ECG_SESSION;
57  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_EEG_SESSION;
58  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_EPS_SESSION;
59  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_ES_SESSION;
60  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_ESV_SESSION;
61  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_GM_SESSION;
62  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_GMV_SESSION;
63  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_HD_SESSION;
64  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_IO_SESSION;
65  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_MEG_SESSION;
66  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_MG_SESSION;
67  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_MR_SESSION;
68  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_OP_SESSION;
69  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_OPT_SESSION;
70  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_OTHER_DICOM_SESSION;
71  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_PET_SESSION;
72  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_RF_SESSION;
73  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_RT_SESSION;
74  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_SM_SESSION;
75  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_US_SESSION;
76  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_XA_SESSION;
77  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_XA3D_SESSION;
78  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_XC_SESSION;
79  xsiTypeList << ctkXnatDefaultSchemaTypes::XSI_XCV_SESSION;
80 
81  // create completer for experiment sessions
82  QCompleter *completer = new QCompleter(xsiTypeList, this);
83  m_Controls.modalityLineEdit->setCompleter(completer);
84  m_Controls.modalityLineEdit->setPlaceholderText("Start with \"xnat::\"");
85  }
86 }
87 
88 void QmitkXnatExperimentWidget::SetExperiment(ctkXnatExperiment *experiment)
89 {
90  m_Experiment = experiment;
91 
92  // Set the UI labels
93  if (m_Experiment->parent())
94  {
95  m_Controls.breadcrumbLabel->setText("Project:" + m_Experiment->parent()->parent()->property("name") +
96  " > Subject:" + m_Experiment->parent()->property("label"));
97  }
98  m_Controls.labelLineEdit->setText(m_Experiment->property("label"));
99  m_Controls.modalityLineEdit->setText(m_Experiment->property("modality"));
100  m_Controls.dateLineEdit->setText(m_Experiment->property("date"));
101  m_Controls.timeLineEdit->setText(m_Experiment->property("time"));
102  m_Controls.scannerLineEdit->setText(m_Experiment->property("scanner"));
103 }
104 
106 {
107  if (m_Mode == Mode::CREATE)
108  {
109  if (!m_Controls.labelLineEdit->text().isEmpty())
110  {
111  m_Experiment->setProperty("label", m_Controls.labelLineEdit->text());
112  }
113  if (!m_Controls.modalityLineEdit->text().isEmpty())
114  {
115  m_Experiment->setProperty("xsiType", m_Controls.modalityLineEdit->text());
116  }
117  if (!m_Controls.dateLineEdit->text().isEmpty())
118  {
119  m_Experiment->setProperty("date", m_Controls.dateLineEdit->text());
120  }
121  if (!m_Controls.timeLineEdit->text().isEmpty())
122  {
123  m_Experiment->setProperty("time", m_Controls.dateLineEdit->text());
124  }
125  if (!m_Controls.scannerLineEdit->text().isEmpty())
126  {
127  m_Experiment->setProperty("scanner", m_Controls.scannerLineEdit->text());
128  }
129  }
130 
131  return m_Experiment;
132 }
ctkXnatExperiment * GetExperiment() const
void SetExperiment(ctkXnatExperiment *experiment)
Ui::QmitkXnatExperimentWidgetControls m_Controls
QmitkXnatExperimentWidget(QWidget *parent=nullptr)