xref: /aoo41x/main/xmloff/source/draw/sdxmlimp.cxx (revision 63bba73c)
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