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