]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
filter model has been implemented
authorasl <asl@opencascade.com>
Wed, 19 Mar 2014 08:31:45 +0000 (08:31 +0000)
committerasl <asl@opencascade.com>
Wed, 19 Mar 2014 08:31:45 +0000 (08:31 +0000)
src/ZLEVEL/HYDROGUI_ZLevelsDlg.cxx
src/ZLEVEL/HYDROGUI_ZLevelsDlg.h
src/ZLEVEL/HYDROGUI_ZLevelsModel.cxx
src/ZLEVEL/HYDROGUI_ZLevelsModel.h

index 238badf2f6d2952e6e9f3ad7c7b154471973b9c0..267a18693c95a70c87299374cacd8bd9ea11af41 100644 (file)
@@ -27,6 +27,7 @@
 #include <QLayout>
 #include <QListView>
 #include <QPushButton>
+#include <QSortFilterProxyModel>
 
 
 HYDROGUI_ZLevelsDlg::HYDROGUI_ZLevelsDlg( QWidget* theParent )
@@ -38,7 +39,14 @@ HYDROGUI_ZLevelsDlg::HYDROGUI_ZLevelsDlg( QWidget* theParent )
   QHBoxLayout* aListLayout = new QHBoxLayout();
 
   myList = new QListView( this );
-  myList->setModel( new HYDROGUI_ZLevelsModel );
+  
+  HYDROGUI_ZLevelsModel* aModel = new HYDROGUI_ZLevelsModel();
+  QSortFilterProxyModel* aFilteredModel = new QSortFilterProxyModel();
+  aFilteredModel->setSourceModel( aModel );
+  aFilteredModel->setFilterKeyColumn( 0 );
+  aFilteredModel->setFilterRole( HYDROGUI_VisibleRole );
+
+  myList->setModel( aFilteredModel );
 
   myTop = new QPushButton( tr("TOP") );
   myUp = new QPushButton( tr("UP") );
@@ -64,6 +72,10 @@ HYDROGUI_ZLevelsDlg::HYDROGUI_ZLevelsDlg( QWidget* theParent )
   aDlgButtonsLayout->addWidget( myClose );
   aDlgButtonsLayout->addStretch();
   aMainLayout->addLayout( aDlgButtonsLayout );
+
+  connect( myAllObjects, SIGNAL( stateChanged( int ) ), this, SLOT( OnStateChanged() ) );
+
+  OnStateChanged();
 }
 
 HYDROGUI_ZLevelsDlg::~HYDROGUI_ZLevelsDlg()
@@ -72,6 +84,19 @@ HYDROGUI_ZLevelsDlg::~HYDROGUI_ZLevelsDlg()
 
 void HYDROGUI_ZLevelsDlg::setObjects( const QList<QString>& theObjects )
 {
-  HYDROGUI_ZLevelsModel* aModel = dynamic_cast<HYDROGUI_ZLevelsModel*>( myList->model() );
-  aModel->setObjects( theObjects );
-}
\ No newline at end of file
+  QSortFilterProxyModel* aFilterModel = dynamic_cast<QSortFilterProxyModel*>( myList->model() );
+  if( aFilterModel )
+  {
+    HYDROGUI_ZLevelsModel* aModel = dynamic_cast<HYDROGUI_ZLevelsModel*>( aFilterModel->sourceModel() );
+    if( aModel )
+      aModel->setObjects( theObjects );
+  }
+}
+
+void HYDROGUI_ZLevelsDlg::OnStateChanged()
+{
+  QSortFilterProxyModel* aFilterModel = dynamic_cast<QSortFilterProxyModel*>( myList->model() );
+  bool isAll = myAllObjects->isChecked();
+  QString anExpr = isAll ? "true|false" : "true";
+  aFilterModel->setFilterRegExp( anExpr );
+}
index 140e772e40615b4e9394303b4e7aaf1974703e8c..44e3343d2a2c79097e3f9669daeca819dcb6018f 100644 (file)
@@ -43,6 +43,9 @@ public:
 
   void setObjects( const QList<QString>& theObjects );
 
+private slots:
+  void OnStateChanged();
+
 private:
   QListView* myList;
   QPushButton* myTop;
index 57ce54e7d931b11f28d6e5c315838b9d23a706a4..9702bf77c0ee310eb810d7534e1db31a3b33a198 100644 (file)
@@ -64,6 +64,11 @@ QVariant HYDROGUI_ZLevelsModel::data( const QModelIndex &theIndex, int theRole )
       return QVariant();
     }
     break;
+  case HYDROGUI_VisibleRole:
+    {
+      bool isVisible = IsObjectVisible( aRow );
+      return QVariant( isVisible ).toString();
+    }
   }
 
   return aVariant;
@@ -77,6 +82,7 @@ int HYDROGUI_ZLevelsModel::rowCount( const QModelIndex &theParent ) const
 void HYDROGUI_ZLevelsModel::setObjects( const QList<QString>& theObjects )
 {
   myObjects = theObjects;
+  reset();
 }
 
 bool HYDROGUI_ZLevelsModel::IsObjectVisible( int theIndex ) const
index 5ae5675e547e15769329a1d2fc5040c0005ed367..bdacefc76aa41483aa426385edfa96f3cd3ba167 100644 (file)
@@ -26,6 +26,8 @@
 #include <QAbstractListModel>
 #include <QPixmap>
 
+const int HYDROGUI_VisibleRole = Qt::UserRole + 1;
+
 /** 
  * \class HYDROGUI_ZLevelsModel
  * \brief The class representing custom list model for the Z levels
@@ -36,7 +38,7 @@ class HYDROGUI_ZLevelsModel : public QAbstractListModel
 
 public:
   HYDROGUI_ZLevelsModel( QObject* theParent = 0 );
-  ~HYDROGUI_ZLevelsModel();
+  virtual ~HYDROGUI_ZLevelsModel();
 
   virtual QVariant data( const QModelIndex &theIndex, int theRole = Qt::DisplayRole ) const;