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