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