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