summaryrefslogtreecommitdiff
path: root/sw/inc/dbfld.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/inc/dbfld.hxx')
-rw-r--r--sw/inc/dbfld.hxx335
1 files changed, 335 insertions, 0 deletions
diff --git a/sw/inc/dbfld.hxx b/sw/inc/dbfld.hxx
new file mode 100644
index 000000000000..8273b39ce119
--- /dev/null
+++ b/sw/inc/dbfld.hxx
@@ -0,0 +1,335 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef SW_DBFLD_HXX
+#define SW_DBFLD_HXX
+
+#include "swdllapi.h"
+#include "fldbas.hxx"
+#include "swdbdata.hxx"
+
+class SwDoc;
+class SwTxtFld;
+class SwFrm;
+
+/*--------------------------------------------------------------------
+ Database field.
+ --------------------------------------------------------------------*/
+
+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 bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
+ virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
+};
+
+/*--------------------------------------------------------------------
+ Classes derived from SwFields. They overlay the expand-function.
+ Content is formated according to the format (if available).
+ --------------------------------------------------------------------*/
+
+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* );
+
+ // Current text.
+ inline void SetExpansion(const String& rStr);
+
+ virtual sal_uInt16 GetSubType() const;
+ virtual void SetSubType(sal_uInt16 nType);
+
+ virtual String GetFieldName() const;
+
+ // For calculations in expressions.
+ void ChgValue( double d, sal_Bool bVal );
+
+ // Get the evaluation via DBMgr string.
+ void Evaluate();
+
+ // Evaluation for header and footer.
+ 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; }
+
+ // Get name.
+ 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 bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
+ virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
+};
+
+inline void SwDBField::SetExpansion(const String& rStr)
+ { aContent = rStr; }
+
+// set from UpdateExpFlds (the Node-Position is known there)
+inline void SwDBField::ChgBodyTxtFlag( sal_Bool bIsInBody )
+ { bIsInBodyTxt = bIsInBody; }
+
+/*--------------------------------------------------------------------
+ Base class for all other database fields.
+ --------------------------------------------------------------------*/
+
+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);
+
+ virtual String GetFieldName() const;
+
+ virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
+ virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
+ virtual sal_uInt16 GetSubType() const;
+ virtual void SetSubType(sal_uInt16 nType);
+};
+
+/*--------------------------------------------------------------------
+ Database field next record.
+ --------------------------------------------------------------------*/
+
+class SW_DLLPUBLIC SwDBNextSetFieldType : public SwFieldType
+{
+public:
+ SwDBNextSetFieldType();
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Next data record with condition.
+ --------------------------------------------------------------------*/
+
+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 bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
+ virtual 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; }
+
+/*--------------------------------------------------------------------
+ Database field next record.
+ --------------------------------------------------------------------*/
+
+class SwDBNumSetFieldType : public SwFieldType
+{
+public:
+ SwDBNumSetFieldType();
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Data record with number xxx.
+ Number is in nFormat (bit of a misuse!)
+ --------------------------------------------------------------------*/
+
+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);
+
+ // Number of data record.
+ virtual String GetPar2() const;
+ virtual void SetPar2(const String& rStr);
+
+ // Number of data record is in nFormat!!
+ virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
+ virtual 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; }
+
+/*--------------------------------------------------------------------
+ Database name.
+ --------------------------------------------------------------------*/
+
+class SwDBNameFieldType : public SwFieldType
+{
+ SwDoc *pDoc;
+public:
+ SwDBNameFieldType(SwDoc*);
+
+ String Expand(sal_uLong) const;
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Database field.
+ --------------------------------------------------------------------*/
+
+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 bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
+ virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
+};
+
+/*--------------------------------------------------------------------
+ Number of data record.
+ --------------------------------------------------------------------*/
+
+class SW_DLLPUBLIC SwDBSetNumberFieldType : public SwFieldType
+{
+public:
+ SwDBSetNumberFieldType();
+
+ virtual SwFieldType* Copy() const;
+};
+
+/*--------------------------------------------------------------------
+ Database field.
+ --------------------------------------------------------------------*/
+
+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 bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
+ virtual 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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */