浏览代码

Removed unused gui elements from dicom browser

Andreas Fetzer 12 年之前
父节点
当前提交
1465057013

+ 4 - 497
Libs/DICOM/Widgets/Resources/UI/ctkDICOMBrowser.ui

@@ -96,25 +96,12 @@
          </property>
         </spacer>
        </item>
-       <item>
-        <widget class="QPushButton" name="SearchPopUpButton">
-         <property name="maximumSize">
-          <size>
-           <width>100</width>
-           <height>32</height>
-          </size>
-         </property>
-         <property name="text">
-          <string>Search</string>
-         </property>
-        </widget>
-       </item>
       </layout>
      </item>
     </layout>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="QueryLayout" stretch="1,0">
+    <layout class="QHBoxLayout" name="QueryLayout" stretch="0">
      <property name="spacing">
       <number>0</number>
      </property>
@@ -125,347 +112,7 @@
       <number>12</number>
      </property>
      <item>
-      <widget class="QTreeView" name="TreeView">
-       <property name="alternatingRowColors">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <layout class="QVBoxLayout" name="searchOptionLayout">
-       <property name="spacing">
-        <number>6</number>
-       </property>
-       <item>
-        <widget class="QDockWidget" name="SearchDockWidget">
-         <property name="floating">
-          <bool>false</bool>
-         </property>
-         <property name="features">
-          <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set>
-         </property>
-         <property name="windowTitle">
-          <string/>
-         </property>
-         <widget class="QWidget" name="dockWidgetContents">
-          <layout class="QVBoxLayout" name="verticalLayout_4">
-           <item>
-            <widget class="ctkDICOMQueryWidget" name="SearchOption" native="true">
-             <property name="minimumSize">
-              <size>
-               <width>0</width>
-               <height>0</height>
-              </size>
-             </property>
-            </widget>
-           </item>
-          </layout>
-         </widget>
-        </widget>
-       </item>
-       <item>
-        <spacer name="VerticalSpacer">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QFrame" name="UserFrame">
-     <property name="frameShape">
-      <enum>QFrame::StyledPanel</enum>
-     </property>
-     <property name="frameShadow">
-      <enum>QFrame::Raised</enum>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="ViewerLayout">
-     <property name="leftMargin">
-      <number>12</number>
-     </property>
-     <property name="rightMargin">
-      <number>12</number>
-     </property>
-     <property name="bottomMargin">
-      <number>0</number>
-     </property>
-     <item>
-      <layout class="QVBoxLayout" name="verticalLayout">
-       <item>
-        <widget class="ctkDICOMThumbnailListWidget" name="ThumbnailsWidget" native="true">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="minimumSize">
-          <size>
-           <width>0</width>
-           <height>200</height>
-          </size>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_3">
-         <item>
-          <spacer name="horizontalSpacer">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-         <item>
-          <widget class="QSlider" name="ThumbnailWidthSlider">
-           <property name="maximumSize">
-            <size>
-             <width>200</width>
-             <height>16777215</height>
-            </size>
-           </property>
-           <property name="minimum">
-            <number>64</number>
-           </property>
-           <property name="maximum">
-            <number>256</number>
-           </property>
-           <property name="value">
-            <number>64</number>
-           </property>
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <spacer name="horizontalSpacer_2">
-           <property name="orientation">
-            <enum>Qt::Horizontal</enum>
-           </property>
-           <property name="sizeHint" stdset="0">
-            <size>
-             <width>40</width>
-             <height>20</height>
-            </size>
-           </property>
-          </spacer>
-         </item>
-        </layout>
-       </item>
-      </layout>
-     </item>
-     <item>
-      <widget class="QFrame" name="PreviewFrame">
-       <property name="minimumSize">
-        <size>
-         <width>256</width>
-         <height>256</height>
-        </size>
-       </property>
-       <layout class="QVBoxLayout" name="verticalLayout_3">
-        <item>
-         <layout class="QHBoxLayout" name="HorizontalLayout">
-          <item>
-           <widget class="QPushButton" name="PrevStudyButton">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-              <horstretch>32</horstretch>
-              <verstretch>32</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>40</width>
-              <height>32</height>
-             </size>
-            </property>
-            <property name="toolTip">
-             <string>Previous study</string>
-            </property>
-            <property name="text">
-             <string>&lt;&lt;&lt;</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QPushButton" name="PrevSeriesButton">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-              <horstretch>32</horstretch>
-              <verstretch>32</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>40</width>
-              <height>32</height>
-             </size>
-            </property>
-            <property name="toolTip">
-             <string>Previous series</string>
-            </property>
-            <property name="text">
-             <string>&lt;&lt;</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QPushButton" name="PrevImageButton">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-              <horstretch>32</horstretch>
-              <verstretch>32</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>40</width>
-              <height>32</height>
-             </size>
-            </property>
-            <property name="toolTip">
-             <string>Previous image</string>
-            </property>
-            <property name="text">
-             <string>&lt;</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QPushButton" name="NextImageButton">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-              <horstretch>32</horstretch>
-              <verstretch>32</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>40</width>
-              <height>32</height>
-             </size>
-            </property>
-            <property name="toolTip">
-             <string>Next image</string>
-            </property>
-            <property name="text">
-             <string>&gt;</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QPushButton" name="NextSeriesButton">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-              <horstretch>32</horstretch>
-              <verstretch>32</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>40</width>
-              <height>32</height>
-             </size>
-            </property>
-            <property name="toolTip">
-             <string>Next series</string>
-            </property>
-            <property name="text">
-             <string>&gt;&gt;</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QPushButton" name="NextStudyButton">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-              <horstretch>32</horstretch>
-              <verstretch>32</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>40</width>
-              <height>32</height>
-             </size>
-            </property>
-            <property name="toolTip">
-             <string>Next study</string>
-            </property>
-            <property name="text">
-             <string>&gt;&gt;&gt;</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </item>
-        <item>
-         <widget class="ctkDICOMItemView" name="ImagePreview" native="true">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <layout class="QHBoxLayout" name="horizontalLayout_2">
-          <item>
-           <widget class="QCheckBox" name="AutoPlayCheckbox">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="maximumSize">
-             <size>
-              <width>90</width>
-              <height>16777215</height>
-             </size>
-            </property>
-            <property name="text">
-             <string>auto-play</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QSlider" name="PlaySlider">
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </item>
-       </layout>
-      </widget>
+      <widget class="ctkDICOMTableManager" name="dicomTableManager" native="true"/>
      </item>
     </layout>
    </item>
@@ -522,12 +169,6 @@
  </widget>
  <customwidgets>
   <customwidget>
-   <class>ctkDICOMQueryWidget</class>
-   <extends>QWidget</extends>
-   <header>ctkDICOMQueryWidget.h</header>
-   <container>1</container>
-  </customwidget>
-  <customwidget>
    <class>ctkDirectoryButton</class>
    <extends>QWidget</extends>
    <header>ctkDirectoryButton.h</header>
@@ -537,15 +178,9 @@
    </slots>
   </customwidget>
   <customwidget>
-   <class>ctkDICOMThumbnailListWidget</class>
-   <extends>QWidget</extends>
-   <header>ctkDICOMThumbnailListWidget.h</header>
-   <container>1</container>
-  </customwidget>
-  <customwidget>
-   <class>ctkDICOMItemView</class>
+   <class>ctkDICOMTableManager</class>
    <extends>QWidget</extends>
-   <header location="global">ctkDICOMItemView.h</header>
+   <header>ctkDICOMTableManager.h</header>
    <container>1</container>
   </customwidget>
  </customwidgets>
@@ -600,134 +235,6 @@
    </hints>
   </connection>
   <connection>
-   <sender>NextImageButton</sender>
-   <signal>clicked()</signal>
-   <receiver>ctkDICOMBrowser</receiver>
-   <slot>onNextImage()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>608</x>
-     <y>395</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>369</x>
-     <y>318</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>PrevImageButton</sender>
-   <signal>clicked()</signal>
-   <receiver>ctkDICOMBrowser</receiver>
-   <slot>onPreviousImage()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>566</x>
-     <y>395</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>369</x>
-     <y>318</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>NextSeriesButton</sender>
-   <signal>clicked()</signal>
-   <receiver>ctkDICOMBrowser</receiver>
-   <slot>onNextSeries()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>650</x>
-     <y>395</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>369</x>
-     <y>318</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>PrevSeriesButton</sender>
-   <signal>clicked()</signal>
-   <receiver>ctkDICOMBrowser</receiver>
-   <slot>onPreviousSeries()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>524</x>
-     <y>395</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>369</x>
-     <y>318</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>NextStudyButton</sender>
-   <signal>clicked()</signal>
-   <receiver>ctkDICOMBrowser</receiver>
-   <slot>onNextStudy()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>692</x>
-     <y>395</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>369</x>
-     <y>318</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>PrevStudyButton</sender>
-   <signal>clicked()</signal>
-   <receiver>ctkDICOMBrowser</receiver>
-   <slot>onPreviousStudy()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>482</x>
-     <y>395</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>369</x>
-     <y>318</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>AutoPlayCheckbox</sender>
-   <signal>stateChanged(int)</signal>
-   <receiver>ctkDICOMBrowser</receiver>
-   <slot>onAutoPlayCheckboxStateChanged(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>430</x>
-     <y>596</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>369</x>
-     <y>318</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>ThumbnailWidthSlider</sender>
-   <signal>valueChanged(int)</signal>
-   <receiver>ctkDICOMBrowser</receiver>
-   <slot>onThumbnailWidthSliderValueChanged(int)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>236</x>
-     <y>610</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>369</x>
-     <y>318</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
    <sender>ActionRemove</sender>
    <signal>triggered()</signal>
    <receiver>ctkDICOMBrowser</receiver>

+ 10 - 538
Libs/DICOM/Widgets/ctkDICOMBrowser.cpp

@@ -21,23 +21,14 @@
 // std includes
 #include <iostream>
 
-#include <dcmimage.h>
-
 // Qt includes
 #include <QAction>
 #include <QCoreApplication>
 #include <QCheckBox>
 #include <QDebug>
 #include <QMessageBox>
-#include <QMetaType>
-#include <QModelIndex>
-#include <QPersistentModelIndex>
 #include <QProgressDialog>
 #include <QSettings>
-#include <QSlider>
-#include <QTabBar>
-#include <QTimer>
-#include <QTreeView>
 
 // ctkWidgets includes
 #include "ctkDirectoryButton.h"
@@ -45,14 +36,10 @@
 
 // ctkDICOMCore includes
 #include "ctkDICOMDatabase.h"
-#include "ctkDICOMFilterProxyModel.h"
 #include "ctkDICOMIndexer.h"
-#include "ctkDICOMModel.h"
 
 // ctkDICOMWidgets includes
 #include "ctkDICOMBrowser.h"
-#include "ctkDICOMThumbnailGenerator.h"
-#include "ctkThumbnailLabel.h"
 #include "ctkDICOMQueryResultsTabWidget.h"
 #include "ctkDICOMQueryRetrieveWidget.h"
 #include "ctkDICOMQueryWidget.h"
@@ -63,8 +50,6 @@
 #include <ctkLogger.h>
 static ctkLogger logger("org.commontk.DICOM.Widgets.ctkDICOMBrowser");
 
-Q_DECLARE_METATYPE(QPersistentModelIndex);
-
 //----------------------------------------------------------------------------
 class ctkDICOMBrowserPrivate: public Ui_ctkDICOMBrowser
 {
@@ -79,9 +64,6 @@ public:
   ctkDICOMQueryRetrieveWidget* QueryRetrieveWidget;
 
   QSharedPointer<ctkDICOMDatabase> DICOMDatabase;
-  QSharedPointer<ctkDICOMThumbnailGenerator> ThumbnailGenerator;
-  ctkDICOMModel DICOMModel;
-  ctkDICOMFilterProxyModel DICOMProxyModel;
   QSharedPointer<ctkDICOMIndexer> DICOMIndexer;
   QProgressDialog *IndexerProgress;
   QProgressDialog *UpdateSchemaProgress;
@@ -92,10 +74,6 @@ public:
   // used when suspending the ctkDICOMModel
   QSqlDatabase EmptyDatabase;
 
-  QTimer* AutoPlayTimer;
-
-  bool IsSearchWidgetPopUpMode;
-
   // local count variables to keep track of the number of items
   // added to the database during an import operation
   bool DisplayImportSummary;
@@ -110,8 +88,6 @@ public:
 
 ctkDICOMBrowserPrivate::ctkDICOMBrowserPrivate(ctkDICOMBrowser* parent): q_ptr(parent){
   DICOMDatabase = QSharedPointer<ctkDICOMDatabase> (new ctkDICOMDatabase);
-  ThumbnailGenerator = QSharedPointer <ctkDICOMThumbnailGenerator> (new ctkDICOMThumbnailGenerator);
-  DICOMDatabase->setThumbnailGenerator(ThumbnailGenerator.data());
   DICOMIndexer = QSharedPointer<ctkDICOMIndexer> (new ctkDICOMIndexer);
   IndexerProgress = 0;
   UpdateSchemaProgress = 0;
@@ -154,9 +130,6 @@ void ctkDICOMBrowserPrivate::showUpdateSchemaDialog()
     UpdateSchemaProgress->setMinimumDuration(0);
     UpdateSchemaProgress->setValue(0);
 
-    //q->connect(UpdateSchemaProgress, SIGNAL(canceled()), 
-     //       DICOMIndexer.data(), SLOT(cancel()));
-
     q->connect(DICOMDatabase.data(), SIGNAL(schemaUpdateStarted(int)),
             UpdateSchemaProgress, SLOT(setMaximum(int)));
     q->connect(DICOMDatabase.data(), SIGNAL(schemaUpdateProgress(int)),
@@ -167,12 +140,6 @@ void ctkDICOMBrowserPrivate::showUpdateSchemaDialog()
     // close the dialog
     q->connect(DICOMDatabase.data(), SIGNAL(schemaUpdated()),
             UpdateSchemaProgress, SLOT(close()));
-    // reset the database to show new data
-    q->connect(DICOMDatabase.data(), SIGNAL(schemaUpdated()),
-            &DICOMModel, SLOT(reset()));
-    // reset the database if canceled
-    q->connect(UpdateSchemaProgress, SIGNAL(canceled()), 
-            &DICOMModel, SLOT(reset()));
     }
   UpdateSchemaProgress->show();
 }
@@ -209,14 +176,9 @@ void ctkDICOMBrowserPrivate::showIndexerDialog()
     // close the dialog
     q->connect(DICOMIndexer.data(), SIGNAL(indexingComplete()),
             IndexerProgress, SLOT(close()));
-    // reset the database to show new data
-    q->connect(DICOMIndexer.data(), SIGNAL(indexingComplete()),
-            &DICOMModel, SLOT(reset()));
     // stop indexing and reset the database if canceled
     q->connect(IndexerProgress, SIGNAL(canceled()), 
             DICOMIndexer.data(), SLOT(cancel()));
-    q->connect(IndexerProgress, SIGNAL(canceled()), 
-            &DICOMModel, SLOT(reset()));
 
     // allow users of this widget to know that the process has finished
     q->connect(IndexerProgress, SIGNAL(canceled()), 
@@ -238,25 +200,6 @@ ctkDICOMBrowser::ctkDICOMBrowser(QWidget* _parent):Superclass(_parent),
 
   d->setupUi(this);
 
-  this->setSearchWidgetPopUpMode(false);
-
-  //Hide image previewer buttons
-  d->NextImageButton->hide();
-  d->PrevImageButton->hide();
-  d->NextSeriesButton->hide();
-  d->PrevSeriesButton->hide();
-  d->NextStudyButton->hide();
-  d->PrevStudyButton->hide();
-
-  //Enable sorting in tree view
-  d->TreeView->setSortingEnabled(true);
-  d->TreeView->setSelectionBehavior(QAbstractItemView::SelectRows);
-  d->DICOMProxyModel.setSourceModel(&d->DICOMModel);
-  d->TreeView->setModel(&d->DICOMModel);
-
-  d->ThumbnailsWidget->setThumbnailSize(
-    QSize(d->ThumbnailWidthSlider->value(), d->ThumbnailWidthSlider->value()));
-
   // signals related to tracking inserts
   connect(d->DICOMDatabase.data(), SIGNAL(patientAdded(int,QString,QString,QString)), this,
                               SLOT(onPatientAdded(int,QString,QString,QString)));
@@ -264,9 +207,6 @@ ctkDICOMBrowser::ctkDICOMBrowser(QWidget* _parent):Superclass(_parent),
   connect(d->DICOMDatabase.data(), SIGNAL(seriesAdded(QString)), this, SLOT(onSeriesAdded(QString)));
   connect(d->DICOMDatabase.data(), SIGNAL(instanceAdded(QString)), this, SLOT(onInstanceAdded(QString)));
 
-  // Treeview signals
-  connect(d->TreeView, SIGNAL(collapsed(QModelIndex)), this, SLOT(onTreeCollapsed(QModelIndex)));
-  connect(d->TreeView, SIGNAL(expanded(QModelIndex)), this, SLOT(onTreeExpanded(QModelIndex)));
 
   //Set ToolBar button style
   d->ToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
@@ -287,6 +227,12 @@ ctkDICOMBrowser::ctkDICOMBrowser(QWidget* _parent):Superclass(_parent),
   this->setDatabaseDirectory(databaseDirectory);
   d->DirectoryButton->setDirectory(databaseDirectory);
 
+  // TableView signals
+  connect(d->dicomTableManager, SIGNAL(patientsSelectionChanged(const QItemSelection&, const QItemSelection&)),this, SLOT(onModelSelected(const QItemSelection&,const QItemSelection&)));
+  connect(d->dicomTableManager, SIGNAL(studiesSelectionChanged(const QItemSelection&, const QItemSelection&)),this, SLOT(onModelSelected(const QItemSelection&,const QItemSelection&)));
+  connect(d->dicomTableManager, SIGNAL(seriesSelectionChanged(const QItemSelection&, const QItemSelection&)),this, SLOT(onModelSelected(const QItemSelection&,const QItemSelection&)));
+  d->dicomTableManager->setCTKDICOMDatabase(d->DICOMDatabase.data());
+
   connect(d->DirectoryButton, SIGNAL(directoryChanged(QString)), this, SLOT(setDatabaseDirectory(QString)));
 
   //Initialize import widget
@@ -299,24 +245,10 @@ ctkDICOMBrowser::ctkDICOMBrowser(QWidget* _parent):Superclass(_parent),
   d->ImportDialog->setWindowModality(Qt::ApplicationModal);
 
   //connect signal and slots
-  connect(d->TreeView, SIGNAL(clicked(QModelIndex)), d->ThumbnailsWidget, SLOT(addThumbnails(QModelIndex)));
-  connect(d->TreeView, SIGNAL(clicked(QModelIndex)), d->ImagePreview, SLOT(onModelSelected(QModelIndex)));
-  connect(d->TreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(onModelSelected(QModelIndex)));
-
-  connect(d->ThumbnailsWidget, SIGNAL(selected(ctkThumbnailLabel)), this, SLOT(onThumbnailSelected(ctkThumbnailLabel)));
-  connect(d->ThumbnailsWidget, SIGNAL(doubleClicked(ctkThumbnailLabel)), this, SLOT(onThumbnailDoubleClicked(ctkThumbnailLabel)));
   connect(d->ImportDialog, SIGNAL(fileSelected(QString)),this,SLOT(onImportDirectory(QString)));
 
   connect(d->QueryRetrieveWidget, SIGNAL(canceled()), d->QueryRetrieveWidget, SLOT(hide()) );
   connect(d->QueryRetrieveWidget, SIGNAL(canceled()), this, SLOT(onQueryRetrieveFinished()) );
-
-  connect(d->ImagePreview, SIGNAL(requestNextImage()), this, SLOT(onNextImage()));
-  connect(d->ImagePreview, SIGNAL(requestPreviousImage()), this, SLOT(onPreviousImage()));
-  connect(d->ImagePreview, SIGNAL(imageDisplayed(int,int)), this, SLOT(onImagePreviewDisplayed(int,int)));
-
-  connect(d->SearchOption, SIGNAL(parameterChanged()), this, SLOT(onSearchParameterChanged()));
-
-  connect(d->PlaySlider, SIGNAL(valueChanged(int)), d->ImagePreview, SLOT(displayImage(int)));
 }
 
 //----------------------------------------------------------------------------
@@ -414,18 +346,11 @@ void ctkDICOMBrowser::setDatabaseDirectory(const QString& directory)
   // update the database schema if needed and provide progress
   this->updateDatabaseSchemaIfNeeded();
 
-  d->DICOMModel.setDatabase(d->DICOMDatabase->database());
-  d->DICOMModel.setEndLevel(ctkDICOMModel::SeriesType);
-  d->TreeView->resizeColumnToContents(0);
-
   //pass DICOM database instance to Import widget
-  // d->ImportDialog->setDICOMDatabase(d->DICOMDatabase);
   d->QueryRetrieveWidget->setRetrieveDatabase(d->DICOMDatabase);
 
   // update the button and let any connected slots know about the change
   d->DirectoryButton->setDirectory(directory);
-  d->ThumbnailsWidget->setDatabaseDirectory(directory);
-  d->ImagePreview->setDatabaseDirectory(directory);
   emit databaseDirectoryChanged(directory);
 }
 
@@ -436,12 +361,6 @@ QString ctkDICOMBrowser::databaseDirectory() const
   return settings.value("DatabaseDirectory").toString();
 }
 
-//----------------------------------------------------------------------------
-bool ctkDICOMBrowser::searchWidgetPopUpMode(){
-  Q_D(ctkDICOMBrowser);
-  return d->IsSearchWidgetPopUpMode;
-}
-
 //------------------------------------------------------------------------------
 void ctkDICOMBrowser::setTagsToPrecache( const QStringList tags)
 {
@@ -465,32 +384,6 @@ ctkDICOMDatabase* ctkDICOMBrowser::database(){
 }
 
 //----------------------------------------------------------------------------
-void ctkDICOMBrowser::setSearchWidgetPopUpMode(bool flag){
-  Q_D(ctkDICOMBrowser);
-
-  if(flag)
-    {
-    d->SearchDockWidget->setTitleBarWidget(0);
-    d->SearchPopUpButton->show();
-    d->SearchDockWidget->hide();
-    d->SearchDockWidget->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
-    connect(d->SearchDockWidget, SIGNAL(topLevelChanged(bool)), this, SLOT(onSearchWidgetTopLevelChanged(bool)));
-    connect(d->SearchPopUpButton, SIGNAL(clicked()), this, SLOT(onSearchPopUpButtonClicked()));
-    }
-  else
-    {
-    d->SearchDockWidget->setTitleBarWidget(new QWidget());
-    d->SearchPopUpButton->hide();
-    d->SearchDockWidget->show();
-    d->SearchDockWidget->setFeatures(QDockWidget::NoDockWidgetFeatures);
-    disconnect(d->SearchDockWidget, SIGNAL(topLevelChanged(bool)), this, SLOT(onSearchWidgetTopLevelChanged(bool)));
-    disconnect(d->SearchPopUpButton, SIGNAL(clicked()), this, SLOT(onSearchPopUpButtonClicked()));
-    }
-
-  d->IsSearchWidgetPopUpMode = flag;
-}
-
-//----------------------------------------------------------------------------
 void ctkDICOMBrowser::onFileIndexed(const QString& filePath)
 {
   // Update the progress dialog when the file name changes
@@ -529,7 +422,6 @@ void ctkDICOMBrowser::openQueryDialog()
 void ctkDICOMBrowser::onQueryRetrieveFinished()
 {
   Q_D(ctkDICOMBrowser);
-  d->DICOMModel.reset();
   emit this->queryRetrieveFinished();
 }
 
@@ -537,93 +429,7 @@ void ctkDICOMBrowser::onQueryRetrieveFinished()
 void ctkDICOMBrowser::onRemoveAction()
 {
   Q_D(ctkDICOMBrowser);
-
-  //d->QueryRetrieveWidget->show();
-  // d->QueryRetrieveWidget->raise();
-  std::cout << "on remove" << std::endl;
-  QModelIndexList selection = d->TreeView->selectionModel()->selectedIndexes();
-  std::cout << selection.size() << std::endl;
-  QModelIndex index;
-  foreach(index,selection)
-  {
-    QModelIndex index0 = index.sibling(index.row(), 0);
-    if ( d->DICOMModel.data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::SeriesType))
-    {
-      QString seriesUID = d->DICOMModel.data(index0,ctkDICOMModel::UIDRole).toString();
-      d->DICOMDatabase->removeSeries(seriesUID);
-    }
-    else if ( d->DICOMModel.data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::StudyType))
-    {
-      QString studyUID = d->DICOMModel.data(index0,ctkDICOMModel::UIDRole).toString();
-      d->DICOMDatabase->removeStudy(studyUID);
-    }
-    else if ( d->DICOMModel.data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::PatientType))
-    {
-      QString patientUID = d->DICOMModel.data(index0,ctkDICOMModel::UIDRole).toString();
-      d->DICOMDatabase->removePatient(patientUID);
-    }
-  }
-  d->DICOMModel.reset();
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::suspendModel()
-{
-  Q_D(ctkDICOMBrowser);
-
-  d->DICOMModel.setDatabase(d->EmptyDatabase);
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::resumeModel()
-{
-  Q_D(ctkDICOMBrowser);
-
-  d->DICOMModel.setDatabase(d->DICOMDatabase->database());
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::resetModel()
-{
-  Q_D(ctkDICOMBrowser);
-
-  d->DICOMModel.reset();
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onThumbnailSelected(const ctkThumbnailLabel& widget)
-{
-    Q_D(ctkDICOMBrowser);
-
-  QModelIndex index = widget.property("sourceIndex").value<QPersistentModelIndex>();
-  if(index.isValid())
-    {
-    d->ImagePreview->onModelSelected(index);
-    }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onThumbnailDoubleClicked(const ctkThumbnailLabel& widget)
-{
-    Q_D(ctkDICOMBrowser);
-
-    QModelIndex index = widget.property("sourceIndex").value<QPersistentModelIndex>();
-
-    if(!index.isValid())
-      {
-      return;
-      }
-
-    ctkDICOMModel* model = const_cast<ctkDICOMModel*>(qobject_cast<const ctkDICOMModel*>(index.model()));
-    QModelIndex index0 = index.sibling(index.row(), 0);
-
-    if(model && (model->data(index0,ctkDICOMModel::TypeRole) != static_cast<int>(ctkDICOMModel::ImageType)))
-      {
-        this->onModelSelected(index0);
-        d->TreeView->setCurrentIndex(index0);
-        d->ThumbnailsWidget->addThumbnails(index0);
-        d->ImagePreview->onModelSelected(index0);
-      }
+  d->dicomTableManager->deleteSelectedRows();
 }
 
 //----------------------------------------------------------------------------
@@ -698,342 +504,8 @@ void ctkDICOMBrowser::onImportDirectory(QString directory)
 }
 
 //----------------------------------------------------------------------------
-void ctkDICOMBrowser::onModelSelected(const QModelIndex &index){
-Q_D(ctkDICOMBrowser);
-
-    ctkDICOMModel* model = const_cast<ctkDICOMModel*>(qobject_cast<const ctkDICOMModel*>(index.model()));
-
-    if(model)
-      {
-        QModelIndex index0 = index.sibling(index.row(), 0);
-
-        if ( model->data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::PatientType) )
-          {
-          d->NextImageButton->show();
-          d->PrevImageButton->show();
-          d->NextSeriesButton->show();
-          d->PrevSeriesButton->show();
-          d->NextStudyButton->show();
-          d->PrevStudyButton->show();
-          }
-        else if ( model->data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::StudyType) )
-          {
-          d->NextImageButton->show();
-          d->PrevImageButton->show();
-          d->NextSeriesButton->show();
-          d->PrevSeriesButton->show();
-          d->NextStudyButton->hide();
-          d->PrevStudyButton->hide();
-          }
-        else if ( model->data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::SeriesType) )
-          {
-          d->NextImageButton->show();
-          d->PrevImageButton->show();
-          d->NextSeriesButton->hide();
-          d->PrevSeriesButton->hide();
-          d->NextStudyButton->hide();
-          d->PrevStudyButton->hide();
-          }
-        else
-          {
-          d->NextImageButton->hide();
-          d->PrevImageButton->hide();
-          d->NextSeriesButton->hide();
-          d->PrevSeriesButton->hide();
-          d->NextStudyButton->hide();
-          d->PrevStudyButton->hide();
-          }
-        d->ActionRemove->setEnabled(
-            model->data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::SeriesType) ||
-            model->data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::StudyType) ||
-            model->data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::PatientType) );
-        }
-
-      else
-        {
-        d->NextImageButton->hide();
-        d->PrevImageButton->hide();
-        d->NextSeriesButton->hide();
-        d->PrevSeriesButton->hide();
-        d->NextStudyButton->hide();
-        d->PrevStudyButton->hide();
-        d->ActionRemove->setEnabled(false);
-        }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onNextImage(){
-    Q_D(ctkDICOMBrowser);
-
-    QModelIndex currentIndex = d->ImagePreview->currentImageIndex();
-
-    if(currentIndex.isValid())
-      {
-      ctkDICOMModel* model = const_cast<ctkDICOMModel*>(qobject_cast<const ctkDICOMModel*>(currentIndex.model()));
-
-      if(model)
-        {
-        QModelIndex seriesIndex = currentIndex.parent();
-
-        int imageCount = model->rowCount(seriesIndex);
-        int imageID = currentIndex.row();
-
-        imageID = (imageID+1)%imageCount;
-
-        int max = d->PlaySlider->maximum();
-        if(imageID > 0 && imageID < max)
-          {
-            d->PlaySlider->setValue(imageID);
-          }
-
-        QModelIndex nextIndex = currentIndex.sibling(imageID, 0);
-
-        d->ImagePreview->onModelSelected(nextIndex);
-        d->ThumbnailsWidget->selectThumbnailFromIndex(nextIndex);
-        }
-      }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onPreviousImage(){
-    Q_D(ctkDICOMBrowser);
-
-    QModelIndex currentIndex = d->ImagePreview->currentImageIndex();
-
-    if(currentIndex.isValid())
-      {
-      ctkDICOMModel* model = const_cast<ctkDICOMModel*>(qobject_cast<const ctkDICOMModel*>(currentIndex.model()));
-
-      if(model)
-        {
-        QModelIndex seriesIndex = currentIndex.parent();
-
-        int imageCount = model->rowCount(seriesIndex);
-        int imageID = currentIndex.row();
-
-        imageID--;
-        if(imageID < 0) imageID += imageCount;
-
-        int max = d->PlaySlider->maximum();
-        if(imageID > 0 && imageID < max)
-          {
-            d->PlaySlider->setValue(imageID);
-          }
-
-        QModelIndex prevIndex = currentIndex.sibling(imageID, 0);
-
-        d->ImagePreview->onModelSelected(prevIndex);
-        d->ThumbnailsWidget->selectThumbnailFromIndex(prevIndex);
-        }
-      }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onNextSeries(){
-    Q_D(ctkDICOMBrowser);
-
-    QModelIndex currentIndex = d->ImagePreview->currentImageIndex();
-
-    if(currentIndex.isValid())
-      {
-      ctkDICOMModel* model = const_cast<ctkDICOMModel*>(qobject_cast<const ctkDICOMModel*>(currentIndex.model()));
-
-      if(model)
-        {
-        QModelIndex seriesIndex = currentIndex.parent();
-        QModelIndex studyIndex = seriesIndex.parent();
-
-        int seriesCount = model->rowCount(studyIndex);
-        int seriesID = seriesIndex.row();
-
-        seriesID = (seriesID + 1)%seriesCount;
-
-        QModelIndex nextIndex = seriesIndex.sibling(seriesID, 0);
-
-        d->ImagePreview->onModelSelected(nextIndex);
-        d->ThumbnailsWidget->selectThumbnailFromIndex(nextIndex);
-        }
-      }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onPreviousSeries(){
-    Q_D(ctkDICOMBrowser);
-
-    QModelIndex currentIndex = d->ImagePreview->currentImageIndex();
-
-    if(currentIndex.isValid())
-      {
-      ctkDICOMModel* model = const_cast<ctkDICOMModel*>(qobject_cast<const ctkDICOMModel*>(currentIndex.model()));
-
-      if(model)
-        {
-        QModelIndex seriesIndex = currentIndex.parent();
-        QModelIndex studyIndex = seriesIndex.parent();
-
-        int seriesCount = model->rowCount(studyIndex);
-        int seriesID = seriesIndex.row();
-
-        seriesID--;
-        if(seriesID < 0) seriesID += seriesCount;
-
-        QModelIndex prevIndex = seriesIndex.sibling(seriesID, 0);
-
-        d->ImagePreview->onModelSelected(prevIndex);
-        d->ThumbnailsWidget->selectThumbnailFromIndex(prevIndex);
-        }
-      }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onNextStudy(){
-    Q_D(ctkDICOMBrowser);
-
-    QModelIndex currentIndex = d->ImagePreview->currentImageIndex();
-
-    if(currentIndex.isValid())
-      {
-      ctkDICOMModel* model = const_cast<ctkDICOMModel*>(qobject_cast<const ctkDICOMModel*>(currentIndex.model()));
-
-      if(model)
-        {
-        QModelIndex seriesIndex = currentIndex.parent();
-        QModelIndex studyIndex = seriesIndex.parent();
-        QModelIndex patientIndex = studyIndex.parent();
-
-        int studyCount = model->rowCount(patientIndex);
-        int studyID = studyIndex.row();
-
-        studyID = (studyID + 1)%studyCount;
-
-        QModelIndex nextIndex = studyIndex.sibling(studyID, 0);
-
-        d->ImagePreview->onModelSelected(nextIndex);
-        d->ThumbnailsWidget->selectThumbnailFromIndex(nextIndex);
-        }
-      }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onPreviousStudy(){
-    Q_D(ctkDICOMBrowser);
-
-    QModelIndex currentIndex = d->ImagePreview->currentImageIndex();
-
-    if(currentIndex.isValid())
-      {
-      ctkDICOMModel* model = const_cast<ctkDICOMModel*>(qobject_cast<const ctkDICOMModel*>(currentIndex.model()));
-
-      if(model)
-        {
-        QModelIndex seriesIndex = currentIndex.parent();
-        QModelIndex studyIndex = seriesIndex.parent();
-        QModelIndex patientIndex = studyIndex.parent();
-
-        int studyCount = model->rowCount(patientIndex);
-        int studyID = studyIndex.row();
-
-        studyID--;
-        if(studyID < 0) studyID += studyCount;
-
-        QModelIndex prevIndex = studyIndex.sibling(studyID, 0);
-
-        d->ImagePreview->onModelSelected(prevIndex);
-        d->ThumbnailsWidget->selectThumbnailFromIndex(prevIndex);
-        }
-      }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onTreeCollapsed(const QModelIndex &index){
-    Q_UNUSED(index);
-    Q_D(ctkDICOMBrowser);
-    d->TreeView->resizeColumnToContents(0);
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onTreeExpanded(const QModelIndex &index){
-    Q_UNUSED(index);
-    Q_D(ctkDICOMBrowser);
-    d->TreeView->resizeColumnToContents(0);
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onAutoPlayCheckboxStateChanged(int state){
-    Q_D(ctkDICOMBrowser);
-
-    if(state == 0) //OFF
-      {
-      disconnect(d->AutoPlayTimer, SIGNAL(timeout()), this, SLOT(onAutoPlayTimer()));
-      d->AutoPlayTimer->deleteLater();
-      }
-    else if(state == 2) //ON
-      {
-      d->AutoPlayTimer = new QTimer(this);
-      connect(d->AutoPlayTimer, SIGNAL(timeout()), this, SLOT(onAutoPlayTimer()));
-      d->AutoPlayTimer->start(50);
-      }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onAutoPlayTimer(){
-    this->onNextImage();
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onThumbnailWidthSliderValueChanged(int val){
-  Q_D(ctkDICOMBrowser);
-  d->ThumbnailsWidget->setThumbnailSize(QSize(val, val));
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onSearchParameterChanged(){
-  Q_D(ctkDICOMBrowser);
-  d->DICOMModel.setDatabase(d->DICOMDatabase->database(), d->SearchOption->parameters());
-
-  this->onModelSelected(d->DICOMModel.index(0,0));
-  d->ThumbnailsWidget->clearThumbnails();
-  d->ThumbnailsWidget->addThumbnails(d->DICOMModel.index(0,0));
-  d->ImagePreview->clearImages();
-  d->ImagePreview->onModelSelected(d->DICOMModel.index(0,0));
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onImagePreviewDisplayed(int imageID, int count){
-  Q_D(ctkDICOMBrowser);
-
-  d->PlaySlider->setMinimum(0);
-  d->PlaySlider->setMaximum(count-1);
-  d->PlaySlider->setValue(imageID);
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onSearchPopUpButtonClicked(){
-  Q_D(ctkDICOMBrowser);
-
-  if(d->SearchDockWidget->isFloating())
-    {
-    d->SearchDockWidget->hide();
-    d->SearchDockWidget->setFloating(false);
-    }
-  else
-    {
-    d->SearchDockWidget->setFloating(true);
-    d->SearchDockWidget->adjustSize();
-    d->SearchDockWidget->show();
-    }
-}
-
-//----------------------------------------------------------------------------
-void ctkDICOMBrowser::onSearchWidgetTopLevelChanged(bool topLevel){
+void ctkDICOMBrowser::onModelSelected(const QItemSelection &, const QItemSelection &)
+{
   Q_D(ctkDICOMBrowser);
-
-  if(topLevel)
-    {
-    d->SearchDockWidget->show();
-    }
-  else
-    {
-    d->SearchDockWidget->hide();
-    }
+  d->ActionRemove->setEnabled(true);
 }

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

@@ -22,6 +22,7 @@
 #define __ctkDICOMBrowser_h
 
 // Qt includes 
+#include <QItemSelection>
 #include <QWidget>
 
 #include "ctkDICOMWidgetsExport.h"
@@ -37,7 +38,6 @@ class CTK_DICOM_WIDGETS_EXPORT ctkDICOMBrowser : public QWidget
   Q_OBJECT
   Q_PROPERTY(ctkDICOMDatabase* database READ database)
   Q_PROPERTY(QString databaseDirectory READ databaseDirectory WRITE setDatabaseDirectory)
-  Q_PROPERTY(bool searchWidgetPopUpMode READ searchWidgetPopUpMode WRITE setSearchWidgetPopUpMode)
   Q_PROPERTY(QStringList tagsToPrecache READ tagsToPrecache WRITE setTagsToPrecache)
   Q_PROPERTY(bool displayImportSummary READ displayImportSummary WRITE setDisplayImportSummary)
 
@@ -61,11 +61,6 @@ public:
   /// Also provides a dialog box for progress
   void updateDatabaseSchemaIfNeeded();
 
-  /// Setting search widget pop-up mode
-  /// Default value is false. Setting it to true will make
-  /// search widget to be displayed as pop-up widget
-  void setSearchWidgetPopUpMode(bool flag);
-  bool searchWidgetPopUpMode();
   ctkDICOMDatabase* database();
 
   /// Option to show or not import summary dialog.
@@ -88,10 +83,6 @@ public Q_SLOTS:
   void openQueryDialog();
   void onRemoveAction();
 
-  void suspendModel();
-  void resumeModel();
-  void resetModel();
-
   /// Import a directory - this is used when the user selects a directory
   /// from the Import Dialog, but can also be used externally to trigger
   /// an import (i.e. for testing or to support drag-and-drop)
@@ -115,51 +106,11 @@ Q_SIGNALS:
 protected:
     QScopedPointer<ctkDICOMBrowserPrivate> d_ptr;
 protected Q_SLOTS:
-    void onModelSelected(const QModelIndex& index);
-
-    /// To be called when a thumbnail in thumbnail list widget is selected
-    void onThumbnailSelected(const ctkThumbnailLabel& widget);
+    void onModelSelected(const QItemSelection&, const QItemSelection&);
 
-    /// To be called when a thumbnail in thumbnail list widget is double-clicked
-    void onThumbnailDoubleClicked(const ctkThumbnailLabel& widget);
-
-    /// To be called when previous and next buttons are clicked
-    void onNextImage();
-    void onPreviousImage();
-    void onNextSeries();
-    void onPreviousSeries();
-    void onNextStudy();
-    void onPreviousStudy();
     /// To be called when dialog finishes
     void onQueryRetrieveFinished();
 
-    /// To be called when an entry of the tree list is collapsed
-    void onTreeCollapsed(const QModelIndex& index);
-
-    /// To be called when an entry of the tree list is expanded
-    void onTreeExpanded(const QModelIndex& index);
-
-    /// To be called when auto-play checkbox state changed
-    void onAutoPlayCheckboxStateChanged(int state);
-
-    /// Called by timer for auto-play functionality
-    void onAutoPlayTimer();
-
-    /// To be called when the value of thumbnail size slider bar is changed
-    void onThumbnailWidthSliderValueChanged(int val);
-
-    /// To be called when search parameters in query widget changed
-    void onSearchParameterChanged();
-
-    /// To be called after image preview displayed an image
-    void onImagePreviewDisplayed(int imageID, int count);
-
-private Q_SLOTS:
-
-    void onSearchPopUpButtonClicked();
-
-    void onSearchWidgetTopLevelChanged(bool topLevel);
-
 private:
   Q_DECLARE_PRIVATE(ctkDICOMBrowser);
   Q_DISABLE_COPY(ctkDICOMBrowser);