xref: /trunk/main/xmloff/inc/xmloff/txtimp.hxx (revision 3b32dd21)
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_ANNOTATION_END,
228     XML_TOK_TEXT_NAME,
229     XML_TOK_TEXT_SCRIPT,
230     XML_TOK_TEXT_TABLE_FORMULA,
231     XML_TOK_TEXT_DROPDOWN,
232 
233     // RDF metadata
234     XML_TOK_TEXT_META,
235     XML_TOK_TEXT_META_FIELD,
236 
237 	// misc
238 	XML_TOK_TEXTP_CHANGE_START,	// TEXTP avoids clash with SwXMLTextElemTokens
239 	XML_TOK_TEXTP_CHANGE_END,
240 	XML_TOK_TEXTP_CHANGE,
241 	XML_TOK_DRAW_A,
242 	XML_TOK_TEXT_MEASURE,
243 
244 	XML_TOK_DRAW_HEADER,
245 	XML_TOK_DRAW_FOOTER,
246 	XML_TOK_DRAW_DATE_TIME,
247 	XML_TOK_TEXT_PAGE_CONTINUATION,
248 
249 	XML_TOK_TEXT_FIELDMARK,
250 	XML_TOK_TEXT_FIELDMARK_START,
251 	XML_TOK_TEXT_FIELDMARK_END,
252 
253 	XML_TOK_TEXT_P_ELEM_END=XML_TOK_UNKNOWN
254 };
255 
256 enum XMLTextPAttrTokens
257 {
258     XML_TOK_TEXT_P_XMLID,
259     XML_TOK_TEXT_P_ABOUT,
260     XML_TOK_TEXT_P_PROPERTY,
261     XML_TOK_TEXT_P_CONTENT,
262     XML_TOK_TEXT_P_DATATYPE,
263     XML_TOK_TEXT_P_TEXTID,
264 	XML_TOK_TEXT_P_STYLE_NAME,
265 	XML_TOK_TEXT_P_COND_STYLE_NAME,
266 	XML_TOK_TEXT_P_LEVEL,
267 	XML_TOK_TEXT_P_CLASS_NAMES,
268     XML_TOK_TEXT_P_IS_LIST_HEADER,
269     XML_TOK_TEXT_P_RESTART_NUMBERING,
270     XML_TOK_TEXT_P_START_VALUE,
271 	XML_TOK_TEXT_P_END=XML_TOK_UNKNOWN
272 };
273 
274 enum XMLTextNumberedParagraphAttrTokens
275 {
276 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_XMLID,
277 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_LIST_ID,
278 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_LEVEL,
279 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_STYLE_NAME,
280 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_CONTINUE_NUMBERING,
281 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_START_VALUE,
282 	XML_TOK_TEXT_NUMBERED_PARAGRAPH_END=XML_TOK_UNKNOWN
283 };
284 
285 enum XMLTextListBlockAttrTokens
286 {
287 	XML_TOK_TEXT_LIST_BLOCK_XMLID,
288 	XML_TOK_TEXT_LIST_BLOCK_STYLE_NAME,
289 	XML_TOK_TEXT_LIST_BLOCK_CONTINUE_NUMBERING,
290     // --> OD 2008-04-22 #refactorlists#
291     XML_TOK_TEXT_LIST_BLOCK_ID,
292     XML_TOK_TEXT_LIST_BLOCK_CONTINUE_LIST,
293     // <--
294     XML_TOK_TEXT_LIST_BLOCK_END=XML_TOK_UNKNOWN
295 };
296 
297 enum XMLTextListBlockElemTokens
298 {
299 	XML_TOK_TEXT_LIST_HEADER,
300 	XML_TOK_TEXT_LIST_ITEM,
301 	XML_TOK_TEXT_LIST_BLOCK_ELEM_END=XML_TOK_UNKNOWN
302 };
303 
304 enum XMLTextFrameAttrTokens
305 {
306 	XML_TOK_TEXT_FRAME_STYLE_NAME,
307 	XML_TOK_TEXT_FRAME_NAME,
308 	XML_TOK_TEXT_FRAME_ANCHOR_TYPE,
309 	XML_TOK_TEXT_FRAME_ANCHOR_PAGE_NUMBER,
310 	XML_TOK_TEXT_FRAME_X,
311 	XML_TOK_TEXT_FRAME_Y,
312 	XML_TOK_TEXT_FRAME_WIDTH,
313 	XML_TOK_TEXT_FRAME_REL_WIDTH,
314 	XML_TOK_TEXT_FRAME_HEIGHT,
315 	XML_TOK_TEXT_FRAME_MIN_HEIGHT,
316 	XML_TOK_TEXT_FRAME_REL_HEIGHT,
317 	XML_TOK_TEXT_FRAME_NEXT_CHAIN_NAME,
318 	XML_TOK_TEXT_FRAME_HREF,
319 	XML_TOK_TEXT_FRAME_FILTER_NAME,
320 	XML_TOK_TEXT_FRAME_Z_INDEX,
321 	XML_TOK_TEXT_FRAME_TRANSFORM,
322 	XML_TOK_TEXT_FRAME_CLASS_ID,
323 	XML_TOK_TEXT_FRAME_CODE,
324 	XML_TOK_TEXT_FRAME_OBJECT,
325 	XML_TOK_TEXT_FRAME_ARCHIVE,
326 	XML_TOK_TEXT_FRAME_MAY_SCRIPT,
327 	XML_TOK_TEXT_FRAME_MIME_TYPE,
328 	XML_TOK_TEXT_FRAME_APPLET_NAME,
329 	XML_TOK_TEXT_FRAME_FRAME_NAME,
330 	XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE,
331     XML_TOK_TEXT_FRAME_MIN_WIDTH,
332 	XML_TOK_TEXT_FRAME_END=XML_TOK_UNKNOWN
333 };
334 
335 enum XMLTextHyperlinkAttrTokens
336 {
337 	XML_TOK_TEXT_HYPERLINK_HREF,
338 	XML_TOK_TEXT_HYPERLINK_NAME,
339 	XML_TOK_TEXT_HYPERLINK_TARGET_FRAME,
340 	XML_TOK_TEXT_HYPERLINK_SHOW,
341 	XML_TOK_TEXT_HYPERLINK_STYLE_NAME,
342 	XML_TOK_TEXT_HYPERLINK_VIS_STYLE_NAME,
343 	XML_TOK_TEXT_HYPERLINK_SERVER_MAP,
344 	XML_TOK_TEXT_HYPERLINK_END=XML_TOK_UNKNOWN
345 };
346 
347 enum XMLTextPageMasterElemTokens
348 {
349 	XML_TOK_TEXT_MP_HEADER,
350 	XML_TOK_TEXT_MP_FOOTER,
351 	XML_TOK_TEXT_MP_HEADER_LEFT,
352 	XML_TOK_TEXT_MP_FOOTER_LEFT,
353 	XML_TOK_TEXT_MP_END=XML_TOK_UNKNOWN
354 };
355 
356 enum XMLTextContourAttrTokens
357 {
358 	XML_TOK_TEXT_CONTOUR_WIDTH,
359 	XML_TOK_TEXT_CONTOUR_HEIGHT,
360 	XML_TOK_TEXT_CONTOUR_VIEWBOX,
361 	XML_TOK_TEXT_CONTOUR_POINTS,
362 	XML_TOK_TEXT_CONTOUR_D,
363 	XML_TOK_TEXT_CONTOUR_AUTO,
364 	XML_TOK_TEXT_CONTOUR_END=XML_TOK_UNKNOWN
365 };
366 enum XMLTextType
367 {
368 	XML_TEXT_TYPE_BODY,
369 	XML_TEXT_TYPE_CELL,
370 	XML_TEXT_TYPE_SHAPE,
371 	XML_TEXT_TYPE_TEXTBOX,
372 	XML_TEXT_TYPE_HEADER_FOOTER,
373 	XML_TEXT_TYPE_SECTION,
374 	XML_TEXT_TYPE_FOOTNOTE,
375 	XML_TEXT_TYPE_CHANGED_REGION
376 };
377 
378 #define XML_TEXT_RENAME_TYPE_FRAME 10
379 #define XML_TEXT_RENAME_TYPE_TABLE 20
380 
381 // create type for section list, XMLSectionList_Impl
382 DECLARE_LIST( XMLSectionList_Impl, XMLSectionImportContext* )
383 
384 class XMLOFF_DLLPUBLIC XMLTextImportHelper : public UniRefBase,
385     private boost::noncopyable
386 {
387 private:
388     struct Impl;
389     ::std::auto_ptr<Impl> m_pImpl;
390     /// ugly, but implementation of this is in XMLPropertyBackpatcher.cxx
391     struct BackpatcherImpl;
392     ::boost::shared_ptr<BackpatcherImpl> m_pBackpatcherImpl;
393     ::boost::shared_ptr<BackpatcherImpl> MakeBackpatcherImpl();
394 
395 protected:
396 	virtual SvXMLImportContext *CreateTableChildContext(
397 				SvXMLImport& rImport,
398 				sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
399 				const ::com::sun::star::uno::Reference<
400 					::com::sun::star::xml::sax::XAttributeList > & xAttrList );
401 
402 	// access, lazy initialization and destruction of backpatchers
403 	// Code is implemented in XMLPropertyBackpatcher.cxx
404 	inline XMLPropertyBackpatcher<sal_Int16>& GetFootnoteBP();
405 	inline XMLPropertyBackpatcher<sal_Int16>& GetSequenceIdBP();
406 	inline XMLPropertyBackpatcher< ::rtl::OUString> & GetSequenceNameBP();
407 
408 public:
409 
410 	XMLTextImportHelper(
411             ::com::sun::star::uno::Reference <
412                 ::com::sun::star::frame::XModel> const& rModel,
413             SvXMLImport& rImport,
414             bool const bInsertMode = false, bool const bStylesOnlyMode = false,
415             bool const bProgress = false, bool const bBlockMode = false,
416             bool const bOrganizerMode = false);
417 
418 	~XMLTextImportHelper();
419 
420 	void SetCursor(
421 			const ::com::sun::star::uno::Reference <
422 				::com::sun::star::text::XTextCursor >& rCursor );
423 	void ResetCursor();
424 
425 	void SetAutoStyles( SvXMLStylesContext *pStyles );
426 
427 	void SetFontDecls( XMLFontStylesContext *pFontDecls );
428 	const XMLFontStylesContext *GetFontDecls() const;
429 
430 	SvXMLImportContext *CreateTextChildContext(
431 			SvXMLImport& rImport,
432 			sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName,
433 			const ::com::sun::star::uno::Reference<
434 				::com::sun::star::xml::sax::XAttributeList > & xAttrList,
435 			XMLTextType eType = XML_TEXT_TYPE_SHAPE );
436 
437     SvXMLTokenMap const& GetTextElemTokenMap();
438     SvXMLTokenMap const& GetTextPElemTokenMap();
439     SvXMLTokenMap const& GetTextPAttrTokenMap();
440     SvXMLTokenMap const& GetTextFrameAttrTokenMap();
441     SvXMLTokenMap const& GetTextContourAttrTokenMap();
442     SvXMLTokenMap const& GetTextHyperlinkAttrTokenMap();
443     SvXMLTokenMap const& GetTextMasterPageElemTokenMap();
444 
445 	const SvXMLTokenMap& GetTextNumberedParagraphAttrTokenMap();
446 	const SvXMLTokenMap& GetTextListBlockAttrTokenMap();
447 	const SvXMLTokenMap& GetTextListBlockElemTokenMap();
448 	const SvXMLTokenMap& GetTextFieldAttrTokenMap(); // impl: txtfldi.cxx
449 
450     ::com::sun::star::uno::Reference<
451         ::com::sun::star::text::XText > & GetText();
452     ::com::sun::star::uno::Reference<
453         ::com::sun::star::text::XTextCursor > & GetCursor();
454     ::com::sun::star::uno::Reference<
455         ::com::sun::star::text::XTextRange > & GetCursorAsRange();
456 
457     bool IsInsertMode() const;
458     bool IsStylesOnlyMode() const;
459     bool IsBlockMode() const;
460     bool IsOrganizerMode() const;
461     bool IsProgress() const;
462 
463     XMLSectionList_Impl & GetSectionList();
464 
465 	::rtl::OUString ConvertStarFonts( const ::rtl::OUString& rChars,
466 									  const ::rtl::OUString& rStyleName,
467 									  sal_uInt8& rFlags,
468 									  sal_Bool bPara,
469 								   	  SvXMLImport& rImport ) const;
470 	// insert a string without special whitespace processing enabled
471 	void InsertString( const ::rtl::OUString& rChars );
472 	// insert a string with special whitespace processing enabled
473 	void InsertString( const ::rtl::OUString& rChars,
474 					   sal_Bool& rIgnoreLeadingSpace );
475 	// Delete current paragraph
476 	void DeleteParagraph();
477 
478 	void InsertControlCharacter( sal_Int16 nControl );
479 	void InsertTextContent( ::com::sun::star::uno::Reference <
480 							::com::sun::star::text::XTextContent > & xContent);
481 
482     // --> OD 2007-07-25 #i73509# - add parameter <bOutlineLevelAttrFound>
483     // --> OD 2007-08-17 #i80724#
484     // add parameter <bSetListAttrs> in order to suppress the handling of the list attributes
485     ::rtl::OUString SetStyleAndAttrs(
486 			SvXMLImport& rImport,
487 			const ::com::sun::star::uno::Reference <
488 				::com::sun::star::text::XTextCursor >& rCursor,
489 			const ::rtl::OUString& rStyleName,
490 			sal_Bool bPara,
491             sal_Bool bOutlineLevelAttrFound = sal_False,
492             sal_Int8 nOutlineLevel = -1,
493             sal_Bool bSetListAttrs = sal_True );
494     // <--
495 
496     /** Find a suitable name for the given outline level.
497      *  If rStyleName is empty, change it to a previously used or default style
498      *  name for that level. Otherwise, leave rStyleName unmodified.
499      */
500     // --> OD 2006-10-12 #i69629# - adjust 2nd parameter
501     void FindOutlineStyleName( ::rtl::OUString& rStyleName,
502                                sal_Int8 nOutlineLevel );
503     // <--
504 
505     // --> OD 2006-10-12 #i69629#
506     // change method name to reflect change of data structure
507     void AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel,
508                                    const ::rtl::OUString& rStyleName );
509     // <--
510 	void SetOutlineStyles( sal_Bool bSetEmpty );
511 
512 	void SetHyperlink(
513 			SvXMLImport& rImport,
514 			const ::com::sun::star::uno::Reference <
515 				::com::sun::star::text::XTextCursor >& rCursor,
516 			const ::rtl::OUString& rHRef,
517 			const ::rtl::OUString& rName,
518 			const ::rtl::OUString& rTargetFrameName,
519 			const ::rtl::OUString& rStyleName,
520 			const ::rtl::OUString& rVisitedStyleName,
521 			XMLEventsImportContext* pEvents = NULL);
522 	void SetRuby(
523 			SvXMLImport& rImport,
524 			const ::com::sun::star::uno::Reference <
525 				::com::sun::star::text::XTextCursor >& rCursor,
526 			const ::rtl::OUString& rStyleName,
527 			const ::rtl::OUString& rTextStyleName,
528 			const ::rtl::OUString& rText );
529 
530 	/// return key appropriate for use with NumberFormat property
531 	/// return -1 if style is not found
532     /// (may return whether data style uses the system language)
533 	sal_Int32 GetDataStyleKey( const ::rtl::OUString& sStyleName,
534                                sal_Bool* pIsSystemLanguage = NULL );
535 
536 	const SvxXMLListStyleContext *FindAutoListStyle(
537 			const ::rtl::OUString& rName ) const;
538 	XMLPropStyleContext *FindAutoFrameStyle(
539 			const ::rtl::OUString& rName ) const;
540 	XMLPropStyleContext* FindSectionStyle(
541 			const ::rtl::OUString& rName ) const;
542 	XMLPropStyleContext* FindPageMaster(
543 			const ::rtl::OUString& rName ) const;
544 
545     const ::com::sun::star::uno::Reference<
546         ::com::sun::star::container::XNameContainer> & GetParaStyles() const;
547 
548     const ::com::sun::star::uno::Reference<
549         ::com::sun::star::container::XNameContainer> & GetTextStyles() const;
550 
551     const ::com::sun::star::uno::Reference<
552         ::com::sun::star::container::XNameContainer> &
553         GetNumberingStyles() const;
554 
555     const ::com::sun::star::uno::Reference<
556         ::com::sun::star::container::XNameContainer> & GetFrameStyles() const;
557 
558     const ::com::sun::star::uno::Reference<
559         ::com::sun::star::container::XNameContainer> & GetPageStyles() const;
560 
561     const ::com::sun::star::uno::Reference<
562         ::com::sun::star::container::XIndexReplace > &
563         GetChapterNumbering() const;
564 
565 	sal_Bool HasFrameByName( const ::rtl::OUString& rName ) const;
566 	void ConnectFrameChains( const ::rtl::OUString& rFrmName,
567 		const ::rtl::OUString& rNextFrmName,
568 		const ::com::sun::star::uno::Reference <
569 			::com::sun::star::beans::XPropertySet >& rFrmPropSet );
570 
571     UniReference< SvXMLImportPropertyMapper > const&
572         GetParaImportPropertySetMapper() const;
573     UniReference< SvXMLImportPropertyMapper > const&
574         GetTextImportPropertySetMapper() const;
575     UniReference< SvXMLImportPropertyMapper > const&
576         GetFrameImportPropertySetMapper() const;
577     UniReference< SvXMLImportPropertyMapper > const&
578         GetSectionImportPropertySetMapper() const;
579     UniReference< SvXMLImportPropertyMapper > const&
580         GetRubyImportPropertySetMapper() const;
581 
582 	static SvXMLImportPropertyMapper *CreateShapeExtPropMapper(SvXMLImport&);
583 	static SvXMLImportPropertyMapper *CreateCharExtPropMapper(SvXMLImport&, XMLFontStylesContext *pFontDecls = NULL);
584 	static SvXMLImportPropertyMapper *CreateParaExtPropMapper(SvXMLImport&, XMLFontStylesContext *pFontDecls = NULL);
585     static SvXMLImportPropertyMapper* CreateParaDefaultExtPropMapper(SvXMLImport&, XMLFontStylesContext* pFontDecls = NULL);
586     static SvXMLImportPropertyMapper* CreateTableDefaultExtPropMapper(SvXMLImport&, XMLFontStylesContext* pFontDecls = NULL);
587     static SvXMLImportPropertyMapper* CreateTableRowDefaultExtPropMapper(SvXMLImport&, XMLFontStylesContext* pFontDecls = NULL);
588 
589 	static sal_Bool HasDrawNameAttribute(
590 		const ::com::sun::star::uno::Reference<
591 			::com::sun::star::xml::sax::XAttributeList > & xAttrList,
592 		SvXMLNamespaceMap& rNamespaceMap );
593 
594 	SvI18NMap& GetRenameMap();
595 
596 	/// save the start of a range reference
597 	void InsertBookmarkStartRange(
598 		const ::rtl::OUString sName,
599 		const ::com::sun::star::uno::Reference<
600 				::com::sun::star::text::XTextRange> & rRange,
601         ::rtl::OUString const& i_rXmlId,
602         ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > &
603             i_rpRDFaAttributes);
604 
605 	/// process the start of a range reference
606 	sal_Bool FindAndRemoveBookmarkStartRange(
607 		const ::rtl::OUString sName,
608 		::com::sun::star::uno::Reference<
609 				::com::sun::star::text::XTextRange> & o_rRange,
610         ::rtl::OUString & o_rXmlId,
611         ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > &
612             o_rpRDFaAttributes);
613 
614 	::rtl::OUString FindActiveBookmarkName();
615 	::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > GetRangeFor(::rtl::OUString &sName);
616 
617 	void pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type );
618 	void popFieldCtx();
619 	void addFieldParam( ::rtl::OUString name, ::rtl::OUString value );
620 	void setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField);
621 	::rtl::OUString getCurrentFieldName();
622 	::rtl::OUString getCurrentFieldType();
623 	bool hasCurrentFieldCtx();
624 
625 
626 	/// insert new footnote ID.
627 	/// Also fixup open references from the backpatch list to this ID.
628 	// Code is implemented in XMLPropertyBackpatcher.cxx
629 	void InsertFootnoteID(const ::rtl::OUString& sXMLId, sal_Int16 nAPIId);
630 
631 	/// set the proper footnote reference ID,
632 	/// or put into backpatch list if ID is unknown
633 	// Code is implemented in XMLPropertyBackpatcher.cxx
634 	void ProcessFootnoteReference(
635 		const ::rtl::OUString& sXMLId,
636 		const ::com::sun::star::uno::Reference<
637 			::com::sun::star::beans::XPropertySet> & xPropSet);
638 
639 	/// insert new sequence ID
640 	/// Also fixup open references from backpatch list to this ID.
641 	// Code is implemented in XMLPropertyBackpatcher.cxx
642 	void InsertSequenceID(const ::rtl::OUString& sXMLId,
643 						  const ::rtl::OUString& sName,
644 						  sal_Int16 nAPIId);
645 
646 	/// set sequence ID or insert into backpatch list
647 	// Code is implemented in XMLPropertyBackpatcher.cxx
648 	void ProcessSequenceReference(
649 		const ::rtl::OUString& sXMLId,
650 		const ::com::sun::star::uno::Reference<
651 			::com::sun::star::beans::XPropertySet> & xPropSet);
652 
653 	sal_Bool IsInFrame() const;
654 	virtual sal_Bool IsInHeaderFooter() const;
655 
656 	virtual ::com::sun::star::uno::Reference<
657 		::com::sun::star::beans::XPropertySet>
658 			createAndInsertOLEObject( SvXMLImport& rImport,
659 									  const ::rtl::OUString& rHRef,
660 									  const ::rtl::OUString &rStyleName,
661 									  const ::rtl::OUString &rTblName,
662 								   	  sal_Int32 nWidth, sal_Int32 nHeight );
663 
664 	virtual ::com::sun::star::uno::Reference<
665 		::com::sun::star::beans::XPropertySet>
666 			createAndInsertOOoLink( SvXMLImport& rImport,
667 									  const ::rtl::OUString& rHRef,
668 									  const ::rtl::OUString &rStyleName,
669 									  const ::rtl::OUString &rTblName,
670 								   	  sal_Int32 nWidth, sal_Int32 nHeight );
671 
672 	virtual ::com::sun::star::uno::Reference<
673 		::com::sun::star::beans::XPropertySet>
674 	    createAndInsertApplet(
675 			const ::rtl::OUString &rName,
676 			const ::rtl::OUString &rCode,
677 			sal_Bool bMayScript,
678 			const ::rtl::OUString& rHRef,
679 			sal_Int32 nWidth, sal_Int32 nHeight );
680 
681 	virtual ::com::sun::star::uno::Reference<
682 		::com::sun::star::beans::XPropertySet>
683 	    createAndInsertPlugin(
684 			const ::rtl::OUString &rMimeType,
685 			const ::rtl::OUString& rHRef,
686 			sal_Int32 nWidth, sal_Int32 nHeight );
687 
688 	virtual ::com::sun::star::uno::Reference<
689 		::com::sun::star::beans::XPropertySet>
690 	    createAndInsertFloatingFrame(
691 			const ::rtl::OUString &rName,
692 			const ::rtl::OUString &rHRef,
693 			const ::rtl::OUString &rStyleName,
694 			sal_Int32 nWidth, sal_Int32 nHeight );
695 
696 	virtual void endAppletOrPlugin(
697 		const com::sun::star::uno::Reference<
698         ::com::sun::star::beans::XPropertySet> &rPropSet,
699         ::std::map < const ::rtl::OUString, ::rtl::OUString, ::comphelper::UStringLess > &rParamMap );
700 
701 	// applet helper methods
702 	// implemented in sw/filter/xml/txtparai.hxx
703 
704 	// redlining helper methods
705 	// (to be implemented in sw/filter/xml/txtparai.hxx)
706 
707 	virtual void RedlineAdd(
708 		const ::rtl::OUString& rType,		/// redline type (insert, del,... )
709 		const ::rtl::OUString& rId,			/// use to identify this redline
710 		const ::rtl::OUString& rAuthor,		/// name of the author
711 		const ::rtl::OUString& rComment,	/// redline comment
712 		const ::com::sun::star::util::DateTime& rDateTime,	/// date+time
713         sal_Bool bMergeLastParagraph);      /// merge last paras
714 	virtual ::com::sun::star::uno::Reference<
715 		::com::sun::star::text::XTextCursor> RedlineCreateText(
716 			::com::sun::star::uno::Reference< 	/// needed to get the document
717 					::com::sun::star::text::XTextCursor> & rOldCursor,
718 			const ::rtl::OUString& rId);	/// ID used to RedlineAdd() call
719 	virtual void RedlineSetCursor(
720 		const ::rtl::OUString& rId,			/// ID used to RedlineAdd() call
721 		sal_Bool bStart,					/// start or end Cursor
722 		sal_Bool bIsOutsideOfParagraph);	/// range is not within <text:p>
723 	virtual void RedlineAdjustStartNodeCursor(
724 		sal_Bool bStart);
725 	virtual void SetShowChanges( sal_Bool bShowChanges );
726 	virtual void SetRecordChanges( sal_Bool bRecordChanges );
727 	virtual void SetChangesProtectionKey(
728 		const ::com::sun::star::uno::Sequence<sal_Int8> & rProtectionKey );
729 
730 	// access to the last open redline ID:
731 	::rtl::OUString GetOpenRedlineId();
732 	void SetOpenRedlineId( ::rtl::OUString& rId);
733 	void ResetOpenRedlineId();
734 
735 	// #107848#
736 	// Access methods to the inside_deleted_section flag (redlining)
737     void SetInsideDeleteContext(bool const bNew);
738     bool IsInsideDeleteContext() const;
739 
740     SvXMLImport & GetXMLImport();
741 
742     // --> OD 2008-04-25 #refactorlists#
743     XMLTextListsHelper & GetTextListHelper();
744     // <--
745 
746     // forwards to TextListHelper; these are used in many places
747     /// push a list context on the list context stack
748     void PushListContext(XMLTextListBlockContext *i_pListBlock = 0);
749     /// pop the list context stack
750     void PopListContext();
751 
752     void SetCellParaStyleDefault(::rtl::OUString const& rNewValue);
753     ::rtl::OUString const& GetCellParaStyleDefault();
754 };
755 
756 #endif
757