Browse Source

ENH: ctkDICOMBrowser: Remove import confirmation dialog

See https://github.com/commontk/CTK/pull/753
Jean-Christophe Fillion-Robin 7 years ago
parent
commit
a2116f2696

+ 3 - 4
Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest.cpp

@@ -115,7 +115,6 @@ void ctkDICOMBrowserTester::testDefaults()
   QCOMPARE(browser.instancesAddedDuringImport(), 0);
 
   QCOMPARE(browser.importDirectoryMode(), ctkDICOMBrowser::ImportDirectoryAddLink);
-  QCOMPARE(browser.skipConfirmImportDirectory(), false);
 }
 
 // ----------------------------------------------------------------------------
@@ -145,7 +144,7 @@ void ctkDICOMBrowserTester::testImportDirectories()
   ctkDICOMBrowser browser;
 
   browser.setDisplayImportSummary(false);
-  browser.importDirectories(directories, /* mode= */ importDirectoryMode, /* confirm= */ false);
+  browser.importDirectories(directories, /* mode= */ importDirectoryMode);
 
   this->_testImportCommon(browser);
 }
@@ -214,7 +213,7 @@ void ctkDICOMBrowserTester::testImportDirectory()
   ctkDICOMBrowser browser;
 
   browser.setDisplayImportSummary(false);
-  browser.importDirectory(directories[0], /* mode= */ importDirectoryMode, /* confirm= */ false);
+  browser.importDirectory(directories[0], /* mode= */ importDirectoryMode);
 
   this->_testImportCommon(browser);
 }
@@ -257,7 +256,7 @@ void ctkDICOMBrowserTester::testOnImportDirectory()
   ctkDICOMBrowser browser;
 
   browser.setDisplayImportSummary(false);
-  browser.onImportDirectory(directories[0], /* mode= */ importDirectoryMode, /* confirm= */ false);
+  browser.onImportDirectory(directories[0], /* mode= */ importDirectoryMode);
 
   this->_testImportCommon(browser);
 }

+ 4 - 2
Libs/DICOM/Widgets/Testing/Cpp/ctkDICOMBrowserTest1.cpp

@@ -66,18 +66,20 @@ int ctkDICOMBrowserTest1( int argc, char * argv [] )
   browser.setDisplayImportSummary(false);
   qDebug() << "Importing directory " << argv[1];
 
+  // [Deprecated]
   // make sure copy/link dialog doesn't pop up, always copy on import
   QSettings settings;
   QString settingsString = settings.value("MainWindow/DontConfirmCopyOnImport").toString();
   settings.setValue("MainWindow/DontConfirmCopyOnImport", QString("0")); // QMessageBox::AcceptRole
-
   CHECK_INT(browser.importDirectoryMode(), static_cast<int>(ctkDICOMBrowser::ImportDirectoryCopy));
-  CHECK_BOOL(browser.skipConfirmImportDirectory(), true);
+  // [/Deprecated]
 
   browser.importDirectories(QStringList() << argv[1]);
 
+  // [Deprecated]
   // reset to the original copy/import setting
   settings.setValue("MainWindow/DontConfirmCopyOnImport", settingsString);
+  // [/Deprecated]
 
   CHECK_INT(browser.patientsAddedDuringImport(), 1);
   CHECK_INT(browser.studiesAddedDuringImport(), 1);

+ 6 - 74
Libs/DICOM/Widgets/ctkDICOMBrowser.cpp

@@ -72,12 +72,6 @@ public:
   ctkDICOMBrowserPrivate(ctkDICOMBrowser* );
   ~ctkDICOMBrowserPrivate();
 
-  /// \brief Popup dialog asking user to confirm the directory import.
-  ///
-  /// If user check the "do not show again" checkbox, its choice is saved
-  /// in the settings using the key `DICOM/DontConfirmImportDirectory`.
-  bool confirmDirectoryImport();
-
   void importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode);
 
   void importOldSettings();
@@ -174,20 +168,6 @@ ctkDICOMBrowserPrivate::~ctkDICOMBrowserPrivate()
 }
 
 //----------------------------------------------------------------------------
-bool ctkDICOMBrowserPrivate::confirmDirectoryImport()
-{
-  Q_Q(ctkDICOMBrowser);
-  ctkMessageBox dialog(q);
-  QString message = q->tr("Are you sure you want to import files ?");
-  dialog.setText(message);
-  dialog.setIcon(QMessageBox::Question);
-  dialog.addButton(new QPushButton("Import"), QMessageBox::AcceptRole);
-  dialog.addButton(QMessageBox::Cancel);
-  dialog.setDontShowAgainSettingsKey("DICOM/DontConfirmImportDirectory");
-  return dialog.exec() == QMessageBox::AcceptRole;
-}
-
-//----------------------------------------------------------------------------
 void ctkDICOMBrowserPrivate::showUpdateSchemaDialog()
 {
   Q_Q(ctkDICOMBrowser);
@@ -338,8 +318,6 @@ ctkDICOMBrowser::ctkDICOMBrowser(QWidget* _parent):Superclass(_parent),
         tr("Indicate if the files should be copied to the local database"
            " directory or if only links should be created ?"));
   layout->addRow(new QLabel("Import Directory Mode:"), importDirectoryModeComboBox);
-  QCheckBox* skipConfirmImportDirectoryCheckBox = new QCheckBox();
-  layout->addRow(new QLabel("Skip Import Directory Confirmation:"), skipConfirmImportDirectoryCheckBox);
   layout->setContentsMargins(0, 0, 0, 0);
   QWidget* importDirectoryBottomWidget = new QWidget();
   importDirectoryBottomWidget->setLayout(layout);
@@ -347,7 +325,6 @@ ctkDICOMBrowser::ctkDICOMBrowser(QWidget* _parent):Superclass(_parent),
   // Default values
   importDirectoryModeComboBox->setCurrentIndex(
         importDirectoryModeComboBox->findData(this->importDirectoryMode()));
-  skipConfirmImportDirectoryCheckBox->setChecked(this->skipConfirmImportDirectory());
 
   //Initialize import widget
   d->ImportDialog = new ctkFileDialog();
@@ -366,9 +343,6 @@ ctkDICOMBrowser::ctkDICOMBrowser(QWidget* _parent):Superclass(_parent),
   connect(importDirectoryModeComboBox, SIGNAL(currentIndexChanged(int)),
           this, SLOT(onImportDirectoryComboBoxCurrentIndexChanged(int)));
 
-  connect(skipConfirmImportDirectoryCheckBox, SIGNAL(toggled(bool)),
-          this, SLOT(setSkipConfirmImportDirectory(bool)));
-
   connect(d->QueryRetrieveWidget, SIGNAL(canceled()), d->QueryRetrieveWidget, SLOT(hide()) );
   connect(d->QueryRetrieveWidget, SIGNAL(canceled()), this, SLOT(onQueryRetrieveFinished()) );
 }
@@ -709,11 +683,7 @@ void ctkDICOMBrowser::onInstanceAdded(QString instanceUID)
 void ctkDICOMBrowser::onImportDirectoriesSelected(QStringList directories)
 {
   Q_D(ctkDICOMBrowser);
-  if (!d->confirmDirectoryImport())
-    {
-    return;
-    }
-  this->importDirectories(directories, this->importDirectoryMode(), /* confirm= */ false);
+  this->importDirectories(directories, this->importDirectoryMode());
 
   // Clear selection
   d->ImportDialog->clearSelection();
@@ -728,13 +698,9 @@ void ctkDICOMBrowser::onImportDirectoryComboBoxCurrentIndexChanged(int index)
 }
 
 //----------------------------------------------------------------------------
-void ctkDICOMBrowser::importDirectories(QStringList directories, ctkDICOMBrowser::ImportDirectoryMode mode, bool confirm)
+void ctkDICOMBrowser::importDirectories(QStringList directories, ctkDICOMBrowser::ImportDirectoryMode mode)
 {
   Q_D(ctkDICOMBrowser);
-  if(confirm && !d->confirmDirectoryImport())
-    {
-    return;
-    }
   ctkDICOMImportStats stats(d);
   foreach (const QString& directory, directories)
     {
@@ -748,13 +714,9 @@ void ctkDICOMBrowser::importDirectories(QStringList directories, ctkDICOMBrowser
 }
 
 //----------------------------------------------------------------------------
-void ctkDICOMBrowser::importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode, bool confirm)
+void ctkDICOMBrowser::importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode)
 {
   Q_D(ctkDICOMBrowser);
-  if(confirm && !d->confirmDirectoryImport())
-    {
-    return;
-    }
   ctkDICOMImportStats stats(d);
   d->importDirectory(directory, mode);
   if (d->DisplayImportSummary)
@@ -764,9 +726,9 @@ void ctkDICOMBrowser::importDirectory(QString directory, ctkDICOMBrowser::Import
 }
 
 //----------------------------------------------------------------------------
-void ctkDICOMBrowser::onImportDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode, bool confirm)
+void ctkDICOMBrowser::onImportDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode)
 {
-  this->importDirectory(directory, mode, confirm);
+  this->importDirectory(directory, mode);
 }
 
 //----------------------------------------------------------------------------
@@ -797,39 +759,9 @@ void ctkDICOMBrowserPrivate::importOldSettings()
   int dontConfirmCopyOnImport = settings.value("MainWindow/DontConfirmCopyOnImport", static_cast<int>(QMessageBox::InvalidRole)).toInt();
   if (dontConfirmCopyOnImport == QMessageBox::AcceptRole)
     {
-    q->setSkipConfirmImportDirectory(true);
-    // settings.setValue("DICOM/DontConfirmImportDirectory", QMessageBox::AcceptRole);
     settings.setValue("DICOM/ImportDirectoryMode", static_cast<int>(ctkDICOMBrowser::ImportDirectoryCopy));
-    settings.remove("MainWindow/DontConfirmCopyOnImport");
-    }
-}
-
-//----------------------------------------------------------------------------
-bool ctkDICOMBrowser::skipConfirmImportDirectory()const
-{
-  Q_D(const ctkDICOMBrowser);
-  ctkDICOMBrowserPrivate* mutable_d =
-    const_cast<ctkDICOMBrowserPrivate*>(d);
-  mutable_d->importOldSettings();
-  QSettings settings;
-  return settings.value(
-        "DICOM/DontConfirmImportDirectory",
-        static_cast<int>(QMessageBox::InvalidRole)).toInt() == QMessageBox::AcceptRole;
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::setSkipConfirmImportDirectory(bool value)
-{
-  Q_D(ctkDICOMBrowser);
-
-  QSettings settings;
-  settings.setValue("DICOM/DontConfirmImportDirectory", value ? QMessageBox::AcceptRole : QMessageBox::RejectRole);
-  if (!d->ImportDialog)
-    {
-    return;
     }
-  QCheckBox* checkBox = d->ImportDialog->bottomWidget()->findChild<QCheckBox*>();
-  checkBox->setChecked(value);
+  settings.remove("MainWindow/DontConfirmCopyOnImport");
 }
 
 //----------------------------------------------------------------------------

+ 5 - 26
Libs/DICOM/Widgets/ctkDICOMBrowser.h

@@ -61,7 +61,6 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMBrowser : public QWidget
   Q_PROPERTY(bool displayImportSummary READ displayImportSummary WRITE setDisplayImportSummary)
   Q_PROPERTY(ctkDICOMTableManager* dicomTableManager READ dicomTableManager)
   Q_PROPERTY(ctkDICOMBrowser::ImportDirectoryMode ImportDirectoryMode READ importDirectoryMode WRITE setImportDirectoryMode)
-  Q_PROPERTY(bool SkipConfirmImportDirectory READ skipConfirmImportDirectory WRITE setSkipConfirmImportDirectory)
 
 public:
   typedef ctkDICOMBrowser Self;
@@ -114,11 +113,6 @@ public:
   /// \sa setImportDirectoryMode(ctkDICOMBrowser::ImportDirectoryMode)
   ctkDICOMBrowser::ImportDirectoryMode importDirectoryMode()const;
 
-  /// \brief Get SkipConfirmImportDirectory.
-  ///
-  /// \sa setSkipConfirmImportDirectory(bool)
-  bool skipConfirmImportDirectory()const;
-
 public Q_SLOTS:
 
   /// \brief Set value of ImportDirectoryMode settings.
@@ -129,14 +123,6 @@ public Q_SLOTS:
   /// \sa importDirectoryMode()
   void setImportDirectoryMode(ctkDICOMBrowser::ImportDirectoryMode mode);
 
-  /// \brief Set SkipConfirmImportDirectory.
-  ///
-  /// Setting the value will update the checkbox found at the bottom
-  /// of the import dialog.
-  ///
-  /// \sa skipConfirmImportDirectory()
-  void setSkipConfirmImportDirectory(bool value);
-
   void setDatabaseDirectory(const QString& directory);
   void onFileIndexed(const QString& filePath);
 
@@ -147,9 +133,6 @@ public Q_SLOTS:
   ///
   /// * **ImportDirectoryMode** combox: Allow user to select "Add Link" or "Copy" mode.
   ///   Associated settings is stored using key `DICOM/ImportDirectoryMode`.
-  ///
-  /// * **ConfirmImportDirectory** checkbox: Allow user to skip import directory confirmation dialog.
-  ///   Associated settings is stored using key `DICOM/DontConfirmImportDirectory`.
   void openImportDialog();
 
   void openExportDialog();
@@ -163,24 +146,20 @@ public Q_SLOTS:
   ///
   /// This can be used to externally trigger an import (i.e. for testing or to support drag-and-drop)
   ///
-  /// By default, \a mode is ImportDirectoryMode::ImportDirectoryCopy and \a confirm is true.
-  ///
-  /// Setting \a confirm to false will skip the confirmation dialog.
+  /// By default, \a mode is ImportDirectoryMode::ImportDirectoryAddLink is set.
   ///
   /// \sa importDirectory(QString directory, int mode)
-  void importDirectories(QStringList directories, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink, bool confirm = true);
+  void importDirectories(QStringList directories, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
 
   /// \brief Import a directory
   ///
   /// This can be used to externally trigger an import (i.e. for testing or to support drag-and-drop)
   ///
-  /// By default, \a mode is ImportDirectoryMode::ImportDirectoryCopy and \a confirm is true.
-  ///
-  /// Setting \a confirm to false will skip the confirmation dialog.
-  void importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink, bool confirm = true);
+  /// By default, \a mode is ImportDirectoryMode::ImportDirectoryAddLink is set.
+  void importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
 
   /// \deprecated importDirectory() should be used
-  void onImportDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink, bool confirm = true);
+  void onImportDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
 
   /// slots to capture status updates from the database during an
   /// import operation