|
@@ -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){
|