Kaydet (Commit) de66e122 authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Move the rest of the members to the impl class.

Change-Id: I80186a617c751420954b27e070559cc8487c7fd9
üst 11c68205
...@@ -42,10 +42,12 @@ namespace svt { class EmbeddedObjectRef; } ...@@ -42,10 +42,12 @@ namespace svt { class EmbeddedObjectRef; }
class SvxUnoShapeModifyListener; class SvxUnoShapeModifyListener;
class SdrOle2ObjImpl; class SdrOle2ObjImpl;
class SVX_DLLPUBLIC SdrOle2Obj : public SdrRectObj class SVX_DLLPUBLIC SdrOle2Obj : public SdrRectObj
{ {
private: private:
SdrOle2ObjImpl* mpImpl;
private:
SVX_DLLPRIVATE void Connect_Impl(); SVX_DLLPRIVATE void Connect_Impl();
SVX_DLLPRIVATE void Disconnect_Impl(); SVX_DLLPRIVATE void Disconnect_Impl();
SVX_DLLPRIVATE void Reconnect_Impl(); SVX_DLLPRIVATE void Reconnect_Impl();
...@@ -56,29 +58,13 @@ private: ...@@ -56,29 +58,13 @@ private:
SVX_DLLPRIVATE void SetGraphic_Impl(const Graphic* pGrf); SVX_DLLPRIVATE void SetGraphic_Impl(const Graphic* pGrf);
// #i118485# helper added // #i118485# helper added
SdrObject* createSdrGrafObjReplacement(bool bAddText, bool bUseHCGraphic) const; SVX_DLLPRIVATE SdrObject* createSdrGrafObjReplacement(bool bAddText, bool bUseHCGraphic) const;
SVX_DLLPRIVATE void ImpSetVisAreaSize();
protected: protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() SAL_OVERRIDE; virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact() SAL_OVERRIDE;
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() SAL_OVERRIDE; virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties() SAL_OVERRIDE;
private:
SdrOle2ObjImpl* mpImpl;
// Due to compatibility at SdrTextObj for now
bool bFrame:1;
bool bInDestruction:1;
// #i118524#
bool mbSuppressSetVisAreaSize:1;
mutable bool m_bTypeAsked:1;
mutable bool m_bChart:1;
SvxUnoShapeModifyListener* pModifyListener;
private:
void ImpSetVisAreaSize();
public: public:
OUString GetStyleString(); OUString GetStyleString();
TYPEINFO_OVERRIDE(); TYPEINFO_OVERRIDE();
...@@ -106,7 +92,7 @@ public: ...@@ -106,7 +92,7 @@ public:
// #i118524# Allow suppress SetVisAreaSize in changing methods when call // #i118524# Allow suppress SetVisAreaSize in changing methods when call
// comes from OLE client // comes from OLE client
void setSuppressSetVisAreaSize(bool bNew) { mbSuppressSetVisAreaSize = bNew; } void setSuppressSetVisAreaSize( bool bNew );
// OLE object has got a separate PersistName member now; // OLE object has got a separate PersistName member now;
// !!! use ::SetPersistName( ... ) only, if you know what you do !!! // !!! use ::SetPersistName( ... ) only, if you know what you do !!!
......
...@@ -677,32 +677,50 @@ public: ...@@ -677,32 +677,50 @@ public:
OUString aPersistName; // name of object in persist OUString aPersistName; // name of object in persist
SdrLightEmbeddedClient_Impl* pLightClient; // must be registered as client only using AddOwnLightClient() call SdrLightEmbeddedClient_Impl* pLightClient; // must be registered as client only using AddOwnLightClient() call
// New local var to avoid repeated loading if load of OLE2 fails bool mbFrame:1; // Due to compatibility at SdrTextObj for now
bool mbLoadingOLEObjectFailed; bool mbInDestruction:1;
bool mbConnected; bool mbSuppressSetVisAreaSize:1; // #i118524#
mutable bool mbTypeAsked:1;
mutable bool mbIsChart:1;
bool mbLoadingOLEObjectFailed:1; // New local var to avoid repeated loading if load of OLE2 fails
bool mbConnected:1;
SdrEmbedObjectLink* mpObjectLink; SdrEmbedObjectLink* mpObjectLink;
OUString maLinkURL; OUString maLinkURL;
SdrOle2ObjImpl() : SvxUnoShapeModifyListener* mpModifyListener;
SdrOle2ObjImpl( bool bFrame ) :
mpGraphic(NULL), mpGraphic(NULL),
mpGraphicObject(NULL), mpGraphicObject(NULL),
pLightClient (NULL), pLightClient (NULL),
mbFrame(bFrame),
mbInDestruction(false),
mbSuppressSetVisAreaSize(false),
mbTypeAsked(false),
mbIsChart(false),
mbLoadingOLEObjectFailed(false), mbLoadingOLEObjectFailed(false),
mbConnected(false), mbConnected(false),
mpObjectLink(NULL) mpObjectLink(NULL),
mpModifyListener(NULL)
{ {
mxObjRef.Lock(true); mxObjRef.Lock(true);
} }
SdrOle2ObjImpl( const svt::EmbeddedObjectRef& rObjRef ) : SdrOle2ObjImpl( bool bFrame, const svt::EmbeddedObjectRef& rObjRef ) :
mxObjRef(rObjRef), mxObjRef(rObjRef),
mpGraphic(NULL), mpGraphic(NULL),
mpGraphicObject(NULL), mpGraphicObject(NULL),
pLightClient (NULL), pLightClient (NULL),
mbFrame(bFrame),
mbInDestruction(false),
mbSuppressSetVisAreaSize(false),
mbTypeAsked(false),
mbIsChart(false),
mbLoadingOLEObjectFailed(false), mbLoadingOLEObjectFailed(false),
mbConnected(false), mbConnected(false),
mpObjectLink(NULL) mpObjectLink(NULL),
mpModifyListener(NULL)
{ {
mxObjRef.Lock(true); mxObjRef.Lock(true);
} }
...@@ -711,6 +729,12 @@ public: ...@@ -711,6 +729,12 @@ public:
{ {
delete mpGraphic; delete mpGraphic;
delete mpGraphicObject; delete mpGraphicObject;
if (mpModifyListener)
{
mpModifyListener->invalidate();
mpModifyListener->release();
}
} }
}; };
...@@ -759,25 +783,13 @@ sdr::contact::ViewContact* SdrOle2Obj::CreateObjectSpecificViewContact() ...@@ -759,25 +783,13 @@ sdr::contact::ViewContact* SdrOle2Obj::CreateObjectSpecificViewContact()
TYPEINIT1(SdrOle2Obj,SdrRectObj); TYPEINIT1(SdrOle2Obj,SdrRectObj);
SdrOle2Obj::SdrOle2Obj( bool bFrame_ ) : SdrOle2Obj::SdrOle2Obj( bool bFrame_ ) :
mpImpl(new SdrOle2ObjImpl), mpImpl(new SdrOle2ObjImpl(bFrame_))
bFrame(bFrame_),
bInDestruction(false),
mbSuppressSetVisAreaSize(false),
m_bTypeAsked(false),
m_bChart(false),
pModifyListener(NULL)
{ {
} }
SdrOle2Obj::SdrOle2Obj( const svt::EmbeddedObjectRef& rNewObjRef, const OUString& rNewObjName, const Rectangle& rNewRect, bool bFrame_ ) : SdrOle2Obj::SdrOle2Obj( const svt::EmbeddedObjectRef& rNewObjRef, const OUString& rNewObjName, const Rectangle& rNewRect, bool bFrame_ ) :
SdrRectObj(rNewRect), SdrRectObj(rNewRect),
mpImpl(new SdrOle2ObjImpl(rNewObjRef)), mpImpl(new SdrOle2ObjImpl(bFrame_, rNewObjRef))
bFrame(bFrame_),
bInDestruction(false),
mbSuppressSetVisAreaSize(false),
m_bTypeAsked(false),
m_bChart(false),
pModifyListener(NULL)
{ {
mpImpl->aPersistName = rNewObjName; mpImpl->aPersistName = rNewObjName;
...@@ -802,17 +814,11 @@ OUString SdrOle2Obj::GetStyleString() ...@@ -802,17 +814,11 @@ OUString SdrOle2Obj::GetStyleString()
SdrOle2Obj::~SdrOle2Obj() SdrOle2Obj::~SdrOle2Obj()
{ {
bInDestruction = true; mpImpl->mbInDestruction = true;
if ( mpImpl->mbConnected ) if ( mpImpl->mbConnected )
Disconnect(); Disconnect();
if(pModifyListener)
{
pModifyListener->invalidate();
pModifyListener->release();
}
DisconnectFileLink_Impl(); DisconnectFileLink_Impl();
if ( mpImpl->pLightClient ) if ( mpImpl->pLightClient )
...@@ -1088,7 +1094,7 @@ void SdrOle2Obj::Connect_Impl() ...@@ -1088,7 +1094,7 @@ void SdrOle2Obj::Connect_Impl()
else if ( !mpImpl->mxObjRef.is() ) else if ( !mpImpl->mxObjRef.is() )
{ {
mpImpl->mxObjRef.Assign( rContainer.GetEmbeddedObject( mpImpl->aPersistName ), mpImpl->mxObjRef.GetViewAspect() ); mpImpl->mxObjRef.Assign( rContainer.GetEmbeddedObject( mpImpl->aPersistName ), mpImpl->mxObjRef.GetViewAspect() );
m_bTypeAsked = false; mpImpl->mbTypeAsked = false;
} }
if ( mpImpl->mxObjRef.GetObject().is() ) if ( mpImpl->mxObjRef.GetObject().is() )
...@@ -1163,16 +1169,16 @@ void SdrOle2Obj::AddListeners_Impl() ...@@ -1163,16 +1169,16 @@ void SdrOle2Obj::AddListeners_Impl()
if( mpImpl->mxObjRef.is() && mpImpl->mxObjRef->getCurrentState() != embed::EmbedStates::LOADED ) if( mpImpl->mxObjRef.is() && mpImpl->mxObjRef->getCurrentState() != embed::EmbedStates::LOADED )
{ {
// register modify listener // register modify listener
if( !pModifyListener ) if (!mpImpl->mpModifyListener)
{ {
((SdrOle2Obj*)this)->pModifyListener = new SvxUnoShapeModifyListener( (SdrOle2Obj*)this ); mpImpl->mpModifyListener = new SvxUnoShapeModifyListener(this);
pModifyListener->acquire(); mpImpl->mpModifyListener->acquire();
} }
uno::Reference< util::XModifyBroadcaster > xBC( getXModel(), uno::UNO_QUERY ); uno::Reference< util::XModifyBroadcaster > xBC( getXModel(), uno::UNO_QUERY );
if( xBC.is() && pModifyListener ) if (xBC.is() && mpImpl->mpModifyListener)
{ {
uno::Reference< util::XModifyListener > xListener( pModifyListener ); uno::Reference<util::XModifyListener> xListener(mpImpl->mpModifyListener);
xBC->addModifyListener( xListener ); xBC->addModifyListener( xListener );
} }
} }
...@@ -1205,9 +1211,9 @@ void SdrOle2Obj::RemoveListeners_Impl() ...@@ -1205,9 +1211,9 @@ void SdrOle2Obj::RemoveListeners_Impl()
if ( nState != embed::EmbedStates::LOADED ) if ( nState != embed::EmbedStates::LOADED )
{ {
uno::Reference< util::XModifyBroadcaster > xBC( getXModel(), uno::UNO_QUERY ); uno::Reference< util::XModifyBroadcaster > xBC( getXModel(), uno::UNO_QUERY );
if( xBC.is() && pModifyListener ) if (xBC.is() && mpImpl->mpModifyListener)
{ {
uno::Reference< util::XModifyListener > xListener( pModifyListener ); uno::Reference<util::XModifyListener> xListener(mpImpl->mpModifyListener);
xBC->removeModifyListener( xListener ); xBC->removeModifyListener( xListener );
} }
} }
...@@ -1518,7 +1524,7 @@ void SdrOle2Obj::SetObjRef( const com::sun::star::uno::Reference < com::sun::sta ...@@ -1518,7 +1524,7 @@ void SdrOle2Obj::SetObjRef( const com::sun::star::uno::Reference < com::sun::sta
Disconnect(); Disconnect();
mpImpl->mxObjRef.Assign( rNewObjRef, GetAspect() ); mpImpl->mxObjRef.Assign( rNewObjRef, GetAspect() );
m_bTypeAsked = false; mpImpl->mbTypeAsked = false;
if ( mpImpl->mxObjRef.is() ) if ( mpImpl->mxObjRef.is() )
{ {
...@@ -1607,14 +1613,14 @@ void SdrOle2Obj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const ...@@ -1607,14 +1613,14 @@ void SdrOle2Obj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const
sal_uInt16 SdrOle2Obj::GetObjIdentifier() const sal_uInt16 SdrOle2Obj::GetObjIdentifier() const
{ {
return bFrame ? sal_uInt16(OBJ_FRAME) : sal_uInt16(OBJ_OLE2); return mpImpl->mbFrame ? sal_uInt16(OBJ_FRAME) : sal_uInt16(OBJ_OLE2);
} }
OUString SdrOle2Obj::TakeObjNameSingul() const OUString SdrOle2Obj::TakeObjNameSingul() const
{ {
OUStringBuffer sName(ImpGetResStr(bFrame ? STR_ObjNameSingulFrame : STR_ObjNameSingulOLE2)); OUStringBuffer sName(ImpGetResStr(mpImpl->mbFrame ? STR_ObjNameSingulFrame : STR_ObjNameSingulOLE2));
const OUString aName(GetName()); const OUString aName(GetName());
...@@ -1632,7 +1638,7 @@ OUString SdrOle2Obj::TakeObjNameSingul() const ...@@ -1632,7 +1638,7 @@ OUString SdrOle2Obj::TakeObjNameSingul() const
OUString SdrOle2Obj::TakeObjNamePlural() const OUString SdrOle2Obj::TakeObjNamePlural() const
{ {
return ImpGetResStr(bFrame ? STR_ObjNamePluralFrame : STR_ObjNamePluralOLE2); return ImpGetResStr(mpImpl->mbFrame ? STR_ObjNamePluralFrame : STR_ObjNamePluralOLE2);
} }
...@@ -1676,7 +1682,7 @@ SdrOle2Obj& SdrOle2Obj::assignFrom( ...@@ -1676,7 +1682,7 @@ SdrOle2Obj& SdrOle2Obj::assignFrom(
mpImpl->aPersistName = rOle2Obj.mpImpl->aPersistName; mpImpl->aPersistName = rOle2Obj.mpImpl->aPersistName;
mpImpl->maProgName = rOle2Obj.mpImpl->maProgName; mpImpl->maProgName = rOle2Obj.mpImpl->maProgName;
bFrame = rOle2Obj.bFrame; mpImpl->mbFrame = rOle2Obj.mpImpl->mbFrame;
if (rOle2Obj.mpImpl->mpGraphic) if (rOle2Obj.mpImpl->mpGraphic)
{ {
...@@ -1704,7 +1710,7 @@ SdrOle2Obj& SdrOle2Obj::assignFrom( ...@@ -1704,7 +1710,7 @@ SdrOle2Obj& SdrOle2Obj::assignFrom(
OUString aTmp; OUString aTmp;
mpImpl->mxObjRef.Assign( pDestPers->getEmbeddedObjectContainer().CopyAndGetEmbeddedObject( mpImpl->mxObjRef.Assign( pDestPers->getEmbeddedObjectContainer().CopyAndGetEmbeddedObject(
rContainer, xObj, aTmp, rSrcShellID, rDestShellID), rOle2Obj.GetAspect()); rContainer, xObj, aTmp, rSrcShellID, rDestShellID), rOle2Obj.GetAspect());
m_bTypeAsked = false; mpImpl->mbTypeAsked = false;
mpImpl->aPersistName = aTmp; mpImpl->aPersistName = aTmp;
CheckFileLink_Impl(); CheckFileLink_Impl();
} }
...@@ -1724,7 +1730,7 @@ SdrOle2Obj& SdrOle2Obj::operator=(const SdrOle2Obj& rObj) ...@@ -1724,7 +1730,7 @@ SdrOle2Obj& SdrOle2Obj::operator=(const SdrOle2Obj& rObj)
void SdrOle2Obj::ImpSetVisAreaSize() void SdrOle2Obj::ImpSetVisAreaSize()
{ {
// #i118524# do not again set VisAreaSize when the call comes from OLE client (e.g. ObjectAreaChanged) // #i118524# do not again set VisAreaSize when the call comes from OLE client (e.g. ObjectAreaChanged)
if(mbSuppressSetVisAreaSize) if (mpImpl->mbSuppressSetVisAreaSize)
return; return;
// currently there is no need to recalculate scaling for iconified objects // currently there is no need to recalculate scaling for iconified objects
...@@ -1933,7 +1939,10 @@ Size SdrOle2Obj::GetOrigObjSize( MapMode* pTargetMapMode ) const ...@@ -1933,7 +1939,10 @@ Size SdrOle2Obj::GetOrigObjSize( MapMode* pTargetMapMode ) const
return mpImpl->mxObjRef.GetSize( pTargetMapMode ); return mpImpl->mxObjRef.GetSize( pTargetMapMode );
} }
void SdrOle2Obj::setSuppressSetVisAreaSize( bool bNew )
{
mpImpl->mbSuppressSetVisAreaSize = bNew;
}
void SdrOle2Obj::NbcMove(const Size& rSize) void SdrOle2Obj::NbcMove(const Size& rSize)
{ {
...@@ -2031,7 +2040,7 @@ void SdrOle2Obj::GetObjRef_Impl() ...@@ -2031,7 +2040,7 @@ void SdrOle2Obj::GetObjRef_Impl()
if(!mpImpl->mbLoadingOLEObjectFailed) if(!mpImpl->mbLoadingOLEObjectFailed)
{ {
mpImpl->mxObjRef.Assign( pModel->GetPersist()->getEmbeddedObjectContainer().GetEmbeddedObject( mpImpl->aPersistName ), GetAspect() ); mpImpl->mxObjRef.Assign( pModel->GetPersist()->getEmbeddedObjectContainer().GetEmbeddedObject( mpImpl->aPersistName ), GetAspect() );
m_bTypeAsked = false; mpImpl->mbTypeAsked = false;
CheckFileLink_Impl(); CheckFileLink_Impl();
// If loading of OLE object failed, remember that to not invoke a endless // If loading of OLE object failed, remember that to not invoke a endless
...@@ -2073,7 +2082,7 @@ void SdrOle2Obj::GetObjRef_Impl() ...@@ -2073,7 +2082,7 @@ void SdrOle2Obj::GetObjRef_Impl()
if (pModel && pModel->GetRefDevice() && if (pModel && pModel->GetRefDevice() &&
pModel->GetRefDevice()->GetOutDevType() == OUTDEV_PRINTER) pModel->GetRefDevice()->GetOutDevType() == OUTDEV_PRINTER)
{ {
if(!bInDestruction) if (!mpImpl->mbInDestruction)
{ {
//TODO/LATER: printerchange notification //TODO/LATER: printerchange notification
/* /*
...@@ -2128,12 +2137,12 @@ uno::Reference< frame::XModel > SdrOle2Obj::getXModel() const ...@@ -2128,12 +2137,12 @@ uno::Reference< frame::XModel > SdrOle2Obj::getXModel() const
bool SdrOle2Obj::IsChart() const bool SdrOle2Obj::IsChart() const
{ {
if ( !m_bTypeAsked ) if (!mpImpl->mbTypeAsked)
{ {
m_bChart = ChartHelper::IsChart(mpImpl->mxObjRef); mpImpl->mbIsChart = ChartHelper::IsChart(mpImpl->mxObjRef);
m_bTypeAsked = true; mpImpl->mbTypeAsked = true;
} }
return m_bChart; return mpImpl->mbIsChart;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment