xref: /AOO41X/main/xmloff/source/text/txtimp.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_xmloff.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #include <vector>
32*cdf0e10cSrcweir 
33*cdf0e10cSrcweir #include <boost/scoped_array.hpp>
34*cdf0e10cSrcweir #include <boost/tuple/tuple.hpp>
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir #include <tools/solar.h>
37*cdf0e10cSrcweir #include <tools/debug.hxx>
38*cdf0e10cSrcweir #ifndef _SVSTDARR_STRINGSDTOR_DECL
39*cdf0e10cSrcweir #define _SVSTDARR_STRINGSDTOR
40*cdf0e10cSrcweir #include <svl/svstdarr.hxx>
41*cdf0e10cSrcweir #endif
42*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp>
43*cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp>
44*cdf0e10cSrcweir #include <com/sun/star/container/XEnumerationAccess.hpp>
45*cdf0e10cSrcweir #include <com/sun/star/container/XNameContainer.hpp>
46*cdf0e10cSrcweir #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
47*cdf0e10cSrcweir #include <com/sun/star/text/XTextCursor.hpp>
48*cdf0e10cSrcweir #include <com/sun/star/text/XChapterNumberingSupplier.hpp>
49*cdf0e10cSrcweir #include <com/sun/star/text/XTextFramesSupplier.hpp>
50*cdf0e10cSrcweir #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
51*cdf0e10cSrcweir #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
52*cdf0e10cSrcweir #include <com/sun/star/text/TextContentAnchorType.hpp>
53*cdf0e10cSrcweir #include <com/sun/star/text/XTextFrame.hpp>
54*cdf0e10cSrcweir #include <com/sun/star/text/XFormField.hpp>
55*cdf0e10cSrcweir #include <com/sun/star/drawing/XShapes.hpp>
56*cdf0e10cSrcweir #include <com/sun/star/util/DateTime.hpp>
57*cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
58*cdf0e10cSrcweir #include <com/sun/star/ucb/XAnyCompareFactory.hpp>
59*cdf0e10cSrcweir #include <com/sun/star/container/XNamed.hpp>
60*cdf0e10cSrcweir #include <xmloff/xmltoken.hxx>
61*cdf0e10cSrcweir #include "xmloff/xmlnmspe.hxx"
62*cdf0e10cSrcweir #include <xmloff/txtstyli.hxx>
63*cdf0e10cSrcweir #include <xmloff/families.hxx>
64*cdf0e10cSrcweir #include <xmloff/xmlnumfi.hxx>
65*cdf0e10cSrcweir #include <xmloff/xmlnumi.hxx>
66*cdf0e10cSrcweir #include <xmloff/xmlictxt.hxx>
67*cdf0e10cSrcweir #include <xmloff/xmlimppr.hxx>
68*cdf0e10cSrcweir 
69*cdf0e10cSrcweir #include "txtparai.hxx"
70*cdf0e10cSrcweir #include <xmloff/txtimp.hxx>
71*cdf0e10cSrcweir #include <xmloff/txtprmap.hxx>
72*cdf0e10cSrcweir #include "xmloff/txtimppr.hxx"
73*cdf0e10cSrcweir #include <xmloff/xmlimp.hxx>
74*cdf0e10cSrcweir #include "txtvfldi.hxx"
75*cdf0e10cSrcweir #include "xmloff/i18nmap.hxx"
76*cdf0e10cSrcweir #include "XMLTextListItemContext.hxx"
77*cdf0e10cSrcweir #include "XMLTextListBlockContext.hxx"
78*cdf0e10cSrcweir #include "XMLTextFrameContext.hxx"
79*cdf0e10cSrcweir #include "XMLPropertyBackpatcher.hxx"
80*cdf0e10cSrcweir #include "XMLTextFrameHyperlinkContext.hxx"
81*cdf0e10cSrcweir #include "XMLSectionImportContext.hxx"
82*cdf0e10cSrcweir #include "XMLIndexTOCContext.hxx"
83*cdf0e10cSrcweir #include <xmloff/XMLFontStylesContext.hxx>
84*cdf0e10cSrcweir #include <xmloff/ProgressBarHelper.hxx>
85*cdf0e10cSrcweir #include <xmloff/nmspmap.hxx>
86*cdf0e10cSrcweir #include <xmloff/XMLEventsImportContext.hxx>
87*cdf0e10cSrcweir #include "XMLTrackedChangesImportContext.hxx"
88*cdf0e10cSrcweir #include "XMLChangeImportContext.hxx"
89*cdf0e10cSrcweir #include "XMLAutoMarkFileContext.hxx"
90*cdf0e10cSrcweir 
91*cdf0e10cSrcweir #include "XMLCalculationSettingsContext.hxx"
92*cdf0e10cSrcweir #include <xmloff/formsimp.hxx>
93*cdf0e10cSrcweir #include "XMLNumberStylesImport.hxx"
94*cdf0e10cSrcweir // --> OD 2006-10-12 #i69629#
95*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertyState.hpp>
96*cdf0e10cSrcweir // <--
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir // --> OD 2008-04-25 #refactorlists#
99*cdf0e10cSrcweir #include <txtlists.hxx>
100*cdf0e10cSrcweir // <--
101*cdf0e10cSrcweir #include <xmloff/odffields.hxx>
102*cdf0e10cSrcweir #include <comphelper/stlunosequence.hxx>
103*cdf0e10cSrcweir 
104*cdf0e10cSrcweir using ::rtl::OUString;
105*cdf0e10cSrcweir using ::rtl::OUStringBuffer;
106*cdf0e10cSrcweir using ::com::sun::star::ucb::XAnyCompare;
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir using namespace ::std;
109*cdf0e10cSrcweir using namespace ::com::sun::star;
110*cdf0e10cSrcweir using namespace ::com::sun::star::uno;
111*cdf0e10cSrcweir using namespace ::com::sun::star::beans;
112*cdf0e10cSrcweir using namespace ::com::sun::star::text;
113*cdf0e10cSrcweir using namespace ::com::sun::star::frame;
114*cdf0e10cSrcweir using namespace ::com::sun::star::style;
115*cdf0e10cSrcweir using namespace ::com::sun::star::container;
116*cdf0e10cSrcweir using namespace ::com::sun::star::drawing;
117*cdf0e10cSrcweir using namespace ::com::sun::star::xml::sax;
118*cdf0e10cSrcweir using namespace ::com::sun::star::lang;
119*cdf0e10cSrcweir using namespace ::xmloff::token;
120*cdf0e10cSrcweir using ::com::sun::star::util::DateTime;
121*cdf0e10cSrcweir using namespace ::com::sun::star::ucb;
122*cdf0e10cSrcweir using namespace ::com::sun::star;
123*cdf0e10cSrcweir using ::comphelper::UStringLess;
124*cdf0e10cSrcweir 
125*cdf0e10cSrcweir 
126*cdf0e10cSrcweir 
127*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextElemTokenMap[] =
128*cdf0e10cSrcweir {
129*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_P, 				XML_TOK_TEXT_P				},
130*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_H, 				XML_TOK_TEXT_H				},
131*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_LIST, 			XML_TOK_TEXT_LIST			},
132*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_FRAME, 			XML_TOK_TEXT_FRAME_PAGE 	},
133*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_A, 				XML_TOK_DRAW_A_PAGE },
134*cdf0e10cSrcweir 	{ XML_NAMESPACE_TABLE,XML_TABLE,			XML_TOK_TABLE_TABLE 		},
135*cdf0e10cSrcweir //	{ XML_NAMESPACE_TABLE,XML_SUB_TABLE,		XML_TOK_TABLE_SUBTABLE 		},
136*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_VARIABLE_DECLS,	XML_TOK_TEXT_VARFIELD_DECLS },
137*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_USER_FIELD_DECLS, XML_TOK_TEXT_USERFIELD_DECLS },
138*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SEQUENCE_DECLS,	XML_TOK_TEXT_SEQUENCE_DECLS },
139*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DDE_CONNECTION_DECLS, XML_TOK_TEXT_DDE_DECLS },
140*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SECTION,			XML_TOK_TEXT_SECTION },
141*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TABLE_OF_CONTENT, XML_TOK_TEXT_TOC },
142*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_OBJECT_INDEX, 	XML_TOK_TEXT_OBJECT_INDEX },
143*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TABLE_INDEX,		XML_TOK_TEXT_TABLE_INDEX },
144*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_ILLUSTRATION_INDEX, XML_TOK_TEXT_ILLUSTRATION_INDEX },
145*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_USER_INDEX,		XML_TOK_TEXT_USER_INDEX },
146*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX, XML_TOK_TEXT_ALPHABETICAL_INDEX },
147*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY,     XML_TOK_TEXT_BIBLIOGRAPHY_INDEX },
148*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_INDEX_TITLE,		XML_TOK_TEXT_INDEX_TITLE },
149*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TRACKED_CHANGES,  XML_TOK_TEXT_TRACKED_CHANGES },
150*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CHANGE_START,	    XML_TOK_TEXT_CHANGE_START },
151*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CHANGE_END, 		XML_TOK_TEXT_CHANGE_END },
152*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CHANGE, 			XML_TOK_TEXT_CHANGE },
153*cdf0e10cSrcweir 	{ XML_NAMESPACE_OFFICE, XML_FORMS,			XML_TOK_TEXT_FORMS },
154*cdf0e10cSrcweir 	{ XML_NAMESPACE_TABLE, XML_CALCULATION_SETTINGS,	XML_TOK_TEXT_CALCULATION_SETTINGS },
155*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_AUTO_MARK_FILE, XML_TOK_TEXT_AUTOMARK },
156*cdf0e10cSrcweir 	// --> FLR #i52127#
157*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_NUMBERED_PARAGRAPH, XML_TOK_TEXT_NUMBERED_PARAGRAPH	},
158*cdf0e10cSrcweir 	// <--
159*cdf0e10cSrcweir 
160*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
161*cdf0e10cSrcweir };
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextPElemTokenMap[] =
164*cdf0e10cSrcweir {
165*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SPAN, XML_TOK_TEXT_SPAN },
166*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TAB, XML_TOK_TEXT_TAB_STOP },
167*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_LINE_BREAK, XML_TOK_TEXT_LINE_BREAK },
168*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SOFT_PAGE_BREAK, XML_TOK_TEXT_SOFT_PAGE_BREAK },
169*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_S, XML_TOK_TEXT_S },
170*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_A, XML_TOK_TEXT_HYPERLINK },
171*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_RUBY, XML_TOK_TEXT_RUBY },
172*cdf0e10cSrcweir 
173*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_NOTE, XML_TOK_TEXT_NOTE },
174*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_BOOKMARK, XML_TOK_TEXT_BOOKMARK },
175*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_BOOKMARK_START, XML_TOK_TEXT_BOOKMARK_START },
176*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_BOOKMARK_END, XML_TOK_TEXT_BOOKMARK_END },
177*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_REFERENCE_MARK, XML_TOK_TEXT_REFERENCE },
178*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_REFERENCE_MARK_START,
179*cdf0e10cSrcweir 	  XML_TOK_TEXT_REFERENCE_START },
180*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_REFERENCE_MARK_END,
181*cdf0e10cSrcweir 	  XML_TOK_TEXT_REFERENCE_END },
182*cdf0e10cSrcweir 
183*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_FRAME, XML_TOK_TEXT_FRAME },
184*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_A, 				XML_TOK_DRAW_A },
185*cdf0e10cSrcweir 
186*cdf0e10cSrcweir 	// index marks
187*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TOC_MARK, XML_TOK_TEXT_TOC_MARK },
188*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TOC_MARK_START, XML_TOK_TEXT_TOC_MARK_START },
189*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TOC_MARK_END, XML_TOK_TEXT_TOC_MARK_END },
190*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK, XML_TOK_TEXT_USER_INDEX_MARK },
191*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK_START,
192*cdf0e10cSrcweir 	  XML_TOK_TEXT_USER_INDEX_MARK_START },
193*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK_END,
194*cdf0e10cSrcweir 	  XML_TOK_TEXT_USER_INDEX_MARK_END },
195*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK,
196*cdf0e10cSrcweir 	  XML_TOK_TEXT_ALPHA_INDEX_MARK },
197*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK_START,
198*cdf0e10cSrcweir 	  XML_TOK_TEXT_ALPHA_INDEX_MARK_START },
199*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK_END,
200*cdf0e10cSrcweir 	  XML_TOK_TEXT_ALPHA_INDEX_MARK_END },
201*cdf0e10cSrcweir 
202*cdf0e10cSrcweir 	// sender fields
203*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_FIRSTNAME,XML_TOK_TEXT_SENDER_FIRSTNAME},
204*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_LASTNAME, XML_TOK_TEXT_SENDER_LASTNAME },
205*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_INITIALS, XML_TOK_TEXT_SENDER_INITIALS },
206*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_TITLE, XML_TOK_TEXT_SENDER_TITLE },
207*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_POSITION, XML_TOK_TEXT_SENDER_POSITION },
208*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_EMAIL, XML_TOK_TEXT_SENDER_EMAIL },
209*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_PHONE_PRIVATE,
210*cdf0e10cSrcweir 	  XML_TOK_TEXT_SENDER_PHONE_PRIVATE },
211*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_FAX, XML_TOK_TEXT_SENDER_FAX },
212*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_COMPANY, XML_TOK_TEXT_SENDER_COMPANY },
213*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_PHONE_WORK,
214*cdf0e10cSrcweir 	  XML_TOK_TEXT_SENDER_PHONE_WORK },
215*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_STREET, XML_TOK_TEXT_SENDER_STREET },
216*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_CITY, XML_TOK_TEXT_SENDER_CITY },
217*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_POSTAL_CODE,
218*cdf0e10cSrcweir 	  XML_TOK_TEXT_SENDER_POSTAL_CODE },
219*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_COUNTRY, XML_TOK_TEXT_SENDER_COUNTRY },
220*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SENDER_STATE_OR_PROVINCE,
221*cdf0e10cSrcweir 	  XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE },
222*cdf0e10cSrcweir 
223*cdf0e10cSrcweir 	// misc. document fields
224*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_AUTHOR_NAME, XML_TOK_TEXT_AUTHOR_NAME },
225*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_AUTHOR_INITIALS, XML_TOK_TEXT_AUTHOR_INITIALS },
226*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DATE, XML_TOK_TEXT_DATE },
227*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TIME, XML_TOK_TEXT_TIME },
228*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PAGE_NUMBER, XML_TOK_TEXT_PAGE_NUMBER },
229*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION_STRING,
230*cdf0e10cSrcweir 	  XML_TOK_TEXT_PAGE_CONTINUATION_STRING },
231*cdf0e10cSrcweir 
232*cdf0e10cSrcweir 	// variable fields
233*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_VARIABLE_SET, XML_TOK_TEXT_VARIABLE_SET },
234*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_VARIABLE_GET, XML_TOK_TEXT_VARIABLE_GET },
235*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_VARIABLE_INPUT, XML_TOK_TEXT_VARIABLE_INPUT },
236*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_USER_FIELD_GET, XML_TOK_TEXT_USER_FIELD_GET },
237*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_USER_FIELD_INPUT,XML_TOK_TEXT_USER_FIELD_INPUT},
238*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SEQUENCE, XML_TOK_TEXT_SEQUENCE },
239*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_EXPRESSION, XML_TOK_TEXT_EXPRESSION },
240*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TEXT_INPUT, XML_TOK_TEXT_TEXT_INPUT },
241*cdf0e10cSrcweir 
242*cdf0e10cSrcweir 	// database fields
243*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DATABASE_DISPLAY,
244*cdf0e10cSrcweir 	  XML_TOK_TEXT_DATABASE_DISPLAY },
245*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DATABASE_NEXT,
246*cdf0e10cSrcweir 	  XML_TOK_TEXT_DATABASE_NEXT },
247*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DATABASE_ROW_SELECT,
248*cdf0e10cSrcweir 	  XML_TOK_TEXT_DATABASE_SELECT },
249*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DATABASE_ROW_NUMBER,
250*cdf0e10cSrcweir 	  XML_TOK_TEXT_DATABASE_ROW_NUMBER },
251*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXT_DATABASE_NAME },
252*cdf0e10cSrcweir 
253*cdf0e10cSrcweir 	// docinfo fields
254*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_INITIAL_CREATOR,
255*cdf0e10cSrcweir 	  XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR },
256*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXT_DOCUMENT_DESCRIPTION},
257*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PRINTED_BY, XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR},
258*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TITLE, XML_TOK_TEXT_DOCUMENT_TITLE },
259*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SUBJECT, XML_TOK_TEXT_DOCUMENT_SUBJECT },
260*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_KEYWORDS, XML_TOK_TEXT_DOCUMENT_KEYWORDS },
261*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CREATOR, XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR },
262*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_EDITING_CYCLES,
263*cdf0e10cSrcweir 	  XML_TOK_TEXT_DOCUMENT_REVISION },
264*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CREATION_DATE,
265*cdf0e10cSrcweir 	  XML_TOK_TEXT_DOCUMENT_CREATION_DATE },
266*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CREATION_TIME,
267*cdf0e10cSrcweir 	  XML_TOK_TEXT_DOCUMENT_CREATION_TIME },
268*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PRINT_DATE, XML_TOK_TEXT_DOCUMENT_PRINT_DATE },
269*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PRINT_TIME, XML_TOK_TEXT_DOCUMENT_PRINT_TIME },
270*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_MODIFICATION_DATE,
271*cdf0e10cSrcweir 	  XML_TOK_TEXT_DOCUMENT_SAVE_DATE },
272*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_MODIFICATION_TIME,
273*cdf0e10cSrcweir 	  XML_TOK_TEXT_DOCUMENT_SAVE_TIME },
274*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_EDITING_DURATION,
275*cdf0e10cSrcweir 	  XML_TOK_TEXT_DOCUMENT_EDIT_DURATION },
276*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_USER_DEFINED,
277*cdf0e10cSrcweir 	  XML_TOK_TEXT_DOCUMENT_USER_DEFINED },
278*cdf0e10cSrcweir 
279*cdf0e10cSrcweir 	// misc fields
280*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PLACEHOLDER, XML_TOK_TEXT_PLACEHOLDER },
281*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_HIDDEN_TEXT, XML_TOK_TEXT_HIDDEN_TEXT },
282*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_HIDDEN_PARAGRAPH,
283*cdf0e10cSrcweir 	  XML_TOK_TEXT_HIDDEN_PARAGRAPH },
284*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CONDITIONAL_TEXT,
285*cdf0e10cSrcweir 	  XML_TOK_TEXT_CONDITIONAL_TEXT },
286*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_FILE_NAME, XML_TOK_TEXT_FILENAME },
287*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CHAPTER,	XML_TOK_TEXT_CHAPTER },
288*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TEMPLATE_NAME, XML_TOK_TEXT_TEMPLATENAME },
289*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PARAGRAPH_COUNT, XML_TOK_TEXT_PARAGRAPH_COUNT },
290*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_WORD_COUNT, XML_TOK_TEXT_WORD_COUNT },
291*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_TABLE_COUNT, XML_TOK_TEXT_TABLE_COUNT },
292*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CHARACTER_COUNT, XML_TOK_TEXT_CHARACTER_COUNT },
293*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_IMAGE_COUNT, XML_TOK_TEXT_IMAGE_COUNT },
294*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_OBJECT_COUNT, XML_TOK_TEXT_OBJECT_COUNT },
295*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PAGE_COUNT, XML_TOK_TEXT_PAGE_COUNT },
296*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PAGE_VARIABLE_GET, XML_TOK_TEXT_GET_PAGE_VAR },
297*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PAGE_VARIABLE_SET, XML_TOK_TEXT_SET_PAGE_VAR },
298*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_EXECUTE_MACRO, XML_TOK_TEXT_MACRO },
299*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_DDE_CONNECTION, XML_TOK_TEXT_DDE },
300*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_REFERENCE_REF, XML_TOK_TEXT_REFERENCE_REF },
301*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_BOOKMARK_REF, XML_TOK_TEXT_BOOKMARK_REF },
302*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SEQUENCE_REF, XML_TOK_TEXT_SEQUENCE_REF },
303*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_NOTE_REF, XML_TOK_TEXT_NOTE_REF },
304*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY_MARK,
305*cdf0e10cSrcweir 	  XML_TOK_TEXT_BIBLIOGRAPHY_MARK },
306*cdf0e10cSrcweir 	{ XML_NAMESPACE_OFFICE, XML_ANNOTATION, XML_TOK_TEXT_ANNOTATION },
307*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SCRIPT, XML_TOK_TEXT_SCRIPT },
308*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_TABLE_FORMULA, XML_TOK_TEXT_TABLE_FORMULA },
309*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_DROPDOWN, XML_TOK_TEXT_DROPDOWN },
310*cdf0e10cSrcweir 
311*cdf0e10cSrcweir 	// Calc fields
312*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_SHEET_NAME, XML_TOK_TEXT_SHEET_NAME },
313*cdf0e10cSrcweir 
314*cdf0e10cSrcweir 	// draw fields
315*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_MEASURE,	XML_TOK_TEXT_MEASURE },
316*cdf0e10cSrcweir 
317*cdf0e10cSrcweir     // RDF metadata
318*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_META,         XML_TOK_TEXT_META },
319*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_META_FIELD,   XML_TOK_TEXT_META_FIELD },
320*cdf0e10cSrcweir 
321*cdf0e10cSrcweir 	// redlining (aka change tracking)
322*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CHANGE_START, XML_TOK_TEXTP_CHANGE_START },
323*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CHANGE_END  , XML_TOK_TEXTP_CHANGE_END },
324*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CHANGE, XML_TOK_TEXTP_CHANGE },
325*cdf0e10cSrcweir 
326*cdf0e10cSrcweir 	{ XML_NAMESPACE_PRESENTATION, XML_HEADER, XML_TOK_DRAW_HEADER },
327*cdf0e10cSrcweir 	{ XML_NAMESPACE_PRESENTATION, XML_FOOTER, XML_TOK_DRAW_FOOTER },
328*cdf0e10cSrcweir 	{ XML_NAMESPACE_PRESENTATION, XML_DATE_TIME, XML_TOK_DRAW_DATE_TIME },
329*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION, XML_TOK_TEXT_PAGE_CONTINUATION },
330*cdf0e10cSrcweir 
331*cdf0e10cSrcweir 	{ XML_NAMESPACE_FIELD, XML_FIELDMARK, XML_TOK_TEXT_FIELDMARK },
332*cdf0e10cSrcweir 	{ XML_NAMESPACE_FIELD, XML_FIELDMARK_START, XML_TOK_TEXT_FIELDMARK_START },
333*cdf0e10cSrcweir 	{ XML_NAMESPACE_FIELD, XML_FIELDMARK_END, XML_TOK_TEXT_FIELDMARK_END },
334*cdf0e10cSrcweir 
335*cdf0e10cSrcweir 
336*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
337*cdf0e10cSrcweir };
338*cdf0e10cSrcweir 
339*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextPAttrTokenMap[] =
340*cdf0e10cSrcweir {
341*cdf0e10cSrcweir 	{ XML_NAMESPACE_XML  , XML_ID,			XML_TOK_TEXT_P_XMLID },
342*cdf0e10cSrcweir 	{ XML_NAMESPACE_XHTML, XML_ABOUT,		XML_TOK_TEXT_P_ABOUT },
343*cdf0e10cSrcweir 	{ XML_NAMESPACE_XHTML, XML_PROPERTY,	XML_TOK_TEXT_P_PROPERTY },
344*cdf0e10cSrcweir 	{ XML_NAMESPACE_XHTML, XML_CONTENT,		XML_TOK_TEXT_P_CONTENT },
345*cdf0e10cSrcweir 	{ XML_NAMESPACE_XHTML, XML_DATATYPE,	XML_TOK_TEXT_P_DATATYPE },
346*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_ID,           XML_TOK_TEXT_P_TEXTID },
347*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_STYLE_NAME,	XML_TOK_TEXT_P_STYLE_NAME },
348*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_COND_STYLE_NAME,
349*cdf0e10cSrcweir 											XML_TOK_TEXT_P_COND_STYLE_NAME },
350*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL,XML_TOK_TEXT_P_LEVEL },
351*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_IS_LIST_HEADER,XML_TOK_TEXT_P_IS_LIST_HEADER },
352*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_RESTART_NUMBERING,XML_TOK_TEXT_P_RESTART_NUMBERING },
353*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_START_VALUE,XML_TOK_TEXT_P_START_VALUE },
354*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
355*cdf0e10cSrcweir };
356*cdf0e10cSrcweir 
357*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextNumberedParagraphAttrTokenMap[] =
358*cdf0e10cSrcweir {
359*cdf0e10cSrcweir 	{ XML_NAMESPACE_XML , XML_ID,    XML_TOK_TEXT_NUMBERED_PARAGRAPH_XMLID },
360*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_LIST_ID,
361*cdf0e10cSrcweir         XML_TOK_TEXT_NUMBERED_PARAGRAPH_LIST_ID },
362*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_LEVEL, XML_TOK_TEXT_NUMBERED_PARAGRAPH_LEVEL },
363*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_STYLE_NAME,
364*cdf0e10cSrcweir         XML_TOK_TEXT_NUMBERED_PARAGRAPH_STYLE_NAME },
365*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CONTINUE_NUMBERING,
366*cdf0e10cSrcweir         XML_TOK_TEXT_NUMBERED_PARAGRAPH_CONTINUE_NUMBERING },
367*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_START_VALUE,
368*cdf0e10cSrcweir         XML_TOK_TEXT_NUMBERED_PARAGRAPH_START_VALUE },
369*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
370*cdf0e10cSrcweir };
371*cdf0e10cSrcweir 
372*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextListBlockAttrTokenMap[] =
373*cdf0e10cSrcweir {
374*cdf0e10cSrcweir 	{ XML_NAMESPACE_XML , XML_ID,			XML_TOK_TEXT_LIST_BLOCK_XMLID },
375*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_STYLE_NAME,
376*cdf0e10cSrcweir 			XML_TOK_TEXT_LIST_BLOCK_STYLE_NAME },
377*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_CONTINUE_NUMBERING,
378*cdf0e10cSrcweir 			XML_TOK_TEXT_LIST_BLOCK_CONTINUE_NUMBERING },
379*cdf0e10cSrcweir     // --> OD 2008-04-22 #refactorlists#
380*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_CONTINUE_LIST,
381*cdf0e10cSrcweir             XML_TOK_TEXT_LIST_BLOCK_CONTINUE_LIST },
382*cdf0e10cSrcweir     XML_TOKEN_MAP_END
383*cdf0e10cSrcweir };
384*cdf0e10cSrcweir 
385*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextListBlockElemTokenMap[] =
386*cdf0e10cSrcweir {
387*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_LIST_HEADER, XML_TOK_TEXT_LIST_HEADER },
388*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_LIST_ITEM, 	XML_TOK_TEXT_LIST_ITEM	 },
389*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
390*cdf0e10cSrcweir };
391*cdf0e10cSrcweir 
392*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextFrameAttrTokenMap[] =
393*cdf0e10cSrcweir {
394*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_STYLE_NAME, XML_TOK_TEXT_FRAME_STYLE_NAME },
395*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_TEXT_FRAME_NAME },
396*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_ANCHOR_TYPE, XML_TOK_TEXT_FRAME_ANCHOR_TYPE },
397*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_ANCHOR_PAGE_NUMBER, XML_TOK_TEXT_FRAME_ANCHOR_PAGE_NUMBER },
398*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_X, XML_TOK_TEXT_FRAME_X },
399*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_Y, XML_TOK_TEXT_FRAME_Y },
400*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_WIDTH, XML_TOK_TEXT_FRAME_WIDTH },
401*cdf0e10cSrcweir 	{ XML_NAMESPACE_FO, XML_MIN_WIDTH, XML_TOK_TEXT_FRAME_MIN_WIDTH },
402*cdf0e10cSrcweir 	{ XML_NAMESPACE_STYLE, XML_REL_WIDTH, XML_TOK_TEXT_FRAME_REL_WIDTH },
403*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_HEIGHT, XML_TOK_TEXT_FRAME_HEIGHT },
404*cdf0e10cSrcweir 	{ XML_NAMESPACE_FO, XML_MIN_HEIGHT, XML_TOK_TEXT_FRAME_MIN_HEIGHT },
405*cdf0e10cSrcweir 	{ XML_NAMESPACE_STYLE, XML_REL_HEIGHT, XML_TOK_TEXT_FRAME_REL_HEIGHT },
406*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_CHAIN_NEXT_NAME, XML_TOK_TEXT_FRAME_NEXT_CHAIN_NAME },
407*cdf0e10cSrcweir 	{ XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_FRAME_HREF },
408*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_TEXT_FRAME_FILTER_NAME },
409*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_ZINDEX, XML_TOK_TEXT_FRAME_Z_INDEX },
410*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_TRANSFORM, XML_TOK_TEXT_FRAME_TRANSFORM },
411*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_CLASS_ID, XML_TOK_TEXT_FRAME_CLASS_ID },
412*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW,  	XML_CODE,       	XML_TOK_TEXT_FRAME_CODE },
413*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW,  	XML_OBJECT, 		XML_TOK_TEXT_FRAME_OBJECT },
414*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW,  	XML_ARCHIVE, 		XML_TOK_TEXT_FRAME_ARCHIVE },
415*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW,   XML_MAY_SCRIPT, 	XML_TOK_TEXT_FRAME_MAY_SCRIPT },
416*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW,   XML_MIME_TYPE, 	XML_TOK_TEXT_FRAME_MIME_TYPE },
417*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_APPLET_NAME, XML_TOK_TEXT_FRAME_APPLET_NAME },
418*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_FRAME_NAME, XML_TOK_TEXT_FRAME_FRAME_NAME },
419*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_RANGES, XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE },
420*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_TABLE, XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE },
421*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
422*cdf0e10cSrcweir };
423*cdf0e10cSrcweir 
424*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextContourAttrTokenMap[] =
425*cdf0e10cSrcweir {
426*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_WIDTH, 	XML_TOK_TEXT_CONTOUR_WIDTH		},
427*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_HEIGHT,	XML_TOK_TEXT_CONTOUR_HEIGHT		},
428*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_VIEWBOX,	XML_TOK_TEXT_CONTOUR_VIEWBOX	},
429*cdf0e10cSrcweir 	{ XML_NAMESPACE_SVG, XML_D,	    	XML_TOK_TEXT_CONTOUR_D			},
430*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW,XML_POINTS,	XML_TOK_TEXT_CONTOUR_POINTS		},
431*cdf0e10cSrcweir 	{ XML_NAMESPACE_DRAW,XML_RECREATE_ON_EDIT,	XML_TOK_TEXT_CONTOUR_AUTO	},
432*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
433*cdf0e10cSrcweir };
434*cdf0e10cSrcweir 
435*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextHyperlinkAttrTokenMap[] =
436*cdf0e10cSrcweir {
437*cdf0e10cSrcweir 	{ XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_HYPERLINK_HREF },
438*cdf0e10cSrcweir 	{ XML_NAMESPACE_OFFICE, XML_NAME, XML_TOK_TEXT_HYPERLINK_NAME },
439*cdf0e10cSrcweir 	{ XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_TEXT_HYPERLINK_SHOW },
440*cdf0e10cSrcweir 	{ XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, XML_TOK_TEXT_HYPERLINK_TARGET_FRAME },
441*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_HYPERLINK_STYLE_NAME },
442*cdf0e10cSrcweir 	{ XML_NAMESPACE_TEXT, XML_VISITED_STYLE_NAME, XML_TOK_TEXT_HYPERLINK_VIS_STYLE_NAME },
443*cdf0e10cSrcweir 	{ XML_NAMESPACE_OFFICE, XML_SERVER_MAP, XML_TOK_TEXT_HYPERLINK_SERVER_MAP },
444*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
445*cdf0e10cSrcweir };
446*cdf0e10cSrcweir 
447*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextMasterPageElemTokenMap[] =
448*cdf0e10cSrcweir {
449*cdf0e10cSrcweir 	{ XML_NAMESPACE_STYLE, XML_HEADER, XML_TOK_TEXT_MP_HEADER },
450*cdf0e10cSrcweir 	{ XML_NAMESPACE_STYLE, XML_FOOTER, XML_TOK_TEXT_MP_FOOTER },
451*cdf0e10cSrcweir 	{ XML_NAMESPACE_STYLE, XML_HEADER_LEFT, XML_TOK_TEXT_MP_HEADER_LEFT },
452*cdf0e10cSrcweir 	{ XML_NAMESPACE_STYLE, XML_FOOTER_LEFT, XML_TOK_TEXT_MP_FOOTER_LEFT },
453*cdf0e10cSrcweir 
454*cdf0e10cSrcweir 	XML_TOKEN_MAP_END
455*cdf0e10cSrcweir };
456*cdf0e10cSrcweir 
457*cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aTextFieldAttrTokenMap[] =
458*cdf0e10cSrcweir {
459*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_FIXED, XML_TOK_TEXTFIELD_FIXED },
460*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_DESCRIPTION,  XML_TOK_TEXTFIELD_DESCRIPTION },
461*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_HELP, XML_TOK_TEXTFIELD_HELP },
462*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_HINT, XML_TOK_TEXTFIELD_HINT },
463*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_PLACEHOLDER_TYPE,
464*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE },
465*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_NAME, XML_TOK_TEXTFIELD_NAME },
466*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_FORMULA, XML_TOK_TEXTFIELD_FORMULA },
467*cdf0e10cSrcweir     { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXTFIELD_NUM_FORMAT },
468*cdf0e10cSrcweir     { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC,
469*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_NUM_LETTER_SYNC },
470*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_DISPLAY_FORMULA,
471*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_DISPLAY_FORMULA },
472*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, // #i32362#: src680m48++ saves text:value-type
473*cdf0e10cSrcweir     { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE },
474*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_VALUE, XML_TOK_TEXTFIELD_VALUE },
475*cdf0e10cSrcweir     { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TEXTFIELD_VALUE },
476*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE },
477*cdf0e10cSrcweir     { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE },
478*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE },
479*cdf0e10cSrcweir     { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE },
480*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE },
481*cdf0e10cSrcweir     { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE },
482*cdf0e10cSrcweir     { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TEXTFIELD_BOOL_VALUE},
483*cdf0e10cSrcweir     { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TEXTFIELD_CURRENCY},
484*cdf0e10cSrcweir     { XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME,
485*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_DATA_STYLE_NAME },
486*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_DISPLAY_OUTLINE_LEVEL,
487*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_NUMBERING_LEVEL },
488*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_SEPARATION_CHARACTER,
489*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR },
490*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TOK_TEXTFIELD_DISPLAY },
491*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_TIME_ADJUST, XML_TOK_TEXTFIELD_TIME_ADJUST },
492*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_DATE_ADJUST, XML_TOK_TEXTFIELD_DATE_ADJUST },
493*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_PAGE_ADJUST, XML_TOK_TEXTFIELD_PAGE_ADJUST },
494*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_SELECT_PAGE, XML_TOK_TEXTFIELD_SELECT_PAGE },
495*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXTFIELD_DATABASE_NAME},
496*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_TABLE_NAME, XML_TOK_TEXTFIELD_TABLE_NAME },
497*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_COLUMN_NAME, XML_TOK_TEXTFIELD_COLUMN_NAME },
498*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_ROW_NUMBER, XML_TOK_TEXTFIELD_ROW_NUMBER },
499*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_CONDITION, XML_TOK_TEXTFIELD_CONDITION },
500*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_TRUE,
501*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE },
502*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_FALSE,
503*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE },
504*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, XML_TOK_TEXTFIELD_REVISION },
505*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL, XML_TOK_TEXTFIELD_OUTLINE_LEVEL},
506*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_ACTIVE, XML_TOK_TEXTFIELD_ACTIVE },
507*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_NOTE_CLASS, XML_TOK_TEXTFIELD_NOTE_CLASS },
508*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_REFERENCE_FORMAT,
509*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_REFERENCE_FORMAT },
510*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_REF_NAME, XML_TOK_TEXTFIELD_REF_NAME },
511*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_CONNECTION_NAME,
512*cdf0e10cSrcweir       XML_TOK_TEXTFIELD_CONNECTION_NAME },
513*cdf0e10cSrcweir     { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXTFIELD_HREF },
514*cdf0e10cSrcweir     { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME,
515*cdf0e10cSrcweir       XML_TOK_TEXTFIELD_TARGET_FRAME },
516*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_ANNOTATION, XML_TOK_TEXTFIELD_ANNOTATION },
517*cdf0e10cSrcweir     { XML_NAMESPACE_SCRIPT, XML_LANGUAGE, XML_TOK_TEXTFIELD_LANGUAGE },
518*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_KIND, XML_TOK_TEXTFIELD_MEASURE_KIND },
519*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_IS_HIDDEN, XML_TOK_TEXTFIELD_IS_HIDDEN },
520*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_CURRENT_VALUE,
521*cdf0e10cSrcweir                 XML_TOK_TEXTFIELD_CURRENT_VALUE },
522*cdf0e10cSrcweir     { XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE },
523*cdf0e10cSrcweir 
524*cdf0e10cSrcweir     XML_TOKEN_MAP_END
525*cdf0e10cSrcweir };
526*cdf0e10cSrcweir 
527*cdf0e10cSrcweir 
528*cdf0e10cSrcweir // maximum allowed length of combined characters field
529*cdf0e10cSrcweir #define MAX_COMBINED_CHARACTERS 6
530*cdf0e10cSrcweir 
531*cdf0e10cSrcweir struct SAL_DLLPRIVATE XMLTextImportHelper::Impl
532*cdf0e10cSrcweir     : private ::boost::noncopyable
533*cdf0e10cSrcweir {
534*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextElemTokenMap;
535*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextPElemTokenMap;
536*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextPAttrTokenMap;
537*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextFieldAttrTokenMap;
538*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextNumberedParagraphAttrTokenMap;
539*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockAttrTokenMap;
540*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockElemTokenMap;
541*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextFrameAttrTokenMap;
542*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextContourAttrTokenMap;
543*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextHyperlinkAttrTokenMap;
544*cdf0e10cSrcweir     ::std::auto_ptr<SvXMLTokenMap> m_pTextMasterPageElemTokenMap;
545*cdf0e10cSrcweir     ::std::auto_ptr<SvStringsDtor> m_pPrevFrmNames;
546*cdf0e10cSrcweir     ::std::auto_ptr<SvStringsDtor> m_pNextFrmNames;
547*cdf0e10cSrcweir 
548*cdf0e10cSrcweir     // --> OD 2008-04-25 #refactorlists#
549*cdf0e10cSrcweir     ::std::auto_ptr<XMLTextListsHelper> m_pTextListsHelper;
550*cdf0e10cSrcweir     // <--
551*cdf0e10cSrcweir 
552*cdf0e10cSrcweir     SvXMLImportContextRef m_xAutoStyles;
553*cdf0e10cSrcweir     SvXMLImportContextRef m_xFontDecls;
554*cdf0e10cSrcweir 
555*cdf0e10cSrcweir     XMLSectionList_Impl m_SectionList;
556*cdf0e10cSrcweir 
557*cdf0e10cSrcweir     UniReference< SvXMLImportPropertyMapper > m_xParaImpPrMap;
558*cdf0e10cSrcweir     UniReference< SvXMLImportPropertyMapper > m_xTextImpPrMap;
559*cdf0e10cSrcweir     UniReference< SvXMLImportPropertyMapper > m_xFrameImpPrMap;
560*cdf0e10cSrcweir     UniReference< SvXMLImportPropertyMapper > m_xSectionImpPrMap;
561*cdf0e10cSrcweir     UniReference< SvXMLImportPropertyMapper > m_xRubyImpPrMap;
562*cdf0e10cSrcweir 
563*cdf0e10cSrcweir     ::std::auto_ptr<SvI18NMap> m_pRenameMap;
564*cdf0e10cSrcweir     // --> OD 2006-10-12 #i69629# - change and extend data structure:
565*cdf0e10cSrcweir     // - data structure contains candidates of paragraph styles, which
566*cdf0e10cSrcweir     //   will be assigned to the outline style
567*cdf0e10cSrcweir     // - data structure contains more than one candidate for each list level
568*cdf0e10cSrcweir     //   of the outline style
569*cdf0e10cSrcweir     ::boost::scoped_array< ::std::vector< ::rtl::OUString > >
570*cdf0e10cSrcweir         m_pOutlineStylesCandidates;
571*cdf0e10cSrcweir     // <--
572*cdf0e10cSrcweir 
573*cdf0e10cSrcweir     // start range, xml:id, RDFa stuff
574*cdf0e10cSrcweir     typedef ::boost::tuple<
575*cdf0e10cSrcweir         uno::Reference<text::XTextRange>, ::rtl::OUString,
576*cdf0e10cSrcweir         ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > >
577*cdf0e10cSrcweir             BookmarkMapEntry_t;
578*cdf0e10cSrcweir     /// start ranges for open bookmarks
579*cdf0e10cSrcweir     ::std::map< ::rtl::OUString, BookmarkMapEntry_t,
580*cdf0e10cSrcweir                 ::comphelper::UStringLess> m_BookmarkStartRanges;
581*cdf0e10cSrcweir 
582*cdf0e10cSrcweir     typedef ::std::vector< ::rtl::OUString > BookmarkVector_t;
583*cdf0e10cSrcweir     BookmarkVector_t m_BookmarkVector;
584*cdf0e10cSrcweir 
585*cdf0e10cSrcweir     /// name of the last 'open' redline that started between paragraphs
586*cdf0e10cSrcweir     ::rtl::OUString m_sOpenRedlineIdentifier;
587*cdf0e10cSrcweir 
588*cdf0e10cSrcweir     uno::Reference<text::XText> m_xText;
589*cdf0e10cSrcweir     uno::Reference<text::XTextCursor> m_xCursor;
590*cdf0e10cSrcweir     uno::Reference<text::XTextRange> m_xCursorAsRange;
591*cdf0e10cSrcweir     uno::Reference<container::XNameContainer> m_xParaStyles;
592*cdf0e10cSrcweir     uno::Reference<container::XNameContainer> m_xTextStyles;
593*cdf0e10cSrcweir     uno::Reference<container::XNameContainer> m_xNumStyles;
594*cdf0e10cSrcweir     uno::Reference<container::XNameContainer> m_xFrameStyles;
595*cdf0e10cSrcweir     uno::Reference<container::XNameContainer> m_xPageStyles;
596*cdf0e10cSrcweir     uno::Reference<container::XIndexReplace> m_xChapterNumbering;
597*cdf0e10cSrcweir     uno::Reference<container::XNameAccess> m_xTextFrames;
598*cdf0e10cSrcweir     uno::Reference<container::XNameAccess> m_xGraphics;
599*cdf0e10cSrcweir     uno::Reference<container::XNameAccess> m_xObjects;
600*cdf0e10cSrcweir     uno::Reference<lang::XMultiServiceFactory> m_xServiceFactory;
601*cdf0e10cSrcweir 
602*cdf0e10cSrcweir     SvXMLImport & m_rSvXMLImport;
603*cdf0e10cSrcweir 
604*cdf0e10cSrcweir     bool m_bInsertMode : 1;
605*cdf0e10cSrcweir     bool m_bStylesOnlyMode : 1;
606*cdf0e10cSrcweir     bool m_bBlockMode : 1;
607*cdf0e10cSrcweir     bool m_bProgress : 1;
608*cdf0e10cSrcweir     bool m_bOrganizerMode : 1;
609*cdf0e10cSrcweir     bool m_bBodyContentStarted : 1;
610*cdf0e10cSrcweir 
611*cdf0e10cSrcweir     // #107848#
612*cdf0e10cSrcweir     // One more flag to remember if we are inside a deleted redline section
613*cdf0e10cSrcweir     bool m_bInsideDeleteContext : 1;
614*cdf0e10cSrcweir 
615*cdf0e10cSrcweir     typedef ::std::pair< ::rtl::OUString, ::rtl::OUString> field_name_type_t;
616*cdf0e10cSrcweir     typedef ::std::pair< ::rtl::OUString, ::rtl::OUString > field_param_t;
617*cdf0e10cSrcweir     typedef ::std::vector< field_param_t > field_params_t;
618*cdf0e10cSrcweir     typedef ::std::pair< field_name_type_t, field_params_t > field_stack_item_t;
619*cdf0e10cSrcweir     typedef ::std::stack< field_stack_item_t > field_stack_t;
620*cdf0e10cSrcweir 
621*cdf0e10cSrcweir     field_stack_t m_FieldStack;
622*cdf0e10cSrcweir 
623*cdf0e10cSrcweir     ::rtl::OUString m_sCellParaStyleDefault;
624*cdf0e10cSrcweir 
625*cdf0e10cSrcweir     Impl(       uno::Reference<frame::XModel> const& rModel,
626*cdf0e10cSrcweir                 SvXMLImport & rImport,
627*cdf0e10cSrcweir                 bool const bInsertMode, bool const bStylesOnlyMode,
628*cdf0e10cSrcweir                 bool const bProgress, bool const bBlockMode,
629*cdf0e10cSrcweir                 bool const bOrganizerMode)
630*cdf0e10cSrcweir         :   m_pTextElemTokenMap( 0 )
631*cdf0e10cSrcweir         ,   m_pTextPElemTokenMap( 0 )
632*cdf0e10cSrcweir         ,   m_pTextPAttrTokenMap( 0 )
633*cdf0e10cSrcweir         ,   m_pTextFieldAttrTokenMap( 0 )
634*cdf0e10cSrcweir         ,   m_pTextNumberedParagraphAttrTokenMap( 0 )
635*cdf0e10cSrcweir         ,   m_pTextListBlockAttrTokenMap( 0 )
636*cdf0e10cSrcweir         ,   m_pTextListBlockElemTokenMap( 0 )
637*cdf0e10cSrcweir         ,   m_pTextFrameAttrTokenMap( 0 )
638*cdf0e10cSrcweir         ,   m_pTextContourAttrTokenMap( 0 )
639*cdf0e10cSrcweir         ,   m_pTextHyperlinkAttrTokenMap( 0 )
640*cdf0e10cSrcweir         ,   m_pTextMasterPageElemTokenMap( 0 )
641*cdf0e10cSrcweir         ,   m_pPrevFrmNames( 0 )
642*cdf0e10cSrcweir         ,   m_pNextFrmNames( 0 )
643*cdf0e10cSrcweir         // --> OD 2008-04-25 #refactorlists#
644*cdf0e10cSrcweir         ,   m_pTextListsHelper( new XMLTextListsHelper() )
645*cdf0e10cSrcweir         // <--
646*cdf0e10cSrcweir         ,   m_pRenameMap( 0 )
647*cdf0e10cSrcweir         // --> OD 2006-10-12 #i69629#
648*cdf0e10cSrcweir         ,   m_pOutlineStylesCandidates( 0 )
649*cdf0e10cSrcweir         // <--
650*cdf0e10cSrcweir         ,   m_xServiceFactory( rModel, UNO_QUERY )
651*cdf0e10cSrcweir         ,   m_rSvXMLImport( rImport )
652*cdf0e10cSrcweir         ,   m_bInsertMode( bInsertMode )
653*cdf0e10cSrcweir         ,   m_bStylesOnlyMode( bStylesOnlyMode )
654*cdf0e10cSrcweir         ,   m_bBlockMode( bBlockMode )
655*cdf0e10cSrcweir         ,   m_bProgress( bProgress )
656*cdf0e10cSrcweir         ,   m_bOrganizerMode( bOrganizerMode )
657*cdf0e10cSrcweir         ,   m_bBodyContentStarted( true )
658*cdf0e10cSrcweir             // #107848# Initialize inside_deleted_section flag correctly
659*cdf0e10cSrcweir         ,   m_bInsideDeleteContext( false )
660*cdf0e10cSrcweir     {
661*cdf0e10cSrcweir     }
662*cdf0e10cSrcweir 
663*cdf0e10cSrcweir     void InitOutlineStylesCandidates()
664*cdf0e10cSrcweir     {
665*cdf0e10cSrcweir         if (!m_pOutlineStylesCandidates)
666*cdf0e10cSrcweir         {
667*cdf0e10cSrcweir             size_t const size(m_xChapterNumbering->getCount());
668*cdf0e10cSrcweir             m_pOutlineStylesCandidates.reset(
669*cdf0e10cSrcweir                 new ::std::vector< ::rtl::OUString >[size] );
670*cdf0e10cSrcweir         }
671*cdf0e10cSrcweir     }
672*cdf0e10cSrcweir 
673*cdf0e10cSrcweir };
674*cdf0e10cSrcweir 
675*cdf0e10cSrcweir 
676*cdf0e10cSrcweir uno::Reference< text::XText > & XMLTextImportHelper::GetText()
677*cdf0e10cSrcweir {
678*cdf0e10cSrcweir     return m_pImpl->m_xText;
679*cdf0e10cSrcweir }
680*cdf0e10cSrcweir 
681*cdf0e10cSrcweir uno::Reference< text::XTextCursor > & XMLTextImportHelper::GetCursor()
682*cdf0e10cSrcweir {
683*cdf0e10cSrcweir     return m_pImpl->m_xCursor;
684*cdf0e10cSrcweir }
685*cdf0e10cSrcweir 
686*cdf0e10cSrcweir uno::Reference< text::XTextRange > & XMLTextImportHelper::GetCursorAsRange()
687*cdf0e10cSrcweir {
688*cdf0e10cSrcweir     return m_pImpl->m_xCursorAsRange;
689*cdf0e10cSrcweir }
690*cdf0e10cSrcweir 
691*cdf0e10cSrcweir bool XMLTextImportHelper::IsInsertMode() const
692*cdf0e10cSrcweir {
693*cdf0e10cSrcweir     return m_pImpl->m_bInsertMode;
694*cdf0e10cSrcweir }
695*cdf0e10cSrcweir 
696*cdf0e10cSrcweir bool XMLTextImportHelper::IsStylesOnlyMode() const
697*cdf0e10cSrcweir {
698*cdf0e10cSrcweir     return m_pImpl->m_bStylesOnlyMode;
699*cdf0e10cSrcweir }
700*cdf0e10cSrcweir 
701*cdf0e10cSrcweir bool XMLTextImportHelper::IsBlockMode() const
702*cdf0e10cSrcweir {
703*cdf0e10cSrcweir     return m_pImpl->m_bBlockMode;
704*cdf0e10cSrcweir }
705*cdf0e10cSrcweir 
706*cdf0e10cSrcweir bool XMLTextImportHelper::IsOrganizerMode() const
707*cdf0e10cSrcweir {
708*cdf0e10cSrcweir     return m_pImpl->m_bOrganizerMode;
709*cdf0e10cSrcweir }
710*cdf0e10cSrcweir 
711*cdf0e10cSrcweir bool XMLTextImportHelper::IsProgress() const
712*cdf0e10cSrcweir {
713*cdf0e10cSrcweir     return m_pImpl->m_bProgress;
714*cdf0e10cSrcweir }
715*cdf0e10cSrcweir 
716*cdf0e10cSrcweir XMLSectionList_Impl & XMLTextImportHelper::GetSectionList()
717*cdf0e10cSrcweir {
718*cdf0e10cSrcweir     return m_pImpl->m_SectionList;
719*cdf0e10cSrcweir }
720*cdf0e10cSrcweir 
721*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const&
722*cdf0e10cSrcweir XMLTextImportHelper::GetParaStyles() const
723*cdf0e10cSrcweir {
724*cdf0e10cSrcweir     return m_pImpl->m_xParaStyles;
725*cdf0e10cSrcweir }
726*cdf0e10cSrcweir 
727*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const&
728*cdf0e10cSrcweir XMLTextImportHelper::GetTextStyles() const
729*cdf0e10cSrcweir {
730*cdf0e10cSrcweir     return m_pImpl->m_xTextStyles;
731*cdf0e10cSrcweir }
732*cdf0e10cSrcweir 
733*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const&
734*cdf0e10cSrcweir XMLTextImportHelper::GetNumberingStyles() const
735*cdf0e10cSrcweir {
736*cdf0e10cSrcweir     return m_pImpl->m_xNumStyles;
737*cdf0e10cSrcweir }
738*cdf0e10cSrcweir 
739*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const&
740*cdf0e10cSrcweir XMLTextImportHelper::GetFrameStyles() const
741*cdf0e10cSrcweir {
742*cdf0e10cSrcweir     return m_pImpl->m_xFrameStyles;
743*cdf0e10cSrcweir }
744*cdf0e10cSrcweir 
745*cdf0e10cSrcweir uno::Reference<container::XNameContainer> const&
746*cdf0e10cSrcweir XMLTextImportHelper::GetPageStyles() const
747*cdf0e10cSrcweir {
748*cdf0e10cSrcweir     return m_pImpl->m_xPageStyles;
749*cdf0e10cSrcweir }
750*cdf0e10cSrcweir 
751*cdf0e10cSrcweir uno::Reference<container::XIndexReplace> const&
752*cdf0e10cSrcweir XMLTextImportHelper::GetChapterNumbering() const
753*cdf0e10cSrcweir {
754*cdf0e10cSrcweir     return m_pImpl->m_xChapterNumbering;
755*cdf0e10cSrcweir }
756*cdf0e10cSrcweir 
757*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const&
758*cdf0e10cSrcweir XMLTextImportHelper::GetParaImportPropertySetMapper() const
759*cdf0e10cSrcweir {
760*cdf0e10cSrcweir     return m_pImpl->m_xParaImpPrMap;
761*cdf0e10cSrcweir }
762*cdf0e10cSrcweir 
763*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const&
764*cdf0e10cSrcweir XMLTextImportHelper::GetTextImportPropertySetMapper() const
765*cdf0e10cSrcweir {
766*cdf0e10cSrcweir     return m_pImpl->m_xTextImpPrMap;
767*cdf0e10cSrcweir }
768*cdf0e10cSrcweir 
769*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const&
770*cdf0e10cSrcweir XMLTextImportHelper::GetFrameImportPropertySetMapper() const
771*cdf0e10cSrcweir {
772*cdf0e10cSrcweir     return m_pImpl->m_xFrameImpPrMap;
773*cdf0e10cSrcweir }
774*cdf0e10cSrcweir 
775*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const&
776*cdf0e10cSrcweir XMLTextImportHelper::GetSectionImportPropertySetMapper() const
777*cdf0e10cSrcweir {
778*cdf0e10cSrcweir     return m_pImpl->m_xSectionImpPrMap;
779*cdf0e10cSrcweir }
780*cdf0e10cSrcweir 
781*cdf0e10cSrcweir UniReference< SvXMLImportPropertyMapper > const&
782*cdf0e10cSrcweir XMLTextImportHelper::GetRubyImportPropertySetMapper() const
783*cdf0e10cSrcweir {
784*cdf0e10cSrcweir     return m_pImpl->m_xRubyImpPrMap;
785*cdf0e10cSrcweir }
786*cdf0e10cSrcweir 
787*cdf0e10cSrcweir void XMLTextImportHelper::SetInsideDeleteContext(bool const bNew)
788*cdf0e10cSrcweir {
789*cdf0e10cSrcweir     m_pImpl->m_bInsideDeleteContext = bNew;
790*cdf0e10cSrcweir }
791*cdf0e10cSrcweir 
792*cdf0e10cSrcweir bool XMLTextImportHelper::IsInsideDeleteContext() const
793*cdf0e10cSrcweir {
794*cdf0e10cSrcweir     return m_pImpl->m_bInsideDeleteContext;
795*cdf0e10cSrcweir }
796*cdf0e10cSrcweir 
797*cdf0e10cSrcweir SvXMLImport & XMLTextImportHelper::GetXMLImport()
798*cdf0e10cSrcweir {
799*cdf0e10cSrcweir     return m_pImpl->m_rSvXMLImport;
800*cdf0e10cSrcweir }
801*cdf0e10cSrcweir 
802*cdf0e10cSrcweir XMLTextListsHelper & XMLTextImportHelper::GetTextListHelper()
803*cdf0e10cSrcweir {
804*cdf0e10cSrcweir     return *m_pImpl->m_pTextListsHelper;
805*cdf0e10cSrcweir }
806*cdf0e10cSrcweir 
807*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextElemTokenMap()
808*cdf0e10cSrcweir {
809*cdf0e10cSrcweir     if (!m_pImpl->m_pTextElemTokenMap.get())
810*cdf0e10cSrcweir     {
811*cdf0e10cSrcweir         m_pImpl->m_pTextElemTokenMap.reset(
812*cdf0e10cSrcweir             new SvXMLTokenMap( aTextElemTokenMap ));
813*cdf0e10cSrcweir     }
814*cdf0e10cSrcweir     return *m_pImpl->m_pTextElemTokenMap;
815*cdf0e10cSrcweir }
816*cdf0e10cSrcweir 
817*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextPElemTokenMap()
818*cdf0e10cSrcweir {
819*cdf0e10cSrcweir     if (!m_pImpl->m_pTextPElemTokenMap.get())
820*cdf0e10cSrcweir     {
821*cdf0e10cSrcweir         m_pImpl->m_pTextPElemTokenMap.reset(
822*cdf0e10cSrcweir             new SvXMLTokenMap( aTextPElemTokenMap ));
823*cdf0e10cSrcweir     }
824*cdf0e10cSrcweir     return *m_pImpl->m_pTextPElemTokenMap;
825*cdf0e10cSrcweir }
826*cdf0e10cSrcweir 
827*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextPAttrTokenMap()
828*cdf0e10cSrcweir {
829*cdf0e10cSrcweir     if (!m_pImpl->m_pTextPAttrTokenMap.get())
830*cdf0e10cSrcweir     {
831*cdf0e10cSrcweir         m_pImpl->m_pTextPAttrTokenMap.reset(
832*cdf0e10cSrcweir             new SvXMLTokenMap( aTextPAttrTokenMap ));
833*cdf0e10cSrcweir     }
834*cdf0e10cSrcweir     return *m_pImpl->m_pTextPAttrTokenMap;
835*cdf0e10cSrcweir }
836*cdf0e10cSrcweir 
837*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextFrameAttrTokenMap()
838*cdf0e10cSrcweir {
839*cdf0e10cSrcweir     if (!m_pImpl->m_pTextFrameAttrTokenMap.get())
840*cdf0e10cSrcweir     {
841*cdf0e10cSrcweir         m_pImpl->m_pTextFrameAttrTokenMap.reset(
842*cdf0e10cSrcweir             new SvXMLTokenMap( aTextFrameAttrTokenMap ));
843*cdf0e10cSrcweir     }
844*cdf0e10cSrcweir     return *m_pImpl->m_pTextFrameAttrTokenMap;
845*cdf0e10cSrcweir }
846*cdf0e10cSrcweir 
847*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextContourAttrTokenMap()
848*cdf0e10cSrcweir {
849*cdf0e10cSrcweir     if (!m_pImpl->m_pTextContourAttrTokenMap.get())
850*cdf0e10cSrcweir     {
851*cdf0e10cSrcweir         m_pImpl->m_pTextContourAttrTokenMap.reset(
852*cdf0e10cSrcweir             new SvXMLTokenMap( aTextContourAttrTokenMap ));
853*cdf0e10cSrcweir     }
854*cdf0e10cSrcweir     return *m_pImpl->m_pTextContourAttrTokenMap;
855*cdf0e10cSrcweir }
856*cdf0e10cSrcweir 
857*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextHyperlinkAttrTokenMap()
858*cdf0e10cSrcweir {
859*cdf0e10cSrcweir     if (!m_pImpl->m_pTextHyperlinkAttrTokenMap.get())
860*cdf0e10cSrcweir     {
861*cdf0e10cSrcweir         m_pImpl->m_pTextHyperlinkAttrTokenMap.reset(
862*cdf0e10cSrcweir             new SvXMLTokenMap( aTextHyperlinkAttrTokenMap ));
863*cdf0e10cSrcweir     }
864*cdf0e10cSrcweir     return *m_pImpl->m_pTextHyperlinkAttrTokenMap;
865*cdf0e10cSrcweir }
866*cdf0e10cSrcweir 
867*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextMasterPageElemTokenMap()
868*cdf0e10cSrcweir {
869*cdf0e10cSrcweir     if (!m_pImpl->m_pTextMasterPageElemTokenMap.get())
870*cdf0e10cSrcweir     {
871*cdf0e10cSrcweir         m_pImpl->m_pTextMasterPageElemTokenMap.reset(
872*cdf0e10cSrcweir             new SvXMLTokenMap( aTextMasterPageElemTokenMap ));
873*cdf0e10cSrcweir     }
874*cdf0e10cSrcweir     return *m_pImpl->m_pTextMasterPageElemTokenMap;
875*cdf0e10cSrcweir }
876*cdf0e10cSrcweir 
877*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextFieldAttrTokenMap()
878*cdf0e10cSrcweir {
879*cdf0e10cSrcweir     if (!m_pImpl->m_pTextFieldAttrTokenMap.get())
880*cdf0e10cSrcweir     {
881*cdf0e10cSrcweir         m_pImpl->m_pTextFieldAttrTokenMap.reset(
882*cdf0e10cSrcweir             new SvXMLTokenMap( aTextFieldAttrTokenMap ));
883*cdf0e10cSrcweir     }
884*cdf0e10cSrcweir     return *m_pImpl->m_pTextFieldAttrTokenMap;
885*cdf0e10cSrcweir }
886*cdf0e10cSrcweir 
887*cdf0e10cSrcweir 
888*cdf0e10cSrcweir namespace
889*cdf0e10cSrcweir {
890*cdf0e10cSrcweir     class FieldParamImporter
891*cdf0e10cSrcweir     {
892*cdf0e10cSrcweir         public:
893*cdf0e10cSrcweir             typedef pair<OUString,OUString> field_param_t;
894*cdf0e10cSrcweir             typedef vector<field_param_t> field_params_t;
895*cdf0e10cSrcweir             FieldParamImporter(const field_params_t* const pInParams, Reference<XNameContainer> xOutParams)
896*cdf0e10cSrcweir                 : m_pInParams(pInParams)
897*cdf0e10cSrcweir                 , m_xOutParams(xOutParams)
898*cdf0e10cSrcweir             { };
899*cdf0e10cSrcweir             void Import();
900*cdf0e10cSrcweir 
901*cdf0e10cSrcweir         private:
902*cdf0e10cSrcweir             const field_params_t* const m_pInParams;
903*cdf0e10cSrcweir             Reference<XNameContainer> m_xOutParams;
904*cdf0e10cSrcweir     };
905*cdf0e10cSrcweir 
906*cdf0e10cSrcweir     void FieldParamImporter::Import()
907*cdf0e10cSrcweir     {
908*cdf0e10cSrcweir         ::std::vector<OUString> vListEntries;
909*cdf0e10cSrcweir         ::std::map<OUString, Any> vOutParams;
910*cdf0e10cSrcweir         for(field_params_t::const_iterator pCurrent = m_pInParams->begin();
911*cdf0e10cSrcweir             pCurrent != m_pInParams->end();
912*cdf0e10cSrcweir             ++pCurrent)
913*cdf0e10cSrcweir         {
914*cdf0e10cSrcweir             if(pCurrent->first.equalsAscii(ODF_FORMDROPDOWN_RESULT))
915*cdf0e10cSrcweir             {
916*cdf0e10cSrcweir                 // sal_Int32
917*cdf0e10cSrcweir                 vOutParams[pCurrent->first] = makeAny(pCurrent->second.toInt32());
918*cdf0e10cSrcweir             }
919*cdf0e10cSrcweir             else if(pCurrent->first.equalsAscii(ODF_FORMCHECKBOX_RESULT))
920*cdf0e10cSrcweir             {
921*cdf0e10cSrcweir                 // bool
922*cdf0e10cSrcweir                 vOutParams[pCurrent->first] = makeAny(pCurrent->second.toBoolean());
923*cdf0e10cSrcweir             }
924*cdf0e10cSrcweir             else if(pCurrent->first.equalsAscii(ODF_FORMDROPDOWN_LISTENTRY))
925*cdf0e10cSrcweir             {
926*cdf0e10cSrcweir                 // sequence
927*cdf0e10cSrcweir                 vListEntries.push_back(pCurrent->second);
928*cdf0e10cSrcweir             }
929*cdf0e10cSrcweir             else
930*cdf0e10cSrcweir                 vOutParams[pCurrent->first] = makeAny(pCurrent->second);
931*cdf0e10cSrcweir         }
932*cdf0e10cSrcweir         if(!vListEntries.empty())
933*cdf0e10cSrcweir         {
934*cdf0e10cSrcweir             Sequence<OUString> vListEntriesSeq(vListEntries.size());
935*cdf0e10cSrcweir             copy(vListEntries.begin(), vListEntries.end(), ::comphelper::stl_begin(vListEntriesSeq));
936*cdf0e10cSrcweir             vOutParams[OUString::createFromAscii(ODF_FORMDROPDOWN_LISTENTRY)] = makeAny(vListEntriesSeq);
937*cdf0e10cSrcweir         }
938*cdf0e10cSrcweir         for(::std::map<OUString, Any>::const_iterator pCurrent = vOutParams.begin();
939*cdf0e10cSrcweir             pCurrent != vOutParams.end();
940*cdf0e10cSrcweir             ++pCurrent)
941*cdf0e10cSrcweir         {
942*cdf0e10cSrcweir             try
943*cdf0e10cSrcweir             {
944*cdf0e10cSrcweir                 m_xOutParams->insertByName(pCurrent->first, pCurrent->second);
945*cdf0e10cSrcweir             }
946*cdf0e10cSrcweir             catch(ElementExistException)
947*cdf0e10cSrcweir             { }
948*cdf0e10cSrcweir         }
949*cdf0e10cSrcweir     }
950*cdf0e10cSrcweir }
951*cdf0e10cSrcweir 
952*cdf0e10cSrcweir XMLTextImportHelper::XMLTextImportHelper(
953*cdf0e10cSrcweir         uno::Reference<frame::XModel> const& rModel,
954*cdf0e10cSrcweir         SvXMLImport& rImport,
955*cdf0e10cSrcweir         bool const bInsertMode, bool const bStylesOnlyMode,
956*cdf0e10cSrcweir         bool const bProgress, bool const bBlockMode,
957*cdf0e10cSrcweir         bool const bOrganizerMode)
958*cdf0e10cSrcweir     : m_pImpl( new Impl(rModel, rImport, bInsertMode, bStylesOnlyMode,
959*cdf0e10cSrcweir                     bProgress, bBlockMode, bOrganizerMode) )
960*cdf0e10cSrcweir     , m_pBackpatcherImpl( MakeBackpatcherImpl() )
961*cdf0e10cSrcweir {
962*cdf0e10cSrcweir     static ::rtl::OUString s_PropNameDefaultListId(
963*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("DefaultListId"));
964*cdf0e10cSrcweir 
965*cdf0e10cSrcweir 	Reference< XChapterNumberingSupplier > xCNSupplier( rModel, UNO_QUERY );
966*cdf0e10cSrcweir 
967*cdf0e10cSrcweir 	if( xCNSupplier.is() )
968*cdf0e10cSrcweir     {
969*cdf0e10cSrcweir         m_pImpl->m_xChapterNumbering = xCNSupplier->getChapterNumberingRules();
970*cdf0e10cSrcweir         // --> OD 2008-05-15 #refactorlists#
971*cdf0e10cSrcweir         if (m_pImpl->m_xChapterNumbering.is())
972*cdf0e10cSrcweir         {
973*cdf0e10cSrcweir             Reference< XPropertySet > const xNumRuleProps(
974*cdf0e10cSrcweir                 m_pImpl->m_xChapterNumbering, UNO_QUERY);
975*cdf0e10cSrcweir             if ( xNumRuleProps.is() )
976*cdf0e10cSrcweir             {
977*cdf0e10cSrcweir                 Reference< XPropertySetInfo > xNumRulePropSetInfo(
978*cdf0e10cSrcweir                                             xNumRuleProps->getPropertySetInfo());
979*cdf0e10cSrcweir                 if (xNumRulePropSetInfo.is() &&
980*cdf0e10cSrcweir                     xNumRulePropSetInfo->hasPropertyByName(
981*cdf0e10cSrcweir                          s_PropNameDefaultListId))
982*cdf0e10cSrcweir                 {
983*cdf0e10cSrcweir                     ::rtl::OUString sListId;
984*cdf0e10cSrcweir                     xNumRuleProps->getPropertyValue(s_PropNameDefaultListId)
985*cdf0e10cSrcweir                         >>= sListId;
986*cdf0e10cSrcweir                     DBG_ASSERT( sListId.getLength() != 0,
987*cdf0e10cSrcweir                                 "no default list id found at chapter numbering rules instance. Serious defect -> please inform OD." );
988*cdf0e10cSrcweir                     if ( sListId.getLength() )
989*cdf0e10cSrcweir                     {
990*cdf0e10cSrcweir                         Reference< XNamed > const xChapterNumNamed(
991*cdf0e10cSrcweir                             m_pImpl->m_xChapterNumbering, UNO_QUERY);
992*cdf0e10cSrcweir                         if ( xChapterNumNamed.is() )
993*cdf0e10cSrcweir                         {
994*cdf0e10cSrcweir                             m_pImpl->m_pTextListsHelper->KeepListAsProcessed(
995*cdf0e10cSrcweir                                                     sListId,
996*cdf0e10cSrcweir                                                     xChapterNumNamed->getName(),
997*cdf0e10cSrcweir                                                     ::rtl::OUString() );
998*cdf0e10cSrcweir                         }
999*cdf0e10cSrcweir                     }
1000*cdf0e10cSrcweir                 }
1001*cdf0e10cSrcweir             }
1002*cdf0e10cSrcweir         }
1003*cdf0e10cSrcweir         // <--
1004*cdf0e10cSrcweir     }
1005*cdf0e10cSrcweir 
1006*cdf0e10cSrcweir 	Reference< XStyleFamiliesSupplier > xFamiliesSupp( rModel, UNO_QUERY );
1007*cdf0e10cSrcweir //	DBG_ASSERT( xFamiliesSupp.is(), "no chapter numbering supplier" ); for clipboard there may be documents without styles
1008*cdf0e10cSrcweir 
1009*cdf0e10cSrcweir 	if( xFamiliesSupp.is() )
1010*cdf0e10cSrcweir 	{
1011*cdf0e10cSrcweir 		Reference< XNameAccess > xFamilies(xFamiliesSupp->getStyleFamilies());
1012*cdf0e10cSrcweir 
1013*cdf0e10cSrcweir 		const OUString aParaStyles(RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles"));
1014*cdf0e10cSrcweir 		if( xFamilies->hasByName( aParaStyles ) )
1015*cdf0e10cSrcweir         {
1016*cdf0e10cSrcweir             m_pImpl->m_xParaStyles.set(xFamilies->getByName(aParaStyles),
1017*cdf0e10cSrcweir                 UNO_QUERY);
1018*cdf0e10cSrcweir         }
1019*cdf0e10cSrcweir 
1020*cdf0e10cSrcweir 		const OUString aCharStyles(RTL_CONSTASCII_USTRINGPARAM("CharacterStyles"));
1021*cdf0e10cSrcweir 		if( xFamilies->hasByName( aCharStyles ) )
1022*cdf0e10cSrcweir         {
1023*cdf0e10cSrcweir             m_pImpl->m_xTextStyles.set(xFamilies->getByName(aCharStyles),
1024*cdf0e10cSrcweir                 UNO_QUERY);
1025*cdf0e10cSrcweir         }
1026*cdf0e10cSrcweir 
1027*cdf0e10cSrcweir 		const OUString aNumStyles(RTL_CONSTASCII_USTRINGPARAM("NumberingStyles"));
1028*cdf0e10cSrcweir 		if( xFamilies->hasByName( aNumStyles ) )
1029*cdf0e10cSrcweir         {
1030*cdf0e10cSrcweir             m_pImpl->m_xNumStyles.set(xFamilies->getByName(aNumStyles),
1031*cdf0e10cSrcweir                 UNO_QUERY);
1032*cdf0e10cSrcweir         }
1033*cdf0e10cSrcweir 
1034*cdf0e10cSrcweir 		const OUString aFrameStyles(RTL_CONSTASCII_USTRINGPARAM("FrameStyles"));
1035*cdf0e10cSrcweir 		if( xFamilies->hasByName( aFrameStyles ) )
1036*cdf0e10cSrcweir         {
1037*cdf0e10cSrcweir             m_pImpl->m_xFrameStyles.set(xFamilies->getByName(aFrameStyles),
1038*cdf0e10cSrcweir                 UNO_QUERY);
1039*cdf0e10cSrcweir         }
1040*cdf0e10cSrcweir 
1041*cdf0e10cSrcweir 		const OUString aPageStyles(RTL_CONSTASCII_USTRINGPARAM("PageStyles"));
1042*cdf0e10cSrcweir 		if( xFamilies->hasByName( aPageStyles ) )
1043*cdf0e10cSrcweir         {
1044*cdf0e10cSrcweir             m_pImpl->m_xPageStyles.set(xFamilies->getByName(aPageStyles),
1045*cdf0e10cSrcweir                 UNO_QUERY);
1046*cdf0e10cSrcweir         }
1047*cdf0e10cSrcweir     }
1048*cdf0e10cSrcweir 
1049*cdf0e10cSrcweir 	Reference < XTextFramesSupplier > xTFS( rModel, UNO_QUERY );
1050*cdf0e10cSrcweir 	if( xTFS.is() )
1051*cdf0e10cSrcweir     {
1052*cdf0e10cSrcweir         m_pImpl->m_xTextFrames.set(xTFS->getTextFrames());
1053*cdf0e10cSrcweir     }
1054*cdf0e10cSrcweir 
1055*cdf0e10cSrcweir 	Reference < XTextGraphicObjectsSupplier > xTGOS( rModel, UNO_QUERY );
1056*cdf0e10cSrcweir 	if( xTGOS.is() )
1057*cdf0e10cSrcweir     {
1058*cdf0e10cSrcweir         m_pImpl->m_xGraphics.set(xTGOS->getGraphicObjects());
1059*cdf0e10cSrcweir     }
1060*cdf0e10cSrcweir 
1061*cdf0e10cSrcweir 	Reference < XTextEmbeddedObjectsSupplier > xTEOS( rModel, UNO_QUERY );
1062*cdf0e10cSrcweir 	if( xTEOS.is() )
1063*cdf0e10cSrcweir     {
1064*cdf0e10cSrcweir         m_pImpl->m_xObjects.set(xTEOS->getEmbeddedObjects());
1065*cdf0e10cSrcweir     }
1066*cdf0e10cSrcweir 
1067*cdf0e10cSrcweir 	XMLPropertySetMapper *pPropMapper =
1068*cdf0e10cSrcweir 			new XMLTextPropertySetMapper( TEXT_PROP_MAP_PARA );
1069*cdf0e10cSrcweir     m_pImpl->m_xParaImpPrMap =
1070*cdf0e10cSrcweir         new XMLTextImportPropertyMapper( pPropMapper, rImport );
1071*cdf0e10cSrcweir 
1072*cdf0e10cSrcweir 	pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT );
1073*cdf0e10cSrcweir     m_pImpl->m_xTextImpPrMap =
1074*cdf0e10cSrcweir         new XMLTextImportPropertyMapper( pPropMapper, rImport );
1075*cdf0e10cSrcweir 
1076*cdf0e10cSrcweir 	pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME );
1077*cdf0e10cSrcweir     m_pImpl->m_xFrameImpPrMap =
1078*cdf0e10cSrcweir         new XMLTextImportPropertyMapper( pPropMapper, rImport );
1079*cdf0e10cSrcweir 
1080*cdf0e10cSrcweir 	pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_SECTION );
1081*cdf0e10cSrcweir     m_pImpl->m_xSectionImpPrMap =
1082*cdf0e10cSrcweir         new XMLTextImportPropertyMapper( pPropMapper, rImport );
1083*cdf0e10cSrcweir 
1084*cdf0e10cSrcweir 	pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_RUBY );
1085*cdf0e10cSrcweir     m_pImpl->m_xRubyImpPrMap =
1086*cdf0e10cSrcweir         new SvXMLImportPropertyMapper( pPropMapper, rImport );
1087*cdf0e10cSrcweir }
1088*cdf0e10cSrcweir 
1089*cdf0e10cSrcweir XMLTextImportHelper::~XMLTextImportHelper()
1090*cdf0e10cSrcweir {
1091*cdf0e10cSrcweir }
1092*cdf0e10cSrcweir 
1093*cdf0e10cSrcweir SvXMLImportPropertyMapper *XMLTextImportHelper::CreateShapeExtPropMapper(SvXMLImport& rImport)
1094*cdf0e10cSrcweir {
1095*cdf0e10cSrcweir 	XMLPropertySetMapper *pPropMapper =
1096*cdf0e10cSrcweir 		new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME );
1097*cdf0e10cSrcweir 	return new XMLTextImportPropertyMapper( pPropMapper, rImport,
1098*cdf0e10cSrcweir                    const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()) );
1099*cdf0e10cSrcweir }
1100*cdf0e10cSrcweir 
1101*cdf0e10cSrcweir SvXMLImportPropertyMapper *XMLTextImportHelper::CreateCharExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext *pFontDecls)
1102*cdf0e10cSrcweir {
1103*cdf0e10cSrcweir 	XMLPropertySetMapper *pPropMapper =
1104*cdf0e10cSrcweir 		new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT );
1105*cdf0e10cSrcweir 	if (!pFontDecls)
1106*cdf0e10cSrcweir 		pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls());
1107*cdf0e10cSrcweir 	return new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls );
1108*cdf0e10cSrcweir }
1109*cdf0e10cSrcweir 
1110*cdf0e10cSrcweir SvXMLImportPropertyMapper *XMLTextImportHelper::CreateParaExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext *pFontDecls)
1111*cdf0e10cSrcweir {
1112*cdf0e10cSrcweir 	XMLPropertySetMapper *pPropMapper =
1113*cdf0e10cSrcweir 		new XMLTextPropertySetMapper( TEXT_PROP_MAP_SHAPE_PARA );
1114*cdf0e10cSrcweir 	if (!pFontDecls)
1115*cdf0e10cSrcweir 		pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls());
1116*cdf0e10cSrcweir 	return new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls );
1117*cdf0e10cSrcweir }
1118*cdf0e10cSrcweir 
1119*cdf0e10cSrcweir SvXMLImportPropertyMapper *XMLTextImportHelper::CreateParaDefaultExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext* pFontDecls)
1120*cdf0e10cSrcweir {
1121*cdf0e10cSrcweir 	if (!pFontDecls)
1122*cdf0e10cSrcweir 		pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls());
1123*cdf0e10cSrcweir 
1124*cdf0e10cSrcweir 	XMLPropertySetMapper* pPropMapper =
1125*cdf0e10cSrcweir 		new XMLTextPropertySetMapper( TEXT_PROP_MAP_SHAPE_PARA );
1126*cdf0e10cSrcweir     SvXMLImportPropertyMapper* pImportMapper = new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls );
1127*cdf0e10cSrcweir 
1128*cdf0e10cSrcweir 	pPropMapper =
1129*cdf0e10cSrcweir 		new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT_ADDITIONAL_DEFAULTS );
1130*cdf0e10cSrcweir     pImportMapper->ChainImportMapper( new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ) );
1131*cdf0e10cSrcweir 
1132*cdf0e10cSrcweir 	return pImportMapper;
1133*cdf0e10cSrcweir }
1134*cdf0e10cSrcweir 
1135*cdf0e10cSrcweir SvXMLImportPropertyMapper*
1136*cdf0e10cSrcweir     XMLTextImportHelper::CreateTableDefaultExtPropMapper(
1137*cdf0e10cSrcweir         SvXMLImport& rImport,
1138*cdf0e10cSrcweir         XMLFontStylesContext* )
1139*cdf0e10cSrcweir {
1140*cdf0e10cSrcweir 	XMLPropertySetMapper *pPropMapper =
1141*cdf0e10cSrcweir 		new XMLTextPropertySetMapper( TEXT_PROP_MAP_TABLE_DEFAULTS );
1142*cdf0e10cSrcweir 	return new SvXMLImportPropertyMapper( pPropMapper, rImport );
1143*cdf0e10cSrcweir }
1144*cdf0e10cSrcweir 
1145*cdf0e10cSrcweir SvXMLImportPropertyMapper*
1146*cdf0e10cSrcweir     XMLTextImportHelper::CreateTableRowDefaultExtPropMapper(
1147*cdf0e10cSrcweir         SvXMLImport& rImport,
1148*cdf0e10cSrcweir         XMLFontStylesContext* )
1149*cdf0e10cSrcweir {
1150*cdf0e10cSrcweir 	XMLPropertySetMapper *pPropMapper =
1151*cdf0e10cSrcweir 		new XMLTextPropertySetMapper( TEXT_PROP_MAP_TABLE_ROW_DEFAULTS );
1152*cdf0e10cSrcweir 	return new SvXMLImportPropertyMapper( pPropMapper, rImport );
1153*cdf0e10cSrcweir }
1154*cdf0e10cSrcweir 
1155*cdf0e10cSrcweir void XMLTextImportHelper::SetCursor( const Reference < XTextCursor > & rCursor )
1156*cdf0e10cSrcweir {
1157*cdf0e10cSrcweir     m_pImpl->m_xCursor.set(rCursor);
1158*cdf0e10cSrcweir     m_pImpl->m_xText.set(rCursor->getText());
1159*cdf0e10cSrcweir     m_pImpl->m_xCursorAsRange.set( rCursor, UNO_QUERY );
1160*cdf0e10cSrcweir }
1161*cdf0e10cSrcweir 
1162*cdf0e10cSrcweir void XMLTextImportHelper::ResetCursor()
1163*cdf0e10cSrcweir {
1164*cdf0e10cSrcweir     m_pImpl->m_xCursor.set(0);
1165*cdf0e10cSrcweir     m_pImpl->m_xText.set(0);
1166*cdf0e10cSrcweir     m_pImpl->m_xCursorAsRange.set(0);
1167*cdf0e10cSrcweir }
1168*cdf0e10cSrcweir 
1169*cdf0e10cSrcweir 
1170*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::HasFrameByName( const OUString& rName ) const
1171*cdf0e10cSrcweir {
1172*cdf0e10cSrcweir     return (m_pImpl->m_xTextFrames.is() &&
1173*cdf0e10cSrcweir             m_pImpl->m_xTextFrames->hasByName(rName))
1174*cdf0e10cSrcweir         || (m_pImpl->m_xGraphics.is() &&
1175*cdf0e10cSrcweir             m_pImpl->m_xGraphics->hasByName(rName))
1176*cdf0e10cSrcweir         || (m_pImpl->m_xObjects.is() &&
1177*cdf0e10cSrcweir             m_pImpl->m_xObjects->hasByName(rName));
1178*cdf0e10cSrcweir }
1179*cdf0e10cSrcweir 
1180*cdf0e10cSrcweir void XMLTextImportHelper::InsertString( const OUString& rChars )
1181*cdf0e10cSrcweir {
1182*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1183*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1184*cdf0e10cSrcweir     if (m_pImpl->m_xText.is())
1185*cdf0e10cSrcweir     {
1186*cdf0e10cSrcweir         m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
1187*cdf0e10cSrcweir             rChars, sal_False);
1188*cdf0e10cSrcweir     }
1189*cdf0e10cSrcweir }
1190*cdf0e10cSrcweir 
1191*cdf0e10cSrcweir void XMLTextImportHelper::InsertString( const OUString& rChars,
1192*cdf0e10cSrcweir 									 	sal_Bool& rIgnoreLeadingSpace )
1193*cdf0e10cSrcweir {
1194*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1195*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1196*cdf0e10cSrcweir     if (m_pImpl->m_xText.is())
1197*cdf0e10cSrcweir     {
1198*cdf0e10cSrcweir 		sal_Int32 nLen = rChars.getLength();
1199*cdf0e10cSrcweir 		OUStringBuffer sChars( nLen );
1200*cdf0e10cSrcweir 
1201*cdf0e10cSrcweir 		for( sal_Int32 i=0; i < nLen; i++ )
1202*cdf0e10cSrcweir 		{
1203*cdf0e10cSrcweir 			sal_Unicode c = rChars[i];
1204*cdf0e10cSrcweir 			switch( c )
1205*cdf0e10cSrcweir 			{
1206*cdf0e10cSrcweir 				case 0x20:
1207*cdf0e10cSrcweir 				case 0x09:
1208*cdf0e10cSrcweir 				case 0x0a:
1209*cdf0e10cSrcweir 				case 0x0d:
1210*cdf0e10cSrcweir 					if( !rIgnoreLeadingSpace )
1211*cdf0e10cSrcweir 						sChars.append( (sal_Unicode)0x20 );
1212*cdf0e10cSrcweir 					rIgnoreLeadingSpace = sal_True;
1213*cdf0e10cSrcweir 					break;
1214*cdf0e10cSrcweir 				default:
1215*cdf0e10cSrcweir 					rIgnoreLeadingSpace = sal_False;
1216*cdf0e10cSrcweir 					sChars.append( c );
1217*cdf0e10cSrcweir 					break;
1218*cdf0e10cSrcweir 			}
1219*cdf0e10cSrcweir 		}
1220*cdf0e10cSrcweir         m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
1221*cdf0e10cSrcweir             sChars.makeStringAndClear(), sal_False);
1222*cdf0e10cSrcweir     }
1223*cdf0e10cSrcweir }
1224*cdf0e10cSrcweir 
1225*cdf0e10cSrcweir void XMLTextImportHelper::InsertControlCharacter( sal_Int16 nControl )
1226*cdf0e10cSrcweir {
1227*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1228*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1229*cdf0e10cSrcweir     if (m_pImpl->m_xText.is())
1230*cdf0e10cSrcweir     {
1231*cdf0e10cSrcweir         m_pImpl->m_xText->insertControlCharacter(
1232*cdf0e10cSrcweir             m_pImpl->m_xCursorAsRange, nControl, sal_False);
1233*cdf0e10cSrcweir     }
1234*cdf0e10cSrcweir }
1235*cdf0e10cSrcweir 
1236*cdf0e10cSrcweir void XMLTextImportHelper::InsertTextContent(
1237*cdf0e10cSrcweir 	Reference < XTextContent > & xContent )
1238*cdf0e10cSrcweir {
1239*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1240*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1241*cdf0e10cSrcweir     if (m_pImpl->m_xText.is())
1242*cdf0e10cSrcweir     {
1243*cdf0e10cSrcweir         m_pImpl->m_xText->insertTextContent(
1244*cdf0e10cSrcweir             m_pImpl->m_xCursorAsRange, xContent, sal_False);
1245*cdf0e10cSrcweir     }
1246*cdf0e10cSrcweir }
1247*cdf0e10cSrcweir 
1248*cdf0e10cSrcweir void XMLTextImportHelper::DeleteParagraph()
1249*cdf0e10cSrcweir {
1250*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1251*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xCursor.is(), "no cursor");
1252*cdf0e10cSrcweir     DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1253*cdf0e10cSrcweir 
1254*cdf0e10cSrcweir 	sal_Bool bDelete = sal_True;
1255*cdf0e10cSrcweir     Reference < XEnumerationAccess > const xEnumAccess(
1256*cdf0e10cSrcweir         m_pImpl->m_xCursor, UNO_QUERY);
1257*cdf0e10cSrcweir 	if( xEnumAccess.is() )
1258*cdf0e10cSrcweir 	{
1259*cdf0e10cSrcweir 		Reference < XEnumeration > xEnum(xEnumAccess->createEnumeration());
1260*cdf0e10cSrcweir 		DBG_ASSERT( xEnum->hasMoreElements(), "empty text enumeration" );
1261*cdf0e10cSrcweir 		if( xEnum->hasMoreElements() )
1262*cdf0e10cSrcweir 		{
1263*cdf0e10cSrcweir 			Reference < XComponent > xComp( xEnum->nextElement(), UNO_QUERY );
1264*cdf0e10cSrcweir 			DBG_ASSERT( xComp.is(), "got no component" );
1265*cdf0e10cSrcweir 			if( xComp.is() )
1266*cdf0e10cSrcweir 			{
1267*cdf0e10cSrcweir 				xComp->dispose();
1268*cdf0e10cSrcweir 				bDelete = sal_False;
1269*cdf0e10cSrcweir 			}
1270*cdf0e10cSrcweir 		}
1271*cdf0e10cSrcweir 	}
1272*cdf0e10cSrcweir 	if( bDelete )
1273*cdf0e10cSrcweir 	{
1274*cdf0e10cSrcweir         if (m_pImpl->m_xCursor->goLeft( 1, sal_True ))
1275*cdf0e10cSrcweir         {
1276*cdf0e10cSrcweir 			OUString sEmpty;
1277*cdf0e10cSrcweir             m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
1278*cdf0e10cSrcweir                     sEmpty, sal_True);
1279*cdf0e10cSrcweir         }
1280*cdf0e10cSrcweir     }
1281*cdf0e10cSrcweir }
1282*cdf0e10cSrcweir 
1283*cdf0e10cSrcweir OUString XMLTextImportHelper::ConvertStarFonts( const OUString& rChars,
1284*cdf0e10cSrcweir 												const OUString& rStyleName,
1285*cdf0e10cSrcweir 												sal_uInt8& rFlags,
1286*cdf0e10cSrcweir 											 	sal_Bool bPara,
1287*cdf0e10cSrcweir 												SvXMLImport& rImport ) const
1288*cdf0e10cSrcweir {
1289*cdf0e10cSrcweir 	OUStringBuffer sChars( rChars );
1290*cdf0e10cSrcweir 	sal_Bool bConverted = sal_False;
1291*cdf0e10cSrcweir 	for( sal_Int32 j=0; j<rChars.getLength(); j++ )
1292*cdf0e10cSrcweir 	{
1293*cdf0e10cSrcweir 		sal_Unicode c = rChars[j];
1294*cdf0e10cSrcweir 		if( c >= 0xf000 && c <= 0xf0ff )
1295*cdf0e10cSrcweir 		{
1296*cdf0e10cSrcweir 			if( (rFlags & CONV_STAR_FONT_FLAGS_VALID) == 0 )
1297*cdf0e10cSrcweir 			{
1298*cdf0e10cSrcweir 				XMLTextStyleContext *pStyle = 0;
1299*cdf0e10cSrcweir 				sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH
1300*cdf0e10cSrcweir 										   : XML_STYLE_FAMILY_TEXT_TEXT;
1301*cdf0e10cSrcweir                 if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is())
1302*cdf0e10cSrcweir                 {
1303*cdf0e10cSrcweir                     const SvXMLStyleContext* pTempStyle =
1304*cdf0e10cSrcweir                         ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
1305*cdf0e10cSrcweir 								FindStyleChildContext( nFamily, rStyleName,
1306*cdf0e10cSrcweir 													   sal_True );
1307*cdf0e10cSrcweir 					pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle);
1308*cdf0e10cSrcweir 				}
1309*cdf0e10cSrcweir 
1310*cdf0e10cSrcweir 				if( pStyle )
1311*cdf0e10cSrcweir 				{
1312*cdf0e10cSrcweir 					sal_Int32 nCount = pStyle->_GetProperties().size();
1313*cdf0e10cSrcweir 					if( nCount )
1314*cdf0e10cSrcweir 					{
1315*cdf0e10cSrcweir 						UniReference < SvXMLImportPropertyMapper > xImpPrMap =
1316*cdf0e10cSrcweir                             ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)
1317*cdf0e10cSrcweir                                 ->GetImportPropertyMapper(nFamily);
1318*cdf0e10cSrcweir 						if( xImpPrMap.is() )
1319*cdf0e10cSrcweir 						{
1320*cdf0e10cSrcweir 							UniReference<XMLPropertySetMapper> rPropMapper =
1321*cdf0e10cSrcweir 								xImpPrMap->getPropertySetMapper();
1322*cdf0e10cSrcweir 							for( sal_Int32 i=0; i < nCount; i++ )
1323*cdf0e10cSrcweir 							{
1324*cdf0e10cSrcweir 								const XMLPropertyState& rProp = pStyle->_GetProperties()[i];
1325*cdf0e10cSrcweir 								sal_Int32 nIdx = rProp.mnIndex;
1326*cdf0e10cSrcweir 								sal_uInt32 nContextId = rPropMapper->GetEntryContextId(nIdx);
1327*cdf0e10cSrcweir 								if( CTF_FONTFAMILYNAME == nContextId )
1328*cdf0e10cSrcweir 								{
1329*cdf0e10cSrcweir 									rFlags &= ~(CONV_FROM_STAR_BATS|CONV_FROM_STAR_MATH);
1330*cdf0e10cSrcweir 									OUString sFontName;
1331*cdf0e10cSrcweir 									rProp.maValue >>= sFontName;
1332*cdf0e10cSrcweir 									OUString sStarBats( RTL_CONSTASCII_USTRINGPARAM("StarBats" ) );
1333*cdf0e10cSrcweir 									OUString sStarMath( RTL_CONSTASCII_USTRINGPARAM("StarMath" ) );
1334*cdf0e10cSrcweir 									if( sFontName.equalsIgnoreAsciiCase( sStarBats  ) )
1335*cdf0e10cSrcweir 										rFlags |= CONV_FROM_STAR_BATS;
1336*cdf0e10cSrcweir 									else if( sFontName.equalsIgnoreAsciiCase( sStarMath ) )
1337*cdf0e10cSrcweir 										rFlags |= CONV_FROM_STAR_MATH;
1338*cdf0e10cSrcweir 									break;
1339*cdf0e10cSrcweir 								}
1340*cdf0e10cSrcweir 							}
1341*cdf0e10cSrcweir 						}
1342*cdf0e10cSrcweir 					}
1343*cdf0e10cSrcweir 
1344*cdf0e10cSrcweir 				}
1345*cdf0e10cSrcweir 
1346*cdf0e10cSrcweir 				rFlags |= CONV_STAR_FONT_FLAGS_VALID;
1347*cdf0e10cSrcweir 			}
1348*cdf0e10cSrcweir 			if( (rFlags & CONV_FROM_STAR_BATS ) != 0 )
1349*cdf0e10cSrcweir 			{
1350*cdf0e10cSrcweir 				sChars.setCharAt( j, rImport.ConvStarBatsCharToStarSymbol( c ) );
1351*cdf0e10cSrcweir 				bConverted = sal_True;
1352*cdf0e10cSrcweir 			}
1353*cdf0e10cSrcweir 			else if( (rFlags & CONV_FROM_STAR_MATH ) != 0 )
1354*cdf0e10cSrcweir 			{
1355*cdf0e10cSrcweir 				sChars.setCharAt( j, rImport.ConvStarMathCharToStarSymbol( c ) );
1356*cdf0e10cSrcweir 				bConverted = sal_True;
1357*cdf0e10cSrcweir 			}
1358*cdf0e10cSrcweir 		}
1359*cdf0e10cSrcweir 	}
1360*cdf0e10cSrcweir 
1361*cdf0e10cSrcweir 	return bConverted ? sChars.makeStringAndClear() : rChars;
1362*cdf0e10cSrcweir }
1363*cdf0e10cSrcweir 
1364*cdf0e10cSrcweir // --> OD 2006-10-12 #i69629#
1365*cdf0e10cSrcweir // helper method to determine, if a paragraph style has a list style (inclusive
1366*cdf0e10cSrcweir // an empty one) inherits a list style (inclusive an empty one) from one of its parents
1367*cdf0e10cSrcweir // --> OD 2007-01-29 #i73973#
1368*cdf0e10cSrcweir // apply special case, that found list style equals the chapter numbering, also
1369*cdf0e10cSrcweir // to the found list styles of the parent styles.
1370*cdf0e10cSrcweir sal_Bool lcl_HasListStyle( OUString sStyleName,
1371*cdf0e10cSrcweir                            const Reference < XNameContainer >& xParaStyles,
1372*cdf0e10cSrcweir                            SvXMLImport& rImport,
1373*cdf0e10cSrcweir                            const OUString& sNumberingStyleName,
1374*cdf0e10cSrcweir                            const OUString& sOutlineStyleName )
1375*cdf0e10cSrcweir {
1376*cdf0e10cSrcweir     sal_Bool bRet( sal_False );
1377*cdf0e10cSrcweir 
1378*cdf0e10cSrcweir     if ( !xParaStyles->hasByName( sStyleName ) )
1379*cdf0e10cSrcweir     {
1380*cdf0e10cSrcweir         // error case
1381*cdf0e10cSrcweir         return sal_True;
1382*cdf0e10cSrcweir     }
1383*cdf0e10cSrcweir 
1384*cdf0e10cSrcweir     Reference< XPropertyState > xPropState( xParaStyles->getByName( sStyleName ),
1385*cdf0e10cSrcweir                                             UNO_QUERY );
1386*cdf0e10cSrcweir     if ( !xPropState.is() )
1387*cdf0e10cSrcweir     {
1388*cdf0e10cSrcweir         // error case
1389*cdf0e10cSrcweir         return sal_False;
1390*cdf0e10cSrcweir     }
1391*cdf0e10cSrcweir 
1392*cdf0e10cSrcweir     if ( xPropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE )
1393*cdf0e10cSrcweir     {
1394*cdf0e10cSrcweir         // list style found
1395*cdf0e10cSrcweir         bRet = sal_True;
1396*cdf0e10cSrcweir         // special case: the set list style equals the chapter numbering
1397*cdf0e10cSrcweir         Reference< XPropertySet > xPropSet( xPropState, UNO_QUERY );
1398*cdf0e10cSrcweir         if ( xPropSet.is() )
1399*cdf0e10cSrcweir         {
1400*cdf0e10cSrcweir             OUString sListStyle;
1401*cdf0e10cSrcweir             xPropSet->getPropertyValue( sNumberingStyleName ) >>= sListStyle;
1402*cdf0e10cSrcweir             if ( sListStyle.getLength() != 0 &&
1403*cdf0e10cSrcweir                  sListStyle == sOutlineStyleName )
1404*cdf0e10cSrcweir             {
1405*cdf0e10cSrcweir                 bRet = sal_False;
1406*cdf0e10cSrcweir             }
1407*cdf0e10cSrcweir         }
1408*cdf0e10cSrcweir     }
1409*cdf0e10cSrcweir     else
1410*cdf0e10cSrcweir     {
1411*cdf0e10cSrcweir         // --> OD 2007-12-07 #i77708#
1412*cdf0e10cSrcweir         sal_Int32 nUPD( 0 );
1413*cdf0e10cSrcweir         sal_Int32 nBuild( 0 );
1414*cdf0e10cSrcweir         // --> OD 2008-03-19 #i86058#
1415*cdf0e10cSrcweir //        rImport.getBuildIds( nUPD, nBuild );
1416*cdf0e10cSrcweir         const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild );
1417*cdf0e10cSrcweir         // <--
1418*cdf0e10cSrcweir         // <--
1419*cdf0e10cSrcweir         // search list style at parent
1420*cdf0e10cSrcweir         Reference<XStyle> xStyle( xPropState, UNO_QUERY );
1421*cdf0e10cSrcweir         while ( xStyle.is() )
1422*cdf0e10cSrcweir         {
1423*cdf0e10cSrcweir             OUString aParentStyle( xStyle->getParentStyle() );
1424*cdf0e10cSrcweir             if ( aParentStyle.getLength() > 0 )
1425*cdf0e10cSrcweir             {
1426*cdf0e10cSrcweir                 aParentStyle =
1427*cdf0e10cSrcweir                     rImport.GetStyleDisplayName( XML_STYLE_FAMILY_TEXT_PARAGRAPH,
1428*cdf0e10cSrcweir                                                  aParentStyle );
1429*cdf0e10cSrcweir             }
1430*cdf0e10cSrcweir             if ( aParentStyle.getLength() == 0 ||
1431*cdf0e10cSrcweir                  !xParaStyles->hasByName( aParentStyle ) )
1432*cdf0e10cSrcweir             {
1433*cdf0e10cSrcweir                 // no list style found
1434*cdf0e10cSrcweir                 break;
1435*cdf0e10cSrcweir             }
1436*cdf0e10cSrcweir             else
1437*cdf0e10cSrcweir             {
1438*cdf0e10cSrcweir                 xPropState = Reference< XPropertyState >(
1439*cdf0e10cSrcweir                                     xParaStyles->getByName( aParentStyle ),
1440*cdf0e10cSrcweir                                     UNO_QUERY );
1441*cdf0e10cSrcweir                 if ( !xPropState.is() )
1442*cdf0e10cSrcweir                 {
1443*cdf0e10cSrcweir                     // error case
1444*cdf0e10cSrcweir                     return sal_True;
1445*cdf0e10cSrcweir                 }
1446*cdf0e10cSrcweir                 if ( xPropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE )
1447*cdf0e10cSrcweir                 {
1448*cdf0e10cSrcweir                     // list style found
1449*cdf0e10cSrcweir                     bRet = sal_True;
1450*cdf0e10cSrcweir                     // --> OD 2007-01-29 #i73973#
1451*cdf0e10cSrcweir                     // special case: the found list style equals the chapter numbering
1452*cdf0e10cSrcweir                     Reference< XPropertySet > xPropSet( xPropState, UNO_QUERY );
1453*cdf0e10cSrcweir                     if ( xPropSet.is() )
1454*cdf0e10cSrcweir                     {
1455*cdf0e10cSrcweir                         OUString sListStyle;
1456*cdf0e10cSrcweir                         xPropSet->getPropertyValue( sNumberingStyleName ) >>= sListStyle;
1457*cdf0e10cSrcweir                         if ( sListStyle.getLength() != 0 &&
1458*cdf0e10cSrcweir                              sListStyle == sOutlineStyleName )
1459*cdf0e10cSrcweir                         {
1460*cdf0e10cSrcweir                             bRet = sal_False;
1461*cdf0e10cSrcweir                         }
1462*cdf0e10cSrcweir                         // --> OD 2007-12-07 #i77708#
1463*cdf0e10cSrcweir                         // special handling for text documents from OOo version prior OOo 2.4
1464*cdf0e10cSrcweir                         // --> OD 2008-03-19 #i86058#
1465*cdf0e10cSrcweir                         // check explicitly on certain versions and on import of
1466*cdf0e10cSrcweir                         // text documents in OpenOffice.org file format
1467*cdf0e10cSrcweir                         else if ( sListStyle.getLength() == 0 &&
1468*cdf0e10cSrcweir                                   ( rImport.IsTextDocInOOoFileFormat() ||
1469*cdf0e10cSrcweir                                     ( bBuildIdFound &&
1470*cdf0e10cSrcweir                                       ( ( nUPD == 641 ) || ( nUPD == 645 ) || // prior OOo 2.0
1471*cdf0e10cSrcweir                                         ( nUPD == 680 && nBuild <= 9238 ) ) ) ) ) // OOo 2.0 - OOo 2.3.1
1472*cdf0e10cSrcweir                         {
1473*cdf0e10cSrcweir                             bRet = sal_False;
1474*cdf0e10cSrcweir                         }
1475*cdf0e10cSrcweir                         // <--
1476*cdf0e10cSrcweir                     }
1477*cdf0e10cSrcweir                     // <--
1478*cdf0e10cSrcweir                     break;
1479*cdf0e10cSrcweir                 }
1480*cdf0e10cSrcweir                 else
1481*cdf0e10cSrcweir                 {
1482*cdf0e10cSrcweir                     // search list style at parent
1483*cdf0e10cSrcweir                     xStyle = Reference<XStyle>( xPropState, UNO_QUERY );
1484*cdf0e10cSrcweir                 }
1485*cdf0e10cSrcweir             }
1486*cdf0e10cSrcweir         }
1487*cdf0e10cSrcweir     }
1488*cdf0e10cSrcweir 
1489*cdf0e10cSrcweir     return bRet;
1490*cdf0e10cSrcweir }
1491*cdf0e10cSrcweir // <--
1492*cdf0e10cSrcweir OUString XMLTextImportHelper::SetStyleAndAttrs(
1493*cdf0e10cSrcweir 		SvXMLImport& rImport,
1494*cdf0e10cSrcweir 		const Reference < XTextCursor >& rCursor,
1495*cdf0e10cSrcweir 		const OUString& rStyleName,
1496*cdf0e10cSrcweir 		sal_Bool bPara,
1497*cdf0e10cSrcweir         sal_Bool bOutlineLevelAttrFound,
1498*cdf0e10cSrcweir         sal_Int8 nOutlineLevel,
1499*cdf0e10cSrcweir         // --> OD 2007-08-17 #i80724#
1500*cdf0e10cSrcweir         sal_Bool bSetListAttrs )
1501*cdf0e10cSrcweir         // <--
1502*cdf0e10cSrcweir {
1503*cdf0e10cSrcweir     static ::rtl::OUString s_ParaStyleName(
1504*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("ParaStyleName"));
1505*cdf0e10cSrcweir     static ::rtl::OUString s_CharStyleName(
1506*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("CharStyleName"));
1507*cdf0e10cSrcweir     static ::rtl::OUString s_NumberingRules(
1508*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("NumberingRules"));
1509*cdf0e10cSrcweir     static ::rtl::OUString s_NumberingIsNumber(
1510*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("NumberingIsNumber"));
1511*cdf0e10cSrcweir     static ::rtl::OUString s_NumberingLevel(
1512*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("NumberingLevel"));
1513*cdf0e10cSrcweir     static ::rtl::OUString s_ParaIsNumberingRestart(
1514*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("ParaIsNumberingRestart"));
1515*cdf0e10cSrcweir     static ::rtl::OUString s_NumberingStartValue(
1516*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("NumberingStartValue"));
1517*cdf0e10cSrcweir     static ::rtl::OUString s_PropNameListId(
1518*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("ListId"));
1519*cdf0e10cSrcweir     static ::rtl::OUString s_PageDescName(
1520*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("PageDescName"));
1521*cdf0e10cSrcweir     static ::rtl::OUString s_ServiceCombinedCharacters(
1522*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM(
1523*cdf0e10cSrcweir             "com.sun.star.text.TextField.CombinedCharacters"));
1524*cdf0e10cSrcweir     static ::rtl::OUString s_Content(RTL_CONSTASCII_USTRINGPARAM("Content"));
1525*cdf0e10cSrcweir     static ::rtl::OUString s_OutlineLevel(
1526*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("OutlineLevel"));
1527*cdf0e10cSrcweir     static ::rtl::OUString s_NumberingStyleName(
1528*cdf0e10cSrcweir             RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName"));
1529*cdf0e10cSrcweir 
1530*cdf0e10cSrcweir     const sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH
1531*cdf0e10cSrcweir                                      : XML_STYLE_FAMILY_TEXT_TEXT;
1532*cdf0e10cSrcweir 	XMLTextStyleContext *pStyle = 0;
1533*cdf0e10cSrcweir 	OUString sStyleName( rStyleName );
1534*cdf0e10cSrcweir     if (sStyleName.getLength() && m_pImpl->m_xAutoStyles.Is())
1535*cdf0e10cSrcweir     {
1536*cdf0e10cSrcweir         const SvXMLStyleContext* pTempStyle =
1537*cdf0e10cSrcweir             ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
1538*cdf0e10cSrcweir 					FindStyleChildContext( nFamily, sStyleName, sal_True );
1539*cdf0e10cSrcweir 		pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle);
1540*cdf0e10cSrcweir 	}
1541*cdf0e10cSrcweir 	if( pStyle )
1542*cdf0e10cSrcweir         sStyleName = pStyle->GetParentName();
1543*cdf0e10cSrcweir 
1544*cdf0e10cSrcweir 	Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY );
1545*cdf0e10cSrcweir 	Reference< XPropertySetInfo > xPropSetInfo(
1546*cdf0e10cSrcweir 		xPropSet->getPropertySetInfo());
1547*cdf0e10cSrcweir 
1548*cdf0e10cSrcweir 	// style
1549*cdf0e10cSrcweir 	if( sStyleName.getLength() )
1550*cdf0e10cSrcweir 	{
1551*cdf0e10cSrcweir         sStyleName = rImport.GetStyleDisplayName( nFamily, sStyleName );
1552*cdf0e10cSrcweir         const String& rPropName = (bPara) ? s_ParaStyleName : s_CharStyleName;
1553*cdf0e10cSrcweir 		const Reference < XNameContainer > & rStyles = (bPara)
1554*cdf0e10cSrcweir             ? m_pImpl->m_xParaStyles
1555*cdf0e10cSrcweir             : m_pImpl->m_xTextStyles;
1556*cdf0e10cSrcweir 		if( rStyles.is() &&
1557*cdf0e10cSrcweir 			xPropSetInfo->hasPropertyByName( rPropName ) &&
1558*cdf0e10cSrcweir 			rStyles->hasByName( sStyleName ) )
1559*cdf0e10cSrcweir 		{
1560*cdf0e10cSrcweir             xPropSet->setPropertyValue( rPropName, makeAny(sStyleName) );
1561*cdf0e10cSrcweir 		}
1562*cdf0e10cSrcweir 		else
1563*cdf0e10cSrcweir 			sStyleName = OUString();
1564*cdf0e10cSrcweir 	}
1565*cdf0e10cSrcweir 
1566*cdf0e10cSrcweir     // --> OD 2008-09-10 #i70748#
1567*cdf0e10cSrcweir     // The outline level needs to be only applied as list level, if the heading
1568*cdf0e10cSrcweir     // is not inside a list and if it by default applies the outline style.
1569*cdf0e10cSrcweir     bool bApplyOutlineLevelAsListLevel( false );
1570*cdf0e10cSrcweir     // --> OD 2007-08-17 #i80724#
1571*cdf0e10cSrcweir     if (bSetListAttrs && bPara
1572*cdf0e10cSrcweir         && xPropSetInfo->hasPropertyByName( s_NumberingRules))
1573*cdf0e10cSrcweir     // <--
1574*cdf0e10cSrcweir 	{
1575*cdf0e10cSrcweir 		// Set numbering rules
1576*cdf0e10cSrcweir         Reference< XIndexReplace > const xNumRules(
1577*cdf0e10cSrcweir                 xPropSet->getPropertyValue(s_NumberingRules), UNO_QUERY);
1578*cdf0e10cSrcweir 
1579*cdf0e10cSrcweir         XMLTextListBlockContext * pListBlock(0);
1580*cdf0e10cSrcweir         XMLTextListItemContext  * pListItem(0);
1581*cdf0e10cSrcweir         XMLNumberedParaContext  * pNumberedParagraph(0);
1582*cdf0e10cSrcweir         GetTextListHelper().ListContextTop(
1583*cdf0e10cSrcweir             pListBlock, pListItem, pNumberedParagraph);
1584*cdf0e10cSrcweir 
1585*cdf0e10cSrcweir         OSL_ENSURE(!(pListBlock && pNumberedParagraph), "XMLTextImportHelper::"
1586*cdf0e10cSrcweir             "SetStyleAndAttrs: both list and numbered-paragraph???");
1587*cdf0e10cSrcweir 
1588*cdf0e10cSrcweir         Reference < XIndexReplace > xNewNumRules;
1589*cdf0e10cSrcweir         sal_Int8 nLevel(-1);
1590*cdf0e10cSrcweir         ::rtl::OUString sListId;
1591*cdf0e10cSrcweir         sal_Int16 nStartValue(-1);
1592*cdf0e10cSrcweir         bool bNumberingIsNumber(true);
1593*cdf0e10cSrcweir 
1594*cdf0e10cSrcweir         if (pListBlock) {
1595*cdf0e10cSrcweir 
1596*cdf0e10cSrcweir 			if (!pListItem) {
1597*cdf0e10cSrcweir                 bNumberingIsNumber = false; // list-header
1598*cdf0e10cSrcweir             }
1599*cdf0e10cSrcweir             // --> OD 2008-05-08 #refactorlists#
1600*cdf0e10cSrcweir             // consider text:style-override property of <text:list-item>
1601*cdf0e10cSrcweir             xNewNumRules.set(
1602*cdf0e10cSrcweir                 (pListItem != 0 && pListItem->HasNumRulesOverride())
1603*cdf0e10cSrcweir                     ? pListItem->GetNumRulesOverride()
1604*cdf0e10cSrcweir                     : pListBlock->GetNumRules() );
1605*cdf0e10cSrcweir             // <--
1606*cdf0e10cSrcweir 			nLevel = static_cast<sal_Int8>(pListBlock->GetLevel());
1607*cdf0e10cSrcweir 
1608*cdf0e10cSrcweir 			if ( pListItem && pListItem->HasStartValue() ) {
1609*cdf0e10cSrcweir                nStartValue = pListItem->GetStartValue();
1610*cdf0e10cSrcweir             }
1611*cdf0e10cSrcweir 
1612*cdf0e10cSrcweir             // --> OD 2008-08-15 #i92811#
1613*cdf0e10cSrcweir             sListId = m_pImpl->m_pTextListsHelper->GetListIdForListBlock(
1614*cdf0e10cSrcweir                             *pListBlock);
1615*cdf0e10cSrcweir             // <--
1616*cdf0e10cSrcweir         }
1617*cdf0e10cSrcweir         else if (pNumberedParagraph)
1618*cdf0e10cSrcweir         {
1619*cdf0e10cSrcweir             xNewNumRules.set(pNumberedParagraph->GetNumRules());
1620*cdf0e10cSrcweir 			nLevel = static_cast<sal_Int8>(pNumberedParagraph->GetLevel());
1621*cdf0e10cSrcweir             sListId = pNumberedParagraph->GetListId();
1622*cdf0e10cSrcweir             nStartValue = pNumberedParagraph->GetStartValue();
1623*cdf0e10cSrcweir         }
1624*cdf0e10cSrcweir 
1625*cdf0e10cSrcweir 
1626*cdf0e10cSrcweir         if (pListBlock || pNumberedParagraph)
1627*cdf0e10cSrcweir 		{
1628*cdf0e10cSrcweir             // --> OD 2009-08-24 #i101349#
1629*cdf0e10cSrcweir             // Assure that list style of automatic paragraph style is applied at paragraph.
1630*cdf0e10cSrcweir             sal_Bool bApplyNumRules = pStyle && pStyle->IsListStyleSet();
1631*cdf0e10cSrcweir             if ( !bApplyNumRules )
1632*cdf0e10cSrcweir             {
1633*cdf0e10cSrcweir                 sal_Bool bSameNumRules = xNewNumRules == xNumRules;
1634*cdf0e10cSrcweir                 if( !bSameNumRules && xNewNumRules.is() && xNumRules.is() )
1635*cdf0e10cSrcweir                 {
1636*cdf0e10cSrcweir                     // If the interface pointers are different then this does
1637*cdf0e10cSrcweir                     // not mean that the num rules are different. Further tests
1638*cdf0e10cSrcweir                     // are required then. However, if only one num rule is
1639*cdf0e10cSrcweir                     // set, no tests are required of course.
1640*cdf0e10cSrcweir                     Reference< XNamed > xNewNamed( xNewNumRules, UNO_QUERY );
1641*cdf0e10cSrcweir                     Reference< XNamed > xNamed( xNumRules, UNO_QUERY );
1642*cdf0e10cSrcweir                     if( xNewNamed.is() && xNamed.is() )
1643*cdf0e10cSrcweir                     {
1644*cdf0e10cSrcweir                         bSameNumRules = xNewNamed->getName() == xNamed->getName();
1645*cdf0e10cSrcweir                     }
1646*cdf0e10cSrcweir                     else
1647*cdf0e10cSrcweir                     {
1648*cdf0e10cSrcweir                         Reference< XAnyCompare > xNumRuleCompare( xNumRules, UNO_QUERY );
1649*cdf0e10cSrcweir                         if( xNumRuleCompare.is() )
1650*cdf0e10cSrcweir                         {
1651*cdf0e10cSrcweir                             bSameNumRules = (xNumRuleCompare->compare( Any(xNumRules), Any(xNewNumRules) ) == 0);
1652*cdf0e10cSrcweir                         }
1653*cdf0e10cSrcweir                     }
1654*cdf0e10cSrcweir                 }
1655*cdf0e10cSrcweir                 bApplyNumRules = !bSameNumRules;
1656*cdf0e10cSrcweir             }
1657*cdf0e10cSrcweir 
1658*cdf0e10cSrcweir             if ( bApplyNumRules )
1659*cdf0e10cSrcweir             // <--
1660*cdf0e10cSrcweir 			{
1661*cdf0e10cSrcweir                 // #102607# This may except when xNewNumRules contains
1662*cdf0e10cSrcweir                 // a Writer-NumRule-Implementation bug gets applied to
1663*cdf0e10cSrcweir                 // a shape. Since this may occur inside a document
1664*cdf0e10cSrcweir                 // (e.g. when edited), this must be handled
1665*cdf0e10cSrcweir                 // gracefully.
1666*cdf0e10cSrcweir                 try
1667*cdf0e10cSrcweir                 {
1668*cdf0e10cSrcweir                     xPropSet->setPropertyValue(
1669*cdf0e10cSrcweir                         s_NumberingRules, makeAny(xNewNumRules) );
1670*cdf0e10cSrcweir                 }
1671*cdf0e10cSrcweir                 catch( Exception e )
1672*cdf0e10cSrcweir                 {
1673*cdf0e10cSrcweir                     ; // I would really like to use a warning here,
1674*cdf0e10cSrcweir                       // but I can't access the XMLErrorHandler from
1675*cdf0e10cSrcweir                       // here.
1676*cdf0e10cSrcweir                 }
1677*cdf0e10cSrcweir 			}
1678*cdf0e10cSrcweir 
1679*cdf0e10cSrcweir             if (!bNumberingIsNumber &&
1680*cdf0e10cSrcweir                 xPropSetInfo->hasPropertyByName(s_NumberingIsNumber))
1681*cdf0e10cSrcweir             {
1682*cdf0e10cSrcweir                 xPropSet->setPropertyValue(s_NumberingIsNumber, Any(sal_False));
1683*cdf0e10cSrcweir             }
1684*cdf0e10cSrcweir 
1685*cdf0e10cSrcweir             xPropSet->setPropertyValue( s_NumberingLevel, Any(nLevel) );
1686*cdf0e10cSrcweir 
1687*cdf0e10cSrcweir             if( pListBlock && pListBlock->IsRestartNumbering() )
1688*cdf0e10cSrcweir 			{
1689*cdf0e10cSrcweir 				// TODO: property missing
1690*cdf0e10cSrcweir                 if (xPropSetInfo->hasPropertyByName(s_ParaIsNumberingRestart))
1691*cdf0e10cSrcweir                 {
1692*cdf0e10cSrcweir 					sal_Bool bTmp = sal_True;
1693*cdf0e10cSrcweir                     xPropSet->setPropertyValue(s_ParaIsNumberingRestart,
1694*cdf0e10cSrcweir                                                makeAny(bTmp) );
1695*cdf0e10cSrcweir 				}
1696*cdf0e10cSrcweir 				pListBlock->ResetRestartNumbering();
1697*cdf0e10cSrcweir 			}
1698*cdf0e10cSrcweir 
1699*cdf0e10cSrcweir 			if ( 0 <= nStartValue &&
1700*cdf0e10cSrcweir                 xPropSetInfo->hasPropertyByName(s_NumberingStartValue))
1701*cdf0e10cSrcweir             {
1702*cdf0e10cSrcweir                 xPropSet->setPropertyValue(s_NumberingStartValue,
1703*cdf0e10cSrcweir                                            makeAny(nStartValue));
1704*cdf0e10cSrcweir             }
1705*cdf0e10cSrcweir 
1706*cdf0e10cSrcweir             // --> OD 2008-04-23 #refactorlists#
1707*cdf0e10cSrcweir             if (xPropSetInfo->hasPropertyByName(s_PropNameListId))
1708*cdf0e10cSrcweir             {
1709*cdf0e10cSrcweir                 if (sListId.getLength()) {
1710*cdf0e10cSrcweir                     xPropSet->setPropertyValue(s_PropNameListId,
1711*cdf0e10cSrcweir                         makeAny(sListId) );
1712*cdf0e10cSrcweir                 }
1713*cdf0e10cSrcweir             }
1714*cdf0e10cSrcweir             // <--
1715*cdf0e10cSrcweir 
1716*cdf0e10cSrcweir 			GetTextListHelper().SetListItem( (XMLTextListItemContext *)0 );
1717*cdf0e10cSrcweir 		}
1718*cdf0e10cSrcweir 		else
1719*cdf0e10cSrcweir 		{
1720*cdf0e10cSrcweir 			// If the paragraph is not in a list but its style, remove it from
1721*cdf0e10cSrcweir 			// the list.
1722*cdf0e10cSrcweir             // --> OD 2005-10-25 #126347# - do not remove it, if the list
1723*cdf0e10cSrcweir             // of the style is the chapter numbering rule.
1724*cdf0e10cSrcweir             if( xNumRules.is() )
1725*cdf0e10cSrcweir 			{
1726*cdf0e10cSrcweir                 bool bRemove( true );
1727*cdf0e10cSrcweir                 // --> OD 2008-12-17 #i70748# - special handling for document from OOo 2.x
1728*cdf0e10cSrcweir                 sal_Int32 nUPD( 0 );
1729*cdf0e10cSrcweir                 sal_Int32 nBuild( 0 );
1730*cdf0e10cSrcweir                 const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild );
1731*cdf0e10cSrcweir                 DBG_ASSERT( ( bBuildIdFound && nUPD == 680 ) ||
1732*cdf0e10cSrcweir                             !pStyle ||
1733*cdf0e10cSrcweir                             !pStyle->IsListStyleSet() ||
1734*cdf0e10cSrcweir                             pStyle->GetListStyle().getLength() == 0,
1735*cdf0e10cSrcweir                             "automatic paragraph style with list style name, but paragraph not in list???" );
1736*cdf0e10cSrcweir                 if ( ( bBuildIdFound && nUPD == 680 ) ||
1737*cdf0e10cSrcweir                      !pStyle || !pStyle->IsListStyleSet() )
1738*cdf0e10cSrcweir                 {
1739*cdf0e10cSrcweir                     if (m_pImpl->m_xChapterNumbering.is())
1740*cdf0e10cSrcweir                     {
1741*cdf0e10cSrcweir                         Reference< XNamed > xNumNamed( xNumRules, UNO_QUERY );
1742*cdf0e10cSrcweir                         Reference< XNamed > const xChapterNumNamed (
1743*cdf0e10cSrcweir                             m_pImpl->m_xChapterNumbering, UNO_QUERY);
1744*cdf0e10cSrcweir                         if ( xNumNamed.is() && xChapterNumNamed.is() &&
1745*cdf0e10cSrcweir                              xNumNamed->getName() == xChapterNumNamed->getName() )
1746*cdf0e10cSrcweir                         {
1747*cdf0e10cSrcweir                             bRemove = false;
1748*cdf0e10cSrcweir                             // --> OD 2008-09-10 #i70748#
1749*cdf0e10cSrcweir                             bApplyOutlineLevelAsListLevel = true;
1750*cdf0e10cSrcweir                             // <--
1751*cdf0e10cSrcweir                         }
1752*cdf0e10cSrcweir                     }
1753*cdf0e10cSrcweir                 }
1754*cdf0e10cSrcweir                 // <--
1755*cdf0e10cSrcweir                 if ( bRemove )
1756*cdf0e10cSrcweir                 {
1757*cdf0e10cSrcweir                     xPropSet->setPropertyValue( s_NumberingRules, Any() );
1758*cdf0e10cSrcweir                 }
1759*cdf0e10cSrcweir 			}
1760*cdf0e10cSrcweir             // <--
1761*cdf0e10cSrcweir 		}
1762*cdf0e10cSrcweir 	}
1763*cdf0e10cSrcweir 
1764*cdf0e10cSrcweir 	// hard paragraph properties
1765*cdf0e10cSrcweir 	if( pStyle )
1766*cdf0e10cSrcweir 	{
1767*cdf0e10cSrcweir 		pStyle->FillPropertySet( xPropSet );
1768*cdf0e10cSrcweir 		if( bPara && pStyle->HasMasterPageName() &&
1769*cdf0e10cSrcweir             xPropSetInfo->hasPropertyByName(s_PageDescName))
1770*cdf0e10cSrcweir 		{
1771*cdf0e10cSrcweir 			OUString sDisplayName(
1772*cdf0e10cSrcweir 				rImport.GetStyleDisplayName(
1773*cdf0e10cSrcweir 								XML_STYLE_FAMILY_MASTER_PAGE,
1774*cdf0e10cSrcweir 								pStyle->GetMasterPageName()) );
1775*cdf0e10cSrcweir 			if( !sDisplayName.getLength() ||
1776*cdf0e10cSrcweir                 (m_pImpl->m_xPageStyles.is() &&
1777*cdf0e10cSrcweir                  m_pImpl->m_xPageStyles->hasByName( sDisplayName)))
1778*cdf0e10cSrcweir             {
1779*cdf0e10cSrcweir                 xPropSet->setPropertyValue(s_PageDescName,
1780*cdf0e10cSrcweir                         makeAny(sDisplayName));
1781*cdf0e10cSrcweir             }
1782*cdf0e10cSrcweir         }
1783*cdf0e10cSrcweir 		if( bPara && pStyle->GetDropCapStyleName().getLength() &&
1784*cdf0e10cSrcweir             m_pImpl->m_xTextStyles.is())
1785*cdf0e10cSrcweir         {
1786*cdf0e10cSrcweir 			OUString sDisplayName(
1787*cdf0e10cSrcweir 				rImport.GetStyleDisplayName(
1788*cdf0e10cSrcweir 								XML_STYLE_FAMILY_TEXT_TEXT,
1789*cdf0e10cSrcweir 								pStyle->GetDropCapStyleName()) );
1790*cdf0e10cSrcweir             if (m_pImpl->m_xTextStyles->hasByName(sDisplayName) &&
1791*cdf0e10cSrcweir 				xPropSetInfo->hasPropertyByName( sDisplayName ) )
1792*cdf0e10cSrcweir 			{
1793*cdf0e10cSrcweir 				xPropSet->setPropertyValue( pStyle->sDropCapCharStyleName, makeAny(sDisplayName) );
1794*cdf0e10cSrcweir 			}
1795*cdf0e10cSrcweir 		}
1796*cdf0e10cSrcweir 
1797*cdf0e10cSrcweir 		// combined characters special treatment
1798*cdf0e10cSrcweir 		if (!bPara && pStyle->HasCombinedCharactersLetter())
1799*cdf0e10cSrcweir 		{
1800*cdf0e10cSrcweir 			// insert combined characters text field
1801*cdf0e10cSrcweir             if (m_pImpl->m_xServiceFactory.is())
1802*cdf0e10cSrcweir             {
1803*cdf0e10cSrcweir                 uno::Reference<beans::XPropertySet> const xTmp(
1804*cdf0e10cSrcweir                     m_pImpl->m_xServiceFactory->createInstance(
1805*cdf0e10cSrcweir                         s_ServiceCombinedCharacters), UNO_QUERY);
1806*cdf0e10cSrcweir 				if( xTmp.is() )
1807*cdf0e10cSrcweir 				{
1808*cdf0e10cSrcweir 					// fix cursor if larger than possible for
1809*cdf0e10cSrcweir 					// combined characters field
1810*cdf0e10cSrcweir 					if (rCursor->getString().getLength() >
1811*cdf0e10cSrcweir 							MAX_COMBINED_CHARACTERS)
1812*cdf0e10cSrcweir 					{
1813*cdf0e10cSrcweir 						rCursor->gotoRange(rCursor->getStart(), sal_False);
1814*cdf0e10cSrcweir 						rCursor->goRight(MAX_COMBINED_CHARACTERS, sal_True);
1815*cdf0e10cSrcweir 					}
1816*cdf0e10cSrcweir 
1817*cdf0e10cSrcweir 					// set field value (the combined character string)
1818*cdf0e10cSrcweir                     xTmp->setPropertyValue(s_Content,
1819*cdf0e10cSrcweir                         makeAny(rCursor->getString()));
1820*cdf0e10cSrcweir 
1821*cdf0e10cSrcweir 					// insert the field over it's original text
1822*cdf0e10cSrcweir 					Reference<XTextRange> xRange(rCursor, UNO_QUERY);
1823*cdf0e10cSrcweir 					Reference<XTextContent> xTextContent(xTmp, UNO_QUERY);
1824*cdf0e10cSrcweir                     if (m_pImpl->m_xText.is() && xRange.is())
1825*cdf0e10cSrcweir                     {
1826*cdf0e10cSrcweir 						// #i107225# the combined characters need to be inserted first
1827*cdf0e10cSrcweir                         // the selected text has to be removed afterwards
1828*cdf0e10cSrcweir                         m_pImpl->m_xText->insertTextContent( xRange->getStart(), xTextContent, sal_True );
1829*cdf0e10cSrcweir 
1830*cdf0e10cSrcweir                         if( xRange->getString().getLength() )
1831*cdf0e10cSrcweir                         {
1832*cdf0e10cSrcweir                             try
1833*cdf0e10cSrcweir                             {
1834*cdf0e10cSrcweir                                 uno::Reference< text::XTextCursor > xCrsr = xRange->getText()->createTextCursorByRange( xRange->getStart() );
1835*cdf0e10cSrcweir                                 xCrsr->goLeft( 1, true );
1836*cdf0e10cSrcweir                                 uno::Reference< beans::XPropertySet> xCrsrProperties( xCrsr, uno::UNO_QUERY_THROW );
1837*cdf0e10cSrcweir                                 //the hard properties of the removed text need to be applied to the combined characters field
1838*cdf0e10cSrcweir                                 pStyle->FillPropertySet( xCrsrProperties );
1839*cdf0e10cSrcweir                                 xCrsr->collapseToEnd();
1840*cdf0e10cSrcweir                                 xCrsr->gotoRange( xRange->getEnd(), true );
1841*cdf0e10cSrcweir                                 xCrsr->setString( ::rtl::OUString() );
1842*cdf0e10cSrcweir                             }
1843*cdf0e10cSrcweir                             catch( const uno::Exception& rEx )
1844*cdf0e10cSrcweir                             {
1845*cdf0e10cSrcweir                                 (void)rEx;
1846*cdf0e10cSrcweir                             }
1847*cdf0e10cSrcweir                         }
1848*cdf0e10cSrcweir                     }
1849*cdf0e10cSrcweir                 }
1850*cdf0e10cSrcweir             }
1851*cdf0e10cSrcweir         }
1852*cdf0e10cSrcweir     }
1853*cdf0e10cSrcweir 
1854*cdf0e10cSrcweir     // outline level; set after list style has been set
1855*cdf0e10cSrcweir     // --> OD 2005-08-25 #i53198#
1856*cdf0e10cSrcweir     // Complete re-worked and corrected:
1857*cdf0e10cSrcweir     // - set outline level at paragraph
1858*cdf0e10cSrcweir     // - set numbering level at paragraph, if none is already set
1859*cdf0e10cSrcweir     // - assure that style is marked as an outline style for the corresponding
1860*cdf0e10cSrcweir     //   outline level.
1861*cdf0e10cSrcweir     // - DO NOT set type of numbering rule to outline.
1862*cdf0e10cSrcweir     // - DO NOT set numbering rule directly at the paragraph.
1863*cdf0e10cSrcweir 
1864*cdf0e10cSrcweir     // --> OD 2008-12-09 #i70748#
1865*cdf0e10cSrcweir     // Some minor rework and adjust access to paragraph styles
1866*cdf0e10cSrcweir     if ( bPara )
1867*cdf0e10cSrcweir     {
1868*cdf0e10cSrcweir         // --> OD 2009-08-18 #i103817#
1869*cdf0e10cSrcweir         sal_Int16 nCurrentOutlineLevelInheritedFromParagraphStyle = 0;
1870*cdf0e10cSrcweir         const bool bHasOutlineLevelProp(
1871*cdf0e10cSrcweir             xPropSetInfo->hasPropertyByName(s_OutlineLevel));
1872*cdf0e10cSrcweir         if ( bHasOutlineLevelProp )
1873*cdf0e10cSrcweir         {
1874*cdf0e10cSrcweir             xPropSet->getPropertyValue(s_OutlineLevel)
1875*cdf0e10cSrcweir                 >>= nCurrentOutlineLevelInheritedFromParagraphStyle;
1876*cdf0e10cSrcweir         }
1877*cdf0e10cSrcweir         // <--
1878*cdf0e10cSrcweir         //if ( bPara && nOutlineLevel != -1 )   //#outline level,removed by zhaojianwei
1879*cdf0e10cSrcweir         if ( nOutlineLevel > 0 )       //add by zhaojianwei
1880*cdf0e10cSrcweir         {
1881*cdf0e10cSrcweir             //#outline level,removed by zhaojianwei
1882*cdf0e10cSrcweir             if ( bHasOutlineLevelProp )
1883*cdf0e10cSrcweir             {
1884*cdf0e10cSrcweir                 // In case that the value equals the value of its paragraph style
1885*cdf0e10cSrcweir                 // attribute outline level, the paragraph attribute value is left unset
1886*cdf0e10cSrcweir                 if ( nCurrentOutlineLevelInheritedFromParagraphStyle != nOutlineLevel )
1887*cdf0e10cSrcweir                 {
1888*cdf0e10cSrcweir                     xPropSet->setPropertyValue( s_OutlineLevel,
1889*cdf0e10cSrcweir                         makeAny( static_cast<sal_Int16>(nOutlineLevel) ) );
1890*cdf0e10cSrcweir                 }
1891*cdf0e10cSrcweir             }//<-end,zhaojianwei
1892*cdf0e10cSrcweir 
1893*cdf0e10cSrcweir             // --> OD 2008-09-10 #i70748#
1894*cdf0e10cSrcweir             if ( bApplyOutlineLevelAsListLevel )
1895*cdf0e10cSrcweir             {
1896*cdf0e10cSrcweir                 sal_Int16 nNumLevel = -1;
1897*cdf0e10cSrcweir                 xPropSet->getPropertyValue( s_NumberingLevel ) >>= nNumLevel;
1898*cdf0e10cSrcweir                 if ( nNumLevel == -1 ||
1899*cdf0e10cSrcweir                      nNumLevel != (nOutlineLevel - 1) )
1900*cdf0e10cSrcweir                 {
1901*cdf0e10cSrcweir                     xPropSet->setPropertyValue( s_NumberingLevel,
1902*cdf0e10cSrcweir                             makeAny( static_cast<sal_Int8>(nOutlineLevel - 1) ) );
1903*cdf0e10cSrcweir                 }
1904*cdf0e10cSrcweir             }
1905*cdf0e10cSrcweir             // <--
1906*cdf0e10cSrcweir             // --> OD 2006-10-13 #i69629# - correction:
1907*cdf0e10cSrcweir             // - for text document from version OOo 2.0.4/SO 8 PU4 and earlier
1908*cdf0e10cSrcweir             //   the paragraph style of a heading should be assigned to the
1909*cdf0e10cSrcweir             //   corresponding list level of the outline style.
1910*cdf0e10cSrcweir             // - for other text documents the paragraph style of a heading is only
1911*cdf0e10cSrcweir             //   a candidate for an assignment to the list level of the outline
1912*cdf0e10cSrcweir             //   style, if it has no direct list style property and (if exists) the
1913*cdf0e10cSrcweir             //   automatic paragraph style has also no direct list style set.
1914*cdf0e10cSrcweir             if (m_pImpl->m_xParaStyles->hasByName(sStyleName))
1915*cdf0e10cSrcweir             {
1916*cdf0e10cSrcweir                 bool bOutlineStyleCandidate( false );
1917*cdf0e10cSrcweir 
1918*cdf0e10cSrcweir                 sal_Int32 nUPD( 0 );
1919*cdf0e10cSrcweir                 sal_Int32 nBuild( 0 );
1920*cdf0e10cSrcweir                 // --> OD 2007-12-19 #152540#
1921*cdf0e10cSrcweir                 const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild );
1922*cdf0e10cSrcweir                 // --> OD 2007-07-25 #i73509#
1923*cdf0e10cSrcweir                 // --> OD 2008-03-19 #i86058# - check explicitly on certain versions
1924*cdf0e10cSrcweir                 if ( rImport.IsTextDocInOOoFileFormat() ||
1925*cdf0e10cSrcweir                      ( bBuildIdFound &&
1926*cdf0e10cSrcweir                        ( nUPD == 645 || nUPD == 641 ) ) )
1927*cdf0e10cSrcweir                 {
1928*cdf0e10cSrcweir                     bOutlineStyleCandidate = true;
1929*cdf0e10cSrcweir                 }
1930*cdf0e10cSrcweir                 else if ( nUPD == 680 && nBuild <= 9073 ) /* BuildId of OOo 2.0.4/SO8 PU4 */
1931*cdf0e10cSrcweir                 {
1932*cdf0e10cSrcweir                     bOutlineStyleCandidate = bOutlineLevelAttrFound;
1933*cdf0e10cSrcweir                 }
1934*cdf0e10cSrcweir                 // <--
1935*cdf0e10cSrcweir //                else
1936*cdf0e10cSrcweir //                {
1937*cdf0e10cSrcweir //                    Reference< XPropertyState > xStylePropState(
1938*cdf0e10cSrcweir //                                    xParaStyles->getByName( sStyleName ), UNO_QUERY );
1939*cdf0e10cSrcweir //                    if ( xStylePropState.is() &&
1940*cdf0e10cSrcweir //                         xStylePropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE )
1941*cdf0e10cSrcweir //                    {
1942*cdf0e10cSrcweir //                        bOutlineStyleCandidate = false;
1943*cdf0e10cSrcweir //                    }
1944*cdf0e10cSrcweir //                    // --> OD 2007-01-11 #i73361#
1945*cdf0e10cSrcweir //                    // The automatic paragraph style doesn't have to be considered.
1946*cdf0e10cSrcweir //    //                else if ( pStyle && /* automatic paragraph style */
1947*cdf0e10cSrcweir //    //                          pStyle->IsListStyleSet() )
1948*cdf0e10cSrcweir //    //                {
1949*cdf0e10cSrcweir //    //                    bOutlineStyleCandidate = false;
1950*cdf0e10cSrcweir //    //                }
1951*cdf0e10cSrcweir //                    // <--
1952*cdf0e10cSrcweir //                    else
1953*cdf0e10cSrcweir //                    {
1954*cdf0e10cSrcweir //                        bOutlineStyleCandidate = true;
1955*cdf0e10cSrcweir //                    }
1956*cdf0e10cSrcweir //                  }
1957*cdf0e10cSrcweir 
1958*cdf0e10cSrcweir                 if ( bOutlineStyleCandidate )
1959*cdf0e10cSrcweir                 {
1960*cdf0e10cSrcweir                     AddOutlineStyleCandidate( nOutlineLevel, sStyleName );
1961*cdf0e10cSrcweir                 }
1962*cdf0e10cSrcweir                 // --> OD 2009-08-18 #i103817#
1963*cdf0e10cSrcweir                 // Assure that heading applies the outline style
1964*cdf0e10cSrcweir                 if ( ( !pStyle || !pStyle->IsListStyleSet() ) &&
1965*cdf0e10cSrcweir                      !bOutlineStyleCandidate &&
1966*cdf0e10cSrcweir                      m_pImpl->m_xChapterNumbering.is())
1967*cdf0e10cSrcweir                 {
1968*cdf0e10cSrcweir                     OUString sEmptyStr;
1969*cdf0e10cSrcweir                     if ( !lcl_HasListStyle( sStyleName,
1970*cdf0e10cSrcweir                                     m_pImpl->m_xParaStyles, GetXMLImport(),
1971*cdf0e10cSrcweir                                     s_NumberingStyleName,
1972*cdf0e10cSrcweir                                     sEmptyStr ) )
1973*cdf0e10cSrcweir                     {
1974*cdf0e10cSrcweir                         // heading not in a list --> apply outline style
1975*cdf0e10cSrcweir                         xPropSet->setPropertyValue( s_NumberingRules,
1976*cdf0e10cSrcweir                             makeAny(m_pImpl->m_xChapterNumbering) );
1977*cdf0e10cSrcweir                         xPropSet->setPropertyValue( s_NumberingLevel,
1978*cdf0e10cSrcweir                             makeAny(static_cast<sal_Int8>(nOutlineLevel - 1)));
1979*cdf0e10cSrcweir                     }
1980*cdf0e10cSrcweir                 }
1981*cdf0e10cSrcweir                 // <--
1982*cdf0e10cSrcweir             }
1983*cdf0e10cSrcweir             // <--
1984*cdf0e10cSrcweir         }
1985*cdf0e10cSrcweir         //-> #outlinelevel added by zhaojianwei
1986*cdf0e10cSrcweir         //handle for text:p,if the paragraphstyle outlinelevel is set to[1~10]
1987*cdf0e10cSrcweir         else if( bHasOutlineLevelProp )
1988*cdf0e10cSrcweir         {
1989*cdf0e10cSrcweir             if ( nCurrentOutlineLevelInheritedFromParagraphStyle != 0 )
1990*cdf0e10cSrcweir             {
1991*cdf0e10cSrcweir                 sal_Int16 nZero = 0;
1992*cdf0e10cSrcweir                 xPropSet->setPropertyValue(s_OutlineLevel,
1993*cdf0e10cSrcweir                     makeAny( static_cast<sal_Int16>(nZero) ));
1994*cdf0e10cSrcweir             }
1995*cdf0e10cSrcweir         }//<-end,zhaojianwei
1996*cdf0e10cSrcweir     }
1997*cdf0e10cSrcweir 	// <--
1998*cdf0e10cSrcweir 
1999*cdf0e10cSrcweir 	return sStyleName;
2000*cdf0e10cSrcweir }
2001*cdf0e10cSrcweir 
2002*cdf0e10cSrcweir void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName,
2003*cdf0e10cSrcweir                                                 sal_Int8 nOutlineLevel )
2004*cdf0e10cSrcweir {
2005*cdf0e10cSrcweir     static ::rtl::OUString s_HeadingStyleName(
2006*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName"));
2007*cdf0e10cSrcweir 
2008*cdf0e10cSrcweir     // style name empty?
2009*cdf0e10cSrcweir     if( rStyleName.getLength() == 0 )
2010*cdf0e10cSrcweir     {
2011*cdf0e10cSrcweir         // Empty? Then we need o do stuff. Let's do error checking first.
2012*cdf0e10cSrcweir         if (m_pImpl->m_xChapterNumbering.is() &&
2013*cdf0e10cSrcweir             ( nOutlineLevel > 0 ) &&
2014*cdf0e10cSrcweir             (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount()))
2015*cdf0e10cSrcweir         {
2016*cdf0e10cSrcweir             nOutlineLevel--;   // for the remainder, the level's are 0-based
2017*cdf0e10cSrcweir 
2018*cdf0e10cSrcweir             // empty style name: look-up previously used name
2019*cdf0e10cSrcweir 
2020*cdf0e10cSrcweir             // if we don't have a previously used name, we'll use the default
2021*cdf0e10cSrcweir             m_pImpl->InitOutlineStylesCandidates();
2022*cdf0e10cSrcweir             if (m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].empty())
2023*cdf0e10cSrcweir             {
2024*cdf0e10cSrcweir                 // no other name used previously? Then use default
2025*cdf0e10cSrcweir 
2026*cdf0e10cSrcweir                 // iterate over property value sequence to find the style name
2027*cdf0e10cSrcweir                 Sequence<PropertyValue> aProperties;
2028*cdf0e10cSrcweir                 m_pImpl->m_xChapterNumbering->getByIndex( nOutlineLevel )
2029*cdf0e10cSrcweir                     >>= aProperties;
2030*cdf0e10cSrcweir                 for( sal_Int32 i = 0; i < aProperties.getLength(); i++ )
2031*cdf0e10cSrcweir                 {
2032*cdf0e10cSrcweir                     if (aProperties[i].Name == s_HeadingStyleName)
2033*cdf0e10cSrcweir                     {
2034*cdf0e10cSrcweir                         rtl::OUString aOutlineStyle;
2035*cdf0e10cSrcweir                         aProperties[i].Value >>= aOutlineStyle;
2036*cdf0e10cSrcweir                         m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel]
2037*cdf0e10cSrcweir                             .push_back( aOutlineStyle );
2038*cdf0e10cSrcweir                         break;  // early out, if we found it!.
2039*cdf0e10cSrcweir                     }
2040*cdf0e10cSrcweir                 }
2041*cdf0e10cSrcweir             }
2042*cdf0e10cSrcweir 
2043*cdf0e10cSrcweir             // finally, we'll use the previously used style name for this
2044*cdf0e10cSrcweir             // format (or the default we've just put into that style)
2045*cdf0e10cSrcweir             // --> OD 2006-11-06 #i71249# - take last added one
2046*cdf0e10cSrcweir             rStyleName =
2047*cdf0e10cSrcweir                 m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].back();
2048*cdf0e10cSrcweir             // <--
2049*cdf0e10cSrcweir         }
2050*cdf0e10cSrcweir         // else: nothing we can do, so we'll leave it empty
2051*cdf0e10cSrcweir     }
2052*cdf0e10cSrcweir     // else: we already had a style name, so we let it pass.
2053*cdf0e10cSrcweir }
2054*cdf0e10cSrcweir 
2055*cdf0e10cSrcweir void XMLTextImportHelper::AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel,
2056*cdf0e10cSrcweir                                                     const OUString& rStyleName )
2057*cdf0e10cSrcweir {
2058*cdf0e10cSrcweir     if (rStyleName.getLength()
2059*cdf0e10cSrcweir         && m_pImpl->m_xChapterNumbering.is()
2060*cdf0e10cSrcweir         && (nOutlineLevel > 0)
2061*cdf0e10cSrcweir         && (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount()))
2062*cdf0e10cSrcweir     {
2063*cdf0e10cSrcweir         m_pImpl->InitOutlineStylesCandidates();
2064*cdf0e10cSrcweir         m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel-1].push_back(
2065*cdf0e10cSrcweir             rStyleName);
2066*cdf0e10cSrcweir     }
2067*cdf0e10cSrcweir }
2068*cdf0e10cSrcweir 
2069*cdf0e10cSrcweir void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels )
2070*cdf0e10cSrcweir {
2071*cdf0e10cSrcweir     static ::rtl::OUString s_NumberingStyleName(
2072*cdf0e10cSrcweir             RTL_CONSTASCII_USTRINGPARAM("NumberingStyleName"));
2073*cdf0e10cSrcweir     static ::rtl::OUString s_HeadingStyleName(
2074*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("HeadingStyleName"));
2075*cdf0e10cSrcweir 
2076*cdf0e10cSrcweir     if ((m_pImpl->m_pOutlineStylesCandidates != NULL || bSetEmptyLevels) &&
2077*cdf0e10cSrcweir          m_pImpl->m_xChapterNumbering.is() &&
2078*cdf0e10cSrcweir          !IsInsertMode())
2079*cdf0e10cSrcweir     {
2080*cdf0e10cSrcweir         bool bChooseLastOne( false );
2081*cdf0e10cSrcweir         {
2082*cdf0e10cSrcweir             if ( GetXMLImport().IsTextDocInOOoFileFormat() )
2083*cdf0e10cSrcweir             {
2084*cdf0e10cSrcweir                 bChooseLastOne = true;
2085*cdf0e10cSrcweir             }
2086*cdf0e10cSrcweir             else
2087*cdf0e10cSrcweir             {
2088*cdf0e10cSrcweir                 sal_Int32 nUPD( 0 );
2089*cdf0e10cSrcweir                 sal_Int32 nBuild( 0 );
2090*cdf0e10cSrcweir                 if ( GetXMLImport().getBuildIds( nUPD, nBuild ) )
2091*cdf0e10cSrcweir                 {
2092*cdf0e10cSrcweir                     // check explicitly on certain versions
2093*cdf0e10cSrcweir                     bChooseLastOne = ( nUPD == 641 ) || ( nUPD == 645 ) ||  // prior OOo 2.0
2094*cdf0e10cSrcweir                                      ( nUPD == 680 && nBuild <= 9073 ); // OOo 2.0 - OOo 2.0.4
2095*cdf0e10cSrcweir                 }
2096*cdf0e10cSrcweir             }
2097*cdf0e10cSrcweir         }
2098*cdf0e10cSrcweir 
2099*cdf0e10cSrcweir         OUString sOutlineStyleName;
2100*cdf0e10cSrcweir         {
2101*cdf0e10cSrcweir             Reference<XPropertySet> xChapterNumRule(
2102*cdf0e10cSrcweir                 m_pImpl->m_xChapterNumbering, UNO_QUERY);
2103*cdf0e10cSrcweir             const OUString sName(RTL_CONSTASCII_USTRINGPARAM("Name"));
2104*cdf0e10cSrcweir             xChapterNumRule->getPropertyValue(sName) >>= sOutlineStyleName;
2105*cdf0e10cSrcweir         }
2106*cdf0e10cSrcweir 
2107*cdf0e10cSrcweir         const sal_Int32 nCount = m_pImpl->m_xChapterNumbering->getCount();
2108*cdf0e10cSrcweir         // --> OD 2009-11-13 #i106218#
2109*cdf0e10cSrcweir         // First collect all paragraph styles choosen for assignment to each
2110*cdf0e10cSrcweir         // list level of the outline style, then perform the intrinsic assignment.
2111*cdf0e10cSrcweir         // Reason: The assignment of a certain paragraph style to a list level
2112*cdf0e10cSrcweir         //         of the outline style causes side effects on the children
2113*cdf0e10cSrcweir         //         paragraph styles in Writer.
2114*cdf0e10cSrcweir         ::std::vector<OUString> sChosenStyles(nCount);
2115*cdf0e10cSrcweir         // <--
2116*cdf0e10cSrcweir         for( sal_Int32 i=0; i < nCount; ++i )
2117*cdf0e10cSrcweir 		{
2118*cdf0e10cSrcweir             if ( bSetEmptyLevels ||
2119*cdf0e10cSrcweir                  (m_pImpl->m_pOutlineStylesCandidates &&
2120*cdf0e10cSrcweir                   !m_pImpl->m_pOutlineStylesCandidates[i].empty()))
2121*cdf0e10cSrcweir 			{
2122*cdf0e10cSrcweir                 // determine, which candidate is one to be assigned to the list
2123*cdf0e10cSrcweir                 // level of the outline style
2124*cdf0e10cSrcweir                 if (m_pImpl->m_pOutlineStylesCandidates &&
2125*cdf0e10cSrcweir                     !m_pImpl->m_pOutlineStylesCandidates[i].empty())
2126*cdf0e10cSrcweir                 {
2127*cdf0e10cSrcweir                     if ( bChooseLastOne )
2128*cdf0e10cSrcweir                     {
2129*cdf0e10cSrcweir                         sChosenStyles[i] =
2130*cdf0e10cSrcweir                         m_pImpl->m_pOutlineStylesCandidates[i].back();
2131*cdf0e10cSrcweir                     }
2132*cdf0e10cSrcweir                     else
2133*cdf0e10cSrcweir                     {
2134*cdf0e10cSrcweir                         for (sal_uInt32 j = 0;
2135*cdf0e10cSrcweir                             j < m_pImpl->m_pOutlineStylesCandidates[i].size();
2136*cdf0e10cSrcweir                             ++j)
2137*cdf0e10cSrcweir                         {
2138*cdf0e10cSrcweir                             if (!lcl_HasListStyle(
2139*cdf0e10cSrcweir                                     m_pImpl->m_pOutlineStylesCandidates[i][j],
2140*cdf0e10cSrcweir                                     m_pImpl->m_xParaStyles, GetXMLImport(),
2141*cdf0e10cSrcweir                                     s_NumberingStyleName,
2142*cdf0e10cSrcweir                                     sOutlineStyleName))
2143*cdf0e10cSrcweir                             {
2144*cdf0e10cSrcweir                                 sChosenStyles[i] =
2145*cdf0e10cSrcweir                                     m_pImpl->m_pOutlineStylesCandidates[i][j];
2146*cdf0e10cSrcweir                                 break;
2147*cdf0e10cSrcweir                             }
2148*cdf0e10cSrcweir                         }
2149*cdf0e10cSrcweir                     }
2150*cdf0e10cSrcweir                 }
2151*cdf0e10cSrcweir             }
2152*cdf0e10cSrcweir 		}
2153*cdf0e10cSrcweir         // --> OD 2009-11-13 #i106218#
2154*cdf0e10cSrcweir         Sequence < PropertyValue > aProps( 1 );
2155*cdf0e10cSrcweir         PropertyValue *pProps = aProps.getArray();
2156*cdf0e10cSrcweir         pProps->Name = s_HeadingStyleName;
2157*cdf0e10cSrcweir         for ( sal_Int32 i = 0; i < nCount; ++i )
2158*cdf0e10cSrcweir         {
2159*cdf0e10cSrcweir             // --> OD 2009-12-11 #i107610#
2160*cdf0e10cSrcweir             if ( bSetEmptyLevels ||
2161*cdf0e10cSrcweir                  sChosenStyles[i].getLength() > 0 )
2162*cdf0e10cSrcweir             // <--
2163*cdf0e10cSrcweir             {
2164*cdf0e10cSrcweir                 pProps->Value <<= sChosenStyles[i];
2165*cdf0e10cSrcweir                 m_pImpl->m_xChapterNumbering->replaceByIndex(i,
2166*cdf0e10cSrcweir                         makeAny( aProps ));
2167*cdf0e10cSrcweir             }
2168*cdf0e10cSrcweir         }
2169*cdf0e10cSrcweir         // <--
2170*cdf0e10cSrcweir     }
2171*cdf0e10cSrcweir }
2172*cdf0e10cSrcweir 
2173*cdf0e10cSrcweir void XMLTextImportHelper::SetHyperlink(
2174*cdf0e10cSrcweir 	SvXMLImport& rImport,
2175*cdf0e10cSrcweir 	const Reference < XTextCursor >& rCursor,
2176*cdf0e10cSrcweir 	const OUString& rHRef,
2177*cdf0e10cSrcweir 	const OUString& rName,
2178*cdf0e10cSrcweir 	const OUString& rTargetFrameName,
2179*cdf0e10cSrcweir 	const OUString& rStyleName,
2180*cdf0e10cSrcweir 	const OUString& rVisitedStyleName,
2181*cdf0e10cSrcweir 	XMLEventsImportContext* pEvents)
2182*cdf0e10cSrcweir {
2183*cdf0e10cSrcweir     static ::rtl::OUString s_HyperLinkURL(
2184*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("HyperLinkURL"));
2185*cdf0e10cSrcweir     static ::rtl::OUString s_HyperLinkName(
2186*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("HyperLinkName"));
2187*cdf0e10cSrcweir     static ::rtl::OUString s_HyperLinkTarget(
2188*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("HyperLinkTarget"));
2189*cdf0e10cSrcweir     static ::rtl::OUString s_UnvisitedCharStyleName(
2190*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("UnvisitedCharStyleName"));
2191*cdf0e10cSrcweir     static ::rtl::OUString s_VisitedCharStyleName(
2192*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("VisitedCharStyleName"));
2193*cdf0e10cSrcweir     static ::rtl::OUString s_HyperLinkEvents(
2194*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("HyperLinkEvents"));
2195*cdf0e10cSrcweir 
2196*cdf0e10cSrcweir 	Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY );
2197*cdf0e10cSrcweir 	Reference < XPropertySetInfo > xPropSetInfo(
2198*cdf0e10cSrcweir 		xPropSet->getPropertySetInfo());
2199*cdf0e10cSrcweir     if (!xPropSetInfo.is() || !xPropSetInfo->hasPropertyByName(s_HyperLinkURL))
2200*cdf0e10cSrcweir 		return;
2201*cdf0e10cSrcweir 
2202*cdf0e10cSrcweir     xPropSet->setPropertyValue(s_HyperLinkURL, makeAny(rHRef));
2203*cdf0e10cSrcweir 
2204*cdf0e10cSrcweir     if (xPropSetInfo->hasPropertyByName(s_HyperLinkName))
2205*cdf0e10cSrcweir     {
2206*cdf0e10cSrcweir         xPropSet->setPropertyValue(s_HyperLinkName, makeAny(rName));
2207*cdf0e10cSrcweir     }
2208*cdf0e10cSrcweir 
2209*cdf0e10cSrcweir     if (xPropSetInfo->hasPropertyByName(s_HyperLinkTarget))
2210*cdf0e10cSrcweir     {
2211*cdf0e10cSrcweir         xPropSet->setPropertyValue(s_HyperLinkTarget,
2212*cdf0e10cSrcweir             makeAny(rTargetFrameName));
2213*cdf0e10cSrcweir     }
2214*cdf0e10cSrcweir 
2215*cdf0e10cSrcweir 	if ( (pEvents != NULL) &&
2216*cdf0e10cSrcweir         xPropSetInfo->hasPropertyByName(s_HyperLinkEvents))
2217*cdf0e10cSrcweir 	{
2218*cdf0e10cSrcweir 		// The API treats events at hyperlinks differently from most
2219*cdf0e10cSrcweir 		// other properties: You have to set a name replace with the
2220*cdf0e10cSrcweir 		// events in it. The easiest way to to this is to 1) get
2221*cdf0e10cSrcweir 		// events, 2) set new ones, and 3) then put events back.
2222*cdf0e10cSrcweir         uno::Reference<XNameReplace> const xReplace(
2223*cdf0e10cSrcweir             xPropSet->getPropertyValue(s_HyperLinkEvents), UNO_QUERY);
2224*cdf0e10cSrcweir 		if (xReplace.is())
2225*cdf0e10cSrcweir 		{
2226*cdf0e10cSrcweir 			// set events
2227*cdf0e10cSrcweir 			pEvents->SetEvents(xReplace);
2228*cdf0e10cSrcweir 
2229*cdf0e10cSrcweir 			// put events
2230*cdf0e10cSrcweir             xPropSet->setPropertyValue(s_HyperLinkEvents, makeAny(xReplace));
2231*cdf0e10cSrcweir         }
2232*cdf0e10cSrcweir     }
2233*cdf0e10cSrcweir 
2234*cdf0e10cSrcweir     if (m_pImpl->m_xTextStyles.is())
2235*cdf0e10cSrcweir     {
2236*cdf0e10cSrcweir 		OUString sDisplayName(
2237*cdf0e10cSrcweir 			rImport.GetStyleDisplayName(
2238*cdf0e10cSrcweir 							XML_STYLE_FAMILY_TEXT_TEXT, rStyleName ) );
2239*cdf0e10cSrcweir 		if( sDisplayName.getLength() &&
2240*cdf0e10cSrcweir             xPropSetInfo->hasPropertyByName(s_UnvisitedCharStyleName) &&
2241*cdf0e10cSrcweir             m_pImpl->m_xTextStyles->hasByName(sDisplayName))
2242*cdf0e10cSrcweir         {
2243*cdf0e10cSrcweir             xPropSet->setPropertyValue(s_UnvisitedCharStyleName,
2244*cdf0e10cSrcweir                 makeAny(sDisplayName));
2245*cdf0e10cSrcweir         }
2246*cdf0e10cSrcweir 
2247*cdf0e10cSrcweir 		sDisplayName =
2248*cdf0e10cSrcweir 			rImport.GetStyleDisplayName(
2249*cdf0e10cSrcweir 							XML_STYLE_FAMILY_TEXT_TEXT, rVisitedStyleName );
2250*cdf0e10cSrcweir 		if( sDisplayName.getLength() &&
2251*cdf0e10cSrcweir             xPropSetInfo->hasPropertyByName(s_VisitedCharStyleName) &&
2252*cdf0e10cSrcweir             m_pImpl->m_xTextStyles->hasByName(sDisplayName))
2253*cdf0e10cSrcweir         {
2254*cdf0e10cSrcweir             xPropSet->setPropertyValue(s_VisitedCharStyleName,
2255*cdf0e10cSrcweir                 makeAny(sDisplayName));
2256*cdf0e10cSrcweir         }
2257*cdf0e10cSrcweir     }
2258*cdf0e10cSrcweir }
2259*cdf0e10cSrcweir 
2260*cdf0e10cSrcweir void XMLTextImportHelper::SetRuby(
2261*cdf0e10cSrcweir 	SvXMLImport& rImport,
2262*cdf0e10cSrcweir 	const Reference < XTextCursor >& rCursor,
2263*cdf0e10cSrcweir 	const OUString& rStyleName,
2264*cdf0e10cSrcweir 	const OUString& rTextStyleName,
2265*cdf0e10cSrcweir 	const OUString& rText )
2266*cdf0e10cSrcweir {
2267*cdf0e10cSrcweir 	Reference<XPropertySet> xPropSet(rCursor, UNO_QUERY);
2268*cdf0e10cSrcweir 
2269*cdf0e10cSrcweir 	OUString sRubyText(RTL_CONSTASCII_USTRINGPARAM("RubyText"));
2270*cdf0e10cSrcweir 	OUString sRubyCharStyleName(RTL_CONSTASCII_USTRINGPARAM("RubyCharStyleName"));
2271*cdf0e10cSrcweir 
2272*cdf0e10cSrcweir 	// if we have one Ruby property, we assume all of them are present
2273*cdf0e10cSrcweir 	if (xPropSet.is() &&
2274*cdf0e10cSrcweir 		xPropSet->getPropertySetInfo()->hasPropertyByName( sRubyText ))
2275*cdf0e10cSrcweir 	{
2276*cdf0e10cSrcweir 		// the ruby text
2277*cdf0e10cSrcweir 		xPropSet->setPropertyValue(sRubyText, makeAny(rText));
2278*cdf0e10cSrcweir 
2279*cdf0e10cSrcweir 		// the ruby style (ruby-adjust)
2280*cdf0e10cSrcweir 		XMLPropStyleContext *pStyle = 0;
2281*cdf0e10cSrcweir         if (rStyleName.getLength() && m_pImpl->m_xAutoStyles.Is())
2282*cdf0e10cSrcweir         {
2283*cdf0e10cSrcweir             const SvXMLStyleContext* pTempStyle =
2284*cdf0e10cSrcweir                 ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2285*cdf0e10cSrcweir 				FindStyleChildContext( XML_STYLE_FAMILY_TEXT_RUBY,
2286*cdf0e10cSrcweir 									   rStyleName, sal_True );
2287*cdf0e10cSrcweir 			pStyle = PTR_CAST(XMLPropStyleContext,pTempStyle);
2288*cdf0e10cSrcweir 
2289*cdf0e10cSrcweir 			if (NULL != pStyle)
2290*cdf0e10cSrcweir 				pStyle->FillPropertySet( xPropSet );
2291*cdf0e10cSrcweir 		}
2292*cdf0e10cSrcweir 
2293*cdf0e10cSrcweir 		// the ruby text character style
2294*cdf0e10cSrcweir         if (m_pImpl->m_xTextStyles.is())
2295*cdf0e10cSrcweir         {
2296*cdf0e10cSrcweir 			OUString sDisplayName(
2297*cdf0e10cSrcweir 				rImport.GetStyleDisplayName(
2298*cdf0e10cSrcweir 							XML_STYLE_FAMILY_TEXT_TEXT, rTextStyleName ) );
2299*cdf0e10cSrcweir 			if( (sDisplayName.getLength() > 0) &&
2300*cdf0e10cSrcweir //				xPropSetInfo->hasPropertyByName( sRubyCharStyleName ) &&
2301*cdf0e10cSrcweir                 m_pImpl->m_xTextStyles->hasByName( sDisplayName ))
2302*cdf0e10cSrcweir             {
2303*cdf0e10cSrcweir 				xPropSet->setPropertyValue(sRubyCharStyleName, makeAny(sDisplayName));
2304*cdf0e10cSrcweir 			}
2305*cdf0e10cSrcweir 		}
2306*cdf0e10cSrcweir 	}
2307*cdf0e10cSrcweir }
2308*cdf0e10cSrcweir 
2309*cdf0e10cSrcweir void XMLTextImportHelper::SetAutoStyles( SvXMLStylesContext *pStyles )
2310*cdf0e10cSrcweir {
2311*cdf0e10cSrcweir     m_pImpl->m_xAutoStyles = pStyles;
2312*cdf0e10cSrcweir }
2313*cdf0e10cSrcweir 
2314*cdf0e10cSrcweir void XMLTextImportHelper::SetFontDecls( XMLFontStylesContext *pFontDecls )
2315*cdf0e10cSrcweir {
2316*cdf0e10cSrcweir     m_pImpl->m_xFontDecls = pFontDecls;
2317*cdf0e10cSrcweir     ((XMLTextImportPropertyMapper *)m_pImpl->m_xParaImpPrMap.get())
2318*cdf0e10cSrcweir 		->SetFontDecls( pFontDecls );
2319*cdf0e10cSrcweir     ((XMLTextImportPropertyMapper *)m_pImpl->m_xTextImpPrMap.get())
2320*cdf0e10cSrcweir 		->SetFontDecls( pFontDecls );
2321*cdf0e10cSrcweir }
2322*cdf0e10cSrcweir 
2323*cdf0e10cSrcweir const XMLFontStylesContext *XMLTextImportHelper::GetFontDecls() const
2324*cdf0e10cSrcweir {
2325*cdf0e10cSrcweir     return (XMLFontStylesContext *)&m_pImpl->m_xFontDecls;
2326*cdf0e10cSrcweir }
2327*cdf0e10cSrcweir 
2328*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::HasDrawNameAttribute(
2329*cdf0e10cSrcweir 		const Reference< XAttributeList > & xAttrList,
2330*cdf0e10cSrcweir 		SvXMLNamespaceMap& rNamespaceMap )
2331*cdf0e10cSrcweir {
2332*cdf0e10cSrcweir 	sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
2333*cdf0e10cSrcweir 	for( sal_Int16 i=0; i < nAttrCount; i++ )
2334*cdf0e10cSrcweir 	{
2335*cdf0e10cSrcweir 		const OUString& rAttrName = xAttrList->getNameByIndex( i );
2336*cdf0e10cSrcweir 
2337*cdf0e10cSrcweir 		OUString aLocalName;
2338*cdf0e10cSrcweir 		sal_uInt16 nPrefix =
2339*cdf0e10cSrcweir 			rNamespaceMap.GetKeyByAttrName( rAttrName, &aLocalName );
2340*cdf0e10cSrcweir 		if( XML_NAMESPACE_DRAW == nPrefix &&
2341*cdf0e10cSrcweir 			IsXMLToken( aLocalName, XML_NAME ) )
2342*cdf0e10cSrcweir 		{
2343*cdf0e10cSrcweir 			return xAttrList->getValueByIndex(i).getLength() != 0;
2344*cdf0e10cSrcweir 		}
2345*cdf0e10cSrcweir 	}
2346*cdf0e10cSrcweir 
2347*cdf0e10cSrcweir 	return sal_False;
2348*cdf0e10cSrcweir }
2349*cdf0e10cSrcweir 
2350*cdf0e10cSrcweir SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
2351*cdf0e10cSrcweir 		SvXMLImport& rImport,
2352*cdf0e10cSrcweir 		sal_uInt16 nPrefix, const OUString& rLocalName,
2353*cdf0e10cSrcweir 		const Reference< XAttributeList > & xAttrList,
2354*cdf0e10cSrcweir 	    XMLTextType eType )
2355*cdf0e10cSrcweir {
2356*cdf0e10cSrcweir 	SvXMLImportContext *pContext = 0;
2357*cdf0e10cSrcweir 
2358*cdf0e10cSrcweir 	const SvXMLTokenMap& rTokenMap = GetTextElemTokenMap();
2359*cdf0e10cSrcweir 	sal_Bool bHeading = sal_False;
2360*cdf0e10cSrcweir 	sal_Bool bContent = sal_True;
2361*cdf0e10cSrcweir 	sal_uInt16 nToken = rTokenMap.Get( nPrefix, rLocalName );
2362*cdf0e10cSrcweir 	switch( nToken )
2363*cdf0e10cSrcweir 	{
2364*cdf0e10cSrcweir 	case XML_TOK_TEXT_H:
2365*cdf0e10cSrcweir 		bHeading = sal_True;
2366*cdf0e10cSrcweir 	case XML_TOK_TEXT_P:
2367*cdf0e10cSrcweir 		pContext = new XMLParaContext( rImport,
2368*cdf0e10cSrcweir 									   nPrefix, rLocalName,
2369*cdf0e10cSrcweir 									   xAttrList, bHeading );
2370*cdf0e10cSrcweir         if (m_pImpl->m_bProgress && XML_TEXT_TYPE_SHAPE != eType)
2371*cdf0e10cSrcweir 		{
2372*cdf0e10cSrcweir 			rImport.GetProgressBarHelper()->Increment();
2373*cdf0e10cSrcweir 		}
2374*cdf0e10cSrcweir 		break;
2375*cdf0e10cSrcweir     case XML_TOK_TEXT_NUMBERED_PARAGRAPH:
2376*cdf0e10cSrcweir         pContext = new XMLNumberedParaContext(
2377*cdf0e10cSrcweir                         rImport, nPrefix, rLocalName, xAttrList );
2378*cdf0e10cSrcweir 		break;
2379*cdf0e10cSrcweir 	case XML_TOK_TEXT_LIST:
2380*cdf0e10cSrcweir 		pContext = new XMLTextListBlockContext( rImport, *this,
2381*cdf0e10cSrcweir 												nPrefix, rLocalName,
2382*cdf0e10cSrcweir 											    xAttrList );
2383*cdf0e10cSrcweir 		break;
2384*cdf0e10cSrcweir 	case XML_TOK_TABLE_TABLE:
2385*cdf0e10cSrcweir 		if( XML_TEXT_TYPE_BODY == eType ||
2386*cdf0e10cSrcweir 			XML_TEXT_TYPE_TEXTBOX == eType ||
2387*cdf0e10cSrcweir 		 	XML_TEXT_TYPE_SECTION == eType ||
2388*cdf0e10cSrcweir 			XML_TEXT_TYPE_HEADER_FOOTER == eType ||
2389*cdf0e10cSrcweir             XML_TEXT_TYPE_CHANGED_REGION == eType ||
2390*cdf0e10cSrcweir             XML_TEXT_TYPE_CELL == eType )
2391*cdf0e10cSrcweir 			pContext = CreateTableChildContext( rImport, nPrefix, rLocalName,
2392*cdf0e10cSrcweir 												xAttrList );
2393*cdf0e10cSrcweir 		break;
2394*cdf0e10cSrcweir 	case XML_TOK_TEXT_SEQUENCE_DECLS:
2395*cdf0e10cSrcweir         if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
2396*cdf0e10cSrcweir 			XML_TEXT_TYPE_HEADER_FOOTER == eType )
2397*cdf0e10cSrcweir 		{
2398*cdf0e10cSrcweir 			pContext = new XMLVariableDeclsImportContext(
2399*cdf0e10cSrcweir 				rImport, *this,	nPrefix, rLocalName, VarTypeSequence);
2400*cdf0e10cSrcweir 			bContent = sal_False;
2401*cdf0e10cSrcweir 		}
2402*cdf0e10cSrcweir 		break;
2403*cdf0e10cSrcweir 
2404*cdf0e10cSrcweir 	case XML_TOK_TEXT_VARFIELD_DECLS:
2405*cdf0e10cSrcweir         if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
2406*cdf0e10cSrcweir 			XML_TEXT_TYPE_HEADER_FOOTER == eType )
2407*cdf0e10cSrcweir 		{
2408*cdf0e10cSrcweir 			pContext = new XMLVariableDeclsImportContext(
2409*cdf0e10cSrcweir 				rImport, *this, nPrefix, rLocalName, VarTypeSimple);
2410*cdf0e10cSrcweir 			bContent = sal_False;
2411*cdf0e10cSrcweir 		}
2412*cdf0e10cSrcweir 		break;
2413*cdf0e10cSrcweir 
2414*cdf0e10cSrcweir 	case XML_TOK_TEXT_USERFIELD_DECLS:
2415*cdf0e10cSrcweir         if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted)||
2416*cdf0e10cSrcweir 			XML_TEXT_TYPE_HEADER_FOOTER == eType )
2417*cdf0e10cSrcweir 		{
2418*cdf0e10cSrcweir 			pContext = new XMLVariableDeclsImportContext(
2419*cdf0e10cSrcweir 				rImport, *this, nPrefix, rLocalName, VarTypeUserField);
2420*cdf0e10cSrcweir 			bContent = sal_False;
2421*cdf0e10cSrcweir 		}
2422*cdf0e10cSrcweir 		break;
2423*cdf0e10cSrcweir 
2424*cdf0e10cSrcweir 	case XML_TOK_TEXT_DDE_DECLS:
2425*cdf0e10cSrcweir         if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
2426*cdf0e10cSrcweir 			XML_TEXT_TYPE_HEADER_FOOTER == eType )
2427*cdf0e10cSrcweir 		{
2428*cdf0e10cSrcweir 			pContext = new XMLDdeFieldDeclsImportContext(
2429*cdf0e10cSrcweir 				rImport, nPrefix, rLocalName);
2430*cdf0e10cSrcweir 			bContent = sal_False;
2431*cdf0e10cSrcweir 		}
2432*cdf0e10cSrcweir 		break;
2433*cdf0e10cSrcweir 
2434*cdf0e10cSrcweir 	case XML_TOK_TEXT_FRAME_PAGE:
2435*cdf0e10cSrcweir         if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
2436*cdf0e10cSrcweir 			XML_TEXT_TYPE_TEXTBOX == eType ||
2437*cdf0e10cSrcweir 			XML_TEXT_TYPE_CHANGED_REGION == eType )
2438*cdf0e10cSrcweir 		{
2439*cdf0e10cSrcweir 			TextContentAnchorType eAnchorType =
2440*cdf0e10cSrcweir 				XML_TEXT_TYPE_TEXTBOX == eType ? TextContentAnchorType_AT_FRAME
2441*cdf0e10cSrcweir 											   : TextContentAnchorType_AT_PAGE;
2442*cdf0e10cSrcweir 			pContext = new XMLTextFrameContext( rImport, nPrefix,
2443*cdf0e10cSrcweir 												rLocalName, xAttrList,
2444*cdf0e10cSrcweir 												eAnchorType );
2445*cdf0e10cSrcweir 			bContent = sal_False;
2446*cdf0e10cSrcweir 		}
2447*cdf0e10cSrcweir 		break;
2448*cdf0e10cSrcweir 
2449*cdf0e10cSrcweir 	case XML_TOK_DRAW_A_PAGE:
2450*cdf0e10cSrcweir         if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
2451*cdf0e10cSrcweir 			XML_TEXT_TYPE_TEXTBOX == eType ||
2452*cdf0e10cSrcweir 		 	XML_TEXT_TYPE_CHANGED_REGION == eType)
2453*cdf0e10cSrcweir 		{
2454*cdf0e10cSrcweir 			TextContentAnchorType eAnchorType =
2455*cdf0e10cSrcweir 				XML_TEXT_TYPE_TEXTBOX == eType ? TextContentAnchorType_AT_FRAME
2456*cdf0e10cSrcweir 											   : TextContentAnchorType_AT_PAGE;
2457*cdf0e10cSrcweir 			pContext = new XMLTextFrameHyperlinkContext( rImport, nPrefix,
2458*cdf0e10cSrcweir 												rLocalName, xAttrList,
2459*cdf0e10cSrcweir 												eAnchorType );
2460*cdf0e10cSrcweir 			bContent = sal_False;
2461*cdf0e10cSrcweir 		}
2462*cdf0e10cSrcweir 		break;
2463*cdf0e10cSrcweir 
2464*cdf0e10cSrcweir 	case XML_TOK_TEXT_INDEX_TITLE:
2465*cdf0e10cSrcweir 	case XML_TOK_TEXT_SECTION:
2466*cdf0e10cSrcweir #ifndef SVX_LIGHT
2467*cdf0e10cSrcweir 		pContext = new XMLSectionImportContext( rImport, nPrefix, rLocalName );
2468*cdf0e10cSrcweir #else
2469*cdf0e10cSrcweir 		// create default context to skip content
2470*cdf0e10cSrcweir 		pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName );
2471*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT
2472*cdf0e10cSrcweir 		break;
2473*cdf0e10cSrcweir 
2474*cdf0e10cSrcweir 	case XML_TOK_TEXT_TOC:
2475*cdf0e10cSrcweir 	case XML_TOK_TEXT_OBJECT_INDEX:
2476*cdf0e10cSrcweir 	case XML_TOK_TEXT_TABLE_INDEX:
2477*cdf0e10cSrcweir 	case XML_TOK_TEXT_ILLUSTRATION_INDEX:
2478*cdf0e10cSrcweir 	case XML_TOK_TEXT_USER_INDEX:
2479*cdf0e10cSrcweir 	case XML_TOK_TEXT_ALPHABETICAL_INDEX:
2480*cdf0e10cSrcweir 	case XML_TOK_TEXT_BIBLIOGRAPHY_INDEX:
2481*cdf0e10cSrcweir #ifndef SVX_LIGHT
2482*cdf0e10cSrcweir 		if( XML_TEXT_TYPE_SHAPE != eType )
2483*cdf0e10cSrcweir 			pContext = new XMLIndexTOCContext( rImport, nPrefix, rLocalName );
2484*cdf0e10cSrcweir #else
2485*cdf0e10cSrcweir 		// create default context to skip content
2486*cdf0e10cSrcweir 		pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName );
2487*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT
2488*cdf0e10cSrcweir 		break;
2489*cdf0e10cSrcweir 
2490*cdf0e10cSrcweir 	case XML_TOK_TEXT_TRACKED_CHANGES:
2491*cdf0e10cSrcweir #ifndef SVX_LIGHT
2492*cdf0e10cSrcweir 		pContext = new XMLTrackedChangesImportContext( rImport, nPrefix,
2493*cdf0e10cSrcweir 													   rLocalName);
2494*cdf0e10cSrcweir #else
2495*cdf0e10cSrcweir 		// create default context to skip content
2496*cdf0e10cSrcweir 		pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName );
2497*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT
2498*cdf0e10cSrcweir 		bContent = sal_False;
2499*cdf0e10cSrcweir 		break;
2500*cdf0e10cSrcweir 
2501*cdf0e10cSrcweir 	case XML_TOK_TEXT_CHANGE:
2502*cdf0e10cSrcweir 	case XML_TOK_TEXT_CHANGE_START:
2503*cdf0e10cSrcweir 	case XML_TOK_TEXT_CHANGE_END:
2504*cdf0e10cSrcweir 		pContext = new XMLChangeImportContext(
2505*cdf0e10cSrcweir 			rImport, nPrefix, rLocalName,
2506*cdf0e10cSrcweir 			(XML_TOK_TEXT_CHANGE_END != nToken),
2507*cdf0e10cSrcweir 			(XML_TOK_TEXT_CHANGE_START != nToken),
2508*cdf0e10cSrcweir 			sal_True);
2509*cdf0e10cSrcweir 		break;
2510*cdf0e10cSrcweir 
2511*cdf0e10cSrcweir 	case XML_TOK_TEXT_FORMS:
2512*cdf0e10cSrcweir #ifndef SVX_LIGHT
2513*cdf0e10cSrcweir 		pContext = rImport.GetFormImport()->createOfficeFormsContext(rImport, nPrefix, rLocalName);
2514*cdf0e10cSrcweir #else
2515*cdf0e10cSrcweir 		// create default context to skip content
2516*cdf0e10cSrcweir 		pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName );
2517*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT
2518*cdf0e10cSrcweir 		bContent = sal_False;
2519*cdf0e10cSrcweir 		break;
2520*cdf0e10cSrcweir 
2521*cdf0e10cSrcweir 	case XML_TOK_TEXT_AUTOMARK:
2522*cdf0e10cSrcweir 		if( XML_TEXT_TYPE_BODY == eType )
2523*cdf0e10cSrcweir 		{
2524*cdf0e10cSrcweir 			pContext = new XMLAutoMarkFileContext(rImport, nPrefix,rLocalName);
2525*cdf0e10cSrcweir 		}
2526*cdf0e10cSrcweir 		bContent = sal_False;
2527*cdf0e10cSrcweir 		break;
2528*cdf0e10cSrcweir 
2529*cdf0e10cSrcweir 	case XML_TOK_TEXT_CALCULATION_SETTINGS:
2530*cdf0e10cSrcweir #ifndef SVX_LIGHT
2531*cdf0e10cSrcweir 		pContext = new XMLCalculationSettingsContext ( rImport, nPrefix, rLocalName, xAttrList);
2532*cdf0e10cSrcweir #else
2533*cdf0e10cSrcweir 		// create default context to skip content
2534*cdf0e10cSrcweir 		pContext = new SvXMLImportContext( rImport, nPrefix, rLocalName );
2535*cdf0e10cSrcweir #endif // #ifndef SVX_LIGHT
2536*cdf0e10cSrcweir 		bContent = sal_False;
2537*cdf0e10cSrcweir 	break;
2538*cdf0e10cSrcweir 
2539*cdf0e10cSrcweir 	default:
2540*cdf0e10cSrcweir         if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
2541*cdf0e10cSrcweir 			XML_TEXT_TYPE_TEXTBOX == eType ||
2542*cdf0e10cSrcweir 		 	XML_TEXT_TYPE_CHANGED_REGION == eType )
2543*cdf0e10cSrcweir 		{
2544*cdf0e10cSrcweir 			Reference < XShapes > xShapes;
2545*cdf0e10cSrcweir 			pContext = rImport.GetShapeImport()->CreateGroupChildContext(
2546*cdf0e10cSrcweir 					rImport, nPrefix, rLocalName, xAttrList, xShapes );
2547*cdf0e10cSrcweir 			bContent = sal_False;
2548*cdf0e10cSrcweir 		}
2549*cdf0e10cSrcweir 	}
2550*cdf0e10cSrcweir 
2551*cdf0e10cSrcweir //	if( !pContext )
2552*cdf0e10cSrcweir //		pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
2553*cdf0e10cSrcweir 
2554*cdf0e10cSrcweir 	// handle open redlines
2555*cdf0e10cSrcweir 	if ( (XML_TOK_TEXT_CHANGE != nToken) &&
2556*cdf0e10cSrcweir 		 (XML_TOK_TEXT_CHANGE_END != nToken) &&
2557*cdf0e10cSrcweir 		 (XML_TOK_TEXT_CHANGE_START != nToken) )
2558*cdf0e10cSrcweir 	{
2559*cdf0e10cSrcweir //		ResetOpenRedlineId();
2560*cdf0e10cSrcweir 	}
2561*cdf0e10cSrcweir 
2562*cdf0e10cSrcweir 	if( XML_TEXT_TYPE_BODY == eType && bContent )
2563*cdf0e10cSrcweir     {
2564*cdf0e10cSrcweir         m_pImpl->m_bBodyContentStarted = sal_False;
2565*cdf0e10cSrcweir     }
2566*cdf0e10cSrcweir 
2567*cdf0e10cSrcweir 	return pContext;
2568*cdf0e10cSrcweir }
2569*cdf0e10cSrcweir 
2570*cdf0e10cSrcweir SvXMLImportContext *XMLTextImportHelper::CreateTableChildContext(
2571*cdf0e10cSrcweir 		SvXMLImport&,
2572*cdf0e10cSrcweir 		sal_uInt16 /*nPrefix*/, const OUString& /*rLocalName*/,
2573*cdf0e10cSrcweir 		const Reference< XAttributeList > & )
2574*cdf0e10cSrcweir {
2575*cdf0e10cSrcweir 	return 0;
2576*cdf0e10cSrcweir }
2577*cdf0e10cSrcweir 
2578*cdf0e10cSrcweir /// get data style key for use with NumberFormat property
2579*cdf0e10cSrcweir sal_Int32 XMLTextImportHelper::GetDataStyleKey(const OUString& sStyleName,
2580*cdf0e10cSrcweir                                                sal_Bool* pIsSystemLanguage )
2581*cdf0e10cSrcweir {
2582*cdf0e10cSrcweir     const SvXMLStyleContext* pStyle =
2583*cdf0e10cSrcweir         ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2584*cdf0e10cSrcweir 				  FindStyleChildContext( XML_STYLE_FAMILY_DATA_STYLE,
2585*cdf0e10cSrcweir 											  sStyleName, sal_True );
2586*cdf0e10cSrcweir 
2587*cdf0e10cSrcweir 	// get appropriate context
2588*cdf0e10cSrcweir 
2589*cdf0e10cSrcweir 
2590*cdf0e10cSrcweir 	// first check if its a impress and draw only number format
2591*cdf0e10cSrcweir 	// this is needed since its also a SvXMLNumFormatContext,
2592*cdf0e10cSrcweir 	// that was needed to support them for controls in impress/draw also
2593*cdf0e10cSrcweir 	SdXMLNumberFormatImportContext* pSdNumStyle = PTR_CAST( SdXMLNumberFormatImportContext, pStyle );
2594*cdf0e10cSrcweir 	if( pSdNumStyle )
2595*cdf0e10cSrcweir 	{
2596*cdf0e10cSrcweir 		return pSdNumStyle->GetDrawKey();
2597*cdf0e10cSrcweir 	}
2598*cdf0e10cSrcweir 	else
2599*cdf0e10cSrcweir 	{
2600*cdf0e10cSrcweir 		SvXMLNumFormatContext* pNumStyle = PTR_CAST( SvXMLNumFormatContext, pStyle );
2601*cdf0e10cSrcweir 		if( pNumStyle )
2602*cdf0e10cSrcweir 		{
2603*cdf0e10cSrcweir 			if( pIsSystemLanguage != NULL )
2604*cdf0e10cSrcweir 	            *pIsSystemLanguage = pNumStyle->IsSystemLanguage();
2605*cdf0e10cSrcweir 
2606*cdf0e10cSrcweir 			// return key
2607*cdf0e10cSrcweir 			return pNumStyle->GetKey();
2608*cdf0e10cSrcweir 		}
2609*cdf0e10cSrcweir 	}
2610*cdf0e10cSrcweir 	return -1;
2611*cdf0e10cSrcweir }
2612*cdf0e10cSrcweir 
2613*cdf0e10cSrcweir const SvxXMLListStyleContext *XMLTextImportHelper::FindAutoListStyle( const OUString& rName ) const
2614*cdf0e10cSrcweir {
2615*cdf0e10cSrcweir 	const SvxXMLListStyleContext *pStyle = 0;
2616*cdf0e10cSrcweir     if (m_pImpl->m_xAutoStyles.Is())
2617*cdf0e10cSrcweir     {
2618*cdf0e10cSrcweir         const SvXMLStyleContext* pTempStyle =
2619*cdf0e10cSrcweir             ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2620*cdf0e10cSrcweir 					FindStyleChildContext( XML_STYLE_FAMILY_TEXT_LIST, rName,
2621*cdf0e10cSrcweir 										   sal_True );
2622*cdf0e10cSrcweir 		pStyle = PTR_CAST( SvxXMLListStyleContext ,pTempStyle);
2623*cdf0e10cSrcweir 	}
2624*cdf0e10cSrcweir 
2625*cdf0e10cSrcweir 	return pStyle;
2626*cdf0e10cSrcweir }
2627*cdf0e10cSrcweir 
2628*cdf0e10cSrcweir XMLPropStyleContext *XMLTextImportHelper::FindAutoFrameStyle( const OUString& rName ) const
2629*cdf0e10cSrcweir {
2630*cdf0e10cSrcweir 	XMLPropStyleContext *pStyle = 0;
2631*cdf0e10cSrcweir     if (m_pImpl->m_xAutoStyles.Is())
2632*cdf0e10cSrcweir     {
2633*cdf0e10cSrcweir         const SvXMLStyleContext* pTempStyle =
2634*cdf0e10cSrcweir             ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2635*cdf0e10cSrcweir 					FindStyleChildContext( XML_STYLE_FAMILY_SD_GRAPHICS_ID, rName,
2636*cdf0e10cSrcweir 										   sal_True );
2637*cdf0e10cSrcweir 		pStyle = PTR_CAST( XMLPropStyleContext ,pTempStyle);
2638*cdf0e10cSrcweir 	}
2639*cdf0e10cSrcweir 
2640*cdf0e10cSrcweir 	return pStyle;
2641*cdf0e10cSrcweir }
2642*cdf0e10cSrcweir 
2643*cdf0e10cSrcweir XMLPropStyleContext* XMLTextImportHelper::FindSectionStyle(
2644*cdf0e10cSrcweir 	const OUString& rName ) const
2645*cdf0e10cSrcweir {
2646*cdf0e10cSrcweir 	XMLPropStyleContext* pStyle = NULL;
2647*cdf0e10cSrcweir     if (m_pImpl->m_xAutoStyles.Is())
2648*cdf0e10cSrcweir     {
2649*cdf0e10cSrcweir         const SvXMLStyleContext* pTempStyle =
2650*cdf0e10cSrcweir             ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2651*cdf0e10cSrcweir 						   FindStyleChildContext(
2652*cdf0e10cSrcweir 							   XML_STYLE_FAMILY_TEXT_SECTION,
2653*cdf0e10cSrcweir 							   rName, sal_True );
2654*cdf0e10cSrcweir 		pStyle = PTR_CAST( XMLPropStyleContext,pTempStyle);
2655*cdf0e10cSrcweir 	}
2656*cdf0e10cSrcweir 
2657*cdf0e10cSrcweir 	return pStyle;
2658*cdf0e10cSrcweir }
2659*cdf0e10cSrcweir 
2660*cdf0e10cSrcweir XMLPropStyleContext* XMLTextImportHelper::FindPageMaster(
2661*cdf0e10cSrcweir 	const OUString& rName ) const
2662*cdf0e10cSrcweir {
2663*cdf0e10cSrcweir 	XMLPropStyleContext* pStyle = NULL;
2664*cdf0e10cSrcweir     if (m_pImpl->m_xAutoStyles.Is())
2665*cdf0e10cSrcweir     {
2666*cdf0e10cSrcweir         const SvXMLStyleContext* pTempStyle =
2667*cdf0e10cSrcweir             ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2668*cdf0e10cSrcweir 						   FindStyleChildContext(
2669*cdf0e10cSrcweir 							   XML_STYLE_FAMILY_PAGE_MASTER,
2670*cdf0e10cSrcweir 							   rName, sal_True );
2671*cdf0e10cSrcweir 		pStyle = PTR_CAST( XMLPropStyleContext,pTempStyle);
2672*cdf0e10cSrcweir 	}
2673*cdf0e10cSrcweir 
2674*cdf0e10cSrcweir 	return pStyle;
2675*cdf0e10cSrcweir }
2676*cdf0e10cSrcweir 
2677*cdf0e10cSrcweir 
2678*cdf0e10cSrcweir void XMLTextImportHelper::PushListContext(XMLTextListBlockContext *i_pListBlock)
2679*cdf0e10cSrcweir {
2680*cdf0e10cSrcweir     GetTextListHelper().PushListContext(i_pListBlock);
2681*cdf0e10cSrcweir }
2682*cdf0e10cSrcweir 
2683*cdf0e10cSrcweir void XMLTextImportHelper::PopListContext()
2684*cdf0e10cSrcweir {
2685*cdf0e10cSrcweir     GetTextListHelper().PopListContext();
2686*cdf0e10cSrcweir }
2687*cdf0e10cSrcweir 
2688*cdf0e10cSrcweir 
2689*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextNumberedParagraphAttrTokenMap()
2690*cdf0e10cSrcweir {
2691*cdf0e10cSrcweir     if (!m_pImpl->m_pTextNumberedParagraphAttrTokenMap.get())
2692*cdf0e10cSrcweir     {
2693*cdf0e10cSrcweir         m_pImpl->m_pTextNumberedParagraphAttrTokenMap.reset(
2694*cdf0e10cSrcweir 			new SvXMLTokenMap( aTextNumberedParagraphAttrTokenMap ) );
2695*cdf0e10cSrcweir     }
2696*cdf0e10cSrcweir     return *m_pImpl->m_pTextNumberedParagraphAttrTokenMap;
2697*cdf0e10cSrcweir }
2698*cdf0e10cSrcweir 
2699*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockAttrTokenMap()
2700*cdf0e10cSrcweir {
2701*cdf0e10cSrcweir     if (!m_pImpl->m_pTextListBlockAttrTokenMap.get())
2702*cdf0e10cSrcweir     {
2703*cdf0e10cSrcweir         m_pImpl->m_pTextListBlockAttrTokenMap.reset(
2704*cdf0e10cSrcweir 			new SvXMLTokenMap( aTextListBlockAttrTokenMap ) );
2705*cdf0e10cSrcweir     }
2706*cdf0e10cSrcweir     return *m_pImpl->m_pTextListBlockAttrTokenMap;
2707*cdf0e10cSrcweir }
2708*cdf0e10cSrcweir 
2709*cdf0e10cSrcweir const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockElemTokenMap()
2710*cdf0e10cSrcweir {
2711*cdf0e10cSrcweir     if (!m_pImpl->m_pTextListBlockElemTokenMap.get())
2712*cdf0e10cSrcweir     {
2713*cdf0e10cSrcweir         m_pImpl->m_pTextListBlockElemTokenMap.reset(
2714*cdf0e10cSrcweir 			new SvXMLTokenMap( aTextListBlockElemTokenMap ) );
2715*cdf0e10cSrcweir     }
2716*cdf0e10cSrcweir     return *m_pImpl->m_pTextListBlockElemTokenMap;
2717*cdf0e10cSrcweir }
2718*cdf0e10cSrcweir 
2719*cdf0e10cSrcweir SvI18NMap& XMLTextImportHelper::GetRenameMap()
2720*cdf0e10cSrcweir {
2721*cdf0e10cSrcweir     if (!m_pImpl->m_pRenameMap.get())
2722*cdf0e10cSrcweir     {
2723*cdf0e10cSrcweir         m_pImpl->m_pRenameMap.reset( new SvI18NMap() );
2724*cdf0e10cSrcweir     }
2725*cdf0e10cSrcweir     return *m_pImpl->m_pRenameMap;
2726*cdf0e10cSrcweir }
2727*cdf0e10cSrcweir 
2728*cdf0e10cSrcweir void XMLTextImportHelper::InsertBookmarkStartRange(
2729*cdf0e10cSrcweir 	const OUString sName,
2730*cdf0e10cSrcweir 	const Reference<XTextRange> & rRange,
2731*cdf0e10cSrcweir     OUString const& i_rXmlId,
2732*cdf0e10cSrcweir     ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & i_rpRDFaAttributes)
2733*cdf0e10cSrcweir {
2734*cdf0e10cSrcweir     m_pImpl->m_BookmarkStartRanges[sName] =
2735*cdf0e10cSrcweir         ::boost::make_tuple(rRange, i_rXmlId, i_rpRDFaAttributes);
2736*cdf0e10cSrcweir     m_pImpl->m_BookmarkVector.push_back(sName);
2737*cdf0e10cSrcweir }
2738*cdf0e10cSrcweir 
2739*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange(
2740*cdf0e10cSrcweir 	const OUString sName,
2741*cdf0e10cSrcweir 	Reference<XTextRange> & o_rRange,
2742*cdf0e10cSrcweir     OUString & o_rXmlId,
2743*cdf0e10cSrcweir     ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & o_rpRDFaAttributes)
2744*cdf0e10cSrcweir {
2745*cdf0e10cSrcweir     if (m_pImpl->m_BookmarkStartRanges.count(sName))
2746*cdf0e10cSrcweir     {
2747*cdf0e10cSrcweir         Impl::BookmarkMapEntry_t & rEntry =
2748*cdf0e10cSrcweir             (*m_pImpl->m_BookmarkStartRanges.find(sName)).second;
2749*cdf0e10cSrcweir         o_rRange.set(rEntry.get<0>());
2750*cdf0e10cSrcweir         o_rXmlId = rEntry.get<1>();
2751*cdf0e10cSrcweir         o_rpRDFaAttributes = rEntry.get<2>();
2752*cdf0e10cSrcweir         m_pImpl->m_BookmarkStartRanges.erase(sName);
2753*cdf0e10cSrcweir         Impl::BookmarkVector_t::iterator it(m_pImpl->m_BookmarkVector.begin());
2754*cdf0e10cSrcweir         while (it != m_pImpl->m_BookmarkVector.end() && it->compareTo(sName)!=0)
2755*cdf0e10cSrcweir         {
2756*cdf0e10cSrcweir 			it++;
2757*cdf0e10cSrcweir         }
2758*cdf0e10cSrcweir         if (it!=m_pImpl->m_BookmarkVector.end()) {
2759*cdf0e10cSrcweir             m_pImpl->m_BookmarkVector.erase(it);
2760*cdf0e10cSrcweir         }
2761*cdf0e10cSrcweir 		return sal_True;
2762*cdf0e10cSrcweir 	}
2763*cdf0e10cSrcweir 	else
2764*cdf0e10cSrcweir 	{
2765*cdf0e10cSrcweir 		return sal_False;
2766*cdf0e10cSrcweir 	}
2767*cdf0e10cSrcweir }
2768*cdf0e10cSrcweir 
2769*cdf0e10cSrcweir ::rtl::OUString XMLTextImportHelper::FindActiveBookmarkName()
2770*cdf0e10cSrcweir {
2771*cdf0e10cSrcweir     if (!m_pImpl->m_BookmarkVector.empty()) {
2772*cdf0e10cSrcweir         return m_pImpl->m_BookmarkVector.back();
2773*cdf0e10cSrcweir 	} else return ::rtl::OUString(); // return the empty string on error...
2774*cdf0e10cSrcweir }
2775*cdf0e10cSrcweir 
2776*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > XMLTextImportHelper::GetRangeFor(::rtl::OUString &sName)
2777*cdf0e10cSrcweir {
2778*cdf0e10cSrcweir     return m_pImpl->m_BookmarkStartRanges[sName].get<0>();
2779*cdf0e10cSrcweir }
2780*cdf0e10cSrcweir 
2781*cdf0e10cSrcweir 
2782*cdf0e10cSrcweir void XMLTextImportHelper::pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type )
2783*cdf0e10cSrcweir {
2784*cdf0e10cSrcweir     m_pImpl->m_FieldStack.push(Impl::field_stack_item_t(
2785*cdf0e10cSrcweir         Impl::field_name_type_t(name, type), Impl::field_params_t()));
2786*cdf0e10cSrcweir }
2787*cdf0e10cSrcweir 
2788*cdf0e10cSrcweir void XMLTextImportHelper::popFieldCtx()
2789*cdf0e10cSrcweir {
2790*cdf0e10cSrcweir     m_pImpl->m_FieldStack.pop();
2791*cdf0e10cSrcweir }
2792*cdf0e10cSrcweir 
2793*cdf0e10cSrcweir void XMLTextImportHelper::addFieldParam( ::rtl::OUString name, ::rtl::OUString value )
2794*cdf0e10cSrcweir {
2795*cdf0e10cSrcweir     DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
2796*cdf0e10cSrcweir         "stack is empty: not good! Do a pushFieldCtx before...");
2797*cdf0e10cSrcweir     if (!m_pImpl->m_FieldStack.empty()) {
2798*cdf0e10cSrcweir         Impl::field_stack_item_t & FieldStackItem(m_pImpl->m_FieldStack.top());
2799*cdf0e10cSrcweir         FieldStackItem.second.push_back(Impl::field_param_t( name, value ));
2800*cdf0e10cSrcweir     }
2801*cdf0e10cSrcweir }
2802*cdf0e10cSrcweir ::rtl::OUString XMLTextImportHelper::getCurrentFieldName()
2803*cdf0e10cSrcweir {
2804*cdf0e10cSrcweir     DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
2805*cdf0e10cSrcweir         "stack is empty: not good! Do a pushFieldCtx before...");
2806*cdf0e10cSrcweir     if (!m_pImpl->m_FieldStack.empty()) {
2807*cdf0e10cSrcweir         return m_pImpl->m_FieldStack.top().first.first;
2808*cdf0e10cSrcweir 	} else  return ::rtl::OUString();
2809*cdf0e10cSrcweir }
2810*cdf0e10cSrcweir 
2811*cdf0e10cSrcweir ::rtl::OUString XMLTextImportHelper::getCurrentFieldType()
2812*cdf0e10cSrcweir {
2813*cdf0e10cSrcweir     DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
2814*cdf0e10cSrcweir         "stack is empty: not good! Do a pushFieldCtx before...");
2815*cdf0e10cSrcweir     if (!m_pImpl->m_FieldStack.empty()) {
2816*cdf0e10cSrcweir         return m_pImpl->m_FieldStack.top().first.second;
2817*cdf0e10cSrcweir 	} else  return ::rtl::OUString();
2818*cdf0e10cSrcweir }
2819*cdf0e10cSrcweir 
2820*cdf0e10cSrcweir bool XMLTextImportHelper::hasCurrentFieldCtx()
2821*cdf0e10cSrcweir {
2822*cdf0e10cSrcweir 	return !m_pImpl->m_FieldStack.empty();
2823*cdf0e10cSrcweir }
2824*cdf0e10cSrcweir 
2825*cdf0e10cSrcweir void XMLTextImportHelper::setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField)
2826*cdf0e10cSrcweir {
2827*cdf0e10cSrcweir     DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
2828*cdf0e10cSrcweir         "stack is empty: not good! Do a pushFieldCtx before...");
2829*cdf0e10cSrcweir     if (!m_pImpl->m_FieldStack.empty() && xFormField.is())
2830*cdf0e10cSrcweir     {
2831*cdf0e10cSrcweir         FieldParamImporter(&m_pImpl->m_FieldStack.top().second,
2832*cdf0e10cSrcweir             xFormField->getParameters()).Import();
2833*cdf0e10cSrcweir 	}
2834*cdf0e10cSrcweir }
2835*cdf0e10cSrcweir 
2836*cdf0e10cSrcweir 
2837*cdf0e10cSrcweir void XMLTextImportHelper::ConnectFrameChains(
2838*cdf0e10cSrcweir 		const OUString& rFrmName,
2839*cdf0e10cSrcweir 		const OUString& rNextFrmName,
2840*cdf0e10cSrcweir 		const Reference < XPropertySet >& rFrmPropSet )
2841*cdf0e10cSrcweir {
2842*cdf0e10cSrcweir     static ::rtl::OUString s_ChainNextName(
2843*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("ChainNextName"));
2844*cdf0e10cSrcweir     static ::rtl::OUString s_ChainPrevName(
2845*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("ChainPrevName"));
2846*cdf0e10cSrcweir 
2847*cdf0e10cSrcweir 	if( !rFrmName.getLength() )
2848*cdf0e10cSrcweir 		return;
2849*cdf0e10cSrcweir 
2850*cdf0e10cSrcweir 	if( rNextFrmName.getLength() )
2851*cdf0e10cSrcweir 	{
2852*cdf0e10cSrcweir 		OUString sNextFrmName(GetRenameMap().Get( XML_TEXT_RENAME_TYPE_FRAME,
2853*cdf0e10cSrcweir 													rNextFrmName ));
2854*cdf0e10cSrcweir         if (m_pImpl->m_xTextFrames.is()
2855*cdf0e10cSrcweir             && m_pImpl->m_xTextFrames->hasByName(sNextFrmName))
2856*cdf0e10cSrcweir         {
2857*cdf0e10cSrcweir             rFrmPropSet->setPropertyValue(s_ChainNextName,
2858*cdf0e10cSrcweir                 makeAny(sNextFrmName));
2859*cdf0e10cSrcweir         }
2860*cdf0e10cSrcweir 		else
2861*cdf0e10cSrcweir         {
2862*cdf0e10cSrcweir             if (!m_pImpl->m_pPrevFrmNames.get())
2863*cdf0e10cSrcweir             {
2864*cdf0e10cSrcweir                 m_pImpl->m_pPrevFrmNames.reset( new SvStringsDtor );
2865*cdf0e10cSrcweir                 m_pImpl->m_pNextFrmNames.reset( new SvStringsDtor );
2866*cdf0e10cSrcweir             }
2867*cdf0e10cSrcweir             m_pImpl->m_pPrevFrmNames->Insert( new String( rFrmName ),
2868*cdf0e10cSrcweir                    m_pImpl->m_pPrevFrmNames->Count() );
2869*cdf0e10cSrcweir             m_pImpl->m_pNextFrmNames->Insert( new String( sNextFrmName ),
2870*cdf0e10cSrcweir                    m_pImpl->m_pNextFrmNames->Count() );
2871*cdf0e10cSrcweir         }
2872*cdf0e10cSrcweir     }
2873*cdf0e10cSrcweir     if (m_pImpl->m_pPrevFrmNames.get() && m_pImpl->m_pPrevFrmNames->Count())
2874*cdf0e10cSrcweir     {
2875*cdf0e10cSrcweir         sal_uInt16 nCount = m_pImpl->m_pPrevFrmNames->Count();
2876*cdf0e10cSrcweir 		for( sal_uInt16 i=0; i<nCount; i++ )
2877*cdf0e10cSrcweir 		{
2878*cdf0e10cSrcweir             String *pNext = (*m_pImpl->m_pNextFrmNames)[i];
2879*cdf0e10cSrcweir 			if( OUString(*pNext) == rFrmName )
2880*cdf0e10cSrcweir 			{
2881*cdf0e10cSrcweir 				// The previuous frame must exist, because it existing than
2882*cdf0e10cSrcweir 				// inserting the entry
2883*cdf0e10cSrcweir                 String *pPrev = (*m_pImpl->m_pPrevFrmNames)[i];
2884*cdf0e10cSrcweir 
2885*cdf0e10cSrcweir                 rFrmPropSet->setPropertyValue(s_ChainPrevName,
2886*cdf0e10cSrcweir                     makeAny(OUString( *pPrev )));
2887*cdf0e10cSrcweir 
2888*cdf0e10cSrcweir                 m_pImpl->m_pPrevFrmNames->Remove( i, 1 );
2889*cdf0e10cSrcweir                 m_pImpl->m_pNextFrmNames->Remove( i, 1 );
2890*cdf0e10cSrcweir 				delete pPrev;
2891*cdf0e10cSrcweir 				delete pNext;
2892*cdf0e10cSrcweir 
2893*cdf0e10cSrcweir 				// There cannot be more than one previous frames
2894*cdf0e10cSrcweir 				break;
2895*cdf0e10cSrcweir 			}
2896*cdf0e10cSrcweir 		}
2897*cdf0e10cSrcweir 	}
2898*cdf0e10cSrcweir }
2899*cdf0e10cSrcweir 
2900*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::IsInFrame() const
2901*cdf0e10cSrcweir {
2902*cdf0e10cSrcweir     static ::rtl::OUString s_TextFrame(
2903*cdf0e10cSrcweir         RTL_CONSTASCII_USTRINGPARAM("TextFrame"));
2904*cdf0e10cSrcweir 
2905*cdf0e10cSrcweir 	sal_Bool bIsInFrame = sal_False;
2906*cdf0e10cSrcweir 
2907*cdf0e10cSrcweir 	// are we currently in a text frame? yes, if the cursor has a
2908*cdf0e10cSrcweir 	// TextFrame property and it's non-NULL
2909*cdf0e10cSrcweir 	Reference<XPropertySet> xPropSet(((XMLTextImportHelper *)this)->GetCursor(), UNO_QUERY);
2910*cdf0e10cSrcweir 	if (xPropSet.is())
2911*cdf0e10cSrcweir 	{
2912*cdf0e10cSrcweir         if (xPropSet->getPropertySetInfo()->hasPropertyByName(s_TextFrame))
2913*cdf0e10cSrcweir         {
2914*cdf0e10cSrcweir             uno::Reference<XTextFrame> const xFrame(
2915*cdf0e10cSrcweir                 xPropSet->getPropertyValue(s_TextFrame), UNO_QUERY);
2916*cdf0e10cSrcweir 
2917*cdf0e10cSrcweir 			if (xFrame.is())
2918*cdf0e10cSrcweir 			{
2919*cdf0e10cSrcweir 				bIsInFrame = sal_True;
2920*cdf0e10cSrcweir 			}
2921*cdf0e10cSrcweir 		}
2922*cdf0e10cSrcweir 	}
2923*cdf0e10cSrcweir 
2924*cdf0e10cSrcweir 	return bIsInFrame;
2925*cdf0e10cSrcweir }
2926*cdf0e10cSrcweir 
2927*cdf0e10cSrcweir sal_Bool XMLTextImportHelper::IsInHeaderFooter() const
2928*cdf0e10cSrcweir {
2929*cdf0e10cSrcweir 	return sal_False;
2930*cdf0e10cSrcweir }
2931*cdf0e10cSrcweir 
2932*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertOLEObject(
2933*cdf0e10cSrcweir 										SvXMLImport&,
2934*cdf0e10cSrcweir 										const OUString& /*rHRef*/,
2935*cdf0e10cSrcweir 										const OUString& /*rStyleName*/,
2936*cdf0e10cSrcweir 										const OUString& /*rTblName*/,
2937*cdf0e10cSrcweir 										sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2938*cdf0e10cSrcweir {
2939*cdf0e10cSrcweir 	Reference< XPropertySet> xPropSet;
2940*cdf0e10cSrcweir 	return xPropSet;
2941*cdf0e10cSrcweir }
2942*cdf0e10cSrcweir 
2943*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertOOoLink(
2944*cdf0e10cSrcweir 										SvXMLImport&,
2945*cdf0e10cSrcweir 										const OUString& /*rHRef*/,
2946*cdf0e10cSrcweir 										const OUString& /*rStyleName*/,
2947*cdf0e10cSrcweir 										const OUString& /*rTblName*/,
2948*cdf0e10cSrcweir 										sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2949*cdf0e10cSrcweir {
2950*cdf0e10cSrcweir 	Reference< XPropertySet> xPropSet;
2951*cdf0e10cSrcweir 	return xPropSet;
2952*cdf0e10cSrcweir }
2953*cdf0e10cSrcweir 
2954*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertApplet(
2955*cdf0e10cSrcweir 										const OUString& /*rCode*/,
2956*cdf0e10cSrcweir 									  	const OUString& /*rName*/,
2957*cdf0e10cSrcweir 									  	sal_Bool /*bMayScript*/,
2958*cdf0e10cSrcweir 									  	const OUString& /*rHRef*/,
2959*cdf0e10cSrcweir 										sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2960*cdf0e10cSrcweir {
2961*cdf0e10cSrcweir 	Reference< XPropertySet> xPropSet;
2962*cdf0e10cSrcweir 	return xPropSet;
2963*cdf0e10cSrcweir }
2964*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertPlugin(
2965*cdf0e10cSrcweir 									  	const OUString& /*rMimeType*/,
2966*cdf0e10cSrcweir 									  	const OUString& /*rHRef*/,
2967*cdf0e10cSrcweir 										sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2968*cdf0e10cSrcweir {
2969*cdf0e10cSrcweir 	Reference< XPropertySet> xPropSet;
2970*cdf0e10cSrcweir 	return xPropSet;
2971*cdf0e10cSrcweir }
2972*cdf0e10cSrcweir Reference< XPropertySet> XMLTextImportHelper::createAndInsertFloatingFrame(
2973*cdf0e10cSrcweir 									  	const OUString& /*rName*/,
2974*cdf0e10cSrcweir 									  	const OUString& /*rHRef*/,
2975*cdf0e10cSrcweir 									  	const OUString& /*rStyleName*/,
2976*cdf0e10cSrcweir 										sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2977*cdf0e10cSrcweir {
2978*cdf0e10cSrcweir 	Reference< XPropertySet> xPropSet;
2979*cdf0e10cSrcweir 	return xPropSet;
2980*cdf0e10cSrcweir }
2981*cdf0e10cSrcweir 
2982*cdf0e10cSrcweir void XMLTextImportHelper::endAppletOrPlugin(
2983*cdf0e10cSrcweir         const Reference < XPropertySet> &,
2984*cdf0e10cSrcweir         std::map < const rtl::OUString, rtl::OUString, UStringLess > &)
2985*cdf0e10cSrcweir {
2986*cdf0e10cSrcweir }
2987*cdf0e10cSrcweir // redline helper: dummy implementation to be overridden in sw/filter/xml
2988*cdf0e10cSrcweir void XMLTextImportHelper::RedlineAdd(
2989*cdf0e10cSrcweir 	const OUString& /*rType*/,
2990*cdf0e10cSrcweir 	const OUString& /*rId*/,
2991*cdf0e10cSrcweir 	const OUString& /*rAuthor*/,
2992*cdf0e10cSrcweir 	const OUString& /*rComment*/,
2993*cdf0e10cSrcweir 	const DateTime& /*rDateTime*/,
2994*cdf0e10cSrcweir     sal_Bool /*bMergeLastPara*/)
2995*cdf0e10cSrcweir {
2996*cdf0e10cSrcweir 	// dummy implementation: do nothing
2997*cdf0e10cSrcweir }
2998*cdf0e10cSrcweir 
2999*cdf0e10cSrcweir Reference<XTextCursor> XMLTextImportHelper::RedlineCreateText(
3000*cdf0e10cSrcweir 	Reference<XTextCursor> & /*rOldCursor*/,
3001*cdf0e10cSrcweir 	const OUString& /*rId*/)
3002*cdf0e10cSrcweir {
3003*cdf0e10cSrcweir 	// dummy implementation: do nothing
3004*cdf0e10cSrcweir 	Reference<XTextCursor> xRet;
3005*cdf0e10cSrcweir 	return xRet;
3006*cdf0e10cSrcweir }
3007*cdf0e10cSrcweir 
3008*cdf0e10cSrcweir void XMLTextImportHelper::RedlineSetCursor(
3009*cdf0e10cSrcweir 	const OUString& /*rId*/,
3010*cdf0e10cSrcweir 	sal_Bool /*bStart*/,
3011*cdf0e10cSrcweir 	sal_Bool /*bIsOutsideOfParagraph*/)
3012*cdf0e10cSrcweir {
3013*cdf0e10cSrcweir 	// dummy implementation: do nothing
3014*cdf0e10cSrcweir }
3015*cdf0e10cSrcweir 
3016*cdf0e10cSrcweir void XMLTextImportHelper::RedlineAdjustStartNodeCursor(sal_Bool)
3017*cdf0e10cSrcweir {
3018*cdf0e10cSrcweir 	// dummy implementation: do nothing
3019*cdf0e10cSrcweir }
3020*cdf0e10cSrcweir 
3021*cdf0e10cSrcweir void XMLTextImportHelper::SetShowChanges( sal_Bool )
3022*cdf0e10cSrcweir {
3023*cdf0e10cSrcweir 	// dummy implementation: do nothing
3024*cdf0e10cSrcweir }
3025*cdf0e10cSrcweir 
3026*cdf0e10cSrcweir void XMLTextImportHelper::SetRecordChanges( sal_Bool )
3027*cdf0e10cSrcweir {
3028*cdf0e10cSrcweir 	// dummy implementation: do nothing
3029*cdf0e10cSrcweir }
3030*cdf0e10cSrcweir void XMLTextImportHelper::SetChangesProtectionKey(const Sequence<sal_Int8> &)
3031*cdf0e10cSrcweir {
3032*cdf0e10cSrcweir 	// dummy implementation: do nothing
3033*cdf0e10cSrcweir }
3034*cdf0e10cSrcweir 
3035*cdf0e10cSrcweir 
3036*cdf0e10cSrcweir OUString XMLTextImportHelper::GetOpenRedlineId()
3037*cdf0e10cSrcweir {
3038*cdf0e10cSrcweir     return m_pImpl->m_sOpenRedlineIdentifier;
3039*cdf0e10cSrcweir }
3040*cdf0e10cSrcweir 
3041*cdf0e10cSrcweir void XMLTextImportHelper::SetOpenRedlineId( ::rtl::OUString& rId)
3042*cdf0e10cSrcweir {
3043*cdf0e10cSrcweir     m_pImpl->m_sOpenRedlineIdentifier = rId;
3044*cdf0e10cSrcweir }
3045*cdf0e10cSrcweir 
3046*cdf0e10cSrcweir void XMLTextImportHelper::ResetOpenRedlineId()
3047*cdf0e10cSrcweir {
3048*cdf0e10cSrcweir 	OUString sEmpty;
3049*cdf0e10cSrcweir 	SetOpenRedlineId(sEmpty);
3050*cdf0e10cSrcweir }
3051*cdf0e10cSrcweir 
3052*cdf0e10cSrcweir void
3053*cdf0e10cSrcweir XMLTextImportHelper::SetCellParaStyleDefault(::rtl::OUString const& rNewValue)
3054*cdf0e10cSrcweir {
3055*cdf0e10cSrcweir     m_pImpl->m_sCellParaStyleDefault = rNewValue;
3056*cdf0e10cSrcweir }
3057*cdf0e10cSrcweir 
3058*cdf0e10cSrcweir ::rtl::OUString const& XMLTextImportHelper::GetCellParaStyleDefault()
3059*cdf0e10cSrcweir {
3060*cdf0e10cSrcweir     return m_pImpl->m_sCellParaStyleDefault;
3061*cdf0e10cSrcweir }
3062*cdf0e10cSrcweir 
3063