22 #include <com/sun/star/awt/Rectangle.hpp>
23 #include <com/sun/star/awt/Size.hpp>
24 #include <com/sun/star/beans/PropertyValue.hpp>
25 #include <com/sun/star/beans/XPropertySet.hpp>
26 #include <com/sun/star/container/XNameAccess.hpp>
27 #include <com/sun/star/document/XEmbeddedObjectResolver.hpp>
28 #include <com/sun/star/embed/Aspects.hpp>
29 #include <com/sun/star/frame/XModel.hpp>
30 #include <com/sun/star/io/XOutputStream.hpp>
31 #include <com/sun/star/lang/XComponent.hpp>
32 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
33 #include <osl/diagnose.h>
37 #include <oox/token/properties.hxx>
50 mbShowAsIcon(
false ),
51 mbAutoUpdate(
false ),
59 const Reference< XMultiServiceFactory >& rxModelFactory,
60 uno::Reference<frame::XModel>
const& xModel)
65 if( rxModelFactory.is() )
try
67 mxResolver.set( rxModelFactory->createInstance(
"com.sun.star.document.ImportEmbeddedObjectResolver" ), UNO_QUERY );
78 Reference< XComponent > xResolverComp(
mxResolver, UNO_QUERY_THROW );
79 xResolverComp->dispose();
91 OUString
const& rObjectName, OUString
const*
const pOldObjectName,
92 OUString
const& rProgId)
94 static constexpr OUStringLiteral sEmbeddingsPropName =
u"EmbeddedObjects";
97 uno::Reference<beans::XPropertySet>
const xDocProps(xModel, uno::UNO_QUERY);
102 if (aGrabBag.find(sEmbeddingsPropName) != aGrabBag.end())
103 objectsList << aGrabBag[sEmbeddingsPropName];
112 if (it != objectsList.end())
113 objectsList.erase(it);
116 objectsList[rObjectName] <<= aGrabBagAttribute;
119 aGrabBag[sEmbeddingsPropName] <<= objectsList.getAsConstPropertyValueList();
122 xDocProps->setPropertyValue(
"InteropGrabBag",
uno::Any(aGrabBag.getAsConstPropertyValueList()));
143 OUString aObjectId =
"Obj" + OUString::number(
mnObjectId++ );
146 Reference< XOutputStream > xOutStrm( xResolverNA->getByName( aObjectId ), UNO_QUERY_THROW );
148 xOutStrm->closeOutput();
152 OUString aUrl =
mxResolver->resolveEmbeddedObjectURL( aObjectId );
153 OSL_ENSURE( aUrl.match( g_aEmbeddedObjScheme ),
"OleObjectHelper::importOleObject - unexpected URL scheme" );
154 OUString aPersistName = aUrl.copy( strlen(g_aEmbeddedObjScheme) );
155 if( !aPersistName.isEmpty() )
157 rPropMap.
setProperty( PROP_PersistName, aPersistName);
169 rPropMap.
setProperty( PROP_VisualArea, awt::Rectangle( 0, 0, rObjSize.Width, rObjSize.Height ));
Reference< frame::XModel > m_xModel
const char g_aEmbeddedObjScheme[]
A helper that maps property identifiers to property values.
OUString maTargetLink
Path to external data for linked OLE object.
css::beans::PropertyValue makePropertyValue(const OUString &rName, T &&rValue)
bool setProperty(sal_Int32 nPropId, Type &&rValue)
Sets the specified property to the passed value.
bool mbShowAsIcon
True = show as icon, false = show contents.
bool importOleObject(PropertyMap &rPropMap, const OleObjectInfo &rOleObject, const css::awt::Size &rObjSize)
css::uno::Reference< css::frame::XModel > m_xModel
Contains generic information about an OLE object.
StreamDataSequence maEmbeddedData
Data of an embedded OLE object.
css::uno::Reference< css::document::XEmbeddedObjectResolver > mxResolver
void SaveInteropProperties(uno::Reference< frame::XModel > const &xModel, OUString const &rObjectName, OUString const *const pOldObjectName, OUString const &rProgId)
SequenceAsHashMapBase::iterator iterator
bool mbLinked
True = linked OLE object, false = embedded OLE object.
OleObjectHelper(const css::uno::Reference< css::lang::XMultiServiceFactory > &rxModelFactory, const css::uno::Reference< css::frame::XModel > &xModel)
bool m_bDetectedRangeSegmentation false