瀏覽代碼

ADD: new widget for managing a directory list

Marco Nolden 15 年之前
父節點
當前提交
791662d804

+ 72 - 0
Libs/DICOM/Widgets/Resources/UI/ctkDICOMDirectoryListWidget.ui

@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ctkDICOMDirectoryListWidget</class>
+ <widget class="QWidget" name="ctkDICOMDirectoryListWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>393</width>
+    <height>325</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>DICOM Directories</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>DICOM Directories</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QListView" name="directoryListView"/>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QPushButton" name="addButton">
+       <property name="text">
+        <string>Add Directory</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="removeButton">
+       <property name="text">
+        <string>Remove Directory</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::MinimumExpanding</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>60</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QPushButton" name="okButton">
+       <property name="text">
+        <string>OK</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 77 - 0
Libs/DICOM/Widgets/ctkDICOMDirectoryListWidget.cpp

@@ -0,0 +1,77 @@
+
+#include <QFileDialog>
+#include <QSqlQueryModel>
+#include <QSqlQuery>
+
+// ctkDICOMWidgets includes
+#include "ctkDICOMDirectoryListWidget.h"
+#include "ui_ctkDICOMDirectoryListWidget.h"
+
+#include <iostream>
+
+//----------------------------------------------------------------------------
+class ctkDICOMDirectoryListWidgetPrivate: public ctkPrivate<ctkDICOMDirectoryListWidget>,
+                                     public Ui_ctkDICOMDirectoryListWidget
+{
+public:
+  ctkDICOMDirectoryListWidgetPrivate(){}
+  ctkDICOM* dicom;
+  QSqlQueryModel* directoryListModel;
+};
+
+//----------------------------------------------------------------------------
+// ctkDICOMDirectoryListWidgetPrivate methods
+
+
+//----------------------------------------------------------------------------
+// ctkDICOMDirectoryListWidget methods
+
+//----------------------------------------------------------------------------
+ctkDICOMDirectoryListWidget::ctkDICOMDirectoryListWidget(QWidget* _parent):Superclass(_parent)
+{
+  CTK_INIT_PRIVATE(ctkDICOMDirectoryListWidget);
+  CTK_D(ctkDICOMDirectoryListWidget);
+
+  d->setupUi(this);
+
+  connect(d->addButton, SIGNAL(clicked()), this, SLOT(addDirectoryClicked()));
+  connect(d->removeButton, SIGNAL(clicked()), this, SLOT(removeDirectoryClicked()));
+
+  d->directoryListModel = new QSqlQueryModel(this);
+
+
+}
+
+//----------------------------------------------------------------------------
+ctkDICOMDirectoryListWidget::~ctkDICOMDirectoryListWidget()
+{
+}
+
+//----------------------------------------------------------------------------
+void ctkDICOMDirectoryListWidget::addDirectoryClicked()
+{
+  CTK_D(ctkDICOMDirectoryListWidget);
+  QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"));
+
+//d->directoryListView->setModel(NULL);
+// d->tableView->setModel(NULL);
+}
+
+//----------------------------------------------------------------------------
+void ctkDICOMDirectoryListWidget::removeDirectoryClicked()
+{
+
+}
+
+void ctkDICOMDirectoryListWidget::setDICOM(ctkDICOM* dicom)
+{
+  CTK_D(ctkDICOMDirectoryListWidget);
+  d->dicom = dicom;
+  QSqlQuery getDirectoriesQuery(dicom->database());
+  getDirectoriesQuery.exec("SELECT Dirname from Directories");
+  std::cout << getDirectoriesQuery.size();
+  d->directoryListModel->setQuery(getDirectoriesQuery);
+  //d->directoryListView->setModel(d->directoryListModel);
+  d->directoryListView->setModel(d->directoryListModel);
+
+}

+ 53 - 0
Libs/DICOM/Widgets/ctkDICOMDirectoryListWidget.h

@@ -0,0 +1,53 @@
+/*=========================================================================
+
+  Library:   CTK
+ 
+  Copyright (c) 2010  Kitware Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.commontk.org/LICENSE
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+ 
+=========================================================================*/
+
+#ifndef __ctkDICOMDirectoryListWidget_h
+#define __ctkDICOMDirectoryListWidget_h
+
+// Qt includes 
+#include <QWidget>
+
+// CTK includes
+#include <ctkPimpl.h>
+
+#include "CTKDICOMWidgetsExport.h"
+#include "ctkDICOM.h"
+class ctkDICOMDirectoryListWidgetPrivate;
+
+class CTK_DICOM_WIDGETS_EXPORT ctkDICOMDirectoryListWidget : public QWidget
+{
+  Q_OBJECT
+
+public:
+  typedef QWidget Superclass;
+  explicit ctkDICOMDirectoryListWidget(QWidget* parent=0);
+  void setDICOM(ctkDICOM* dicom);
+  virtual ~ctkDICOMDirectoryListWidget();
+
+public slots:
+  void addDirectoryClicked();
+  void removeDirectoryClicked();
+
+
+private:
+  CTK_DECLARE_PRIVATE(ctkDICOMDirectoryListWidget);
+};
+
+#endif