xref: /aoo41x/main/sw/inc/fldbas.hxx (revision 4d7c9de0)
11d2dbeb0SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
31d2dbeb0SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
41d2dbeb0SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
51d2dbeb0SAndrew Rist  * distributed with this work for additional information
61d2dbeb0SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
71d2dbeb0SAndrew Rist  * to you under the Apache License, Version 2.0 (the
81d2dbeb0SAndrew Rist  * "License"); you may not use this file except in compliance
91d2dbeb0SAndrew Rist  * with the License.  You may obtain a copy of the License at
101d2dbeb0SAndrew Rist  *
111d2dbeb0SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
121d2dbeb0SAndrew Rist  *
131d2dbeb0SAndrew Rist  * Unless required by applicable law or agreed to in writing,
141d2dbeb0SAndrew Rist  * software distributed under the License is distributed on an
151d2dbeb0SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
161d2dbeb0SAndrew Rist  * KIND, either express or implied.  See the License for the
171d2dbeb0SAndrew Rist  * specific language governing permissions and limitations
181d2dbeb0SAndrew Rist  * under the License.
191d2dbeb0SAndrew Rist  *
201d2dbeb0SAndrew Rist  *************************************************************/
211d2dbeb0SAndrew Rist 
221d2dbeb0SAndrew Rist 
23cdf0e10cSrcweir #ifndef SW_FLDBAS_HXX
24cdf0e10cSrcweir #define SW_FLDBAS_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <i18npool/lang.h>
27cdf0e10cSrcweir #include <tools/debug.hxx>
28cdf0e10cSrcweir #include <tools/string.hxx>
29cdf0e10cSrcweir #include "swdllapi.h"
30cdf0e10cSrcweir #include <calbck.hxx>
31cdf0e10cSrcweir #include <com/sun/star/uno/Any.hxx>
32cdf0e10cSrcweir 
33cdf0e10cSrcweir class SwDoc;
34cdf0e10cSrcweir class SvStringsDtor;
35cdf0e10cSrcweir class SvNumberFormatter;
36cdf0e10cSrcweir 
37cdf0e10cSrcweir 
38cdf0e10cSrcweir /*--------------------------------------------------------------------
39cdf0e10cSrcweir 	Beschreibung: 	die ID's fuer die Feldtypen
40cdf0e10cSrcweir  --------------------------------------------------------------------*/
41cdf0e10cSrcweir 
42cdf0e10cSrcweir enum RES_FIELDS
43cdf0e10cSrcweir {
44cdf0e10cSrcweir // Fuer die alten Dokumente muessen die Field-Which IDS erhalten bleiben !!!!
45cdf0e10cSrcweir 	RES_FIELDS_BEGIN,
46cdf0e10cSrcweir 	RES_DBFLD = RES_FIELDS_BEGIN,
47cdf0e10cSrcweir 	RES_USERFLD,
48cdf0e10cSrcweir 	RES_FILENAMEFLD,
49cdf0e10cSrcweir 	RES_DBNAMEFLD,
50cdf0e10cSrcweir 	RES_DATEFLD,
51cdf0e10cSrcweir 	RES_TIMEFLD,
52cdf0e10cSrcweir 	RES_PAGENUMBERFLD,
53cdf0e10cSrcweir 	RES_AUTHORFLD,
54cdf0e10cSrcweir 	RES_CHAPTERFLD,
55cdf0e10cSrcweir 	RES_DOCSTATFLD,
56cdf0e10cSrcweir 	RES_GETEXPFLD,
57cdf0e10cSrcweir 	RES_SETEXPFLD,
58cdf0e10cSrcweir 	RES_GETREFFLD,
59cdf0e10cSrcweir 	RES_HIDDENTXTFLD,
60cdf0e10cSrcweir 	RES_POSTITFLD,
61cdf0e10cSrcweir 	RES_FIXDATEFLD,
62cdf0e10cSrcweir 	RES_FIXTIMEFLD,
63cdf0e10cSrcweir 	RES_REGFLD,
64cdf0e10cSrcweir 	RES_VARREGFLD,
65cdf0e10cSrcweir 	RES_SETREFFLD,
66cdf0e10cSrcweir 	RES_INPUTFLD,
67cdf0e10cSrcweir 	RES_MACROFLD,
68cdf0e10cSrcweir 	RES_DDEFLD,
69cdf0e10cSrcweir 	RES_TABLEFLD,
70cdf0e10cSrcweir 	RES_HIDDENPARAFLD,
71cdf0e10cSrcweir 	RES_DOCINFOFLD,
72cdf0e10cSrcweir 	RES_TEMPLNAMEFLD,
73cdf0e10cSrcweir 	RES_DBNEXTSETFLD,
74cdf0e10cSrcweir 	RES_DBNUMSETFLD,
75cdf0e10cSrcweir 	RES_DBSETNUMBERFLD,
76cdf0e10cSrcweir 	RES_EXTUSERFLD,
77cdf0e10cSrcweir 	RES_REFPAGESETFLD,
78cdf0e10cSrcweir 	RES_REFPAGEGETFLD,
79cdf0e10cSrcweir 	RES_INTERNETFLD,
80cdf0e10cSrcweir 	RES_JUMPEDITFLD,
81cdf0e10cSrcweir 	RES_SCRIPTFLD,
82cdf0e10cSrcweir 	RES_DATETIMEFLD,
83cdf0e10cSrcweir 	RES_AUTHORITY,	//Table of authorities
84cdf0e10cSrcweir 	RES_COMBINED_CHARS,
85cdf0e10cSrcweir     RES_DROPDOWN,
86cdf0e10cSrcweir 	RES_FIELDS_END
87cdf0e10cSrcweir };
88cdf0e10cSrcweir 
89cdf0e10cSrcweir /*--------------------------------------------------------------------
90cdf0e10cSrcweir 	Beschreibung: Liste der FieldTypes am UI
91cdf0e10cSrcweir  --------------------------------------------------------------------*/
92cdf0e10cSrcweir 
93cdf0e10cSrcweir enum SwFldTypesEnum
94cdf0e10cSrcweir {
95cdf0e10cSrcweir 	TYP_BEGIN,
96cdf0e10cSrcweir 	TYP_DATEFLD = TYP_BEGIN,	// 0
97cdf0e10cSrcweir 	TYP_TIMEFLD,
98cdf0e10cSrcweir 	TYP_FILENAMEFLD,
99cdf0e10cSrcweir 	TYP_DBNAMEFLD,
100cdf0e10cSrcweir 	TYP_CHAPTERFLD,
101cdf0e10cSrcweir 	TYP_PAGENUMBERFLD,
102cdf0e10cSrcweir 	TYP_DOCSTATFLD,
103cdf0e10cSrcweir 	TYP_AUTHORFLD,
104cdf0e10cSrcweir 	TYP_SETFLD,
105cdf0e10cSrcweir 	TYP_GETFLD,
106cdf0e10cSrcweir 	TYP_FORMELFLD,  			// 10
107cdf0e10cSrcweir 	TYP_HIDDENTXTFLD,
108cdf0e10cSrcweir 	TYP_SETREFFLD,
109cdf0e10cSrcweir 	TYP_GETREFFLD,
110cdf0e10cSrcweir 	TYP_DDEFLD,
111cdf0e10cSrcweir 	TYP_MACROFLD,
112cdf0e10cSrcweir 	TYP_INPUTFLD,
113cdf0e10cSrcweir 	TYP_HIDDENPARAFLD,
114cdf0e10cSrcweir 	TYP_DOCINFOFLD,
115cdf0e10cSrcweir 	TYP_DBFLD,
116cdf0e10cSrcweir 	TYP_USERFLD,				// 20
117cdf0e10cSrcweir 	TYP_POSTITFLD,
118cdf0e10cSrcweir 	TYP_TEMPLNAMEFLD,
119cdf0e10cSrcweir 	TYP_SEQFLD,
120cdf0e10cSrcweir 	TYP_DBNEXTSETFLD,
121cdf0e10cSrcweir 	TYP_DBNUMSETFLD,
122cdf0e10cSrcweir 	TYP_DBSETNUMBERFLD,
123cdf0e10cSrcweir 	TYP_CONDTXTFLD,
124cdf0e10cSrcweir 	TYP_NEXTPAGEFLD,
125cdf0e10cSrcweir 	TYP_PREVPAGEFLD,
126cdf0e10cSrcweir 	TYP_EXTUSERFLD,				// 30
127cdf0e10cSrcweir 	TYP_FIXDATEFLD,
128cdf0e10cSrcweir 	TYP_FIXTIMEFLD,
129cdf0e10cSrcweir 	TYP_SETINPFLD,
130cdf0e10cSrcweir 	TYP_USRINPFLD,
131cdf0e10cSrcweir 	TYP_SETREFPAGEFLD,
132cdf0e10cSrcweir 	TYP_GETREFPAGEFLD,
133cdf0e10cSrcweir 	TYP_INTERNETFLD,
134cdf0e10cSrcweir 	TYP_JUMPEDITFLD,
135cdf0e10cSrcweir 	TYP_SCRIPTFLD,				// 40
136cdf0e10cSrcweir 	TYP_AUTHORITY,
137cdf0e10cSrcweir 	TYP_COMBINED_CHARS,
138cdf0e10cSrcweir     TYP_DROPDOWN,
139cdf0e10cSrcweir 	TYP_END
140cdf0e10cSrcweir };
141ca62e2c2SSteve Yin enum SwAttrFieldTYpe
142ca62e2c2SSteve Yin {
143ca62e2c2SSteve Yin 	ATTR_NONE,
144ca62e2c2SSteve Yin 	ATTR_DATEFLD,
145ca62e2c2SSteve Yin 	ATTR_TIMEFLD,
146ca62e2c2SSteve Yin 	ATTR_PAGENUMBERFLD,
147ca62e2c2SSteve Yin 	ATTR_PAGECOOUNTFLD,
148ca62e2c2SSteve Yin 	ATTR_BOOKMARKFLD,
149ca62e2c2SSteve Yin 	ATTR_SETREFATTRFLD
150ca62e2c2SSteve Yin };
151cdf0e10cSrcweir enum SwFileNameFormat
152cdf0e10cSrcweir {
153cdf0e10cSrcweir 	FF_BEGIN,
154cdf0e10cSrcweir 	FF_NAME = FF_BEGIN,
155cdf0e10cSrcweir 	FF_PATHNAME,
156cdf0e10cSrcweir 	FF_PATH,
157cdf0e10cSrcweir 	FF_NAME_NOEXT,
158cdf0e10cSrcweir 	FF_UI_NAME,
159cdf0e10cSrcweir 	FF_UI_RANGE,
160cdf0e10cSrcweir 	FF_END,
161cdf0e10cSrcweir 	FF_FIXED = 0x8000
162cdf0e10cSrcweir };
163cdf0e10cSrcweir 
164cdf0e10cSrcweir enum SwVarFormat
165cdf0e10cSrcweir {
166cdf0e10cSrcweir 	VVF_CMD			= 0x0010,	// Kommando anzeigen
167cdf0e10cSrcweir 	VVF_INVISIBLE   = 0x0040,   // unsichtbar
168cdf0e10cSrcweir 	VVF_XXP   		= 0x0400,   // 1234%
169cdf0e10cSrcweir 	VVF_XX_XXP   	= 0x0800,   // 1.234,56%
170cdf0e10cSrcweir 	VVF_CLEAR		= 0x000f,
171cdf0e10cSrcweir 
172cdf0e10cSrcweir // ab hier neue Formate
173cdf0e10cSrcweir 	VVF_SYS	 		= 0x2000, 	//Zahlenformat aus der Systemeinstellung
174cdf0e10cSrcweir 	VVF_X			= 0x2100,	// 1234
175cdf0e10cSrcweir 	VVF_X_X         = 0x2200,   // 1234,5
176cdf0e10cSrcweir 	VVF_X_XX		= 0x2300,   // 1245,56
177cdf0e10cSrcweir 	VVF_XX_X 		= 0x2400,   // 1.234,5
178cdf0e10cSrcweir 	VVF_XX_XX		= 0x2500,   // 1.234,56
179cdf0e10cSrcweir 	VVF_XX_XXX		= 0x2600,   // 1.234,567
180cdf0e10cSrcweir 	VVF_SYS_CUR		= 0x2700,	// W???hrungsformat aus der Systemeinstellung
181cdf0e10cSrcweir 	VVF_CUR_X		= 0x2800,   // DM 1234
182cdf0e10cSrcweir 	VVF_CUR_XX_XX	= 0x2900,   // DM 1234,56 DM 1234,00
183cdf0e10cSrcweir 	VVF_CUR_XX_X0 	= 0x2a00,   // DM 1234,56 DM 1234,--
184cdf0e10cSrcweir 	VVF_X_CUR		= 0x2b00,   // 1234 DM
185cdf0e10cSrcweir 	VVF_XX_XX_CUR	= 0x2c00,   // 1234,56 DM 1234,00 DM
186cdf0e10cSrcweir 	VVF_XX_X0_CUR	= 0x2d00,    // 1234,56 DM 1234,-- DM
187cdf0e10cSrcweir // Kompatibilitaet:
188cdf0e10cSrcweir 	VF_CMD			= VVF_CMD,
189cdf0e10cSrcweir 	VF_INVISIBLE    = VVF_INVISIBLE,
190cdf0e10cSrcweir 	VF_XXP   		= VVF_XXP,
191cdf0e10cSrcweir 	VF_XX_XXP   	= VVF_XX_XXP,
192cdf0e10cSrcweir 	VF_VISIBLE		= VVF_SYS,
193cdf0e10cSrcweir 	VF_XX   		= VVF_X,
194cdf0e10cSrcweir 	VF_XX_XX   		= VVF_XX_XX,
195cdf0e10cSrcweir 	VF_XX_XX_CUR   	= VVF_SYS_CUR,
196cdf0e10cSrcweir 	VF_CLEAR		= VVF_CLEAR
197cdf0e10cSrcweir 
198cdf0e10cSrcweir };
199cdf0e10cSrcweir 
200cdf0e10cSrcweir typedef sal_uInt16 SwGetSetExpType;
201cdf0e10cSrcweir namespace nsSwGetSetExpType
202cdf0e10cSrcweir {
203cdf0e10cSrcweir 	const SwGetSetExpType GSE_STRING  = 0x0001;	// String
204cdf0e10cSrcweir 	const SwGetSetExpType GSE_EXPR	  = 0x0002;	// Expression
205cdf0e10cSrcweir 	const SwGetSetExpType GSE_INP	  = 0x0004;	// InputField
206cdf0e10cSrcweir 	const SwGetSetExpType GSE_SEQ	  = 0x0008;	// Sequence
207cdf0e10cSrcweir 	const SwGetSetExpType GSE_FORMULA = 0x0010;	// Formel
208cdf0e10cSrcweir }
209cdf0e10cSrcweir 
210cdf0e10cSrcweir typedef sal_uInt16 SwExtendedSubType;
211cdf0e10cSrcweir namespace nsSwExtendedSubType
212cdf0e10cSrcweir {
213cdf0e10cSrcweir 	const SwExtendedSubType SUB_CMD	        = 0x0100;	// Kommando anzeigen
214cdf0e10cSrcweir 	const SwExtendedSubType SUB_INVISIBLE	= 0x0200;	// unsichtbar
215cdf0e10cSrcweir 	const SwExtendedSubType SUB_OWN_FMT		= 0x0400;	// SwDBField: Uebernimmt Formatierung nicht
216cdf0e10cSrcweir 								                        // aus Datenbank
217cdf0e10cSrcweir }
218cdf0e10cSrcweir 
219cdf0e10cSrcweir enum SwInputFieldSubType
220cdf0e10cSrcweir {
221cdf0e10cSrcweir 	INP_TXT		= 0x01,
222cdf0e10cSrcweir 	INP_USR     = 0x02,
223cdf0e10cSrcweir 	INP_VAR     = 0x03
224cdf0e10cSrcweir };
225cdf0e10cSrcweir 
226cdf0e10cSrcweir 
227cdf0e10cSrcweir enum SwUserType
228cdf0e10cSrcweir {
229cdf0e10cSrcweir 	UF_STRING 	= 0x01,
230cdf0e10cSrcweir 	UF_EXPR	  	= 0x02
231cdf0e10cSrcweir };
232cdf0e10cSrcweir 
233cdf0e10cSrcweir enum SwDateTimeSubType
234cdf0e10cSrcweir {
235cdf0e10cSrcweir 	FIXEDFLD = 1,
236cdf0e10cSrcweir 	DATEFLD  = 2,
237cdf0e10cSrcweir 	TIMEFLD  = 4
238cdf0e10cSrcweir };
239cdf0e10cSrcweir 
240cdf0e10cSrcweir 
241cdf0e10cSrcweir extern sal_uInt16 __FAR_DATA aTypeTab[];
242cdf0e10cSrcweir 
243cdf0e10cSrcweir /*--------------------------------------------------------------------
244cdf0e10cSrcweir 	Beschreibung: Allgemeine Tools
245cdf0e10cSrcweir  --------------------------------------------------------------------*/
246cdf0e10cSrcweir 
247cdf0e10cSrcweir String	GetResult(double nVal, sal_uInt32 nNumFmt, sal_uInt16 nLang = LANGUAGE_SYSTEM);
248cdf0e10cSrcweir void    SetErrorStr(const String& rStr);
249cdf0e10cSrcweir //String	ExpandDate(const Date& rDate, sal_uLong nFmt, sal_uInt16 nLang);
250cdf0e10cSrcweir //String 	ExpandTime(const Time& rTime, sal_uLong nFmt, sal_uInt16 nLang);
251cdf0e10cSrcweir String  FormatNumber(sal_uInt16 nNum, sal_uInt32 nFormat);
252cdf0e10cSrcweir 
253cdf0e10cSrcweir /*--------------------------------------------------------------------
254cdf0e10cSrcweir 	Beschreibung: 	Instanzen von SwFields und Abgeleiteten kommen 0-n mal vor.
255cdf0e10cSrcweir 					Zu jeder Klasse SwFields existiert
256cdf0e10cSrcweir 					1 Instanz der zugehoerigen Typenklasse
257cdf0e10cSrcweir 					Basisklasse aller Feldtypen ist SwFieldType
258cdf0e10cSrcweir  --------------------------------------------------------------------*/
259cdf0e10cSrcweir 
260cdf0e10cSrcweir DBG_NAMEEX(SwFieldType)
261cdf0e10cSrcweir 
262cdf0e10cSrcweir class SW_DLLPUBLIC SwFieldType : public SwModify
263cdf0e10cSrcweir {
264cdf0e10cSrcweir 	sal_uInt16 nWhich;
265cdf0e10cSrcweir 
266cdf0e10cSrcweir 	friend void _FinitUI();		// um den Pointer zu loeschen!
267cdf0e10cSrcweir 	static	SvStringsDtor*	pFldNames;
268cdf0e10cSrcweir 
269cdf0e10cSrcweir 	static void _GetFldName();			// legt die FldNames an, fldmgr.cxx!
270cdf0e10cSrcweir 
271cdf0e10cSrcweir protected:
272cdf0e10cSrcweir 	// single argument ctors shall be explicit.
273cdf0e10cSrcweir 	explicit SwFieldType( sal_uInt16 nWhichId );
274cdf0e10cSrcweir 
275cdf0e10cSrcweir public:
276cdf0e10cSrcweir 
277cdf0e10cSrcweir #ifdef DBG_UTIL
278cdf0e10cSrcweir 	virtual ~SwFieldType();
279cdf0e10cSrcweir #endif
280cdf0e10cSrcweir 	static	const String&	GetTypeStr( sal_uInt16 nTypeId );
281cdf0e10cSrcweir 
282cdf0e10cSrcweir 	// nur in abgeleiteten Klassen
283cdf0e10cSrcweir 	virtual const String&	GetName() const;
284cdf0e10cSrcweir 	virtual SwFieldType* 	Copy()    const = 0;
285cdf0e10cSrcweir     virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
286cdf0e10cSrcweir     virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
287cdf0e10cSrcweir 
Which() const288cdf0e10cSrcweir 			sal_uInt16 			Which() const { return nWhich; }
289cdf0e10cSrcweir 
290cdf0e10cSrcweir 	inline  void 			UpdateFlds() const;
291cdf0e10cSrcweir };
292cdf0e10cSrcweir 
UpdateFlds() const293cdf0e10cSrcweir inline void SwFieldType::UpdateFlds() const
294cdf0e10cSrcweir {
295cdf0e10cSrcweir 	((SwFieldType*)this)->ModifyNotification( 0, 0 );
296cdf0e10cSrcweir }
297cdf0e10cSrcweir 
298cdf0e10cSrcweir /*--------------------------------------------------------------------
299cdf0e10cSrcweir 	Beschreibung:  Basisklasse aller Felder.
300cdf0e10cSrcweir 				   Ueber Which wird der Typ des Feldes abgefragt.
301cdf0e10cSrcweir 				   Ueber Expand() wird der expandierte Inhalt
302cdf0e10cSrcweir 				   des Feldes in Erfahrung gebracht.
303cdf0e10cSrcweir  --------------------------------------------------------------------*/
304cdf0e10cSrcweir 
305cdf0e10cSrcweir class SW_DLLPUBLIC SwField
306cdf0e10cSrcweir {
307cdf0e10cSrcweir private:
308cdf0e10cSrcweir     mutable String      m_Cache; /// #i85766# cached expansion (for clipboard)
309*69a74367SOliver-Rainer Wittmann     bool m_bUseFieldValueCache; /// control the usage of the cached field value
310*69a74367SOliver-Rainer Wittmann 
311cdf0e10cSrcweir 	sal_uInt16				nLang;	// Immer ueber SetLanguage aendern!
312cdf0e10cSrcweir     sal_Bool                bIsAutomaticLanguage;
313cdf0e10cSrcweir 	sal_uInt32			nFormat;
314cdf0e10cSrcweir 
315cdf0e10cSrcweir 	SwFieldType* 		pType;
316cdf0e10cSrcweir 
317cdf0e10cSrcweir 	virtual String		Expand() const = 0;
318cdf0e10cSrcweir 	virtual SwField* 	Copy() const = 0;
319cdf0e10cSrcweir 
320cdf0e10cSrcweir protected:
SetFormat(sal_uInt32 nSet)321cdf0e10cSrcweir 	void				SetFormat(sal_uInt32 nSet) {nFormat = nSet;}
322cdf0e10cSrcweir 
323*69a74367SOliver-Rainer Wittmann     SwField( SwFieldType* pTyp,
324*69a74367SOliver-Rainer Wittmann              sal_uInt32 nFmt = 0,
325*69a74367SOliver-Rainer Wittmann              sal_uInt16 nLang = LANGUAGE_SYSTEM,
326*69a74367SOliver-Rainer Wittmann              bool m_bUseFieldValueCache = true );
327cdf0e10cSrcweir 
328cdf0e10cSrcweir public:
329cdf0e10cSrcweir 	virtual 			~SwField();
330cdf0e10cSrcweir 
331cdf0e10cSrcweir 	// Typ feststellen
332cdf0e10cSrcweir 	inline SwFieldType*	GetTyp() const;
333cdf0e10cSrcweir 
334cdf0e10cSrcweir 	// neuen Typ setzen (wird fuer das Kopieren zwischen Dokumenten benutzt)
335cdf0e10cSrcweir 	virtual SwFieldType* ChgTyp( SwFieldType* );
336cdf0e10cSrcweir 
337cdf0e10cSrcweir     /** expand the field.
338cdf0e10cSrcweir         @param  bCached     return cached field value.
339cdf0e10cSrcweir         @remark     most callers should use the cached field value.
340cdf0e10cSrcweir                     this is because various fields need special handing
341cdf0e10cSrcweir                     (ChangeExpansion()) to return correct values, and only
342cdf0e10cSrcweir                     SwTxtFormatter::NewFldPortion() sets things up properly.
343cdf0e10cSrcweir         @return     the generated text (suitable for display)
344cdf0e10cSrcweir       */
345cdf0e10cSrcweir     String              ExpandField(bool const bCached) const;
346cdf0e10cSrcweir 
347cdf0e10cSrcweir     virtual String      GetFieldName() const;
348cdf0e10cSrcweir 
349cdf0e10cSrcweir     SwField *           CopyField() const;
350cdf0e10cSrcweir 
351cdf0e10cSrcweir 	// ResId
Which() const352cdf0e10cSrcweir 	sal_uInt16              Which() const
353cdf0e10cSrcweir #ifndef DBG_UTIL
354cdf0e10cSrcweir 		{ return pType->Which(); }
355cdf0e10cSrcweir #else
356cdf0e10cSrcweir 		;       // in fldbas.cxx implementiert
357cdf0e10cSrcweir #endif
358cdf0e10cSrcweir 
359cdf0e10cSrcweir 	// TYP_ID
360cdf0e10cSrcweir 			sal_uInt16		GetTypeId() const;
361cdf0e10cSrcweir 	virtual sal_uInt16		GetSubType() const;
362cdf0e10cSrcweir 	virtual void        SetSubType(sal_uInt16);
363cdf0e10cSrcweir 
364cdf0e10cSrcweir 	// Sprache an der Feldposition
365cdf0e10cSrcweir 	inline sal_uInt16		GetLanguage() const;
366cdf0e10cSrcweir 	virtual void		SetLanguage(sal_uInt16 nLng);
367cdf0e10cSrcweir 
368cdf0e10cSrcweir 	// Parameter fuer Dialog und BASIC erfragen
369cdf0e10cSrcweir 	inline sal_uInt32	GetFormat() const;
370cdf0e10cSrcweir 	virtual const String& GetPar1() const;
371cdf0e10cSrcweir 	virtual String		GetPar2() 	const;
372cdf0e10cSrcweir 
373cdf0e10cSrcweir 	virtual String		GetFormula() const;
374cdf0e10cSrcweir 
375cdf0e10cSrcweir 	virtual void  		ChangeFormat(sal_uInt32 n);
376cdf0e10cSrcweir 	virtual void		SetPar1(const String& rStr);
377cdf0e10cSrcweir 	virtual void		SetPar2(const String& rStr);
378cdf0e10cSrcweir 
379cdf0e10cSrcweir     virtual sal_Bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhichId ) const;
380cdf0e10cSrcweir     virtual sal_Bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhichId );
381cdf0e10cSrcweir 	// hat das Feld eine Action auf dem ClickHandler ? (z.B. INetFelder,..)
382cdf0e10cSrcweir 	sal_Bool		 	HasClickHdl() const;
383cdf0e10cSrcweir 	// ist es ein Fix-Feld?
384cdf0e10cSrcweir 	sal_Bool 			IsFixed() const;
385cdf0e10cSrcweir 
IsAutomaticLanguage() const386cdf0e10cSrcweir     sal_Bool                IsAutomaticLanguage() const { return bIsAutomaticLanguage;}
SetAutomaticLanguage(sal_Bool bSet)387cdf0e10cSrcweir     void                SetAutomaticLanguage(sal_Bool bSet){bIsAutomaticLanguage = bSet;}
388cdf0e10cSrcweir 
389cdf0e10cSrcweir     virtual String      GetDescription() const;
390cdf0e10cSrcweir };
391cdf0e10cSrcweir 
GetTyp() const392cdf0e10cSrcweir inline SwFieldType*	SwField::GetTyp() const
393cdf0e10cSrcweir 	{ return pType; 	}
394cdf0e10cSrcweir 
GetFormat() const395cdf0e10cSrcweir inline sal_uInt32 SwField::GetFormat() const
396cdf0e10cSrcweir 	{ return nFormat; 	}
397cdf0e10cSrcweir 
GetLanguage() const398cdf0e10cSrcweir inline sal_uInt16 SwField::GetLanguage() const
399cdf0e10cSrcweir 	{ return nLang;		}
400cdf0e10cSrcweir 
401cdf0e10cSrcweir /*--------------------------------------------------------------------
402cdf0e10cSrcweir 	Beschreibung:	Felder mit Values, die ueber der Numberformatter
403cdf0e10cSrcweir 					formatiert werden muessen
404cdf0e10cSrcweir  --------------------------------------------------------------------*/
405cdf0e10cSrcweir 
406cdf0e10cSrcweir class SwValueFieldType : public SwFieldType
407cdf0e10cSrcweir {
408cdf0e10cSrcweir 	SwDoc*	pDoc;
409cdf0e10cSrcweir 	sal_Bool	bUseFormat;	// Numberformatter verwenden
410cdf0e10cSrcweir 
411cdf0e10cSrcweir protected:
412cdf0e10cSrcweir 	SwValueFieldType( SwDoc* pDocPtr, sal_uInt16 nWhichId );
413cdf0e10cSrcweir 	SwValueFieldType( const SwValueFieldType& rTyp );
414cdf0e10cSrcweir 
415cdf0e10cSrcweir public:
GetDoc() const416cdf0e10cSrcweir 	inline SwDoc*	GetDoc() const						{ return pDoc; }
SetDoc(SwDoc * pNewDoc)417cdf0e10cSrcweir 	inline void		SetDoc(SwDoc* pNewDoc)				{ pDoc = pNewDoc; }
418cdf0e10cSrcweir 
UseFormat() const419cdf0e10cSrcweir 	inline sal_Bool		UseFormat() const					{ return bUseFormat; }
EnableFormat(sal_Bool bFormat=sal_True)420cdf0e10cSrcweir 	inline void		EnableFormat(sal_Bool bFormat = sal_True)	{ bUseFormat = bFormat; }
421cdf0e10cSrcweir 
422cdf0e10cSrcweir 	String			ExpandValue(const double& rVal, sal_uInt32 nFmt, sal_uInt16 nLng=0) const;
423cdf0e10cSrcweir 	void			DoubleToString(String &rValue, const double &rVal, LanguageType eLng) const;
424cdf0e10cSrcweir 	void			DoubleToString(String &rValue, const double &rVal, sal_uInt32 nFmt) const;
425cdf0e10cSrcweir };
426cdf0e10cSrcweir 
427cdf0e10cSrcweir class SW_DLLPUBLIC SwValueField : public SwField
428cdf0e10cSrcweir {
429cdf0e10cSrcweir 	double fValue;
430cdf0e10cSrcweir //	String sExpand;
431cdf0e10cSrcweir 
432cdf0e10cSrcweir protected:
433cdf0e10cSrcweir 	SwValueField( SwValueFieldType* pFldType, sal_uInt32 nFmt = 0, sal_uInt16 nLang = LANGUAGE_SYSTEM, const double fVal = 0.0 );
434cdf0e10cSrcweir 	SwValueField( const SwValueField& rFld );
435cdf0e10cSrcweir 
436cdf0e10cSrcweir public:
437cdf0e10cSrcweir 	virtual 				~SwValueField();
438cdf0e10cSrcweir 
439cdf0e10cSrcweir 	virtual SwFieldType*	ChgTyp( SwFieldType* );
440cdf0e10cSrcweir 	virtual void			SetLanguage(sal_uInt16 nLng);
441cdf0e10cSrcweir //  os: wozu war das denn da?
442cdf0e10cSrcweir //	virtual void  			ChangeFormat(sal_uLong n);
443cdf0e10cSrcweir 
GetDoc() const444cdf0e10cSrcweir 	inline SwDoc*			GetDoc() const			{ return ((SwValueFieldType*)GetTyp())->GetDoc(); }
445cdf0e10cSrcweir 
446cdf0e10cSrcweir 	virtual double			GetValue() const;
447cdf0e10cSrcweir 	virtual void 			SetValue( const double& rVal );
448cdf0e10cSrcweir 
ExpandValue(const double & rVal,sal_uInt32 nFmt,sal_uInt16 nLng=0) const449cdf0e10cSrcweir 	inline String	ExpandValue(const double& rVal, sal_uInt32 nFmt, sal_uInt16 nLng=0) const
450cdf0e10cSrcweir 		{ return ((SwValueFieldType*)GetTyp())->ExpandValue(rVal, nFmt, nLng); }
451cdf0e10cSrcweir 
452cdf0e10cSrcweir 	static sal_uInt32		GetSystemFormat(SvNumberFormatter* pFormatter, sal_uInt32 nFmt);
453cdf0e10cSrcweir };
454cdf0e10cSrcweir 
455cdf0e10cSrcweir class SW_DLLPUBLIC SwFormulaField : public SwValueField
456cdf0e10cSrcweir {
457cdf0e10cSrcweir 	String sFormula;
458cdf0e10cSrcweir 
459cdf0e10cSrcweir protected:
460cdf0e10cSrcweir 	SwFormulaField( SwValueFieldType* pFldType, sal_uInt32 nFmt = 0, const double fVal = 0.0 );
461cdf0e10cSrcweir 	SwFormulaField( const SwFormulaField& rFld );
462cdf0e10cSrcweir 
463cdf0e10cSrcweir public:
464cdf0e10cSrcweir 	virtual String			GetFormula() const;
465cdf0e10cSrcweir 	void 					SetFormula(const String& rStr);
466cdf0e10cSrcweir 
467cdf0e10cSrcweir 	void					SetExpandedFormula(const String& rStr);
468cdf0e10cSrcweir 	String					GetExpandedFormula() const;
469cdf0e10cSrcweir };
470cdf0e10cSrcweir 
471cdf0e10cSrcweir #endif // SW_FLDBAS_HXX
472