xref: /aoo41x/main/sw/inc/reffld.hxx (revision 1d2dbeb0)
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 #ifndef SW_REFFLD_HXX
24cdf0e10cSrcweir #define SW_REFFLD_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <fldbas.hxx>
27cdf0e10cSrcweir 
28cdf0e10cSrcweir class SfxPoolItem;
29cdf0e10cSrcweir class SwDoc;
30cdf0e10cSrcweir class SwTxtNode;
31cdf0e10cSrcweir class SwTxtFld;
32cdf0e10cSrcweir 
33cdf0e10cSrcweir enum REFERENCESUBTYPE
34cdf0e10cSrcweir {
35cdf0e10cSrcweir 	REF_SETREFATTR = 0,
36cdf0e10cSrcweir 	REF_SEQUENCEFLD,
37cdf0e10cSrcweir 	REF_BOOKMARK,
38cdf0e10cSrcweir 	REF_OUTLINE,
39cdf0e10cSrcweir 	REF_FOOTNOTE,
40cdf0e10cSrcweir 	REF_ENDNOTE
41cdf0e10cSrcweir };
42cdf0e10cSrcweir 
43cdf0e10cSrcweir enum REFERENCEMARK
44cdf0e10cSrcweir {
45cdf0e10cSrcweir 	REF_BEGIN,
46cdf0e10cSrcweir 	REF_PAGE = REF_BEGIN,
47cdf0e10cSrcweir 	REF_CHAPTER,
48cdf0e10cSrcweir 	REF_CONTENT,
49cdf0e10cSrcweir 	REF_UPDOWN,
50cdf0e10cSrcweir 	REF_PAGE_PGDESC,
51cdf0e10cSrcweir 	REF_ONLYNUMBER,
52cdf0e10cSrcweir 	REF_ONLYCAPTION,
53cdf0e10cSrcweir 	REF_ONLYSEQNO,
54cdf0e10cSrcweir     // --> OD 2007-08-24 #i81002#
55cdf0e10cSrcweir     // new reference format types for referencing bookmarks and set references
56cdf0e10cSrcweir     REF_NUMBER,
57cdf0e10cSrcweir     REF_NUMBER_NO_CONTEXT,
58cdf0e10cSrcweir     REF_NUMBER_FULL_CONTEXT,
59cdf0e10cSrcweir     // <--
60cdf0e10cSrcweir 	REF_END
61cdf0e10cSrcweir };
62cdf0e10cSrcweir 
63cdf0e10cSrcweir 
64cdf0e10cSrcweir /*--------------------------------------------------------------------
65cdf0e10cSrcweir 	Beschreibung: Referenz holen
66cdf0e10cSrcweir  --------------------------------------------------------------------*/
67cdf0e10cSrcweir 
68cdf0e10cSrcweir class SwGetRefFieldType : public SwFieldType
69cdf0e10cSrcweir {
70cdf0e10cSrcweir 	SwDoc* pDoc;
71cdf0e10cSrcweir protected:
72cdf0e10cSrcweir 	// ueberlagert, um alle Ref-Felder zu updaten
73cdf0e10cSrcweir    virtual void Modify( const SfxPoolItem*, const SfxPoolItem * );
74cdf0e10cSrcweir public:
75cdf0e10cSrcweir 	SwGetRefFieldType(SwDoc* pDoc );
76cdf0e10cSrcweir 	virtual SwFieldType*    Copy() const;
77cdf0e10cSrcweir 
GetDoc() const78cdf0e10cSrcweir 	SwDoc* 					GetDoc() const { return pDoc; }
79cdf0e10cSrcweir 
80cdf0e10cSrcweir 	void MergeWithOtherDoc( SwDoc& rDestDoc );
81cdf0e10cSrcweir 
82cdf0e10cSrcweir 	static SwTxtNode* FindAnchor( SwDoc* pDoc, const String& rRefMark,
83cdf0e10cSrcweir 										sal_uInt16 nSubType, sal_uInt16 nSeqNo,
84cdf0e10cSrcweir 										sal_uInt16* pStt, sal_uInt16* pEnd = 0 );
85cdf0e10cSrcweir };
86cdf0e10cSrcweir 
87cdf0e10cSrcweir /*--------------------------------------------------------------------
88cdf0e10cSrcweir 	Beschreibung: Referenzfeld
89cdf0e10cSrcweir  --------------------------------------------------------------------*/
90cdf0e10cSrcweir 
91cdf0e10cSrcweir class SW_DLLPUBLIC SwGetRefField : public SwField
92cdf0e10cSrcweir {
93cdf0e10cSrcweir private:
94cdf0e10cSrcweir 	String sSetRefName;
95cdf0e10cSrcweir 	String sTxt;
96cdf0e10cSrcweir 	sal_uInt16 nSubType;
97cdf0e10cSrcweir 	sal_uInt16 nSeqNo;
98cdf0e10cSrcweir 
99cdf0e10cSrcweir     virtual String      Expand() const;
100cdf0e10cSrcweir     virtual SwField*    Copy() const;
101cdf0e10cSrcweir 
102cdf0e10cSrcweir     // --> OD 2007-08-24 #i81002#
103cdf0e10cSrcweir     String MakeRefNumStr( const SwTxtNode& rTxtNodeOfField,
104cdf0e10cSrcweir                           const SwTxtNode& rTxtNodeOfReferencedItem,
105cdf0e10cSrcweir                           const sal_uInt32 nRefNumFormat ) const;
106cdf0e10cSrcweir     // <--
107cdf0e10cSrcweir public:
108cdf0e10cSrcweir 	SwGetRefField( SwGetRefFieldType*, const String& rSetRef,
109cdf0e10cSrcweir 					sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uLong nFmt );
110cdf0e10cSrcweir 
111cdf0e10cSrcweir     virtual ~SwGetRefField();
112cdf0e10cSrcweir 
113cdf0e10cSrcweir     virtual String      GetFieldName() const;
114cdf0e10cSrcweir 
GetSetRefName() const115cdf0e10cSrcweir 	const String& 		GetSetRefName() const { return sSetRefName; }
116cdf0e10cSrcweir 
117cdf0e10cSrcweir     // --> OD 2007-09-06 #i81002#
118cdf0e10cSrcweir     // The <SwTxtFld> instance, which represents the text attribute for the
119cdf0e10cSrcweir     // <SwGetRefField> instance, has to be passed to the method.
120cdf0e10cSrcweir     // This <SwTxtFld> instance is needed for the reference format type REF_UPDOWN
121cdf0e10cSrcweir     // and REF_NUMBER.
122cdf0e10cSrcweir     // Note: This instance may be NULL (field in Undo/Redo). This will cause
123cdf0e10cSrcweir     // no update for these reference format types.
124cdf0e10cSrcweir     void                UpdateField( const SwTxtFld* pFldTxtAttr );
125cdf0e10cSrcweir     // <--
SetExpand(const String & rStr)126cdf0e10cSrcweir 	void 				SetExpand( const String& rStr ) { sTxt = rStr; }
127cdf0e10cSrcweir 
128cdf0e10cSrcweir 	// SubType erfragen/setzen
129cdf0e10cSrcweir 	virtual sal_uInt16 		GetSubType() const;
130cdf0e10cSrcweir 	virtual void  		SetSubType( sal_uInt16 n );
131cdf0e10cSrcweir 
132cdf0e10cSrcweir     // --> OD 2007-11-09 #i81002#
133cdf0e10cSrcweir     bool IsRefToHeadingCrossRefBookmark() const;
134cdf0e10cSrcweir     bool IsRefToNumItemCrossRefBookmark() const;
135cdf0e10cSrcweir     const SwTxtNode* GetReferencedTxtNode() const;
136cdf0e10cSrcweir     // <--
137cdf0e10cSrcweir     // --> OD 2008-01-09 #i85090#
138cdf0e10cSrcweir     String GetExpandedTxtOfReferencedTxtNode() const;
139cdf0e10cSrcweir     // <--
140cdf0e10cSrcweir 
141cdf0e10cSrcweir 	// SequenceNo erfragen/setzen (nur fuer REF_SEQUENCEFLD interressant)
GetSeqNo() const142cdf0e10cSrcweir 	sal_uInt16 				GetSeqNo() const		{ return nSeqNo; }
SetSeqNo(sal_uInt16 n)143cdf0e10cSrcweir 	void  				SetSeqNo( sal_uInt16 n ) 	{ nSeqNo = n; }
144cdf0e10cSrcweir 
145cdf0e10cSrcweir 	// Name der Referenz
146cdf0e10cSrcweir 	virtual const String& GetPar1() const;
147cdf0e10cSrcweir 	virtual void		SetPar1(const String& rStr);
148cdf0e10cSrcweir 
149cdf0e10cSrcweir 	virtual String 		GetPar2() const;
150cdf0e10cSrcweir     virtual sal_Bool        QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhichId ) const;
151cdf0e10cSrcweir     virtual sal_Bool        PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhichId );
152cdf0e10cSrcweir 
153cdf0e10cSrcweir     void                ConvertProgrammaticToUIName();
154cdf0e10cSrcweir 
155cdf0e10cSrcweir     virtual String GetDescription() const;
156cdf0e10cSrcweir };
157cdf0e10cSrcweir 
158cdf0e10cSrcweir 
159cdf0e10cSrcweir #endif // SW_REFFLD_HXX
160cdf0e10cSrcweir 
161