X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ListModel.cxx;h=24e3fe8f4c556081ea468174a5aeadf2f3864541;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=bfda69d93709223f5370cecc760ecefe35a1ab40;hpb=2904bb5e64e69d27c643e66e3dd727c5110ec275;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ListModel.cxx b/src/HYDROGUI/HYDROGUI_ListModel.cxx index bfda69d9..24e3fe8f 100644 --- a/src/HYDROGUI/HYDROGUI_ListModel.cxx +++ b/src/HYDROGUI/HYDROGUI_ListModel.cxx @@ -48,7 +48,7 @@ HYDROGUI_ListModel::HYDROGUI_ListModel( QObject* theParent ) // 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 { @@ -171,8 +171,8 @@ bool HYDROGUI_ListModel::isObjectVisible( int theIndex ) const /** */ 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 ) { @@ -206,7 +206,7 @@ QMimeData* HYDROGUI_ListModel::mimeData( const QModelIndexList& theIndexes ) con QByteArray anEncodedData; QDataStream aStream( &anEncodedData, QIODevice::WriteOnly ); - QList anIdsList = getIds( theIndexes ); + QList anIdsList = getIds( theIndexes, true ); foreach( int anId, anIdsList ) aStream << anId; @@ -226,7 +226,7 @@ QStringList HYDROGUI_ListModel::mimeTypes() const /** */ 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; @@ -237,7 +237,8 @@ bool HYDROGUI_ListModel::dropMimeData( const QMimeData* theData, Qt::DropAction 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 ); @@ -248,7 +249,7 @@ bool HYDROGUI_ListModel::dropMimeData( const QMimeData* theData, Qt::DropAction aStream >> anId; anIdsList << anId; } - qSort( anIdsList ); // TODO should be moved? + move( anIdsList, DragAndDrop, false, aDropItemId ); //TODO set visibility? return true; } @@ -265,7 +266,8 @@ Qt::DropActions HYDROGUI_ListModel::supportedDropActions() const @param theIsToSort defines if the list of ids should be sorted in ascending order @return the list of ids */ -QList HYDROGUI_ListModel::getIds( const QModelIndexList& theIndexes, bool theIsToSort ) const +QList HYDROGUI_ListModel::getIds( const QModelIndexList& theIndexes, + bool theIsToSort ) const { QList anIds; foreach( const QModelIndex& anIndex, theIndexes ) { @@ -288,7 +290,7 @@ QList HYDROGUI_ListModel::getIds( const QModelIndexList& theIndexes, bool t @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() ) { @@ -362,7 +364,7 @@ bool HYDROGUI_ListModel::move( const int theItem, const OpType theType, @return true in case of success */ bool HYDROGUI_ListModel::move( const QList& theItems, const OpType theType, - bool theIsVisibleOnly, const int theDropItem ) + bool theIsVisibleOnly, const int theDropItem ) { bool aRes = true; @@ -437,11 +439,13 @@ bool HYDROGUI_ListModel::move( const QList& theItems, const OpType theType, @return true if drag and drop allowed */ bool HYDROGUI_ListModel::isDragAndDropAllowed( const QList& 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;