-// Copyright (C) 2007-2013 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
-// 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
@param theParent the parent object
*/
HYDROGUI_ListModel::HYDROGUI_ListModel( QObject* theParent )
- : QAbstractListModel( theParent )
+ : QAbstractListModel( theParent ), myIsDecorationEnabled( true )
{
// Get resource manager
SUIT_ResourceMgr* aResMgr = 0;
myEye = QPixmap( 16, 16 );
myEye.fill( Qt::black );
}
-
- // Set the supported drag actions for the items in the model
- setSupportedDragActions( Qt::MoveAction | Qt::CopyAction );
}
/**
{
}
+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
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:
{
- 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;
*/
void HYDROGUI_ListModel::setObjects( const Object2VisibleList& theObjects )
{
+ beginResetModel();
myObjects = theObjects;
-
- reset();
+ endResetModel();
}
/**
return anObjects;
}
+/**
+ Add the object to the end of the list.
+ @param theObjects the pair (object; visibility)
+*/
+void HYDROGUI_ListModel::addObject( const Object2Visible& theObject )
+{
+ beginResetModel();
+ myObjects << theObject;
+ endResetModel();
+}
+
+/**
+ 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;
+ }
+ }
+
+ beginResetModel();
+ myObjects.removeAll(anItem);
+ endResetModel();
+}
+
+
/**
Check if the object is visible.
@param theIndex the object index
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
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;
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;
+}
+
+void HYDROGUI_ListModel::undoLastMove()
+{
+ beginResetModel();
+ myObjects = myPrevObjects;
+ endResetModel();
+}