CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkDICOMBrowser.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Library: CTK
4 
5  Copyright (c) Kitware Inc.
6 
7  Licensed under the Apache License, Version 2.0 (the "License");
8  you may not use this file except in compliance with the License.
9  You may obtain a copy of the License at
10 
11  http://www.apache.org/licenses/LICENSE-2.0.txt
12 
13  Unless required by applicable law or agreed to in writing, software
14  distributed under the License is distributed on an "AS IS" BASIS,
15  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  See the License for the specific language governing permissions and
17  limitations under the License.
18 
19 =========================================================================*/
20 
21 #ifndef __ctkDICOMBrowser_h
22 #define __ctkDICOMBrowser_h
23 
24 // Qt includes
25 #include <QItemSelection>
26 #include <QWidget>
27 
28 #include "ctkDICOMWidgetsExport.h"
29 
30 class ctkDICOMBrowserPrivate;
31 class ctkThumbnailLabel;
32 class QMenu;
33 class QModelIndex;
34 class ctkDICOMDatabase;
36 
38 class CTK_DICOM_WIDGETS_EXPORT ctkDICOMBrowser : public QWidget
39 {
40  Q_OBJECT
41  Q_PROPERTY(ctkDICOMDatabase* database READ database)
42  Q_PROPERTY(QString databaseDirectory READ databaseDirectory WRITE setDatabaseDirectory)
43  Q_PROPERTY(QStringList tagsToPrecache READ tagsToPrecache WRITE setTagsToPrecache)
44  Q_PROPERTY(bool displayImportSummary READ displayImportSummary WRITE setDisplayImportSummary)
45  Q_PROPERTY(ctkDICOMTableManager* dicomTableManager READ dicomTableManager)
46 
47 public:
48  typedef QWidget Superclass;
49  explicit ctkDICOMBrowser(QWidget* parent=0);
50  virtual ~ctkDICOMBrowser();
51 
53  QString databaseDirectory() const;
54 
59  void setTagsToPrecache(const QStringList tags);
60  const QStringList tagsToPrecache();
61 
65  void updateDatabaseSchemaIfNeeded();
66 
67  ctkDICOMDatabase* database();
68 
69  ctkDICOMTableManager* dicomTableManager();
70 
74  void setDisplayImportSummary(bool);
75  bool displayImportSummary();
77  int patientsAddedDuringImport();
78  int studiesAddedDuringImport();
79  int seriesAddedDuringImport();
80  int instancesAddedDuringImport();
81 
82 public Q_SLOTS:
83  void setDatabaseDirectory(const QString& directory);
84  void onFileIndexed(const QString& filePath);
85 
86  void openImportDialog();
87  void openExportDialog();
88  void openQueryDialog();
89  void onRemoveAction();
90  void onRepairAction();
91 
92  void onTablesDensityComboBox(QString);
93 
97  void onImportDirectory(QString directory);
98 
101  void onPatientAdded(int, QString, QString, QString);
102  void onStudyAdded(QString);
103  void onSeriesAdded(QString);
104  void onInstanceAdded(QString);
105 
106 Q_SIGNALS:
108  void databaseDirectoryChanged(const QString&);
110  void queryRetrieveFinished();
112  void directoryImported();
113 
114 protected:
115  QScopedPointer<ctkDICOMBrowserPrivate> d_ptr;
116 
123  bool confirmDeleteSelectedUIDs(QStringList uids);
124 
125 protected Q_SLOTS:
126  void onModelSelected(const QItemSelection&, const QItemSelection&);
127 
129  void onPatientsRightClicked(const QPoint &point);
130 
132  void onStudiesRightClicked(const QPoint &point);
133 
135  void onSeriesRightClicked(const QPoint &point);
136 
139  void exportSelectedSeries(QString dirPath, QStringList uids);
142  void exportSelectedStudies(QString dirPath, QStringList uids);
145  void exportSelectedPatients(QString dirPath, QStringList uids);
146 
148  void onQueryRetrieveFinished();
149 
150 private:
151  Q_DECLARE_PRIVATE(ctkDICOMBrowser);
152  Q_DISABLE_COPY(ctkDICOMBrowser);
153 };
154 
155 #endif