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