xref: /trunk/main/sw/inc/fmtfld.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
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