1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #ifndef _FMTFLD_HXX 28 #define _FMTFLD_HXX 29 30 #include <list> 31 #include <svl/poolitem.hxx> 32 #include <svl/brdcst.hxx> 33 #include <svl/smplhint.hxx> 34 35 #include "swdllapi.h" 36 #include <calbck.hxx> 37 38 class SwField; 39 class SwTxtFld; 40 class SwView; 41 class SwFieldType; 42 43 // ATT_FLD *********************************** 44 class SW_DLLPUBLIC SwFmtFld : public SfxPoolItem, public SwClient, public SfxBroadcaster 45 { 46 friend class SwTxtFld; 47 friend void _InitCore(); 48 49 SwField *pField; 50 SwTxtFld* pTxtAttr; // mein TextAttribut 51 52 SwFmtFld(); // das default-Attibut 53 54 // geschuetzter CopyCtor 55 // @@@ copy construction allowed, but copy assignment is not? @@@ 56 SwFmtFld& operator=(const SwFmtFld& rFld); 57 58 protected: 59 virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew); 60 virtual void SwClientNotify( const SwModify& rModify, const SfxHint& rHint ); 61 62 public: 63 TYPEINFO(); 64 65 // single argument constructors shall be explicit. 66 explicit SwFmtFld( const SwField &rFld ); 67 68 // @@@ copy construction allowed, but copy assignment is not? @@@ 69 SwFmtFld( const SwFmtFld& rAttr ); 70 71 virtual ~SwFmtFld(); 72 73 // "pure virtual Methoden" vom SfxPoolItem 74 virtual int operator==( const SfxPoolItem& ) const; 75 virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const; 76 77 virtual sal_Bool GetInfo( SfxPoolItem& rInfo ) const; 78 79 const SwField *GetFld() const { return pField; } 80 SwField *GetFld() { return pField; } 81 82 // #111840# 83 /** 84 Sets current field. 85 86 @param pField new field 87 88 @attention The current field will be destroyed before setting the new field. 89 */ 90 void SetFld(SwField * pField); 91 92 const SwTxtFld *GetTxtFld() const { return pTxtAttr; } 93 SwTxtFld *GetTxtFld() { return pTxtAttr; } 94 95 void RegisterToFieldType( SwFieldType& ); 96 sal_Bool IsFldInDoc() const; 97 sal_Bool IsProtect() const; 98 }; 99 100 class SW_DLLPUBLIC SwFmtFldHint : public SfxHint 101 { 102 #define SWFMTFLD_INSERTED 1 103 #define SWFMTFLD_REMOVED 2 104 #define SWFMTFLD_FOCUS 3 105 #define SWFMTFLD_CHANGED 4 106 #define SWFMTFLD_LANGUAGE 5 107 108 const SwFmtFld* pFld; 109 sal_Int16 nWhich; 110 const SwView* pView; 111 112 public: 113 SwFmtFldHint( const SwFmtFld* p, sal_Int16 n, const SwView* pV = 0) 114 : pFld(p) 115 , nWhich(n) 116 , pView(pV) 117 {} 118 119 TYPEINFO(); 120 const SwFmtFld* GetField() const { return pFld; } 121 sal_Int16 Which() const { return nWhich; } 122 const SwView* GetView() const { return pView; } 123 }; 124 125 #endif 126