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