diff options
Diffstat (limited to 'reportdesign/source/core/sdr/RptObject.cxx')
-rw-r--r-- | reportdesign/source/core/sdr/RptObject.cxx | 221 |
1 files changed, 101 insertions, 120 deletions
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx index 737c87e3b1fe..a0af522a616c 100644 --- a/reportdesign/source/core/sdr/RptObject.cxx +++ b/reportdesign/source/core/sdr/RptObject.cxx @@ -107,9 +107,7 @@ sal_uInt16 OObjectBase::getObjectType(const uno::Reference< report::XReportCompo return 0; } -SdrObject* OObjectBase::createObject( - SdrModel& rTargetModel, - const uno::Reference< report::XReportComponent>& _xComponent) +SdrObject* OObjectBase::createObject(const uno::Reference< report::XReportComponent>& _xComponent) { SdrObject* pNewObj = nullptr; sal_uInt16 nType = OObjectBase::getObjectType(_xComponent); @@ -117,11 +115,9 @@ SdrObject* OObjectBase::createObject( { case OBJ_DLG_FIXEDTEXT: { - OUnoObject* pUnoObj = new OUnoObject( - rTargetModel, - _xComponent, - OUString("com.sun.star.form.component.FixedText"), - OBJ_DLG_FIXEDTEXT); + OUnoObject* pUnoObj = new OUnoObject( _xComponent + ,OUString("com.sun.star.form.component.FixedText") + ,OBJ_DLG_FIXEDTEXT); pNewObj = pUnoObj; uno::Reference<beans::XPropertySet> xControlModel(pUnoObj->GetUnoControlModel(),uno::UNO_QUERY); @@ -130,31 +126,23 @@ SdrObject* OObjectBase::createObject( } break; case OBJ_DLG_IMAGECONTROL: - pNewObj = new OUnoObject( - rTargetModel, - _xComponent, - OUString("com.sun.star.form.component.DatabaseImageControl"), - OBJ_DLG_IMAGECONTROL); + pNewObj = new OUnoObject(_xComponent + ,OUString("com.sun.star.form.component.DatabaseImageControl") + ,OBJ_DLG_IMAGECONTROL); break; case OBJ_DLG_FORMATTEDFIELD: - pNewObj = new OUnoObject( - rTargetModel, - _xComponent, - OUString("com.sun.star.form.component.FormattedField"), - OBJ_DLG_FORMATTEDFIELD); + pNewObj = new OUnoObject( _xComponent + ,OUString("com.sun.star.form.component.FormattedField") + ,OBJ_DLG_FORMATTEDFIELD); break; case OBJ_DLG_HFIXEDLINE: case OBJ_DLG_VFIXEDLINE: - pNewObj = new OUnoObject( - rTargetModel, - _xComponent, - OUString("com.sun.star.awt.UnoControlFixedLineModel"), - nType); + pNewObj = new OUnoObject( _xComponent + ,OUString("com.sun.star.awt.UnoControlFixedLineModel") + ,nType); break; case OBJ_CUSTOMSHAPE: - pNewObj = OCustomShape::Create( - rTargetModel, - _xComponent); + pNewObj = OCustomShape::Create( _xComponent ); try { bool bOpaque = false; @@ -168,10 +156,7 @@ SdrObject* OObjectBase::createObject( break; case OBJ_DLG_SUBREPORT: case OBJ_OLE2: - pNewObj = OOle2Obj::Create( - rTargetModel, - _xComponent, - nType); + pNewObj = OOle2Obj::Create( _xComponent,nType ); break; default: OSL_FAIL("Unknown object id"); @@ -470,21 +455,19 @@ uno::Reference< uno::XInterface > OObjectBase::getUnoShapeOf( SdrObject& _rSdrOb return xShape; } -OCustomShape::OCustomShape( - SdrModel& rSdrModel, - const uno::Reference< report::XReportComponent>& _xComponent) -: SdrObjCustomShape(rSdrModel) - ,OObjectBase(_xComponent) + +OCustomShape::OCustomShape(const uno::Reference< report::XReportComponent>& _xComponent + ) + :SdrObjCustomShape() + ,OObjectBase(_xComponent) { impl_setUnoShape( uno::Reference< uno::XInterface >(_xComponent,uno::UNO_QUERY) ); m_bIsListening = true; } -OCustomShape::OCustomShape( - SdrModel& rSdrModel, - const OUString& _sComponentName) -: SdrObjCustomShape(rSdrModel) - ,OObjectBase(_sComponentName) +OCustomShape::OCustomShape(const OUString& _sComponentName) + :SdrObjCustomShape() + ,OObjectBase(_sComponentName) { m_bIsListening = true; } @@ -517,8 +500,8 @@ void OCustomShape::NbcMove( const Size& rSize ) if ( m_xReportComponent.is() ) { - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv()); + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv()); m_xReportComponent->setPositionX(m_xReportComponent->getPositionX() + rSize.Width()); m_xReportComponent->setPositionY(m_xReportComponent->getPositionY() + rSize.Height()); } @@ -550,12 +533,13 @@ bool OCustomShape::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd) bool bResult = SdrObjCustomShape::EndCreate(rStat, eCmd); if ( bResult ) { - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv()); - - if ( !m_xReportComponent.is() ) - m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY); - + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + if ( pRptModel ) + { + OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv()); + if ( !m_xReportComponent.is() ) + m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY); + } SetPropsFromRect(GetSnapRect()); } @@ -574,8 +558,8 @@ uno::Reference< uno::XInterface > OCustomShape::getUnoShape() uno::Reference< uno::XInterface> xShape = OObjectBase::getUnoShapeOf( *this ); if ( !m_xReportComponent.is() ) { - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv()); + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv()); m_xReportComponent.set(xShape,uno::UNO_QUERY); } return xShape; @@ -588,27 +572,24 @@ void OCustomShape::impl_setUnoShape( const uno::Reference< uno::XInterface >& rx m_xReportComponent.clear(); } -OUnoObject::OUnoObject( - SdrModel& rSdrModel, - const OUString& _sComponentName, - const OUString& rModelName, - sal_uInt16 _nObjectType) -: SdrUnoObj(rSdrModel, rModelName) - ,OObjectBase(_sComponentName) - ,m_nObjectType(_nObjectType) + +OUnoObject::OUnoObject(const OUString& _sComponentName + ,const OUString& rModelName + ,sal_uInt16 _nObjectType) + :SdrUnoObj(rModelName) + ,OObjectBase(_sComponentName) + ,m_nObjectType(_nObjectType) { if ( !rModelName.isEmpty() ) impl_initializeModel_nothrow(); } -OUnoObject::OUnoObject( - SdrModel& rSdrModel, - const uno::Reference< report::XReportComponent>& _xComponent, - const OUString& rModelName, - sal_uInt16 _nObjectType) -: SdrUnoObj(rSdrModel, rModelName) - ,OObjectBase(_xComponent) - ,m_nObjectType(_nObjectType) +OUnoObject::OUnoObject(const uno::Reference< report::XReportComponent>& _xComponent + ,const OUString& rModelName + ,sal_uInt16 _nObjectType) + :SdrUnoObj(rModelName) + ,OObjectBase(_xComponent) + ,m_nObjectType(_nObjectType) { impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) ); @@ -645,8 +626,12 @@ void OUnoObject::impl_setReportComponent_nothrow() if ( m_xReportComponent.is() ) return; - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - OXUndoEnvironment::OUndoEnvLock aLock( rRptModel.GetUndoEnv() ); + OReportModel* pReportModel = static_cast<OReportModel*>(GetModel()); + OSL_ENSURE( pReportModel, "OUnoObject::impl_setReportComponent_nothrow: no report model!" ); + if ( !pReportModel ) + return; + + OXUndoEnvironment::OUndoEnvLock aLock( pReportModel->GetUndoEnv() ); m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY); impl_initializeModel_nothrow(); @@ -680,14 +665,13 @@ void OUnoObject::NbcMove( const Size& rSize ) if ( m_xReportComponent.is() ) { bool bUndoMode = false; - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - - if (rRptModel.GetUndoEnv().IsUndoMode()) + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + if (pRptModel->GetUndoEnv().IsUndoMode()) { // if we are locked from outside, then we must not handle wrong moves, we are in UNDO mode bUndoMode = true; } - OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv()); + OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv()); // LLA: why there exists getPositionX and getPositionY and NOT getPosition() which return a Point? int nNewX = m_xReportComponent->getPositionX() + rSize.Width(); @@ -703,7 +687,7 @@ void OUnoObject::NbcMove( const Size& rSize ) } if (bPositionFixed) { - getSdrModelFromSdrObject().AddUndo(getSdrModelFromSdrObject().GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize)); + GetModel()->AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize)); } // set geometry properties SetPropsFromRect(GetLogicRect()); @@ -883,11 +867,6 @@ void OUnoObject::impl_setUnoShape( const uno::Reference< uno::XInterface >& rxUn releaseUnoShape(); } -OUnoObject* OUnoObject::Clone(SdrModel* pTargetModel) const -{ - return CloneHelper< OUnoObject >(pTargetModel); -} - OUnoObject& OUnoObject::operator=(const OUnoObject& rObj) { if( this == &rObj ) @@ -902,28 +881,29 @@ OUnoObject& OUnoObject::operator=(const OUnoObject& rObj) return *this; } +OUnoObject* OUnoObject::Clone() const +{ + return CloneHelper< OUnoObject >(); +} + // OOle2Obj -OOle2Obj::OOle2Obj( - SdrModel& rSdrModel, - const uno::Reference< report::XReportComponent>& _xComponent, - sal_uInt16 _nType) -: SdrOle2Obj(rSdrModel) - ,OObjectBase(_xComponent) - ,m_nType(_nType) - ,m_bOnlyOnce(true) + +OOle2Obj::OOle2Obj(const uno::Reference< report::XReportComponent>& _xComponent,sal_uInt16 _nType) + :SdrOle2Obj() + ,OObjectBase(_xComponent) + ,m_nType(_nType) + ,m_bOnlyOnce(true) { + impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) ); m_bIsListening = true; } -OOle2Obj::OOle2Obj( - SdrModel& rSdrModel, - const OUString& _sComponentName, - sal_uInt16 _nType) -: SdrOle2Obj(rSdrModel) - ,OObjectBase(_sComponentName) - ,m_nType(_nType) - ,m_bOnlyOnce(true) +OOle2Obj::OOle2Obj(const OUString& _sComponentName,sal_uInt16 _nType) + :SdrOle2Obj() + ,OObjectBase(_sComponentName) + ,m_nType(_nType) + ,m_bOnlyOnce(true) { m_bIsListening = true; } @@ -960,14 +940,13 @@ void OOle2Obj::NbcMove( const Size& rSize ) if ( m_xReportComponent.is() ) { bool bUndoMode = false; - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - - if (rRptModel.GetUndoEnv().IsUndoMode()) + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + if (pRptModel->GetUndoEnv().IsUndoMode()) { // if we are locked from outside, then we must not handle wrong moves, we are in UNDO mode bUndoMode = true; } - OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv()); + OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv()); // LLA: why there exists getPositionX and getPositionY and NOT getPosition() which return a Point? int nNewX = m_xReportComponent->getPositionX() + rSize.Width(); @@ -988,7 +967,7 @@ void OOle2Obj::NbcMove( const Size& rSize ) } if (bPositionFixed) { - getSdrModelFromSdrObject().AddUndo(getSdrModelFromSdrObject().GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize)); + GetModel()->AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize)); } // set geometry properties SetPropsFromRect(GetLogicRect()); @@ -1034,12 +1013,13 @@ bool OOle2Obj::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd) bool bResult = SdrOle2Obj::EndCreate(rStat, eCmd); if ( bResult ) { - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv()); - - if ( !m_xReportComponent.is() ) - m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY); - + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + if ( pRptModel ) + { + OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv()); + if ( !m_xReportComponent.is() ) + m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY); + } // set geometry properties SetPropsFromRect(GetLogicRect()); } @@ -1058,8 +1038,8 @@ uno::Reference< uno::XInterface > OOle2Obj::getUnoShape() uno::Reference< uno::XInterface> xShape = OObjectBase::getUnoShapeOf( *this ); if ( !m_xReportComponent.is() ) { - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - OXUndoEnvironment::OUndoEnvLock aLock(rRptModel.GetUndoEnv()); + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv()); m_xReportComponent.set(xShape,uno::UNO_QUERY); } return xShape; @@ -1088,32 +1068,33 @@ uno::Reference< chart2::data::XDatabaseDataProvider > lcl_getDataProvider(const return xSource; } -// Clone() should make a complete copy of the object. -OOle2Obj* OOle2Obj::Clone(SdrModel* pTargetModel) const -{ - return CloneHelper< OOle2Obj >(pTargetModel); -} - OOle2Obj& OOle2Obj::operator=(const OOle2Obj& rObj) { if( this == &rObj ) return *this; SdrOle2Obj::operator=(rObj); - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); + OReportModel* pRptModel = static_cast<OReportModel*>(rObj.GetModel()); svt::EmbeddedObjectRef::TryRunningState( GetObjRef() ); - impl_createDataProvider_nothrow(rRptModel.getReportDefinition().get()); + impl_createDataProvider_nothrow(pRptModel->getReportDefinition().get()); uno::Reference< chart2::data::XDatabaseDataProvider > xSource( lcl_getDataProvider(rObj.GetObjRef()) ); uno::Reference< chart2::data::XDatabaseDataProvider > xDest( lcl_getDataProvider(GetObjRef()) ); if ( xSource.is() && xDest.is() ) comphelper::copyProperties(xSource.get(),xDest.get()); - initializeChart(rRptModel.getReportDefinition().get()); + initializeChart(pRptModel->getReportDefinition().get()); return *this; } + +// Clone() should make a complete copy of the object. +OOle2Obj* OOle2Obj::Clone() const +{ + return CloneHelper< OOle2Obj >(); +} + void OOle2Obj::impl_createDataProvider_nothrow(const uno::Reference< frame::XModel>& _xModel) { try @@ -1142,8 +1123,8 @@ void OOle2Obj::initializeOle() { m_bOnlyOnce = false; uno::Reference < embed::XEmbeddedObject > xObj = GetObjRef(); - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - rRptModel.GetUndoEnv().AddElement(lcl_getDataProvider(xObj)); + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + pRptModel->GetUndoEnv().AddElement(lcl_getDataProvider(xObj)); uno::Reference< embed::XComponentSupplier > xCompSupp( xObj, uno::UNO_QUERY ); if( xCompSupp.is() ) @@ -1174,8 +1155,8 @@ void OOle2Obj::initializeChart( const uno::Reference< frame::XModel>& _xModel) if ( !lcl_getDataProvider(xObj).is() ) impl_createDataProvider_nothrow(_xModel); - OReportModel& rRptModel(static_cast< OReportModel& >(getSdrModelFromSdrObject())); - rRptModel.GetUndoEnv().AddElement(lcl_getDataProvider(xObj)); + OReportModel* pRptModel = static_cast<OReportModel*>(GetModel()); + pRptModel->GetUndoEnv().AddElement(lcl_getDataProvider(xObj)); ::comphelper::NamedValueCollection aArgs; aArgs.put( "CellRangeRepresentation", uno::makeAny( OUString( "all" ) ) ); |