Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
QmitkSelectXnatUploadDestinationDialog.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 #include "ui_QmitkSelectXnatUploadDestinationDialog.h"
15 
16 #include <ctkXnatObject.h>
17 #include <ctkXnatResource.h>
18 #include <ctkXnatResourceFolder.h>
19 #include <ctkXnatSession.h>
20 
21 #include "QmitkXnatTreeModel.h"
22 
23 #include <QModelIndex>
24 
26  const QStringList &availableResources,
27  QWidget *parent)
28  : QDialog(parent),
29  m_TreeModel(new QmitkXnatTreeModel),
30  m_Url(""),
31  m_ResourceName(""),
32  m_CreateNewFolder(false),
34 {
35  ui->setupUi(this);
36 
37  m_TreeModel->addDataModel(session->dataModel());
38  ui->treeView->setModel(m_TreeModel);
39 
40  connect(ui->cbSelectResources,
41  SIGNAL(currentIndexChanged(const QString &)),
42  this,
43  SLOT(OnResourceSelected(const QString &)));
44  connect(ui->treeView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(OnXnatNodeSelected(const QModelIndex &)));
45  connect(ui->rbSelectResource, SIGNAL(toggled(bool)), this, SLOT(OnSelectResource(bool)));
46  connect(ui->rbSelectFromTreeView, SIGNAL(toggled(bool)), this, SLOT(OnSelectFromTreeView(bool)));
47  connect(ui->leResourceName, SIGNAL(textChanged(const QString &)), this, SLOT(OnResourceEntered(const QString &)));
48  connect(ui->pbCancel, SIGNAL(clicked()), this, SLOT(OnCancel()));
49  connect(ui->pbUpload, SIGNAL(clicked()), this, SLOT(OnUpload()));
50 
51  // Initial Setup
52  ui->pbUpload->setEnabled(false);
53  ui->leResourceName->setVisible(false);
54  ui->treeView->hide();
55 
56  if (availableResources.isEmpty())
57  {
58  ui->rbSelectFromTreeView->setChecked(true);
59  ui->rbSelectResource->setEnabled(false);
60  }
61  else
62  {
63  foreach (QString resourceName, availableResources)
64  {
65  ui->cbSelectResources->addItem(resourceName);
66  }
67  ui->cbSelectResources->addItem("Create new resource folder...");
68  }
69 }
70 
72 {
73  delete ui;
74 }
75 
77 {
78  this->done(QDialog::Rejected);
79 }
80 
82 {
83  this->done(QDialog::Accepted);
84 }
85 
87 {
88  ui->pbUpload->setEnabled(false);
89  ui->cbSelectResources->setVisible(selectResource);
90  ui->leResourceName->setVisible(!selectResource);
91  ui->treeView->setVisible(!selectResource);
92  if (selectResource)
93  ui->cbSelectResources->setCurrentIndex(0);
94 }
95 
97 {
98  ui->pbUpload->setEnabled(false);
99  ui->cbSelectResources->setVisible(!selectFromTreeView);
100  ui->leResourceName->setVisible(!selectFromTreeView);
101  ui->treeView->setVisible(selectFromTreeView);
102 }
103 
105 {
106  m_Url = url;
107 }
108 
110 {
111  if (ui->rbSelectResource->isChecked() && !m_Url.isEmpty() && !m_ResourceName.isEmpty())
112  {
113  ctkXnatObject *selectedXnatObject = m_TreeModel->GetXnatObjectFromUrl(m_Url);
114 
115  ctkXnatResource *resource = new ctkXnatResource();
116  resource->setName(m_ResourceName);
117  resource->setParent(selectedXnatObject);
118  if (!resource->exists())
119  resource->save();
120  return resource;
121  }
122  else
123  {
124  QModelIndex index = ui->treeView->selectionModel()->currentIndex();
125  return m_TreeModel->xnatObject(index);
126  }
127 }
128 
130 {
131  if (resource.isEmpty())
132  ui->pbUpload->setEnabled(false);
133 
134  if (resource != "Create new resource folder...")
135  {
136  ui->pbUpload->setEnabled(true);
137  m_ResourceName = resource;
138  ui->leResourceName->hide();
139  }
140  else if (resource == "Create new resource folder...")
141  {
142  ui->pbUpload->setEnabled(false);
143  ui->leResourceName->show();
144  }
145 }
146 
148 {
149  m_CreateNewFolder = !resourceEntered.isEmpty();
150  ui->pbUpload->setEnabled(m_CreateNewFolder);
151  m_ResourceName = resourceEntered;
152 }
153 
155 {
156  if (!index.isValid())
157  return;
158 
159  ctkXnatObject *selectedObject = m_TreeModel->xnatObject(index);
160  ui->pbUpload->setEnabled(dynamic_cast<ctkXnatResource *>(selectedObject) != nullptr);
161 }
QmitkSelectXnatUploadDestinationDialog(ctkXnatSession *session, const QStringList &, QWidget *parent=nullptr)
ctkXnatObject * GetXnatObjectFromUrl(const QString &)