#12236 Summary Cases: Allow reordering of summary cases

This commit is contained in:
Magne Sjaastad
2025-03-12 12:55:20 +01:00
parent 85b9214ac1
commit 61ff5748ce
4 changed files with 34 additions and 4 deletions
@@ -47,6 +47,7 @@
#include "RimSummaryMultiPlotCollection.h"
#include "RimSummaryPlot.h"
#include "cafPdmFieldReorderCapability.h"
#include "cafProgressInfo.h"
#include <QCoreApplication>
@@ -102,6 +103,8 @@ RimSummaryCaseMainCollection::RimSummaryCaseMainCollection()
CAF_PDM_InitObject( "Summary Cases", ":/SummaryCases16x16.png" );
CAF_PDM_InitFieldNoDefault( &m_cases, "SummaryCases", "" );
caf::PdmFieldReorderCapability::addToField( &m_cases );
CAF_PDM_InitFieldNoDefault( &m_caseCollections, "SummaryCaseCollections", "" );
}
@@ -208,6 +211,19 @@ void RimSummaryCaseMainCollection::removeCases( std::vector<RimSummaryCase*>& ca
dataSourceHasChanged.send();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryCaseMainCollection::moveCase( RimSummaryCase* summaryCase, int destinationIndex )
{
auto currentIndex = m_cases.indexOf( summaryCase );
if ( currentIndex < m_cases.size() )
{
m_cases.erase( currentIndex );
m_cases.insertAt( std::min( destinationIndex, (int)m_cases.size() ), summaryCase );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -60,6 +60,7 @@ public:
void addCase( RimSummaryCase* summaryCase );
void removeCase( RimSummaryCase* summaryCase, bool notifyChange = true );
void removeCases( std::vector<RimSummaryCase*>& cases );
void moveCase( RimSummaryCase* summaryCase, int destinationIndex );
RimSummaryEnsemble* addEnsemble( const std::vector<RimSummaryCase*>& summaryCases,
const QString& coolectionName,
@@ -420,7 +420,7 @@ bool RiuDragDrop::dropMimeData( const QMimeData* data, Qt::DropAction action, in
auto summaryCaseMainCollection = dropTarget->firstAncestorOrThisOfType<RimSummaryCaseMainCollection>();
if ( summaryCaseMainCollection )
{
return handleSummaryCaseMainCollectionDrop( action, draggedObjects, summaryCaseMainCollection );
return handleSummaryCaseMainCollectionDrop( action, draggedObjects, summaryCaseMainCollection, row );
}
auto surfaceCollection = dropTarget->firstAncestorOrThisOfType<RimSurfaceCollection>();
@@ -607,7 +607,8 @@ bool RiuDragDrop::handleSummaryCaseCollectionDrop( Qt::DropAction action,
//--------------------------------------------------------------------------------------------------
bool RiuDragDrop::handleSummaryCaseMainCollectionDrop( Qt::DropAction action,
caf::PdmObjectGroup& draggedObjects,
RimSummaryCaseMainCollection* summaryCaseDropTarget )
RimSummaryCaseMainCollection* summaryCaseDropTarget,
int insertAtPosition )
{
std::vector<RimSummaryCase*> summaryCases = RiuTypedPdmObjects<RimSummaryCase>::typedObjectsFromGroup( draggedObjects );
@@ -622,10 +623,21 @@ bool RiuDragDrop::handleSummaryCaseMainCollectionDrop( Qt::DropAction
summaryCaseCollection->removeCase( summaryCase );
summaryCaseDropTarget->addCase( summaryCase );
summaryCaseCollection->updateConnectedEditors();
summaryCaseDropTarget->updateConnectedEditors();
return true;
}
}
summaryCaseDropTarget->updateConnectedEditors();
if ( summaryCases.size() == 1 )
{
auto summaryCase = summaryCases.front();
auto parentContainer = summaryCase->firstAncestorOfType<RimSummaryCaseMainCollection>();
if ( parentContainer == summaryCaseDropTarget )
{
parentContainer->moveCase( summaryCase, insertAtPosition );
}
}
return true;
}
@@ -82,7 +82,8 @@ private:
bool handleSummaryCaseCollectionDrop( Qt::DropAction action, caf::PdmObjectGroup& objectGroup, RimSummaryEnsemble* summaryCaseCollection );
bool handleSummaryCaseMainCollectionDrop( Qt::DropAction action,
caf::PdmObjectGroup& objectGroup,
RimSummaryCaseMainCollection* summaryCaseMainCollection );
RimSummaryCaseMainCollection* summaryCaseMainCollection,
int insertAtPosition );
bool handleSurfaceCollectionDrop( Qt::DropAction action, int row, caf::PdmObjectGroup& objectGroup, RimSurfaceCollection* surfaceCollection );