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