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