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