瀏覽代碼

Add comments to ctkModalityWidget and utility methods

New methods:
bool areAllModalitiesSelected() const;
bool areAllModalitiesVisible() const;
QStringList modalities() const;
Julien Finet 14 年之前
父節點
當前提交
e93e15ace4

+ 15 - 0
Libs/Widgets/Testing/Cpp/ctkModalityWidgetTest1.cpp

@@ -47,6 +47,21 @@ int ctkModalityWidgetTest1(int argc, char * argv [] )
     }
   spy.clear();
 
+  modalityWidget.selectAll();
+  if (!modalityWidget.areAllModalitiesSelected())
+    {
+    std::cerr << "ctkModalityWidget::selectAll() failed" << std::endl;
+    return EXIT_FAILURE;
+    }
+
+  modalityWidget.selectModality("CR", false);
+  if (modalityWidget.areAllModalitiesSelected())
+    {
+    std::cerr << "ctkModalityWidget::selectModality() failed "
+              << " when unselect \"CR\"" << std::endl;
+    return EXIT_FAILURE;
+    }
+
   modalityWidget.showAll();
 
   modalityWidget.show();

+ 24 - 2
Libs/Widgets/ctkModalityWidget.cpp

@@ -108,11 +108,12 @@ void ctkModalityWidgetPrivate::init()
 // --------------------------------------------------------------------------
 void ctkModalityWidgetPrivate::updateAnyCheckBoxState()
 {
+  Q_Q(ctkModalityWidget);
   if (this->SelectedModalities.isEmpty())
     {
     this->AnyCheckBox->setCheckState(Qt::Unchecked);
     }
-  else if (this->SelectedModalities.count() == this->Modalities.count())
+  else if (q->areAllModalitiesSelected())
     {
     this->AnyCheckBox->setCheckState(Qt::Checked);
     }
@@ -201,7 +202,7 @@ void ctkModalityWidget::showModality(const QString& modality, bool show)
 void ctkModalityWidget::selectAll()
 {
   Q_D(ctkModalityWidget);
-  if (d->SelectedModalities.count() == d->Modalities.count())
+  if (this->areAllModalitiesSelected())
     {
     return;
     }
@@ -252,6 +253,27 @@ void ctkModalityWidget::hideAll()
 }
 
 // --------------------------------------------------------------------------
+bool ctkModalityWidget::areAllModalitiesSelected()const
+{
+  Q_D(const ctkModalityWidget);
+  return d->SelectedModalities.count() == d->Modalities.count();
+}
+
+// --------------------------------------------------------------------------
+bool ctkModalityWidget::areAllModalitiesVisible()const
+{
+  Q_D(const ctkModalityWidget);
+  return d->VisibleModalities.count() == d->Modalities.count();
+}
+
+// --------------------------------------------------------------------------
+QStringList ctkModalityWidget::modalities()const
+{
+  Q_D(const ctkModalityWidget);
+  return d->Modalities.keys();
+}
+
+// --------------------------------------------------------------------------
 void ctkModalityWidget::onAnyChanged(int state)
 {
   if (state == Qt::Unchecked)

+ 37 - 2
Libs/Widgets/ctkModalityWidget.h

@@ -29,7 +29,7 @@
 class ctkModalityWidgetPrivate;
 
 ///
-/// ctkModalityWidget allows the user to ...
+/// ctkModalityWidget allows the user to select DICOM modalities
 class CTK_WIDGETS_EXPORT ctkModalityWidget : public QWidget
 {
   Q_OBJECT
@@ -42,28 +42,63 @@ public:
   /// Constructor
   /// If \li parent is null, ctkModalityWidget will be a top-level widget
   /// \note The \li parent can be set later using QWidget::setParent()
+  /// By default, all the modalities are selected and only the following list 
+  /// of modalities is visible: ("CT", "MR", "US", "CR", "XA", "NM", "PT")
   explicit ctkModalityWidget(QWidget* parent = 0);
   
   /// Destructor
   virtual ~ctkModalityWidget();
 
+  /// Return the current list of selected modalities, e.g. ("CR", "CT", "NM")
   QStringList selectedModalities()const;
+
+  /// Select a list of modalities, e.g ("XA", "RX", "MG")
   void setSelectedModalities(const QStringList& modalities);
   
+  /// Return the current list of visible modalities
   QStringList visibleModalities()const;
+
+  /// Show a list of modalities
   void setVisibleModalities(const QStringList& modalities);
-  
+
+  /// Select a modality (visible or not). Does nothing if \a modality doesn't
+  /// exist.
   void selectModality(const QString& modality, bool select = true);
+  /// Select a modality. Does nothing if \a modality doesn't exist.
   void showModality(const QString& modality, bool show = true);
   
+  /// Show all the modalities
   void showAll();
+
+  /// Hide all the modalities
   void hideAll();
+
+  /// Return true if all the modalities (visible or not) are selected.
+  bool areAllModalitiesSelected() const;
+
+  /// Return true if all the modalities (checked or not) are visible.
+  bool areAllModalitiesVisible() const;
+
+  /// Return a list of all the modalities: visible or not, selected or not.
+  /// Please note the order of the modalities might be different than in
+  /// selectedModalities and visibleModalities.
+  QStringList modalities() const;
+
 public slots:
+  /// Select all the modalities (visible or not)
+  /// Note: only emit the signal selectedModalitiesChanged once.
   void selectAll();
+
+  /// Unselect all the modalities (visible or not)
+  /// Note: only emit the signal selectedModalitiesChanged once.
   void unselectAll();
 
 signals:
+  /// Fired anytime a modality is selected or unselected.
+  /// Note: When the user click on "Any", it only emits the signal
+  /// once (and not after each item is selected/unselected).
   void selectedModalitiesChanged(const QStringList modalities);
+
 protected slots:
   void onAnyChanged(int state);
   void onModalityChecked(bool);