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