Browse Source

Enable to set display level of ctkDICOMModel

nherlambang 14 years ago
parent
commit
c63e2762a0

+ 13 - 0
Libs/DICOM/Core/ctkDICOMModel.cpp

@@ -67,6 +67,8 @@ public:
   QSqlDatabase DataBase;
   QList<QMap<int, QVariant> > Headers;
   QString      Sort;
+
+  ctkDICOMModel::IndexType displayLevel;
 };
 
 //------------------------------------------------------------------------------
@@ -98,6 +100,7 @@ struct Node
 ctkDICOMModelPrivate::ctkDICOMModelPrivate(ctkDICOMModel& o):q_ptr(&o)
 {
   this->RootNode     = 0;
+  this->displayLevel = ctkDICOMModel::ImageType;
 }
 
 //------------------------------------------------------------------------------
@@ -494,6 +497,10 @@ bool ctkDICOMModel::hasChildren ( const QModelIndex & parentIndex ) const
     {
     return false;
     }
+
+  // We want to show only until displayLevel
+  if(node->Type >= d->displayLevel)return false;
+
   // It's not because we don't have row that we don't have children, maybe it
   // just means that the children haven't been fetched yet
   if (node->RowCount == 0 && !node->AtEnd)
@@ -661,6 +668,12 @@ void ctkDICOMModel::setDatabase(const QSqlDatabase &db)
   d->fetch(QModelIndex(), 256);
 }
 
+void ctkDICOMModel::setDisplayLevel(ctkDICOMModel::IndexType level){
+    Q_D(ctkDICOMModel);
+
+    d->displayLevel = level;
+}
+
 //------------------------------------------------------------------------------
 void ctkDICOMModel::reset()
 {

+ 1 - 1
Libs/DICOM/Core/ctkDICOMModel.h

@@ -53,7 +53,7 @@ public:
   virtual ~ctkDICOMModel();
 
   void setDatabase(const QSqlDatabase& dataBase);
-
+  void setDisplayLevel(ctkDICOMModel::IndexType level);
 
   virtual bool canFetchMore ( const QModelIndex & parent ) const;
   virtual int columnCount ( const QModelIndex & parent = QModelIndex() ) const;

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

@@ -160,6 +160,7 @@ void ctkDICOMAppWidget::setDatabaseDirectory(const QString& directory)
   }
   
   d->DICOMModel.setDatabase(d->DICOMDatabase->database());
+  d->DICOMModel.setDisplayLevel(ctkDICOMModel::SeriesType);
   d->treeView->setModel(&d->DICOMModel);
   d->treeView->resizeColumnToContents(0);