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 SW_DOCUFLD_HXX
20 : #define SW_DOCUFLD_HXX
21 :
22 :
23 : #include <tools/date.hxx>
24 : #include <tools/datetime.hxx>
25 :
26 :
27 : #include <svl/macitem.hxx>
28 :
29 : #include "fldbas.hxx"
30 : #include "numrule.hxx"
31 :
32 : class _SetGetExpFlds;
33 : class SwTxtFld;
34 : class SwFrm;
35 : class OutlinerParaObject;
36 : class SwTextAPIObject;
37 :
38 : enum SwAuthorFormat
39 : {
40 : AF_BEGIN,
41 : AF_NAME = AF_BEGIN,
42 : AF_SHORTCUT,
43 : AF_END,
44 : AF_FIXED = 0x8000
45 : };
46 :
47 : /*--------------------------------------------------------------------
48 : Subtype of document statistics.
49 : --------------------------------------------------------------------*/
50 :
51 : enum SwDocStatSubType
52 : {
53 : DS_BEGIN,
54 : DS_PAGE = DS_BEGIN,
55 : DS_PARA,
56 : DS_WORD,
57 : DS_CHAR,
58 : DS_TBL,
59 : DS_GRF,
60 : DS_OLE,
61 : DS_END
62 : };
63 :
64 : typedef sal_uInt16 SwDocInfoSubType;
65 : namespace nsSwDocInfoSubType
66 : {
67 : /** NB: these must denote consecutive integers!
68 : NB2: these are extended by 4 DI_INFO values for backward compatibility
69 : in filter/html/htmlfld.cxx, so make sure that DI_SUBTYPE_END
70 : really is the end, and is at least 4 less than DI_SUB_*! */
71 : const SwDocInfoSubType DI_SUBTYPE_BEGIN = 0;
72 : const SwDocInfoSubType DI_TITEL = DI_SUBTYPE_BEGIN;
73 : const SwDocInfoSubType DI_THEMA = 1;
74 : const SwDocInfoSubType DI_KEYS = 2;
75 : const SwDocInfoSubType DI_COMMENT = 3;
76 : const SwDocInfoSubType DI_CREATE = 4;
77 : const SwDocInfoSubType DI_CHANGE = 5;
78 : const SwDocInfoSubType DI_PRINT = 6;
79 : const SwDocInfoSubType DI_DOCNO = 7;
80 : const SwDocInfoSubType DI_EDIT = 8;
81 : const SwDocInfoSubType DI_CUSTOM = 9;
82 : const SwDocInfoSubType DI_SUBTYPE_END = 10;
83 :
84 :
85 : const SwDocInfoSubType DI_SUB_AUTHOR = 0x0100;
86 : const SwDocInfoSubType DI_SUB_TIME = 0x0200;
87 : const SwDocInfoSubType DI_SUB_DATE = 0x0300;
88 : const SwDocInfoSubType DI_SUB_FIXED = 0x1000;
89 : const SwDocInfoSubType DI_SUB_MASK = 0xff00;
90 : }
91 :
92 :
93 : enum RegInfoFormat ///< Only for loading of old documents!!!
94 : {
95 : RF_AUTHOR,
96 : RF_TIME,
97 : RF_DATE,
98 : RF_ALL
99 : };
100 :
101 : enum SwPageNumSubType
102 : {
103 : PG_RANDOM,
104 : PG_NEXT,
105 : PG_PREV
106 : };
107 :
108 : enum SwExtUserSubType
109 : {
110 : EU_COMPANY,
111 : EU_FIRSTNAME,
112 : EU_NAME,
113 : EU_SHORTCUT,
114 : EU_STREET,
115 : EU_COUNTRY,
116 : EU_ZIP,
117 : EU_CITY,
118 : EU_TITLE,
119 : EU_POSITION,
120 : EU_PHONE_PRIVATE,
121 : EU_PHONE_COMPANY,
122 : EU_FAX,
123 : EU_EMAIL,
124 : EU_STATE,
125 : EU_FATHERSNAME,
126 : EU_APARTMENT
127 : };
128 :
129 : enum SwJumpEditFormat
130 : {
131 : JE_FMT_TEXT,
132 : JE_FMT_TABLE,
133 : JE_FMT_FRAME,
134 : JE_FMT_GRAPHIC,
135 : JE_FMT_OLE
136 : };
137 :
138 : /*--------------------------------------------------------------------
139 : Page number.
140 : --------------------------------------------------------------------*/
141 :
142 204 : class SwPageNumberFieldType : public SwFieldType
143 : {
144 : sal_Int16 nNumberingType;
145 : sal_uInt16 nNum, nMax;
146 : bool bVirtuell;
147 :
148 : public:
149 : SwPageNumberFieldType();
150 :
151 : String& Expand( sal_uInt32 nFmt, short nOff, const String&, String& rRet ) const;
152 : void ChangeExpansion( SwDoc* pDoc, sal_uInt16 nNum, sal_uInt16 nMax,
153 : sal_Bool bVirtPageNum, const sal_Int16* pNumFmt = 0 );
154 : virtual SwFieldType* Copy() const;
155 : };
156 :
157 : /*--------------------------------------------------------------------
158 : Page numbering.
159 : --------------------------------------------------------------------*/
160 :
161 4319 : class SW_DLLPUBLIC SwPageNumberField : public SwField
162 : {
163 : String sUserStr;
164 : sal_uInt16 nSubType;
165 : short nOffset;
166 :
167 : public:
168 : SwPageNumberField(SwPageNumberFieldType*, sal_uInt16 nSub = PG_RANDOM,
169 : sal_uInt32 nFmt = 0, short nOff = 0);
170 :
171 : virtual String Expand() const;
172 : virtual SwField* Copy() const;
173 :
174 : virtual rtl::OUString GetPar2() const;
175 : virtual void SetPar2(const rtl::OUString& rStr);
176 :
177 : virtual sal_uInt16 GetSubType() const;
178 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
179 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
180 :
181 0 : const String& GetUserString() const { return sUserStr; }
182 1926 : void SetUserString( const String& rS ) { sUserStr = rS; }
183 : };
184 :
185 : /*--------------------------------------------------------------------
186 : Authors.
187 : --------------------------------------------------------------------*/
188 :
189 204 : class SwAuthorFieldType : public SwFieldType
190 : {
191 : public:
192 : SwAuthorFieldType();
193 :
194 : String Expand(sal_uLong) const;
195 : virtual SwFieldType* Copy() const;
196 : };
197 :
198 : /*--------------------------------------------------------------------
199 : Author field.
200 : --------------------------------------------------------------------*/
201 :
202 0 : class SwAuthorField : public SwField
203 : {
204 : String aContent;
205 :
206 : public:
207 : SwAuthorField(SwAuthorFieldType*, sal_uInt32 nFmt = 0);
208 :
209 : virtual String Expand() const;
210 : virtual SwField* Copy() const;
211 :
212 0 : inline void SetExpansion(const String& rStr) { aContent = rStr; }
213 0 : inline const String& GetContent() const { return aContent; }
214 :
215 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
216 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
217 : };
218 :
219 : /*--------------------------------------------------------------------
220 : Filename
221 : --------------------------------------------------------------------*/
222 :
223 205 : class SwFileNameFieldType : public SwFieldType
224 : {
225 : SwDoc *pDoc;
226 : public:
227 : SwFileNameFieldType(SwDoc*);
228 :
229 : String Expand(sal_uLong) const;
230 : virtual SwFieldType* Copy() const;
231 : };
232 :
233 : /*--------------------------------------------------------------------
234 : FileNameField
235 : --------------------------------------------------------------------*/
236 :
237 0 : class SW_DLLPUBLIC SwFileNameField : public SwField
238 : {
239 : String aContent;
240 :
241 : public:
242 : SwFileNameField(SwFileNameFieldType*, sal_uInt32 nFmt = 0);
243 :
244 : virtual String Expand() const;
245 : virtual SwField* Copy() const;
246 :
247 0 : inline void SetExpansion(const String& rStr) { aContent = rStr; }
248 0 : inline const String& GetContent() const { return aContent; }
249 :
250 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
251 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
252 : };
253 :
254 : /*--------------------------------------------------------------------
255 : TemplName
256 : --------------------------------------------------------------------*/
257 :
258 408 : class SwTemplNameFieldType : public SwFieldType
259 : {
260 : SwDoc *pDoc;
261 : public:
262 : SwTemplNameFieldType(SwDoc*);
263 :
264 : String Expand(sal_uLong) const;
265 : virtual SwFieldType* Copy() const;
266 : };
267 :
268 : /*--------------------------------------------------------------------
269 : TemplNameField
270 : --------------------------------------------------------------------*/
271 :
272 0 : class SW_DLLPUBLIC SwTemplNameField : public SwField
273 : {
274 : public:
275 : SwTemplNameField(SwTemplNameFieldType*, sal_uInt32 nFmt = 0);
276 :
277 : virtual String Expand() const;
278 : virtual SwField* Copy() const;
279 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
280 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
281 : };
282 :
283 :
284 : /*--------------------------------------------------------------------
285 : Document statistics
286 : --------------------------------------------------------------------*/
287 :
288 204 : class SwDocStatFieldType : public SwFieldType
289 : {
290 : SwDoc* pDoc;
291 : sal_Int16 nNumberingType; ///< com::sun::star::style::NumberingType
292 :
293 : public:
294 : SwDocStatFieldType(SwDoc*);
295 : String Expand(sal_uInt16 nSubType, sal_uInt32 nFmt) const;
296 : virtual SwFieldType* Copy() const;
297 :
298 0 : inline void SetNumFormat( sal_Int16 eFmt ) { nNumberingType = eFmt; }
299 : };
300 :
301 : /*--------------------------------------------------------------------
302 : DocStatField
303 : --------------------------------------------------------------------*/
304 :
305 0 : class SW_DLLPUBLIC SwDocStatField : public SwField
306 : {
307 : sal_uInt16 nSubType;
308 :
309 : public:
310 : SwDocStatField( SwDocStatFieldType*,
311 : sal_uInt16 nSubType = 0, sal_uInt32 nFmt = 0);
312 :
313 : void ChangeExpansion( const SwFrm* pFrm );
314 :
315 : virtual String Expand() const;
316 : virtual SwField* Copy() const;
317 :
318 : virtual sal_uInt16 GetSubType() const;
319 : virtual void SetSubType(sal_uInt16 nSub);
320 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
321 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
322 : };
323 :
324 : /*--------------------------------------------------------------------
325 : Hidden text.
326 : --------------------------------------------------------------------*/
327 :
328 204 : class SwHiddenTxtFieldType : public SwFieldType
329 : {
330 : sal_Bool bHidden;
331 : public:
332 : SwHiddenTxtFieldType(sal_Bool bSetHidden = sal_True);
333 :
334 : virtual SwFieldType* Copy() const;
335 :
336 : void SetHiddenFlag( sal_Bool bSetHidden = sal_True );
337 0 : inline sal_Bool GetHiddenFlag() const { return bHidden; }
338 : };
339 :
340 : /*--------------------------------------------------------------------
341 : HiddenTxtField
342 : --------------------------------------------------------------------*/
343 :
344 0 : class SwHiddenTxtField : public SwField
345 : {
346 : rtl::OUString aTRUETxt; ///< Text if condition sal_True.
347 : rtl::OUString aFALSETxt; ///< If condition false.
348 : rtl::OUString aContent; ///< Evaluated DB-text.
349 :
350 : rtl::OUString aCond; ///< Condition.
351 : sal_uInt16 nSubType;
352 :
353 : sal_Bool bCanToggle : 1; ///< Can field be toggled alone?
354 : sal_Bool bIsHidden : 1; ///< Is it not visible?
355 : sal_Bool bValid : 1; ///< Is DB-field evaluated?
356 :
357 : virtual String Expand() const;
358 : virtual SwField* Copy() const;
359 :
360 : public:
361 : SwHiddenTxtField( SwHiddenTxtFieldType*,
362 : sal_Bool bConditional,
363 : const String& rCond,
364 : const String& rTxt,
365 : sal_Bool bHidden = sal_False,
366 : sal_uInt16 nSubType = TYP_HIDDENTXTFLD);
367 :
368 : SwHiddenTxtField( SwHiddenTxtFieldType*,
369 : const String& rCond,
370 : const String& rTrue,
371 : const String& rFalse,
372 : sal_uInt16 nSubType = TYP_HIDDENTXTFLD);
373 :
374 : virtual String GetFieldName() const;
375 :
376 : void Evaluate(SwDoc*);
377 :
378 0 : inline void SetValue(sal_Bool bHidden) { bIsHidden = bHidden; }
379 : String GetColumnName(const String& rName);
380 : String GetDBName(const String& rName, SwDoc *pDoc);
381 :
382 : /// Condition
383 : virtual void SetPar1(const rtl::OUString& rStr);
384 : virtual const rtl::OUString& GetPar1() const;
385 :
386 : /// True/False - String
387 : virtual void SetPar2(const rtl::OUString& rStr);
388 : virtual rtl::OUString GetPar2() const;
389 :
390 :
391 : virtual sal_uInt16 GetSubType() const;
392 :
393 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
394 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
395 : };
396 :
397 : /*--------------------------------------------------------------------
398 : Field that expands to an empty line (without height).
399 : --------------------------------------------------------------------*/
400 :
401 204 : class SwHiddenParaFieldType : public SwFieldType
402 : {
403 : public:
404 : SwHiddenParaFieldType();
405 :
406 : virtual SwFieldType* Copy() const;
407 : };
408 :
409 : /*--------------------------------------------------------------------
410 : Hidded paragraph.
411 : --------------------------------------------------------------------*/
412 :
413 0 : class SwHiddenParaField : public SwField
414 : {
415 : rtl::OUString aCond;
416 : sal_Bool bIsHidden:1;
417 : public:
418 : /// Direct input, delete old value.
419 : SwHiddenParaField(SwHiddenParaFieldType*, const String& rCond);
420 :
421 : virtual String Expand() const;
422 : virtual SwField* Copy() const;
423 :
424 0 : void SetHidden(sal_Bool bHidden) { bIsHidden = bHidden; }
425 0 : sal_Bool IsHidden() const { return bIsHidden; }
426 :
427 : /// Query, set condition.
428 : virtual const rtl::OUString& GetPar1() const;
429 : virtual void SetPar1(const rtl::OUString& rStr);
430 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
431 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
432 : };
433 :
434 : /*--------------------------------------------------------------------
435 : Run Macro.
436 : --------------------------------------------------------------------*/
437 :
438 204 : class SwMacroFieldType : public SwFieldType
439 : {
440 : SwDoc* pDoc;
441 :
442 : public:
443 : SwMacroFieldType(SwDoc*);
444 :
445 : virtual SwFieldType* Copy() const;
446 : };
447 :
448 : /*--------------------------------------------------------------------
449 : MacroField.
450 : --------------------------------------------------------------------*/
451 :
452 0 : class SW_DLLPUBLIC SwMacroField : public SwField
453 : {
454 : rtl::OUString aMacro;
455 : rtl::OUString aText;
456 : sal_Bool bIsScriptURL;
457 :
458 : virtual String Expand() const;
459 : virtual SwField* Copy() const;
460 :
461 : public:
462 : /// Direct input, delete old value.
463 : SwMacroField( SwMacroFieldType*, const String& rLibAndName,
464 : const String& rTxt);
465 :
466 0 : inline const rtl::OUString& GetMacro() const { return aMacro; }
467 : String GetLibName() const;
468 : String GetMacroName() const;
469 : SvxMacro GetSvxMacro() const;
470 :
471 : virtual String GetFieldName() const;
472 :
473 : /// Library and FileName
474 : virtual const rtl::OUString& GetPar1() const;
475 : virtual void SetPar1(const rtl::OUString& rStr);
476 :
477 : /// Macrotext
478 : virtual rtl::OUString GetPar2() const;
479 : virtual void SetPar2(const rtl::OUString& rStr);
480 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
481 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
482 :
483 : static void CreateMacroString( rtl::OUString& rMacro,
484 : const String& rMacroName,
485 : const String& rLibraryName );
486 :
487 : static sal_Bool isScriptURL( const String& str );
488 : };
489 :
490 :
491 : /*--------------------------------------------------------------------
492 : PostIts
493 : --------------------------------------------------------------------*/
494 :
495 204 : class SwPostItFieldType : public SwFieldType
496 : {
497 : private:
498 : SwDoc* mpDoc;
499 : public:
500 : SwPostItFieldType(SwDoc* pDoc);
501 :
502 : virtual SwFieldType* Copy() const;
503 3 : SwDoc* GetDoc() {return mpDoc;};
504 : };
505 :
506 : /*--------------------------------------------------------------------
507 : PostItField
508 : --------------------------------------------------------------------*/
509 :
510 : class SW_DLLPUBLIC SwPostItField : public SwField
511 : {
512 : rtl::OUString sTxt;
513 : rtl::OUString sAuthor;
514 : rtl::OUString sInitials; ///< Initials of the author.
515 : rtl::OUString sName; ///< Name of the comment.
516 : DateTime aDateTime;
517 : OutlinerParaObject* mpText;
518 : SwTextAPIObject* m_pTextObject;
519 :
520 : public:
521 : SwPostItField( SwPostItFieldType*,
522 : const String& rAuthor, const String& rTxt, const String& rInitials, const String& rName, const DateTime& rDate);
523 : ~SwPostItField();
524 :
525 : virtual String Expand() const;
526 : virtual SwField* Copy() const;
527 :
528 2 : inline const DateTime GetDateTime() const { return aDateTime; }
529 6 : inline const Date GetDate() const { return aDateTime.GetDate(); }
530 10 : inline const Time GetTime() const { return aDateTime.GetTime(); }
531 :
532 : /// Author
533 : virtual const rtl::OUString& GetPar1() const;
534 : virtual void SetPar1(const rtl::OUString& rStr);
535 :
536 : /// Text
537 : virtual rtl::OUString GetPar2() const;
538 : virtual void SetPar2(const rtl::OUString& rStr);
539 1 : const rtl::OUString& GetTxt() const { return sTxt; }
540 : const rtl::OUString& GetInitials() const;
541 : void SetName(const rtl::OUString& rStr);
542 : const OUString& GetName() const;
543 :
544 : const OutlinerParaObject* GetTextObject() const;
545 : void SetTextObject( OutlinerParaObject* pText );
546 :
547 : sal_uInt32 GetNumberOfParagraphs() const;
548 :
549 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
550 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
551 : virtual String GetDescription() const;
552 : };
553 :
554 : /*--------------------------------------------------------------------
555 : DocumentInfo
556 : --------------------------------------------------------------------*/
557 :
558 204 : class SwDocInfoFieldType : public SwValueFieldType
559 : {
560 : public:
561 : SwDocInfoFieldType(SwDoc* pDc);
562 :
563 : String Expand(sal_uInt16 nSubType, sal_uInt32 nFormat, sal_uInt16 nLang, const String& rName) const;
564 : virtual SwFieldType* Copy() const;
565 : };
566 :
567 0 : class SW_DLLPUBLIC SwDocInfoField : public SwValueField
568 : {
569 : sal_uInt16 nSubType;
570 : String aContent;
571 : String aName;
572 :
573 : virtual String Expand() const;
574 : virtual SwField* Copy() const;
575 :
576 : public:
577 : SwDocInfoField(SwDocInfoFieldType*, sal_uInt16 nSub, const String& rName, sal_uInt32 nFmt=0);
578 : SwDocInfoField(SwDocInfoFieldType*, sal_uInt16 nSub, const String& rName, const String& rValue, sal_uInt32 nFmt=0);
579 :
580 : virtual void SetSubType(sal_uInt16);
581 : virtual sal_uInt16 GetSubType() const;
582 : virtual void SetLanguage(sal_uInt16 nLng);
583 : virtual String GetFieldName() const;
584 0 : String GetName() const { return aName; }
585 0 : void SetName( const String& rName ) { aName = rName; }
586 0 : inline void SetExpansion(const String& rStr) { aContent = rStr; }
587 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
588 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
589 : };
590 :
591 : /*--------------------------------------------------------------------
592 : Extended User settings.
593 : --------------------------------------------------------------------*/
594 :
595 :
596 204 : class SwExtUserFieldType : public SwFieldType
597 : {
598 : String aData;
599 : public:
600 : SwExtUserFieldType();
601 :
602 : inline void SetData(const String& rStr) { aData = rStr; }
603 :
604 : String Expand(sal_uInt16 nSubType, sal_uInt32 nFormat) const;
605 : virtual SwFieldType* Copy() const;
606 : };
607 :
608 0 : class SwExtUserField : public SwField
609 : {
610 : String aContent;
611 : sal_uInt16 nType;
612 :
613 : public:
614 : SwExtUserField(SwExtUserFieldType*, sal_uInt16 nSub, sal_uInt32 nFmt=0);
615 :
616 : virtual String Expand() const;
617 : virtual SwField* Copy() const;
618 :
619 : virtual sal_uInt16 GetSubType() const;
620 : virtual void SetSubType(sal_uInt16 nSub);
621 :
622 0 : inline void SetExpansion(const String& rStr) { aContent = rStr; }
623 :
624 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
625 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
626 : };
627 :
628 :
629 : /*--------------------------------------------------------------------
630 : Relative page numbers - field.
631 : --------------------------------------------------------------------*/
632 :
633 204 : class SwRefPageSetFieldType : public SwFieldType
634 : {
635 : public:
636 : SwRefPageSetFieldType();
637 :
638 : virtual SwFieldType* Copy() const;
639 :
640 : protected:
641 : /// Overlay, because there is nothing to update!
642 : virtual void Modify( const SfxPoolItem*, const SfxPoolItem * );
643 : };
644 :
645 : /*--------------------------------------------------------------------
646 : Relative page numbering.
647 : --------------------------------------------------------------------*/
648 :
649 0 : class SwRefPageSetField : public SwField
650 : {
651 : short nOffset;
652 : sal_Bool bOn;
653 :
654 : public:
655 : SwRefPageSetField( SwRefPageSetFieldType*, short nOff = 0,
656 : sal_Bool bOn = sal_True );
657 :
658 : virtual String Expand() const;
659 : virtual SwField* Copy() const;
660 :
661 : virtual rtl::OUString GetPar2() const;
662 : virtual void SetPar2(const rtl::OUString& rStr);
663 :
664 0 : sal_Bool IsOn() const { return bOn; }
665 :
666 0 : short GetOffset() const { return nOffset; }
667 0 : void SetOffset( short nOff ) { nOffset = nOff; }
668 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
669 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
670 : };
671 :
672 : /*--------------------------------------------------------------------
673 : Relative page numbers - query field.
674 : --------------------------------------------------------------------*/
675 :
676 204 : class SwRefPageGetFieldType : public SwFieldType
677 : {
678 : SwDoc* pDoc;
679 : sal_Int16 nNumberingType;
680 :
681 : void UpdateField( SwTxtFld* pTxtFld, _SetGetExpFlds& rSetList );
682 : protected:
683 : /// overwritten to update all RefPageGet fields
684 : virtual void Modify( const SfxPoolItem*, const SfxPoolItem * );
685 : public:
686 : SwRefPageGetFieldType( SwDoc* pDoc );
687 : virtual SwFieldType* Copy() const;
688 : sal_uInt16 MakeSetList( _SetGetExpFlds& rTmpLst );
689 0 : SwDoc* GetDoc() const { return pDoc; }
690 : };
691 :
692 : /*--------------------------------------------------------------------
693 : Query relative page numbering.
694 : --------------------------------------------------------------------*/
695 :
696 0 : class SwRefPageGetField : public SwField
697 : {
698 : String sTxt;
699 : public:
700 : SwRefPageGetField( SwRefPageGetFieldType*, sal_uInt32 nFmt );
701 :
702 : virtual String Expand() const;
703 : virtual SwField* Copy() const;
704 :
705 0 : void SetText( const String& rTxt ) { sTxt = rTxt; }
706 :
707 : void ChangeExpansion( const SwFrm* pFrm, const SwTxtFld* pFld );
708 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
709 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
710 : };
711 :
712 : /*--------------------------------------------------------------------
713 : Field to jump to and edit.
714 : --------------------------------------------------------------------*/
715 :
716 204 : class SwJumpEditFieldType : public SwFieldType
717 : {
718 : SwDoc* pDoc;
719 : SwDepend aDep;
720 :
721 : public:
722 : SwJumpEditFieldType( SwDoc* pDoc );
723 : virtual SwFieldType* Copy() const;
724 :
725 : SwCharFmt* GetCharFmt();
726 : };
727 :
728 0 : class SwJumpEditField : public SwField
729 : {
730 : rtl::OUString sTxt, sHelp;
731 : public:
732 : SwJumpEditField( SwJumpEditFieldType*, sal_uInt32 nFormat,
733 : const String& sText, const String& sHelp );
734 :
735 : virtual String Expand() const;
736 : virtual SwField* Copy() const;
737 :
738 : /// Placeholder-Text
739 : virtual const rtl::OUString& GetPar1() const;
740 : virtual void SetPar1(const rtl::OUString& rStr);
741 :
742 : /// Hint-Text
743 : virtual rtl::OUString GetPar2() const;
744 : virtual void SetPar2(const rtl::OUString& rStr);
745 :
746 0 : SwCharFmt* GetCharFmt() const
747 0 : { return ((SwJumpEditFieldType*)GetTyp())->GetCharFmt(); }
748 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
749 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
750 : };
751 :
752 : /*--------------------------------------------------------------------
753 : Script Fieldtype.
754 : --------------------------------------------------------------------*/
755 :
756 204 : class SwScriptFieldType : public SwFieldType
757 : {
758 : SwDoc* pDoc;
759 : public:
760 : SwScriptFieldType( SwDoc* pDoc );
761 :
762 : virtual SwFieldType* Copy() const;
763 : };
764 :
765 : /*--------------------------------------------------------------------
766 : ScriptField.
767 : --------------------------------------------------------------------*/
768 :
769 0 : class SwScriptField : public SwField
770 : {
771 : rtl::OUString sType; ///< Type of Code (Java/VBScript/...)
772 : rtl::OUString sCode; /**< Code as text.
773 : Code as JavaCode ? */
774 :
775 : sal_Bool bCodeURL; ///< Code contains URL of a script.
776 :
777 : public:
778 : SwScriptField( SwScriptFieldType*, const String& rType,
779 : const String& rCode, sal_Bool bURL=sal_False );
780 :
781 : virtual String GetDescription() const;
782 :
783 : virtual String Expand() const;
784 : virtual SwField* Copy() const;
785 :
786 : /// Type
787 : virtual const rtl::OUString& GetPar1() const;
788 : virtual void SetPar1(const rtl::OUString& rStr);
789 : /// Text
790 : virtual rtl::OUString GetPar2() const;
791 : virtual void SetPar2(const rtl::OUString& rStr);
792 :
793 0 : sal_Bool IsCodeURL() const { return bCodeURL; }
794 0 : void SetCodeURL( sal_Bool bURL ) { bCodeURL = bURL; }
795 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
796 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
797 : };
798 :
799 : /*--------------------------------------------------------------------
800 : Combined Character Fieldtype
801 : --------------------------------------------------------------------*/
802 :
803 204 : class SwCombinedCharFieldType : public SwFieldType
804 : {
805 : public:
806 : SwCombinedCharFieldType();
807 :
808 : virtual SwFieldType* Copy() const;
809 : };
810 :
811 : /*--------------------------------------------------------------------
812 : ScriptField
813 : --------------------------------------------------------------------*/
814 :
815 : #define MAX_COMBINED_CHARACTERS 6
816 :
817 0 : class SW_DLLPUBLIC SwCombinedCharField : public SwField
818 : {
819 : rtl::OUString sCharacters; ///< combine these characters
820 :
821 : public:
822 : SwCombinedCharField( SwCombinedCharFieldType*, const String& rChars );
823 :
824 : virtual String Expand() const;
825 : virtual SwField* Copy() const;
826 :
827 : /// Characters
828 : virtual const rtl::OUString& GetPar1() const;
829 : virtual void SetPar1(const rtl::OUString& rStr);
830 :
831 : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
832 : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
833 : };
834 :
835 :
836 : #endif // SW_DOCUFLD_HXX
837 :
838 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|