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 SW_TOX_HXX 28 #define SW_TOX_HXX 29 30 #include <cppuhelper/weakref.hxx> 31 32 #include <i18npool/lang.h> 33 #include <tools/string.hxx> 34 35 #include <editeng/svxenum.hxx> 36 #include <svl/svarray.hxx> 37 #include <svl/poolitem.hxx> 38 #include "swdllapi.h" 39 #include <swtypes.hxx> 40 #include <toxe.hxx> 41 #include <calbck.hxx> 42 #include <errhdl.hxx> 43 44 #ifndef INCLUDED_VECTOR 45 #include <vector> // #i21237# 46 #define INCLUDED_VECTOR 47 #endif 48 49 50 namespace com { namespace sun { namespace star { 51 namespace text { class XDocumentIndexMark; } 52 } } } 53 54 class SwTOXType; 55 class SwTOXMark; 56 class SwTxtTOXMark; 57 class SwDoc; 58 59 SV_DECL_PTRARR(SwTOXMarks, SwTOXMark*, 0, 10) 60 61 /*-------------------------------------------------------------------- 62 Description: Entry of content index, alphabetical index or user defined index 63 --------------------------------------------------------------------*/ 64 65 #define IVER_TOXMARK_STRPOOL ((sal_uInt16)1) 66 #define IVER_TOXMARK_NEWTOX ((sal_uInt16)2) 67 68 class SW_DLLPUBLIC SwTOXMark 69 : public SfxPoolItem 70 , public SwModify 71 { 72 friend void _InitCore(); 73 friend class SwTxtTOXMark; 74 75 String aAltText; // Der Text des Eintrages ist unterschiedlich 76 String aPrimaryKey, aSecondaryKey; 77 78 // three more strings for phonetic sorting 79 String aTextReading; 80 String aPrimaryKeyReading; 81 String aSecondaryKeyReading; 82 83 SwTxtTOXMark* pTxtAttr; 84 85 sal_uInt16 nLevel; 86 sal_Bool bAutoGenerated : 1; // generated using a concordance file 87 sal_Bool bMainEntry : 1; // main entry emphasized by character style 88 89 ::com::sun::star::uno::WeakReference< 90 ::com::sun::star::text::XDocumentIndexMark> m_wXDocumentIndexMark; 91 92 SwTOXMark(); // to create the dflt. atr. in _InitCore 93 94 protected: 95 // SwClient 96 virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ); 97 98 public: 99 TYPEINFO(); // rtti 100 101 // single argument ctors shall be explicit. 102 explicit SwTOXMark( const SwTOXType* pTyp ); 103 virtual ~SwTOXMark(); 104 105 SwTOXMark( const SwTOXMark& rCopy ); 106 SwTOXMark& operator=( const SwTOXMark& rCopy ); 107 108 // "pure virtual methods" of SfxPoolItem 109 virtual int operator==( const SfxPoolItem& ) const; 110 virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const; 111 112 void InvalidateTOXMark(); 113 114 String GetText() const; 115 116 inline sal_Bool IsAlternativeText() const; 117 inline const String& GetAlternativeText() const; 118 119 inline void SetAlternativeText( const String& rAlt ); 120 121 // content or user defined index 122 inline void SetLevel(sal_uInt16 nLevel); 123 inline sal_uInt16 GetLevel() const; 124 125 // for alphabetical index only 126 inline void SetPrimaryKey(const String& rStr ); 127 inline void SetSecondaryKey(const String& rStr); 128 inline void SetTextReading(const String& rStr); 129 inline void SetPrimaryKeyReading(const String& rStr ); 130 inline void SetSecondaryKeyReading(const String& rStr); 131 132 inline const String& GetPrimaryKey() const; 133 inline const String& GetSecondaryKey() const; 134 inline const String& GetTextReading() const; 135 inline const String& GetPrimaryKeyReading() const; 136 inline const String& GetSecondaryKeyReading() const; 137 138 sal_Bool IsAutoGenerated() const {return bAutoGenerated;} 139 void SetAutoGenerated(sal_Bool bSet) {bAutoGenerated = bSet;} 140 141 sal_Bool IsMainEntry() const {return bMainEntry;} 142 void SetMainEntry(sal_Bool bSet) { bMainEntry = bSet;} 143 144 inline const SwTOXType* GetTOXType() const; 145 146 const SwTxtTOXMark* GetTxtTOXMark() const { return pTxtAttr; } 147 SwTxtTOXMark* GetTxtTOXMark() { return pTxtAttr; } 148 149 SW_DLLPRIVATE ::com::sun::star::uno::WeakReference< 150 ::com::sun::star::text::XDocumentIndexMark> const& GetXTOXMark() const 151 { return m_wXDocumentIndexMark; } 152 SW_DLLPRIVATE void SetXTOXMark(::com::sun::star::uno::Reference< 153 ::com::sun::star::text::XDocumentIndexMark> const& xMark) 154 { m_wXDocumentIndexMark = xMark; } 155 void DeRegister() { GetRegisteredInNonConst()->Remove( this ); } 156 void RegisterToTOXType( SwTOXType& rMark ); 157 static void InsertTOXMarks( SwTOXMarks& aMarks, const SwTOXType& rType ); 158 }; 159 160 /*-------------------------------------------------------------------- 161 Description: index types 162 --------------------------------------------------------------------*/ 163 164 class SwTOXType : public SwModify 165 { 166 public: 167 SwTOXType(TOXTypes eTyp, const String& aName); 168 169 // @@@ public copy ctor, but no copy assignment? 170 SwTOXType(const SwTOXType& rCopy); 171 172 inline const String& GetTypeName() const; 173 inline TOXTypes GetType() const; 174 175 private: 176 String aName; 177 TOXTypes eType; 178 179 // @@@ public copy ctor, but no copy assignment? 180 SwTOXType & operator= (const SwTOXType &); 181 }; 182 183 /*-------------------------------------------------------------------- 184 Description: Structure of the index lines 185 --------------------------------------------------------------------*/ 186 187 #define FORM_TITLE 0 188 #define FORM_ALPHA_DELIMITTER 1 189 #define FORM_PRIMARY_KEY 2 190 #define FORM_SECONDARY_KEY 3 191 #define FORM_ENTRY 4 192 193 /* 194 Pattern structure 195 196 <E#> - entry number <E# CharStyleName,PoolId> 197 <ET> - entry text <ET CharStyleName,PoolId> 198 <E> - entry text and number <E CharStyleName,PoolId> 199 <T> - tab stop <T,,Position,Adjust> 200 <C> - chapter info n = {0, 1, 2, 3, 4 } values of SwChapterFormat <C CharStyleName,PoolId> 201 <TX> - text token <X CharStyleName,PoolId, TOX_STYLE_DELIMITERTextContentTOX_STYLE_DELIMITER> 202 <#> - Page number <# CharStyleName,PoolId> 203 <LS> - Link start <LS> 204 <LE> - Link end <LE> 205 <A00> - Authority entry field <A02 CharStyleName, PoolId> 206 */ 207 208 // These enum values are stored and must not be changed! 209 enum FormTokenType 210 { 211 TOKEN_ENTRY_NO, 212 TOKEN_ENTRY_TEXT, 213 TOKEN_ENTRY, 214 TOKEN_TAB_STOP, 215 TOKEN_TEXT, 216 TOKEN_PAGE_NUMS, 217 TOKEN_CHAPTER_INFO, 218 TOKEN_LINK_START, 219 TOKEN_LINK_END, 220 TOKEN_AUTHORITY, 221 TOKEN_END 222 }; 223 224 struct SW_DLLPUBLIC SwFormToken 225 { 226 String sText; 227 String sCharStyleName; 228 SwTwips nTabStopPosition; 229 FormTokenType eTokenType; 230 sal_uInt16 nPoolId; 231 SvxTabAdjust eTabAlign; 232 sal_uInt16 nChapterFormat; //SwChapterFormat; 233 sal_uInt16 nOutlineLevel;//the maximum permitted outline level in numbering 234 sal_uInt16 nAuthorityField; //enum ToxAuthorityField 235 sal_Unicode cTabFillChar; 236 sal_Bool bWithTab; // sal_True: do generate tab 237 // character only the tab stop 238 // #i21237# 239 240 SwFormToken(FormTokenType eType ) : 241 nTabStopPosition(0), 242 eTokenType(eType), 243 nPoolId(USHRT_MAX), 244 eTabAlign( SVX_TAB_ADJUST_LEFT ), 245 nChapterFormat(0 /*CF_NUMBER*/), 246 nOutlineLevel(MAXLEVEL), //default to maximum outline level 247 nAuthorityField(0 /*AUTH_FIELD_IDENTIFIER*/), 248 cTabFillChar(' '), 249 bWithTab(sal_True) // #i21237# 250 {} 251 252 String GetString() const; 253 }; 254 255 // -> #i21237# 256 /** 257 Functor that is true when a given token has a certain token type. 258 259 @param _eType the type to check for 260 @param rToken the token to check 261 262 @retval sal_True the token has the given type 263 @retval sal_False else 264 */ 265 struct SwFormTokenEqualToFormTokenType 266 { 267 FormTokenType eType; 268 269 SwFormTokenEqualToFormTokenType(FormTokenType _eType) : eType(_eType) {} 270 bool operator()(const SwFormToken & rToken) 271 { 272 return rToken.eTokenType == eType; 273 } 274 }; 275 276 /** 277 Functor that appends the string representation of a given token to a string. 278 279 @param _rText string to append the string representation to 280 @param rToken token whose string representation is appended 281 */ 282 struct SwFormTokenToString 283 { 284 String & rText; 285 SwFormTokenToString(String & _rText) : rText(_rText) {} 286 void operator()(const SwFormToken & rToken) { rText += rToken.GetString(); } 287 }; 288 289 /// Vector of tokens. 290 typedef std::vector<SwFormToken> SwFormTokens; 291 292 /** 293 Helper class that converts vectors of tokens to strings and vice 294 versa. 295 */ 296 class SW_DLLPUBLIC SwFormTokensHelper 297 { 298 /// the tokens 299 SwFormTokens aTokens; 300 301 /** 302 Builds a token from its string representation. 303 304 @sPattern the whole pattern 305 @nCurPatternPos starting position of the token 306 307 @return the token 308 */ 309 SW_DLLPRIVATE SwFormToken BuildToken( const String & sPattern, 310 xub_StrLen & nCurPatternPos ) const; 311 312 /** 313 Returns the string of a token. 314 315 @param sPattern the whole pattern 316 @param nStt starting position of the token 317 318 @return the string representation of the token 319 */ 320 SW_DLLPRIVATE String SearchNextToken( const String & sPattern, 321 xub_StrLen nStt ) const; 322 323 /** 324 Returns the type of a token. 325 326 @param sToken the string representation of the token 327 @param pTokenLen return parameter the length of the head of the token 328 329 If pTokenLen is non-NULL the length of the token's head is 330 written to *pTokenLen 331 332 @return the type of the token 333 */ 334 SW_DLLPRIVATE FormTokenType GetTokenType(const String & sToken, 335 xub_StrLen * pTokenLen) const; 336 337 public: 338 /** 339 contructor 340 341 @param rTokens vector of tokens 342 */ 343 SwFormTokensHelper(const SwFormTokens & rTokens) : aTokens(rTokens) {} 344 345 /** 346 constructor 347 348 @param rStr string representation of the tokens 349 */ 350 SwFormTokensHelper(const String & rStr); 351 352 /** 353 Returns vector of tokens. 354 355 @return vector of tokens 356 */ 357 const SwFormTokens & GetTokens() const { return aTokens; } 358 }; 359 // <- #i21237# 360 361 class SW_DLLPUBLIC SwForm 362 { 363 SwFormTokens aPattern[ AUTH_TYPE_END + 1 ]; // #i21237# 364 String aTemplate[ AUTH_TYPE_END + 1 ]; 365 366 TOXTypes eType; 367 sal_uInt16 nFormMaxLevel; 368 369 //sal_uInt16 nFirstTabPos; -> Value in tab token 370 // sal_Bool bHasFirstTabPos : 1; 371 sal_Bool bGenerateTabPos : 1; 372 sal_Bool bIsRelTabPos : 1; 373 sal_Bool bCommaSeparated : 1; 374 375 public: 376 SwForm( TOXTypes eTOXType = TOX_CONTENT ); 377 SwForm( const SwForm& rForm ); 378 379 SwForm& operator=( const SwForm& rForm ); 380 381 inline void SetTemplate(sal_uInt16 nLevel, const String& rName); 382 inline const String& GetTemplate(sal_uInt16 nLevel) const; 383 384 // #i21237# 385 void SetPattern(sal_uInt16 nLevel, const SwFormTokens& rName); 386 void SetPattern(sal_uInt16 nLevel, const String& rStr); 387 const SwFormTokens& GetPattern(sal_uInt16 nLevel) const; 388 389 // fill tab stop positions from template to pattern 390 // #i21237# 391 void AdjustTabStops(SwDoc& rDoc, 392 sal_Bool bInsertNewTabStops = sal_False); 393 394 inline TOXTypes GetTOXType() const; 395 inline sal_uInt16 GetFormMax() const; 396 397 sal_Bool IsRelTabPos() const { return bIsRelTabPos; } 398 void SetRelTabPos( sal_Bool b ) { bIsRelTabPos = b; } 399 400 sal_Bool IsCommaSeparated() const { return bCommaSeparated;} 401 void SetCommaSeparated( sal_Bool b) { bCommaSeparated = b;} 402 403 static sal_uInt16 GetFormMaxLevel( TOXTypes eType ); 404 405 static const sal_Char* aFormEntry; // <E> 406 static sal_uInt8 nFormEntryLen; // 3 characters 407 static const sal_Char* aFormTab; // <T> 408 static sal_uInt8 nFormTabLen; // 3 characters 409 static const sal_Char* aFormPageNums; // <P> 410 static sal_uInt8 nFormPageNumsLen; // 3 characters 411 static const sal_Char* aFormLinkStt; // <LS> 412 static sal_uInt8 nFormLinkSttLen; // 4 characters 413 static const sal_Char* aFormLinkEnd; // <LE> 414 static sal_uInt8 nFormLinkEndLen; // 4 characters 415 static const sal_Char* aFormEntryNum; // <E#> 416 static sal_uInt8 nFormEntryNumLen; // 4 characters 417 static const sal_Char* aFormEntryTxt; // <ET> 418 static sal_uInt8 nFormEntryTxtLen; // 4 characters 419 static const sal_Char* aFormChapterMark; // <C> 420 static sal_uInt8 nFormChapterMarkLen; // 3 characters 421 static const sal_Char* aFormText; // <TX> 422 static sal_uInt8 nFormTextLen; // 4 characters 423 static const sal_Char* aFormAuth; // <Axx> xx - decimal enum value 424 static sal_uInt8 nFormAuthLen; // 3 characters 425 }; 426 427 /*-------------------------------------------------------------------- 428 Description: Content to create indexes of 429 --------------------------------------------------------------------*/ 430 431 typedef sal_uInt16 SwTOXElement; 432 namespace nsSwTOXElement 433 { 434 const SwTOXElement TOX_MARK = 1; 435 const SwTOXElement TOX_OUTLINELEVEL = 2; 436 const SwTOXElement TOX_TEMPLATE = 4; 437 const SwTOXElement TOX_OLE = 8; 438 const SwTOXElement TOX_TABLE = 16; 439 const SwTOXElement TOX_GRAPHIC = 32; 440 const SwTOXElement TOX_FRAME = 64; 441 const SwTOXElement TOX_SEQUENCE = 128; 442 } 443 444 typedef sal_uInt16 SwTOIOptions; 445 namespace nsSwTOIOptions 446 { 447 const SwTOIOptions TOI_SAME_ENTRY = 1; 448 const SwTOIOptions TOI_FF = 2; 449 const SwTOIOptions TOI_CASE_SENSITIVE = 4; 450 const SwTOIOptions TOI_KEY_AS_ENTRY = 8; 451 const SwTOIOptions TOI_ALPHA_DELIMITTER = 16; 452 const SwTOIOptions TOI_DASH = 32; 453 const SwTOIOptions TOI_INITIAL_CAPS = 64; 454 } 455 456 //which part of the caption is to be displayed 457 enum SwCaptionDisplay 458 { 459 CAPTION_COMPLETE, 460 CAPTION_NUMBER, 461 CAPTION_TEXT 462 }; 463 464 typedef sal_uInt16 SwTOOElements; 465 namespace nsSwTOOElements 466 { 467 const SwTOOElements TOO_MATH = 0x01; 468 const SwTOOElements TOO_CHART = 0x02; 469 const SwTOOElements TOO_CALC = 0x08; 470 const SwTOOElements TOO_DRAW_IMPRESS = 0x10; 471 // const SwTOOElements TOO_IMPRESS = 0x20; 472 const SwTOOElements TOO_OTHER = 0x80; 473 } 474 475 #define TOX_STYLE_DELIMITER ((sal_Unicode)0x01) //JP 19.07.00: use a control char 476 477 /*-------------------------------------------------------------------- 478 Description: Class for all indexes 479 --------------------------------------------------------------------*/ 480 481 class SW_DLLPUBLIC SwTOXBase : public SwClient 482 { 483 SwForm aForm; // description of the lines 484 String aName; // unique name 485 String aTitle; // title 486 487 String sMainEntryCharStyle; // name of the character style applied to main index entries 488 489 String aStyleNames[MAXLEVEL]; // (additional) style names TOX_CONTENT, TOX_USER 490 String sSequenceName; // FieldTypeName of a caption sequence 491 492 LanguageType eLanguage; 493 String sSortAlgorithm; 494 495 union { 496 sal_uInt16 nLevel; // consider outline levels 497 sal_uInt16 nOptions; // options of alphabetical index 498 } aData; 499 500 sal_uInt16 nCreateType; // sources to create the index from 501 sal_uInt16 nOLEOptions; // OLE sources 502 SwCaptionDisplay eCaptionDisplay; // 503 sal_Bool bProtected : 1; // index protected ? 504 sal_Bool bFromChapter : 1; // create from chapter or document 505 sal_Bool bFromObjectNames : 1; // create a table or object index 506 // from the names rather than the caption 507 sal_Bool bLevelFromChapter : 1; // User index: get the level from the source chapter 508 public: 509 SwTOXBase( const SwTOXType* pTyp, const SwForm& rForm, 510 sal_uInt16 nCreaType, const String& rTitle ); 511 SwTOXBase( const SwTOXBase& rCopy, SwDoc* pDoc = 0 ); 512 virtual ~SwTOXBase(); 513 514 virtual sal_Bool GetInfo( SfxPoolItem& rInfo ) const; 515 516 // a kind of CopyCtor - check if the TOXBase is at TOXType of the doc. 517 // If not, so create it an copy all other used things. The return is this 518 SwTOXBase& CopyTOXBase( SwDoc*, const SwTOXBase& ); 519 520 const SwTOXType* GetTOXType() const; // 521 522 sal_uInt16 GetCreateType() const; // creation types 523 524 const String& GetTOXName() const {return aName;} 525 void SetTOXName(const String& rSet) {aName = rSet;} 526 527 const String& GetTitle() const; // Title 528 const String& GetTypeName() const; // Name 529 const SwForm& GetTOXForm() const; // description of the lines 530 531 void SetCreate(sal_uInt16); 532 void SetTitle(const String& rTitle); 533 void SetTOXForm(const SwForm& rForm); 534 535 TOXTypes GetType() const; 536 537 const String& GetMainEntryCharStyle() const {return sMainEntryCharStyle;} 538 void SetMainEntryCharStyle(const String& rSet) {sMainEntryCharStyle = rSet;} 539 540 // content index only 541 inline void SetLevel(sal_uInt16); // consider outline level 542 inline sal_uInt16 GetLevel() const; 543 544 // alphabetical index only 545 inline sal_uInt16 GetOptions() const; // alphabetical index options 546 inline void SetOptions(sal_uInt16 nOpt); 547 548 // index of objects 549 sal_uInt16 GetOLEOptions() const {return nOLEOptions;} 550 void SetOLEOptions(sal_uInt16 nOpt) {nOLEOptions = nOpt;} 551 552 // index of objects 553 554 // user defined index only 555 inline void SetTemplateName(const String& rName); // Absatzlayout beachten 556 557 const String& GetStyleNames(sal_uInt16 nLevel) const 558 { 559 DBG_ASSERT( nLevel < MAXLEVEL, "Which level?"); 560 return aStyleNames[nLevel]; 561 } 562 void SetStyleNames(const String& rSet, sal_uInt16 nLevel) 563 { 564 DBG_ASSERT( nLevel < MAXLEVEL, "Which level?"); 565 aStyleNames[nLevel] = rSet; 566 } 567 sal_Bool IsFromChapter() const { return bFromChapter;} 568 void SetFromChapter(sal_Bool bSet) { bFromChapter = bSet;} 569 570 sal_Bool IsFromObjectNames() const {return bFromObjectNames;} 571 void SetFromObjectNames(sal_Bool bSet) {bFromObjectNames = bSet;} 572 573 sal_Bool IsLevelFromChapter() const {return bLevelFromChapter;} 574 void SetLevelFromChapter(sal_Bool bSet) {bLevelFromChapter = bSet;} 575 576 sal_Bool IsProtected() const { return bProtected; } 577 void SetProtected(sal_Bool bSet) { bProtected = bSet; } 578 579 const String& GetSequenceName() const {return sSequenceName;} 580 void SetSequenceName(const String& rSet) {sSequenceName = rSet;} 581 582 SwCaptionDisplay GetCaptionDisplay() const { return eCaptionDisplay;} 583 void SetCaptionDisplay(SwCaptionDisplay eSet) {eCaptionDisplay = eSet;} 584 585 sal_Bool IsTOXBaseInReadonly() const; 586 587 const SfxItemSet* GetAttrSet() const; 588 void SetAttrSet( const SfxItemSet& ); 589 590 LanguageType GetLanguage() const {return eLanguage;} 591 void SetLanguage(LanguageType nLang) {eLanguage = nLang;} 592 593 const String& GetSortAlgorithm()const {return sSortAlgorithm;} 594 void SetSortAlgorithm(const String& rSet) {sSortAlgorithm = rSet;} 595 // #i21237# 596 void AdjustTabStops(SwDoc & rDoc, sal_Bool bDefaultRightTabStop); 597 SwTOXBase& operator=(const SwTOXBase& rSource); 598 void RegisterToTOXType( SwTOXType& rMark ); 599 }; 600 601 602 /*-------------------------------------------------------------------- 603 Description: Inlines 604 --------------------------------------------------------------------*/ 605 606 // 607 //SwTOXMark 608 // 609 inline const String& SwTOXMark::GetAlternativeText() const 610 { return aAltText; } 611 612 inline const SwTOXType* SwTOXMark::GetTOXType() const 613 { return (SwTOXType*)GetRegisteredIn(); } 614 615 inline sal_Bool SwTOXMark::IsAlternativeText() const 616 { return aAltText.Len() > 0; } 617 618 inline void SwTOXMark::SetAlternativeText(const String& rAlt) 619 { 620 aAltText = rAlt; 621 } 622 623 inline void SwTOXMark::SetLevel( sal_uInt16 nLvl ) 624 { 625 ASSERT( !GetTOXType() || GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp"); 626 nLevel = nLvl; 627 } 628 629 inline void SwTOXMark::SetPrimaryKey( const String& rKey ) 630 { 631 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 632 aPrimaryKey = rKey; 633 } 634 635 inline void SwTOXMark::SetSecondaryKey( const String& rKey ) 636 { 637 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 638 aSecondaryKey = rKey; 639 } 640 641 inline void SwTOXMark::SetTextReading( const String& rTxt ) 642 { 643 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 644 aTextReading = rTxt; 645 } 646 647 inline void SwTOXMark::SetPrimaryKeyReading( const String& rKey ) 648 { 649 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 650 aPrimaryKeyReading = rKey; 651 } 652 653 inline void SwTOXMark::SetSecondaryKeyReading( const String& rKey ) 654 { 655 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 656 aSecondaryKeyReading = rKey; 657 } 658 659 inline sal_uInt16 SwTOXMark::GetLevel() const 660 { 661 ASSERT( !GetTOXType() || GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp"); 662 return nLevel; 663 } 664 665 inline const String& SwTOXMark::GetPrimaryKey() const 666 { 667 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 668 return aPrimaryKey; 669 } 670 671 inline const String& SwTOXMark::GetSecondaryKey() const 672 { 673 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 674 return aSecondaryKey; 675 } 676 677 inline const String& SwTOXMark::GetTextReading() const 678 { 679 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 680 return aTextReading; 681 } 682 683 inline const String& SwTOXMark::GetPrimaryKeyReading() const 684 { 685 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 686 return aPrimaryKeyReading; 687 } 688 689 inline const String& SwTOXMark::GetSecondaryKeyReading() const 690 { 691 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 692 return aSecondaryKeyReading; 693 } 694 695 // 696 //SwForm 697 // 698 inline void SwForm::SetTemplate(sal_uInt16 nLevel, const String& rTemplate) 699 { 700 ASSERT(nLevel < GetFormMax(), "Index >= FORM_MAX"); 701 aTemplate[nLevel] = rTemplate; 702 } 703 704 inline const String& SwForm::GetTemplate(sal_uInt16 nLevel) const 705 { 706 ASSERT(nLevel < GetFormMax(), "Index >= FORM_MAX"); 707 return aTemplate[nLevel]; 708 } 709 710 inline TOXTypes SwForm::GetTOXType() const 711 { 712 return eType; 713 } 714 715 inline sal_uInt16 SwForm::GetFormMax() const 716 { 717 return nFormMaxLevel; 718 } 719 720 721 // 722 //SwTOXType 723 // 724 inline const String& SwTOXType::GetTypeName() const 725 { return aName; } 726 727 inline TOXTypes SwTOXType::GetType() const 728 { return eType; } 729 730 // 731 // SwTOXBase 732 // 733 inline const SwTOXType* SwTOXBase::GetTOXType() const 734 { return (SwTOXType*)GetRegisteredIn(); } 735 736 inline sal_uInt16 SwTOXBase::GetCreateType() const 737 { return nCreateType; } 738 739 inline const String& SwTOXBase::GetTitle() const 740 { return aTitle; } 741 742 inline const String& SwTOXBase::GetTypeName() const 743 { return GetTOXType()->GetTypeName(); } 744 745 inline const SwForm& SwTOXBase::GetTOXForm() const 746 { return aForm; } 747 748 inline void SwTOXBase::AdjustTabStops(SwDoc & rDoc, sal_Bool bDefaultRightTabStop) 749 { 750 aForm.AdjustTabStops(rDoc, bDefaultRightTabStop); 751 } 752 753 inline void SwTOXBase::SetCreate(sal_uInt16 nCreate) 754 { nCreateType = nCreate; } 755 756 inline void SwTOXBase::SetTOXForm(const SwForm& rForm) 757 { aForm = rForm; } 758 759 inline TOXTypes SwTOXBase::GetType() const 760 { return GetTOXType()->GetType(); } 761 762 inline void SwTOXBase::SetLevel(sal_uInt16 nLev) 763 { 764 ASSERT(GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp"); 765 aData.nLevel = nLev; 766 } 767 768 inline sal_uInt16 SwTOXBase::GetLevel() const 769 { 770 ASSERT(GetTOXType()->GetType() != TOX_INDEX, "Falscher Feldtyp"); 771 return aData.nLevel; 772 } 773 774 inline void SwTOXBase::SetTemplateName(const String& rName) 775 { 776 // ASSERT(GetTOXType()->GetType() == TOX_USER, "Falscher Feldtyp"); 777 // ASSERT(aData.pTemplateName, "pTemplateName == 0"); 778 // (*aData.pTemplateName) = rName; 779 DBG_WARNING("SwTOXBase::SetTemplateName obsolete"); 780 aStyleNames[0] = rName; 781 782 } 783 784 inline sal_uInt16 SwTOXBase::GetOptions() const 785 { 786 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 787 return aData.nOptions; 788 } 789 790 inline void SwTOXBase::SetOptions(sal_uInt16 nOpt) 791 { 792 ASSERT(GetTOXType()->GetType() == TOX_INDEX, "Falscher Feldtyp"); 793 aData.nOptions = nOpt; 794 } 795 796 797 #endif // SW_TOX_HXX 798