-// 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
// 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
/**
Constructor.
@param theParent the parent widget
+ @param theIconSize the icon size for arrow buttons
*/
-HYDROGUI_OrderedListWidget::HYDROGUI_OrderedListWidget( QWidget* theParent )
+HYDROGUI_OrderedListWidget::HYDROGUI_OrderedListWidget( QWidget* theParent, int theArrowIconSize )
: QWidget( theParent )
{
// Main layout
QHBoxLayout* aMainLayout = new QHBoxLayout( this );
+ aMainLayout->setMargin( 0 );
aMainLayout->setSpacing( 5 );
// List view
SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
myTop = new QPushButton( this );
myTop->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "ARROW_TOP_ICO" ) ) );
- myTop->setIconSize( QSize( 32, 32 ) );
+ myTop->setIconSize( QSize( theArrowIconSize, theArrowIconSize ) );
+ myTop->setToolTip( tr( "TOP_TLT" ) );
myUp = new QPushButton( this );
myUp->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "ARROW_UP_ICO" ) ) );
myUp->setIconSize( myTop->iconSize() );
+ myUp->setToolTip( tr( "UP_TLT" ) );
myDown = new QPushButton( this );
myDown->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "ARROW_DOWN_ICO" ) ) );
myDown->setIconSize( myTop->iconSize() );
+ myDown->setToolTip( tr( "DOWN_TLT" ) );
myBottom = new QPushButton( this );
myBottom->setIcon( aResMgr->loadPixmap( "HYDRO", tr( "ARROW_BOTTOM_ICO" ) ) );
myBottom->setIconSize( myTop->iconSize() );
+ myBottom->setToolTip( tr( "BOTTOM_TLT" ) );
// Layout
// buttons
// Initialize
setHiddenObjectsShown( true );
+ setVisibilityIconShown( true );
}
/**
return anObjects;
}
+/**
+ Add the object to the end of the list.
+ @param theObjects the pair (object; visibility)
+*/
+void HYDROGUI_OrderedListWidget::addObject( const HYDROGUI_ListModel::Object2Visible& theObject )
+{
+ HYDROGUI_ListModel* aModel = getSourceModel();
+ if( aModel ) {
+ aModel->addObject(theObject);
+ }
+}
+
+/**
+ Remove the object from the list.
+ @param theObjectName the name of the object to remove
+*/
+void HYDROGUI_OrderedListWidget::removeObjectByName( const QString& theObjectName )
+{
+ HYDROGUI_ListModel* aModel = getSourceModel();
+ if( aModel ) {
+ aModel->removeObjectByName(theObjectName);
+ }
+}
+
/**
Set whether the hidden objects are presented in the list.
@param theIsToShow if true - the hidden objects will be shown in the list
aFilterModel->setFilterRegExp( anExpr );
}
+/**
+ Set whether the visibility icon (eye icon) are presented in the list.
+ @param theIsToShow if true - the eye icon will be shown in the list
+*/
+void HYDROGUI_OrderedListWidget::setVisibilityIconShown( const bool theIsToShow )
+{
+ HYDROGUI_ListModel* aModel = getSourceModel();
+ if( aModel ) {
+ aModel->setDecorationEnabled( theIsToShow );
+ }
+}
+
/**
Get entries of the selected objects.
@return the list of entries
}
}
+/**
+ Get names of the selected objects.
+ @return the list of names
+*/
+QStringList HYDROGUI_OrderedListWidget::getSelectedNames() const
+{
+ QStringList aNames;
+
+ QSortFilterProxyModel* aFilterModel =
+ dynamic_cast<QSortFilterProxyModel*>( myList->model() );
+ if ( aFilterModel ) {
+ HYDROGUI_ListModel* aSourceModel =
+ dynamic_cast<HYDROGUI_ListModel*>( aFilterModel->sourceModel() );
+ if ( aSourceModel ) {
+ QModelIndexList aSelectedIndexes = myList->selectionModel()->selectedIndexes();
+ foreach ( const QModelIndex& anIndex, aSelectedIndexes ) {
+ QModelIndex aSourceIndex = aFilterModel->mapToSource( anIndex );
+ QString anEntry = aSourceModel->data( aSourceIndex, Qt::DisplayRole ).toString();
+ aNames << anEntry;
+ }
+ }
+ }
+
+ return aNames;
+}
+
+/**
+ Get names of all objects.
+ @return the list of names
+*/
+QStringList HYDROGUI_OrderedListWidget::getAllNames() const
+{
+ QStringList aNames;
+
+
+ foreach ( const Handle(HYDROData_Entity)& anObject, getObjects() ) {
+ aNames << anObject->GetName();
+ }
+
+ return aNames;
+}
+
/**
Slot called on top, up, down and bottom button click.
@param theType the move operation type
*/
void HYDROGUI_OrderedListWidget::onMove( int theType )
{
+ bool isMoved = false;
+
QSortFilterProxyModel* aFilterModel = dynamic_cast<QSortFilterProxyModel*>( myList->model() );
if( aFilterModel ) {
HYDROGUI_ListModel* aModel = dynamic_cast<HYDROGUI_ListModel*>( aFilterModel->sourceModel() );
aSelectedSourceIndexes << aFilterModel->mapToSource( anIndex );
}
QList<int> aSelectedIds = aModel->getIds( aSelectedSourceIndexes );
- aModel->move( aSelectedIds, ( HYDROGUI_ListModel::OpType )theType,
- !myIsHiddenObjectsShown );
+ isMoved = aModel->move( aSelectedIds, ( HYDROGUI_ListModel::OpType )theType,
+ !myIsHiddenObjectsShown );
}
}
+
+ if ( isMoved ) {
+ emit orderChanged();
+ }
}
/**
}
return aSourceModel;
+}
+
+/**
+ Enable/disable ordering (i.e. enable/disable arrow buttons and drag and drop).
+ @param theIsToEnable if true - ordering will bw enabled
+*/
+void HYDROGUI_OrderedListWidget::setOrderingEnabled( const bool theIsToEnable )
+{
+ // enable/disable arrow buttons
+ myTop->setEnabled( theIsToEnable );
+ myUp->setEnabled( theIsToEnable );
+ myDown->setEnabled( theIsToEnable );
+ myBottom->setEnabled( theIsToEnable );
+
+ // enable/disable drag and drop
+ myList->setDragEnabled( theIsToEnable );
}
\ No newline at end of file