Reduce indentation levels.
Change-Id: I5de3dea88a1e6f36c995697ba648ce6b82f4e8ae
This commit is contained in:
@@ -311,110 +311,113 @@ void DataBrowserModel::insertDataSeries( sal_Int32 nAfterColumnIndex )
|
|||||||
OSL_ASSERT( m_apDialogModel.get());
|
OSL_ASSERT( m_apDialogModel.get());
|
||||||
Reference< chart2::XInternalDataProvider > xDataProvider(
|
Reference< chart2::XInternalDataProvider > xDataProvider(
|
||||||
m_apDialogModel->getDataProvider(), uno::UNO_QUERY );
|
m_apDialogModel->getDataProvider(), uno::UNO_QUERY );
|
||||||
if( xDataProvider.is())
|
|
||||||
|
if (!xDataProvider.is())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( isCategoriesColumn(nAfterColumnIndex) )
|
||||||
|
nAfterColumnIndex = getCategoryColumnCount()-1;
|
||||||
|
|
||||||
|
sal_Int32 nStartCol = 0;
|
||||||
|
Reference< chart2::XDiagram > xDiagram( ChartModelHelper::findDiagram( m_xChartDocument ));
|
||||||
|
Reference< chart2::XChartType > xChartType;
|
||||||
|
Reference< chart2::XDataSeries > xSeries;
|
||||||
|
if( static_cast< tDataColumnVector::size_type >( nAfterColumnIndex ) <= m_aColumns.size())
|
||||||
|
xSeries.set( m_aColumns[nAfterColumnIndex].m_xDataSeries );
|
||||||
|
|
||||||
|
sal_Int32 nSeriesNumberFormat = 0;
|
||||||
|
if( xSeries.is())
|
||||||
{
|
{
|
||||||
if( isCategoriesColumn(nAfterColumnIndex) )
|
xChartType.set( DiagramHelper::getChartTypeOfSeries( xDiagram, xSeries ));
|
||||||
nAfterColumnIndex = getCategoryColumnCount()-1;
|
tDataHeaderVector::const_iterator aIt(
|
||||||
|
::std::find_if( m_aHeaders.begin(), m_aHeaders.end(),
|
||||||
|
lcl_DataSeriesOfHeaderMatches( xSeries )));
|
||||||
|
if( aIt != m_aHeaders.end())
|
||||||
|
nStartCol = aIt->m_nEndColumn;
|
||||||
|
|
||||||
sal_Int32 nStartCol = 0;
|
Reference< beans::XPropertySet > xSeriesProps( xSeries, uno::UNO_QUERY );
|
||||||
Reference< chart2::XDiagram > xDiagram( ChartModelHelper::findDiagram( m_xChartDocument ));
|
if( xSeriesProps.is() )
|
||||||
Reference< chart2::XChartType > xChartType;
|
xSeriesProps->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nSeriesNumberFormat;
|
||||||
Reference< chart2::XDataSeries > xSeries;
|
}
|
||||||
if( static_cast< tDataColumnVector::size_type >( nAfterColumnIndex ) <= m_aColumns.size())
|
else
|
||||||
xSeries.set( m_aColumns[nAfterColumnIndex].m_xDataSeries );
|
{
|
||||||
|
xChartType.set( DiagramHelper::getChartTypeByIndex( xDiagram, 0 ));
|
||||||
|
nStartCol = nAfterColumnIndex;
|
||||||
|
}
|
||||||
|
|
||||||
sal_Int32 nSeriesNumberFormat = 0;
|
if (!xChartType.is())
|
||||||
if( xSeries.is())
|
return;
|
||||||
|
|
||||||
|
sal_Int32 nOffset = 0;
|
||||||
|
if( xDiagram.is() && lcl_ShowCategories( xDiagram ))
|
||||||
|
nOffset=getCategoryColumnCount();
|
||||||
|
|
||||||
|
// get shared sequences of current series
|
||||||
|
Reference< chart2::XDataSeriesContainer > xSeriesCnt( xChartType, uno::UNO_QUERY );
|
||||||
|
lcl_tSharedSeqVec aSharedSequences;
|
||||||
|
if( xSeriesCnt.is())
|
||||||
|
aSharedSequences = lcl_getSharedSequences( xSeriesCnt->getDataSeries());
|
||||||
|
|
||||||
|
Reference<chart2::XDataSeries> xNewSeries =
|
||||||
|
m_apDialogModel->insertSeriesAfter(xSeries, xChartType, true);
|
||||||
|
|
||||||
|
if (!xNewSeries.is())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Reference< chart2::data::XDataSource > xSource( xNewSeries, uno::UNO_QUERY );
|
||||||
|
if (xSource.is())
|
||||||
|
{
|
||||||
|
Sequence< Reference< chart2::data::XLabeledDataSequence > > aLSequences(
|
||||||
|
xSource->getDataSequences());
|
||||||
|
sal_Int32 nSeqIdx = 0;
|
||||||
|
sal_Int32 nSeqSize = aLSequences.getLength();
|
||||||
|
nStartCol -= (nOffset - 1);
|
||||||
|
for( sal_Int32 nIndex = nStartCol;
|
||||||
|
(nSeqIdx < nSeqSize);
|
||||||
|
++nSeqIdx )
|
||||||
{
|
{
|
||||||
xChartType.set( DiagramHelper::getChartTypeOfSeries( xDiagram, xSeries ));
|
lcl_tSharedSeqVec::const_iterator aSharedIt(
|
||||||
tDataHeaderVector::const_iterator aIt(
|
::std::find_if( aSharedSequences.begin(), aSharedSequences.end(),
|
||||||
::std::find_if( m_aHeaders.begin(), m_aHeaders.end(),
|
lcl_RolesOfLSeqMatch( aLSequences[nSeqIdx] )));
|
||||||
lcl_DataSeriesOfHeaderMatches( xSeries )));
|
if( aSharedIt != aSharedSequences.end())
|
||||||
if( aIt != m_aHeaders.end())
|
|
||||||
nStartCol = aIt->m_nEndColumn;
|
|
||||||
|
|
||||||
Reference< beans::XPropertySet > xSeriesProps( xSeries, uno::UNO_QUERY );
|
|
||||||
if( xSeriesProps.is() )
|
|
||||||
xSeriesProps->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nSeriesNumberFormat;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
xChartType.set( DiagramHelper::getChartTypeByIndex( xDiagram, 0 ));
|
|
||||||
nStartCol = nAfterColumnIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( xChartType.is())
|
|
||||||
{
|
|
||||||
sal_Int32 nOffset = 0;
|
|
||||||
if( xDiagram.is() && lcl_ShowCategories( xDiagram ))
|
|
||||||
nOffset=getCategoryColumnCount();
|
|
||||||
// get shared sequences of current series
|
|
||||||
Reference< chart2::XDataSeriesContainer > xSeriesCnt( xChartType, uno::UNO_QUERY );
|
|
||||||
lcl_tSharedSeqVec aSharedSequences;
|
|
||||||
if( xSeriesCnt.is())
|
|
||||||
aSharedSequences = lcl_getSharedSequences( xSeriesCnt->getDataSeries());
|
|
||||||
Reference< chart2::XDataSeries > xNewSeries(
|
|
||||||
m_apDialogModel->insertSeriesAfter( xSeries, xChartType, true /* bCreateDataCachedSequences */ ));
|
|
||||||
if( xNewSeries.is())
|
|
||||||
{
|
{
|
||||||
{
|
aLSequences[nSeqIdx]->setValues( (*aSharedIt)->getValues());
|
||||||
Reference< chart2::data::XDataSource > xSource( xNewSeries, uno::UNO_QUERY );
|
aLSequences[nSeqIdx]->setLabel( (*aSharedIt)->getLabel());
|
||||||
if( xSource.is())
|
}
|
||||||
{
|
else
|
||||||
Sequence< Reference< chart2::data::XLabeledDataSequence > > aLSequences(
|
{
|
||||||
xSource->getDataSequences());
|
xDataProvider->insertSequence( nIndex - 1 );
|
||||||
sal_Int32 nSeqIdx = 0;
|
|
||||||
sal_Int32 nSeqSize = aLSequences.getLength();
|
|
||||||
nStartCol -= (nOffset - 1);
|
|
||||||
for( sal_Int32 nIndex = nStartCol;
|
|
||||||
(nSeqIdx < nSeqSize);
|
|
||||||
++nSeqIdx )
|
|
||||||
{
|
|
||||||
lcl_tSharedSeqVec::const_iterator aSharedIt(
|
|
||||||
::std::find_if( aSharedSequences.begin(), aSharedSequences.end(),
|
|
||||||
lcl_RolesOfLSeqMatch( aLSequences[nSeqIdx] )));
|
|
||||||
if( aSharedIt != aSharedSequences.end())
|
|
||||||
{
|
|
||||||
aLSequences[nSeqIdx]->setValues( (*aSharedIt)->getValues());
|
|
||||||
aLSequences[nSeqIdx]->setLabel( (*aSharedIt)->getLabel());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
xDataProvider->insertSequence( nIndex - 1 );
|
|
||||||
|
|
||||||
// values
|
// values
|
||||||
Reference< chart2::data::XDataSequence > xNewSeq(
|
Reference< chart2::data::XDataSequence > xNewSeq(
|
||||||
xDataProvider->createDataSequenceByRangeRepresentation(
|
xDataProvider->createDataSequenceByRangeRepresentation(
|
||||||
OUString::number( nIndex )));
|
OUString::number( nIndex )));
|
||||||
lcl_copyDataSequenceProperties(
|
lcl_copyDataSequenceProperties(
|
||||||
aLSequences[nSeqIdx]->getValues(), xNewSeq );
|
aLSequences[nSeqIdx]->getValues(), xNewSeq );
|
||||||
aLSequences[nSeqIdx]->setValues( xNewSeq );
|
aLSequences[nSeqIdx]->setValues( xNewSeq );
|
||||||
|
|
||||||
// labels
|
// labels
|
||||||
Reference< chart2::data::XDataSequence > xNewLabelSeq(
|
Reference< chart2::data::XDataSequence > xNewLabelSeq(
|
||||||
xDataProvider->createDataSequenceByRangeRepresentation(
|
xDataProvider->createDataSequenceByRangeRepresentation(
|
||||||
"label " +
|
"label " +
|
||||||
OUString::number( nIndex )));
|
OUString::number( nIndex )));
|
||||||
lcl_copyDataSequenceProperties(
|
lcl_copyDataSequenceProperties(
|
||||||
aLSequences[nSeqIdx]->getLabel(), xNewLabelSeq );
|
aLSequences[nSeqIdx]->getLabel(), xNewLabelSeq );
|
||||||
aLSequences[nSeqIdx]->setLabel( xNewLabelSeq );
|
aLSequences[nSeqIdx]->setLabel( xNewLabelSeq );
|
||||||
++nIndex;
|
++nIndex;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if( nSeriesNumberFormat != 0 )
|
|
||||||
{
|
|
||||||
//give the new series the same number format as the former series especially for bubble charts thus the bubble size values can be edited with same format immediately
|
|
||||||
Reference< beans::XPropertySet > xNewSeriesProps( xNewSeries, uno::UNO_QUERY );
|
|
||||||
if( xNewSeriesProps.is() )
|
|
||||||
xNewSeriesProps->setPropertyValue(CHART_UNONAME_NUMFMT , uno::makeAny(nSeriesNumberFormat));
|
|
||||||
}
|
|
||||||
|
|
||||||
updateFromModel();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( nSeriesNumberFormat != 0 )
|
||||||
|
{
|
||||||
|
//give the new series the same number format as the former series especially for bubble charts thus the bubble size values can be edited with same format immediately
|
||||||
|
Reference< beans::XPropertySet > xNewSeriesProps( xNewSeries, uno::UNO_QUERY );
|
||||||
|
if( xNewSeriesProps.is() )
|
||||||
|
xNewSeriesProps->setPropertyValue(CHART_UNONAME_NUMFMT , uno::makeAny(nSeriesNumberFormat));
|
||||||
|
}
|
||||||
|
|
||||||
|
updateFromModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataBrowserModel::insertComplexCategoryLevel( sal_Int32 nAfterColumnIndex )
|
void DataBrowserModel::insertComplexCategoryLevel( sal_Int32 nAfterColumnIndex )
|
||||||
@@ -423,90 +426,90 @@ void DataBrowserModel::insertComplexCategoryLevel( sal_Int32 nAfterColumnIndex )
|
|||||||
|
|
||||||
OSL_ASSERT( m_apDialogModel.get());
|
OSL_ASSERT( m_apDialogModel.get());
|
||||||
Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY );
|
Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY );
|
||||||
if( xDataProvider.is() )
|
if (!xDataProvider.is())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if( !isCategoriesColumn(nAfterColumnIndex) )
|
||||||
|
nAfterColumnIndex = getCategoryColumnCount()-1;
|
||||||
|
|
||||||
|
if(nAfterColumnIndex<0)
|
||||||
{
|
{
|
||||||
if( !isCategoriesColumn(nAfterColumnIndex) )
|
OSL_FAIL( "wrong index for category level insertion" );
|
||||||
nAfterColumnIndex = getCategoryColumnCount()-1;
|
return;
|
||||||
|
|
||||||
if(nAfterColumnIndex<0)
|
|
||||||
{
|
|
||||||
OSL_FAIL( "wrong index for category level insertion" );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_apDialogModel->startControllerLockTimer();
|
|
||||||
ControllerLockGuardUNO aLockedControllers( Reference< frame::XModel >( m_xChartDocument, uno::UNO_QUERY ) );
|
|
||||||
xDataProvider->insertComplexCategoryLevel( nAfterColumnIndex+1 );
|
|
||||||
updateFromModel();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_apDialogModel->startControllerLockTimer();
|
||||||
|
ControllerLockGuardUNO aLockedControllers( Reference< frame::XModel >( m_xChartDocument, uno::UNO_QUERY ) );
|
||||||
|
xDataProvider->insertComplexCategoryLevel( nAfterColumnIndex+1 );
|
||||||
|
updateFromModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataBrowserModel::removeDataSeriesOrComplexCategoryLevel( sal_Int32 nAtColumnIndex )
|
void DataBrowserModel::removeDataSeriesOrComplexCategoryLevel( sal_Int32 nAtColumnIndex )
|
||||||
{
|
{
|
||||||
OSL_ASSERT( m_apDialogModel.get());
|
OSL_ASSERT( m_apDialogModel.get());
|
||||||
if( static_cast< tDataColumnVector::size_type >( nAtColumnIndex ) < m_aColumns.size())
|
if (static_cast<size_t>(nAtColumnIndex) >= m_aColumns.size())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Reference< chart2::XDataSeries > xSeries( m_aColumns[nAtColumnIndex].m_xDataSeries );
|
||||||
|
if (!xSeries.is())
|
||||||
{
|
{
|
||||||
Reference< chart2::XDataSeries > xSeries( m_aColumns[nAtColumnIndex].m_xDataSeries );
|
//delete a category column if there is more than one level (in case of a single column we do not get here)
|
||||||
if( xSeries.is())
|
OSL_ENSURE(nAtColumnIndex>0, "wrong index for categories deletion" );
|
||||||
|
|
||||||
|
Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY );
|
||||||
|
if (!xDataProvider.is())
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_apDialogModel->startControllerLockTimer();
|
||||||
|
ControllerLockGuardUNO aLockedControllers( Reference< frame::XModel >( m_xChartDocument, uno::UNO_QUERY ) );
|
||||||
|
xDataProvider->deleteComplexCategoryLevel( nAtColumnIndex );
|
||||||
|
updateFromModel();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_apDialogModel->deleteSeries(
|
||||||
|
xSeries, getHeaderForSeries( xSeries ).m_xChartType );
|
||||||
|
|
||||||
|
//delete sequences from internal data provider that are not used anymore
|
||||||
|
//but do not delete sequences that are still in use by the remaining series
|
||||||
|
Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY );
|
||||||
|
Reference< chart2::data::XDataSource > xSourceOfDeletedSeries( xSeries, uno::UNO_QUERY );
|
||||||
|
if( xDataProvider.is() && xSourceOfDeletedSeries.is())
|
||||||
|
{
|
||||||
|
::std::vector< sal_Int32 > aSequenceIndexesToDelete;
|
||||||
|
Sequence< Reference< chart2::data::XLabeledDataSequence > > aSequencesOfDeletedSeries( xSourceOfDeletedSeries->getDataSequences() );
|
||||||
|
Reference< chart2::XDataSeriesContainer > xSeriesCnt( getHeaderForSeries( xSeries ).m_xChartType, uno::UNO_QUERY );
|
||||||
|
if( xSeriesCnt.is())
|
||||||
{
|
{
|
||||||
m_apDialogModel->deleteSeries(
|
Reference< chart2::data::XDataSource > xRemainingDataSource( DataSeriesHelper::getDataSource( xSeriesCnt->getDataSeries() ) );
|
||||||
xSeries, getHeaderForSeries( xSeries ).m_xChartType );
|
if( xRemainingDataSource.is() )
|
||||||
|
|
||||||
//delete sequences from internal data provider that are not used anymore
|
|
||||||
//but do not delete sequences that are still in use by the remaining series
|
|
||||||
Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY );
|
|
||||||
Reference< chart2::data::XDataSource > xSourceOfDeletedSeries( xSeries, uno::UNO_QUERY );
|
|
||||||
if( xDataProvider.is() && xSourceOfDeletedSeries.is())
|
|
||||||
{
|
{
|
||||||
::std::vector< sal_Int32 > aSequenceIndexesToDelete;
|
::std::vector< Reference< chart2::data::XLabeledDataSequence > > aRemainingSeq( ContainerHelper::SequenceToVector( xRemainingDataSource->getDataSequences() ) );
|
||||||
Sequence< Reference< chart2::data::XLabeledDataSequence > > aSequencesOfDeletedSeries( xSourceOfDeletedSeries->getDataSequences() );
|
for( sal_Int32 i=0; i<aSequencesOfDeletedSeries.getLength(); ++i )
|
||||||
Reference< chart2::XDataSeriesContainer > xSeriesCnt( getHeaderForSeries( xSeries ).m_xChartType, uno::UNO_QUERY );
|
|
||||||
if( xSeriesCnt.is())
|
|
||||||
{
|
{
|
||||||
Reference< chart2::data::XDataSource > xRemainingDataSource( DataSeriesHelper::getDataSource( xSeriesCnt->getDataSeries() ) );
|
::std::vector< Reference< chart2::data::XLabeledDataSequence > >::const_iterator aHitIt(
|
||||||
if( xRemainingDataSource.is() )
|
::std::find_if( aRemainingSeq.begin(), aRemainingSeq.end(),
|
||||||
{
|
lcl_RepresentationsOfLSeqMatch( aSequencesOfDeletedSeries[i] )));
|
||||||
::std::vector< Reference< chart2::data::XLabeledDataSequence > > aRemainingSeq( ContainerHelper::SequenceToVector( xRemainingDataSource->getDataSequences() ) );
|
// if not used by the remaining series this sequence can be deleted
|
||||||
for( sal_Int32 i=0; i<aSequencesOfDeletedSeries.getLength(); ++i )
|
if( aHitIt == aRemainingSeq.end() )
|
||||||
{
|
aSequenceIndexesToDelete.push_back( lcl_getValuesRepresentationIndex( aSequencesOfDeletedSeries[i] ) );
|
||||||
::std::vector< Reference< chart2::data::XLabeledDataSequence > >::const_iterator aHitIt(
|
|
||||||
::std::find_if( aRemainingSeq.begin(), aRemainingSeq.end(),
|
|
||||||
lcl_RepresentationsOfLSeqMatch( aSequencesOfDeletedSeries[i] )));
|
|
||||||
// if not used by the remaining series this sequence can be deleted
|
|
||||||
if( aHitIt == aRemainingSeq.end() )
|
|
||||||
aSequenceIndexesToDelete.push_back( lcl_getValuesRepresentationIndex( aSequencesOfDeletedSeries[i] ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// delete unnecessary sequences of the internal data
|
|
||||||
// iterate using greatest index first, so that deletion does not
|
|
||||||
// shift other sequences that will be deleted later
|
|
||||||
::std::sort( aSequenceIndexesToDelete.begin(), aSequenceIndexesToDelete.end());
|
|
||||||
for( ::std::vector< sal_Int32 >::reverse_iterator aIt(
|
|
||||||
aSequenceIndexesToDelete.rbegin()); aIt != aSequenceIndexesToDelete.rend(); ++aIt )
|
|
||||||
{
|
|
||||||
if( *aIt != -1 )
|
|
||||||
xDataProvider->deleteSequence( *aIt );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
updateFromModel();
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
//delete a category column if there is more than one level (in case of a single column we do not get here)
|
|
||||||
OSL_ENSURE(nAtColumnIndex>0, "wrong index for categories deletion" );
|
|
||||||
|
|
||||||
Reference< chart2::XInternalDataProvider > xDataProvider( m_apDialogModel->getDataProvider(), uno::UNO_QUERY );
|
// delete unnecessary sequences of the internal data
|
||||||
if( xDataProvider.is() )
|
// iterate using greatest index first, so that deletion does not
|
||||||
{
|
// shift other sequences that will be deleted later
|
||||||
m_apDialogModel->startControllerLockTimer();
|
::std::sort( aSequenceIndexesToDelete.begin(), aSequenceIndexesToDelete.end());
|
||||||
ControllerLockGuardUNO aLockedControllers( Reference< frame::XModel >( m_xChartDocument, uno::UNO_QUERY ) );
|
for( ::std::vector< sal_Int32 >::reverse_iterator aIt(
|
||||||
xDataProvider->deleteComplexCategoryLevel( nAtColumnIndex );
|
aSequenceIndexesToDelete.rbegin()); aIt != aSequenceIndexesToDelete.rend(); ++aIt )
|
||||||
updateFromModel();
|
{
|
||||||
}
|
if( *aIt != -1 )
|
||||||
|
xDataProvider->deleteSequence( *aIt );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
updateFromModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataBrowserModel::swapDataSeries( sal_Int32 nFirstColumnIndex )
|
void DataBrowserModel::swapDataSeries( sal_Int32 nFirstColumnIndex )
|
||||||
|
Reference in New Issue
Block a user