// Define eye icon and empty icon
myEmpty = QPixmap( 16, 16 );
- myEmpty.fill( Qt::white );
+ myEmpty.fill( Qt::transparent );
if ( aResMgr ) {
myEye = aResMgr->loadPixmap( "HYDRO", tr( "EYE_ICO" ) );
} else {
/**
*/
QVariant HYDROGUI_ListModel::headerData( int theSection,
- Qt::Orientation theOrientation,
- int theRole ) const
+ Qt::Orientation theOrientation,
+ int theRole ) const
{
if( theOrientation==Qt::Horizontal && theRole==Qt::DisplayRole )
{
QByteArray anEncodedData;
QDataStream aStream( &anEncodedData, QIODevice::WriteOnly );
- QList<int> anIdsList = getIds( theIndexes );
+ QList<int> anIdsList = getIds( theIndexes, true );
foreach( int anId, anIdsList )
aStream << anId;
/**
*/
bool HYDROGUI_ListModel::dropMimeData( const QMimeData* theData, Qt::DropAction theAction,
- int theRow, int theColumn, const QModelIndex& theParent )
+ int theRow, int theColumn, const QModelIndex& theParent )
{
if( theAction == Qt::IgnoreAction)
return true;
if( theColumn > 0 )
return false;
- int aDropItemId = theParent.row();
+ // TODO: to disable drop between items use: int aDropItemId = theParent.row();
+ int aDropItemId = theParent.isValid() ? theParent.row() : theRow;
QByteArray anEncodedData = theData->data( OBJ_LIST_MIME_TYPE );
QDataStream aStream( &anEncodedData, QIODevice::ReadOnly );
aStream >> anId;
anIdsList << anId;
}
- qSort( anIdsList ); // TODO should be moved?
+
move( anIdsList, DragAndDrop, false, aDropItemId ); //TODO set visibility?
return true;
}
@param theIsToSort defines if the list of ids should be sorted in ascending order
@return the list of ids
*/
-QList<int> HYDROGUI_ListModel::getIds( const QModelIndexList& theIndexes, bool theIsToSort ) const
+QList<int> HYDROGUI_ListModel::getIds( const QModelIndexList& theIndexes,
+ bool theIsToSort ) const
{
QList<int> anIds;
foreach( const QModelIndex& anIndex, theIndexes ) {
@return true in case of success
*/
bool HYDROGUI_ListModel::move( const int theItem, const OpType theType,
- bool theIsVisibleOnly, const int theDropItem )
+ bool theIsVisibleOnly, const int theDropItem )
{
bool aRes = false;
if ( theItem < 0 || theItem >= myObjects.count() ) {
@return true in case of success
*/
bool HYDROGUI_ListModel::move( const QList<int>& theItems, const OpType theType,
- bool theIsVisibleOnly, const int theDropItem )
+ bool theIsVisibleOnly, const int theDropItem )
{
bool aRes = true;
@return true if drag and drop allowed
*/
bool HYDROGUI_ListModel::isDragAndDropAllowed( const QList<int>& theItems,
- const int theDropItem ) const
+ const int theDropItem ) const
{
bool isAllowed = false;
- if ( theDropItem >= 0 && theDropItem < myObjects.count() &&
+ if ( theDropItem >= 0 &&
+ // TODO: to disable drop between items use: theDropItem < myObjects.count()
+ theDropItem <= myObjects.count() &&
!theItems.empty() && theItems.count() < myObjects.count() &&
!theItems.contains( theDropItem )) {
isAllowed = true;