Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : : #ifndef SW_DBFLD_HXX
29 : : #define SW_DBFLD_HXX
30 : :
31 : : #include "swdllapi.h"
32 : : #include "fldbas.hxx"
33 : : #include "swdbdata.hxx"
34 : :
35 : : class SwDoc;
36 : : class SwTxtFld;
37 : : class SwFrm;
38 : :
39 : : /*--------------------------------------------------------------------
40 : : Database field.
41 : : --------------------------------------------------------------------*/
42 : :
43 : : class SW_DLLPUBLIC SwDBFieldType : public SwValueFieldType
44 : : {
45 : : SwDBData aDBData; //
46 : : rtl::OUString sName; ///< only used in ::GetName() !
47 : : String sColumn;
48 : : long nRefCnt;
49 : :
50 : : public:
51 : :
52 : : SwDBFieldType(SwDoc* pDocPtr, const String& rColumnName, const SwDBData& rDBData);
53 : : ~SwDBFieldType();
54 : :
55 : : virtual const rtl::OUString& GetName() const;
56 : : virtual SwFieldType* Copy() const;
57 : :
58 : 46 : inline void AddRef() { nRefCnt++; }
59 : : void ReleaseRef();
60 : :
61 : 62 : const String& GetColumnName() const {return sColumn;}
62 : 0 : const SwDBData& GetDBData() const {return aDBData;}
63 : :
64 : : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
65 : : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
66 : : };
67 : :
68 : : /*--------------------------------------------------------------------
69 : : Classes derived from SwFields. They overlay the expand-function.
70 : : Content is formated according to the format (if available).
71 : : --------------------------------------------------------------------*/
72 : :
73 : : class SW_DLLPUBLIC SwDBField : public SwValueField
74 : : {
75 : : rtl::OUString aContent;
76 : : rtl::OUString sFieldCode; ///< contains Word's field code
77 : : sal_uInt16 nSubType;
78 : : sal_Bool bIsInBodyTxt : 1;
79 : : sal_Bool bValidValue : 1;
80 : : sal_Bool bInitialized : 1;
81 : :
82 : : virtual String Expand() const;
83 : : virtual SwField* Copy() const;
84 : :
85 : : public:
86 : : SwDBField(SwDBFieldType*, sal_uLong nFmt = 0);
87 : : virtual ~SwDBField();
88 : :
89 : : virtual SwFieldType* ChgTyp( SwFieldType* );
90 : :
91 : : /// Current text.
92 : : inline void SetExpansion(const String& rStr);
93 : :
94 : : virtual sal_uInt16 GetSubType() const;
95 : : virtual void SetSubType(sal_uInt16 nType);
96 : :
97 : : virtual String GetFieldName() const;
98 : :
99 : : /// For calculations in expressions.
100 : : void ChgValue( double d, sal_Bool bVal );
101 : :
102 : : /// Get the evaluation via DBMgr string.
103 : : void Evaluate();
104 : :
105 : : /// Evaluation for header and footer.
106 : : void ChangeExpansion( const SwFrm*, const SwTxtFld* );
107 : : void InitContent();
108 : : void InitContent(const String& rExpansion);
109 : :
110 : : inline void ChgBodyTxtFlag( sal_Bool bIsInBody );
111 : :
112 : 44 : inline sal_Bool IsInitialized() const { return bInitialized; }
113 : 0 : inline void ClearInitialized() { bInitialized = sal_False; }
114 : 0 : inline void SetInitialized() { bInitialized = sal_True; }
115 : :
116 : : /// Get name.
117 : : virtual const rtl::OUString& GetPar1() const;
118 : :
119 : : /// access to the command string
120 : : const rtl::OUString& GetFieldCode() const { return sFieldCode;}
121 : 0 : void SetFieldCode(const rtl::OUString& rStr) { sFieldCode = rStr; }
122 : :
123 : : /// DBName
124 : 0 : inline const SwDBData& GetDBData() const { return ((SwDBFieldType*)GetTyp())->GetDBData(); }
125 : : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
126 : : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
127 : : };
128 : :
129 : 6 : inline void SwDBField::SetExpansion(const String& rStr)
130 : 6 : { aContent = rStr; }
131 : :
132 : : /// set from UpdateExpFlds (the Node-Position is known there)
133 : 11 : inline void SwDBField::ChgBodyTxtFlag( sal_Bool bIsInBody )
134 : 11 : { bIsInBodyTxt = bIsInBody; }
135 : :
136 : : /*--------------------------------------------------------------------
137 : : Base class for all other database fields.
138 : : --------------------------------------------------------------------*/
139 : :
140 [ # # ]: 0 : class SW_DLLPUBLIC SwDBNameInfField : public SwField
141 : : {
142 : : SwDBData aDBData;
143 : : sal_uInt16 nSubType;
144 : :
145 : : protected:
146 : 0 : const SwDBData& GetDBData() const {return aDBData;}
147 : 0 : SwDBData& GetDBData() {return aDBData;}
148 : :
149 : : SwDBNameInfField(SwFieldType* pTyp, const SwDBData& rDBData, sal_uLong nFmt = 0);
150 : :
151 : : public:
152 : : /// DBName
153 : 0 : inline const SwDBData& GetRealDBData() { return aDBData; }
154 : :
155 : : SwDBData GetDBData(SwDoc* pDoc);
156 : : void SetDBData(const SwDBData& rDBData);
157 : :
158 : : virtual String GetFieldName() const;
159 : :
160 : : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
161 : : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
162 : : virtual sal_uInt16 GetSubType() const;
163 : : virtual void SetSubType(sal_uInt16 nType);
164 : : };
165 : :
166 : : /*--------------------------------------------------------------------
167 : : Database field next record.
168 : : --------------------------------------------------------------------*/
169 : :
170 [ - + ]: 2916 : class SW_DLLPUBLIC SwDBNextSetFieldType : public SwFieldType
171 : : {
172 : : public:
173 : : SwDBNextSetFieldType();
174 : :
175 : : virtual SwFieldType* Copy() const;
176 : : };
177 : :
178 : : /*--------------------------------------------------------------------
179 : : Next data record with condition.
180 : : --------------------------------------------------------------------*/
181 : :
182 [ # # ]: 0 : class SW_DLLPUBLIC SwDBNextSetField : public SwDBNameInfField
183 : : {
184 : : rtl::OUString aCond;
185 : : sal_Bool bCondValid;
186 : :
187 : : public:
188 : : SwDBNextSetField( SwDBNextSetFieldType*,
189 : : const String& rCond, const String& rDummy, const SwDBData& rDBData);
190 : :
191 : : virtual String Expand() const;
192 : : virtual SwField* Copy() const;
193 : :
194 : : void Evaluate(SwDoc*);
195 : : inline void SetCondValid(sal_Bool bCond);
196 : : inline sal_Bool IsCondValid() const;
197 : :
198 : : // Condition
199 : : virtual const rtl::OUString& GetPar1() const;
200 : : virtual void SetPar1(const rtl::OUString& rStr);
201 : : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
202 : : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
203 : : };
204 : :
205 : 0 : inline sal_Bool SwDBNextSetField::IsCondValid() const
206 : 0 : { return bCondValid; }
207 : :
208 : 0 : inline void SwDBNextSetField::SetCondValid(sal_Bool bCond)
209 : 0 : { bCondValid = bCond; }
210 : :
211 : : /*--------------------------------------------------------------------
212 : : Database field next record.
213 : : --------------------------------------------------------------------*/
214 : :
215 [ - + ]: 2916 : class SwDBNumSetFieldType : public SwFieldType
216 : : {
217 : : public:
218 : : SwDBNumSetFieldType();
219 : :
220 : : virtual SwFieldType* Copy() const;
221 : : };
222 : :
223 : : /*--------------------------------------------------------------------
224 : : Data record with number xxx.
225 : : Number is in nFormat (bit of a misuse!)
226 : : --------------------------------------------------------------------*/
227 : :
228 [ # # ][ # # ]: 0 : class SwDBNumSetField : public SwDBNameInfField
229 : : {
230 : : rtl::OUString aCond;
231 : : String aPar2;
232 : : sal_Bool bCondValid;
233 : :
234 : : public:
235 : : SwDBNumSetField(SwDBNumSetFieldType*, const String& rCond, const String& rDBNum, const SwDBData& rDBData);
236 : :
237 : : virtual String Expand() const;
238 : : virtual SwField* Copy() const;
239 : :
240 : : inline sal_Bool IsCondValid() const;
241 : : inline void SetCondValid(sal_Bool bCond);
242 : : void Evaluate(SwDoc*);
243 : :
244 : : // Condition
245 : : virtual const rtl::OUString& GetPar1() const;
246 : : virtual void SetPar1(const rtl::OUString& rStr);
247 : :
248 : : // Number of data record.
249 : : virtual rtl::OUString GetPar2() const;
250 : : virtual void SetPar2(const rtl::OUString& rStr);
251 : :
252 : : // Number of data record is in nFormat!!
253 : : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
254 : : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
255 : : };
256 : :
257 : 0 : inline sal_Bool SwDBNumSetField::IsCondValid() const
258 : 0 : { return bCondValid; }
259 : :
260 : 0 : inline void SwDBNumSetField::SetCondValid(sal_Bool bCond)
261 : 0 : { bCondValid = bCond; }
262 : :
263 : : /*--------------------------------------------------------------------
264 : : Database name.
265 : : --------------------------------------------------------------------*/
266 : :
267 [ - + ]: 2916 : class SwDBNameFieldType : public SwFieldType
268 : : {
269 : : SwDoc *pDoc;
270 : : public:
271 : : SwDBNameFieldType(SwDoc*);
272 : :
273 : : String Expand(sal_uLong) const;
274 : : virtual SwFieldType* Copy() const;
275 : : };
276 : :
277 : : /*--------------------------------------------------------------------
278 : : Database field.
279 : : --------------------------------------------------------------------*/
280 : :
281 [ # # ]: 0 : class SW_DLLPUBLIC SwDBNameField : public SwDBNameInfField
282 : : {
283 : : public:
284 : : SwDBNameField(SwDBNameFieldType*, const SwDBData& rDBData, sal_uLong nFmt = 0);
285 : :
286 : : virtual String Expand() const;
287 : : virtual SwField* Copy() const;
288 : : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
289 : : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
290 : : };
291 : :
292 : : /*--------------------------------------------------------------------
293 : : Number of data record.
294 : : --------------------------------------------------------------------*/
295 : :
296 [ - + ]: 2916 : class SW_DLLPUBLIC SwDBSetNumberFieldType : public SwFieldType
297 : : {
298 : : public:
299 : : SwDBSetNumberFieldType();
300 : :
301 : : virtual SwFieldType* Copy() const;
302 : : };
303 : :
304 : : /*--------------------------------------------------------------------
305 : : Database field.
306 : : --------------------------------------------------------------------*/
307 : :
308 [ # # ]: 0 : class SW_DLLPUBLIC SwDBSetNumberField : public SwDBNameInfField
309 : : {
310 : : long nNumber;
311 : :
312 : : public:
313 : : SwDBSetNumberField(SwDBSetNumberFieldType*, const SwDBData& rDBData, sal_uLong nFmt = 0);
314 : :
315 : : virtual String Expand() const;
316 : : virtual SwField* Copy() const;
317 : : void Evaluate(SwDoc*);
318 : :
319 : : inline long GetSetNumber() const;
320 : : inline void SetSetNumber(long nNum);
321 : : virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
322 : : virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
323 : : };
324 : :
325 : 0 : inline long SwDBSetNumberField::GetSetNumber() const
326 : 0 : { return nNumber; }
327 : :
328 : 0 : inline void SwDBSetNumberField::SetSetNumber(long nNum)
329 : 0 : { nNumber = nNum; }
330 : :
331 : : #endif // SW_DBFLD_HXX
332 : :
333 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|