Browse Source

correct a commit miss: move ctkDICOMDatabse to ctkDICOMAppWidget

nherlambang 14 years ago
parent
commit
4360633345

+ 1 - 22
Applications/ctkDICOMViewer/ctkDICOMViewerMain.cpp

@@ -80,30 +80,9 @@ int main(int argc, char** argv)
     }
   }
 
-  QString databaseFileName = databaseDirectory + QString("/ctkDICOM.sql");
-
-  ctkDICOMDatabase myCTK;
-  try { myCTK.openDatabase( databaseFileName ); }
-  catch (std::exception e)
-  {
-    std::cerr << "Database error: " << qPrintable(myCTK.GetLastError()) << "\n";
-    myCTK.closeDatabase();
-    return EXIT_FAILURE;
-  }
-
-  ctkDICOMModel model;
-  model.setDatabase(myCTK.database());
-  
   ctkDICOMAppWidget DICOMApp;
 
-  QTreeView *treeView = DICOMApp.findChild<QTreeView *>("treeView");
-  if (!treeView)
-    {
-    std::cerr << "Could not access tree view from QueryRetrieve widget\n";
-    return EXIT_FAILURE;
-    }
-  treeView->setModel(&model);
-
+  DICOMApp.setDatabaseDirectory(databaseDirectory);
   DICOMApp.show();
   DICOMApp.raise();
 

+ 4 - 0
Libs/DICOM/Widgets/CMakeLists.txt

@@ -27,6 +27,8 @@ SET(KIT_SRCS
   ctkDICOMThumbnailWidget.h
   ctkDICOMThumbnailListWidget.cpp
   ctkDICOMThumbnailListWidget.h
+  ctkDICOMImportWidget.cpp
+  ctkDICOMImportWidget.h
   )
 
 # Headers that should run through moc
@@ -37,6 +39,7 @@ SET(KIT_MOC_SRCS
   ctkDICOMAppWidget.h
   ctkDICOMThumbnailWidget.h
   ctkDICOMThumbnailListWidget.h
+  ctkDICOMImportWidget.h
   )
 
 # UI files - includes new widgets
@@ -49,6 +52,7 @@ SET(KIT_UI_FORMS
   Resources/UI/ctkDICOMAppWidget.ui
   Resources/UI/ctkDICOMThumbnailWidget.ui
   Resources/UI/ctkDICOMThumbnailListWidget.ui
+  Resources/UI/ctkDICOMImportWidget.ui
 )
 
 # Resources

+ 47 - 11
Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp

@@ -1,3 +1,7 @@
+// std includes
+#include <iostream>
+
+// Qt includes
 #include <QDebug>
 #include <QTreeView>
 #include <QTabBar>
@@ -13,7 +17,7 @@
 #include "ui_ctkDICOMAppWidget.h"
 #include "ctkDirectoryButton.h"
 #include "ctkDICOMQueryRetrieveWidget.h"
-
+#include "ctkDICOMImportWidget.h"
 
 //logger
 #include <ctkLogger.h>
@@ -23,14 +27,21 @@ static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMAppWidget");
 class ctkDICOMAppWidgetPrivate: public Ui_ctkDICOMAppWidget
 {
 public:
-  ctkDICOMQueryRetrieveWidget* queryRetrieveWidget;
+  ctkDICOMAppWidgetPrivate();
+
+  ctkDICOMImportWidget* ImportWidget;
+  ctkDICOMQueryRetrieveWidget* QueryRetrieveWidget;
 
-  ctkDICOMAppWidgetPrivate(){}
+  ctkDICOMDatabase DICOMDatabase;
+  ctkDICOMModel DICOMModel;
 };
 
 //----------------------------------------------------------------------------
 // ctkDICOMAppWidgetPrivate methods
 
+ctkDICOMAppWidgetPrivate::ctkDICOMAppWidgetPrivate(){
+
+}
 
 //----------------------------------------------------------------------------
 // ctkDICOMAppWidget methods
@@ -46,8 +57,12 @@ ctkDICOMAppWidget::ctkDICOMAppWidget(QWidget* _parent):Superclass(_parent),
   //Set toolbar button style
   d->toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
 
-  d->queryRetrieveWidget = new ctkDICOMQueryRetrieveWidget();
-  connect(d->directoryButton, SIGNAL(directoryChanged(const QString&)), this, SLOT(onDatabaseDirectoryChanged(const QString&)));
+  //Initialize Q/R widget
+  d->QueryRetrieveWidget = new ctkDICOMQueryRetrieveWidget();
+  connect(d->directoryButton, SIGNAL(directoryChanged(const QString&)), this, SLOT(setDatabaseDirectory(const QString&)));
+
+  //Initialize import widget
+  d->ImportWidget = new ctkDICOMImportWidget();
 
   //Set thumbnails width in thumbnail widget
   d->thumbnailsWidget->setThumbnailWidth(128);
@@ -64,19 +79,37 @@ ctkDICOMAppWidget::~ctkDICOMAppWidget()
 {
   Q_D(ctkDICOMAppWidget);  
 
-  d->queryRetrieveWidget->deleteLater();
+  d->QueryRetrieveWidget->deleteLater();
+  d->ImportWidget->deleteLater();
 }
 
 //----------------------------------------------------------------------------
-void ctkDICOMAppWidget::onDatabaseDirectoryChanged(const QString& directory)
+void ctkDICOMAppWidget::setDatabaseDirectory(const QString& directory)
 {
-  //Q_D(ctkDICOMAppWidget);  
+  Q_D(ctkDICOMAppWidget);  
 
   QSettings settings;
   settings.setValue("DatabaseDirectory", directory);
   settings.sync();
 
+  //close the active DICOM database
+  d->DICOMDatabase.closeDatabase();
+  
+  //open DICOM database on the directory
+  QString databaseFileName = directory + QString("/ctkDICOM.sql");
+  try { d->DICOMDatabase.openDatabase( databaseFileName ); }
+  catch (std::exception e)
+  {
+    std::cerr << "Database error: " << qPrintable(d->DICOMDatabase.GetLastError()) << "\n";
+    d->DICOMDatabase.closeDatabase();
+    return;
+  }
   
+  d->DICOMModel.setDatabase(d->DICOMDatabase.database());
+  d->treeView->setModel(&d->DICOMModel);
+
+  //pass DICOM database instance to Import widget
+  d->ImportWidget->setDICOMDatabase(&d->DICOMDatabase);
 }
 
 void ctkDICOMAppWidget::onAddToDatabase()
@@ -88,7 +121,10 @@ void ctkDICOMAppWidget::onAddToDatabase()
 
 //----------------------------------------------------------------------------
 void ctkDICOMAppWidget::onImport(){
-
+  Q_D(ctkDICOMAppWidget);
+  
+  d->ImportWidget->show();
+  d->ImportWidget->raise();
 }
 
 void ctkDICOMAppWidget::onExport(){
@@ -98,8 +134,8 @@ void ctkDICOMAppWidget::onExport(){
 void ctkDICOMAppWidget::onQuery(){
   Q_D(ctkDICOMAppWidget);
 
-  d->queryRetrieveWidget->show();
-  d->queryRetrieveWidget->raise();
+  d->QueryRetrieveWidget->show();
+  d->QueryRetrieveWidget->raise();
 }
 
 void ctkDICOMAppWidget::onDICOMModelSelected(const QModelIndex& index){

+ 1 - 1
Libs/DICOM/Widgets/ctkDICOMAppWidget.h

@@ -39,7 +39,7 @@ public:
   virtual ~ctkDICOMAppWidget();
 
 public slots:
-    void onDatabaseDirectoryChanged(const QString& directory);
+    void setDatabaseDirectory(const QString& directory);
     void onAddToDatabase();
 
     void onDICOMModelSelected(const QModelIndex& index);