Salome HOME
refs #497: redesign of HYDRO main menu.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_ListModel.cxx
index 24e3fe8f4c556081ea468174a5aeadf2f3864541..0a8fb43a5602779ad460e891dae22708008098d4 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -6,7 +6,7 @@
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -37,7 +37,7 @@ const QString OBJ_LIST_MIME_TYPE = "application/hydro.objects.list";
   @param theParent the parent object
 */
 HYDROGUI_ListModel::HYDROGUI_ListModel( QObject* theParent )
- : QAbstractListModel( theParent )
+ : QAbstractListModel( theParent ), myIsDecorationEnabled( true )
 {
   // Get resource manager
   SUIT_ResourceMgr* aResMgr = 0;
@@ -89,8 +89,8 @@ QVariant HYDROGUI_ListModel::data( const QModelIndex &theIndex, int theRole ) co
 
   case Qt::DecorationRole:
     {
-      if( aColumn==0 && aRow >=0 && aRow < myObjects.count() )
-      {
+      if( myIsDecorationEnabled && 
+          aColumn==0 && aRow >=0 && aRow < myObjects.count() ) {
         bool isVisible = isObjectVisible( aRow );
         if( isVisible )
           return myEye;
@@ -152,6 +152,36 @@ HYDROGUI_ListModel::ObjectList HYDROGUI_ListModel::getObjects() const
   return anObjects;
 }
 
+/**
+  Add the object to the end of the list.
+  @param theObjects the pair (object; visibility)
+*/
+void HYDROGUI_ListModel::addObject( const Object2Visible& theObject )
+{
+  myObjects << theObject;
+
+  reset();
+}
+
+/**
+  Remove the object from the list.
+  @param theObjectName the name of the object to remove
+*/
+void HYDROGUI_ListModel::removeObjectByName( const QString& theObjectName )
+{
+  Object2Visible anItem;
+  foreach( anItem, myObjects ) {
+    if ( anItem.first->GetName() == theObjectName ) {
+      break;
+    }
+  }
+
+  myObjects.removeAll(anItem);
+
+  reset();
+}
+
+
 /**
   Check if the object is visible.
   @param theIndex the object index
@@ -453,3 +483,12 @@ bool HYDROGUI_ListModel::isDragAndDropAllowed( const QList<int>& theItems,
 
   return isAllowed;
 }
+
+/**
+  Enable/disable decoration (eye icon).
+  @param theIsToEnable if true - the decoration will be enabled
+*/
+void HYDROGUI_ListModel::setDecorationEnabled( const bool theIsToEnable )
+{
+  myIsDecorationEnabled = theIsToEnable;
+}
\ No newline at end of file