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