Salome HOME
Initial merge of branch 'BR_HYDRO_IMPS_2016' into BR_PORTING_OCCT_7
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_ListModel.cxx
index 0a8fb43a5602779ad460e891dae22708008098d4..a452d2b3ba7145356f386adaf93f09285c28c6ca 100644 (file)
@@ -1,8 +1,4 @@
-// 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
-//
+// Copyright (C) 2014-2015  EDF-R&D
 // 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
@@ -55,9 +51,6 @@ HYDROGUI_ListModel::HYDROGUI_ListModel( QObject* theParent )
     myEye = QPixmap( 16, 16 );
     myEye.fill( Qt::black );
   }
-
-  // Set the supported drag actions for the items in the model
-  setSupportedDragActions( Qt::MoveAction | Qt::CopyAction );
 }
 
 /**
@@ -67,6 +60,24 @@ HYDROGUI_ListModel::~HYDROGUI_ListModel()
 {
 }
 
+void HYDROGUI_ListModel::setBackgroundColor(int theInd, QColor theColor)
+{
+  myColoredRow[theInd] = theColor;
+}
+
+void HYDROGUI_ListModel::clearAllBackgroundColors()
+{
+  myColoredRow.clear();
+}
+
+QColor HYDROGUI_ListModel::getBackgroundColor(int theInd) const
+{
+  if (myColoredRow.count( theInd ))
+    return myColoredRow[theInd];
+  else
+    return QColor();
+}
+
 /**
 */
 QVariant HYDROGUI_ListModel::data( const QModelIndex &theIndex, int theRole ) const
@@ -86,6 +97,16 @@ QVariant HYDROGUI_ListModel::data( const QModelIndex &theIndex, int theRole ) co
         return QVariant();
     }
     break;
+  case Qt::BackgroundRole:
+    {
+      if( aColumn==0 && aRow >=0 && aRow < myObjects.count() && myColoredRow.contains(aRow))
+      {
+        QBrush aBackgr(myColoredRow[aRow]);
+        return aBackgr;
+      }
+      else
+        return QVariant();
+    }
 
   case Qt::DecorationRole:
     {
@@ -132,9 +153,9 @@ int HYDROGUI_ListModel::rowCount( const QModelIndex &theParent ) const
 */
 void HYDROGUI_ListModel::setObjects( const Object2VisibleList& theObjects )
 {
+  beginResetModel();
   myObjects = theObjects;
-
-  reset();
+  endResetModel();
 }
 
 /**
@@ -158,9 +179,9 @@ HYDROGUI_ListModel::ObjectList HYDROGUI_ListModel::getObjects() const
 */
 void HYDROGUI_ListModel::addObject( const Object2Visible& theObject )
 {
+  beginResetModel();
   myObjects << theObject;
-
-  reset();
+  endResetModel();
 }
 
 /**
@@ -176,9 +197,9 @@ void HYDROGUI_ListModel::removeObjectByName( const QString& theObjectName )
     }
   }
 
+  beginResetModel();
   myObjects.removeAll(anItem);
-
-  reset();
+  endResetModel();
 }
 
 
@@ -291,6 +312,14 @@ Qt::DropActions HYDROGUI_ListModel::supportedDropActions() const
   return Qt::MoveAction | Qt::CopyAction;
 }
 
+/**
+*/
+Qt::DropActions HYDROGUI_ListModel::supportedDragActions() const
+{
+  // Set the supported drag actions for the items in the model
+  return Qt::MoveAction | Qt::CopyAction;
+}
+
 /**
   Get list of ids by the list model indexes.
   @param theIsToSort defines if the list of ids should be sorted in ascending order
@@ -376,6 +405,7 @@ bool HYDROGUI_ListModel::move( const int theItem, const OpType theType,
   if ( aDestinationIndex >= 0 && aDestinationIndex < myObjects.count() ) {
     int aDestinationRow = isInsertBefore ? aDestinationIndex : aDestinationIndex + 1;
     if ( beginMoveRows( QModelIndex(), theItem, theItem, QModelIndex(), aDestinationRow ) ) {
+      myPrevObjects = myObjects;
       myObjects.move( theItem, aDestinationIndex );
       endMoveRows();
       aRes = true;
@@ -491,4 +521,11 @@ bool HYDROGUI_ListModel::isDragAndDropAllowed( const QList<int>& theItems,
 void HYDROGUI_ListModel::setDecorationEnabled( const bool theIsToEnable )
 {
   myIsDecorationEnabled = theIsToEnable;
-}
\ No newline at end of file
+}
+
+void HYDROGUI_ListModel::undoLastMove()
+{
+  beginResetModel();
+  myObjects = myPrevObjects;
+  endResetModel();
+}