#6476 AppFwk : Add support for moving selected items to top list

This commit is contained in:
Magne Sjaastad
2020-10-05 13:20:20 +02:00
parent 27230ed308
commit 1642370928
7 changed files with 290 additions and 33 deletions

View File

@@ -33,7 +33,9 @@
// for more details.
//
//##################################################################################################
#include "cafPdmFieldReorderCapability.h"
#include "cafPdmObjectHandle.h"
#include "cafAssert.h"
@@ -141,3 +143,49 @@ void PdmFieldReorderCapability::onMoveItemDown( const SignalEmitter* emitter, si
{
moveItemDown( index );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmFieldReorderCapability::onMoveItemToTop( const SignalEmitter* emitter, size_t index )
{
moveItemToTop( index );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool PdmFieldReorderCapability::moveItemToTop( size_t index )
{
if ( canItemBeMovedUp( index ) )
{
PdmObjectHandle* itemToShift = m_field->at( index );
if ( itemToShift )
{
int newIndex = 0;
m_field->erase( index );
m_field->insertAt( newIndex, itemToShift );
orderChanged.send();
return true;
}
}
return false;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
PdmFieldReorderCapability* PdmFieldReorderCapability::reorderCapabilityOfParentContainer( const PdmObjectHandle* pdmObject )
{
if ( pdmObject )
{
PdmPtrArrayFieldHandle* arrayField = dynamic_cast<PdmPtrArrayFieldHandle*>( pdmObject->parentField() );
if ( arrayField )
{
PdmFieldReorderCapability* reorderability = arrayField->capability<PdmFieldReorderCapability>();
return reorderability;
}
}
return nullptr;
}

View File

@@ -41,6 +41,8 @@
namespace caf
{
class PdmObjectHandle;
class PdmFieldReorderCapability : public PdmFieldCapability, public SignalEmitter, public SignalObserver
{
public:
@@ -52,6 +54,7 @@ public:
bool canItemBeMovedUp( size_t index ) const;
bool canItemBeMovedDown( size_t index ) const;
bool moveItemToTop( size_t index );
bool moveItemUp( size_t index );
bool moveItemDown( size_t index );
@@ -68,6 +71,9 @@ public:
}
static bool fieldIsReorderable( PdmPtrArrayFieldHandle* field );
static PdmFieldReorderCapability* reorderCapabilityOfParentContainer( const PdmObjectHandle* pdmObject );
void onMoveItemToTop( const SignalEmitter* emitter, size_t index );
void onMoveItemUp( const SignalEmitter* emitter, size_t index );
void onMoveItemDown( const SignalEmitter* emitter, size_t index );