22#include <com/sun/star/uno/Sequence.hxx>
23#include <com/sun/star/uno/Reference.hxx>
24#include <com/sun/star/embed/XEmbeddedObject.hpp>
25#include <com/sun/star/embed/XEmbeddedOleObject.hpp>
26#include <com/sun/star/embed/XInplaceObject.hpp>
27#include <com/sun/star/embed/XEmbedPersist.hpp>
28#include <com/sun/star/embed/XLinkageSupport.hpp>
29#include <com/sun/star/embed/VerbDescriptor.hpp>
30#include <com/sun/star/container/XChild.hpp>
31#include <com/sun/star/util/XCloseable.hpp>
32#include <com/sun/star/util/XCloseListener.hpp>
33#include <com/sun/star/io/XActiveDataStreamer.hpp>
34#include <com/sun/star/lang/XInitialization.hpp>
35#include <com/sun/star/lang/XServiceInfo.hpp>
36#include <com/sun/star/uno/XComponentContext.hpp>
40#include <osl/thread.h>
44 class OMultiTypeInterfaceContainerHelper2;
55 bool m_bWasEverActive;
56 bool m_bVerbExecutionInProgress;
57 oslThreadIdentifier m_nVerbExecutionThreadIdentifier;
58 bool m_bChangedOnVerbExecution;
66 , m_bWasEverActive( false )
67 , m_bVerbExecutionInProgress( false )
68 , m_nVerbExecutionThreadIdentifier( 0 )
69 , m_bChangedOnVerbExecution( false )
74 void StartControlExecution();
75 bool EndControlExecution_WasModified();
76 void ModificationNotificationIsDone();
78 bool CanDoNotification() {
return ( !m_bVerbExecutionInProgress && !m_bWasEverActive && !
m_nNotificationLock ); }
80 void ObjectIsActive() { m_bWasEverActive =
true; }
111 < css::embed::XEmbeddedObject
112 , css::embed::XEmbeddedOleObject
113 , css::embed::XEmbedPersist
114 , css::embed::XLinkageSupport
115 , css::embed::XInplaceObject
116 , css::container::XChild
117 , css::io::XActiveDataStreamer
118 , css::lang::XInitialization
119 , css::lang::XServiceInfo >
136 css::uno::Reference< css::uno::XComponentContext >
m_xContext;
213 const css::uno::Reference< css::io::XStream >& xStream );
218 const css::uno::Reference< css::io::XInputStream >& xInStream );
220 void SwitchComponentToRunningState_Impl();
224 void StateChangeNotification_Impl(
bool bBeforeChange, sal_Int32 nOldState, sal_Int32 nNewState );
225 css::uno::Reference< css::io::XOutputStream > GetStreamForSaving();
228 css::uno::Sequence< sal_Int32 > GetIntermediateVerbsSequence_Impl( sal_Int32 nNewState );
230 static css::uno::Sequence< sal_Int32 > GetReachableStatesList_Impl(
231 const css::uno::Sequence< css::embed::VerbDescriptor >& aVerbList );
237 const css::uno::Reference< css::embed::XStorage >& xNewParentStorage,
238 const css::uno::Reference< css::io::XStream >& xNewObjectStream,
239 const OUString& aNewName );
242 const css::uno::Reference< css::embed::XStorage >& xNewParentStorage,
243 const OUString& aNewName );
249 const css::uno::Reference< css::embed::XStorage >& xStorage,
250 const OUString& sEntName,
251 const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs,
255 void StoreObjectToStream( css::uno::Reference< css::io::XOutputStream >
const & xOutStream );
259 const css::uno::Reference< css::io::XStream >& xTargetStream,
260 const css::uno::Reference< css::io::XStream >& xCachedVisualRepresentation );
270 const css::uno::Reference< css::io::XStream >& xCachedVisRepr );
273 const css::uno::Reference< css::io::XStream >& xStream,
274 bool bAllowRepair50 =
false )
281 void CreateOleComponentFromClipboard_Impl(
OleComponent* pOleComponent =
nullptr );
282 OUString CreateTempURLEmpty_Impl();
283 OUString GetTempURL_Impl();
284 void SetObjectIsLink_Impl(
bool bIsLink ) {
m_bIsLink = bIsLink; }
291 bool TryToConvertToOOo(
const css::uno::Reference< css::io::XStream >& xStream );
296 const css::uno::Sequence< sal_Int8 >& aClassID,
297 OUString aClassName );
305 OleEmbeddedObject(
const css::uno::Reference< css::uno::XComponentContext >& xContext );
311 static void OnIconChanged_Impl();
312 void OnViewChanged_Impl();
313 void OnClosed_Impl();
318 virtual void SAL_CALL
changeState( sal_Int32 nNewState )
override;
324 virtual void SAL_CALL
doVerb( sal_Int32 nVerbID )
override;
326 virtual css::uno::Sequence< css::embed::VerbDescriptor > SAL_CALL
getSupportedVerbs()
override;
329 const css::uno::Reference< css::embed::XEmbeddedClient >& xClient )
override;
331 virtual css::uno::Reference< css::embed::XEmbeddedClient > SAL_CALL
getClientSite()
override;
333 virtual void SAL_CALL
update()
override;
335 virtual void SAL_CALL
setUpdateMode( sal_Int32 nMode )
override;
337 virtual sal_Int64 SAL_CALL
getStatus( sal_Int64 nAspect )
override;
344 virtual void SAL_CALL
setVisualAreaSize( sal_Int64 nAspect,
const css::awt::Size& aSize )
override;
350 virtual sal_Int32 SAL_CALL
getMapUnit( sal_Int64 nAspect )
override;
356 const css::uno::Reference< css::embed::XStorage >& xStorage,
357 const OUString& sEntName,
358 sal_Int32 nEntryConnectionMode,
359 const css::uno::Sequence< css::beans::PropertyValue >& lArguments,
360 const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs )
override;
362 virtual void SAL_CALL
storeToEntry(
const css::uno::Reference< css::embed::XStorage >& xStorage,
const OUString& sEntName,
const css::uno::Sequence< css::beans::PropertyValue >& lArguments,
const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs )
override;
365 const css::uno::Reference< css::embed::XStorage >& xStorage,
366 const OUString& sEntName,
367 const css::uno::Sequence< css::beans::PropertyValue >& lArguments,
368 const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs )
override;
378 virtual void SAL_CALL
breakLink(
const css::uno::Reference< css::embed::XStorage >& xStorage,
379 const OUString& sEntName )
override;
383 virtual OUString SAL_CALL
getLinkURL()
override;
386 virtual void SAL_CALL
storeOwn()
override;
390 virtual void SAL_CALL
reload(
391 const css::uno::Sequence< css::beans::PropertyValue >& lArguments,
392 const css::uno::Sequence< css::beans::PropertyValue >& lObjArgs )
override;
396 virtual css::uno::Sequence< sal_Int8 > SAL_CALL
getClassID()
override;
401 const css::uno::Sequence< sal_Int8 >& aClassID,
const OUString& aClassName )
override;
404 virtual void SAL_CALL
addStateChangeListener(
const css::uno::Reference< css::embed::XStateChangeListener >& xListener )
override;
405 virtual void SAL_CALL
removeStateChangeListener(
const css::uno::Reference< css::embed::XStateChangeListener >& xListener )
override;
410 virtual css::uno::Reference< css::util::XCloseable > SAL_CALL
getComponent()
override;
414 virtual void SAL_CALL
close(
sal_Bool DeliverOwnership )
override;
417 const css::uno::Reference< css::util::XCloseListener >& Listener )
override;
420 const css::uno::Reference< css::util::XCloseListener >& Listener )
override;
424 const css::uno::Reference< css::document::XEventListener >& Listener )
override;
427 const css::uno::Reference< css::document::XEventListener >& Listener )
override;
432 const css::awt::Rectangle& aClipRect )
override;
437 const css::uno::Sequence< css::awt::KeyEvent >& aKeys )
override;
440 virtual css::uno::Reference< css::uno::XInterface > SAL_CALL
getParent( )
override;
441 virtual void SAL_CALL
setParent(
const css::uno::Reference< css::uno::XInterface >& Parent )
override;
444 void SAL_CALL
setStream(
const css::uno::Reference<css::io::XStream>& xStream)
override;
445 css::uno::Reference<css::io::XStream> SAL_CALL
getStream()
override;
448 void SAL_CALL
initialize(
const css::uno::Sequence<css::uno::Any>& rArguments)
override;
bool OnShowWindow_Impl(bool bShow)
Represents an OLE object that has native data and we try to let an external application handle that d...
css::uno::Reference< css::embed::XEmbeddedClient > m_xClientSite
css::uno::Reference< css::io::XStream > TryToGetAcceptableFormat_Impl(const css::uno::Reference< css::io::XStream > &xStream)
OUString m_aContainerName
void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > &rArguments) override
virtual void SAL_CALL addCloseListener(const css::uno::Reference< css::util::XCloseListener > &Listener) override
void SAL_CALL setStream(const css::uno::Reference< css::io::XStream > &xStream) override
OleEmbeddedObject(css::uno::Reference< css::uno::XComponentContext > xContext, bool bLink)
virtual void SAL_CALL doVerb(sal_Int32 nVerbID) override
virtual css::uno::Sequence< css::embed::VerbDescriptor > SAL_CALL getSupportedVerbs() override
css::uno::Reference< css::io::XStream > m_xCachedVisualRepresentation
void StoreToLocation_Impl(const css::uno::Reference< css::embed::XStorage > &xStorage, const OUString &sEntName, const css::uno::Sequence< css::beans::PropertyValue > &lObjArgs, bool bSaveAs)
virtual css::awt::Size SAL_CALL getVisualAreaSize(sal_Int64 nAspect) override
css::uno::Reference< css::io::XStream > TryToRetrieveCachedVisualRepresentation_Impl(const css::uno::Reference< css::io::XStream > &xStream, bool bAllowRepair50=false) noexcept
rtl::Reference< OwnView_Impl > m_xOwnView
virtual OUString SAL_CALL getLinkURL() override
css::uno::Reference< css::io::XStream > GetNewFilledTempStream_Impl(const css::uno::Reference< css::io::XInputStream > &xInStream)
virtual css::embed::VisualRepresentation SAL_CALL getPreferredVisualRepresentation(::sal_Int64 nAspect) override
virtual void SAL_CALL setClassInfo(const css::uno::Sequence< sal_Int8 > &aClassID, const OUString &aClassName) override
OleEmbeddedObject(css::uno::Reference< css::uno::XComponentContext > xContext, const css::uno::Sequence< sal_Int8 > &aClassID, OUString aClassName)
bool TryToConvertToOOo(const css::uno::Reference< css::io::XStream > &xStream)
virtual void SAL_CALL storeOwn() override
css::awt::Size m_aCachedSize
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL getParent() override
css::uno::Reference< css::util::XCloseListener > m_xClosePreventer
virtual void SAL_CALL removeEventListener(const css::uno::Reference< css::document::XEventListener > &Listener) override
virtual css::uno::Reference< css::util::XCloseable > SAL_CALL getComponent() override
virtual void SAL_CALL enableModeless(sal_Bool bEnable) override
void RemoveVisualCache_Impl(const css::uno::Reference< css::io::XStream > &xTargetStream)
virtual void SAL_CALL setVisualAreaSize(sal_Int64 nAspect, const css::awt::Size &aSize) override
css::uno::Reference< css::embed::XStorage > m_xParentStorage
css::uno::Reference< css::io::XStream > m_xNewCachedVisRepl
virtual sal_Bool SAL_CALL hasEntry() override
css::uno::Reference< css::io::XStream > SAL_CALL getStream() override
void MakeEventListenerNotification_Impl(const OUString &aEventName)
void SwitchOwnPersistence(const css::uno::Reference< css::embed::XStorage > &xNewParentStorage, const OUString &aNewName)
virtual OUString SAL_CALL getClassName() override
virtual void SAL_CALL update() override
css::uno::Reference< css::uno::XInterface > m_xParent
css::uno::Reference< css::io::XStream > m_xNewObjectStream
virtual css::uno::Reference< css::embed::XEmbeddedClient > SAL_CALL getClientSite() override
virtual void SAL_CALL setParent(const css::uno::Reference< css::uno::XInterface > &Parent) override
virtual ~OleEmbeddedObject() override
virtual OUString SAL_CALL getEntryName() override
css::uno::Sequence< sal_Int8 > m_aClassID
std::unique_ptr<::comphelper::OMultiTypeInterfaceContainerHelper2 > m_pInterfaceContainer
virtual void SAL_CALL removeCloseListener(const css::uno::Reference< css::util::XCloseListener > &Listener) override
virtual void SAL_CALL addStateChangeListener(const css::uno::Reference< css::embed::XStateChangeListener > &xListener) override
virtual void SAL_CALL storeAsEntry(const css::uno::Reference< css::embed::XStorage > &xStorage, const OUString &sEntName, const css::uno::Sequence< css::beans::PropertyValue > &lArguments, const css::uno::Sequence< css::beans::PropertyValue > &lObjArgs) override
sal_Int64 m_nStatusAspect
bool m_bNewVisReplInStream
css::embed::VisualRepresentation GetVisualRepresentationInNativeFormat_Impl(const css::uno::Reference< css::io::XStream > &xCachedVisRepr)
void SetVisReplInStream(bool bExists)
virtual void SAL_CALL removeStateChangeListener(const css::uno::Reference< css::embed::XStateChangeListener > &xListener) override
virtual sal_Bool SAL_CALL isReadonly() override
virtual void SAL_CALL close(sal_Bool DeliverOwnership) override
virtual sal_Bool SAL_CALL isLink() override
virtual void SAL_CALL setPersistentEntry(const css::uno::Reference< css::embed::XStorage > &xStorage, const OUString &sEntName, sal_Int32 nEntryConnectionMode, const css::uno::Sequence< css::beans::PropertyValue > &lArguments, const css::uno::Sequence< css::beans::PropertyValue > &lObjArgs) override
virtual sal_Int64 SAL_CALL getStatus(sal_Int64 nAspect) override
void InsertVisualCache_Impl(const css::uno::Reference< css::io::XStream > &xTargetStream, const css::uno::Reference< css::io::XStream > &xCachedVisualRepresentation)
virtual sal_Int32 SAL_CALL getCurrentState() override
rtl::Reference< OleComponent > m_pOleComponent
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getClassID() override
bool m_bWaitSaveCompleted
bool m_bVisReplInitialized
css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
OUString MoveToTemporarySubstream()
sal_Int64 m_nCachedAspect
virtual css::uno::Sequence< sal_Int32 > SAL_CALL getReachableStates() override
virtual void SAL_CALL translateAccelerators(const css::uno::Sequence< css::awt::KeyEvent > &aKeys) override
void SwitchOwnPersistence(const css::uno::Reference< css::embed::XStorage > &xNewParentStorage, const css::uno::Reference< css::io::XStream > &xNewObjectStream, const OUString &aNewName)
css::uno::Reference< css::uno::XComponentContext > m_xContext
VerbExecutionController m_aVerbExecutionController
virtual void SAL_CALL storeToEntry(const css::uno::Reference< css::embed::XStorage > &xStorage, const OUString &sEntName, const css::uno::Sequence< css::beans::PropertyValue > &lArguments, const css::uno::Sequence< css::beans::PropertyValue > &lObjArgs) override
css::uno::Reference< css::io::XStream > m_xObjectStream
virtual void SAL_CALL saveCompleted(sal_Bool bUseNew) override
css::uno::Reference< css::embed::XStorage > m_xNewParentStorage
virtual void SAL_CALL reload(const css::uno::Sequence< css::beans::PropertyValue > &lArguments, const css::uno::Sequence< css::beans::PropertyValue > &lObjArgs) override
OUString SAL_CALL getImplementationName() override
css::uno::Reference< css::embed::XStorage > CreateTemporarySubstorage(OUString &o_aStorageName)
css::awt::Size m_aSizeToSet
css::uno::Reference< css::embed::XEmbeddedObject > m_xWrappedObject
bool HasVisReplInStream()
virtual void SAL_CALL breakLink(const css::uno::Reference< css::embed::XStorage > &xStorage, const OUString &sEntName) override
bool m_bStreamReadOnly
If it is allowed to modify entries in the stream of the OLE storage.
virtual void SAL_CALL setContainerName(const OUString &sName) override
virtual void SAL_CALL setUpdateMode(sal_Int32 nMode) override
virtual sal_Int32 SAL_CALL getMapUnit(sal_Int64 nAspect) override
sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
virtual void SAL_CALL setClientSite(const css::uno::Reference< css::embed::XEmbeddedClient > &xClient) override
virtual void SAL_CALL addEventListener(const css::uno::Reference< css::document::XEventListener > &Listener) override
virtual void SAL_CALL changeState(sal_Int32 nNewState) override
virtual void SAL_CALL setObjectRectangles(const css::awt::Rectangle &aPosRect, const css::awt::Rectangle &aClipRect) override
VerbExecutionController & m_rController
VerbExecutionControllerGuard(VerbExecutionController &rController)
~VerbExecutionControllerGuard()
void UnlockNotification()
::osl::Mutex m_aVerbExecutionMutex
sal_Int32 m_nNotificationLock
VerbExecutionController()