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 24 #ifndef IDOCUMENTFIELDSACCESS_HXX_INCLUDED 25 #define IDOCUMENTFIELDSACCESS_HXX_INCLUDED 26 27 #include <sal/types.h> 28 #include <tools/solar.h> 29 30 class SwFldTypes; 31 class SwFieldType; 32 class SfxPoolItem; 33 struct SwPosition; 34 class SwDocUpdtFld; 35 class SwCalc; 36 class SwTxtFld; 37 class SwField; 38 class SwMsgPoolItem; 39 class DateTime; 40 class _SetGetExpFld; 41 struct SwHash; 42 class String; 43 class SwNode; 44 45 namespace com { namespace sun { namespace star { namespace uno { class Any; } } } } 46 47 /** Document fields related interfaces 48 */ 49 class IDocumentFieldsAccess 50 { 51 public: 52 /** 53 */ 54 virtual const SwFldTypes *GetFldTypes() const = 0; 55 56 /** 57 */ 58 virtual SwFieldType *InsertFldType(const SwFieldType &) = 0; 59 60 /** 61 */ 62 virtual SwFieldType *GetSysFldType( const sal_uInt16 eWhich ) const = 0; 63 64 /** 65 */ 66 virtual SwFieldType* GetFldType(sal_uInt16 nResId, const String& rName, bool bDbFieldMatching) const = 0; 67 68 /** 69 */ 70 virtual void RemoveFldType(sal_uInt16 nFld) = 0; 71 72 /** 73 */ 74 virtual void UpdateFlds( SfxPoolItem* pNewHt, bool bCloseDB) = 0; 75 76 /** 77 */ 78 virtual void InsDeletedFldType(SwFieldType &) = 0; 79 80 // #111840# 81 /** 82 Puts a value into a field at a certain position. 83 84 A missing field at the given position leads to a failure. 85 86 @param rPosition position of the field 87 @param rVal the value 88 @param nMId 89 90 @retval sal_True putting of value was successful 91 @retval sal_False else 92 */ 93 virtual bool PutValueToField(const SwPosition & rPos, const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich) = 0; 94 95 // rufe das Update der Expression Felder auf; alle Ausdruecke werden 96 // neu berechnet. 97 // #111840# 98 99 /** Updates a field. 100 101 @param rDstFmtFld field to update 102 @param rSrcFld field containing the new values 103 @param pMsgHnt 104 @param bUpdateTblFlds TRUE: update table fields, too. 105 106 @retval sal_True update was successful 107 @retval sal_False else 108 */ 109 virtual bool UpdateFld(SwTxtFld * rDstFmtFld, SwField & rSrcFld, SwMsgPoolItem * pMsgHnt, bool bUpdateTblFlds) = 0; 110 111 /** 112 */ 113 virtual void UpdateRefFlds(SfxPoolItem* pHt) = 0; 114 115 /** 116 */ 117 virtual void UpdateTblFlds(SfxPoolItem* pHt) = 0; 118 119 /** 120 */ 121 virtual void UpdateExpFlds(SwTxtFld* pFld, bool bUpdateRefFlds) = 0; 122 123 /** 124 */ 125 virtual void UpdateUsrFlds() = 0; 126 127 /** 128 */ 129 virtual void UpdatePageFlds(SfxPoolItem*) = 0; 130 131 /** 132 */ 133 virtual void LockExpFlds() = 0; 134 135 /** 136 */ 137 virtual void UnlockExpFlds() = 0; 138 139 /** 140 */ 141 virtual bool IsExpFldsLocked() const = 0; 142 143 144 virtual SwDocUpdtFld& GetUpdtFlds() const = 0; 145 146 /* @@@MAINTAINABILITY-HORROR@@@ 147 SwNode (see parameter pChk) is (?) part of the private 148 data structure of SwDoc and should not be exposed 149 */ 150 virtual bool SetFieldsDirty(bool b, const SwNode* pChk, sal_uLong nLen) = 0; 151 152 /** 153 */ 154 virtual void SetFixFields(bool bOnlyTimeDate, const DateTime* pNewDateTime) = 0; 155 156 // Setze im Calculator alle SetExpresion Felder, die bis zur 157 // angegebenen Position (Node [ + ::com::sun::star::ucb::Content]) gueltig sind. Es kann 158 // eine erzeugte Liste aller Felder mit uebergegeben werden. 159 // (ist die Adresse != 0, und der Pointer == 0 wird eine neue 160 // Liste returnt.) 161 virtual void FldsToCalc(SwCalc& rCalc, sal_uLong nLastNd, sal_uInt16 nLastCnt) = 0; 162 163 /** 164 */ 165 virtual void FldsToCalc(SwCalc& rCalc, const _SetGetExpFld& rToThisFld) = 0; 166 167 /** 168 */ 169 virtual void FldsToExpand(SwHash**& ppTbl, sal_uInt16& rTblSize, const _SetGetExpFld& rToThisFld) = 0; 170 171 /** 172 */ 173 virtual bool IsNewFldLst() const = 0; 174 175 /** 176 */ 177 virtual void SetNewFldLst( bool bFlag) = 0; 178 179 /** 180 */ 181 virtual void InsDelFldInFldLst(bool bIns, const SwTxtFld& rFld) = 0; 182 183 protected: ~IDocumentFieldsAccess()184 virtual ~IDocumentFieldsAccess() {}; 185 }; 186 187 #endif // IDOCUMENTLINKSADMINISTRATION_HXX_INCLUDED 188