Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkXnatCreateObjectDialog.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 // XNAT
17 #include <QmitkXnatProjectWidget.h>
18 #include <QmitkXnatSubjectWidget.h>
19 
20 // CTK XNAT Core
21 //#include <ctkXnatProject.h>
22 #include <ctkXnatExperiment.h>
23 #include <ctkXnatSubject.h>
24 
25 // Qt
26 #include <QLineEdit>
27 #include <QMessageBox>
28 #include <QPushButton>
29 
30 // Testing
31 #include <iostream>
32 #include <cstdio>
33 
35  : QDialog(parent), m_Type(type)
36 {
37  switch (m_Type)
38  {
39  // case PROJECT:
40  // m_Object = new ctkXnatProject();
41  // m_Widget = new QmitkXnatProjectWidget(dynamic_cast<ctkXnatProject*>(m_Object));
42  // break;
43  case SUBJECT:
44  m_Object = new ctkXnatSubject();
45  m_Widget = new QmitkXnatSubjectWidget(QmitkXnatSubjectWidget::Mode::CREATE, parent);
46  dynamic_cast<QmitkXnatSubjectWidget *>(m_Widget)->SetSubject(dynamic_cast<ctkXnatSubject *>(m_Object));
47  break;
48  case EXPERIMENT:
49  m_Object = new ctkXnatExperiment();
50  m_Widget = new QmitkXnatExperimentWidget(QmitkXnatExperimentWidget::Mode::CREATE, parent);
51  dynamic_cast<QmitkXnatExperimentWidget *>(m_Widget)->SetExperiment(dynamic_cast<ctkXnatExperiment *>(m_Object));
52  break;
53  default:
54  break;
55  }
56 
57  QList<QLineEdit *> children = m_Widget->findChildren<QLineEdit *>();
58  foreach (QLineEdit *child, children)
59  {
60  child->setReadOnly(false);
61  }
62 
63  QGridLayout *grid = dynamic_cast<QGridLayout *>(m_Widget->layout());
64 
65  QPushButton *btnOk = new QPushButton("Create");
66  QPushButton *btnCancel = new QPushButton("Cancel");
67 
68  QHBoxLayout *hLayout = new QHBoxLayout();
69  hLayout->addWidget(btnOk);
70  hLayout->addWidget(btnCancel);
71 
72  connect(btnOk, SIGNAL(clicked()), this, SLOT(OnAcceptClicked()));
73  connect(btnCancel, SIGNAL(clicked()), this, SLOT(OnCancelClicked()));
74 
75  grid->addLayout(hLayout, grid->rowCount() + 1, 1);
76 
77  // Fill the dialog
78  setLayout(grid);
79 }
80 
82 {
83  delete m_Widget;
84 }
85 
87 {
88  return m_Object;
89 }
90 
92 {
93  // ctkXnatProject* project;
94  ctkXnatSubject *subject;
95  ctkXnatExperiment *experiment;
96 
97  switch (m_Type)
98  {
99  // case PROJECT:
100  // project = dynamic_cast<QmitkXnatProjectWidget*>(m_Widget)->GetProject();
101 
102  // // Check mandatory field
103  // if (project->property("label").isEmpty())
104  // {
105  // QMessageBox msgBox;
106  // msgBox.setIcon(QMessageBox::Warning);
107  // msgBox.setText("Please fill in an ID to create a new project!");
108  // msgBox.exec();
109  // return;
110  // }
111 
112  // m_Object = project;
113  // break;
114 
115  case SUBJECT:
116  subject = dynamic_cast<QmitkXnatSubjectWidget *>(m_Widget)->GetSubject();
117 
118  // Check mandatory field
119  if (subject->property("label").isEmpty())
120  {
121  QMessageBox msgBox;
122  msgBox.setIcon(QMessageBox::Warning);
123  msgBox.setText("Please fill in an ID to create a new subject!");
124  msgBox.exec();
125  return;
126  }
127 
128  m_Object = subject;
129  break;
130 
131  case EXPERIMENT:
132  experiment = dynamic_cast<QmitkXnatExperimentWidget *>(m_Widget)->GetExperiment();
133 
134  // Check mandatory field
135  if (experiment->property("label").isEmpty())
136  {
137  QMessageBox msgBox;
138  msgBox.setIcon(QMessageBox::Warning);
139  msgBox.setText("Please fill in an ID to create a new experiment!");
140  msgBox.exec();
141  return;
142  }
143  else if (experiment->property("xsiType").isEmpty() || experiment->property("xsiType") == "xnat:experimentData")
144  {
145  QMessageBox msgBox;
146  msgBox.setIcon(QMessageBox::Warning);
147  msgBox.setText("Please fill in an XSI Type to create a new experiment!");
148  msgBox.exec();
149  return;
150  }
151 
152  m_Object = experiment;
153  break;
154 
155  default:
156  break;
157  }
158  accept();
159 }
160 
162 {
163  reject();
164 }
QmitkXnatCreateObjectDialog(SpecificType type, QWidget *parent=nullptr)