Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <osl/thread.h>
21 : #include <comphelper/processfactory.hxx>
22 :
23 : #include <xmloff/xmlscripti.hxx>
24 : #include "facreg.hxx"
25 : #include "sdxmlimp_impl.hxx"
26 : #include "ximpbody.hxx"
27 :
28 : #include <xmloff/xmlmetai.hxx>
29 : #include "ximpstyl.hxx"
30 : #include <xmloff/xmlnmspe.hxx>
31 : #include <xmloff/xmltoken.hxx>
32 : #include <xmloff/xmluconv.hxx>
33 : #include <xmloff/DocumentSettingsContext.hxx>
34 : #include <com/sun/star/form/XFormsSupplier.hpp>
35 : #include <com/sun/star/task/XStatusIndicatorSupplier.hpp>
36 : #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
37 : #include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
38 : #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
39 : #include "sdpropls.hxx"
40 : #include <xmloff/xmlexppr.hxx>
41 : #include <xmloff/xmlerror.hxx>
42 : #include <xmloff/settingsstore.hxx>
43 : #include <com/sun/star/style/XStyle.hpp>
44 :
45 : #include <xmloff/XMLFontStylesContext.hxx>
46 :
47 : #include <com/sun/star/document/XDocumentProperties.hpp>
48 : #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
49 :
50 : using namespace ::com::sun::star;
51 : using namespace ::xmloff::token;
52 :
53 : class SdXMLBodyContext_Impl : public SvXMLImportContext
54 : {
55 114 : SdXMLImport& GetSdImport() { return static_cast<SdXMLImport&>(GetImport()); }
56 :
57 : public:
58 :
59 : SdXMLBodyContext_Impl( SdXMLImport& rImport, sal_uInt16 nPrfx,
60 : const OUString& rLName,
61 : const uno::Reference< xml::sax::XAttributeList > & xAttrList );
62 : virtual ~SdXMLBodyContext_Impl();
63 :
64 : virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
65 : const OUString& rLocalName,
66 : const uno::Reference< xml::sax::XAttributeList > & xAttrList ) SAL_OVERRIDE;
67 : };
68 :
69 114 : SdXMLBodyContext_Impl::SdXMLBodyContext_Impl( SdXMLImport& rImport,
70 : sal_uInt16 nPrfx, const OUString& rLName,
71 : const uno::Reference< xml::sax::XAttributeList > & ) :
72 114 : SvXMLImportContext( rImport, nPrfx, rLName )
73 : {
74 114 : }
75 :
76 228 : SdXMLBodyContext_Impl::~SdXMLBodyContext_Impl()
77 : {
78 228 : }
79 :
80 114 : SvXMLImportContext *SdXMLBodyContext_Impl::CreateChildContext(
81 : sal_uInt16 /*nPrefix*/,
82 : const OUString& rLocalName,
83 : const uno::Reference< xml::sax::XAttributeList > & xAttrList )
84 : {
85 114 : return GetSdImport().CreateBodyContext(rLocalName, xAttrList);
86 : }
87 :
88 : // NB: virtually inherit so we can multiply inherit properly
89 : // in SdXMLFlatDocContext_Impl
90 : class SdXMLDocContext_Impl : public virtual SvXMLImportContext
91 : {
92 : protected:
93 1914 : SdXMLImport& GetSdImport() { return static_cast<SdXMLImport&>(GetImport()); }
94 :
95 : public:
96 : SdXMLDocContext_Impl(
97 : SdXMLImport& rImport,
98 : sal_uInt16 nPrfx,
99 : const OUString& rLName,
100 : const uno::Reference<xml::sax::XAttributeList>& xAttrList);
101 : virtual ~SdXMLDocContext_Impl();
102 :
103 : TYPEINFO_OVERRIDE();
104 :
105 : virtual SvXMLImportContext *CreateChildContext(sal_uInt16 nPrefix,
106 : const OUString& rLocalName,
107 : const uno::Reference<xml::sax::XAttributeList>& xAttrList) SAL_OVERRIDE;
108 : };
109 :
110 186 : SdXMLDocContext_Impl::SdXMLDocContext_Impl(
111 : SdXMLImport& rImport,
112 : sal_uInt16 nPrfx,
113 : const OUString& rLName,
114 : const uno::Reference<xml::sax::XAttributeList>&)
115 186 : : SvXMLImportContext(rImport, nPrfx, rLName)
116 : {
117 186 : }
118 :
119 294 : SdXMLDocContext_Impl::~SdXMLDocContext_Impl()
120 : {
121 294 : }
122 :
123 0 : TYPEINIT1( SdXMLDocContext_Impl, SvXMLImportContext );
124 :
125 780 : SvXMLImportContext *SdXMLDocContext_Impl::CreateChildContext(
126 : sal_uInt16 nPrefix,
127 : const OUString& rLocalName,
128 : const uno::Reference<xml::sax::XAttributeList>& xAttrList)
129 : {
130 780 : SvXMLImportContext* pContext = 0L;
131 :
132 780 : const SvXMLTokenMap& rTokenMap = GetSdImport().GetDocElemTokenMap();
133 780 : switch(rTokenMap.Get(nPrefix, rLocalName))
134 : {
135 : case XML_TOK_DOC_FONTDECLS:
136 : {
137 138 : pContext = GetSdImport().CreateFontDeclsContext( rLocalName, xAttrList );
138 138 : break;
139 : }
140 : case XML_TOK_DOC_SETTINGS:
141 : {
142 114 : if( GetImport().getImportFlags() & IMPORT_SETTINGS )
143 : {
144 114 : pContext = new XMLDocumentSettingsContext(GetImport(), nPrefix, rLocalName, xAttrList );
145 : }
146 114 : break;
147 : }
148 : case XML_TOK_DOC_STYLES:
149 : {
150 114 : if( GetImport().getImportFlags() & IMPORT_STYLES )
151 : {
152 : // office:styles inside office:document
153 114 : pContext = GetSdImport().CreateStylesContext(rLocalName, xAttrList);
154 : }
155 114 : break;
156 : }
157 : case XML_TOK_DOC_AUTOSTYLES:
158 : {
159 150 : if( GetImport().getImportFlags() & IMPORT_AUTOSTYLES )
160 : {
161 : // office:automatic-styles inside office:document
162 150 : pContext = GetSdImport().CreateAutoStylesContext(rLocalName, xAttrList);
163 : }
164 150 : break;
165 : }
166 : case XML_TOK_DOC_MASTERSTYLES:
167 : {
168 114 : if( GetImport().getImportFlags() & IMPORT_MASTERSTYLES )
169 : {
170 : // office:master-styles inside office:document
171 114 : pContext = GetSdImport().CreateMasterStylesContext(rLocalName, xAttrList);
172 : }
173 114 : break;
174 : }
175 : case XML_TOK_DOC_META:
176 : {
177 : SAL_INFO("xmloff.draw", "XML_TOK_DOC_META: should not have come here, maybe document is invalid?");
178 0 : break;
179 : }
180 : case XML_TOK_DOC_SCRIPT:
181 : {
182 36 : if( GetImport().getImportFlags() & IMPORT_SCRIPTS )
183 : {
184 : // office:script inside office:document
185 36 : pContext = GetSdImport().CreateScriptContext( rLocalName );
186 : }
187 36 : break;
188 : }
189 : case XML_TOK_DOC_BODY:
190 : {
191 114 : if( GetImport().getImportFlags() & IMPORT_CONTENT )
192 : {
193 : // office:body inside office:document
194 : pContext = new SdXMLBodyContext_Impl(GetSdImport(),nPrefix,
195 114 : rLocalName, xAttrList);
196 : }
197 114 : break;
198 : }
199 : }
200 :
201 : // call parent when no own context was created
202 780 : if(!pContext)
203 0 : pContext = SvXMLImportContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
204 :
205 780 : return pContext;
206 : }
207 :
208 : // context for flat file xml format
209 : class SdXMLFlatDocContext_Impl
210 : : public SdXMLDocContext_Impl, public SvXMLMetaDocumentContext
211 : {
212 : public:
213 : SdXMLFlatDocContext_Impl( SdXMLImport& i_rImport,
214 : sal_uInt16 i_nPrefix, const OUString & i_rLName,
215 : const uno::Reference<xml::sax::XAttributeList>& i_xAttrList,
216 : const uno::Reference<document::XDocumentProperties>& i_xDocProps);
217 :
218 : virtual ~SdXMLFlatDocContext_Impl();
219 :
220 : virtual SvXMLImportContext *CreateChildContext(
221 : sal_uInt16 i_nPrefix, const OUString& i_rLocalName,
222 : const uno::Reference<xml::sax::XAttributeList>& i_xAttrList) SAL_OVERRIDE;
223 : };
224 :
225 78 : SdXMLFlatDocContext_Impl::SdXMLFlatDocContext_Impl( SdXMLImport& i_rImport,
226 : sal_uInt16 i_nPrefix, const OUString & i_rLName,
227 : const uno::Reference<xml::sax::XAttributeList>& i_xAttrList,
228 : const uno::Reference<document::XDocumentProperties>& i_xDocProps) :
229 : SvXMLImportContext(i_rImport, i_nPrefix, i_rLName),
230 : SdXMLDocContext_Impl(i_rImport, i_nPrefix, i_rLName, i_xAttrList),
231 : SvXMLMetaDocumentContext(i_rImport, i_nPrefix, i_rLName,
232 78 : i_xDocProps)
233 : {
234 78 : }
235 :
236 156 : SdXMLFlatDocContext_Impl::~SdXMLFlatDocContext_Impl() { }
237 :
238 468 : SvXMLImportContext *SdXMLFlatDocContext_Impl::CreateChildContext(
239 : sal_uInt16 i_nPrefix, const OUString& i_rLocalName,
240 : const uno::Reference<xml::sax::XAttributeList>& i_xAttrList)
241 : {
242 : // behave like meta base class iff we encounter office:meta
243 468 : const SvXMLTokenMap& rTokenMap = GetSdImport().GetDocElemTokenMap();
244 468 : if ( XML_TOK_DOC_META == rTokenMap.Get( i_nPrefix, i_rLocalName ) ) {
245 : return SvXMLMetaDocumentContext::CreateChildContext(
246 0 : i_nPrefix, i_rLocalName, i_xAttrList );
247 : } else {
248 : return SdXMLDocContext_Impl::CreateChildContext(
249 468 : i_nPrefix, i_rLocalName, i_xAttrList );
250 : }
251 : }
252 :
253 : #define SERVICE(classname,servicename,implementationname,draw,flags)\
254 : uno::Sequence< OUString > SAL_CALL classname##_getSupportedServiceNames() throw()\
255 : {\
256 : const OUString aServiceName( servicename );\
257 : const uno::Sequence< OUString > aSeq( &aServiceName, 1 );\
258 : return aSeq;\
259 : }\
260 : OUString SAL_CALL classname##_getImplementationName() throw()\
261 : {\
262 : return OUString( implementationname );\
263 : }\
264 : uno::Reference< uno::XInterface > SAL_CALL classname##_createInstance(const uno::Reference< lang::XMultiServiceFactory > & rSMgr) throw( uno::Exception )\
265 : {\
266 : return (cppu::OWeakObject*)new SdXMLImport( comphelper::getComponentContext(rSMgr), implementationname, draw, flags ); \
267 : }
268 :
269 230 : SERVICE( XMLImpressImportOasis, "com.sun.star.comp.Impress.XMLOasisImporter", "XMLImpressImportOasis", false, IMPORT_ALL )
270 224 : SERVICE( XMLDrawImportOasis, "com.sun.star.comp.Draw.XMLOasisImporter", "XMLDrawImportOasis", true, IMPORT_ALL )
271 :
272 282 : SERVICE( XMLImpressStylesImportOasis, "com.sun.star.comp.Impress.XMLOasisStylesImporter", "XMLImpressStylesImportOasis", false, IMPORT_STYLES|IMPORT_AUTOSTYLES|IMPORT_MASTERSTYLES )
273 134 : SERVICE( XMLDrawStylesImportOasis, "com.sun.star.comp.Draw.XMLOasisStylesImporter", "XMLImpressStylesImportOasis", true, IMPORT_STYLES|IMPORT_AUTOSTYLES|IMPORT_MASTERSTYLES )
274 :
275 272 : SERVICE( XMLImpressContentImportOasis, "com.sun.star.comp.Impress.XMLOasisContentImporter", "XMLImpressContentImportOasis", false, IMPORT_AUTOSTYLES|IMPORT_CONTENT|IMPORT_SCRIPTS|IMPORT_FONTDECLS )
276 134 : SERVICE( XMLDrawContentImportOasis, "com.sun.star.comp.Draw.XMLOasisContentImporter", "XMLImpressContentImportOasis", true, IMPORT_AUTOSTYLES|IMPORT_CONTENT|IMPORT_SCRIPTS|IMPORT_FONTDECLS )
277 :
278 250 : SERVICE( XMLImpressMetaImportOasis, "com.sun.star.comp.Impress.XMLOasisMetaImporter", "XMLImpressMetaImportOasis", false, IMPORT_META )
279 134 : SERVICE( XMLDrawMetaImportOasis, "com.sun.star.comp.Draw.XMLOasisMetaImporter", "XMLImpressMetaImportOasis", true, IMPORT_META )
280 :
281 232 : SERVICE( XMLImpressSettingsImportOasis, "com.sun.star.comp.Impress.XMLOasisSettingsImporter", "XMLImpressSettingsImportOasis", false, IMPORT_SETTINGS )
282 134 : SERVICE( XMLDrawSettingsImportOasis, "com.sun.star.comp.Draw.XMLOasisSettingsImporter", "XMLImpressSettingsImportOasis", true, IMPORT_SETTINGS )
283 :
284 : // #110680#
285 238 : SdXMLImport::SdXMLImport(
286 : const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
287 : OUString const & implementationName,
288 : bool bIsDraw, sal_uInt16 nImportFlags )
289 : : SvXMLImport( xContext, implementationName, nImportFlags ),
290 : mpMasterStylesContext(0L),
291 : mpDocElemTokenMap(0L),
292 : mpBodyElemTokenMap(0L),
293 : mpStylesElemTokenMap(0L),
294 : mpMasterPageElemTokenMap(0L),
295 : mpMasterPageAttrTokenMap(0L),
296 : mpPageMasterAttrTokenMap(0L),
297 : mpPageMasterStyleAttrTokenMap(0L),
298 : mpDrawPageAttrTokenMap(0L),
299 : mpDrawPageElemTokenMap(0L),
300 : mpPresentationPlaceholderAttrTokenMap(0L),
301 : mnStyleFamilyMask(0),
302 : mnNewPageCount(0L),
303 : mnNewMasterPageCount(0L),
304 : mbIsDraw(bIsDraw),
305 : mbLoadDoc(true),
306 : mbPreview(false),
307 : msPageLayouts( "PageLayouts" ),
308 238 : msPreview( "Preview" )
309 : {
310 : // add namespaces
311 238 : GetNamespaceMap().Add(
312 238 : GetXMLToken(XML_NP_PRESENTATION),
313 238 : GetXMLToken(XML_N_PRESENTATION),
314 238 : XML_NAMESPACE_PRESENTATION);
315 :
316 238 : GetNamespaceMap().Add(
317 238 : GetXMLToken(XML_NP_SMIL),
318 238 : GetXMLToken(XML_N_SMIL_COMPAT),
319 238 : XML_NAMESPACE_SMIL);
320 :
321 238 : GetNamespaceMap().Add(
322 238 : GetXMLToken(XML_NP_ANIMATION),
323 238 : GetXMLToken(XML_N_ANIMATION),
324 238 : XML_NAMESPACE_ANIMATION);
325 238 : }
326 :
327 : // XImporter
328 230 : void SAL_CALL SdXMLImport::setTargetDocument( const uno::Reference< lang::XComponent >& xDoc )
329 : throw(lang::IllegalArgumentException, uno::RuntimeException, std::exception)
330 : {
331 230 : SvXMLImport::setTargetDocument( xDoc );
332 :
333 230 : uno::Reference< lang::XServiceInfo > xDocServices( GetModel(), uno::UNO_QUERY );
334 230 : if( !xDocServices.is() )
335 0 : throw lang::IllegalArgumentException();
336 :
337 230 : mbIsDraw = !xDocServices->supportsService("com.sun.star.presentation.PresentationDocument");
338 :
339 : // prepare access to styles
340 460 : uno::Reference< style::XStyleFamiliesSupplier > xFamSup( GetModel(), uno::UNO_QUERY );
341 230 : if(xFamSup.is())
342 230 : mxDocStyleFamilies = xFamSup->getStyleFamilies();
343 :
344 : // prepare access to master pages
345 460 : uno::Reference < drawing::XMasterPagesSupplier > xMasterPagesSupplier(GetModel(), uno::UNO_QUERY);
346 230 : if(xMasterPagesSupplier.is())
347 230 : mxDocMasterPages.set(xMasterPagesSupplier->getMasterPages(), css::uno::UNO_QUERY);
348 :
349 : // prepare access to draw pages
350 460 : uno::Reference <drawing::XDrawPagesSupplier> xDrawPagesSupplier(GetModel(), uno::UNO_QUERY);
351 230 : if(!xDrawPagesSupplier.is())
352 0 : throw lang::IllegalArgumentException();
353 :
354 230 : mxDocDrawPages.set(xDrawPagesSupplier->getDrawPages(), css::uno::UNO_QUERY);
355 230 : if(!mxDocDrawPages.is())
356 0 : throw lang::IllegalArgumentException();
357 :
358 230 : if( mxDocDrawPages.is() && mxDocDrawPages->getCount() > 0 )
359 : {
360 230 : uno::Reference< form::XFormsSupplier > xFormsSupp;
361 230 : mxDocDrawPages->getByIndex(0) >>= xFormsSupp;
362 230 : mbIsFormsSupported = xFormsSupp.is();
363 : }
364 :
365 : // #88546# enable progress bar increments, SdXMLImport is only used for
366 : // draw/impress import
367 230 : GetShapeImport()->enableHandleProgressBar();
368 :
369 460 : uno::Reference< lang::XMultiServiceFactory > xFac( GetModel(), uno::UNO_QUERY );
370 230 : if( xFac.is() )
371 : {
372 230 : uno::Sequence< OUString > sSNS( xFac->getAvailableServiceNames() );
373 230 : sal_Int32 n = sSNS.getLength();
374 230 : const OUString* pSNS( sSNS.getConstArray() );
375 230 : while( --n > 0 )
376 : {
377 15870 : if( (*pSNS++) == "com.sun.star.drawing.TableShape" )
378 : {
379 230 : mbIsTableShapeSupported = true;
380 230 : break;
381 : }
382 230 : }
383 230 : }
384 230 : }
385 :
386 : // XInitialization
387 170 : void SAL_CALL SdXMLImport::initialize( const uno::Sequence< uno::Any >& aArguments )
388 : throw( uno::Exception, uno::RuntimeException, std::exception)
389 : {
390 170 : SvXMLImport::initialize( aArguments );
391 :
392 170 : uno::Reference< beans::XPropertySet > xInfoSet( getImportInfo() );
393 170 : if( xInfoSet.is() )
394 : {
395 140 : uno::Reference< beans::XPropertySetInfo > xInfoSetInfo( xInfoSet->getPropertySetInfo() );
396 :
397 140 : if( xInfoSetInfo->hasPropertyByName( msPageLayouts ) )
398 140 : xInfoSet->getPropertyValue( msPageLayouts ) >>= mxPageLayouts;
399 :
400 140 : if( xInfoSetInfo->hasPropertyByName( msPreview ) )
401 140 : xInfoSet->getPropertyValue( msPreview ) >>= mbPreview;
402 :
403 : OUString const sOrganizerMode(
404 280 : "OrganizerMode");
405 140 : if (xInfoSetInfo->hasPropertyByName(sOrganizerMode))
406 : {
407 140 : bool bStyleOnly(false);
408 140 : if (xInfoSet->getPropertyValue(sOrganizerMode) >>= bStyleOnly)
409 : {
410 0 : mbLoadDoc = !bStyleOnly;
411 : }
412 140 : }
413 170 : }
414 170 : }
415 :
416 714 : SdXMLImport::~SdXMLImport() throw ()
417 : {
418 : // Styles or AutoStyles context?
419 238 : if(mpMasterStylesContext)
420 114 : mpMasterStylesContext->ReleaseRef();
421 :
422 : // delete all token maps
423 238 : if(mpDocElemTokenMap)
424 186 : delete mpDocElemTokenMap;
425 238 : if(mpBodyElemTokenMap)
426 112 : delete mpBodyElemTokenMap;
427 238 : if(mpStylesElemTokenMap)
428 150 : delete mpStylesElemTokenMap;
429 238 : if(mpMasterPageElemTokenMap)
430 32 : delete mpMasterPageElemTokenMap;
431 238 : if(mpMasterPageAttrTokenMap)
432 144 : delete mpMasterPageAttrTokenMap;
433 238 : if(mpPageMasterAttrTokenMap)
434 114 : delete mpPageMasterAttrTokenMap;
435 238 : if(mpPageMasterStyleAttrTokenMap)
436 114 : delete mpPageMasterStyleAttrTokenMap;
437 238 : if(mpDrawPageAttrTokenMap)
438 112 : delete mpDrawPageAttrTokenMap;
439 238 : if(mpDrawPageElemTokenMap)
440 110 : delete mpDrawPageElemTokenMap;
441 238 : if(mpPresentationPlaceholderAttrTokenMap)
442 32 : delete mpPresentationPlaceholderAttrTokenMap;
443 476 : }
444 :
445 1248 : const SvXMLTokenMap& SdXMLImport::GetDocElemTokenMap()
446 : {
447 1248 : if(!mpDocElemTokenMap)
448 : {
449 : static const SvXMLTokenMapEntry aDocElemTokenMap[] =
450 : {
451 : { XML_NAMESPACE_OFFICE, XML_FONT_FACE_DECLS, XML_TOK_DOC_FONTDECLS },
452 : { XML_NAMESPACE_OFFICE, XML_STYLES, XML_TOK_DOC_STYLES },
453 : { XML_NAMESPACE_OFFICE, XML_AUTOMATIC_STYLES, XML_TOK_DOC_AUTOSTYLES },
454 : { XML_NAMESPACE_OFFICE, XML_MASTER_STYLES, XML_TOK_DOC_MASTERSTYLES },
455 : { XML_NAMESPACE_OFFICE, XML_META, XML_TOK_DOC_META },
456 : { XML_NAMESPACE_OFFICE, XML_SCRIPTS, XML_TOK_DOC_SCRIPT },
457 : { XML_NAMESPACE_OFFICE, XML_BODY, XML_TOK_DOC_BODY },
458 : { XML_NAMESPACE_OFFICE, XML_SETTINGS, XML_TOK_DOC_SETTINGS },
459 : XML_TOKEN_MAP_END
460 : };
461 :
462 186 : mpDocElemTokenMap = new SvXMLTokenMap(aDocElemTokenMap);
463 : } // if(!mpDocElemTokenMap)
464 :
465 1248 : return *mpDocElemTokenMap;
466 : }
467 :
468 182 : const SvXMLTokenMap& SdXMLImport::GetBodyElemTokenMap()
469 : {
470 182 : if(!mpBodyElemTokenMap)
471 : {
472 : static const SvXMLTokenMapEntry aBodyElemTokenMap[] =
473 : {
474 : { XML_NAMESPACE_DRAW, XML_PAGE, XML_TOK_BODY_PAGE },
475 : { XML_NAMESPACE_PRESENTATION, XML_SETTINGS, XML_TOK_BODY_SETTINGS },
476 : { XML_NAMESPACE_PRESENTATION, XML_HEADER_DECL, XML_TOK_BODY_HEADER_DECL },
477 : { XML_NAMESPACE_PRESENTATION, XML_FOOTER_DECL, XML_TOK_BODY_FOOTER_DECL },
478 : { XML_NAMESPACE_PRESENTATION, XML_DATE_TIME_DECL,XML_TOK_BODY_DATE_TIME_DECL },
479 :
480 : XML_TOKEN_MAP_END
481 : };
482 :
483 112 : mpBodyElemTokenMap = new SvXMLTokenMap(aBodyElemTokenMap);
484 : } // if(!mpBodyElemTokenMap)
485 :
486 182 : return *mpBodyElemTokenMap;
487 : }
488 :
489 3158 : const SvXMLTokenMap& SdXMLImport::GetStylesElemTokenMap()
490 : {
491 3158 : if(!mpStylesElemTokenMap)
492 : {
493 : static const SvXMLTokenMapEntry aStylesElemTokenMap[] =
494 : {
495 : { XML_NAMESPACE_STYLE, XML_PAGE_LAYOUT, XML_TOK_STYLES_PAGE_MASTER },
496 : { XML_NAMESPACE_STYLE, XML_PRESENTATION_PAGE_LAYOUT, XML_TOK_STYLES_PRESENTATION_PAGE_LAYOUT },
497 : { XML_NAMESPACE_STYLE, XML_STYLE, XML_TOK_STYLES_STYLE },
498 : XML_TOKEN_MAP_END
499 : };
500 :
501 150 : mpStylesElemTokenMap = new SvXMLTokenMap(aStylesElemTokenMap);
502 : } // if(!mpStylesElemTokenMap)
503 :
504 3158 : return *mpStylesElemTokenMap;
505 : }
506 :
507 524 : const SvXMLTokenMap& SdXMLImport::GetMasterPageElemTokenMap()
508 : {
509 524 : if(!mpMasterPageElemTokenMap)
510 : {
511 : static const SvXMLTokenMapEntry aMasterPageElemTokenMap[] =
512 : {
513 : { XML_NAMESPACE_STYLE, XML_STYLE, XML_TOK_MASTERPAGE_STYLE },
514 : { XML_NAMESPACE_PRESENTATION, XML_NOTES, XML_TOK_MASTERPAGE_NOTES },
515 : XML_TOKEN_MAP_END
516 : };
517 :
518 32 : mpMasterPageElemTokenMap = new SvXMLTokenMap(aMasterPageElemTokenMap);
519 : } // if(!mpMasterPageElemTokenMap)
520 :
521 524 : return *mpMasterPageElemTokenMap;
522 : }
523 :
524 590 : const SvXMLTokenMap& SdXMLImport::GetMasterPageAttrTokenMap()
525 : {
526 590 : if(!mpMasterPageAttrTokenMap)
527 : {
528 : static const SvXMLTokenMapEntry aMasterPageAttrTokenMap[] =
529 : {
530 : { XML_NAMESPACE_STYLE, XML_NAME, XML_TOK_MASTERPAGE_NAME },
531 : { XML_NAMESPACE_STYLE, XML_DISPLAY_NAME, XML_TOK_MASTERPAGE_DISPLAY_NAME },
532 : { XML_NAMESPACE_STYLE, XML_PAGE_LAYOUT_NAME, XML_TOK_MASTERPAGE_PAGE_MASTER_NAME },
533 : { XML_NAMESPACE_DRAW, XML_STYLE_NAME, XML_TOK_MASTERPAGE_STYLE_NAME },
534 : { XML_NAMESPACE_PRESENTATION, XML_PRESENTATION_PAGE_LAYOUT_NAME, XML_TOK_MASTERPAGE_PAGE_LAYOUT_NAME },
535 : { XML_NAMESPACE_PRESENTATION, XML_USE_HEADER_NAME, XML_TOK_MASTERPAGE_USE_HEADER_NAME },
536 : { XML_NAMESPACE_PRESENTATION, XML_USE_FOOTER_NAME, XML_TOK_MASTERPAGE_USE_FOOTER_NAME },
537 : { XML_NAMESPACE_PRESENTATION, XML_USE_DATE_TIME_NAME, XML_TOK_MASTERPAGE_USE_DATE_TIME_NAME },
538 : XML_TOKEN_MAP_END
539 : };
540 :
541 144 : mpMasterPageAttrTokenMap = new SvXMLTokenMap(aMasterPageAttrTokenMap);
542 : } // if(!mpMasterPageAttrTokenMap)
543 :
544 590 : return *mpMasterPageAttrTokenMap;
545 : }
546 :
547 146 : const SvXMLTokenMap& SdXMLImport::GetPageMasterAttrTokenMap()
548 : {
549 146 : if(!mpPageMasterAttrTokenMap)
550 : {
551 : static const SvXMLTokenMapEntry aPageMasterAttrTokenMap[] =
552 : {
553 : { XML_NAMESPACE_STYLE, XML_NAME, XML_TOK_PAGEMASTER_NAME },
554 : XML_TOKEN_MAP_END
555 : };
556 :
557 114 : mpPageMasterAttrTokenMap = new SvXMLTokenMap(aPageMasterAttrTokenMap);
558 : } // if(!mpPageMasterAttrTokenMap)
559 :
560 146 : return *mpPageMasterAttrTokenMap;
561 : }
562 :
563 1022 : const SvXMLTokenMap& SdXMLImport::GetPageMasterStyleAttrTokenMap()
564 : {
565 1022 : if(!mpPageMasterStyleAttrTokenMap)
566 : {
567 : static const SvXMLTokenMapEntry aPageMasterStyleAttrTokenMap[] =
568 : {
569 : { XML_NAMESPACE_FO, XML_MARGIN_TOP, XML_TOK_PAGEMASTERSTYLE_MARGIN_TOP },
570 : { XML_NAMESPACE_FO, XML_MARGIN_BOTTOM, XML_TOK_PAGEMASTERSTYLE_MARGIN_BOTTOM },
571 : { XML_NAMESPACE_FO, XML_MARGIN_LEFT, XML_TOK_PAGEMASTERSTYLE_MARGIN_LEFT },
572 : { XML_NAMESPACE_FO, XML_MARGIN_RIGHT, XML_TOK_PAGEMASTERSTYLE_MARGIN_RIGHT },
573 : { XML_NAMESPACE_FO, XML_PAGE_WIDTH, XML_TOK_PAGEMASTERSTYLE_PAGE_WIDTH },
574 : { XML_NAMESPACE_FO, XML_PAGE_HEIGHT, XML_TOK_PAGEMASTERSTYLE_PAGE_HEIGHT },
575 : { XML_NAMESPACE_STYLE, XML_PRINT_ORIENTATION, XML_TOK_PAGEMASTERSTYLE_PAGE_ORIENTATION },
576 : XML_TOKEN_MAP_END
577 : };
578 :
579 114 : mpPageMasterStyleAttrTokenMap = new SvXMLTokenMap(aPageMasterStyleAttrTokenMap);
580 : } // if(!mpPageMasterStyleAttrTokenMap)
581 :
582 1022 : return *mpPageMasterStyleAttrTokenMap;
583 : }
584 :
585 498 : const SvXMLTokenMap& SdXMLImport::GetDrawPageAttrTokenMap()
586 : {
587 498 : if(!mpDrawPageAttrTokenMap)
588 : {
589 : static const SvXMLTokenMapEntry aDrawPageAttrTokenMap[] =
590 : {
591 : { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_DRAWPAGE_NAME },
592 : { XML_NAMESPACE_DRAW, XML_STYLE_NAME, XML_TOK_DRAWPAGE_STYLE_NAME },
593 : { XML_NAMESPACE_DRAW, XML_MASTER_PAGE_NAME, XML_TOK_DRAWPAGE_MASTER_PAGE_NAME },
594 : { XML_NAMESPACE_PRESENTATION, XML_PRESENTATION_PAGE_LAYOUT_NAME, XML_TOK_DRAWPAGE_PAGE_LAYOUT_NAME },
595 : { XML_NAMESPACE_DRAW, XML_ID, XML_TOK_DRAWPAGE_DRAWID },
596 : { XML_NAMESPACE_XML, XML_ID, XML_TOK_DRAWPAGE_XMLID },
597 : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_DRAWPAGE_HREF },
598 : { XML_NAMESPACE_PRESENTATION, XML_USE_HEADER_NAME, XML_TOK_DRAWPAGE_USE_HEADER_NAME },
599 : { XML_NAMESPACE_PRESENTATION, XML_USE_FOOTER_NAME, XML_TOK_DRAWPAGE_USE_FOOTER_NAME },
600 : { XML_NAMESPACE_PRESENTATION, XML_USE_DATE_TIME_NAME, XML_TOK_DRAWPAGE_USE_DATE_TIME_NAME },
601 :
602 : XML_TOKEN_MAP_END
603 : };
604 :
605 112 : mpDrawPageAttrTokenMap = new SvXMLTokenMap(aDrawPageAttrTokenMap);
606 : } // if(!mpDrawPageAttrTokenMap)
607 :
608 498 : return *mpDrawPageAttrTokenMap;
609 : }
610 :
611 1594 : const SvXMLTokenMap& SdXMLImport::GetDrawPageElemTokenMap()
612 : {
613 1594 : if(!mpDrawPageElemTokenMap)
614 : {
615 : static const SvXMLTokenMapEntry aDrawPageElemTokenMap[] =
616 : {
617 : { XML_NAMESPACE_PRESENTATION, XML_NOTES, XML_TOK_DRAWPAGE_NOTES },
618 : { XML_NAMESPACE_ANIMATION, XML_PAR, XML_TOK_DRAWPAGE_PAR },
619 : { XML_NAMESPACE_ANIMATION, XML_SEQ, XML_TOK_DRAWPAGE_SEQ },
620 : XML_TOKEN_MAP_END
621 : };
622 :
623 110 : mpDrawPageElemTokenMap = new SvXMLTokenMap(aDrawPageElemTokenMap);
624 : } // if(!mpDrawPageElemTokenMap)
625 :
626 1594 : return *mpDrawPageElemTokenMap;
627 : }
628 :
629 1270 : const SvXMLTokenMap& SdXMLImport::GetPresentationPlaceholderAttrTokenMap()
630 : {
631 1270 : if(!mpPresentationPlaceholderAttrTokenMap)
632 : {
633 : static const SvXMLTokenMapEntry aPresentationPlaceholderAttrTokenMap[] =
634 : {
635 : { XML_NAMESPACE_PRESENTATION, XML_OBJECT, XML_TOK_PRESENTATIONPLACEHOLDER_OBJECTNAME },
636 : { XML_NAMESPACE_SVG, XML_X, XML_TOK_PRESENTATIONPLACEHOLDER_X },
637 : { XML_NAMESPACE_SVG, XML_Y, XML_TOK_PRESENTATIONPLACEHOLDER_Y },
638 : { XML_NAMESPACE_SVG, XML_WIDTH, XML_TOK_PRESENTATIONPLACEHOLDER_WIDTH },
639 : { XML_NAMESPACE_SVG, XML_HEIGHT, XML_TOK_PRESENTATIONPLACEHOLDER_HEIGHT },
640 : XML_TOKEN_MAP_END
641 : };
642 :
643 32 : mpPresentationPlaceholderAttrTokenMap = new SvXMLTokenMap(aPresentationPlaceholderAttrTokenMap);
644 : } // if(!mpPresentationPlaceholderAttrTokenMap)
645 :
646 1270 : return *mpPresentationPlaceholderAttrTokenMap;
647 : }
648 :
649 1738 : SvXMLImportContext *SdXMLImport::CreateContext(sal_uInt16 nPrefix,
650 : const OUString& rLocalName,
651 : const uno::Reference<xml::sax::XAttributeList>& xAttrList)
652 : {
653 1738 : SvXMLImportContext* pContext = 0;
654 :
655 2064 : if(XML_NAMESPACE_OFFICE == nPrefix &&
656 400 : ( IsXMLToken( rLocalName, XML_DOCUMENT_STYLES ) ||
657 328 : IsXMLToken( rLocalName, XML_DOCUMENT_CONTENT ) ||
658 146 : IsXMLToken( rLocalName, XML_DOCUMENT_SETTINGS ) ))
659 : {
660 108 : pContext = new SdXMLDocContext_Impl(*this, nPrefix, rLocalName, xAttrList);
661 1740 : } else if ( (XML_NAMESPACE_OFFICE == nPrefix) &&
662 110 : ( IsXMLToken(rLocalName, XML_DOCUMENT_META)) ) {
663 32 : pContext = CreateMetaContext(rLocalName, xAttrList);
664 1676 : } else if ( (XML_NAMESPACE_OFFICE == nPrefix) &&
665 78 : ( IsXMLToken(rLocalName, XML_DOCUMENT)) ) {
666 : uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
667 78 : GetModel(), uno::UNO_QUERY_THROW);
668 : // flat OpenDocument file format
669 234 : pContext = new SdXMLFlatDocContext_Impl( *this, nPrefix, rLocalName,
670 312 : xAttrList, xDPS->getDocumentProperties());
671 : } else {
672 1520 : pContext = SvXMLImport::CreateContext(nPrefix, rLocalName, xAttrList);
673 : }
674 :
675 1738 : return pContext;
676 : }
677 :
678 32 : SvXMLImportContext *SdXMLImport::CreateMetaContext(const OUString& rLocalName,
679 : const uno::Reference<xml::sax::XAttributeList>&)
680 : {
681 32 : SvXMLImportContext* pContext = 0L;
682 :
683 32 : if (getImportFlags() & IMPORT_META)
684 : {
685 : uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
686 32 : GetModel(), uno::UNO_QUERY_THROW);
687 : uno::Reference<document::XDocumentProperties> const xDocProps(
688 64 : (IsStylesOnlyMode()) ? 0 : xDPS->getDocumentProperties());
689 64 : pContext = new SvXMLMetaDocumentContext(*this,
690 : XML_NAMESPACE_OFFICE, rLocalName,
691 96 : xDocProps);
692 : }
693 :
694 32 : if(!pContext)
695 : {
696 0 : pContext = new SvXMLImportContext(*this, XML_NAMESPACE_OFFICE, rLocalName);
697 : }
698 :
699 32 : return pContext;
700 : }
701 :
702 114 : SvXMLImportContext *SdXMLImport::CreateBodyContext(const OUString& rLocalName,
703 : const uno::Reference<xml::sax::XAttributeList>&)
704 : {
705 114 : SvXMLImportContext *pContext = 0;
706 114 : pContext = new SdXMLBodyContext(*this, XML_NAMESPACE_OFFICE, rLocalName);
707 114 : return pContext;
708 : }
709 :
710 114 : SvXMLStylesContext *SdXMLImport::CreateStylesContext(const OUString& rLocalName,
711 : const uno::Reference<xml::sax::XAttributeList>& xAttrList)
712 : {
713 114 : if(GetShapeImport()->GetStylesContext())
714 0 : return GetShapeImport()->GetStylesContext();
715 :
716 : GetShapeImport()->SetStylesContext(new SdXMLStylesContext(
717 114 : *this, XML_NAMESPACE_OFFICE, rLocalName, xAttrList, false));
718 :
719 114 : return GetShapeImport()->GetStylesContext();
720 : }
721 :
722 150 : SvXMLStylesContext *SdXMLImport::CreateAutoStylesContext(const OUString& rLocalName,
723 : const uno::Reference<xml::sax::XAttributeList>& xAttrList)
724 : {
725 150 : if(GetShapeImport()->GetAutoStylesContext())
726 0 : return GetShapeImport()->GetAutoStylesContext();
727 :
728 : GetShapeImport()->SetAutoStylesContext(new SdXMLStylesContext(
729 150 : *this, XML_NAMESPACE_OFFICE, rLocalName, xAttrList, true));
730 :
731 150 : return GetShapeImport()->GetAutoStylesContext();
732 : }
733 :
734 114 : SvXMLImportContext* SdXMLImport::CreateMasterStylesContext(const OUString& rLocalName,
735 : const uno::Reference<xml::sax::XAttributeList>&)
736 : {
737 114 : if(mpMasterStylesContext)
738 0 : return mpMasterStylesContext;
739 :
740 : mpMasterStylesContext = new SdXMLMasterStylesContext(
741 114 : *this, XML_NAMESPACE_OFFICE, rLocalName);
742 114 : mpMasterStylesContext->AddFirstRef();
743 :
744 114 : return mpMasterStylesContext;
745 : }
746 :
747 138 : SvXMLImportContext *SdXMLImport::CreateFontDeclsContext(const OUString& rLocalName,
748 : const uno::Reference< xml::sax::XAttributeList > & xAttrList )
749 : {
750 : XMLFontStylesContext *pFSContext =
751 : new XMLFontStylesContext( *this, XML_NAMESPACE_OFFICE,
752 : rLocalName, xAttrList,
753 138 : osl_getThreadTextEncoding() );
754 138 : SetFontDecls( pFSContext );
755 138 : return pFSContext;
756 : }
757 :
758 36 : SvXMLImportContext *SdXMLImport::CreateScriptContext(
759 : const OUString& rLocalName )
760 : {
761 36 : SvXMLImportContext *pContext = 0;
762 :
763 : pContext = new XMLScriptContext( *this,
764 : XML_NAMESPACE_OFFICE, rLocalName,
765 36 : GetModel() );
766 36 : return pContext;
767 : }
768 :
769 114 : void SdXMLImport::SetViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps)
770 : {
771 114 : uno::Reference< beans::XPropertySet > xPropSet( GetModel(), uno::UNO_QUERY );
772 114 : if( !xPropSet.is() )
773 114 : return;
774 :
775 114 : awt::Rectangle aVisArea( 0,0, 28000, 21000 );
776 114 : sal_Int32 nCount = aViewProps.getLength();
777 :
778 114 : const beans::PropertyValue* pValues = aViewProps.getConstArray();
779 :
780 718 : while( nCount-- )
781 : {
782 490 : const OUString& rName = pValues->Name;
783 490 : const uno::Any rValue = pValues->Value;
784 :
785 490 : if ( rName == "VisibleAreaTop" )
786 : {
787 114 : rValue >>= aVisArea.Y;
788 : }
789 376 : else if ( rName == "VisibleAreaLeft" )
790 : {
791 114 : rValue >>= aVisArea.X;
792 : }
793 262 : else if ( rName == "VisibleAreaWidth" )
794 : {
795 114 : rValue >>= aVisArea.Width;
796 : }
797 148 : else if ( rName == "VisibleAreaHeight" )
798 : {
799 114 : rValue >>= aVisArea.Height;
800 : }
801 :
802 490 : pValues++;
803 490 : }
804 :
805 : try
806 : {
807 114 : xPropSet->setPropertyValue("VisibleArea", uno::makeAny( aVisArea ) );
808 : }
809 0 : catch(const com::sun::star::uno::Exception&)
810 : {
811 : /* #i79978# since old documents may contain invalid view settings, this is nothing to worry the user about.
812 : uno::Sequence<OUString> aSeq(0);
813 : SetError( XMLERROR_FLAG_WARNING | XMLERROR_API, aSeq, e.Message, NULL );
814 : */
815 114 : }
816 : }
817 :
818 36 : void SdXMLImport::SetConfigurationSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aConfigProps)
819 : {
820 36 : uno::Reference< lang::XMultiServiceFactory > xFac( GetModel(), uno::UNO_QUERY );
821 36 : if( !xFac.is() )
822 0 : return;
823 :
824 72 : uno::Reference< beans::XPropertySet > xProps( xFac->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY );
825 36 : if( !xProps.is() )
826 0 : return;
827 :
828 72 : uno::Reference< beans::XPropertySetInfo > xInfo( xProps->getPropertySetInfo() );
829 36 : if( !xInfo.is() )
830 0 : return;
831 :
832 36 : sal_Int32 nCount = aConfigProps.getLength();
833 36 : const beans::PropertyValue* pValues = aConfigProps.getConstArray();
834 :
835 : DocumentSettingsSerializer *pFilter;
836 36 : pFilter = dynamic_cast<DocumentSettingsSerializer *>(xProps.get());
837 72 : uno::Sequence<beans::PropertyValue> aFiltered;
838 36 : if( pFilter )
839 : {
840 36 : aFiltered = pFilter->filterStreamsFromStorage( GetDocumentBase(), GetSourceStorage(), aConfigProps );
841 36 : nCount = aFiltered.getLength();
842 36 : pValues = aFiltered.getConstArray();
843 : }
844 :
845 1126 : while( nCount-- )
846 : {
847 : try
848 : {
849 1054 : const OUString& rProperty = pValues->Name;
850 1054 : if( xInfo->hasPropertyByName( rProperty ) )
851 1048 : xProps->setPropertyValue( rProperty, pValues->Value );
852 : }
853 0 : catch(const uno::Exception&)
854 : {
855 : SAL_INFO("xmloff.draw", "#SdXMLImport::SetConfigurationSettings: Exception!" );
856 : }
857 :
858 1054 : pValues++;
859 36 : }
860 : }
861 :
862 : // #80365# overload this method to read and use the hint value from the
863 : // written meta information. If no info is found, guess 10 draw objects
864 : //void SdXMLImport::SetStatisticAttributes(const uno::Reference<xml::sax::XAttributeList>& xAttrList)
865 110 : void SdXMLImport::SetStatistics(
866 : const uno::Sequence<beans::NamedValue> & i_rStats)
867 : {
868 : static const char* s_stats[] =
869 : { "ObjectCount", 0 };
870 :
871 110 : SvXMLImport::SetStatistics(i_rStats);
872 :
873 110 : sal_uInt32 nCount(10);
874 142 : for (sal_Int32 i = 0; i < i_rStats.getLength(); ++i) {
875 64 : for (const char** pStat = s_stats; *pStat != 0; ++pStat) {
876 32 : if (i_rStats[i].Name.equalsAscii(*pStat)) {
877 32 : sal_Int32 val = 0;
878 32 : if (i_rStats[i].Value >>= val) {
879 32 : nCount = val;
880 : } else {
881 : SAL_WARN("xmloff.draw", "SdXMLImport::SetStatistics: invalid entry");
882 : }
883 : }
884 : }
885 : }
886 :
887 110 : if(nCount)
888 : {
889 108 : GetProgressBarHelper()->SetReference(nCount);
890 108 : GetProgressBarHelper()->SetValue(0);
891 : }
892 110 : }
893 :
894 0 : void SdXMLImport::AddHeaderDecl( const OUString& rName, const OUString& rText )
895 : {
896 0 : if( !rName.isEmpty() && !rText.isEmpty() )
897 0 : maHeaderDeclsMap[rName] = rText;
898 0 : }
899 :
900 0 : void SdXMLImport::AddFooterDecl( const OUString& rName, const OUString& rText )
901 : {
902 0 : if( !rName.isEmpty() && !rText.isEmpty() )
903 0 : maFooterDeclsMap[rName] = rText;
904 0 : }
905 :
906 0 : void SdXMLImport::AddDateTimeDecl( const OUString& rName, const OUString& rText, bool bFixed, const OUString& rDateTimeFormat )
907 : {
908 0 : if( !rName.isEmpty() && (!rText.isEmpty() || !bFixed) )
909 : {
910 0 : DateTimeDeclContextImpl aDecl;
911 0 : aDecl.maStrText = rText;
912 0 : aDecl.mbFixed = bFixed;
913 0 : aDecl.maStrDateTimeFormat = rDateTimeFormat;
914 0 : maDateTimeDeclsMap[rName] = aDecl;
915 : }
916 0 : }
917 :
918 0 : OUString SdXMLImport::GetHeaderDecl( const OUString& rName ) const
919 : {
920 0 : OUString aRet;
921 0 : HeaderFooterDeclMap::const_iterator aIter( maHeaderDeclsMap.find( rName ) );
922 0 : if( aIter != maHeaderDeclsMap.end() )
923 0 : aRet = (*aIter).second;
924 :
925 0 : return aRet;
926 : }
927 :
928 0 : OUString SdXMLImport::GetFooterDecl( const OUString& rName ) const
929 : {
930 0 : OUString aRet;
931 0 : HeaderFooterDeclMap::const_iterator aIter( maFooterDeclsMap.find( rName ) );
932 0 : if( aIter != maFooterDeclsMap.end() )
933 0 : aRet = (*aIter).second;
934 :
935 0 : return aRet;
936 : }
937 :
938 0 : OUString SdXMLImport::GetDateTimeDecl( const OUString& rName, bool& rbFixed, OUString& rDateTimeFormat )
939 : {
940 0 : DateTimeDeclContextImpl aDecl;
941 :
942 0 : DateTimeDeclMap::const_iterator aIter( maDateTimeDeclsMap.find( rName ) );
943 0 : if( aIter != maDateTimeDeclsMap.end() )
944 0 : aDecl = (*aIter).second;
945 :
946 0 : rbFixed = aDecl.mbFixed;
947 0 : rDateTimeFormat = aDecl.maStrDateTimeFormat;
948 0 : return aDecl.maStrText;
949 : }
950 :
951 0 : void SdXMLImport::NotifyEmbeddedFontRead()
952 : {
953 0 : uno::Reference< lang::XMultiServiceFactory > xFac( GetModel(), uno::UNO_QUERY );
954 0 : if( xFac.is() )
955 : {
956 0 : uno::Reference< beans::XPropertySet > xProps( xFac->createInstance("com.sun.star.document.Settings"), uno::UNO_QUERY );
957 0 : if( xProps.is() )
958 0 : xProps->setPropertyValue("EmbedFonts", uno::makeAny( true ) );
959 0 : }
960 0 : }
961 :
962 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|