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