xref: /trunk/main/xmloff/inc/xmloff/txtimp.hxx (revision ecfe53c5)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef XMLOFF_TEXTIMP_HXX
24 #define XMLOFF_TEXTIMP_HXX
25 
26 #include "sal/config.h"
27 #include "xmloff/dllapi.h"
28 #include "sal/types.h"
29 #include <com/sun/star/uno/Reference.h>
30 
31 #include <map>
32 #include <memory>
33 #include <boost/utility.hpp>
34 #include <boost/shared_ptr.hpp>
35 
36 #include <tools/list.hxx>
37 #include <xmloff/xmltkmap.hxx>
38 
39 // xmloff/functional.hxx is obsolete and should be replaced by its comphelper
40 // counterpart
41 #include <comphelper/stl_types.hxx>
42 #include <xmloff/uniref.hxx>
43 
44 
45 // --> OD 2008-04-25 #refactorlists#
46 class XMLTextListsHelper;
47 // <--
48 
49 class SvXMLImportContext;
50 class SvXMLTokenMap;
51 class SvXMLImportPropertyMapper;
52 class SvXMLNamespaceMap;
53 class SvXMLImport;
54 class SvXMLStylesContext;
55 class XMLTextListBlockContext;
56 class SvxXMLListStyleContext;
57 class XMLPropStyleContext;
58 class SvI18NMap;
59 class XMLSectionImportContext;
60 class XMLFontStylesContext;
61 template<class A> class XMLPropertyBackpatcher;
62 class XMLEventsImportContext;
63 
64 namespace xmloff {
65     struct ParsedRDFaAttributes;
66 }
67 
68 namespace com { namespace sun { namespace star {
69 namespace text {
70     class XText;
71     class XTextCursor;
72     class XTextRange;
73     class XTextContent;
74     class XFormField;
75 }
76 namespace frame { class XModel; }
77 namespace container { class XNameContainer; class XIndexReplace; class XNameAccess; }
78 namespace beans { class XPropertySet; }
79 namespace xml { namespace sax { class XAttributeList; } }
80 namespace util { struct DateTime; }
81 namespace lang { class XMultiServiceFactory; }
82 } } }
83 
84 enum SwXMLTextElemTokens
85 {
86 	XML_TOK_TEXT_P,
87 	XML_TOK_TEXT_H,
88 	XML_TOK_TEXT_LIST,
89 	XML_TOK_TEXT_FRAME_PAGE,
90 	XML_TOK_TABLE_TABLE,
91 	XML_TOK_TEXT_VARFIELD_DECLS,
92 	XML_TOK_TEXT_USERFIELD_DECLS,
93 	XML_TOK_TEXT_SEQUENCE_DECLS,
94 	XML_TOK_TEXT_DDE_DECLS,
95 	XML_TOK_DRAW_A_PAGE,
96 	XML_TOK_TEXT_SECTION,
97 	XML_TOK_TEXT_TOC,
98 	XML_TOK_TEXT_OBJECT_INDEX,
99 	XML_TOK_TEXT_TABLE_INDEX,
100 	XML_TOK_TEXT_ILLUSTRATION_INDEX,
101 	XML_TOK_TEXT_USER_INDEX,
102 	XML_TOK_TEXT_ALPHABETICAL_INDEX,
103 	XML_TOK_TEXT_BIBLIOGRAPHY_INDEX,
104 	XML_TOK_TEXT_INDEX_TITLE,
105 	XML_TOK_TEXT_TRACKED_CHANGES,
106 	XML_TOK_TEXT_CHANGE_START,
107 	XML_TOK_TEXT_CHANGE_END,
108 	XML_TOK_TEXT_CHANGE,
109 	XML_TOK_TEXT_FORMS,
110 	XML_TOK_TEXT_CALCULATION_SETTINGS,
111 	XML_TOK_TEXT_AUTOMARK,
112 	XML_TOK_TEXT_NUMBERED_PARAGRAPH,
113 	XML_TOK_TEXT_ELEM_END=XML_TOK_UNKNOWN
114 };
115 
116 enum XMLTextPElemTokens
117 {
118 	XML_TOK_TEXT_SPAN,
119 	XML_TOK_TEXT_TAB_STOP,
120 	XML_TOK_TEXT_LINE_BREAK,
121 	XML_TOK_TEXT_SOFT_PAGE_BREAK,
122 	XML_TOK_TEXT_S,
123 	XML_TOK_TEXT_FRAME,
124 	XML_TOK_TEXT_HYPERLINK,
125 	XML_TOK_TEXT_RUBY,
126 
127 	XML_TOK_TEXT_NOTE,
128 	XML_TOK_TEXT_BOOKMARK,
129 	XML_TOK_TEXT_BOOKMARK_START,
130 	XML_TOK_TEXT_BOOKMARK_END,
131 	XML_TOK_TEXT_REFERENCE,
132 	XML_TOK_TEXT_REFERENCE_START,
133 	XML_TOK_TEXT_REFERENCE_END,
134 
135 	XML_TOK_TEXT_TOC_MARK,			// index marks
136 	XML_TOK_TEXT_TOC_MARK_START,
137 	XML_TOK_TEXT_TOC_MARK_END,
138 	XML_TOK_TEXT_USER_INDEX_MARK,
139 	XML_TOK_TEXT_USER_INDEX_MARK_START,
140 	XML_TOK_TEXT_USER_INDEX_MARK_END,
141 	XML_TOK_TEXT_ALPHA_INDEX_MARK,
142 	XML_TOK_TEXT_ALPHA_INDEX_MARK_START,
143 	XML_TOK_TEXT_ALPHA_INDEX_MARK_END,
144 
145 	XML_TOK_TEXT_SENDER_FIRSTNAME,	// sender fields
146 	XML_TOK_TEXT_SENDER_LASTNAME,
147 	XML_TOK_TEXT_SENDER_INITIALS,
148 	XML_TOK_TEXT_SENDER_TITLE,
149 	XML_TOK_TEXT_SENDER_POSITION,
150 	XML_TOK_TEXT_SENDER_EMAIL,
151 	XML_TOK_TEXT_SENDER_PHONE_PRIVATE,
152 	XML_TOK_TEXT_SENDER_FAX,
153 	XML_TOK_TEXT_SENDER_COMPANY,
154 	XML_TOK_TEXT_SENDER_PHONE_WORK,
155 	XML_TOK_TEXT_SENDER_STREET,
156 	XML_TOK_TEXT_SENDER_CITY,
157 	XML_TOK_TEXT_SENDER_POSTAL_CODE,
158 	XML_TOK_TEXT_SENDER_COUNTRY,
159 	XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE,
160 
161 	XML_TOK_TEXT_AUTHOR_NAME,	// author fields
162 	XML_TOK_TEXT_AUTHOR_INITIALS,
163 
164 	XML_TOK_TEXT_DATE,			// date & time fields
165 	XML_TOK_TEXT_TIME,
166 
167 	XML_TOK_TEXT_PAGE_NUMBER,	// page number fields
168 	XML_TOK_TEXT_PAGE_CONTINUATION_STRING,
169 
170 	XML_TOK_TEXT_VARIABLE_SET,	// variable fields
171 	XML_TOK_TEXT_VARIABLE_GET,
172 	XML_TOK_TEXT_VARIABLE_INPUT,
173 	XML_TOK_TEXT_USER_FIELD_GET,
174 	XML_TOK_TEXT_USER_FIELD_INPUT,
175 	XML_TOK_TEXT_SEQUENCE,
176 	XML_TOK_TEXT_EXPRESSION,
177 	XML_TOK_TEXT_TEXT_INPUT,
178 
179 	XML_TOK_TEXT_DATABASE_DISPLAY,	// database fields
180 	XML_TOK_TEXT_DATABASE_NEXT,
181 	XML_TOK_TEXT_DATABASE_SELECT,
182 	XML_TOK_TEXT_DATABASE_ROW_NUMBER,
183 	XML_TOK_TEXT_DATABASE_NAME,
184 
185 	XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR, //document info fields
186 	XML_TOK_TEXT_DOCUMENT_CREATION_DATE,
187 	XML_TOK_TEXT_DOCUMENT_CREATION_TIME,
188 	XML_TOK_TEXT_DOCUMENT_DESCRIPTION,
189 	XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR,
190 	XML_TOK_TEXT_DOCUMENT_PRINT_DATE,
191 	XML_TOK_TEXT_DOCUMENT_PRINT_TIME,
192 	XML_TOK_TEXT_DOCUMENT_TITLE,
193 	XML_TOK_TEXT_DOCUMENT_SUBJECT,
194 	XML_TOK_TEXT_DOCUMENT_KEYWORDS,
195 	XML_TOK_TEXT_DOCUMENT_REVISION,
196 	XML_TOK_TEXT_DOCUMENT_EDIT_DURATION,
197 	XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR,
198 	XML_TOK_TEXT_DOCUMENT_SAVE_DATE,
199 	XML_TOK_TEXT_DOCUMENT_SAVE_TIME,
200 	XML_TOK_TEXT_DOCUMENT_USER_DEFINED,
201 
202 	XML_TOK_TEXT_PLACEHOLDER,	// misc. fields
203 	XML_TOK_TEXT_CONDITIONAL_TEXT,
204 	XML_TOK_TEXT_HIDDEN_TEXT,
205 	XML_TOK_TEXT_HIDDEN_PARAGRAPH,
206 	XML_TOK_TEXT_FILENAME,
207 	XML_TOK_TEXT_CHAPTER,
208 	XML_TOK_TEXT_TEMPLATENAME,
209 	XML_TOK_TEXT_WORD_COUNT,	// statistics/count fields
210 	XML_TOK_TEXT_PARAGRAPH_COUNT,
211 	XML_TOK_TEXT_TABLE_COUNT,
212 	XML_TOK_TEXT_CHARACTER_COUNT,
213 	XML_TOK_TEXT_IMAGE_COUNT,
214 	XML_TOK_TEXT_OBJECT_COUNT,
215 	XML_TOK_TEXT_PAGE_COUNT,
216 	XML_TOK_TEXT_GET_PAGE_VAR,
217 	XML_TOK_TEXT_SET_PAGE_VAR,
218 	XML_TOK_TEXT_MACRO,
219 	XML_TOK_TEXT_DDE,
220 	XML_TOK_TEXT_REFERENCE_REF,
221 	XML_TOK_TEXT_BOOKMARK_REF,
222 	XML_TOK_TEXT_SEQUENCE_REF,
223 	XML_TOK_TEXT_NOTE_REF,
224 	XML_TOK_TEXT_SHEET_NAME,
225 	XML_TOK_TEXT_BIBLIOGRAPHY_MARK,
226 	XML_TOK_TEXT_ANNOTATION,
227 	XML_TOK_TEXT_SCRIPT,
228     XML_TOK_TEXT_TABLE_FORMULA,
229     XML_TOK_TEXT_DROPDOWN,
230 
231     // RDF metadata
232     XML_TOK_TEXT_META,
233     XML_TOK_TEXT_META_FIELD,
234 
235 	// misc
236 	XML_TOK_TEXTP_CHANGE_START,	// TEXTP avoids clash with SwXMLTextElemTokens
237 	XML_TOK_TEXTP_CHANGE_END,
238 	XML_TOK_TEXTP_CHANGE,
239 	XML_TOK_DRAW_A,
240 	XML_TOK_TEXT_MEASURE,
241 
242 	XML_TOK_DRAW_HEADER,
243 	XML_TOK_DRAW_FOOTER,
244 	XML_TOK_DRAW_DATE_TIME,
245 	XML_TOK_TEXT_PAGE_CONTINUATION,
246 
247 	XML_TOK_TEXT_FIELDMARK,
248 	XML_TOK_TEXT_FIELDMARK_START,
249 	XML_TOK_TEXT_FIELDMARK_END,
250 
251 	XML_TOK_TEXT_P_ELEM_END=XML_TOK_UNKNOWN
252 };
253 
254 enum XMLTextPAttrTokens
255 {
256     XML_TOK_TEXT_P_XMLID,
257     XML_TOK_TEXT_P_ABOUT,
258     XML_TOK_TEXT_P_PROPERTY,
259     XML_TOK_TEXT_P_CONTENT,
260     XML_TOK_TEXT_P_DATATYPE,
261     XML_TOK_TEXT_P_TEXTID,
262 	XML_TOK_TEXT_P_STYLE_NAME,
263 	XML_TOK_TEXT_P_COND_STYLE_NAME,
264 	XML_TOK_TEXT_P_LEVEL,
265 	XML_TOK_TEXT_P_CLASS_NAMES,
266     XML_TOK_TEXT_P_IS_LIST_HEADER,
267     XML_TOK_TEXT_P_RESTART_NUMBERING,
268     XML_TOK_TEXT_P_START_VALUE,
269 	XML_TOK_TEXT_P_END=XML_TOK_UNKNOWN
270 };
271 
272 enum XMLTextNumberedParagraphAttrTokens
273 {
274 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_XMLID,
275 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_LIST_ID,
276 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_LEVEL,
277 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_STYLE_NAME,
278 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_CONTINUE_NUMBERING,
279 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_START_VALUE,
280 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_END=XML_TOK_UNKNOWN
281 };
282 
283 enum XMLTextListBlockAttrTokens
284 {
285 	XML_TOK_TEXT_LIST_BLOCK_XMLID,
286 	XML_TOK_TEXT_LIST_BLOCK_STYLE_NAME,
287 	XML_TOK_TEXT_LIST_BLOCK_CONTINUE_NUMBERING,
288     // --> OD 2008-04-22 #refactorlists#
289     XML_TOK_TEXT_LIST_BLOCK_ID,
290     XML_TOK_TEXT_LIST_BLOCK_CONTINUE_LIST,
291     // <--
292     XML_TOK_TEXT_LIST_BLOCK_END=XML_TOK_UNKNOWN
293 };
294 
295 enum XMLTextListBlockElemTokens
296 {
297 	XML_TOK_TEXT_LIST_HEADER,
298 	XML_TOK_TEXT_LIST_ITEM,
299 	XML_TOK_TEXT_LIST_BLOCK_ELEM_END=XML_TOK_UNKNOWN
300 };
301 
302 enum XMLTextFrameAttrTokens
303 {
304 	XML_TOK_TEXT_FRAME_STYLE_NAME,
305 	XML_TOK_TEXT_FRAME_NAME,
306 	XML_TOK_TEXT_FRAME_ANCHOR_TYPE,
307 	XML_TOK_TEXT_FRAME_ANCHOR_PAGE_NUMBER,
308 	XML_TOK_TEXT_FRAME_X,
309 	XML_TOK_TEXT_FRAME_Y,
310 	XML_TOK_TEXT_FRAME_WIDTH,
311 	XML_TOK_TEXT_FRAME_REL_WIDTH,
312 	XML_TOK_TEXT_FRAME_HEIGHT,
313 	XML_TOK_TEXT_FRAME_MIN_HEIGHT,
314 	XML_TOK_TEXT_FRAME_REL_HEIGHT,
315 	XML_TOK_TEXT_FRAME_NEXT_CHAIN_NAME,
316 	XML_TOK_TEXT_FRAME_HREF,
317 	XML_TOK_TEXT_FRAME_FILTER_NAME,
318 	XML_TOK_TEXT_FRAME_Z_INDEX,
319 	XML_TOK_TEXT_FRAME_TRANSFORM,
320 	XML_TOK_TEXT_FRAME_CLASS_ID,
321 	XML_TOK_TEXT_FRAME_CODE,
322 	XML_TOK_TEXT_FRAME_OBJECT,
323 	XML_TOK_TEXT_FRAME_ARCHIVE,
324 	XML_TOK_TEXT_FRAME_MAY_SCRIPT,
325 	XML_TOK_TEXT_FRAME_MIME_TYPE,
326 	XML_TOK_TEXT_FRAME_APPLET_NAME,
327 	XML_TOK_TEXT_FRAME_FRAME_NAME,
328 	XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE,
329     XML_TOK_TEXT_FRAME_MIN_WIDTH,
330 	XML_TOK_TEXT_FRAME_END=XML_TOK_UNKNOWN
331 };
332 
333 enum XMLTextHyperlinkAttrTokens
334 {
335 	XML_TOK_TEXT_HYPERLINK_HREF,
336 	XML_TOK_TEXT_HYPERLINK_NAME,
337 	XML_TOK_TEXT_HYPERLINK_TARGET_FRAME,
338 	XML_TOK_TEXT_HYPERLINK_SHOW,
339 	XML_TOK_TEXT_HYPERLINK_STYLE_NAME,
340 	XML_TOK_TEXT_HYPERLINK_VIS_STYLE_NAME,
341 	XML_TOK_TEXT_HYPERLINK_SERVER_MAP,
342 	XML_TOK_TEXT_HYPERLINK_END=XML_TOK_UNKNOWN
343 };
344 
345 enum XMLTextPageMasterElemTokens
346 {
347 	XML_TOK_TEXT_MP_HEADER,
348 	XML_TOK_TEXT_MP_FOOTER,
349 	XML_TOK_TEXT_MP_HEADER_LEFT,
350 	XML_TOK_TEXT_MP_FOOTER_LEFT,
351 	XML_TOK_TEXT_MP_END=XML_TOK_UNKNOWN
352 };
353 
354 enum XMLTextContourAttrTokens
355 {
356 	XML_TOK_TEXT_CONTOUR_WIDTH,
357 	XML_TOK_TEXT_CONTOUR_HEIGHT,
358 	XML_TOK_TEXT_CONTOUR_VIEWBOX,
359 	XML_TOK_TEXT_CONTOUR_POINTS,
360 	XML_TOK_TEXT_CONTOUR_D,
361 	XML_TOK_TEXT_CONTOUR_AUTO,
362 	XML_TOK_TEXT_CONTOUR_END=XML_TOK_UNKNOWN
363 };
364 enum XMLTextType
365 {
366 	XML_TEXT_TYPE_BODY,
367 	XML_TEXT_TYPE_CELL,
368 	XML_TEXT_TYPE_SHAPE,
369 	XML_TEXT_TYPE_TEXTBOX,
370 	XML_TEXT_TYPE_HEADER_FOOTER,
371 	XML_TEXT_TYPE_SECTION,
372 	XML_TEXT_TYPE_FOOTNOTE,
373 	XML_TEXT_TYPE_CHANGED_REGION
374 };
375 
376 #define XML_TEXT_RENAME_TYPE_FRAME 10
377 #define XML_TEXT_RENAME_TYPE_TABLE 20
378 
379 // create type for section list, XMLSectionList_Impl
380 DECLARE_LIST( XMLSectionList_Impl, XMLSectionImportContext* )
381 
382 class XMLOFF_DLLPUBLIC XMLTextImportHelper : public UniRefBase,
383     private boost::noncopyable
384 {
385 private:
386     struct Impl;
387     ::std::auto_ptr<Impl> m_pImpl;
388     /// ugly, but implementation of this is in XMLPropertyBackpatcher.cxx
389     struct BackpatcherImpl;
390     ::boost::shared_ptr<BackpatcherImpl> m_pBackpatcherImpl;
391     ::boost::shared_ptr<BackpatcherImpl> MakeBackpatcherImpl();
392 
393 protected:
394 	virtual SvXMLImportContext *CreateTableChildContext(
395 				SvXMLImport& rImport,
396 				sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
397 				const ::com::sun::star::uno::Reference<
398 					::com::sun::star::xml::sax::XAttributeList > & xAttrList );
399 
400 	// access, lazy initialization and destruction of backpatchers
401 	// Code is implemented in XMLPropertyBackpatcher.cxx
402 	inline XMLPropertyBackpatcher<sal_Int16>& GetFootnoteBP();
403 	inline XMLPropertyBackpatcher<sal_Int16>& GetSequenceIdBP();
404 	inline XMLPropertyBackpatcher< ::rtl::OUString> & GetSequenceNameBP();
405 
406 public:
407 
408 	XMLTextImportHelper(
409             ::com::sun::star::uno::Reference <
410                 ::com::sun::star::frame::XModel> const& rModel,
411             SvXMLImport& rImport,
412             bool const bInsertMode = false, bool const bStylesOnlyMode = false,
413             bool const bProgress = false, bool const bBlockMode = false,
414             bool const bOrganizerMode = false);
415 
416 	~XMLTextImportHelper();
417 
418 	void SetCursor(
419 			const ::com::sun::star::uno::Reference <
420 				::com::sun::star::text::XTextCursor >& rCursor );
421 	void ResetCursor();
422 
423 	void SetAutoStyles( SvXMLStylesContext *pStyles );
424 
425 	void SetFontDecls( XMLFontStylesContext *pFontDecls );
426 	const XMLFontStylesContext *GetFontDecls() const;
427 
428 	SvXMLImportContext *CreateTextChildContext(
429 			SvXMLImport& rImport,
430 			sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
431 			const ::com::sun::star::uno::Reference<
432 				::com::sun::star::xml::sax::XAttributeList > & xAttrList,
433 			XMLTextType eType = XML_TEXT_TYPE_SHAPE );
434 
435     SvXMLTokenMap const& GetTextElemTokenMap();
436     SvXMLTokenMap const& GetTextPElemTokenMap();
437     SvXMLTokenMap const& GetTextPAttrTokenMap();
438     SvXMLTokenMap const& GetTextFrameAttrTokenMap();
439     SvXMLTokenMap const& GetTextContourAttrTokenMap();
440     SvXMLTokenMap const& GetTextHyperlinkAttrTokenMap();
441     SvXMLTokenMap const& GetTextMasterPageElemTokenMap();
442 
443 	const SvXMLTokenMap& GetTextNumberedParagraphAttrTokenMap();
444 	const SvXMLTokenMap& GetTextListBlockAttrTokenMap();
445 	const SvXMLTokenMap& GetTextListBlockElemTokenMap();
446 	const SvXMLTokenMap& GetTextFieldAttrTokenMap(); // impl: txtfldi.cxx
447 
448     ::com::sun::star::uno::Reference<
449         ::com::sun::star::text::XText > & GetText();
450     ::com::sun::star::uno::Reference<
451         ::com::sun::star::text::XTextCursor > & GetCursor();
452     ::com::sun::star::uno::Reference<
453         ::com::sun::star::text::XTextRange > & GetCursorAsRange();
454 
455     bool IsInsertMode() const;
456     bool IsStylesOnlyMode() const;
457     bool IsBlockMode() const;
458     bool IsOrganizerMode() const;
459     bool IsProgress() const;
460 
461     XMLSectionList_Impl & GetSectionList();
462 
463 	::rtl::OUString ConvertStarFonts( const ::rtl::OUString& rChars,
464 									  const ::rtl::OUString& rStyleName,
465 									  sal_uInt8& rFlags,
466 									  sal_Bool bPara,
467 								   	  SvXMLImport& rImport ) const;
468 	// insert a string without special whitespace processing enabled
469 	void InsertString( const ::rtl::OUString& rChars );
470 	// insert a string with special whitespace processing enabled
471 	void InsertString( const ::rtl::OUString& rChars,
472 					   sal_Bool& rIgnoreLeadingSpace );
473 	// Delete current paragraph
474 	void DeleteParagraph();
475 
476 	void InsertControlCharacter( sal_Int16 nControl );
477 	void InsertTextContent( ::com::sun::star::uno::Reference <
478 							::com::sun::star::text::XTextContent > & xContent);
479 
480     // --> OD 2007-07-25 #i73509# - add parameter <bOutlineLevelAttrFound>
481     // --> OD 2007-08-17 #i80724#
482     // add parameter <bSetListAttrs> in order to suppress the handling of the list attributes
483     ::rtl::OUString SetStyleAndAttrs(
484 			SvXMLImport& rImport,
485 			const ::com::sun::star::uno::Reference <
486 				::com::sun::star::text::XTextCursor >& rCursor,
487 			const ::rtl::OUString& rStyleName,
488 			sal_Bool bPara,
489             sal_Bool bOutlineLevelAttrFound = sal_False,
490             sal_Int8 nOutlineLevel = -1,
491             sal_Bool bSetListAttrs = sal_True );
492     // <--
493 
494     /** Find a suitable name for the given outline level.
495      *  If rStyleName is empty, change it to a previously used or default style
496      *  name for that level. Otherwise, leave rStyleName unmodified.
497      */
498     // --> OD 2006-10-12 #i69629# - adjust 2nd parameter
499     void FindOutlineStyleName( ::rtl::OUString& rStyleName,
500                                sal_Int8 nOutlineLevel );
501     // <--
502 
503     // --> OD 2006-10-12 #i69629#
504     // change method name to reflect change of data structure
505     void AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel,
506                                    const ::rtl::OUString& rStyleName );
507     // <--
508 	void SetOutlineStyles( sal_Bool bSetEmpty );
509 
510 	void SetHyperlink(
511 			SvXMLImport& rImport,
512 			const ::com::sun::star::uno::Reference <
513 				::com::sun::star::text::XTextCursor >& rCursor,
514 			const ::rtl::OUString& rHRef,
515 			const ::rtl::OUString& rName,
516 			const ::rtl::OUString& rTargetFrameName,
517 			const ::rtl::OUString& rStyleName,
518 			const ::rtl::OUString& rVisitedStyleName,
519 			XMLEventsImportContext* pEvents = NULL);
520 	void SetRuby(
521 			SvXMLImport& rImport,
522 			const ::com::sun::star::uno::Reference <
523 				::com::sun::star::text::XTextCursor >& rCursor,
524 			const ::rtl::OUString& rStyleName,
525 			const ::rtl::OUString& rTextStyleName,
526 			const ::rtl::OUString& rText );
527 
528 	/// return key appropriate for use with NumberFormat property
529 	/// return -1 if style is not found
530     /// (may return whether data style uses the system language)
531 	sal_Int32 GetDataStyleKey( const ::rtl::OUString& sStyleName,
532                                sal_Bool* pIsSystemLanguage = NULL );
533 
534 	const SvxXMLListStyleContext *FindAutoListStyle(
535 			const ::rtl::OUString& rName ) const;
536 	XMLPropStyleContext *FindAutoFrameStyle(
537 			const ::rtl::OUString& rName ) const;
538 	XMLPropStyleContext* FindSectionStyle(
539 			const ::rtl::OUString& rName ) const;
540 	XMLPropStyleContext* FindPageMaster(
541 			const ::rtl::OUString& rName ) const;
542 
543     const ::com::sun::star::uno::Reference<
544         ::com::sun::star::container::XNameContainer> & GetParaStyles() const;
545 
546     const ::com::sun::star::uno::Reference<
547         ::com::sun::star::container::XNameContainer> & GetTextStyles() const;
548 
549     const ::com::sun::star::uno::Reference<
550         ::com::sun::star::container::XNameContainer> &
551         GetNumberingStyles() const;
552 
553     const ::com::sun::star::uno::Reference<
554         ::com::sun::star::container::XNameContainer> & GetFrameStyles() const;
555 
556     const ::com::sun::star::uno::Reference<
557         ::com::sun::star::container::XNameContainer> & GetPageStyles() const;
558 
559     const ::com::sun::star::uno::Reference<
560         ::com::sun::star::container::XIndexReplace > &
561         GetChapterNumbering() const;
562 
563 	sal_Bool HasFrameByName( const ::rtl::OUString& rName ) const;
564 	void ConnectFrameChains( const ::rtl::OUString& rFrmName,
565 		const ::rtl::OUString& rNextFrmName,
566 		const ::com::sun::star::uno::Reference <
567 			::com::sun::star::beans::XPropertySet >& rFrmPropSet );
568 
569     UniReference< SvXMLImportPropertyMapper > const&
570         GetParaImportPropertySetMapper() const;
571     UniReference< SvXMLImportPropertyMapper > const&
572         GetTextImportPropertySetMapper() const;
573     UniReference< SvXMLImportPropertyMapper > const&
574         GetFrameImportPropertySetMapper() const;
575     UniReference< SvXMLImportPropertyMapper > const&
576         GetSectionImportPropertySetMapper() const;
577     UniReference< SvXMLImportPropertyMapper > const&
578         GetRubyImportPropertySetMapper() const;
579 
580 	static SvXMLImportPropertyMapper *CreateShapeExtPropMapper(SvXMLImport&);
581 	static SvXMLImportPropertyMapper *CreateCharExtPropMapper(SvXMLImport&, XMLFontStylesContext *pFontDecls = NULL);
582 	static SvXMLImportPropertyMapper *CreateParaExtPropMapper(SvXMLImport&, XMLFontStylesContext *pFontDecls = NULL);
583     static SvXMLImportPropertyMapper* CreateParaDefaultExtPropMapper(SvXMLImport&, XMLFontStylesContext* pFontDecls = NULL);
584     static SvXMLImportPropertyMapper* CreateTableDefaultExtPropMapper(SvXMLImport&, XMLFontStylesContext* pFontDecls = NULL);
585     static SvXMLImportPropertyMapper* CreateTableRowDefaultExtPropMapper(SvXMLImport&, XMLFontStylesContext* pFontDecls = NULL);
586 
587 	static sal_Bool HasDrawNameAttribute(
588 		const ::com::sun::star::uno::Reference<
589 			::com::sun::star::xml::sax::XAttributeList > & xAttrList,
590 		SvXMLNamespaceMap& rNamespaceMap );
591 
592 	SvI18NMap& GetRenameMap();
593 
594 	/// save the start of a range reference
595 	void InsertBookmarkStartRange(
596 		const ::rtl::OUString sName,
597 		const ::com::sun::star::uno::Reference<
598 				::com::sun::star::text::XTextRange> & rRange,
599         ::rtl::OUString const& i_rXmlId,
600         ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > &
601             i_rpRDFaAttributes);
602 
603 	/// process the start of a range reference
604 	sal_Bool FindAndRemoveBookmarkStartRange(
605 		const ::rtl::OUString sName,
606 		::com::sun::star::uno::Reference<
607 				::com::sun::star::text::XTextRange> & o_rRange,
608         ::rtl::OUString & o_rXmlId,
609         ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > &
610             o_rpRDFaAttributes);
611 
612 	::rtl::OUString FindActiveBookmarkName();
613 	::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > GetRangeFor(::rtl::OUString &sName);
614 
615 	void pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type );
616 	void popFieldCtx();
617 	void addFieldParam( ::rtl::OUString name, ::rtl::OUString value );
618 	void setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField);
619 	::rtl::OUString getCurrentFieldName();
620 	::rtl::OUString getCurrentFieldType();
621 	bool hasCurrentFieldCtx();
622 
623 
624 	/// insert new footnote ID.
625 	/// Also fixup open references from the backpatch list to this ID.
626 	// Code is implemented in XMLPropertyBackpatcher.cxx
627 	void InsertFootnoteID(const ::rtl::OUString& sXMLId, sal_Int16 nAPIId);
628 
629 	/// set the proper footnote reference ID,
630 	/// or put into backpatch list if ID is unknown
631 	// Code is implemented in XMLPropertyBackpatcher.cxx
632 	void ProcessFootnoteReference(
633 		const ::rtl::OUString& sXMLId,
634 		const ::com::sun::star::uno::Reference<
635 			::com::sun::star::beans::XPropertySet> & xPropSet);
636 
637 	/// insert new sequence ID
638 	/// Also fixup open references from backpatch list to this ID.
639 	// Code is implemented in XMLPropertyBackpatcher.cxx
640 	void InsertSequenceID(const ::rtl::OUString& sXMLId,
641 						  const ::rtl::OUString& sName,
642 						  sal_Int16 nAPIId);
643 
644 	/// set sequence ID or insert into backpatch list
645 	// Code is implemented in XMLPropertyBackpatcher.cxx
646 	void ProcessSequenceReference(
647 		const ::rtl::OUString& sXMLId,
648 		const ::com::sun::star::uno::Reference<
649 			::com::sun::star::beans::XPropertySet> & xPropSet);
650 
651 	sal_Bool IsInFrame() const;
652 	virtual sal_Bool IsInHeaderFooter() const;
653 
654 	virtual ::com::sun::star::uno::Reference<
655 		::com::sun::star::beans::XPropertySet>
656 			createAndInsertOLEObject( SvXMLImport& rImport,
657 									  const ::rtl::OUString& rHRef,
658 									  const ::rtl::OUString &rStyleName,
659 									  const ::rtl::OUString &rTblName,
660 								   	  sal_Int32 nWidth, sal_Int32 nHeight );
661 
662 	virtual ::com::sun::star::uno::Reference<
663 		::com::sun::star::beans::XPropertySet>
664 			createAndInsertOOoLink( SvXMLImport& rImport,
665 									  const ::rtl::OUString& rHRef,
666 									  const ::rtl::OUString &rStyleName,
667 									  const ::rtl::OUString &rTblName,
668 								   	  sal_Int32 nWidth, sal_Int32 nHeight );
669 
670 	virtual ::com::sun::star::uno::Reference<
671 		::com::sun::star::beans::XPropertySet>
672 	    createAndInsertApplet(
673 			const ::rtl::OUString &rName,
674 			const ::rtl::OUString &rCode,
675 			sal_Bool bMayScript,
676 			const ::rtl::OUString& rHRef,
677 			sal_Int32 nWidth, sal_Int32 nHeight );
678 
679 	virtual ::com::sun::star::uno::Reference<
680 		::com::sun::star::beans::XPropertySet>
681 	    createAndInsertPlugin(
682 			const ::rtl::OUString &rMimeType,
683 			const ::rtl::OUString& rHRef,
684 			sal_Int32 nWidth, sal_Int32 nHeight );
685 
686 	virtual ::com::sun::star::uno::Reference<
687 		::com::sun::star::beans::XPropertySet>
688 	    createAndInsertFloatingFrame(
689 			const ::rtl::OUString &rName,
690 			const ::rtl::OUString &rHRef,
691 			const ::rtl::OUString &rStyleName,
692 			sal_Int32 nWidth, sal_Int32 nHeight );
693 
694 	virtual void endAppletOrPlugin(
695 		const com::sun::star::uno::Reference<
696         ::com::sun::star::beans::XPropertySet> &rPropSet,
697         ::std::map < const ::rtl::OUString, ::rtl::OUString, ::comphelper::UStringLess > &rParamMap );
698 
699 	// applet helper methods
700 	// implemented in sw/filter/xml/txtparai.hxx
701 
702 	// redlining helper methods
703 	// (to be implemented in sw/filter/xml/txtparai.hxx)
704 
705 	virtual void RedlineAdd(
706 		const ::rtl::OUString& rType,		/// redline type (insert, del,... )
707 		const ::rtl::OUString& rId,			/// use to identify this redline
708 		const ::rtl::OUString& rAuthor,		/// name of the author
709 		const ::rtl::OUString& rComment,	/// redline comment
710 		const ::com::sun::star::util::DateTime& rDateTime,	/// date+time
711         sal_Bool bMergeLastParagraph);      /// merge last paras
712 	virtual ::com::sun::star::uno::Reference<
713 		::com::sun::star::text::XTextCursor> RedlineCreateText(
714 			::com::sun::star::uno::Reference< 	/// needed to get the document
715 					::com::sun::star::text::XTextCursor> & rOldCursor,
716 			const ::rtl::OUString& rId);	/// ID used to RedlineAdd() call
717 	virtual void RedlineSetCursor(
718 		const ::rtl::OUString& rId,			/// ID used to RedlineAdd() call
719 		sal_Bool bStart,					/// start or end Cursor
720 		sal_Bool bIsOutsideOfParagraph);	/// range is not within <text:p>
721 	virtual void RedlineAdjustStartNodeCursor(
722 		sal_Bool bStart);
723 	virtual void SetShowChanges( sal_Bool bShowChanges );
724 	virtual void SetRecordChanges( sal_Bool bRecordChanges );
725 	virtual void SetChangesProtectionKey(
726 		const ::com::sun::star::uno::Sequence<sal_Int8> & rProtectionKey );
727 
728 	// access to the last open redline ID:
729 	::rtl::OUString GetOpenRedlineId();
730 	void SetOpenRedlineId( ::rtl::OUString& rId);
731 	void ResetOpenRedlineId();
732 
733 	// #107848#
734 	// Access methods to the inside_deleted_section flag (redlining)
735     void SetInsideDeleteContext(bool const bNew);
736     bool IsInsideDeleteContext() const;
737 
738     SvXMLImport & GetXMLImport();
739 
740     // --> OD 2008-04-25 #refactorlists#
741     XMLTextListsHelper & GetTextListHelper();
742     // <--
743 
744     // forwards to TextListHelper; these are used in many places
745     /// push a list context on the list context stack
746     void PushListContext(XMLTextListBlockContext *i_pListBlock = 0);
747     /// pop the list context stack
748     void PopListContext();
749 
750     void SetCellParaStyleDefault(::rtl::OUString const& rNewValue);
751     ::rtl::OUString const& GetCellParaStyleDefault();
752 };
753 
754 #endif
755