Browse Source

Added a remove action on series level to the ctkDICOMAppWidget

Marco Nolden 13 years ago
parent
commit
c48da92391

+ 31 - 3
Libs/DICOM/Widgets/Resources/UI/ctkDICOMAppWidget.ui

@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>739</width>
-    <height>638</height>
+    <width>788</width>
+    <height>607</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -44,6 +44,7 @@
      <addaction name="ActionExport"/>
      <addaction name="ActionQuery"/>
      <addaction name="ActionSend"/>
+     <addaction name="ActionRemove"/>
     </widget>
    </item>
    <item>
@@ -507,6 +508,17 @@
     <string>Send DICOM Studies to a DICOM node (not yet available)</string>
    </property>
   </action>
+  <action name="ActionRemove">
+   <property name="enabled">
+    <bool>false</bool>
+   </property>
+   <property name="text">
+    <string>Remove</string>
+   </property>
+   <property name="toolTip">
+    <string>Remove from database</string>
+   </property>
+  </action>
  </widget>
  <customwidgets>
   <customwidget>
@@ -715,9 +727,24 @@
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>ActionRemove</sender>
+   <signal>triggered()</signal>
+   <receiver>ctkDICOMAppWidget</receiver>
+   <slot>onRemoveAction()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>391</x>
+     <y>303</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
  <slots>
-  <signal>signal1()</signal>
   <slot>openImportDialog()</slot>
   <slot>openExportDialog()</slot>
   <slot>openQueryDialog()</slot>
@@ -730,5 +757,6 @@
   <slot>onPreviousStudy()</slot>
   <slot>onAutoPlayCheckboxStateChanged(int)</slot>
   <slot>onThumbnailWidthSliderValueChanged(int)</slot>
+  <slot>onRemoveAction()</slot>
  </slots>
 </ui>

+ 26 - 0
Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp

@@ -304,6 +304,29 @@ void ctkDICOMAppWidget::openQueryDialog()
 }
 
 //----------------------------------------------------------------------------
+void ctkDICOMAppWidget::onRemoveAction()
+{
+  Q_D(ctkDICOMAppWidget);
+
+  //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);
+    }
+  }
+  d->DICOMModel.reset();
+}
+
+//----------------------------------------------------------------------------
 void ctkDICOMAppWidget::suspendModel()
 {
   Q_D(ctkDICOMAppWidget);
@@ -426,7 +449,9 @@ Q_D(ctkDICOMAppWidget);
           d->NextStudyButton->hide();
           d->PrevStudyButton->hide();
           }
+        d->ActionRemove->setEnabled(model->data(index0,ctkDICOMModel::TypeRole) == static_cast<int>(ctkDICOMModel::SeriesType) );
         }
+
       else
         {
         d->NextImageButton->hide();
@@ -435,6 +460,7 @@ Q_D(ctkDICOMAppWidget);
         d->PrevSeriesButton->hide();
         d->NextStudyButton->hide();
         d->PrevStudyButton->hide();
+        d->ActionRemove->setEnabled(false);
         }
 }
 

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

@@ -56,6 +56,7 @@ public Q_SLOTS:
   void openImportDialog();
   void openExportDialog();
   void openQueryDialog();
+  void onRemoveAction();
 
   void suspendModel();
   void resumeModel();