summaryrefslogtreecommitdiff
path: root/chart2/source/controller/main/ChartModelClone.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/controller/main/ChartModelClone.cxx')
-rw-r--r--chart2/source/controller/main/ChartModelClone.cxx60
1 files changed, 21 insertions, 39 deletions
diff --git a/chart2/source/controller/main/ChartModelClone.cxx b/chart2/source/controller/main/ChartModelClone.cxx
index 6348aee6e6f9..dfb089d566e8 100644
--- a/chart2/source/controller/main/ChartModelClone.cxx
+++ b/chart2/source/controller/main/ChartModelClone.cxx
@@ -60,36 +60,33 @@ namespace chart
// = helper
namespace
{
- Reference< XModel > lcl_cloneModel( const Reference< XModel > & xModel )
+ rtl::Reference<::chart::ChartModel> lcl_cloneModel( const rtl::Reference<::chart::ChartModel> & xModel )
{
- Reference< XModel > xResult;
try
{
- const Reference< XCloneable > xCloneable( xModel, UNO_QUERY_THROW );
- xResult.set( xCloneable->createClone(), UNO_QUERY_THROW );
+ return new ChartModel(*xModel);
}
catch( const Exception& )
{
DBG_UNHANDLED_EXCEPTION("chart2");
}
- return xResult;
+ return nullptr;
}
}
// = ChartModelClone
- ChartModelClone::ChartModelClone( const Reference< XModel >& i_model, const ModelFacet i_facet )
+ ChartModelClone::ChartModelClone( const rtl::Reference<::chart::ChartModel>& i_model, const ModelFacet i_facet )
{
- m_xModelClone.set( lcl_cloneModel( i_model ) );
+ m_xModelClone = lcl_cloneModel( i_model );
try
{
if ( i_facet == E_MODEL_WITH_DATA )
{
- const Reference< XChartDocument > xChartDoc( m_xModelClone, UNO_QUERY_THROW );
- ENSURE_OR_THROW( xChartDoc->hasInternalDataProvider(), "invalid chart model" );
+ ENSURE_OR_THROW( m_xModelClone && m_xModelClone->hasInternalDataProvider(), "invalid chart model" );
- const Reference< XCloneable > xCloneable( xChartDoc->getDataProvider(), UNO_QUERY_THROW );
+ const Reference< XCloneable > xCloneable( m_xModelClone->getDataProvider(), UNO_QUERY_THROW );
m_xDataClone.set( xCloneable->createClone(), UNO_QUERY_THROW );
}
@@ -116,15 +113,6 @@ namespace chart
if ( impl_isDisposed() )
return;
- try
- {
- Reference< XComponent > xComp( m_xModelClone, UNO_QUERY_THROW );
- xComp->dispose();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION("chart2");
- }
m_xModelClone.clear();
m_xDataClone.clear();
m_aSelection.clear();
@@ -139,7 +127,7 @@ namespace chart
return E_MODEL;
}
- void ChartModelClone::applyToModel( const Reference< XModel >& i_model ) const
+ void ChartModelClone::applyToModel( const rtl::Reference<::chart::ChartModel>& i_model ) const
{
applyModelContentToModel( i_model, m_xModelClone, m_xDataClone );
@@ -179,8 +167,9 @@ namespace chart
}
}
- void ChartModelClone::applyModelContentToModel( const Reference< XModel >& i_model,
- const Reference< XModel >& i_modelToCopyFrom, const Reference< XInternalDataProvider >& i_data )
+ void ChartModelClone::applyModelContentToModel( const rtl::Reference<::chart::ChartModel>& i_model,
+ const rtl::Reference<::chart::ChartModel>& i_modelToCopyFrom,
+ const Reference< XInternalDataProvider >& i_data )
{
ENSURE_OR_RETURN_VOID( i_model.is(), "ChartModelElement::applyModelContentToModel: invalid source model!" );
ENSURE_OR_RETURN_VOID( i_modelToCopyFrom.is(), "ChartModelElement::applyModelContentToModel: invalid source model!" );
@@ -188,25 +177,20 @@ namespace chart
{
// locked controllers of destination
ControllerLockGuardUNO aLockedControllers( i_model );
- Reference< XChartDocument > xSource( i_modelToCopyFrom, UNO_QUERY_THROW );
- Reference< XChartDocument > xDestination( i_model, UNO_QUERY_THROW );
// propagate the correct flag for plotting of hidden values to the data provider and all used sequences
- ChartModel& rModel = dynamic_cast<ChartModel&>(*i_model);
- ChartModelHelper::setIncludeHiddenCells(ChartModelHelper::isIncludeHiddenCells( i_modelToCopyFrom ), rModel);
+ ChartModelHelper::setIncludeHiddenCells(ChartModelHelper::isIncludeHiddenCells( i_modelToCopyFrom ), *i_model);
// diagram
- xDestination->setFirstDiagram( xSource->getFirstDiagram() );
+ i_model->setFirstDiagram( i_modelToCopyFrom->getFirstDiagram() );
// main title
- Reference< XTitled > xDestinationTitled( xDestination, UNO_QUERY_THROW );
- Reference< XTitled > xSourceTitled( xSource, UNO_QUERY_THROW );
- xDestinationTitled->setTitleObject( xSourceTitled->getTitleObject() );
+ i_model->setTitleObject( i_modelToCopyFrom->getTitleObject() );
// page background
::comphelper::copyProperties(
- xSource->getPageBackground(),
- xDestination->getPageBackground() );
+ i_modelToCopyFrom->getPageBackground(),
+ i_model->getPageBackground() );
// apply data (not applied in standard Undo)
if ( i_data.is() )
@@ -214,10 +198,10 @@ namespace chart
// register all sequences at the internal data provider to get adapted
// indexes when columns are added/removed
- if ( xDestination->hasInternalDataProvider() )
+ if ( i_model->hasInternalDataProvider() )
{
- Reference< XInternalDataProvider > xNewDataProvider( xDestination->getDataProvider(), UNO_QUERY );
- Reference< XDataSource > xUsedData( DataSourceHelper::getUsedData( i_model ) );
+ Reference< XInternalDataProvider > xNewDataProvider( i_model->getDataProvider(), UNO_QUERY );
+ Reference< XDataSource > xUsedData( DataSourceHelper::getUsedData( *i_model ) );
if ( xUsedData.is() && xNewDataProvider.is() )
{
const Sequence< Reference< XLabeledDataSequence > > aData( xUsedData->getDataSequences() );
@@ -230,11 +214,9 @@ namespace chart
}
// restore modify status
- Reference< XModifiable > xSourceMod( xSource, UNO_QUERY );
- Reference< XModifiable > xDestMod( xDestination, UNO_QUERY );
- if ( xSourceMod.is() && xDestMod.is() && !xSourceMod->isModified() )
+ if ( !i_modelToCopyFrom->isModified() )
{
- xDestMod->setModified( false );
+ i_model->setModified( false );
}
// \-- locked controllers of destination
}