diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:15:01 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:15:01 +0000 |
commit | 7b0b5cdfeed656b279bc32cd929630d5fc25878b (patch) | |
tree | 5b89fb8497d7329d26c43f109bb014c54ffb0e8c /sw/inc/fldbas.hxx | |
parent | d791366863cf9659a01b171ce0e727bfe2f28cdf (diff) |
initial import
Diffstat (limited to 'sw/inc/fldbas.hxx')
-rw-r--r-- | sw/inc/fldbas.hxx | 522 |
1 files changed, 522 insertions, 0 deletions
diff --git a/sw/inc/fldbas.hxx b/sw/inc/fldbas.hxx new file mode 100644 index 000000000000..a60f82c18798 --- /dev/null +++ b/sw/inc/fldbas.hxx @@ -0,0 +1,522 @@ +/************************************************************************* + * + * $RCSfile: fldbas.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (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.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ +#ifndef _FLDBAS_HXX +#define _FLDBAS_HXX + +#ifndef FIELDIDS_ONLY // SWG-Testreader!! + +#ifndef _LANG_HXX //autogen +#include <tools/lang.hxx> +#endif +#ifndef _DEBUG_HXX //autogen +#include <tools/debug.hxx> +#endif +#ifndef _STRING_HXX //autogen +#include <tools/string.hxx> +#endif +#include "calbck.hxx" + +#ifndef _COM_SUN_STAR_UNO_ANY_HXX_ +#include <com/sun/star/uno/Any.hxx> +#endif + +class SwDoc; +class Date; +class Time; +class _SetGetExpFlds; +class SwEditShell; +class SvStringsDtor; +namespace com{namespace star { namespace sun {namespace uno{ class Any;}}}} +class SvNumberFormatter; + +#endif // FIELDIDS_ONLY + +/*-------------------------------------------------------------------- + Beschreibung: die ID's fuer die Feldtypen + --------------------------------------------------------------------*/ + +enum RES_FIELDS +{ +// Fuer die alten Dokumente muessen die Field-Which IDS erhalten bleiben !!!! + RES_FIELDS_BEGIN, + RES_DBFLD = RES_FIELDS_BEGIN, + RES_USERFLD, + RES_FILENAMEFLD, + RES_DBNAMEFLD, + RES_DATEFLD, + RES_TIMEFLD, + RES_PAGENUMBERFLD, + RES_AUTHORFLD, + RES_CHAPTERFLD, + RES_DOCSTATFLD, + RES_GETEXPFLD, + RES_SETEXPFLD, + RES_GETREFFLD, + RES_HIDDENTXTFLD, + RES_POSTITFLD, + RES_FIXDATEFLD, + RES_FIXTIMEFLD, + RES_REGFLD, + RES_VARREGFLD, + RES_SETREFFLD, + RES_INPUTFLD, + RES_MACROFLD, + RES_DDEFLD, + RES_TABLEFLD, + RES_HIDDENPARAFLD, + RES_DOCINFOFLD, + RES_TEMPLNAMEFLD, + RES_DBNEXTSETFLD, + RES_DBNUMSETFLD, + RES_DBSETNUMBERFLD, + RES_EXTUSERFLD, + RES_REFPAGESETFLD, + RES_REFPAGEGETFLD, + RES_INTERNETFLD, + RES_JUMPEDITFLD, + RES_SCRIPTFLD, + RES_DATETIMEFLD, + RES_AUTHORITY, //Table of authorities + RES_FIELDS_END +}; + +/*-------------------------------------------------------------------- + Beschreibung: Liste der FieldTypes am UI + --------------------------------------------------------------------*/ + +enum SwFldTypesEnum +{ + TYP_BEGIN, + TYP_DATEFLD = TYP_BEGIN, // 0 + TYP_TIMEFLD, + TYP_FILENAMEFLD, + TYP_DBNAMEFLD, + TYP_CHAPTERFLD, + TYP_PAGENUMBERFLD, + TYP_DOCSTATFLD, + TYP_AUTHORFLD, + TYP_SETFLD, + TYP_GETFLD, + TYP_FORMELFLD, // 10 + TYP_HIDDENTXTFLD, + TYP_SETREFFLD, + TYP_GETREFFLD, + TYP_DDEFLD, + TYP_MACROFLD, + TYP_INPUTFLD, + TYP_HIDDENPARAFLD, + TYP_DOCINFOFLD, + TYP_DBFLD, + TYP_USERFLD, // 20 + TYP_POSTITFLD, + TYP_TEMPLNAMEFLD, + TYP_SEQFLD, + TYP_DBNEXTSETFLD, + TYP_DBNUMSETFLD, + TYP_DBSETNUMBERFLD, + TYP_CONDTXTFLD, + TYP_NEXTPAGEFLD, + TYP_PREVPAGEFLD, + TYP_EXTUSERFLD, // 30 + TYP_FIXDATEFLD, + TYP_FIXTIMEFLD, + TYP_SETINPFLD, + TYP_USRINPFLD, + TYP_SETREFPAGEFLD, + TYP_GETREFPAGEFLD, + TYP_INTERNETFLD, + TYP_JUMPEDITFLD, + TYP_SCRIPTFLD, // 40 + TYP_AUTHORITY, + TYP_END +}; + + +enum SwFileNameFormat +{ + FF_BEGIN, + FF_NAME = FF_BEGIN, + FF_PATHNAME, + FF_PATH, + FF_NAME_NOEXT, + FF_UI_NAME, + FF_UI_RANGE, + FF_END, + FF_FIXED = 0x8000 +}; + +enum SwVarFormat +{ + VVF_CMD = 0x0010, // Kommando anzeigen + VVF_INVISIBLE = 0x0040, // unsichtbar + VVF_XXP = 0x0400, // 1234% + VVF_XX_XXP = 0x0800, // 1.234,56% + VVF_CLEAR = 0x000f, + +// ab hier neue Formate + VVF_SYS = 0x2000, //Zahlenformat aus der Systemeinstellung + VVF_X = 0x2100, // 1234 + VVF_X_X = 0x2200, // 1234,5 + VVF_X_XX = 0x2300, // 1245,56 + VVF_XX_X = 0x2400, // 1.234,5 + VVF_XX_XX = 0x2500, // 1.234,56 + VVF_XX_XXX = 0x2600, // 1.234,567 + VVF_SYS_CUR = 0x2700, // Whrungsformat aus der Systemeinstellung + VVF_CUR_X = 0x2800, // DM 1234 + VVF_CUR_XX_XX = 0x2900, // DM 1234,56 DM 1234,00 + VVF_CUR_XX_X0 = 0x2a00, // DM 1234,56 DM 1234,-- + VVF_X_CUR = 0x2b00, // 1234 DM + VVF_XX_XX_CUR = 0x2c00, // 1234,56 DM 1234,00 DM + VVF_XX_X0_CUR = 0x2d00, // 1234,56 DM 1234,-- DM +// Kompatibilitaet: + VF_CMD = VVF_CMD, + VF_INVISIBLE = VVF_INVISIBLE, + VF_XXP = VVF_XXP, + VF_XX_XXP = VVF_XX_XXP, + VF_VISIBLE = VVF_SYS, + VF_XX = VVF_X, + VF_XX_XX = VVF_XX_XX, + VF_XX_XX_CUR = VVF_SYS_CUR, + VF_CLEAR = VVF_CLEAR + +}; + +enum SwGetSetExpType +{ + GSE_STRING = 0x0001, // String + GSE_EXPR = 0x0002, // Expression + GSE_INP = 0x0004, // InputField + GSE_SEQ = 0x0008, // Sequence + GSE_FORMULA = 0x0010 // Formel +}; + +enum SwExtendedSubType +{ + SUB_CMD = 0x0100, // Kommando anzeigen + SUB_INVISIBLE = 0x0200, // unsichtbar + SUB_OWN_FMT = 0x0400 // SwDBField: Uebernimmt Formatierung nicht + // aus Datenbank +}; + +enum SwInputFieldSubType +{ + INP_TXT = 0x01, + INP_USR = 0x02, + INP_VAR = 0x03 +}; + + +enum SwUserType +{ + UF_STRING = 0x01, + UF_EXPR = 0x02 +}; + +enum SwDateTimeSubType +{ + FIXEDFLD = 1, + DATEFLD = 2, + TIMEFLD = 4 +}; + +#ifndef FIELDIDS_ONLY // SWG-Testreader!! + + +extern USHORT __FAR_DATA aTypeTab[]; + +/*-------------------------------------------------------------------- + Beschreibung: Allgemeine Tools + --------------------------------------------------------------------*/ + +String GetResult(double nVal, ULONG nNumFmt, USHORT nLang = LANGUAGE_SYSTEM); +void SetErrorStr(const String& rStr); +//String ExpandDate(const Date& rDate, ULONG nFmt, USHORT nLang); +//String ExpandTime(const Time& rTime, ULONG nFmt, USHORT nLang); +String FormatNumber(USHORT nNum, ULONG nFormat); + +/*-------------------------------------------------------------------- + Beschreibung: Instanzen von SwFields und Abgeleiteten kommen 0-n mal vor. + Zu jeder Klasse SwFields existiert + 1 Instanz der zugehoerigen Typenklasse + Basisklasse aller Feldtypen ist SwFieldType + --------------------------------------------------------------------*/ +class SwFldNames; + +DBG_NAMEEX(SwFieldType); + +class SwFieldType : public SwModify +{ + USHORT nWhich; + + friend void _FinitUI(); // um den Pointer zu loeschen! + static SvStringsDtor* pFldNames; + + static void _GetFldName(); // legt die FldNames an, fldmgr.cxx! +protected: + SwFieldType( USHORT nWhichId ); + +public: + +#ifndef PRODUCT + virtual ~SwFieldType(); +#endif + static const String& GetTypeStr( USHORT nTypeId ); + + // nur in abgeleiteten Klassen + virtual const String& GetName() const; + virtual SwFieldType* Copy() const = 0; + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); + + USHORT Which() const { return nWhich; } + + inline void UpdateFlds() const; + + static inline SvStringsDtor* GetFldNames(); +}; + +inline void SwFieldType::UpdateFlds() const +{ + ((SwFieldType*)this)->Modify( 0, 0 ); +} + +/*-------------------------------------------------------------------- + Beschreibung: Basisklasse aller Felder. + Ueber Which wird der Typ des Feldes abgefragt. + Ueber Expand() wird der expandierte Inhalt + des Feldes in Erfahrung gebracht. + --------------------------------------------------------------------*/ + +class SwField +{ + USHORT nLang; // Immer ueber SetLanguage aendern! + ULONG nFormat; + + SwFieldType* pType; +protected: + void SetFormat(ULONG nSet) {nFormat = nSet;} + + SwField(SwFieldType* pTyp, ULONG nFmt = 0, USHORT nLang = LANGUAGE_SYSTEM); +public: + virtual ~SwField(); + + // Typ feststellen + inline SwFieldType* GetTyp() const; + + // neuen Typ setzen (wird fuer das Kopieren zwischen Dokumenten benutzt) + virtual SwFieldType* ChgTyp( SwFieldType* ); + + // Expandierung fuer die Anzeige + virtual String Expand() const = 0; + + // liefert den Namen oder den Inhalt + virtual String GetCntnt(BOOL bName = FALSE) const; + virtual SwField* Copy() const = 0; + + // ResId + USHORT Which() const +#ifdef PRODUCT + { return pType->Which(); } +#else + ; // in fldbas.cxx implementiert +#endif + + // TYP_ID + USHORT GetTypeId() const; + static USHORT GetResId(USHORT nTypeId, BOOL& bAmbigous); + virtual USHORT GetSubType() const; + virtual void SetSubType(USHORT); + + // Sprache an der Feldposition + inline USHORT GetLanguage() const; + virtual void SetLanguage(USHORT nLng); + + // Parameter fuer Dialog und BASIC erfragen + inline ULONG GetFormat() const; + virtual const String& GetPar1() const; + virtual String GetPar2() const; + + virtual String GetFormula() const; + + virtual void ChangeFormat(ULONG n); + virtual void SetPar1(const String& rStr); + virtual void SetPar2(const String& rStr); + + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); + // hat das Feld eine Action auf dem ClickHandler ? (z.B. INetFelder,..) + FASTBOOL HasClickHdl() const; + // ist es ein Fix-Feld? + FASTBOOL IsFixed() const; +}; + +inline SwFieldType* SwField::GetTyp() const + { return pType; } + +inline ULONG SwField::GetFormat() const + { return nFormat; } + +inline USHORT SwField::GetLanguage() const + { return nLang; } + +/*-------------------------------------------------------------------- + Beschreibung: Felder mit Values, die ueber der Numberformatter + formatiert werden muessen + --------------------------------------------------------------------*/ + +class SwValueFieldType : public SwFieldType +{ + SwDoc* pDoc; + BOOL bUseFormat; // Numberformatter verwenden + +protected: + SwValueFieldType( SwDoc* pDocPtr, USHORT nWhichId ); + SwValueFieldType( const SwValueFieldType& rTyp ); + +public: + inline SwDoc* GetDoc() const { return pDoc; } + inline void SetDoc(SwDoc* pNewDoc) { pDoc = pNewDoc; } + + inline BOOL UseFormat() const { return bUseFormat; } + inline void EnableFormat(BOOL bFormat = TRUE) { bUseFormat = bFormat; } + + String ExpandValue(const double& rVal, ULONG nFmt, USHORT nLng=0) const; + void DoubleToString(String &rValue, const double &rVal, LanguageType eLng) const; + void DoubleToString(String &rValue, const double &rVal, ULONG nFmt) const; +}; + +class SwValueField : public SwField +{ + double fValue; +// String sExpand; + +protected: + SwValueField( SwValueFieldType* pFldType, ULONG nFmt = 0, USHORT nLang = LANGUAGE_SYSTEM, const double fVal = 0.0 ); + SwValueField( const SwValueField& rFld ); + +public: + virtual SwFieldType* ChgTyp( SwFieldType* ); + virtual void SetLanguage(USHORT nLng); +// os: wozu war das denn da? +// virtual void ChangeFormat(ULONG n); + + inline SwDoc* GetDoc() const { return ((SwValueFieldType*)GetTyp())->GetDoc(); } + + virtual double GetValue() const; + virtual void SetValue( const double& rVal ); + + inline String ExpandValue(const double& rVal, ULONG nFmt, USHORT nLng=0) const + { return ((SwValueFieldType*)GetTyp())->ExpandValue(rVal, nFmt, nLng); } + + static ULONG GetSystemFormat(SvNumberFormatter* pFormatter, ULONG nFmt); +}; + +class SwFormulaField : public SwValueField +{ + String sFormula; + +protected: + SwFormulaField( SwValueFieldType* pFldType, ULONG nFmt = 0, const double fVal = 0.0 ); + SwFormulaField( const SwFormulaField& rFld ); + +public: + virtual String GetFormula() const; + void SetFormula(const String& rStr); + + void SetExpandedFormula(const String& rStr); + String GetExpandedFormula() const; + +}; + + +/*-------------------------------------------------------------------- + Beschreibung: Sortierung von Felder nach der Position + --------------------------------------------------------------------*/ +class SwFieldList +{ +public: + SwFieldList(SwEditShell* pShell); + ~SwFieldList(); + + // Felder eines bestimmten Typen aufnehmen + void InsertFields(USHORT nTypeId, const String* pName=0); + + USHORT Count() const; + + SwField* GetLastField() const; + SwField* GetNextField() const; + +private: + SwEditShell* pSh; + _SetGetExpFlds* pSrtLst; +}; + +inline SvStringsDtor* SwFieldType::GetFldNames() +{ + if( !SwFieldType::pFldNames ) + SwFieldType::_GetFldName(); + return SwFieldType::pFldNames; +} + +#endif // FIELDIDS_ONLY + + +#endif // _FLDBAS_HXX |