1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef INCLUDED_XMLOFF_TXTIMP_HXX
20 #define INCLUDED_XMLOFF_TXTIMP_HXX
22 #include <sal/config.h>
23 #include <xmloff/dllapi.h>
24 #include <sal/types.h>
25 #include <rtl/ustring.hxx>
26 #include <com/sun/star/uno/Reference.h>
27 #include <com/sun/star/uno/Sequence.hxx>
32 #include <salhelper/simplereferenceobject.hxx>
34 class XMLTextListsHelper
;
35 class SvXMLImportContext
;
37 class SvXMLImportPropertyMapper
;
39 class SvXMLStylesContext
;
40 class SvxXMLListStyleContext
;
41 class XMLPropStyleContext
;
43 template<class A
> class XMLPropertyBackpatcher
;
44 class XMLEventsImportContext
;
47 struct ParsedRDFaAttributes
;
50 namespace com
{ namespace sun
{ namespace star
{
58 namespace frame
{ class XModel
; }
59 namespace container
{ class XNameContainer
; class XIndexReplace
; }
60 namespace beans
{ class XPropertySet
; }
61 namespace xml
{ namespace sax
{ class XAttributeList
; } }
62 namespace util
{ struct DateTime
; }
65 namespace rtl
{ template <class reference_type
> class Reference
; }
67 enum SwXMLTextElemTokens
72 XML_TOK_TEXT_FRAME_PAGE
,
74 XML_TOK_TEXT_VARFIELD_DECLS
,
75 XML_TOK_TEXT_USERFIELD_DECLS
,
76 XML_TOK_TEXT_SEQUENCE_DECLS
,
77 XML_TOK_TEXT_DDE_DECLS
,
81 XML_TOK_TEXT_OBJECT_INDEX
,
82 XML_TOK_TEXT_TABLE_INDEX
,
83 XML_TOK_TEXT_ILLUSTRATION_INDEX
,
84 XML_TOK_TEXT_USER_INDEX
,
85 XML_TOK_TEXT_ALPHABETICAL_INDEX
,
86 XML_TOK_TEXT_BIBLIOGRAPHY_INDEX
,
87 XML_TOK_TEXT_INDEX_TITLE
,
88 XML_TOK_TEXT_TRACKED_CHANGES
,
89 XML_TOK_TEXT_CHANGE_START
,
90 XML_TOK_TEXT_CHANGE_END
,
93 XML_TOK_TEXT_CALCULATION_SETTINGS
,
94 XML_TOK_TEXT_AUTOMARK
,
95 XML_TOK_TEXT_NUMBERED_PARAGRAPH
98 enum XMLTextPElemTokens
101 XML_TOK_TEXT_TAB_STOP
,
102 XML_TOK_TEXT_LINE_BREAK
,
103 XML_TOK_TEXT_SOFT_PAGE_BREAK
,
106 XML_TOK_TEXT_HYPERLINK
,
110 XML_TOK_TEXT_BOOKMARK
,
111 XML_TOK_TEXT_BOOKMARK_START
,
112 XML_TOK_TEXT_BOOKMARK_END
,
113 XML_TOK_TEXT_REFERENCE
,
114 XML_TOK_TEXT_REFERENCE_START
,
115 XML_TOK_TEXT_REFERENCE_END
,
117 XML_TOK_TEXT_TOC_MARK
, // index marks
118 XML_TOK_TEXT_TOC_MARK_START
,
119 XML_TOK_TEXT_TOC_MARK_END
,
120 XML_TOK_TEXT_USER_INDEX_MARK
,
121 XML_TOK_TEXT_USER_INDEX_MARK_START
,
122 XML_TOK_TEXT_USER_INDEX_MARK_END
,
123 XML_TOK_TEXT_ALPHA_INDEX_MARK
,
124 XML_TOK_TEXT_ALPHA_INDEX_MARK_START
,
125 XML_TOK_TEXT_ALPHA_INDEX_MARK_END
,
127 XML_TOK_TEXT_SENDER_FIRSTNAME
, // sender fields
128 XML_TOK_TEXT_SENDER_LASTNAME
,
129 XML_TOK_TEXT_SENDER_INITIALS
,
130 XML_TOK_TEXT_SENDER_TITLE
,
131 XML_TOK_TEXT_SENDER_POSITION
,
132 XML_TOK_TEXT_SENDER_EMAIL
,
133 XML_TOK_TEXT_SENDER_PHONE_PRIVATE
,
134 XML_TOK_TEXT_SENDER_FAX
,
135 XML_TOK_TEXT_SENDER_COMPANY
,
136 XML_TOK_TEXT_SENDER_PHONE_WORK
,
137 XML_TOK_TEXT_SENDER_STREET
,
138 XML_TOK_TEXT_SENDER_CITY
,
139 XML_TOK_TEXT_SENDER_POSTAL_CODE
,
140 XML_TOK_TEXT_SENDER_COUNTRY
,
141 XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE
,
143 XML_TOK_TEXT_AUTHOR_NAME
, // author fields
144 XML_TOK_TEXT_AUTHOR_INITIALS
,
146 XML_TOK_TEXT_DATE
, // date & time fields
149 XML_TOK_TEXT_PAGE_NUMBER
, // page number fields
150 XML_TOK_TEXT_PAGE_CONTINUATION_STRING
,
152 XML_TOK_TEXT_VARIABLE_SET
, // variable fields
153 XML_TOK_TEXT_VARIABLE_GET
,
154 XML_TOK_TEXT_VARIABLE_INPUT
,
155 XML_TOK_TEXT_USER_FIELD_GET
,
156 XML_TOK_TEXT_USER_FIELD_INPUT
,
157 XML_TOK_TEXT_SEQUENCE
,
158 XML_TOK_TEXT_EXPRESSION
,
159 XML_TOK_TEXT_TEXT_INPUT
,
161 XML_TOK_TEXT_DATABASE_DISPLAY
, // database fields
162 XML_TOK_TEXT_DATABASE_NEXT
,
163 XML_TOK_TEXT_DATABASE_SELECT
,
164 XML_TOK_TEXT_DATABASE_ROW_NUMBER
,
165 XML_TOK_TEXT_DATABASE_NAME
,
167 XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR
, //document info fields
168 XML_TOK_TEXT_DOCUMENT_CREATION_DATE
,
169 XML_TOK_TEXT_DOCUMENT_CREATION_TIME
,
170 XML_TOK_TEXT_DOCUMENT_DESCRIPTION
,
171 XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR
,
172 XML_TOK_TEXT_DOCUMENT_PRINT_DATE
,
173 XML_TOK_TEXT_DOCUMENT_PRINT_TIME
,
174 XML_TOK_TEXT_DOCUMENT_TITLE
,
175 XML_TOK_TEXT_DOCUMENT_SUBJECT
,
176 XML_TOK_TEXT_DOCUMENT_KEYWORDS
,
177 XML_TOK_TEXT_DOCUMENT_REVISION
,
178 XML_TOK_TEXT_DOCUMENT_EDIT_DURATION
,
179 XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR
,
180 XML_TOK_TEXT_DOCUMENT_SAVE_DATE
,
181 XML_TOK_TEXT_DOCUMENT_SAVE_TIME
,
182 XML_TOK_TEXT_DOCUMENT_USER_DEFINED
,
184 XML_TOK_TEXT_PLACEHOLDER
, // misc. fields
185 XML_TOK_TEXT_CONDITIONAL_TEXT
,
186 XML_TOK_TEXT_HIDDEN_TEXT
,
187 XML_TOK_TEXT_HIDDEN_PARAGRAPH
,
188 XML_TOK_TEXT_FILENAME
,
189 XML_TOK_TEXT_CHAPTER
,
190 XML_TOK_TEXT_TEMPLATENAME
,
191 XML_TOK_TEXT_WORD_COUNT
, // statistics/count fields
192 XML_TOK_TEXT_PARAGRAPH_COUNT
,
193 XML_TOK_TEXT_TABLE_COUNT
,
194 XML_TOK_TEXT_CHARACTER_COUNT
,
195 XML_TOK_TEXT_IMAGE_COUNT
,
196 XML_TOK_TEXT_OBJECT_COUNT
,
197 XML_TOK_TEXT_PAGE_COUNT
,
198 XML_TOK_TEXT_GET_PAGE_VAR
,
199 XML_TOK_TEXT_SET_PAGE_VAR
,
202 XML_TOK_TEXT_REFERENCE_REF
,
203 XML_TOK_TEXT_BOOKMARK_REF
,
204 XML_TOK_TEXT_SEQUENCE_REF
,
205 XML_TOK_TEXT_NOTE_REF
,
206 XML_TOK_TEXT_SHEET_NAME
,
207 XML_TOK_TEXT_PAGE_NAME
,
208 XML_TOK_TEXT_BIBLIOGRAPHY_MARK
,
209 XML_TOK_TEXT_ANNOTATION
,
210 XML_TOK_TEXT_ANNOTATION_END
,
212 XML_TOK_TEXT_RESOLVED
,
214 XML_TOK_TEXT_TABLE_FORMULA
,
215 XML_TOK_TEXT_DROP_DOWN
,
219 XML_TOK_TEXT_META_FIELD
,
222 XML_TOK_TEXTP_CHANGE_START
, // TEXTP avoids clash with SwXMLTextElemTokens
223 XML_TOK_TEXTP_CHANGE_END
,
224 XML_TOK_TEXTP_CHANGE
,
226 XML_TOK_TEXT_MEASURE
,
230 XML_TOK_DRAW_DATE_TIME
,
231 XML_TOK_TEXT_PAGE_CONTINUATION
,
233 XML_TOK_TEXT_FIELDMARK
,
234 XML_TOK_TEXT_FIELDMARK_START
,
235 XML_TOK_TEXT_FIELDMARK_END
238 enum XMLTextPAttrTokens
240 XML_TOK_TEXT_P_XMLID
,
241 XML_TOK_TEXT_P_ABOUT
,
242 XML_TOK_TEXT_P_PROPERTY
,
243 XML_TOK_TEXT_P_CONTENT
,
244 XML_TOK_TEXT_P_DATATYPE
,
245 XML_TOK_TEXT_P_TEXTID
,
246 XML_TOK_TEXT_P_STYLE_NAME
,
247 XML_TOK_TEXT_P_COND_STYLE_NAME
,
248 XML_TOK_TEXT_P_LEVEL
,
249 XML_TOK_TEXT_P_IS_LIST_HEADER
,
250 XML_TOK_TEXT_P_RESTART_NUMBERING
,
251 XML_TOK_TEXT_P_START_VALUE
254 enum XMLTextNumberedParagraphAttrTokens
256 XML_TOK_TEXT_NUMBERED_PARAGRAPH_XMLID
,
257 XML_TOK_TEXT_NUMBERED_PARAGRAPH_LIST_ID
,
258 XML_TOK_TEXT_NUMBERED_PARAGRAPH_LEVEL
,
259 XML_TOK_TEXT_NUMBERED_PARAGRAPH_STYLE_NAME
,
260 XML_TOK_TEXT_NUMBERED_PARAGRAPH_CONTINUE_NUMBERING
,
261 XML_TOK_TEXT_NUMBERED_PARAGRAPH_START_VALUE
264 enum XMLTextListBlockAttrTokens
266 XML_TOK_TEXT_LIST_BLOCK_XMLID
,
267 XML_TOK_TEXT_LIST_BLOCK_STYLE_NAME
,
268 XML_TOK_TEXT_LIST_BLOCK_CONTINUE_NUMBERING
,
269 XML_TOK_TEXT_LIST_BLOCK_CONTINUE_LIST
272 enum XMLTextListBlockElemTokens
274 XML_TOK_TEXT_LIST_HEADER
,
275 XML_TOK_TEXT_LIST_ITEM
278 enum XMLTextFrameAttrTokens
280 XML_TOK_TEXT_FRAME_STYLE_NAME
,
281 XML_TOK_TEXT_FRAME_NAME
,
282 XML_TOK_TEXT_FRAME_ANCHOR_TYPE
,
283 XML_TOK_TEXT_FRAME_ANCHOR_PAGE_NUMBER
,
284 XML_TOK_TEXT_FRAME_X
,
285 XML_TOK_TEXT_FRAME_Y
,
286 XML_TOK_TEXT_FRAME_WIDTH
,
287 XML_TOK_TEXT_FRAME_REL_WIDTH
,
288 XML_TOK_TEXT_FRAME_HEIGHT
,
289 XML_TOK_TEXT_FRAME_MIN_HEIGHT
,
290 XML_TOK_TEXT_FRAME_REL_HEIGHT
,
291 XML_TOK_TEXT_FRAME_NEXT_CHAIN_NAME
,
292 XML_TOK_TEXT_FRAME_HREF
,
293 XML_TOK_TEXT_FRAME_FILTER_NAME
,
294 XML_TOK_TEXT_FRAME_Z_INDEX
,
295 XML_TOK_TEXT_FRAME_TRANSFORM
,
296 XML_TOK_TEXT_FRAME_CLASS_ID
,
297 XML_TOK_TEXT_FRAME_CODE
,
298 XML_TOK_TEXT_FRAME_OBJECT
,
299 XML_TOK_TEXT_FRAME_ARCHIVE
,
300 XML_TOK_TEXT_FRAME_MAY_SCRIPT
,
301 XML_TOK_TEXT_FRAME_MIME_TYPE
,
302 XML_TOK_TEXT_FRAME_APPLET_NAME
,
303 XML_TOK_TEXT_FRAME_FRAME_NAME
,
304 XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE
,
305 XML_TOK_TEXT_FRAME_MIN_WIDTH
308 enum XMLTextHyperlinkAttrTokens
310 XML_TOK_TEXT_HYPERLINK_HREF
,
311 XML_TOK_TEXT_HYPERLINK_NAME
,
312 XML_TOK_TEXT_HYPERLINK_TARGET_FRAME
,
313 XML_TOK_TEXT_HYPERLINK_SHOW
,
314 XML_TOK_TEXT_HYPERLINK_STYLE_NAME
,
315 XML_TOK_TEXT_HYPERLINK_VIS_STYLE_NAME
,
316 XML_TOK_TEXT_HYPERLINK_SERVER_MAP
319 enum XMLTextPageMasterElemTokens
321 XML_TOK_TEXT_MP_HEADER
,
322 XML_TOK_TEXT_MP_FOOTER
,
323 XML_TOK_TEXT_MP_HEADER_LEFT
,
324 XML_TOK_TEXT_MP_FOOTER_LEFT
,
325 XML_TOK_TEXT_MP_HEADER_FIRST
,
326 XML_TOK_TEXT_MP_FOOTER_FIRST
329 enum XMLTextContourAttrTokens
331 XML_TOK_TEXT_CONTOUR_WIDTH
,
332 XML_TOK_TEXT_CONTOUR_HEIGHT
,
333 XML_TOK_TEXT_CONTOUR_VIEWBOX
,
334 XML_TOK_TEXT_CONTOUR_POINTS
,
335 XML_TOK_TEXT_CONTOUR_D
,
336 XML_TOK_TEXT_CONTOUR_AUTO
350 /// variable type (for XMLSetVarFieldImportContext)
356 // see following NOTE!
359 // NOTE: these values must be distinct from any in "enum VarType" because they
360 // are used as keys to SvI18NMap::Add()
361 #define XML_TEXT_RENAME_TYPE_FRAME 10
362 #define XML_TEXT_RENAME_TYPE_TABLE 20
364 class XMLOFF_DLLPUBLIC XMLTextImportHelper
: public salhelper::SimpleReferenceObject
367 XMLTextImportHelper(const XMLTextImportHelper
&) = delete;
368 XMLTextImportHelper
& operator=(const XMLTextImportHelper
&) = delete;
371 std::unique_ptr
<Impl
> m_xImpl
;
372 /// ugly, but implementation of this is in XMLPropertyBackpatcher.cxx
373 struct BackpatcherImpl
;
374 std::shared_ptr
<BackpatcherImpl
> m_xBackpatcherImpl
;
375 static std::shared_ptr
<BackpatcherImpl
> MakeBackpatcherImpl();
378 virtual SvXMLImportContext
*CreateTableChildContext(
379 SvXMLImport
& rImport
,
380 sal_uInt16 nPrefix
, const OUString
& rLocalName
,
381 const css::uno::Reference
< css::xml::sax::XAttributeList
> & xAttrList
);
383 // access, lazy initialization and destruction of backpatchers
384 // Code is implemented in XMLPropertyBackpatcher.cxx
385 inline XMLPropertyBackpatcher
<sal_Int16
>& GetFootnoteBP();
386 inline XMLPropertyBackpatcher
<sal_Int16
>& GetSequenceIdBP();
387 inline XMLPropertyBackpatcher
< OUString
> & GetSequenceNameBP();
392 css::uno::Reference
< css::frame::XModel
> const& rModel
,
393 SvXMLImport
& rImport
,
394 bool const bInsertMode
= false, bool const bStylesOnlyMode
= false,
395 bool const bProgress
= false, bool const bBlockMode
= false,
396 bool const bOrganizerMode
= false);
398 virtual ~XMLTextImportHelper() override
;
401 const css::uno::Reference
< css::text::XTextCursor
>& rCursor
);
404 void SetAutoStyles( SvXMLStylesContext
*pStyles
);
406 SvXMLImportContext
*CreateTextChildContext(
407 SvXMLImport
& rImport
,
408 sal_uInt16 nPrefix
, const OUString
& rLocalName
,
409 const css::uno::Reference
< css::xml::sax::XAttributeList
> & xAttrList
,
410 XMLTextType eType
= XMLTextType::Shape
);
412 SvXMLTokenMap
const& GetTextElemTokenMap();
413 SvXMLTokenMap
const& GetTextPElemTokenMap();
414 SvXMLTokenMap
const& GetTextPAttrTokenMap();
415 SvXMLTokenMap
const& GetTextFrameAttrTokenMap();
416 SvXMLTokenMap
const& GetTextContourAttrTokenMap();
417 SvXMLTokenMap
const& GetTextHyperlinkAttrTokenMap();
418 SvXMLTokenMap
const& GetTextMasterPageElemTokenMap();
420 const SvXMLTokenMap
& GetTextNumberedParagraphAttrTokenMap();
421 const SvXMLTokenMap
& GetTextListBlockAttrTokenMap();
422 const SvXMLTokenMap
& GetTextListBlockElemTokenMap();
423 const SvXMLTokenMap
& GetTextFieldAttrTokenMap(); // impl: txtfldi.cxx
425 css::uno::Reference
< css::text::XText
> & GetText();
426 css::uno::Reference
< css::text::XTextCursor
> & GetCursor();
427 css::uno::Reference
< css::text::XTextRange
> & GetCursorAsRange();
429 bool IsInsertMode() const;
430 bool IsStylesOnlyMode() const;
431 bool IsBlockMode() const;
432 bool IsOrganizerMode() const;
433 bool IsProgress() const;
435 OUString
ConvertStarFonts( const OUString
& rChars
,
436 const OUString
& rStyleName
,
439 SvXMLImport
& rImport
) const;
440 // insert a string without special whitespace processing enabled
441 void InsertString( const OUString
& rChars
);
442 // insert a string with special whitespace processing enabled
443 void InsertString( const OUString
& rChars
,
444 bool& rIgnoreLeadingSpace
);
445 // Delete current paragraph
446 void DeleteParagraph();
448 void InsertControlCharacter( sal_Int16 nControl
);
449 void InsertTextContent( css::uno::Reference
< css::text::XTextContent
> const & xContent
);
451 // Add parameter <bOutlineLevelAttrFound> (#i73509#)
452 // Add parameter <bSetListAttrs> in order to suppress the handling of the list attributes (#i80724#)
453 OUString
SetStyleAndAttrs(
454 SvXMLImport
const & rImport
,
455 const css::uno::Reference
< css::text::XTextCursor
>& rCursor
,
456 const OUString
& rStyleName
,
458 bool bOutlineLevelAttrFound
= false,
459 sal_Int8 nOutlineLevel
= -1,
460 bool bSetListAttrs
= true );
462 /** Find a suitable name for the given outline level.
463 * If rStyleName is empty, change it to a previously used or default style
464 * name for that level. Otherwise, leave rStyleName unmodified.
466 // Adjust 2nd parameter (#i69629#)
467 void FindOutlineStyleName( OUString
& rStyleName
,
468 sal_Int8 nOutlineLevel
);
470 // Change method name to reflect change of data structure (#i69629#)
471 void AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel
,
472 const OUString
& rStyleName
);
474 void SetOutlineStyles( bool bSetEmpty
);
477 SvXMLImport
const & rImport
,
478 const css::uno::Reference
< css::text::XTextCursor
>& rCursor
,
479 const OUString
& rHRef
,
480 const OUString
& rName
,
481 const OUString
& rTargetFrameName
,
482 const OUString
& rStyleName
,
483 const OUString
& rVisitedStyleName
,
484 XMLEventsImportContext
* pEvents
);
486 SvXMLImport
const & rImport
,
487 const css::uno::Reference
< css::text::XTextCursor
>& rCursor
,
488 const OUString
& rStyleName
,
489 const OUString
& rTextStyleName
,
490 const OUString
& rText
);
492 /// return key appropriate for use with NumberFormat property
493 /// return -1 if style is not found
494 /// (may return whether data style uses the system language)
495 sal_Int32
GetDataStyleKey( const OUString
& sStyleName
,
496 bool* pIsSystemLanguage
= nullptr );
498 const SvxXMLListStyleContext
*FindAutoListStyle(
499 const OUString
& rName
) const;
500 XMLPropStyleContext
*FindAutoFrameStyle(
501 const OUString
& rName
) const;
502 XMLPropStyleContext
* FindSectionStyle(
503 const OUString
& rName
) const;
504 XMLPropStyleContext
* FindPageMaster(
505 const OUString
& rName
) const;
506 XMLPropStyleContext
* FindDrawingPage(OUString
const& rName
) const;
508 const css::uno::Reference
< css::container::XNameContainer
> & GetParaStyles() const;
510 const css::uno::Reference
< css::container::XNameContainer
> & GetTextStyles() const;
512 const css::uno::Reference
< css::container::XNameContainer
> &
513 GetNumberingStyles() const;
515 const css::uno::Reference
< css::container::XNameContainer
> & GetFrameStyles() const;
517 const css::uno::Reference
< css::container::XNameContainer
> & GetPageStyles() const;
519 const css::uno::Reference
< css::container::XNameContainer
> & GetCellStyles() const;
521 const css::uno::Reference
< css::container::XIndexReplace
> &
522 GetChapterNumbering() const;
524 bool HasFrameByName( const OUString
& rName
) const;
526 bool IsDuplicateFrame(const OUString
& sName
, sal_Int32 nX
, sal_Int32 nY
, sal_Int32 nWidth
, sal_Int32 nHeight
) const;
527 void StoreLastImportedFrameName(const OUString
& rName
);
528 void ClearLastImportedTextFrameName();
530 void ConnectFrameChains( const OUString
& rFrmName
,
531 const OUString
& rNextFrmName
,
532 const css::uno::Reference
< css::beans::XPropertySet
>& rFrmPropSet
);
534 rtl::Reference
< SvXMLImportPropertyMapper
> const&
535 GetParaImportPropertySetMapper() const;
536 rtl::Reference
< SvXMLImportPropertyMapper
> const&
537 GetTextImportPropertySetMapper() const;
538 rtl::Reference
< SvXMLImportPropertyMapper
> const&
539 GetSectionImportPropertySetMapper() const;
540 rtl::Reference
< SvXMLImportPropertyMapper
> const&
541 GetRubyImportPropertySetMapper() const;
543 static SvXMLImportPropertyMapper
*CreateShapeExtPropMapper(SvXMLImport
&);
544 static SvXMLImportPropertyMapper
*CreateParaExtPropMapper(SvXMLImport
&);
545 static SvXMLImportPropertyMapper
* CreateParaDefaultExtPropMapper(SvXMLImport
&);
546 static SvXMLImportPropertyMapper
* CreateTableDefaultExtPropMapper(SvXMLImport
&);
547 static SvXMLImportPropertyMapper
* CreateTableRowDefaultExtPropMapper(SvXMLImport
&);
548 static SvXMLImportPropertyMapper
* CreateTableCellExtPropMapper(SvXMLImport
&);
549 static SvXMLImportPropertyMapper
* CreateDrawingPageExtPropMapper(SvXMLImport
&);
551 SvI18NMap
& GetRenameMap();
553 /// save the start of a range reference
554 void InsertBookmarkStartRange(
555 const OUString
& sName
,
556 const css::uno::Reference
< css::text::XTextRange
> & rRange
,
557 OUString
const& i_rXmlId
,
558 std::shared_ptr
< ::xmloff::ParsedRDFaAttributes
> &
561 /// process the start of a range reference
562 bool FindAndRemoveBookmarkStartRange(
563 const OUString
& sName
,
564 css::uno::Reference
< css::text::XTextRange
> & o_rRange
,
566 std::shared_ptr
< ::xmloff::ParsedRDFaAttributes
> & o_rpRDFaAttributes
);
568 OUString
FindActiveBookmarkName();
570 void pushFieldCtx( const OUString
& name
, const OUString
& type
);
571 css::uno::Reference
<css::text::XFormField
> popFieldCtx();
572 void addFieldParam( const OUString
& name
, const OUString
& value
);
573 void setCurrentFieldParamsTo(css::uno::Reference
< css::text::XFormField
> const &xFormField
);
574 OUString
getCurrentFieldType();
575 bool hasCurrentFieldCtx() const;
578 /// insert new footnote ID.
579 /// Also fixup open references from the backpatch list to this ID.
580 // Code is implemented in XMLPropertyBackpatcher.cxx
581 void InsertFootnoteID(const OUString
& sXMLId
, sal_Int16 nAPIId
);
583 /// set the proper footnote reference ID,
584 /// or put into backpatch list if ID is unknown
585 // Code is implemented in XMLPropertyBackpatcher.cxx
586 void ProcessFootnoteReference(
587 const OUString
& sXMLId
,
588 const css::uno::Reference
< css::beans::XPropertySet
> & xPropSet
);
590 /// insert new sequence ID
591 /// Also fixup open references from backpatch list to this ID.
592 // Code is implemented in XMLPropertyBackpatcher.cxx
593 void InsertSequenceID(const OUString
& sXMLId
,
594 const OUString
& sName
,
597 /// set sequence ID or insert into backpatch list
598 // Code is implemented in XMLPropertyBackpatcher.cxx
599 void ProcessSequenceReference(
600 const OUString
& sXMLId
,
601 const css::uno::Reference
< css::beans::XPropertySet
> & xPropSet
);
603 bool IsInFrame() const;
604 virtual bool IsInHeaderFooter() const;
606 virtual css::uno::Reference
< css::beans::XPropertySet
>
607 createAndInsertOLEObject( SvXMLImport
& rImport
,
608 const OUString
& rHRef
,
609 const OUString
&rStyleName
,
610 const OUString
&rTblName
,
611 sal_Int32 nWidth
, sal_Int32 nHeight
);
613 virtual css::uno::Reference
< css::beans::XPropertySet
>
614 createAndInsertOOoLink( SvXMLImport
& rImport
,
615 const OUString
& rHRef
,
616 const OUString
&rStyleName
,
617 const OUString
&rTblName
,
618 sal_Int32 nWidth
, sal_Int32 nHeight
);
620 virtual css::uno::Reference
< css::beans::XPropertySet
>
621 createAndInsertApplet(
622 const OUString
&rName
,
623 const OUString
&rCode
,
625 const OUString
& rHRef
,
626 sal_Int32 nWidth
, sal_Int32 nHeight
);
628 virtual css::uno::Reference
< css::beans::XPropertySet
>
629 createAndInsertPlugin(
630 const OUString
&rMimeType
,
631 const OUString
& rHRef
,
632 sal_Int32 nWidth
, sal_Int32 nHeight
);
634 virtual css::uno::Reference
< css::beans::XPropertySet
>
635 createAndInsertFloatingFrame(
636 const OUString
&rName
,
637 const OUString
&rHRef
,
638 const OUString
&rStyleName
,
639 sal_Int32 nWidth
, sal_Int32 nHeight
);
641 virtual void endAppletOrPlugin(
642 const css::uno::Reference
< css::beans::XPropertySet
> &rPropSet
,
643 ::std::map
< const OUString
, OUString
> &rParamMap
);
645 // applet helper methods
646 // implemented in sw/filter/xml/txtparai.hxx
648 // redlining helper methods
649 // (to be implemented in sw/filter/xml/txtparai.hxx)
651 virtual void RedlineAdd(
652 /// redline type (insert, del,... )
653 const OUString
& rType
,
654 /// use to identify this redline
656 /// name of the author
657 const OUString
& rAuthor
,
659 const OUString
& rComment
,
661 const css::util::DateTime
& rDateTime
,
663 bool bMergeLastParagraph
);
665 virtual css::uno::Reference
< css::text::XTextCursor
> RedlineCreateText(
666 /// needed to get the document
667 css::uno::Reference
< css::text::XTextCursor
> & rOldCursor
,
668 /// ID used to RedlineAdd() call
669 const OUString
& rId
);
671 virtual void RedlineSetCursor(
672 /// ID used to RedlineAdd() call
674 /// start or end Cursor
676 /// range is not within <text:p>
677 bool bIsOutsideOfParagraph
);
679 virtual void RedlineAdjustStartNodeCursor();
680 virtual void SetShowChanges( bool bShowChanges
);
681 virtual void SetRecordChanges( bool bRecordChanges
);
682 virtual void SetChangesProtectionKey(
683 const css::uno::Sequence
<sal_Int8
> & rProtectionKey
);
685 /// get the last open redline ID
686 OUString
const & GetOpenRedlineId() const;
687 /// modify the last open redline ID
688 void SetOpenRedlineId( OUString
const & rId
);
689 /// reset the last open redline ID
690 void ResetOpenRedlineId();
692 /** redlining : Setter to remember the fact we are inside/outside
693 * a <text:deletion> element (deleted redline section) */
694 void SetInsideDeleteContext(bool const bNew
);
695 /** redlining : Getter to know if we are inside
696 * a <text:deletion> element (deleted redline section) */
697 bool IsInsideDeleteContext() const;
699 SvXMLImport
& GetXMLImport();
701 XMLTextListsHelper
& GetTextListHelper();
703 // forwards to TextListHelper; these are used in many places
704 /// push a list context on the list context stack
705 void PushListContext();
706 /// pop the list context stack
707 void PopListContext();
709 void SetCellParaStyleDefault(OUString
const& rNewValue
);
710 OUString
const& GetCellParaStyleDefault() const;
712 void AddCrossRefHeadingMapping(OUString
const& rFrom
, OUString
const& rTo
);
713 void MapCrossRefHeadingFieldsHorribly();
715 void setBookmarkAttributes(OUString
const& bookmark
, bool hidden
, OUString
const& condition
);
716 bool getBookmarkHidden(OUString
const& bookmark
) const;
717 const OUString
& getBookmarkCondition(OUString
const& bookmark
) const;
723 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */