]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Start using HYDRO data objects.
authormzn <mzn@opencascade.com>
Thu, 20 Mar 2014 07:38:41 +0000 (07:38 +0000)
committermzn <mzn@opencascade.com>
Thu, 20 Mar 2014 07:38:41 +0000 (07:38 +0000)
src/HYDROGUI/HYDROGUI_ZLevelsDlg.cxx
src/HYDROGUI/HYDROGUI_ZLevelsDlg.h
src/HYDROGUI/HYDROGUI_ZLevelsModel.cxx
src/HYDROGUI/HYDROGUI_ZLevelsModel.h

index bb899965b4689dad32259879c3d859555c15faa4..7055cd082f588afc506015a31ba3c6af71db0ac0 100644 (file)
@@ -102,21 +102,24 @@ HYDROGUI_ZLevelsDlg::~HYDROGUI_ZLevelsDlg()
 {
 }
 
-void HYDROGUI_ZLevelsDlg::setObjects( const QList<QString>& theObjects )
+void HYDROGUI_ZLevelsDlg::setObjects( const HYDROGUI_ZLevelsModel::Object2VisibleList& theObjects )
 {
-  QSortFilterProxyModel* aFilterModel = dynamic_cast<QSortFilterProxyModel*>( myList->model() );
-  if( aFilterModel )
-  {
-    HYDROGUI_ZLevelsModel* aModel = dynamic_cast<HYDROGUI_ZLevelsModel*>( aFilterModel->sourceModel() );
-    if( aModel ) {
-      // TODO: to be reimplemented
-      QList<QPair<QString, bool>> anObjects;
-      for ( int i = 0; i < theObjects.count(); i++ ) {
-        anObjects << QPair<QString, bool>( theObjects.at(i), i%2 == 0 );
-      }
-      aModel->setObjects( anObjects );
-    }
+  HYDROGUI_ZLevelsModel* aModel = getListSourceModel();
+  if( aModel ) {
+    aModel->setObjects( theObjects );
+  }
+}
+
+QList<Handle(HYDROData_Entity)> HYDROGUI_ZLevelsDlg::getObjects() const
+{
+  QList<Handle(HYDROData_Entity)> anObjects;
+
+  HYDROGUI_ZLevelsModel* aModel = getListSourceModel();
+  if( aModel ) {
+    anObjects = aModel->getObjects();
   }
+
+  return anObjects;
 }
 
 void HYDROGUI_ZLevelsDlg::onMove( int theType )
@@ -144,3 +147,15 @@ void HYDROGUI_ZLevelsDlg::OnStateChanged()
   QString anExpr = isAll ? "true|false" : "true";
   aFilterModel->setFilterRegExp( anExpr );
 }
+
+HYDROGUI_ZLevelsModel* HYDROGUI_ZLevelsDlg::getListSourceModel() const
+{
+  HYDROGUI_ZLevelsModel* aSourceModel = 0;
+
+  QSortFilterProxyModel* aFilterModel = dynamic_cast<QSortFilterProxyModel*>( myList->model() );
+  if( aFilterModel ) {
+    aSourceModel = dynamic_cast<HYDROGUI_ZLevelsModel*>( aFilterModel->sourceModel() );
+  }
+
+  return aSourceModel;
+}
\ No newline at end of file
index 2ca17ef2a07041c022f90f60e81d3c8f6391bad3..6d249784d0c866adbc2981164c0398f2454535be 100644 (file)
@@ -23,6 +23,8 @@
 #ifndef HYDROGUI_ZLEVELSPANEL_H
 #define HYDROGUI_ZLEVELSPANEL_H
 
+#include "HYDROGUI_ZLevelsModel.h"
+
 #include <QDialog>
 
 class QCheckBox;
@@ -41,12 +43,16 @@ public:
   HYDROGUI_ZLevelsDlg( QWidget* theParent );
   virtual ~HYDROGUI_ZLevelsDlg();
 
-  void setObjects( const QList<QString>& theObjects );
+  void setObjects( const HYDROGUI_ZLevelsModel::Object2VisibleList& theObjects );
+  HYDROGUI_ZLevelsModel::ObjectList getObjects() const;
 
 private slots:
   void onMove( int theType );
   void OnStateChanged();
 
+private:
+  HYDROGUI_ZLevelsModel* getListSourceModel() const;
+
 private:
   QListView* myList;
   QPushButton* myTop;
index f4ac8eae6e33ce2c3f188b4fa7f498ee79425a32..320ea9631cf4c51f14a2ea6f8594ec447e0f82fd 100644 (file)
@@ -50,7 +50,7 @@ QVariant HYDROGUI_ZLevelsModel::data( const QModelIndex &theIndex, int theRole )
   case Qt::DisplayRole:
     {
       if( aColumn==0 && aRow >=0 && aRow < myObjects.count() )
-        return myObjects.at( aRow ).first;
+        return myObjects.at( aRow ).first->GetName();
       else
         return QVariant();
     }
@@ -60,7 +60,7 @@ QVariant HYDROGUI_ZLevelsModel::data( const QModelIndex &theIndex, int theRole )
     {
       if( aColumn==0 && aRow >=0 && aRow < myObjects.count() )
       {
-        bool isVisible = IsObjectVisible( aRow );
+        bool isVisible = isObjectVisible( aRow );
         if( isVisible )
           return myEye;
         else
@@ -72,7 +72,7 @@ QVariant HYDROGUI_ZLevelsModel::data( const QModelIndex &theIndex, int theRole )
 
   case HYDROGUI_VisibleRole:
     {
-      bool isVisible = IsObjectVisible( aRow );
+      bool isVisible = isObjectVisible( aRow );
       return QVariant( isVisible ).toString();
     }
     break;
@@ -86,14 +86,25 @@ int HYDROGUI_ZLevelsModel::rowCount( const QModelIndex &theParent ) const
   return myObjects.count();
 }
 
-void HYDROGUI_ZLevelsModel::setObjects( const QList<QPair<QString, bool>>& theObjects )
+void HYDROGUI_ZLevelsModel::setObjects( const Object2VisibleList& theObjects )
 {
   myObjects = theObjects;
 
   reset();
 }
 
-bool HYDROGUI_ZLevelsModel::IsObjectVisible( int theIndex ) const
+HYDROGUI_ZLevelsModel::ObjectList HYDROGUI_ZLevelsModel::getObjects() const
+{
+  ObjectList anObjects;
+
+  foreach( const Object2Visible& anItem, myObjects ) {
+    anObjects << anItem.first;
+  }
+
+  return anObjects;
+}
+
+bool HYDROGUI_ZLevelsModel::isObjectVisible( int theIndex ) const
 {
   bool isVisible = false;
 
@@ -212,7 +223,7 @@ bool HYDROGUI_ZLevelsModel::move( const int theItem, const OpType theType,
       if ( theItem > 0 ) {
         aDestinationIndex = theItem - 1;
         if ( theIsVisibleOnly ) {
-          while ( aDestinationIndex >= 0 && !IsObjectVisible( aDestinationIndex ) ) {
+          while ( aDestinationIndex >= 0 && !isObjectVisible( aDestinationIndex ) ) {
             aDestinationIndex--;
           }
         }
@@ -222,7 +233,7 @@ bool HYDROGUI_ZLevelsModel::move( const int theItem, const OpType theType,
       if ( theItem < myObjects.count() - 1 ) {
         aDestinationIndex = theItem + 1;
         if ( theIsVisibleOnly ) {
-          while ( aDestinationIndex < myObjects.count() && !IsObjectVisible( aDestinationIndex ) ) {
+          while ( aDestinationIndex < myObjects.count() && !isObjectVisible( aDestinationIndex ) ) {
             aDestinationIndex++;
           }
         }
index 62c5f1b99a4487a94e4678f195ea34bd877510be..af30f4585e83a6b0713d680fc9d22569c5240a4f 100644 (file)
@@ -23,6 +23,8 @@
 #ifndef HYDROGUI_ZLEVELSMODEL_H
 #define HYDROGUI_ZLEVELSMODEL_H
 
+#include <HYDROData_Entity.h>
+
 #include <QAbstractListModel>
 #include <QPixmap>
 
@@ -39,6 +41,10 @@ class HYDROGUI_ZLevelsModel : public QAbstractListModel
 public:
   enum OpType { Top, Up, Down, Bottom, DragAndDrop };
 
+  typedef QPair<Handle(HYDROData_Entity), bool> Object2Visible;
+  typedef QList<Object2Visible> Object2VisibleList;
+  typedef QList<Handle(HYDROData_Entity)> ObjectList;
+
 public:
   HYDROGUI_ZLevelsModel( QObject* theParent = 0 );
   virtual ~HYDROGUI_ZLevelsModel();
@@ -59,7 +65,8 @@ public:
 
   QList<int> getIds( const QModelIndexList& theIndexes, bool theIsToSort = true ) const;
 
-  void setObjects( const QList<QPair<QString, bool>>& theObjects );
+  void setObjects( const Object2VisibleList& theObjects );
+  ObjectList getObjects() const;
 
   bool move( const int theItem, const OpType theType, bool theIsVisibleOnly,
              const int theDropItem = -1 );
@@ -67,10 +74,10 @@ public:
              const int theDropItem = -1 );
 
 protected:
-  bool IsObjectVisible( int theIndex ) const;
+  bool isObjectVisible( int theIndex ) const;
 
 private:
-  QList<QPair<QString, bool>> myObjects;
+  Object2VisibleList myObjects;
   QPixmap myEmpty, myEye;
 };