1*1d2dbeb0SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*1d2dbeb0SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*1d2dbeb0SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*1d2dbeb0SAndrew Rist  * distributed with this work for additional information
6*1d2dbeb0SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*1d2dbeb0SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*1d2dbeb0SAndrew Rist  * "License"); you may not use this file except in compliance
9*1d2dbeb0SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*1d2dbeb0SAndrew Rist  *
11*1d2dbeb0SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*1d2dbeb0SAndrew Rist  *
13*1d2dbeb0SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*1d2dbeb0SAndrew Rist  * software distributed under the License is distributed on an
15*1d2dbeb0SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*1d2dbeb0SAndrew Rist  * KIND, either express or implied.  See the License for the
17*1d2dbeb0SAndrew Rist  * specific language governing permissions and limitations
18*1d2dbeb0SAndrew Rist  * under the License.
19*1d2dbeb0SAndrew Rist  *
20*1d2dbeb0SAndrew Rist  *************************************************************/
21*1d2dbeb0SAndrew Rist 
22*1d2dbeb0SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef IDOCUMENTFIELDSACCESS_HXX_INCLUDED
25cdf0e10cSrcweir #define IDOCUMENTFIELDSACCESS_HXX_INCLUDED
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <sal/types.h>
28cdf0e10cSrcweir #include <tools/solar.h>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir class SwFldTypes;
31cdf0e10cSrcweir class SwFieldType;
32cdf0e10cSrcweir class SfxPoolItem;
33cdf0e10cSrcweir struct SwPosition;
34cdf0e10cSrcweir class SwDocUpdtFld;
35cdf0e10cSrcweir class SwCalc;
36cdf0e10cSrcweir class SwTxtFld;
37cdf0e10cSrcweir class SwField;
38cdf0e10cSrcweir class SwMsgPoolItem;
39cdf0e10cSrcweir class DateTime;
40cdf0e10cSrcweir class _SetGetExpFld;
41cdf0e10cSrcweir struct SwHash;
42cdf0e10cSrcweir class String;
43cdf0e10cSrcweir class SwNode;
44cdf0e10cSrcweir 
45cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace uno { class Any; } } } }
46cdf0e10cSrcweir 
47cdf0e10cSrcweir  /** Document fields related interfaces
48cdf0e10cSrcweir  */
49cdf0e10cSrcweir  class IDocumentFieldsAccess
50cdf0e10cSrcweir  {
51cdf0e10cSrcweir  public:
52cdf0e10cSrcweir     /**
53cdf0e10cSrcweir     */
54cdf0e10cSrcweir     virtual const SwFldTypes *GetFldTypes() const = 0;
55cdf0e10cSrcweir 
56cdf0e10cSrcweir     /**
57cdf0e10cSrcweir     */
58cdf0e10cSrcweir 	virtual SwFieldType *InsertFldType(const SwFieldType &) = 0;
59cdf0e10cSrcweir 
60cdf0e10cSrcweir     /**
61cdf0e10cSrcweir     */
62cdf0e10cSrcweir 	virtual SwFieldType *GetSysFldType( const sal_uInt16 eWhich ) const = 0;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir     /**
65cdf0e10cSrcweir     */
66cdf0e10cSrcweir 	virtual SwFieldType* GetFldType(sal_uInt16 nResId, const String& rName, bool bDbFieldMatching) const = 0;
67cdf0e10cSrcweir 
68cdf0e10cSrcweir     /**
69cdf0e10cSrcweir     */
70cdf0e10cSrcweir 	virtual void RemoveFldType(sal_uInt16 nFld) = 0;
71cdf0e10cSrcweir 
72cdf0e10cSrcweir     /**
73cdf0e10cSrcweir     */
74cdf0e10cSrcweir 	virtual void UpdateFlds( SfxPoolItem* pNewHt, bool bCloseDB) = 0;
75cdf0e10cSrcweir 
76cdf0e10cSrcweir     /**
77cdf0e10cSrcweir     */
78cdf0e10cSrcweir 	virtual void InsDeletedFldType(SwFieldType &) = 0;
79cdf0e10cSrcweir 
80cdf0e10cSrcweir     // #111840#
81cdf0e10cSrcweir     /**
82cdf0e10cSrcweir        Puts a value into a field at a certain position.
83cdf0e10cSrcweir 
84cdf0e10cSrcweir        A missing field at the given position leads to a failure.
85cdf0e10cSrcweir 
86cdf0e10cSrcweir        @param rPosition        position of the field
87cdf0e10cSrcweir        @param rVal             the value
88cdf0e10cSrcweir        @param nMId
89cdf0e10cSrcweir 
90cdf0e10cSrcweir        @retval sal_True            putting of value was successful
91cdf0e10cSrcweir        @retval sal_False           else
92cdf0e10cSrcweir     */
93cdf0e10cSrcweir     virtual bool PutValueToField(const SwPosition & rPos, const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich) = 0;
94cdf0e10cSrcweir 
95cdf0e10cSrcweir     // rufe das Update der Expression Felder auf; alle Ausdruecke werden
96cdf0e10cSrcweir     // neu berechnet.
97cdf0e10cSrcweir     // #111840#
98cdf0e10cSrcweir 
99cdf0e10cSrcweir     /** Updates a field.
100cdf0e10cSrcweir 
101cdf0e10cSrcweir         @param rDstFmtFld field to update
102cdf0e10cSrcweir         @param rSrcFld field containing the new values
103cdf0e10cSrcweir         @param pMsgHnt
104cdf0e10cSrcweir         @param bUpdateTblFlds TRUE: update table fields, too.
105cdf0e10cSrcweir 
106cdf0e10cSrcweir         @retval sal_True             update was successful
107cdf0e10cSrcweir         @retval sal_False            else
108cdf0e10cSrcweir     */
109cdf0e10cSrcweir     virtual bool UpdateFld(SwTxtFld * rDstFmtFld, SwField & rSrcFld, SwMsgPoolItem * pMsgHnt, bool bUpdateTblFlds) = 0;
110cdf0e10cSrcweir 
111cdf0e10cSrcweir     /**
112cdf0e10cSrcweir     */
113cdf0e10cSrcweir 	virtual void UpdateRefFlds(SfxPoolItem* pHt) = 0;
114cdf0e10cSrcweir 
115cdf0e10cSrcweir     /**
116cdf0e10cSrcweir     */
117cdf0e10cSrcweir 	virtual void UpdateTblFlds(SfxPoolItem* pHt) = 0;
118cdf0e10cSrcweir 
119cdf0e10cSrcweir     /**
120cdf0e10cSrcweir     */
121cdf0e10cSrcweir 	virtual void UpdateExpFlds(SwTxtFld* pFld, bool bUpdateRefFlds) = 0;
122cdf0e10cSrcweir 
123cdf0e10cSrcweir     /**
124cdf0e10cSrcweir     */
125cdf0e10cSrcweir 	virtual void UpdateUsrFlds() = 0;
126cdf0e10cSrcweir 
127cdf0e10cSrcweir     /**
128cdf0e10cSrcweir     */
129cdf0e10cSrcweir 	virtual void UpdatePageFlds(SfxPoolItem*) = 0;
130cdf0e10cSrcweir 
131cdf0e10cSrcweir     /**
132cdf0e10cSrcweir     */
133cdf0e10cSrcweir 	virtual void LockExpFlds() = 0;
134cdf0e10cSrcweir 
135cdf0e10cSrcweir     /**
136cdf0e10cSrcweir     */
137cdf0e10cSrcweir 	virtual void UnlockExpFlds() = 0;
138cdf0e10cSrcweir 
139cdf0e10cSrcweir     /**
140cdf0e10cSrcweir     */
141cdf0e10cSrcweir 	virtual bool IsExpFldsLocked() const = 0;
142cdf0e10cSrcweir 
143cdf0e10cSrcweir 
144cdf0e10cSrcweir 	virtual SwDocUpdtFld& GetUpdtFlds() const = 0;
145cdf0e10cSrcweir 
146cdf0e10cSrcweir 	/*	@@@MAINTAINABILITY-HORROR@@@
147cdf0e10cSrcweir 		SwNode (see parameter pChk) is (?) part of the private
148cdf0e10cSrcweir 		data structure of SwDoc and should not be exposed
149cdf0e10cSrcweir 	*/
150cdf0e10cSrcweir 	virtual bool SetFieldsDirty(bool b, const SwNode* pChk, sal_uLong nLen) = 0;
151cdf0e10cSrcweir 
152cdf0e10cSrcweir     /**
153cdf0e10cSrcweir     */
154cdf0e10cSrcweir 	virtual void SetFixFields(bool bOnlyTimeDate, const DateTime* pNewDateTime) = 0;
155cdf0e10cSrcweir 
156cdf0e10cSrcweir 	// Setze im Calculator alle SetExpresion Felder, die bis zur
157cdf0e10cSrcweir 	// angegebenen Position (Node [ + ::com::sun::star::ucb::Content]) gueltig sind. Es kann
158cdf0e10cSrcweir 	// eine erzeugte Liste aller Felder mit uebergegeben werden.
159cdf0e10cSrcweir 	// (ist die Adresse != 0, und der Pointer == 0 wird eine neue
160cdf0e10cSrcweir 	// Liste returnt.)
161cdf0e10cSrcweir 	virtual void FldsToCalc(SwCalc& rCalc, sal_uLong nLastNd, sal_uInt16 nLastCnt) = 0;
162cdf0e10cSrcweir 
163cdf0e10cSrcweir     /**
164cdf0e10cSrcweir     */
165cdf0e10cSrcweir 	virtual void FldsToCalc(SwCalc& rCalc, const _SetGetExpFld& rToThisFld) = 0;
166cdf0e10cSrcweir 
167cdf0e10cSrcweir     /**
168cdf0e10cSrcweir     */
169cdf0e10cSrcweir 	virtual void FldsToExpand(SwHash**& ppTbl, sal_uInt16& rTblSize, const _SetGetExpFld& rToThisFld) = 0;
170cdf0e10cSrcweir 
171cdf0e10cSrcweir     /**
172cdf0e10cSrcweir     */
173cdf0e10cSrcweir 	virtual bool IsNewFldLst() const = 0;
174cdf0e10cSrcweir 
175cdf0e10cSrcweir     /**
176cdf0e10cSrcweir     */
177cdf0e10cSrcweir 	virtual void SetNewFldLst( bool bFlag) = 0;
178cdf0e10cSrcweir 
179cdf0e10cSrcweir     /**
180cdf0e10cSrcweir     */
181cdf0e10cSrcweir 	virtual void InsDelFldInFldLst(bool bIns, const SwTxtFld& rFld) = 0;
182cdf0e10cSrcweir 
183cdf0e10cSrcweir protected:
~IDocumentFieldsAccess()184cdf0e10cSrcweir     virtual ~IDocumentFieldsAccess() {};
185cdf0e10cSrcweir  };
186cdf0e10cSrcweir 
187cdf0e10cSrcweir  #endif // IDOCUMENTLINKSADMINISTRATION_HXX_INCLUDED
188