| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef SW_DBFLD_HXX |
| #define SW_DBFLD_HXX |
| |
| #include "swdllapi.h" |
| #include "fldbas.hxx" |
| #include "swdbdata.hxx" |
| |
| class SwDoc; |
| class SwTxtFld; |
| class SwFrm; |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Datenbankfeld |
| --------------------------------------------------------------------*/ |
| |
| class SW_DLLPUBLIC SwDBFieldType : public SwValueFieldType |
| { |
| SwDBData aDBData; // |
| String sName; // only used in ::GetName() ! |
| String sColumn; |
| long nRefCnt; |
| |
| public: |
| |
| SwDBFieldType(SwDoc* pDocPtr, const String& rColumnName, const SwDBData& rDBData); |
| ~SwDBFieldType(); |
| |
| virtual const String& GetName() const; |
| virtual SwFieldType* Copy() const; |
| |
| inline void AddRef() { nRefCnt++; } |
| void ReleaseRef(); |
| |
| const String& GetColumnName() const {return sColumn;} |
| const SwDBData& GetDBData() const {return aDBData;} |
| |
| virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const; |
| virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ); |
| }; |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: |
| von SwFields abgeleitete Klassen. Sie ueberlagern die Expand-Funktion. |
| Der Inhalt wird entsprechend dem Format, soweit vorhanden, formatiert. |
| --------------------------------------------------------------------*/ |
| |
| class SW_DLLPUBLIC SwDBField : public SwValueField |
| { |
| String aContent; |
| String sFieldCode; // contains Word's field code |
| sal_uInt16 nSubType; |
| sal_Bool bIsInBodyTxt : 1; |
| sal_Bool bValidValue : 1; |
| sal_Bool bInitialized : 1; |
| |
| virtual String Expand() const; |
| virtual SwField* Copy() const; |
| |
| public: |
| SwDBField(SwDBFieldType*, sal_uLong nFmt = 0); |
| virtual ~SwDBField(); |
| |
| virtual SwFieldType* ChgTyp( SwFieldType* ); |
| |
| // Der aktuelle Text |
| inline void SetExpansion(const String& rStr); |
| |
| virtual sal_uInt16 GetSubType() const; |
| virtual void SetSubType(sal_uInt16 nType); |
| |
| virtual String GetFieldName() const; |
| |
| // fuer Berechnungen in Ausdruecken |
| void ChgValue( double d, sal_Bool bVal ); |
| |
| // Evaluierung ueber den DBMgr String rauspulen |
| void Evaluate(); |
| |
| // Evaluierung fuer Kopf und Fusszeilen |
| void ChangeExpansion( const SwFrm*, const SwTxtFld* ); |
| void InitContent(); |
| void InitContent(const String& rExpansion); |
| |
| inline void ChgBodyTxtFlag( sal_Bool bIsInBody ); |
| |
| inline sal_Bool IsInitialized() const { return bInitialized; } |
| inline void ClearInitialized() { bInitialized = sal_False; } |
| inline void SetInitialized() { bInitialized = sal_True; } |
| |
| // Name erfragen |
| virtual const String& GetPar1() const; |
| |
| // access to the command string |
| const String& GetFieldCode() const |
| { return sFieldCode;} |
| void SetFieldCode(const String& rStr) |
| { sFieldCode = rStr; } |
| |
| // DBName |
| inline const SwDBData& GetDBData() const { return ((SwDBFieldType*)GetTyp())->GetDBData(); } |
| virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const; |
| virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ); |
| }; |
| |
| inline void SwDBField::SetExpansion(const String& rStr) |
| { aContent = rStr; } |
| |
| // wird von UpdateExpFlds gesetzt (dort ist die Node-Position bekannt) |
| inline void SwDBField::ChgBodyTxtFlag( sal_Bool bIsInBody ) |
| { bIsInBodyTxt = bIsInBody; } |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Basisklasse fuer alle weiteren Datenbankfelder |
| --------------------------------------------------------------------*/ |
| |
| class SW_DLLPUBLIC SwDBNameInfField : public SwField |
| { |
| SwDBData aDBData; |
| sal_uInt16 nSubType; |
| |
| protected: |
| const SwDBData& GetDBData() const {return aDBData;} |
| SwDBData& GetDBData() {return aDBData;} |
| |
| SwDBNameInfField(SwFieldType* pTyp, const SwDBData& rDBData, sal_uLong nFmt = 0); |
| |
| public: |
| // DBName |
| inline const SwDBData& GetRealDBData() { return aDBData; } |
| |
| SwDBData GetDBData(SwDoc* pDoc); |
| void SetDBData(const SwDBData& rDBData); // #111840# |
| |
| virtual String GetFieldName() const; |
| |
| virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const; |
| virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ); |
| virtual sal_uInt16 GetSubType() const; |
| virtual void SetSubType(sal_uInt16 nType); |
| }; |
| |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Datenbankfeld Naechster Satz |
| --------------------------------------------------------------------*/ |
| |
| class SW_DLLPUBLIC SwDBNextSetFieldType : public SwFieldType |
| { |
| public: |
| SwDBNextSetFieldType(); |
| |
| virtual SwFieldType* Copy() const; |
| }; |
| |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Naechsten Datensatz mit Bedingung |
| --------------------------------------------------------------------*/ |
| |
| class SW_DLLPUBLIC SwDBNextSetField : public SwDBNameInfField |
| { |
| String aCond; |
| sal_Bool bCondValid; |
| |
| public: |
| SwDBNextSetField( SwDBNextSetFieldType*, |
| const String& rCond, const String& rDummy, const SwDBData& rDBData); |
| |
| virtual String Expand() const; |
| virtual SwField* Copy() const; |
| |
| void Evaluate(SwDoc*); |
| inline void SetCondValid(sal_Bool bCond); |
| inline sal_Bool IsCondValid() const; |
| |
| // Condition |
| virtual const String& GetPar1() const; |
| virtual void SetPar1(const String& rStr); |
| virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const; |
| virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ); |
| }; |
| |
| inline sal_Bool SwDBNextSetField::IsCondValid() const |
| { return bCondValid; } |
| |
| inline void SwDBNextSetField::SetCondValid(sal_Bool bCond) |
| { bCondValid = bCond; } |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Datenbankfeld Naechster Satz |
| --------------------------------------------------------------------*/ |
| |
| class SwDBNumSetFieldType : public SwFieldType |
| { |
| public: |
| SwDBNumSetFieldType(); |
| |
| virtual SwFieldType* Copy() const; |
| }; |
| |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Datensatz mit Nummer xxx |
| Die Nummer steht in nFormat |
| ! kleiner Missbrauch |
| --------------------------------------------------------------------*/ |
| |
| class SwDBNumSetField : public SwDBNameInfField |
| { |
| String aCond; |
| String aPar2; |
| sal_Bool bCondValid; |
| |
| public: |
| SwDBNumSetField(SwDBNumSetFieldType*, const String& rCond, const String& rDBNum, const SwDBData& rDBData); |
| |
| virtual String Expand() const; |
| virtual SwField* Copy() const; |
| |
| inline sal_Bool IsCondValid() const; |
| inline void SetCondValid(sal_Bool bCond); |
| void Evaluate(SwDoc*); |
| |
| // Condition |
| virtual const String& GetPar1() const; |
| virtual void SetPar1(const String& rStr); |
| |
| // Datensatznummer |
| virtual String GetPar2() const; |
| virtual void SetPar2(const String& rStr); |
| |
| // Die Datensatznummer steht in nFormat !! |
| virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const; |
| virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ); |
| }; |
| |
| inline sal_Bool SwDBNumSetField::IsCondValid() const |
| { return bCondValid; } |
| |
| inline void SwDBNumSetField::SetCondValid(sal_Bool bCond) |
| { bCondValid = bCond; } |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Datenbankname |
| --------------------------------------------------------------------*/ |
| |
| class SwDBNameFieldType : public SwFieldType |
| { |
| SwDoc *pDoc; |
| public: |
| SwDBNameFieldType(SwDoc*); |
| |
| String Expand(sal_uLong) const; |
| virtual SwFieldType* Copy() const; |
| }; |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Datenbankfeld |
| --------------------------------------------------------------------*/ |
| |
| class SW_DLLPUBLIC SwDBNameField : public SwDBNameInfField |
| { |
| public: |
| SwDBNameField(SwDBNameFieldType*, const SwDBData& rDBData, sal_uLong nFmt = 0); |
| |
| virtual String Expand() const; |
| virtual SwField* Copy() const; |
| virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const; |
| virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ); |
| }; |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Datensatznummer |
| --------------------------------------------------------------------*/ |
| |
| class SW_DLLPUBLIC SwDBSetNumberFieldType : public SwFieldType |
| { |
| public: |
| SwDBSetNumberFieldType(); |
| |
| virtual SwFieldType* Copy() const; |
| }; |
| |
| /*-------------------------------------------------------------------- |
| Beschreibung: Datenbankfeld |
| --------------------------------------------------------------------*/ |
| |
| class SW_DLLPUBLIC SwDBSetNumberField : public SwDBNameInfField |
| { |
| long nNumber; |
| |
| public: |
| SwDBSetNumberField(SwDBSetNumberFieldType*, const SwDBData& rDBData, sal_uLong nFmt = 0); |
| |
| virtual String Expand() const; |
| virtual SwField* Copy() const; |
| void Evaluate(SwDoc*); |
| |
| inline long GetSetNumber() const; |
| inline void SetSetNumber(long nNum); |
| virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const; |
| virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ); |
| }; |
| |
| inline long SwDBSetNumberField::GetSetNumber() const |
| { return nNumber; } |
| |
| inline void SwDBSetNumberField::SetSetNumber(long nNum) |
| { nNumber = nNum; } |
| |
| |
| #endif // SW_DBFLD_HXX |