Sfoglia il codice sorgente

ENH: Update ctkDICOMBrowser to support importing multiple directories

Jean-Christophe Fillion-Robin 7 anni fa
parent
commit
e797a43c4d

+ 1 - 1
Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest1.cpp

@@ -71,7 +71,7 @@ int ctkDICOMBrowserTest1( int argc, char * argv [] )
   QString settingsString = settings.value("MainWindow/DontConfirmCopyOnImport").toString();
   settings.setValue("MainWindow/DontConfirmCopyOnImport", QString("0"));
 
-  browser.onImportDirectory(argv[1]);
+  browser.onImportDirectories(QStringList() << argv[1]);
 
   // reset to the original copy/import setting
   settings.setValue("MainWindow/DontConfirmCopyOnImport", settingsString);

+ 14 - 1
Libs/DICOM/Widgets/ctkDICOMBrowser.cpp

@@ -269,12 +269,15 @@ ctkDICOMBrowser::ctkDICOMBrowser(QWidget* _parent):Superclass(_parent),
   importCheckbox->setCheckState(Qt::Checked);
   d->ImportDialog->setBottomWidget(importCheckbox);
   d->ImportDialog->setFileMode(QFileDialog::Directory);
+  // XXX Method setSelectionMode must be called after setFileMode
+  d->ImportDialog->setSelectionMode(QAbstractItemView::ExtendedSelection);
   d->ImportDialog->setLabelText(QFileDialog::Accept,"Import");
   d->ImportDialog->setWindowTitle("Import DICOM files from directory ...");
   d->ImportDialog->setWindowModality(Qt::ApplicationModal);
 
   //connect signal and slots
-  connect(d->ImportDialog, SIGNAL(fileSelected(QString)),this,SLOT(onImportDirectory(QString)));
+  connect(d->ImportDialog, SIGNAL(filesSelected(QStringList)),
+          this,SLOT(onImportDirectories(QStringList)));
 
   connect(d->QueryRetrieveWidget, SIGNAL(canceled()), d->QueryRetrieveWidget, SLOT(hide()) );
   connect(d->QueryRetrieveWidget, SIGNAL(canceled()), this, SLOT(onQueryRetrieveFinished()) );
@@ -423,6 +426,7 @@ ctkDICOMTableManager* ctkDICOMBrowser::dicomTableManager()
 //----------------------------------------------------------------------------
 void ctkDICOMBrowser::onFileIndexed(const QString& filePath)
 {
+  Q_UNUSED(filePath);
 }
 
 //----------------------------------------------------------------------------
@@ -603,6 +607,15 @@ void ctkDICOMBrowser::onInstanceAdded(QString instanceUID)
 }
 
 //----------------------------------------------------------------------------
+void ctkDICOMBrowser::onImportDirectories(QStringList directories)
+{
+  foreach (const QString& directory, directories)
+    {
+    this->onImportDirectory(directory);
+    }
+}
+
+//----------------------------------------------------------------------------
 void ctkDICOMBrowser::onImportDirectory(QString directory)
 {
   Q_D(ctkDICOMBrowser);

+ 12 - 2
Libs/DICOM/Widgets/ctkDICOMBrowser.h

@@ -91,8 +91,18 @@ public Q_SLOTS:
 
   void onTablesDensityComboBox(QString);
 
-  /// Import a directory - this is used when the user selects a directory
-  /// from the Import Dialog, but can also be used externally to trigger
+  /// \brief Import directories
+  ///
+  /// This is used when user selected one or multiple
+  /// directories from the Import Dialog, but can used externally to trigger
+  /// an import (i.e. for testing or to support drag-and-drop)
+  ///
+  /// \sa onImportDirectory(QString directory)
+  void onImportDirectories(QStringList directories);
+
+  /// \brief Import a directory
+  ///
+  /// This can also be used externally to trigger
   /// an import (i.e. for testing or to support drag-and-drop)
   void onImportDirectory(QString directory);