1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef SW_REFFLD_HXX 24*b1cdbd2cSJim Jagielski #define SW_REFFLD_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <fldbas.hxx> 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski class SfxPoolItem; 29*b1cdbd2cSJim Jagielski class SwDoc; 30*b1cdbd2cSJim Jagielski class SwTxtNode; 31*b1cdbd2cSJim Jagielski class SwTxtFld; 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski enum REFERENCESUBTYPE 34*b1cdbd2cSJim Jagielski { 35*b1cdbd2cSJim Jagielski REF_SETREFATTR = 0, 36*b1cdbd2cSJim Jagielski REF_SEQUENCEFLD, 37*b1cdbd2cSJim Jagielski REF_BOOKMARK, 38*b1cdbd2cSJim Jagielski REF_OUTLINE, 39*b1cdbd2cSJim Jagielski REF_FOOTNOTE, 40*b1cdbd2cSJim Jagielski REF_ENDNOTE 41*b1cdbd2cSJim Jagielski }; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski enum REFERENCEMARK 44*b1cdbd2cSJim Jagielski { 45*b1cdbd2cSJim Jagielski REF_BEGIN, 46*b1cdbd2cSJim Jagielski REF_PAGE = REF_BEGIN, 47*b1cdbd2cSJim Jagielski REF_CHAPTER, 48*b1cdbd2cSJim Jagielski REF_CONTENT, 49*b1cdbd2cSJim Jagielski REF_UPDOWN, 50*b1cdbd2cSJim Jagielski REF_PAGE_PGDESC, 51*b1cdbd2cSJim Jagielski REF_ONLYNUMBER, 52*b1cdbd2cSJim Jagielski REF_ONLYCAPTION, 53*b1cdbd2cSJim Jagielski REF_ONLYSEQNO, 54*b1cdbd2cSJim Jagielski // --> OD 2007-08-24 #i81002# 55*b1cdbd2cSJim Jagielski // new reference format types for referencing bookmarks and set references 56*b1cdbd2cSJim Jagielski REF_NUMBER, 57*b1cdbd2cSJim Jagielski REF_NUMBER_NO_CONTEXT, 58*b1cdbd2cSJim Jagielski REF_NUMBER_FULL_CONTEXT, 59*b1cdbd2cSJim Jagielski // <-- 60*b1cdbd2cSJim Jagielski REF_END 61*b1cdbd2cSJim Jagielski }; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski /*-------------------------------------------------------------------- 65*b1cdbd2cSJim Jagielski Beschreibung: Referenz holen 66*b1cdbd2cSJim Jagielski --------------------------------------------------------------------*/ 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski class SwGetRefFieldType : public SwFieldType 69*b1cdbd2cSJim Jagielski { 70*b1cdbd2cSJim Jagielski SwDoc* pDoc; 71*b1cdbd2cSJim Jagielski protected: 72*b1cdbd2cSJim Jagielski // ueberlagert, um alle Ref-Felder zu updaten 73*b1cdbd2cSJim Jagielski virtual void Modify( const SfxPoolItem*, const SfxPoolItem * ); 74*b1cdbd2cSJim Jagielski public: 75*b1cdbd2cSJim Jagielski SwGetRefFieldType(SwDoc* pDoc ); 76*b1cdbd2cSJim Jagielski virtual SwFieldType* Copy() const; 77*b1cdbd2cSJim Jagielski GetDoc() const78*b1cdbd2cSJim Jagielski SwDoc* GetDoc() const { return pDoc; } 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski void MergeWithOtherDoc( SwDoc& rDestDoc ); 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski static SwTxtNode* FindAnchor( SwDoc* pDoc, const String& rRefMark, 83*b1cdbd2cSJim Jagielski sal_uInt16 nSubType, sal_uInt16 nSeqNo, 84*b1cdbd2cSJim Jagielski sal_uInt16* pStt, sal_uInt16* pEnd = 0 ); 85*b1cdbd2cSJim Jagielski }; 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski /*-------------------------------------------------------------------- 88*b1cdbd2cSJim Jagielski Beschreibung: Referenzfeld 89*b1cdbd2cSJim Jagielski --------------------------------------------------------------------*/ 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski class SW_DLLPUBLIC SwGetRefField : public SwField 92*b1cdbd2cSJim Jagielski { 93*b1cdbd2cSJim Jagielski private: 94*b1cdbd2cSJim Jagielski String sSetRefName; 95*b1cdbd2cSJim Jagielski String sTxt; 96*b1cdbd2cSJim Jagielski sal_uInt16 nSubType; 97*b1cdbd2cSJim Jagielski sal_uInt16 nSeqNo; 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski virtual String Expand() const; 100*b1cdbd2cSJim Jagielski virtual SwField* Copy() const; 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski // --> OD 2007-08-24 #i81002# 103*b1cdbd2cSJim Jagielski String MakeRefNumStr( const SwTxtNode& rTxtNodeOfField, 104*b1cdbd2cSJim Jagielski const SwTxtNode& rTxtNodeOfReferencedItem, 105*b1cdbd2cSJim Jagielski const sal_uInt32 nRefNumFormat ) const; 106*b1cdbd2cSJim Jagielski // <-- 107*b1cdbd2cSJim Jagielski public: 108*b1cdbd2cSJim Jagielski SwGetRefField( SwGetRefFieldType*, const String& rSetRef, 109*b1cdbd2cSJim Jagielski sal_uInt16 nSubType, sal_uInt16 nSeqNo, sal_uLong nFmt ); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski virtual ~SwGetRefField(); 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski virtual String GetFieldName() const; 114*b1cdbd2cSJim Jagielski GetSetRefName() const115*b1cdbd2cSJim Jagielski const String& GetSetRefName() const { return sSetRefName; } 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski // --> OD 2007-09-06 #i81002# 118*b1cdbd2cSJim Jagielski // The <SwTxtFld> instance, which represents the text attribute for the 119*b1cdbd2cSJim Jagielski // <SwGetRefField> instance, has to be passed to the method. 120*b1cdbd2cSJim Jagielski // This <SwTxtFld> instance is needed for the reference format type REF_UPDOWN 121*b1cdbd2cSJim Jagielski // and REF_NUMBER. 122*b1cdbd2cSJim Jagielski // Note: This instance may be NULL (field in Undo/Redo). This will cause 123*b1cdbd2cSJim Jagielski // no update for these reference format types. 124*b1cdbd2cSJim Jagielski void UpdateField( const SwTxtFld* pFldTxtAttr ); 125*b1cdbd2cSJim Jagielski // <-- SetExpand(const String & rStr)126*b1cdbd2cSJim Jagielski void SetExpand( const String& rStr ) { sTxt = rStr; } 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski // SubType erfragen/setzen 129*b1cdbd2cSJim Jagielski virtual sal_uInt16 GetSubType() const; 130*b1cdbd2cSJim Jagielski virtual void SetSubType( sal_uInt16 n ); 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski // --> OD 2007-11-09 #i81002# 133*b1cdbd2cSJim Jagielski bool IsRefToHeadingCrossRefBookmark() const; 134*b1cdbd2cSJim Jagielski bool IsRefToNumItemCrossRefBookmark() const; 135*b1cdbd2cSJim Jagielski const SwTxtNode* GetReferencedTxtNode() const; 136*b1cdbd2cSJim Jagielski // <-- 137*b1cdbd2cSJim Jagielski // --> OD 2008-01-09 #i85090# 138*b1cdbd2cSJim Jagielski String GetExpandedTxtOfReferencedTxtNode() const; 139*b1cdbd2cSJim Jagielski // <-- 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski // SequenceNo erfragen/setzen (nur fuer REF_SEQUENCEFLD interressant) GetSeqNo() const142*b1cdbd2cSJim Jagielski sal_uInt16 GetSeqNo() const { return nSeqNo; } SetSeqNo(sal_uInt16 n)143*b1cdbd2cSJim Jagielski void SetSeqNo( sal_uInt16 n ) { nSeqNo = n; } 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski // Name der Referenz 146*b1cdbd2cSJim Jagielski virtual const String& GetPar1() const; 147*b1cdbd2cSJim Jagielski virtual void SetPar1(const String& rStr); 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski virtual String GetPar2() const; 150*b1cdbd2cSJim Jagielski virtual sal_Bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhichId ) const; 151*b1cdbd2cSJim Jagielski virtual sal_Bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhichId ); 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski void ConvertProgrammaticToUIName(); 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski virtual String GetDescription() const; 156*b1cdbd2cSJim Jagielski }; 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski #endif // SW_REFFLD_HXX 160*b1cdbd2cSJim Jagielski 161