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 "ximpstyl.hxx"
21 : #include <xmloff/XMLShapeStyleContext.hxx>
22 : #include "xmloff/xmlnmspe.hxx"
23 : #include <xmloff/xmltoken.hxx>
24 : #include <xmloff/xmluconv.hxx>
25 : #include "ximpnote.hxx"
26 : #include <tools/debug.hxx>
27 :
28 : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
29 : #include <com/sun/star/lang/XSingleServiceFactory.hpp>
30 : #include <com/sun/star/presentation/XPresentationPage.hpp>
31 : #include <com/sun/star/drawing/XDrawPages.hpp>
32 : #include <com/sun/star/container/XNamed.hpp>
33 : #include <com/sun/star/beans/XPropertySet.hpp>
34 : #include <com/sun/star/beans/XPropertyState.hpp>
35 : #include <com/sun/star/presentation/XHandoutMasterSupplier.hpp>
36 : #include <comphelper/namecontainer.hxx>
37 : #include <xmloff/xmlprcon.hxx>
38 : #include <xmloff/families.hxx>
39 : #include <com/sun/star/container/XNameContainer.hpp>
40 : #include <svl/zforlist.hxx>
41 : #include "PropertySetMerger.hxx"
42 : #include "sdpropls.hxx"
43 : #include "layerimp.hxx"
44 : #include <xmloff/XMLGraphicsDefaultStyle.hxx>
45 : #include "XMLNumberStylesImport.hxx"
46 : #include "xmloff/xmlerror.hxx"
47 :
48 : using ::rtl::OUString;
49 : using ::rtl::OUStringBuffer;
50 :
51 : using namespace ::com::sun::star;
52 : using namespace ::com::sun::star::uno;
53 : using namespace ::com::sun::star::xml::sax;
54 : using namespace ::xmloff::token;
55 :
56 : //////////////////////////////////////////////////////////////////////////////
57 :
58 : class SdXMLDrawingPagePropertySetContext : public SvXMLPropertySetContext
59 : {
60 : public:
61 :
62 : TYPEINFO();
63 :
64 : SdXMLDrawingPagePropertySetContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
65 : const ::rtl::OUString& rLName,
66 : const ::com::sun::star::uno::Reference<
67 : ::com::sun::star::xml::sax::XAttributeList >& xAttrList,
68 : ::std::vector< XMLPropertyState > &rProps,
69 : const UniReference < SvXMLImportPropertyMapper > &rMap );
70 :
71 : virtual ~SdXMLDrawingPagePropertySetContext();
72 :
73 : using SvXMLPropertySetContext::CreateChildContext;
74 : virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix,
75 : const ::rtl::OUString& rLocalName,
76 : const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList,
77 : ::std::vector< XMLPropertyState > &rProperties,
78 : const XMLPropertyState& rProp);
79 : };
80 :
81 0 : TYPEINIT1( SdXMLDrawingPagePropertySetContext, SvXMLPropertySetContext );
82 :
83 5 : SdXMLDrawingPagePropertySetContext::SdXMLDrawingPagePropertySetContext(
84 : SvXMLImport& rImport, sal_uInt16 nPrfx,
85 : const OUString& rLName,
86 : const uno::Reference< xml::sax::XAttributeList > & xAttrList,
87 : ::std::vector< XMLPropertyState > &rProps,
88 : const UniReference < SvXMLImportPropertyMapper > &rMap ) :
89 : SvXMLPropertySetContext( rImport, nPrfx, rLName, xAttrList,
90 5 : XML_TYPE_PROP_DRAWING_PAGE, rProps, rMap )
91 : {
92 5 : }
93 :
94 10 : SdXMLDrawingPagePropertySetContext::~SdXMLDrawingPagePropertySetContext()
95 : {
96 10 : }
97 :
98 0 : SvXMLImportContext *SdXMLDrawingPagePropertySetContext::CreateChildContext(
99 : sal_uInt16 p_nPrefix,
100 : const OUString& rLocalName,
101 : const uno::Reference< xml::sax::XAttributeList > & xAttrList,
102 : ::std::vector< XMLPropertyState > &rProperties,
103 : const XMLPropertyState& rProp )
104 : {
105 0 : SvXMLImportContext *pContext = 0;
106 :
107 0 : switch( mxMapper->getPropertySetMapper()->GetEntryContextId( rProp.mnIndex ) )
108 : {
109 : case CTF_PAGE_SOUND_URL:
110 : {
111 0 : const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
112 0 : for(sal_Int16 i=0; i < nAttrCount; i++)
113 : {
114 0 : OUString aLocalName;
115 0 : sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName(xAttrList->getNameByIndex(i), &aLocalName);
116 :
117 0 : if( (nPrefix == XML_NAMESPACE_XLINK) && IsXMLToken( aLocalName, XML_HREF ) )
118 : {
119 0 : uno::Any aAny( GetImport().GetAbsoluteReference( xAttrList->getValueByIndex(i) ) );
120 0 : XMLPropertyState aPropState( rProp.mnIndex, aAny );
121 0 : rProperties.push_back( aPropState );
122 : }
123 0 : }
124 0 : break;
125 : }
126 : }
127 :
128 0 : if( !pContext )
129 : pContext = SvXMLPropertySetContext::CreateChildContext( p_nPrefix, rLocalName,
130 : xAttrList,
131 0 : rProperties, rProp );
132 :
133 0 : return pContext;
134 : }
135 :
136 : //////////////////////////////////////////////////////////////////////////////
137 :
138 : class SdXMLDrawingPageStyleContext : public XMLPropStyleContext
139 : {
140 : public:
141 : TYPEINFO();
142 :
143 : SdXMLDrawingPageStyleContext(
144 : SvXMLImport& rImport,
145 : sal_uInt16 nPrfx,
146 : const rtl::OUString& rLName,
147 : const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList,
148 : SvXMLStylesContext& rStyles,
149 : sal_uInt16 nFamily = XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID);
150 : virtual ~SdXMLDrawingPageStyleContext();
151 :
152 : SvXMLImportContext * CreateChildContext(
153 : sal_uInt16 nPrefix,
154 : const ::rtl::OUString& rLocalName,
155 : const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList );
156 :
157 : virtual void Finish( sal_Bool bOverwrite );
158 :
159 : // #i35918#
160 : virtual void FillPropertySet(
161 : const ::com::sun::star::uno::Reference<
162 : ::com::sun::star::beans::XPropertySet > & rPropSet );
163 : };
164 :
165 78 : TYPEINIT1( SdXMLDrawingPageStyleContext, XMLPropStyleContext );
166 :
167 6 : SdXMLDrawingPageStyleContext::SdXMLDrawingPageStyleContext(
168 : SvXMLImport& rImport,
169 : sal_uInt16 nPrfx,
170 : const OUString& rLName,
171 : const uno::Reference< xml::sax::XAttributeList >& xAttrList,
172 : SvXMLStylesContext& rStyles,
173 : sal_uInt16 nFamily)
174 6 : : XMLPropStyleContext(rImport, nPrfx, rLName, xAttrList, rStyles, nFamily )
175 : {
176 6 : }
177 :
178 12 : SdXMLDrawingPageStyleContext::~SdXMLDrawingPageStyleContext()
179 : {
180 12 : }
181 :
182 5 : SvXMLImportContext *SdXMLDrawingPageStyleContext::CreateChildContext(
183 : sal_uInt16 nPrefix,
184 : const OUString& rLocalName,
185 : const uno::Reference< xml::sax::XAttributeList > & xAttrList )
186 : {
187 5 : SvXMLImportContext *pContext = 0;
188 :
189 10 : if( XML_NAMESPACE_STYLE == nPrefix &&
190 5 : IsXMLToken( rLocalName, XML_DRAWING_PAGE_PROPERTIES ) )
191 : {
192 : UniReference < SvXMLImportPropertyMapper > xImpPrMap =
193 5 : GetStyles()->GetImportPropertyMapper( GetFamily() );
194 5 : if( xImpPrMap.is() )
195 5 : pContext = new SdXMLDrawingPagePropertySetContext( GetImport(), nPrefix,
196 : rLocalName, xAttrList,
197 5 : GetProperties(),
198 10 : xImpPrMap );
199 : }
200 :
201 5 : if( !pContext )
202 : pContext = XMLPropStyleContext::CreateChildContext( nPrefix, rLocalName,
203 0 : xAttrList );
204 :
205 5 : return pContext;
206 : }
207 :
208 6 : void SdXMLDrawingPageStyleContext::Finish( sal_Bool bOverwrite )
209 : {
210 6 : XMLPropStyleContext::Finish( bOverwrite );
211 :
212 6 : ::std::vector< XMLPropertyState > &rProperties = GetProperties();
213 :
214 6 : const UniReference< XMLPropertySetMapper >& rImpPrMap = GetStyles()->GetImportPropertyMapper( GetFamily() )->getPropertySetMapper();
215 :
216 6 : ::std::vector< XMLPropertyState >::iterator property = rProperties.begin();
217 23 : for(; property != rProperties.end(); ++property)
218 : {
219 17 : if( property->mnIndex == -1 )
220 0 : continue;
221 :
222 17 : sal_Int16 nContextID = rImpPrMap->GetEntryContextId(property->mnIndex);
223 17 : switch( nContextID )
224 : {
225 : case CTF_DATE_TIME_FORMAT:
226 : {
227 0 : OUString sStyleName;
228 0 : (*property).maValue >>= sStyleName;
229 :
230 0 : sal_Int32 nStyle = 0;
231 :
232 : SdXMLNumberFormatImportContext* pSdNumStyle =
233 0 : PTR_CAST( SdXMLNumberFormatImportContext,
234 : GetStyles()->FindStyleChildContext( XML_STYLE_FAMILY_DATA_STYLE, sStyleName, sal_True ) );
235 :
236 0 : if( pSdNumStyle )
237 0 : nStyle = pSdNumStyle->GetDrawKey();
238 :
239 0 : (*property).maValue <<= nStyle;
240 : }
241 0 : break;
242 : }
243 : }
244 :
245 6 : }
246 :
247 : // #i35918#
248 20 : void SdXMLDrawingPageStyleContext::FillPropertySet(
249 : const Reference< beans::XPropertySet > & rPropSet )
250 : {
251 20 : const sal_uInt16 MAX_SPECIAL_DRAW_STYLES = 7;
252 : struct _ContextID_Index_Pair aContextIDs[MAX_SPECIAL_DRAW_STYLES+1] =
253 : {
254 : { CTF_DASHNAME , -1 },
255 : { CTF_LINESTARTNAME , -1 },
256 : { CTF_LINEENDNAME , -1 },
257 : { CTF_FILLGRADIENTNAME, -1 },
258 : { CTF_FILLTRANSNAME , -1 },
259 : { CTF_FILLHATCHNAME , -1 },
260 : { CTF_FILLBITMAPNAME , -1 },
261 : { -1, -1 }
262 20 : };
263 : static sal_uInt16 aFamilies[MAX_SPECIAL_DRAW_STYLES] =
264 : {
265 : XML_STYLE_FAMILY_SD_STROKE_DASH_ID,
266 : XML_STYLE_FAMILY_SD_MARKER_ID,
267 : XML_STYLE_FAMILY_SD_MARKER_ID,
268 : XML_STYLE_FAMILY_SD_GRADIENT_ID,
269 : XML_STYLE_FAMILY_SD_GRADIENT_ID,
270 : XML_STYLE_FAMILY_SD_HATCH_ID,
271 : XML_STYLE_FAMILY_SD_FILL_IMAGE_ID
272 : };
273 :
274 : UniReference < SvXMLImportPropertyMapper > xImpPrMap =
275 20 : GetStyles()->GetImportPropertyMapper( GetFamily() );
276 : DBG_ASSERT( xImpPrMap.is(), "There is the import prop mapper" );
277 20 : if( xImpPrMap.is() )
278 20 : xImpPrMap->FillPropertySet( GetProperties(), rPropSet, aContextIDs );
279 :
280 20 : Reference< beans::XPropertySetInfo > xInfo;
281 160 : for( sal_uInt16 i=0; i<MAX_SPECIAL_DRAW_STYLES; i++ )
282 : {
283 140 : sal_Int32 nIndex = aContextIDs[i].nIndex;
284 140 : if( nIndex != -1 )
285 : {
286 0 : struct XMLPropertyState& rState = GetProperties()[nIndex];
287 0 : OUString sStyleName;
288 0 : rState.maValue >>= sStyleName;
289 0 : sStyleName = GetImport().GetStyleDisplayName( aFamilies[i],
290 0 : sStyleName );
291 : // get property set mapper
292 : UniReference<XMLPropertySetMapper> rPropMapper =
293 0 : xImpPrMap->getPropertySetMapper();
294 :
295 : // set property
296 : const OUString& rPropertyName =
297 0 : rPropMapper->GetEntryAPIName(rState.mnIndex);
298 0 : if( !xInfo.is() )
299 0 : xInfo = rPropSet->getPropertySetInfo();
300 0 : if ( xInfo->hasPropertyByName( rPropertyName ) )
301 : {
302 0 : rPropSet->setPropertyValue( rPropertyName, Any( sStyleName ) );
303 0 : }
304 : }
305 20 : }
306 20 : }
307 :
308 : //////////////////////////////////////////////////////////////////////////////
309 :
310 0 : TYPEINIT1( SdXMLPageMasterStyleContext, SvXMLStyleContext );
311 :
312 3 : SdXMLPageMasterStyleContext::SdXMLPageMasterStyleContext(
313 : SdXMLImport& rImport,
314 : sal_uInt16 nPrfx,
315 : const OUString& rLName,
316 : const uno::Reference< xml::sax::XAttributeList>& xAttrList)
317 : : SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList, XML_STYLE_FAMILY_SD_PAGEMASTERSTYLECONEXT_ID),
318 : mnBorderBottom( 0L ),
319 : mnBorderLeft( 0L ),
320 : mnBorderRight( 0L ),
321 : mnBorderTop( 0L ),
322 : mnWidth( 0L ),
323 : mnHeight( 0L ),
324 3 : meOrientation(GetSdImport().IsDraw() ? view::PaperOrientation_PORTRAIT : view::PaperOrientation_LANDSCAPE)
325 : {
326 : // set family to something special at SvXMLStyleContext
327 : // for differences in search-methods
328 :
329 3 : sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
330 24 : for(sal_Int16 i=0; i < nAttrCount; i++)
331 : {
332 21 : OUString sAttrName = xAttrList->getNameByIndex(i);
333 21 : OUString aLocalName;
334 21 : sal_uInt16 nPrefix = GetSdImport().GetNamespaceMap().GetKeyByAttrName(sAttrName, &aLocalName);
335 21 : OUString sValue = xAttrList->getValueByIndex(i);
336 21 : const SvXMLTokenMap& rAttrTokenMap = GetSdImport().GetPageMasterStyleAttrTokenMap();
337 :
338 21 : switch(rAttrTokenMap.Get(nPrefix, aLocalName))
339 : {
340 : case XML_TOK_PAGEMASTERSTYLE_MARGIN_TOP:
341 : {
342 3 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
343 6 : mnBorderTop, sValue);
344 3 : break;
345 : }
346 : case XML_TOK_PAGEMASTERSTYLE_MARGIN_BOTTOM:
347 : {
348 3 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
349 6 : mnBorderBottom, sValue);
350 3 : break;
351 : }
352 : case XML_TOK_PAGEMASTERSTYLE_MARGIN_LEFT:
353 : {
354 3 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
355 6 : mnBorderLeft, sValue);
356 3 : break;
357 : }
358 : case XML_TOK_PAGEMASTERSTYLE_MARGIN_RIGHT:
359 : {
360 3 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
361 6 : mnBorderRight, sValue);
362 3 : break;
363 : }
364 : case XML_TOK_PAGEMASTERSTYLE_PAGE_WIDTH:
365 : {
366 3 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
367 6 : mnWidth, sValue);
368 3 : break;
369 : }
370 : case XML_TOK_PAGEMASTERSTYLE_PAGE_HEIGHT:
371 : {
372 3 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
373 6 : mnHeight, sValue);
374 3 : break;
375 : }
376 : case XML_TOK_PAGEMASTERSTYLE_PAGE_ORIENTATION:
377 : {
378 3 : if( IsXMLToken( sValue, XML_PORTRAIT ) )
379 2 : meOrientation = view::PaperOrientation_PORTRAIT;
380 : else
381 1 : meOrientation = view::PaperOrientation_LANDSCAPE;
382 3 : break;
383 : }
384 : }
385 21 : }
386 3 : }
387 :
388 : //////////////////////////////////////////////////////////////////////////////
389 :
390 6 : SdXMLPageMasterStyleContext::~SdXMLPageMasterStyleContext()
391 : {
392 6 : }
393 :
394 : //////////////////////////////////////////////////////////////////////////////
395 : //////////////////////////////////////////////////////////////////////////////
396 :
397 25 : TYPEINIT1( SdXMLPageMasterContext, SvXMLStyleContext );
398 :
399 3 : SdXMLPageMasterContext::SdXMLPageMasterContext(
400 : SdXMLImport& rImport,
401 : sal_uInt16 nPrfx,
402 : const OUString& rLName,
403 : const uno::Reference< xml::sax::XAttributeList>& xAttrList)
404 : : SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList, XML_STYLE_FAMILY_SD_PAGEMASTERCONEXT_ID),
405 3 : mpPageMasterStyle( 0L )
406 : {
407 : // set family to something special at SvXMLStyleContext
408 : // for differences in search-methods
409 :
410 3 : sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
411 6 : for(sal_Int16 i=0; i < nAttrCount; i++)
412 : {
413 3 : OUString sAttrName = xAttrList->getNameByIndex(i);
414 3 : OUString aLocalName;
415 3 : sal_uInt16 nPrefix = GetSdImport().GetNamespaceMap().GetKeyByAttrName(sAttrName, &aLocalName);
416 3 : OUString sValue = xAttrList->getValueByIndex(i);
417 3 : const SvXMLTokenMap& rAttrTokenMap = GetSdImport().GetPageMasterAttrTokenMap();
418 :
419 3 : switch(rAttrTokenMap.Get(nPrefix, aLocalName))
420 : {
421 : case XML_TOK_PAGEMASTER_NAME:
422 : {
423 3 : msName = sValue;
424 3 : break;
425 : }
426 : }
427 3 : }
428 3 : }
429 :
430 : //////////////////////////////////////////////////////////////////////////////
431 :
432 9 : SdXMLPageMasterContext::~SdXMLPageMasterContext()
433 : {
434 : // release remembered contexts, they are no longer needed
435 3 : if(mpPageMasterStyle)
436 : {
437 3 : mpPageMasterStyle->ReleaseRef();
438 3 : mpPageMasterStyle = 0L;
439 : }
440 6 : }
441 :
442 : //////////////////////////////////////////////////////////////////////////////
443 :
444 3 : SvXMLImportContext *SdXMLPageMasterContext::CreateChildContext(
445 : sal_uInt16 nPrefix,
446 : const OUString& rLocalName,
447 : const uno::Reference< xml::sax::XAttributeList >& xAttrList )
448 : {
449 3 : SvXMLImportContext* pContext = 0;
450 :
451 3 : if(nPrefix == XML_NAMESPACE_STYLE && IsXMLToken( rLocalName, XML_PAGE_LAYOUT_PROPERTIES) )
452 : {
453 3 : pContext = new SdXMLPageMasterStyleContext(GetSdImport(), nPrefix, rLocalName, xAttrList);
454 :
455 : // remember SdXMLPresentationPlaceholderContext for later evaluation
456 3 : if(pContext)
457 : {
458 3 : pContext->AddRef();
459 : DBG_ASSERT(!mpPageMasterStyle, "PageMasterStyle is set, there seem to be two of them (!)");
460 3 : mpPageMasterStyle = (SdXMLPageMasterStyleContext*)pContext;
461 : }
462 : }
463 :
464 : // call base class
465 3 : if(!pContext)
466 0 : pContext = SvXMLStyleContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
467 :
468 3 : return pContext;
469 : }
470 :
471 : //////////////////////////////////////////////////////////////////////////////
472 : //////////////////////////////////////////////////////////////////////////////
473 :
474 67 : TYPEINIT1( SdXMLPresentationPageLayoutContext, SvXMLStyleContext );
475 :
476 3 : SdXMLPresentationPageLayoutContext::SdXMLPresentationPageLayoutContext(
477 : SdXMLImport& rImport,
478 : sal_uInt16 nPrfx,
479 : const OUString& rLName,
480 : const uno::Reference< xml::sax::XAttributeList >& xAttrList)
481 : : SvXMLStyleContext(rImport, nPrfx, rLName, xAttrList, XML_STYLE_FAMILY_SD_PRESENTATIONPAGELAYOUT_ID),
482 3 : mnTypeId( 20 ) // AUTOLAYOUT_NONE
483 : {
484 : // set family to somethiong special at SvXMLStyleContext
485 : // for differences in search-methods
486 :
487 3 : sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
488 6 : for( sal_Int16 i=0; i < nAttrCount; i++ )
489 : {
490 3 : const OUString& rAttrName = xAttrList->getNameByIndex( i );
491 3 : OUString aLocalName;
492 3 : sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName( rAttrName, &aLocalName );
493 :
494 3 : if(nPrefix == XML_NAMESPACE_STYLE && IsXMLToken( aLocalName, XML_NAME ) )
495 : {
496 3 : msName = xAttrList->getValueByIndex( i );
497 : }
498 3 : }
499 3 : }
500 :
501 6 : SdXMLPresentationPageLayoutContext::~SdXMLPresentationPageLayoutContext()
502 : {
503 6 : }
504 :
505 10 : SvXMLImportContext *SdXMLPresentationPageLayoutContext::CreateChildContext(
506 : sal_uInt16 nPrefix,
507 : const OUString& rLocalName,
508 : const uno::Reference< xml::sax::XAttributeList >& xAttrList )
509 : {
510 10 : SvXMLImportContext* pContext = 0;
511 :
512 10 : if(nPrefix == XML_NAMESPACE_PRESENTATION && IsXMLToken( rLocalName, XML_PLACEHOLDER ) )
513 : {
514 : // presentation:placeholder inside style:presentation-page-layout context
515 : pContext = new SdXMLPresentationPlaceholderContext(
516 10 : GetSdImport(), nPrefix, rLocalName, xAttrList);
517 :
518 : // remember SdXMLPresentationPlaceholderContext for later evaluation
519 10 : if(pContext)
520 : {
521 10 : pContext->AddRef();
522 10 : maList.push_back( (SdXMLPresentationPlaceholderContext*)pContext );
523 : }
524 : }
525 :
526 : // call base class
527 10 : if(!pContext)
528 0 : pContext = SvXMLStyleContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
529 :
530 10 : return pContext;
531 : }
532 :
533 3 : void SdXMLPresentationPageLayoutContext::EndElement()
534 : {
535 : // build presentation page layout type here
536 : // calc mnTpeId due to content of maList
537 : // at the moment only use number of types used there
538 3 : if( !maList.empty() )
539 : {
540 3 : SdXMLPresentationPlaceholderContext* pObj0 = maList[ 0 ];
541 3 : if( pObj0->GetName() == "handout" )
542 : {
543 1 : switch( maList.size() )
544 : {
545 : case 1:
546 0 : mnTypeId = 22; // AUTOLAYOUT_HANDOUT1
547 0 : break;
548 : case 2:
549 0 : mnTypeId = 23; // AUTOLAYOUT_HANDOUT2
550 0 : break;
551 : case 3:
552 0 : mnTypeId = 24; // AUTOLAYOUT_HANDOUT3
553 0 : break;
554 : case 4:
555 0 : mnTypeId = 25; // AUTOLAYOUT_HANDOUT4
556 0 : break;
557 : case 9:
558 0 : mnTypeId = 31; // AUTOLAYOUT_HANDOUT9
559 0 : break;
560 : default:
561 1 : mnTypeId = 26; // AUTOLAYOUT_HANDOUT6
562 : }
563 : }
564 : else
565 : {
566 2 : switch( maList.size() )
567 : {
568 : case 1:
569 : {
570 0 : if( pObj0->GetName() == "title" )
571 : {
572 0 : mnTypeId = 19; // AUTOLAYOUT_ONLY_TITLE
573 : }
574 : else
575 : {
576 0 : mnTypeId = 32; // AUTOLAYOUT_ONLY_TEXT
577 : }
578 0 : break;
579 : }
580 : case 2:
581 : {
582 2 : SdXMLPresentationPlaceholderContext* pObj1 = maList[ 1 ];
583 :
584 2 : if( pObj1->GetName() == "subtitle" )
585 : {
586 1 : mnTypeId = 0; // AUTOLAYOUT_TITLE
587 : }
588 1 : else if( pObj1->GetName() == "outline" )
589 : {
590 1 : mnTypeId = 1; // AUTOLAYOUT_ENUM
591 : }
592 0 : else if( pObj1->GetName() == "chart" )
593 : {
594 0 : mnTypeId = 2; // AUTOLAYOUT_CHART
595 : }
596 0 : else if( pObj1->GetName() == "table" )
597 : {
598 0 : mnTypeId = 8; // AUTOLAYOUT_TAB
599 : }
600 0 : else if( pObj1->GetName() == "object" )
601 : {
602 0 : mnTypeId = 11; // AUTOLAYOUT_OBJ
603 : }
604 0 : else if( pObj1->GetName() == "vertical_outline" )
605 : {
606 0 : if( pObj0->GetName() == "vertical_title" )
607 : {
608 : // AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE
609 0 : mnTypeId = 28;
610 : }
611 : else
612 : {
613 : // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE
614 0 : mnTypeId = 29;
615 : }
616 : }
617 : else
618 : {
619 0 : mnTypeId = 21; // AUTOLAYOUT_NOTES
620 : }
621 2 : break;
622 : }
623 : case 3:
624 : {
625 0 : SdXMLPresentationPlaceholderContext* pObj1 = maList[ 1 ];
626 0 : SdXMLPresentationPlaceholderContext* pObj2 = maList[ 2 ];
627 :
628 0 : if( pObj1->GetName() == "outline" )
629 : {
630 0 : if( pObj2->GetName() == "outline" )
631 : {
632 0 : mnTypeId = 3; // AUTOLAYOUT_2TEXT
633 : }
634 0 : else if( pObj2->GetName() == "chart" )
635 : {
636 0 : mnTypeId = 4; // AUTOLAYOUT_TEXTCHART
637 : }
638 0 : else if( pObj2->GetName() == "graphic" )
639 : {
640 0 : mnTypeId = 6; // AUTOLAYOUT_TEXTCLIP
641 : }
642 : else
643 : {
644 0 : if(pObj1->GetX() < pObj2->GetX())
645 : {
646 0 : mnTypeId = 10; // AUTOLAYOUT_TEXTOBJ -> outline left, object right
647 : }
648 : else
649 : {
650 0 : mnTypeId = 17; // AUTOLAYOUT_TEXTOVEROBJ -> outline top, object right
651 : }
652 : }
653 : }
654 0 : else if( pObj1->GetName() == "chart" )
655 : {
656 0 : mnTypeId = 7; // AUTOLAYOUT_CHARTTEXT
657 : }
658 0 : else if( pObj1->GetName() == "graphic" )
659 : {
660 0 : if( pObj2->GetName() == "vertical_outline" )
661 : {
662 : // AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART
663 0 : mnTypeId = 30;
664 : }
665 : else
666 : {
667 0 : mnTypeId = 9; // AUTOLAYOUT_CLIPTEXT
668 : }
669 : }
670 0 : else if( pObj1->GetName() == "vertical_outline" )
671 : {
672 : // AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART
673 0 : mnTypeId = 27;
674 : }
675 : else
676 : {
677 0 : if(pObj1->GetX() < pObj2->GetX())
678 : {
679 0 : mnTypeId = 13; // AUTOLAYOUT_OBJTEXT -> left, right
680 : }
681 : else
682 : {
683 0 : mnTypeId = 14; // AUTOLAYOUT_OBJOVERTEXT -> top, bottom
684 : }
685 : }
686 0 : break;
687 : }
688 : case 4:
689 : {
690 0 : SdXMLPresentationPlaceholderContext* pObj1 = maList[ 1 ];
691 0 : SdXMLPresentationPlaceholderContext* pObj2 = maList[ 2 ];
692 :
693 0 : if( pObj1->GetName() == "object" )
694 : {
695 0 : if(pObj1->GetX() < pObj2->GetX())
696 : {
697 0 : mnTypeId = 16; // AUTOLAYOUT_2OBJOVERTEXT
698 : }
699 : else
700 : {
701 0 : mnTypeId = 15; // AUTOLAYOUT_2OBJTEXT
702 : }
703 : }
704 : else
705 : {
706 0 : mnTypeId = 12; // AUTOLAYOUT_TEXT2OBJ
707 : }
708 0 : break;
709 : }
710 : case 5:
711 : {
712 0 : SdXMLPresentationPlaceholderContext* pObj1 = maList[ 1 ];
713 :
714 0 : if( pObj1->GetName() == "object" )
715 : {
716 0 : mnTypeId = 18; // AUTOLAYOUT_4OBJ
717 : }
718 : else
719 : {
720 0 : mnTypeId = 33; // AUTOLAYOUT_4CLIPART
721 : }
722 0 : break;
723 :
724 : }
725 : case 7:
726 : {
727 0 : mnTypeId = 33; // AUTOLAYOUT_6CLIPART
728 0 : break;
729 : }
730 : default:
731 : {
732 0 : mnTypeId = 20; // AUTOLAYOUT_NONE
733 0 : break;
734 : }
735 : }
736 : }
737 :
738 : // release remembered contexts, they are no longer needed
739 16 : for ( size_t i = maList.size(); i > 0; )
740 10 : maList[ --i ]->ReleaseRef();
741 3 : maList.clear();
742 : }
743 3 : }
744 :
745 : //////////////////////////////////////////////////////////////////////////////
746 : //////////////////////////////////////////////////////////////////////////////
747 :
748 10 : SdXMLPresentationPlaceholderContext::SdXMLPresentationPlaceholderContext(
749 : SdXMLImport& rImport,
750 : sal_uInt16 nPrfx, const
751 : OUString& rLName,
752 : const uno::Reference< xml::sax::XAttributeList>& xAttrList)
753 : : SvXMLImportContext( rImport, nPrfx, rLName),
754 : mnX(0L),
755 : mnY(0L),
756 : mnWidth(1L),
757 10 : mnHeight(1L)
758 : {
759 10 : sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
760 60 : for(sal_Int16 i=0; i < nAttrCount; i++)
761 : {
762 50 : OUString sAttrName = xAttrList->getNameByIndex(i);
763 50 : OUString aLocalName;
764 50 : sal_uInt16 nPrefix = GetSdImport().GetNamespaceMap().GetKeyByAttrName(sAttrName, &aLocalName);
765 50 : OUString sValue = xAttrList->getValueByIndex(i);
766 50 : const SvXMLTokenMap& rAttrTokenMap = GetSdImport().GetPresentationPlaceholderAttrTokenMap();
767 :
768 50 : switch(rAttrTokenMap.Get(nPrefix, aLocalName))
769 : {
770 : case XML_TOK_PRESENTATIONPLACEHOLDER_OBJECTNAME:
771 : {
772 10 : msName = sValue;
773 10 : break;
774 : }
775 : case XML_TOK_PRESENTATIONPLACEHOLDER_X:
776 : {
777 10 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
778 20 : mnX, sValue);
779 10 : break;
780 : }
781 : case XML_TOK_PRESENTATIONPLACEHOLDER_Y:
782 : {
783 10 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
784 20 : mnY, sValue);
785 10 : break;
786 : }
787 : case XML_TOK_PRESENTATIONPLACEHOLDER_WIDTH:
788 : {
789 10 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
790 20 : mnWidth, sValue);
791 10 : break;
792 : }
793 : case XML_TOK_PRESENTATIONPLACEHOLDER_HEIGHT:
794 : {
795 10 : GetSdImport().GetMM100UnitConverter().convertMeasureToCore(
796 20 : mnHeight, sValue);
797 10 : break;
798 : }
799 : }
800 50 : }
801 10 : }
802 :
803 : //////////////////////////////////////////////////////////////////////////////
804 :
805 20 : SdXMLPresentationPlaceholderContext::~SdXMLPresentationPlaceholderContext()
806 : {
807 20 : }
808 :
809 : //////////////////////////////////////////////////////////////////////////////
810 : //////////////////////////////////////////////////////////////////////////////
811 :
812 0 : TYPEINIT1( SdXMLMasterPageContext, SdXMLGenericPageContext );
813 :
814 3 : SdXMLMasterPageContext::SdXMLMasterPageContext(
815 : SdXMLImport& rImport,
816 : sal_uInt16 nPrfx,
817 : const OUString& rLName,
818 : const uno::Reference< xml::sax::XAttributeList>& xAttrList,
819 : uno::Reference< drawing::XShapes >& rShapes)
820 3 : : SdXMLGenericPageContext( rImport, nPrfx, rLName, xAttrList, rShapes )
821 : {
822 3 : const sal_Bool bHandoutMaster = IsXMLToken( rLName, XML_HANDOUT_MASTER );
823 :
824 3 : const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
825 12 : for(sal_Int16 i=0; i < nAttrCount; i++)
826 : {
827 9 : OUString sAttrName = xAttrList->getNameByIndex( i );
828 9 : OUString aLocalName;
829 9 : sal_uInt16 nPrefix = GetSdImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
830 9 : OUString sValue = xAttrList->getValueByIndex( i );
831 9 : const SvXMLTokenMap& rAttrTokenMap = GetSdImport().GetMasterPageAttrTokenMap();
832 :
833 9 : switch(rAttrTokenMap.Get(nPrefix, aLocalName))
834 : {
835 : case XML_TOK_MASTERPAGE_NAME:
836 : {
837 2 : msName = sValue;
838 2 : break;
839 : }
840 : case XML_TOK_MASTERPAGE_DISPLAY_NAME:
841 : {
842 0 : msDisplayName = sValue;
843 0 : break;
844 : }
845 : case XML_TOK_MASTERPAGE_PAGE_MASTER_NAME:
846 : {
847 3 : msPageMasterName = sValue;
848 3 : break;
849 : }
850 : case XML_TOK_MASTERPAGE_STYLE_NAME:
851 : {
852 3 : msStyleName = sValue;
853 3 : break;
854 : }
855 : case XML_TOK_MASTERPAGE_PAGE_LAYOUT_NAME:
856 : {
857 1 : maPageLayoutName = sValue;
858 1 : break;
859 : }
860 : case XML_TOK_MASTERPAGE_USE_HEADER_NAME:
861 : {
862 0 : maUseHeaderDeclName = sValue;
863 0 : break;
864 : }
865 : case XML_TOK_MASTERPAGE_USE_FOOTER_NAME:
866 : {
867 0 : maUseFooterDeclName = sValue;
868 0 : break;
869 : }
870 : case XML_TOK_MASTERPAGE_USE_DATE_TIME_NAME:
871 : {
872 0 : maUseDateTimeDeclName = sValue;
873 0 : break;
874 : }
875 : }
876 9 : }
877 :
878 3 : if( msDisplayName.isEmpty() )
879 3 : msDisplayName = msName;
880 0 : else if( msDisplayName != msName )
881 0 : GetImport().AddStyleDisplayName( XML_STYLE_FAMILY_MASTER_PAGE, msName, msDisplayName );
882 :
883 3 : GetImport().GetShapeImport()->startPage( GetLocalShapesContext() );
884 :
885 : // set page name?
886 3 : if(!bHandoutMaster && !msDisplayName.isEmpty() && GetLocalShapesContext().is())
887 : {
888 2 : uno::Reference < container::XNamed > xNamed(GetLocalShapesContext(), uno::UNO_QUERY);
889 2 : if(xNamed.is())
890 2 : xNamed->setName(msDisplayName);
891 : }
892 :
893 : // set page-master?
894 3 : if(!msPageMasterName.isEmpty())
895 : {
896 3 : SetPageMaster( msPageMasterName );
897 : }
898 :
899 3 : SetStyle( msStyleName );
900 :
901 3 : SetLayout();
902 :
903 3 : DeleteAllShapes();
904 3 : }
905 :
906 : //////////////////////////////////////////////////////////////////////////////
907 :
908 6 : SdXMLMasterPageContext::~SdXMLMasterPageContext()
909 : {
910 6 : }
911 :
912 : //////////////////////////////////////////////////////////////////////////////
913 :
914 3 : void SdXMLMasterPageContext::EndElement()
915 : {
916 : // set styles on master-page
917 3 : if(!msName.isEmpty() && GetSdImport().GetShapeImport()->GetStylesContext())
918 : {
919 2 : SvXMLImportContext* pContext = GetSdImport().GetShapeImport()->GetStylesContext();
920 2 : if( pContext && pContext->ISA( SvXMLStyleContext ) )
921 2 : ((SdXMLStylesContext*)pContext)->SetMasterPageStyles(*this);
922 : }
923 :
924 3 : SdXMLGenericPageContext::EndElement();
925 3 : GetImport().GetShapeImport()->endPage(GetLocalShapesContext());
926 3 : }
927 :
928 : //////////////////////////////////////////////////////////////////////////////
929 :
930 16 : SvXMLImportContext* SdXMLMasterPageContext::CreateChildContext(
931 : sal_uInt16 nPrefix,
932 : const OUString& rLocalName,
933 : const uno::Reference< xml::sax::XAttributeList>& xAttrList )
934 : {
935 16 : SvXMLImportContext* pContext = 0;
936 16 : const SvXMLTokenMap& rTokenMap = GetSdImport().GetMasterPageElemTokenMap();
937 :
938 : // some special objects inside style:masterpage context
939 16 : switch(rTokenMap.Get(nPrefix, rLocalName))
940 : {
941 : case XML_TOK_MASTERPAGE_STYLE:
942 : {
943 0 : if(GetSdImport().GetShapeImport()->GetStylesContext())
944 : {
945 : // style:style inside master-page context -> presentation style
946 : XMLShapeStyleContext* pNew = new XMLShapeStyleContext(
947 0 : GetSdImport(), nPrefix, rLocalName, xAttrList,
948 0 : *GetSdImport().GetShapeImport()->GetStylesContext(),
949 0 : XML_STYLE_FAMILY_SD_PRESENTATION_ID);
950 :
951 : // add this style to the outer StylesContext class for later processing
952 0 : if(pNew)
953 : {
954 0 : pContext = pNew;
955 0 : GetSdImport().GetShapeImport()->GetStylesContext()->AddStyle(*pNew);
956 : }
957 : }
958 0 : break;
959 : }
960 : case XML_TOK_MASTERPAGE_NOTES:
961 : {
962 1 : if( GetSdImport().IsImpress() )
963 : {
964 : // get notes page
965 1 : uno::Reference< presentation::XPresentationPage > xPresPage(GetLocalShapesContext(), uno::UNO_QUERY);
966 1 : if(xPresPage.is())
967 : {
968 1 : uno::Reference< drawing::XDrawPage > xNotesDrawPage(xPresPage->getNotesPage(), uno::UNO_QUERY);
969 1 : if(xNotesDrawPage.is())
970 : {
971 1 : uno::Reference< drawing::XShapes > xNewShapes(xNotesDrawPage, uno::UNO_QUERY);
972 1 : if(xNewShapes.is())
973 : {
974 : // presentation:notes inside master-page context
975 1 : pContext = new SdXMLNotesContext( GetSdImport(), nPrefix, rLocalName, xAttrList, xNewShapes);
976 1 : }
977 1 : }
978 1 : }
979 : }
980 : }
981 : }
982 :
983 : // call base class
984 16 : if(!pContext)
985 15 : pContext = SdXMLGenericPageContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
986 :
987 16 : return pContext;
988 : }
989 :
990 : //////////////////////////////////////////////////////////////////////////////
991 : //////////////////////////////////////////////////////////////////////////////
992 :
993 69 : TYPEINIT1( SdXMLStylesContext, SvXMLStyleContext );
994 :
995 6 : SdXMLStylesContext::SdXMLStylesContext(
996 : SdXMLImport& rImport,
997 : sal_uInt16 nPrfx,
998 : const OUString& rLName,
999 : const uno::Reference< xml::sax::XAttributeList >& xAttrList,
1000 : sal_Bool bIsAutoStyle)
1001 : : SvXMLStylesContext(rImport, nPrfx, rLName, xAttrList),
1002 6 : mbIsAutoStyle(bIsAutoStyle)
1003 : {
1004 6 : Reference< lang::XMultiServiceFactory > xMSF = rImport.getServiceFactory();
1005 6 : mpNumFormatter = new SvNumberFormatter( xMSF, LANGUAGE_SYSTEM );
1006 6 : mpNumFmtHelper = new SvXMLNumFmtHelper( mpNumFormatter, xMSF );
1007 6 : }
1008 :
1009 : //////////////////////////////////////////////////////////////////////////////
1010 :
1011 18 : SdXMLStylesContext::~SdXMLStylesContext()
1012 : {
1013 6 : delete mpNumFmtHelper;
1014 6 : delete mpNumFormatter;
1015 12 : }
1016 :
1017 : //////////////////////////////////////////////////////////////////////////////
1018 :
1019 152 : SvXMLStyleContext* SdXMLStylesContext::CreateStyleChildContext(
1020 : sal_uInt16 nPrefix,
1021 : const OUString& rLocalName,
1022 : const uno::Reference< xml::sax::XAttributeList >& xAttrList)
1023 : {
1024 152 : SvXMLStyleContext* pContext = 0;
1025 152 : const SvXMLTokenMap& rStyleTokenMap = GetSdImport().GetStylesElemTokenMap();
1026 :
1027 152 : switch(rStyleTokenMap.Get(nPrefix, rLocalName))
1028 : {
1029 : case XML_TOK_STYLES_PAGE_MASTER:
1030 : {
1031 : // style:page-master inside office:styles context
1032 3 : pContext = new SdXMLPageMasterContext(GetSdImport(), nPrefix, rLocalName, xAttrList);
1033 3 : break;
1034 : }
1035 : case XML_TOK_STYLES_PRESENTATION_PAGE_LAYOUT:
1036 : {
1037 : // style:presentation-page-layout inside office:styles context
1038 3 : pContext = new SdXMLPresentationPageLayoutContext(GetSdImport(), nPrefix, rLocalName, xAttrList);
1039 3 : break;
1040 : }
1041 : }
1042 :
1043 152 : if(!pContext)
1044 : {
1045 146 : const SvXMLTokenMap& rTokenMap = mpNumFmtHelper->GetStylesElemTokenMap();
1046 146 : sal_uInt16 nToken = rTokenMap.Get( nPrefix, rLocalName );
1047 146 : switch (nToken)
1048 : {
1049 : case XML_TOK_STYLES_DATE_STYLE:
1050 : case XML_TOK_STYLES_TIME_STYLE:
1051 : // number:date-style or number:time-style
1052 0 : pContext = new SdXMLNumberFormatImportContext( GetSdImport(), nPrefix, rLocalName, mpNumFmtHelper->getData(), nToken, xAttrList, *this );
1053 0 : break;
1054 :
1055 : case XML_TOK_STYLES_NUMBER_STYLE:
1056 : case XML_TOK_STYLES_CURRENCY_STYLE:
1057 : case XML_TOK_STYLES_PERCENTAGE_STYLE:
1058 : case XML_TOK_STYLES_BOOLEAN_STYLE:
1059 : case XML_TOK_STYLES_TEXT_STYLE:
1060 0 : pContext = new SvXMLNumFormatContext( GetSdImport(), nPrefix, rLocalName,
1061 0 : mpNumFmtHelper->getData(), nToken, xAttrList, *this );
1062 0 : break;
1063 : }
1064 : }
1065 :
1066 152 : if(!pContext && nPrefix == XML_NAMESPACE_PRESENTATION )
1067 : {
1068 0 : if( IsXMLToken( rLocalName, XML_HEADER_DECL ) ||
1069 0 : IsXMLToken( rLocalName, XML_FOOTER_DECL ) ||
1070 0 : IsXMLToken( rLocalName, XML_DATE_TIME_DECL ) )
1071 : {
1072 0 : pContext = new SdXMLHeaderFooterDeclContext( GetImport(), nPrefix, rLocalName, xAttrList );
1073 : }
1074 : }
1075 :
1076 152 : if(!pContext && (nPrefix == XML_NAMESPACE_TABLE) && IsXMLToken( rLocalName, XML_TABLE_TEMPLATE ) )
1077 : {
1078 1 : pContext = GetImport().GetShapeImport()->GetShapeTableImport()->CreateTableTemplateContext(nPrefix, rLocalName, xAttrList );
1079 : }
1080 :
1081 : // call base class
1082 152 : if(!pContext)
1083 145 : pContext = SvXMLStylesContext::CreateStyleChildContext(nPrefix, rLocalName, xAttrList);
1084 :
1085 152 : return pContext;
1086 : }
1087 :
1088 : //////////////////////////////////////////////////////////////////////////////
1089 :
1090 128 : SvXMLStyleContext* SdXMLStylesContext::CreateStyleStyleChildContext(
1091 : sal_uInt16 nFamily,
1092 : sal_uInt16 nPrefix,
1093 : const OUString& rLocalName,
1094 : const uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList)
1095 : {
1096 128 : SvXMLStyleContext* pContext = 0;
1097 :
1098 128 : switch( nFamily )
1099 : {
1100 : case XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID:
1101 6 : pContext = new SdXMLDrawingPageStyleContext(GetSdImport(), nPrefix, rLocalName, xAttrList, *this );
1102 6 : break;
1103 : case XML_STYLE_FAMILY_TABLE_CELL:
1104 : case XML_STYLE_FAMILY_TABLE_COLUMN:
1105 : case XML_STYLE_FAMILY_TABLE_ROW:
1106 10 : pContext = new XMLShapeStyleContext( GetSdImport(), nPrefix, rLocalName, xAttrList, *this, nFamily );
1107 10 : break;
1108 : }
1109 :
1110 : // call base class
1111 128 : if(!pContext)
1112 112 : pContext = SvXMLStylesContext::CreateStyleStyleChildContext(nFamily, nPrefix, rLocalName, xAttrList);
1113 :
1114 128 : return pContext;
1115 : }
1116 :
1117 : //////////////////////////////////////////////////////////////////////////////
1118 :
1119 2 : SvXMLStyleContext* SdXMLStylesContext::CreateDefaultStyleStyleChildContext(
1120 : sal_uInt16 nFamily,
1121 : sal_uInt16 nPrefix,
1122 : const OUString& rLocalName,
1123 : const Reference< XAttributeList > & xAttrList )
1124 : {
1125 2 : SvXMLStyleContext* pContext = 0;
1126 :
1127 2 : switch( nFamily )
1128 : {
1129 : case XML_STYLE_FAMILY_SD_GRAPHICS_ID:
1130 2 : pContext = new XMLGraphicsDefaultStyle(GetSdImport(), nPrefix, rLocalName, xAttrList, *this );
1131 2 : break;
1132 : }
1133 :
1134 : // call base class
1135 2 : if(!pContext)
1136 0 : pContext = SvXMLStylesContext::CreateDefaultStyleStyleChildContext(nFamily, nPrefix, rLocalName, xAttrList);
1137 :
1138 2 : return pContext;
1139 : }
1140 :
1141 : //////////////////////////////////////////////////////////////////////////////
1142 :
1143 130 : sal_uInt16 SdXMLStylesContext::GetFamily( const OUString& rFamily ) const
1144 : {
1145 : // call base class
1146 130 : return SvXMLStylesContext::GetFamily(rFamily);
1147 : }
1148 :
1149 : //////////////////////////////////////////////////////////////////////////////
1150 :
1151 740 : UniReference< SvXMLImportPropertyMapper > SdXMLStylesContext::GetImportPropertyMapper(
1152 : sal_uInt16 nFamily) const
1153 : {
1154 740 : UniReference < SvXMLImportPropertyMapper > xMapper;
1155 :
1156 740 : switch( nFamily )
1157 : {
1158 : case XML_STYLE_FAMILY_SD_DRAWINGPAGE_ID:
1159 : {
1160 31 : if(!xPresImpPropMapper.is())
1161 : {
1162 4 : UniReference< XMLShapeImportHelper > aImpHelper = ((SvXMLImport&)GetImport()).GetShapeImport();
1163 : ((SdXMLStylesContext*)this)->xPresImpPropMapper =
1164 4 : aImpHelper->GetPresPagePropsMapper();
1165 : }
1166 31 : xMapper = xPresImpPropMapper;
1167 31 : break;
1168 : }
1169 :
1170 : case XML_STYLE_FAMILY_TABLE_COLUMN:
1171 : case XML_STYLE_FAMILY_TABLE_ROW:
1172 : case XML_STYLE_FAMILY_TABLE_CELL:
1173 : {
1174 64 : const rtl::Reference< XMLTableImport >& xTableImport( const_cast< SvXMLImport& >( GetImport() ).GetShapeImport()->GetShapeTableImport() );
1175 :
1176 64 : switch( nFamily )
1177 : {
1178 14 : case XML_STYLE_FAMILY_TABLE_COLUMN: xMapper = xTableImport->GetColumnImportPropertySetMapper().get(); break;
1179 14 : case XML_STYLE_FAMILY_TABLE_ROW: xMapper = xTableImport->GetRowImportPropertySetMapper().get(); break;
1180 36 : case XML_STYLE_FAMILY_TABLE_CELL: xMapper = xTableImport->GetCellImportPropertySetMapper().get(); break;
1181 : }
1182 64 : break;
1183 : }
1184 : }
1185 :
1186 : // call base class
1187 740 : if( !xMapper.is() )
1188 645 : xMapper = SvXMLStylesContext::GetImportPropertyMapper(nFamily);
1189 740 : return xMapper;
1190 : }
1191 :
1192 : //////////////////////////////////////////////////////////////////////////////
1193 : // Process all style and object info
1194 : //
1195 6 : void SdXMLStylesContext::EndElement()
1196 : {
1197 6 : if(mbIsAutoStyle)
1198 : {
1199 : // AutoStyles for text import
1200 4 : GetImport().GetTextImport()->SetAutoStyles( this );
1201 :
1202 : // AutoStyles for chart
1203 4 : GetImport().GetChartImport()->SetAutoStylesContext( this );
1204 :
1205 : // AutoStyles for forms
1206 4 : GetImport().GetFormImport()->setAutoStyleContext( this );
1207 :
1208 : // associate AutoStyles with styles in preparation to setting Styles on shapes
1209 90 : for(sal_uInt32 a(0L); a < GetStyleCount(); a++)
1210 : {
1211 86 : const SvXMLStyleContext* pStyle = GetStyle(a);
1212 86 : if(pStyle && pStyle->ISA(XMLShapeStyleContext))
1213 : {
1214 46 : XMLShapeStyleContext* pDocStyle = (XMLShapeStyleContext*)pStyle;
1215 :
1216 46 : SvXMLStylesContext* pStylesContext = GetSdImport().GetShapeImport()->GetStylesContext();
1217 46 : if( pStylesContext )
1218 : {
1219 5 : pStyle = pStylesContext->FindStyleChildContext(pStyle->GetFamily(), pStyle->GetParentName());
1220 :
1221 5 : if(pStyle && pStyle->ISA(XMLShapeStyleContext))
1222 : {
1223 5 : XMLShapeStyleContext* pParentStyle = (XMLShapeStyleContext*)pStyle;
1224 5 : if(pParentStyle->GetStyle().is())
1225 : {
1226 2 : pDocStyle->SetStyle(pParentStyle->GetStyle());
1227 : }
1228 : }
1229 : }
1230 : }
1231 : }
1232 :
1233 4 : FinishStyles( false );
1234 : }
1235 : else
1236 : {
1237 : // Process styles list
1238 2 : ImpSetGraphicStyles();
1239 2 : ImpSetCellStyles();
1240 2 : GetImport().GetShapeImport()->GetShapeTableImport()->finishStyles();
1241 :
1242 : // put style infos in the info set for other components ( content import f.e. )
1243 2 : uno::Reference< beans::XPropertySet > xInfoSet( GetImport().getImportInfo() );
1244 2 : if( xInfoSet.is() )
1245 : {
1246 2 : uno::Reference< beans::XPropertySetInfo > xInfoSetInfo( xInfoSet->getPropertySetInfo() );
1247 :
1248 2 : if( xInfoSetInfo->hasPropertyByName( OUString( RTL_CONSTASCII_USTRINGPARAM( "PageLayouts" ) ) ) )
1249 2 : xInfoSet->setPropertyValue( OUString( RTL_CONSTASCII_USTRINGPARAM( "PageLayouts" ) ), uno::makeAny( getPageLayouts() ) );
1250 2 : }
1251 :
1252 : }
1253 6 : }
1254 :
1255 : //////////////////////////////////////////////////////////////////////////////
1256 : // set master-page styles (all with family="presentation" and a special
1257 : // prefix) on given master-page.
1258 : //
1259 2 : void SdXMLStylesContext::SetMasterPageStyles(SdXMLMasterPageContext& rMaster) const
1260 : {
1261 : const uno::Reference<container::XNameAccess>& rStyleFamilies =
1262 2 : GetSdImport().GetLocalDocStyleFamilies();
1263 :
1264 2 : if (!rStyleFamilies.is())
1265 0 : return;
1266 :
1267 2 : if (!rStyleFamilies->hasByName(rMaster.GetDisplayName()))
1268 0 : return;
1269 :
1270 : try
1271 : {
1272 2 : uno::Reference< container::XNameAccess > xMasterPageStyles( rStyleFamilies->getByName(rMaster.GetDisplayName()), UNO_QUERY_THROW );
1273 2 : rtl::OUString sPrefix(rMaster.GetDisplayName());
1274 2 : sPrefix += rtl::OUString(static_cast<sal_Unicode>('-'));
1275 2 : ImpSetGraphicStyles(xMasterPageStyles, XML_STYLE_FAMILY_SD_PRESENTATION_ID, sPrefix);
1276 : }
1277 0 : catch (const uno::Exception&)
1278 : {
1279 : OSL_FAIL( "xmloff::SdXMLStylesContext::SetMasterPageStyles(), exception caught!" );
1280 : }
1281 : }
1282 :
1283 : //////////////////////////////////////////////////////////////////////////////
1284 : // Process styles list:
1285 : // set graphic styles (all with family="graphics"). Remember xStyle at list element.
1286 : //
1287 2 : void SdXMLStylesContext::ImpSetGraphicStyles() const
1288 : {
1289 2 : if(GetSdImport().GetLocalDocStyleFamilies().is()) try
1290 : {
1291 2 : const OUString sGraphicStyleName(OUString(RTL_CONSTASCII_USTRINGPARAM("graphics")));
1292 2 : uno::Reference< container::XNameAccess > xGraphicPageStyles( GetSdImport().GetLocalDocStyleFamilies()->getByName(sGraphicStyleName), uno::UNO_QUERY_THROW );
1293 :
1294 2 : ImpSetGraphicStyles(xGraphicPageStyles, XML_STYLE_FAMILY_SD_GRAPHICS_ID, rtl::OUString());
1295 : }
1296 0 : catch( uno::Exception& )
1297 : {
1298 : OSL_FAIL( "xmloff::SdXMLStylesContext::ImpSetGraphicStyles(), exception caught!" );
1299 : }
1300 2 : }
1301 :
1302 2 : void SdXMLStylesContext::ImpSetCellStyles() const
1303 : {
1304 2 : if(GetSdImport().GetLocalDocStyleFamilies().is()) try
1305 : {
1306 2 : const OUString sCellStyleName(OUString(RTL_CONSTASCII_USTRINGPARAM("cell")));
1307 2 : uno::Reference< container::XNameAccess > xGraphicPageStyles( GetSdImport().GetLocalDocStyleFamilies()->getByName(sCellStyleName), uno::UNO_QUERY_THROW );
1308 :
1309 2 : ImpSetGraphicStyles(xGraphicPageStyles, XML_STYLE_FAMILY_TABLE_CELL, rtl::OUString());
1310 : }
1311 0 : catch( uno::Exception& )
1312 : {
1313 : OSL_FAIL( "xmloff::SdXMLStylesContext::ImpSetCellStyles(), exception caught!" );
1314 : }
1315 2 : }
1316 :
1317 : //////////////////////////////////////////////////////////////////////////////
1318 : // help function used by ImpSetGraphicStyles() and ImpSetMasterPageStyles()
1319 : //
1320 6 : void SdXMLStylesContext::ImpSetGraphicStyles( uno::Reference< container::XNameAccess >& xPageStyles, sal_uInt16 nFamily, const rtl::OUString& rPrefix) const
1321 : {
1322 6 : sal_Int32 nPrefLen(rPrefix.getLength());
1323 :
1324 : sal_uInt32 a;
1325 :
1326 : // set defaults
1327 168 : for( a = 0; a < GetStyleCount(); a++)
1328 : {
1329 162 : const SvXMLStyleContext* pStyle = GetStyle(a);
1330 :
1331 162 : if(nFamily == pStyle->GetFamily() && pStyle->IsDefaultStyle())
1332 : {
1333 2 : ((SvXMLStyleContext*)pStyle)->SetDefaults();
1334 : }
1335 : }
1336 :
1337 : // create all styles and set properties
1338 168 : for( a = 0; a < GetStyleCount(); a++)
1339 : {
1340 : try
1341 : {
1342 162 : const SvXMLStyleContext* pStyle = GetStyle(a);
1343 162 : if(nFamily == pStyle->GetFamily() && !pStyle->IsDefaultStyle())
1344 : {
1345 48 : OUString aStyleName(pStyle->GetDisplayName());
1346 48 : if( nPrefLen )
1347 : {
1348 14 : sal_Int32 nStylePrefLen = aStyleName.lastIndexOf( sal_Unicode('-') ) + 1;
1349 14 : if( (nPrefLen != nStylePrefLen) || (aStyleName.compareTo( rPrefix, nPrefLen ) != 0) )
1350 0 : continue;
1351 :
1352 14 : aStyleName = aStyleName.copy( nPrefLen );
1353 : }
1354 :
1355 48 : uno::Reference< style::XStyle > xStyle;
1356 48 : if(xPageStyles->hasByName(aStyleName))
1357 : {
1358 48 : xPageStyles->getByName(aStyleName) >>= xStyle;
1359 :
1360 : // set properties of existing styles to default
1361 48 : uno::Reference< beans::XPropertySet > xPropSet( xStyle, uno::UNO_QUERY );
1362 48 : uno::Reference< beans::XPropertySetInfo > xPropSetInfo;
1363 48 : if( xPropSet.is() )
1364 48 : xPropSetInfo = xPropSet->getPropertySetInfo();
1365 :
1366 48 : uno::Reference< beans::XPropertyState > xPropState( xStyle, uno::UNO_QUERY );
1367 :
1368 48 : if( xPropState.is() )
1369 : {
1370 48 : UniReference < XMLPropertySetMapper > xPrMap;
1371 48 : UniReference < SvXMLImportPropertyMapper > xImpPrMap = GetImportPropertyMapper( nFamily );
1372 : DBG_ASSERT( xImpPrMap.is(), "There is the import prop mapper" );
1373 48 : if( xImpPrMap.is() )
1374 48 : xPrMap = xImpPrMap->getPropertySetMapper();
1375 48 : if( xPrMap.is() )
1376 : {
1377 48 : const sal_Int32 nCount = xPrMap->GetEntryCount();
1378 21800 : for( sal_Int32 i = 0; i < nCount; i++ )
1379 : {
1380 21752 : const OUString& rName = xPrMap->GetEntryAPIName( i );
1381 21752 : if( xPropSetInfo->hasPropertyByName( rName ) && beans::PropertyState_DIRECT_VALUE == xPropState->getPropertyState( rName ) )
1382 : {
1383 396 : xPropState->setPropertyToDefault( rName );
1384 : }
1385 : }
1386 48 : }
1387 48 : }
1388 : }
1389 : else
1390 : {
1391 : // graphics style does not exist, create and add it
1392 0 : uno::Reference< lang::XSingleServiceFactory > xServiceFact(xPageStyles, uno::UNO_QUERY);
1393 0 : if(xServiceFact.is())
1394 : {
1395 0 : uno::Reference< style::XStyle > xNewStyle( xServiceFact->createInstance(), uno::UNO_QUERY);
1396 :
1397 0 : if(xNewStyle.is())
1398 : {
1399 : // remember style
1400 0 : xStyle = xNewStyle;
1401 :
1402 : // add new style to graphics style pool
1403 0 : uno::Reference< container::XNameContainer > xInsertContainer(xPageStyles, uno::UNO_QUERY);
1404 0 : if(xInsertContainer.is())
1405 0 : xInsertContainer->insertByName(aStyleName, uno::Any( xStyle ) );
1406 0 : }
1407 0 : }
1408 : }
1409 :
1410 48 : if(xStyle.is())
1411 : {
1412 : // set properties at style
1413 48 : XMLPropStyleContext* pPropStyle = dynamic_cast< XMLPropStyleContext* >( const_cast< SvXMLStyleContext* >( pStyle ) );
1414 48 : uno::Reference< beans::XPropertySet > xPropSet(xStyle, uno::UNO_QUERY);
1415 :
1416 48 : if(xPropSet.is() && pPropStyle)
1417 : {
1418 48 : pPropStyle->FillPropertySet(xPropSet);
1419 48 : pPropStyle->SetStyle(xStyle);
1420 48 : }
1421 48 : }
1422 : }
1423 : }
1424 0 : catch(const Exception& e)
1425 : {
1426 0 : uno::Sequence<OUString> aSeq(0);
1427 0 : const_cast<SdXMLImport*>(&GetSdImport())->SetError( XMLERROR_FLAG_WARNING | XMLERROR_API, aSeq, e.Message, NULL );
1428 : }
1429 : }
1430 :
1431 : // now set parents for all styles (when necessary)
1432 168 : for(a = 0L; a < GetStyleCount(); a++)
1433 : {
1434 162 : const SvXMLStyleContext* pStyle = GetStyle(a);
1435 :
1436 162 : if(pStyle && !pStyle->GetDisplayName().isEmpty() && (nFamily == pStyle->GetFamily())) try
1437 : {
1438 48 : OUString aStyleName(pStyle->GetDisplayName());
1439 48 : if( nPrefLen )
1440 : {
1441 14 : sal_Int32 nStylePrefLen = aStyleName.lastIndexOf( sal_Unicode('-') ) + 1;
1442 14 : if( (nPrefLen != nStylePrefLen) || (aStyleName.compareTo( rPrefix, nPrefLen ) != 0) )
1443 0 : continue;
1444 :
1445 14 : aStyleName = aStyleName.copy( nPrefLen );
1446 : }
1447 :
1448 48 : uno::Reference< style::XStyle > xStyle( xPageStyles->getByName(aStyleName), UNO_QUERY );
1449 48 : if(xStyle.is())
1450 : {
1451 : // set parent style name
1452 48 : ::rtl::OUString sParentStyleDisplayName( const_cast< SvXMLImport& >( GetImport() ).GetStyleDisplayName( pStyle->GetFamily(), pStyle->GetParentName() ) );
1453 48 : if( nPrefLen )
1454 : {
1455 14 : sal_Int32 nStylePrefLen = sParentStyleDisplayName.lastIndexOf( sal_Unicode('-') ) + 1;
1456 14 : if( (nPrefLen != nStylePrefLen) || (sParentStyleDisplayName.compareTo( rPrefix, nPrefLen ) != 0) )
1457 6 : continue;
1458 :
1459 8 : sParentStyleDisplayName = sParentStyleDisplayName.copy( nPrefLen );
1460 : }
1461 42 : xStyle->setParentStyle( sParentStyleDisplayName );
1462 48 : }
1463 : }
1464 0 : catch( const Exception& e )
1465 : {
1466 0 : uno::Sequence<OUString> aSeq(0);
1467 0 : const_cast<SdXMLImport*>(&GetSdImport())->SetError( XMLERROR_FLAG_WARNING | XMLERROR_API, aSeq, e.Message, NULL );
1468 : }
1469 : }
1470 6 : }
1471 :
1472 : ////////////////////////////////////////////////////////////////////////////////
1473 : // helper function to create the uno component that hold the mappings from
1474 : // xml auto layout name to internal autolayout id
1475 :
1476 2 : uno::Reference< container::XNameAccess > SdXMLStylesContext::getPageLayouts() const
1477 : {
1478 2 : uno::Reference< container::XNameContainer > xLayouts( comphelper::NameContainer_createInstance( ::getCppuType((const sal_Int32*)0)) );
1479 :
1480 56 : for(sal_uInt32 a(0L); a < GetStyleCount(); a++)
1481 : {
1482 54 : const SvXMLStyleContext* pStyle = GetStyle(a);
1483 54 : if(pStyle && pStyle->ISA(SdXMLPresentationPageLayoutContext))
1484 : {
1485 6 : xLayouts->insertByName( pStyle->GetName(), uno::makeAny(
1486 6 : (sal_Int32)((SdXMLPresentationPageLayoutContext*)pStyle)->GetTypeId() ) );
1487 : }
1488 : }
1489 :
1490 2 : return uno::Reference< container::XNameAccess >::query( xLayouts );
1491 : }
1492 :
1493 : ////////////////////////////////////////////////////////////////////////////////
1494 : ////////////////////////////////////////////////////////////////////////////////
1495 : //
1496 0 : TYPEINIT1( SdXMLMasterStylesContext, SvXMLImportContext );
1497 :
1498 2 : SdXMLMasterStylesContext::SdXMLMasterStylesContext(
1499 : SdXMLImport& rImport,
1500 : sal_uInt16 nPrfx,
1501 : const rtl::OUString& rLName)
1502 2 : : SvXMLImportContext( rImport, nPrfx, rLName)
1503 : {
1504 2 : }
1505 :
1506 6 : SdXMLMasterStylesContext::~SdXMLMasterStylesContext()
1507 : {
1508 6 : for ( size_t i = maMasterPageList.size(); i > 0; )
1509 2 : maMasterPageList[ --i ]->ReleaseRef();
1510 2 : maMasterPageList.clear();
1511 4 : }
1512 :
1513 5 : SvXMLImportContext* SdXMLMasterStylesContext::CreateChildContext(
1514 : sal_uInt16 nPrefix,
1515 : const rtl::OUString& rLocalName,
1516 : const uno::Reference< xml::sax::XAttributeList >& xAttrList)
1517 : {
1518 5 : SvXMLImportContext* pContext = 0;
1519 :
1520 8 : if(nPrefix == XML_NAMESPACE_STYLE
1521 3 : && IsXMLToken( rLocalName, XML_MASTER_PAGE ) )
1522 : {
1523 : // style:masterpage inside office:styles context
1524 2 : uno::Reference< drawing::XDrawPage > xNewMasterPage;
1525 2 : uno::Reference< drawing::XDrawPages > xMasterPages(GetSdImport().GetLocalMasterPages(), uno::UNO_QUERY);
1526 :
1527 2 : if( xMasterPages.is() )
1528 : {
1529 2 : if(GetSdImport().GetNewMasterPageCount() + 1 > xMasterPages->getCount())
1530 : {
1531 : // new page, create and insert
1532 0 : xNewMasterPage = xMasterPages->insertNewByIndex(xMasterPages->getCount());
1533 : }
1534 : else
1535 : {
1536 : // existing page, use it
1537 2 : xMasterPages->getByIndex(GetSdImport().GetNewMasterPageCount()) >>= xNewMasterPage;
1538 : }
1539 :
1540 : // increment global import page counter
1541 2 : GetSdImport().IncrementNewMasterPageCount();
1542 :
1543 2 : if(xNewMasterPage.is())
1544 : {
1545 2 : uno::Reference< drawing::XShapes > xNewShapes(xNewMasterPage, uno::UNO_QUERY);
1546 2 : if(xNewShapes.is() && GetSdImport().GetShapeImport()->GetStylesContext())
1547 : {
1548 : pContext = new SdXMLMasterPageContext(GetSdImport(),
1549 2 : nPrefix, rLocalName, xAttrList, xNewShapes);
1550 :
1551 2 : if(pContext)
1552 : {
1553 2 : pContext->AddRef();
1554 2 : maMasterPageList.push_back( (SdXMLMasterPageContext*)pContext );
1555 : }
1556 2 : }
1557 : }
1558 2 : }
1559 : }
1560 4 : else if(nPrefix == XML_NAMESPACE_STYLE
1561 1 : && IsXMLToken( rLocalName, XML_HANDOUT_MASTER ) )
1562 : {
1563 1 : uno::Reference< presentation::XHandoutMasterSupplier > xHandoutSupp( GetSdImport().GetModel(), uno::UNO_QUERY );
1564 1 : if( xHandoutSupp.is() )
1565 : {
1566 1 : uno::Reference< drawing::XShapes > xHandoutPage( xHandoutSupp->getHandoutMasterPage(), uno::UNO_QUERY );
1567 1 : if(xHandoutPage.is() && GetSdImport().GetShapeImport()->GetStylesContext())
1568 : {
1569 : pContext = new SdXMLMasterPageContext(GetSdImport(),
1570 1 : nPrefix, rLocalName, xAttrList, xHandoutPage);
1571 1 : }
1572 1 : }
1573 : }
1574 2 : else if( (nPrefix == XML_NAMESPACE_DRAW )&& IsXMLToken( rLocalName, XML_LAYER_SET ) )
1575 : {
1576 2 : pContext = new SdXMLLayerSetContext( GetImport(), nPrefix, rLocalName, xAttrList );
1577 : }
1578 :
1579 : // call base class
1580 5 : if(!pContext)
1581 0 : pContext = SvXMLImportContext::CreateChildContext(nPrefix, rLocalName, xAttrList);
1582 :
1583 5 : return pContext;
1584 : }
1585 :
1586 : ///////////////////////////////////////////////////////////////////////
1587 :
1588 0 : SdXMLHeaderFooterDeclContext::SdXMLHeaderFooterDeclContext( SvXMLImport& rImport, sal_uInt16 nPrfx,
1589 : const ::rtl::OUString& rLName,
1590 : const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList )
1591 0 : : SvXMLStyleContext( rImport, nPrfx, rLName, xAttrList )
1592 : {
1593 0 : const sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
1594 0 : for(sal_Int16 i=0; i < nAttrCount; i++)
1595 : {
1596 0 : OUString aLocalName;
1597 0 : const OUString aValue( xAttrList->getValueByIndex(i) );
1598 0 : sal_uInt16 nPrefix = GetImport().GetNamespaceMap().GetKeyByAttrName(xAttrList->getNameByIndex(i), &aLocalName);
1599 :
1600 0 : if( nPrefix == XML_NAMESPACE_PRESENTATION )
1601 : {
1602 0 : if( IsXMLToken( aLocalName, XML_NAME ) )
1603 : {
1604 0 : maStrName = aValue;
1605 : }
1606 0 : else if( IsXMLToken( aLocalName, XML_SOURCE ) )
1607 : {
1608 0 : mbFixed = IsXMLToken( aValue, XML_FIXED );
1609 : }
1610 : }
1611 0 : else if( nPrefix == XML_NAMESPACE_STYLE )
1612 : {
1613 0 : if( IsXMLToken( aLocalName, XML_DATA_STYLE_NAME ) )
1614 : {
1615 0 : maStrDateTimeFormat = aValue;
1616 : }
1617 : }
1618 0 : }
1619 0 : }
1620 :
1621 0 : sal_Bool SdXMLHeaderFooterDeclContext::IsTransient() const
1622 : {
1623 0 : return sal_True;
1624 : }
1625 :
1626 0 : void SdXMLHeaderFooterDeclContext::EndElement()
1627 : {
1628 0 : SdXMLImport& rImport = *dynamic_cast< SdXMLImport* >( &GetImport() );
1629 0 : if( IsXMLToken( GetLocalName(), XML_HEADER_DECL ) )
1630 : {
1631 0 : rImport.AddHeaderDecl( maStrName, maStrText );
1632 : }
1633 0 : else if( IsXMLToken( GetLocalName(), XML_FOOTER_DECL ) )
1634 : {
1635 0 : rImport.AddFooterDecl( maStrName, maStrText );
1636 : }
1637 0 : else if( IsXMLToken( GetLocalName(), XML_DATE_TIME_DECL ) )
1638 : {
1639 0 : rImport.AddDateTimeDecl( maStrName, maStrText, mbFixed, maStrDateTimeFormat );
1640 : }
1641 0 : }
1642 :
1643 0 : void SdXMLHeaderFooterDeclContext::Characters( const ::rtl::OUString& rChars )
1644 : {
1645 0 : maStrText += rChars;
1646 0 : }
1647 :
1648 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|