Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 : #ifndef INCLUDED_SW_INC_TOX_HXX
20 : #define INCLUDED_SW_INC_TOX_HXX
21 :
22 : #include <cppuhelper/weakref.hxx>
23 : #include <sal/log.hxx>
24 :
25 : #include <i18nlangtag/lang.h>
26 : #include <svl/poolitem.hxx>
27 :
28 : #include <editeng/svxenum.hxx>
29 : #include <swtypes.hxx>
30 : #include <toxe.hxx>
31 : #include <calbck.hxx>
32 :
33 : #include <vector>
34 :
35 : namespace com { namespace sun { namespace star {
36 : namespace text { class XDocumentIndexMark; }
37 : } } }
38 :
39 : class SwTOXType;
40 : class SwTOXMark;
41 : class SwTextTOXMark;
42 : class SwDoc;
43 :
44 : typedef std::vector<SwTOXMark*> SwTOXMarks;
45 :
46 : // Entry of content index, alphabetical index or user defined index
47 :
48 : extern const sal_Unicode C_NUM_REPL;
49 : extern const sal_Unicode C_END_PAGE_NUM;
50 : extern const OUString S_PAGE_DELI;
51 :
52 : class SW_DLLPUBLIC SwTOXMark
53 : : public SfxPoolItem
54 : , public SwModify
55 : {
56 : friend void _InitCore();
57 : friend class SwTextTOXMark;
58 :
59 : OUString aAltText; // Text of caption is different.
60 : OUString aPrimaryKey;
61 : OUString aSecondaryKey;
62 : OUString aCitationKeyReading;
63 :
64 : // three more strings for phonetic sorting
65 : OUString aTextReading;
66 : OUString aPrimaryKeyReading;
67 : OUString aSecondaryKeyReading;
68 :
69 : SwTextTOXMark* pTextAttr;
70 :
71 : sal_uInt16 nLevel;
72 : OUString m_aBookmarkName;
73 : OUString m_aEntryTypeName; // stored specific entry type name for INDEX field \f
74 : bool bAutoGenerated : 1; // generated using a concordance file
75 : bool bMainEntry : 1; // main entry emphasized by character style
76 :
77 : ::com::sun::star::uno::WeakReference<
78 : ::com::sun::star::text::XDocumentIndexMark> m_wXDocumentIndexMark;
79 :
80 : SwTOXMark(); // to create the default attribute in _InitCore
81 :
82 : protected:
83 : // SwClient
84 : virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew ) SAL_OVERRIDE;
85 :
86 : public:
87 : TYPEINFO_OVERRIDE(); // rtti
88 :
89 : // single argument ctors shall be explicit.
90 : explicit SwTOXMark( const SwTOXType* pTyp );
91 : virtual ~SwTOXMark();
92 :
93 : SwTOXMark( const SwTOXMark& rCopy );
94 : SwTOXMark& operator=( const SwTOXMark& rCopy );
95 :
96 : // "pure virtual methods" of SfxPoolItem
97 : virtual bool operator==( const SfxPoolItem& ) const SAL_OVERRIDE;
98 : virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const SAL_OVERRIDE;
99 :
100 : void InvalidateTOXMark();
101 :
102 : OUString GetText() const;
103 :
104 : inline bool IsAlternativeText() const;
105 : inline OUString GetAlternativeText() const;
106 :
107 : inline void SetAlternativeText( const OUString& rAlt );
108 :
109 : // content or user defined index
110 : inline void SetLevel(sal_uInt16 nLevel);
111 : inline sal_uInt16 GetLevel() const;
112 : inline void SetBookmarkName( const OUString& bName);
113 : inline OUString GetBookmarkName() const;
114 : inline void SetEntryTypeName( const OUString& sName);
115 : inline OUString GetEntryTypeName() const;
116 :
117 : // for alphabetical index only
118 : inline void SetPrimaryKey(const OUString& rStr );
119 : inline void SetSecondaryKey(const OUString& rStr);
120 : inline void SetTextReading(const OUString& rStr);
121 : inline void SetPrimaryKeyReading(const OUString& rStr );
122 : inline void SetSecondaryKeyReading(const OUString& rStr);
123 : inline void SetCitationKeyReading(const OUString& rStr);
124 :
125 : inline OUString GetPrimaryKey() const;
126 : inline OUString GetSecondaryKey() const;
127 : inline OUString GetTextReading() const;
128 : inline OUString GetPrimaryKeyReading() const;
129 : inline OUString GetSecondaryKeyReading() const;
130 : inline OUString GetCitationKeyReading() const;
131 :
132 0 : bool IsAutoGenerated() const {return bAutoGenerated;}
133 0 : void SetAutoGenerated(bool bSet) {bAutoGenerated = bSet;}
134 :
135 3 : bool IsMainEntry() const {return bMainEntry;}
136 169 : void SetMainEntry(bool bSet) { bMainEntry = bSet;}
137 :
138 : inline const SwTOXType* GetTOXType() const;
139 :
140 55 : const SwTextTOXMark* GetTextTOXMark() const { return pTextAttr; }
141 2 : SwTextTOXMark* GetTextTOXMark() { return pTextAttr; }
142 :
143 : SAL_DLLPRIVATE ::com::sun::star::uno::WeakReference<
144 47 : ::com::sun::star::text::XDocumentIndexMark> const& GetXTOXMark() const
145 47 : { return m_wXDocumentIndexMark; }
146 34 : SAL_DLLPRIVATE void SetXTOXMark(::com::sun::star::uno::Reference<
147 : ::com::sun::star::text::XDocumentIndexMark> const& xMark)
148 34 : { m_wXDocumentIndexMark = xMark; }
149 13 : void DeRegister() { GetRegisteredInNonConst()->Remove( this ); }
150 : void RegisterToTOXType( SwTOXType& rMark );
151 : static void InsertTOXMarks( SwTOXMarks& aMarks, const SwTOXType& rType );
152 : };
153 :
154 : // index types
155 47520 : class SwTOXType : public SwModify
156 : {
157 : public:
158 : SwTOXType(TOXTypes eTyp, const OUString& aName);
159 :
160 : // @@@ public copy ctor, but no copy assignment?
161 : SwTOXType(const SwTOXType& rCopy);
162 :
163 : inline OUString GetTypeName() const;
164 : inline TOXTypes GetType() const;
165 :
166 : private:
167 : OUString aName;
168 : TOXTypes eType;
169 :
170 : // @@@ public copy ctor, but no copy assignment?
171 : SwTOXType & operator= (const SwTOXType &) SAL_DELETED_FUNCTION;
172 : };
173 :
174 : // Structure of the index lines
175 : #define FORM_TITLE 0
176 : #define FORM_ALPHA_DELIMITTER 1
177 : #define FORM_PRIMARY_KEY 2
178 : #define FORM_SECONDARY_KEY 3
179 : #define FORM_ENTRY 4
180 :
181 : /*
182 : Pattern structure
183 :
184 : <E#> - entry number <E# CharStyleName,PoolId>
185 : <ET> - entry text <ET CharStyleName,PoolId>
186 : <E> - entry text and number <E CharStyleName,PoolId>
187 : <T> - tab stop <T,,Position,Adjust>
188 : <C> - chapter info n = {0, 1, 2, 3, 4 } values of SwChapterFormat <C CharStyleName,PoolId>
189 : <TX> - text token <X CharStyleName,PoolId, TOX_STYLE_DELIMITERTextContentTOX_STYLE_DELIMITER>
190 : <#> - Page number <# CharStyleName,PoolId>
191 : <LS> - Link start <LS>
192 : <LE> - Link end <LE>
193 : <A00> - Authority entry field <A02 CharStyleName, PoolId>
194 : */
195 :
196 : // These enum values are stored and must not be changed!
197 : enum FormTokenType
198 : {
199 : TOKEN_ENTRY_NO,
200 : TOKEN_ENTRY_TEXT,
201 : TOKEN_ENTRY,
202 : TOKEN_TAB_STOP,
203 : TOKEN_TEXT,
204 : TOKEN_PAGE_NUMS,
205 : TOKEN_CHAPTER_INFO,
206 : TOKEN_LINK_START,
207 : TOKEN_LINK_END,
208 : TOKEN_AUTHORITY,
209 : TOKEN_END
210 : };
211 :
212 381265 : struct SW_DLLPUBLIC SwFormToken
213 : {
214 : OUString sText;
215 : OUString sCharStyleName;
216 : SwTwips nTabStopPosition;
217 : FormTokenType eTokenType;
218 : sal_uInt16 nPoolId;
219 : SvxTabAdjust eTabAlign;
220 : sal_uInt16 nChapterFormat; //SwChapterFormat;
221 : sal_uInt16 nOutlineLevel;//the maximum permitted outline level in numbering
222 : sal_uInt16 nAuthorityField; //enum ToxAuthorityField
223 : sal_Unicode cTabFillChar;
224 : bool bWithTab; // true: do generate tab
225 : // character only the tab stop
226 : // #i21237#
227 :
228 13529 : SwFormToken(FormTokenType eType ) :
229 : nTabStopPosition(0),
230 : eTokenType(eType),
231 : nPoolId(USHRT_MAX),
232 : eTabAlign( SVX_TAB_ADJUST_LEFT ),
233 : nChapterFormat(0 /*CF_NUMBER*/),
234 : nOutlineLevel(MAXLEVEL), //default to maximum outline level
235 : nAuthorityField(0 /*AUTH_FIELD_IDENTIFIER*/),
236 : cTabFillChar(' '),
237 13529 : bWithTab(true) // #i21237#
238 13529 : {}
239 :
240 : OUString GetString() const;
241 : };
242 :
243 : struct SwFormTokenEqualToFormTokenType
244 : {
245 : FormTokenType eType;
246 :
247 0 : SwFormTokenEqualToFormTokenType(FormTokenType _eType) : eType(_eType) {}
248 0 : bool operator()(const SwFormToken & rToken)
249 : {
250 0 : return rToken.eTokenType == eType;
251 : }
252 : };
253 :
254 : /// Vector of tokens.
255 : typedef std::vector<SwFormToken> SwFormTokens;
256 :
257 : /**
258 : Helper class that converts vectors of tokens to strings and vice
259 : versa.
260 : */
261 678 : class SW_DLLPUBLIC SwFormTokensHelper
262 : {
263 : /// the tokens
264 : SwFormTokens m_Tokens;
265 :
266 : public:
267 : /**
268 : constructor
269 :
270 : @param rTokens vector of tokens
271 : */
272 : SwFormTokensHelper(const SwFormTokens & rTokens) : m_Tokens(rTokens) {}
273 :
274 : /**
275 : constructor
276 :
277 : @param rStr string representation of the tokens
278 : */
279 : SwFormTokensHelper(const OUString & rStr);
280 :
281 : /**
282 : Returns vector of tokens.
283 :
284 : @return vector of tokens
285 : */
286 678 : const SwFormTokens & GetTokens() const { return m_Tokens; }
287 : };
288 :
289 1901 : class SW_DLLPUBLIC SwForm
290 : {
291 : SwFormTokens aPattern[ AUTH_TYPE_END + 1 ]; // #i21237#
292 : OUString aTemplate[ AUTH_TYPE_END + 1 ];
293 :
294 : TOXTypes eType;
295 : sal_uInt16 nFormMaxLevel;
296 :
297 : bool bGenerateTabPos : 1;
298 : bool bIsRelTabPos : 1;
299 : bool bCommaSeparated : 1;
300 :
301 : public:
302 : SwForm( TOXTypes eTOXType = TOX_CONTENT );
303 : SwForm( const SwForm& rForm );
304 :
305 : SwForm& operator=( const SwForm& rForm );
306 :
307 : inline void SetTemplate(sal_uInt16 nLevel, const OUString& rName);
308 : inline OUString GetTemplate(sal_uInt16 nLevel) const;
309 :
310 : // #i21237#
311 : void SetPattern(sal_uInt16 nLevel, const SwFormTokens& rName);
312 : void SetPattern(sal_uInt16 nLevel, const OUString& rStr);
313 : const SwFormTokens& GetPattern(sal_uInt16 nLevel) const;
314 :
315 : // fill tab stop positions from template to pattern- #i21237#
316 : void AdjustTabStops( SwDoc& rDoc );
317 :
318 : inline TOXTypes GetTOXType() const;
319 : inline sal_uInt16 GetFormMax() const;
320 :
321 12 : bool IsRelTabPos() const { return bIsRelTabPos; }
322 20 : void SetRelTabPos( bool b ) { bIsRelTabPos = b; }
323 :
324 18 : bool IsCommaSeparated() const { return bCommaSeparated;}
325 3 : void SetCommaSeparated( bool b) { bCommaSeparated = b;}
326 :
327 : static sal_uInt16 GetFormMaxLevel( TOXTypes eType );
328 :
329 : static OUString GetFormEntry();
330 : static OUString GetFormTab();
331 : static OUString GetFormPageNums();
332 : static OUString GetFormLinkStt();
333 : static OUString GetFormLinkEnd();
334 : static OUString GetFormEntryNum();
335 : static OUString GetFormEntryText();
336 : static OUString GetFormChapterMark();
337 : static OUString GetFormText();
338 : static OUString GetFormAuth();
339 : };
340 :
341 : // Content to create indexes of
342 : typedef sal_uInt16 SwTOXElement;
343 : namespace nsSwTOXElement
344 : {
345 : const SwTOXElement TOX_MARK = 1;
346 : const SwTOXElement TOX_OUTLINELEVEL = 2;
347 : const SwTOXElement TOX_TEMPLATE = 4;
348 : const SwTOXElement TOX_OLE = 8;
349 : const SwTOXElement TOX_TABLE = 16;
350 : const SwTOXElement TOX_GRAPHIC = 32;
351 : const SwTOXElement TOX_FRAME = 64;
352 : const SwTOXElement TOX_SEQUENCE = 128;
353 : const SwTOXElement TOX_TABLEADER = 256;
354 : const SwTOXElement TOX_TAB_IN_TOC = 512;
355 : const SwTOXElement TOX_BOOKMARK = 1024;
356 : const SwTOXElement TOX_NEWLINE = 2048;
357 : const SwTOXElement TOX_PARAGRAPH_OUTLINE_LEVEL = 4096;
358 : const SwTOXElement TOX_INDEX_ENTRY_TYPE = 8192;
359 : }
360 :
361 : typedef sal_uInt16 SwTOIOptions;
362 : namespace nsSwTOIOptions
363 : {
364 : const SwTOIOptions TOI_SAME_ENTRY = 1;
365 : const SwTOIOptions TOI_FF = 2;
366 : const SwTOIOptions TOI_CASE_SENSITIVE = 4;
367 : const SwTOIOptions TOI_KEY_AS_ENTRY = 8;
368 : const SwTOIOptions TOI_ALPHA_DELIMITTER = 16;
369 : const SwTOIOptions TOI_DASH = 32;
370 : const SwTOIOptions TOI_INITIAL_CAPS = 64;
371 : }
372 :
373 : //which part of the caption is to be displayed
374 : enum SwCaptionDisplay
375 : {
376 : CAPTION_COMPLETE,
377 : CAPTION_NUMBER,
378 : CAPTION_TEXT
379 : };
380 :
381 : typedef sal_uInt16 SwTOOElements;
382 : namespace nsSwTOOElements
383 : {
384 : const SwTOOElements TOO_MATH = 0x01;
385 : const SwTOOElements TOO_CHART = 0x02;
386 : const SwTOOElements TOO_CALC = 0x08;
387 : const SwTOOElements TOO_DRAW_IMPRESS = 0x10;
388 : const SwTOOElements TOO_OTHER = 0x80;
389 : }
390 :
391 : #define TOX_STYLE_DELIMITER ((sal_Unicode)0x01)
392 :
393 : // Class for all indexes
394 : class SW_DLLPUBLIC SwTOXBase : public SwClient
395 : {
396 : SwForm aForm; // description of the lines
397 : OUString aName; // unique name
398 : OUString aTitle; // title
399 : OUString m_aBookmarkName; //Bookmark Name
400 : OUString m_aEntryTypeName; // Type name
401 :
402 : OUString sMainEntryCharStyle; // name of the character style applied to main index entries
403 :
404 : OUString aStyleNames[MAXLEVEL]; // (additional) style names TOX_CONTENT, TOX_USER
405 : OUString sSequenceName; // FieldTypeName of a caption sequence
406 :
407 : LanguageType eLanguage;
408 : OUString sSortAlgorithm;
409 :
410 : union {
411 : sal_uInt16 nLevel; // consider outline levels
412 : sal_uInt16 nOptions; // options of alphabetical index
413 : } aData;
414 :
415 : sal_uInt16 nCreateType; // sources to create the index from
416 : sal_uInt16 nOLEOptions; // OLE sources
417 : SwCaptionDisplay eCaptionDisplay;
418 : bool bProtected : 1; // index protected ?
419 : bool bFromChapter : 1; // create from chapter or document
420 : bool bFromObjectNames : 1; // create a table or object index
421 : // from the names rather than the caption
422 : bool bLevelFromChapter : 1; // User index: get the level from the source chapter
423 :
424 : protected:
425 : // Add a data member, for record the TOC field expression of MS Word binary format
426 : // For keeping fedality and may giving a better exporting performance
427 : OUString maMSTOCExpression;
428 : bool mbKeepExpression;
429 :
430 : public:
431 : SwTOXBase( const SwTOXType* pTyp, const SwForm& rForm,
432 : sal_uInt16 nCreaType, const OUString& rTitle );
433 : SwTOXBase( const SwTOXBase& rCopy, SwDoc* pDoc = 0 );
434 : virtual ~SwTOXBase();
435 :
436 : virtual bool GetInfo( SfxPoolItem& rInfo ) const SAL_OVERRIDE;
437 :
438 : // a kind of CopyCtor - check if the TOXBase is at TOXType of the doc.
439 : // If not, so create it an copy all other used things. The return is this
440 : SwTOXBase& CopyTOXBase( SwDoc*, const SwTOXBase& );
441 :
442 : const SwTOXType* GetTOXType() const;
443 :
444 : sal_uInt16 GetCreateType() const; // creation types
445 :
446 554 : OUString GetTOXName() const {return aName;}
447 142 : void SetTOXName(const OUString& rSet) {aName = rSet;}
448 :
449 : // for record the TOC field expression of MS Word binary format
450 31 : const OUString& GetMSTOCExpression() const{return maMSTOCExpression;}
451 0 : void SetMSTOCExpression(const OUString& rExp) {maMSTOCExpression = rExp;}
452 0 : void EnableKeepExpression() {mbKeepExpression = true;}
453 0 : void DisableKeepExpression() {mbKeepExpression = false;}
454 :
455 : OUString GetTitle() const; // Title
456 : OUString GetBookmarkName() const;
457 : OUString GetTypeName() const; // Name
458 : const SwForm& GetTOXForm() const; // description of the lines
459 :
460 : void SetCreate(sal_uInt16);
461 : void SetTitle(const OUString& rTitle);
462 : void SetTOXForm(const SwForm& rForm);
463 : void SetBookmarkName(const OUString& bName);
464 :
465 : TOXTypes GetType() const;
466 :
467 3 : OUString GetMainEntryCharStyle() const {return sMainEntryCharStyle;}
468 2 : void SetMainEntryCharStyle(const OUString& rSet) {sMainEntryCharStyle = rSet;}
469 :
470 : // for record the Index field expression of MS Word
471 : OUString GetEntryTypeName() const;
472 : void SetEntryTypeName(const OUString& sName);
473 :
474 : // content index only
475 : inline void SetLevel(sal_uInt16); // consider outline level
476 : inline sal_uInt16 GetLevel() const;
477 :
478 : // alphabetical index only
479 : inline sal_uInt16 GetOptions() const; // alphabetical index options
480 : inline void SetOptions(sal_uInt16 nOpt);
481 :
482 : // index of objects
483 1441 : sal_uInt16 GetOLEOptions() const {return nOLEOptions;}
484 860 : void SetOLEOptions(sal_uInt16 nOpt) {nOLEOptions = nOpt;}
485 :
486 : // index of objects
487 :
488 : // user defined index only
489 : inline void SetTemplateName(const OUString& rName); // Absatzlayout beachten
490 :
491 54 : OUString GetStyleNames(sal_uInt16 nLevel) const
492 : {
493 : SAL_WARN_IF( nLevel >= MAXLEVEL, "sw", "Which level?");
494 54 : return aStyleNames[nLevel];
495 : }
496 6 : void SetStyleNames(const OUString& rSet, sal_uInt16 nLevel)
497 : {
498 : SAL_WARN_IF( nLevel >= MAXLEVEL, "sw", "Which level?");
499 6 : aStyleNames[nLevel] = rSet;
500 6 : }
501 18 : bool IsFromChapter() const { return bFromChapter;}
502 21 : void SetFromChapter(bool bSet) { bFromChapter = bSet;}
503 :
504 4 : bool IsFromObjectNames() const {return bFromObjectNames;}
505 5 : void SetFromObjectNames(bool bSet) {bFromObjectNames = bSet;}
506 :
507 1 : bool IsLevelFromChapter() const {return bLevelFromChapter;}
508 2 : void SetLevelFromChapter(bool bSet) {bLevelFromChapter = bSet;}
509 :
510 134 : bool IsProtected() const { return bProtected; }
511 24 : void SetProtected(bool bSet) { bProtected = bSet; }
512 :
513 8 : OUString GetSequenceName() const {return sSequenceName;}
514 8 : void SetSequenceName(const OUString& rSet) {sSequenceName = rSet;}
515 :
516 2 : SwCaptionDisplay GetCaptionDisplay() const { return eCaptionDisplay;}
517 5 : void SetCaptionDisplay(SwCaptionDisplay eSet) {eCaptionDisplay = eSet;}
518 :
519 : bool IsTOXBaseInReadonly() const;
520 :
521 : const SfxItemSet* GetAttrSet() const;
522 : void SetAttrSet( const SfxItemSet& );
523 :
524 10 : LanguageType GetLanguage() const {return eLanguage;}
525 4 : void SetLanguage(LanguageType nLang) {eLanguage = nLang;}
526 :
527 10 : OUString GetSortAlgorithm()const {return sSortAlgorithm;}
528 4 : void SetSortAlgorithm(const OUString& rSet) {sSortAlgorithm = rSet;}
529 : // #i21237#
530 0 : void AdjustTabStops( SwDoc & rDoc )
531 : {
532 0 : aForm.AdjustTabStops( rDoc );
533 0 : }
534 :
535 : SwTOXBase& operator=(const SwTOXBase& rSource);
536 : void RegisterToTOXType( SwTOXType& rMark );
537 : };
538 :
539 : //SwTOXMark
540 :
541 392 : inline OUString SwTOXMark::GetAlternativeText() const
542 392 : { return aAltText; }
543 :
544 0 : inline OUString SwTOXMark::GetBookmarkName() const
545 0 : { return m_aBookmarkName; }
546 :
547 0 : inline OUString SwTOXMark::GetEntryTypeName() const
548 0 : { return m_aEntryTypeName; }
549 :
550 106 : inline const SwTOXType* SwTOXMark::GetTOXType() const
551 106 : { return static_cast<const SwTOXType*>(GetRegisteredIn()); }
552 :
553 0 : inline bool SwTOXMark::IsAlternativeText() const
554 0 : { return !aAltText.isEmpty(); }
555 :
556 156 : inline void SwTOXMark::SetAlternativeText(const OUString& rAlt)
557 : {
558 156 : aAltText = rAlt;
559 156 : }
560 :
561 0 : inline void SwTOXMark::SetBookmarkName(const OUString& bName)
562 : {
563 0 : m_aBookmarkName = bName;
564 0 : }
565 :
566 0 : inline void SwTOXMark::SetEntryTypeName(const OUString& sName)
567 : {
568 0 : m_aEntryTypeName = sName;
569 0 : }
570 1 : inline void SwTOXMark::SetLevel( sal_uInt16 nLvl )
571 : {
572 : SAL_WARN_IF( GetTOXType() && GetTOXType()->GetType() == TOX_INDEX, "sw", "Wrong type");
573 1 : nLevel = nLvl;
574 1 : }
575 :
576 166 : inline void SwTOXMark::SetPrimaryKey( const OUString& rKey )
577 : {
578 : SAL_WARN_IF( GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
579 166 : aPrimaryKey = rKey;
580 166 : }
581 :
582 1 : inline void SwTOXMark::SetSecondaryKey( const OUString& rKey )
583 : {
584 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
585 1 : aSecondaryKey = rKey;
586 1 : }
587 :
588 0 : inline void SwTOXMark::SetTextReading( const OUString& rText )
589 : {
590 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
591 0 : aTextReading = rText;
592 0 : }
593 :
594 0 : inline void SwTOXMark::SetPrimaryKeyReading( const OUString& rKey )
595 : {
596 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
597 0 : aPrimaryKeyReading = rKey;
598 0 : }
599 :
600 0 : inline void SwTOXMark::SetCitationKeyReading( const OUString& rKey )
601 : {
602 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_CITATION, "sw", "Wrong type");
603 0 : aCitationKeyReading = rKey;
604 0 : }
605 :
606 0 : inline void SwTOXMark::SetSecondaryKeyReading( const OUString& rKey )
607 : {
608 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
609 0 : aSecondaryKeyReading = rKey;
610 0 : }
611 :
612 0 : inline sal_uInt16 SwTOXMark::GetLevel() const
613 : {
614 : SAL_WARN_IF( GetTOXType() && GetTOXType()->GetType() == TOX_INDEX, "sw", "Wrong type");
615 0 : return nLevel;
616 : }
617 :
618 137 : inline OUString SwTOXMark::GetPrimaryKey() const
619 : {
620 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
621 137 : return aPrimaryKey;
622 : }
623 :
624 46 : inline OUString SwTOXMark::GetSecondaryKey() const
625 : {
626 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
627 46 : return aSecondaryKey;
628 : }
629 :
630 1 : inline OUString SwTOXMark::GetTextReading() const
631 : {
632 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
633 1 : return aTextReading;
634 : }
635 :
636 0 : inline OUString SwTOXMark::GetPrimaryKeyReading() const
637 : {
638 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
639 0 : return aPrimaryKeyReading;
640 : }
641 :
642 0 : inline OUString SwTOXMark::GetSecondaryKeyReading() const
643 : {
644 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
645 0 : return aSecondaryKeyReading;
646 : }
647 :
648 : inline OUString SwTOXMark::GetCitationKeyReading() const
649 : {
650 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_CITATION, "sw", "Wrong type");
651 : return aCitationKeyReading;
652 : }
653 :
654 : //SwForm
655 :
656 2727 : inline void SwForm::SetTemplate(sal_uInt16 nLevel, const OUString& rTemplate)
657 : {
658 : SAL_WARN_IF(nLevel >= GetFormMax(), "sw", "Index >= GetFormMax()");
659 2727 : aTemplate[nLevel] = rTemplate;
660 2727 : }
661 :
662 95 : inline OUString SwForm::GetTemplate(sal_uInt16 nLevel) const
663 : {
664 : SAL_WARN_IF(nLevel >= GetFormMax(), "sw", "Index >= GetFormMax()");
665 95 : return aTemplate[nLevel];
666 : }
667 :
668 0 : inline TOXTypes SwForm::GetTOXType() const
669 : {
670 0 : return eType;
671 : }
672 :
673 3808 : inline sal_uInt16 SwForm::GetFormMax() const
674 : {
675 3808 : return nFormMaxLevel;
676 : }
677 :
678 : //SwTOXType
679 :
680 494 : inline OUString SwTOXType::GetTypeName() const
681 494 : { return aName; }
682 :
683 4363 : inline TOXTypes SwTOXType::GetType() const
684 4363 : { return eType; }
685 :
686 : // SwTOXBase
687 :
688 3706 : inline const SwTOXType* SwTOXBase::GetTOXType() const
689 3706 : { return static_cast<const SwTOXType*>(GetRegisteredIn()); }
690 :
691 1619 : inline sal_uInt16 SwTOXBase::GetCreateType() const
692 1619 : { return nCreateType; }
693 :
694 138 : inline OUString SwTOXBase::GetTitle() const
695 138 : { return aTitle; }
696 :
697 1 : inline OUString SwTOXBase::GetBookmarkName() const
698 1 : { return m_aBookmarkName; }
699 :
700 1 : inline OUString SwTOXBase::GetEntryTypeName() const
701 1 : { return m_aEntryTypeName; }
702 :
703 0 : inline OUString SwTOXBase::GetTypeName() const
704 0 : { return GetTOXType()->GetTypeName(); }
705 :
706 4124 : inline const SwForm& SwTOXBase::GetTOXForm() const
707 4124 : { return aForm; }
708 :
709 866 : inline void SwTOXBase::SetCreate(sal_uInt16 nCreate)
710 866 : { nCreateType = nCreate; }
711 :
712 783 : inline void SwTOXBase::SetTOXForm(const SwForm& rForm)
713 783 : { aForm = rForm; }
714 :
715 909 : inline TOXTypes SwTOXBase::GetType() const
716 909 : { return GetTOXType()->GetType(); }
717 :
718 126 : inline void SwTOXBase::SetLevel(sal_uInt16 nLev)
719 : {
720 : SAL_WARN_IF(GetTOXType()->GetType() == TOX_INDEX, "sw", "Wrong type");
721 126 : aData.nLevel = nLev;
722 126 : }
723 :
724 24 : inline sal_uInt16 SwTOXBase::GetLevel() const
725 : {
726 : SAL_WARN_IF(GetTOXType()->GetType() == TOX_INDEX, "sw", "Wrong type");
727 24 : return aData.nLevel;
728 : }
729 :
730 : inline void SwTOXBase::SetTemplateName(const OUString& rName)
731 : {
732 : SAL_WARN("sw", "SwTOXBase::SetTemplateName obsolete");
733 : aStyleNames[0] = rName;
734 : }
735 :
736 281 : inline sal_uInt16 SwTOXBase::GetOptions() const
737 : {
738 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
739 281 : return aData.nOptions;
740 : }
741 :
742 139 : inline void SwTOXBase::SetOptions(sal_uInt16 nOpt)
743 : {
744 : SAL_WARN_IF(GetTOXType()->GetType() != TOX_INDEX, "sw", "Wrong type");
745 139 : aData.nOptions = nOpt;
746 139 : }
747 :
748 : #endif // INCLUDED_SW_INC_TOX_HXX
749 :
750 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|