xref: /aoo41x/main/sw/inc/postithelper.hxx (revision dec99bbd)
11d2dbeb0SAndrew Rist /**************************************************************
21d2dbeb0SAndrew Rist  *
31d2dbeb0SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
41d2dbeb0SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
51d2dbeb0SAndrew Rist  * distributed with this work for additional information
61d2dbeb0SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
71d2dbeb0SAndrew Rist  * to you under the Apache License, Version 2.0 (the
81d2dbeb0SAndrew Rist  * "License"); you may not use this file except in compliance
91d2dbeb0SAndrew Rist  * with the License.  You may obtain a copy of the License at
101d2dbeb0SAndrew Rist  *
111d2dbeb0SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
121d2dbeb0SAndrew Rist  *
131d2dbeb0SAndrew Rist  * Unless required by applicable law or agreed to in writing,
141d2dbeb0SAndrew Rist  * software distributed under the License is distributed on an
151d2dbeb0SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
161d2dbeb0SAndrew Rist  * KIND, either express or implied.  See the License for the
171d2dbeb0SAndrew Rist  * specific language governing permissions and limitations
181d2dbeb0SAndrew Rist  * under the License.
191d2dbeb0SAndrew Rist  *
201d2dbeb0SAndrew Rist  *************************************************************/
211d2dbeb0SAndrew Rist 
221d2dbeb0SAndrew Rist 
23cdf0e10cSrcweir #ifndef _POSTITHELPER_HXX
24cdf0e10cSrcweir #define _POSTITHELPER_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <swrect.hxx>
27cdf0e10cSrcweir #include <fmtfld.hxx>
28cdf0e10cSrcweir #include <redline.hxx>
29cdf0e10cSrcweir #include <vector>
30cdf0e10cSrcweir #include <vcl/window.hxx>
31cdf0e10cSrcweir #include <SidebarWindowsTypes.hxx>
32cdf0e10cSrcweir #include <svl/brdcst.hxx>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir class SwTxtFld;
35cdf0e10cSrcweir class SwRootFrm;
36cdf0e10cSrcweir class SwPostIt;
37cdf0e10cSrcweir class String;
38cdf0e10cSrcweir class SwPostItMgr;
39cdf0e10cSrcweir class SwEditWin;
40cdf0e10cSrcweir namespace sw { namespace sidebarwindows {
41cdf0e10cSrcweir     class SwSidebarWin;
42cdf0e10cSrcweir } }
43cdf0e10cSrcweir 
44cdf0e10cSrcweir struct SwPosition;
45cdf0e10cSrcweir 
46cdf0e10cSrcweir typedef sal_Int64 SwPostItBits;
47cdf0e10cSrcweir 
48cdf0e10cSrcweir struct SwLayoutInfo
49cdf0e10cSrcweir {
50cdf0e10cSrcweir     const SwFrm* mpAnchorFrm;
51cdf0e10cSrcweir     SwRect mPosition;
52*dec99bbdSOliver-Rainer Wittmann 
53*dec99bbdSOliver-Rainer Wittmann     // optional start of the annotation
54*dec99bbdSOliver-Rainer Wittmann     sal_uLong mnStartNodeIdx;
55*dec99bbdSOliver-Rainer Wittmann     xub_StrLen mnStartContent;
56*dec99bbdSOliver-Rainer Wittmann 
57cdf0e10cSrcweir     SwRect mPageFrame;
58cdf0e10cSrcweir     SwRect mPagePrtArea;
59cdf0e10cSrcweir     unsigned long mnPageNumber;
60*dec99bbdSOliver-Rainer Wittmann 
61cdf0e10cSrcweir     sw::sidebarwindows::SidebarPosition meSidebarPosition;
62*dec99bbdSOliver-Rainer Wittmann 
63*dec99bbdSOliver-Rainer Wittmann     sal_uInt16 mRedlineAuthor;
64cdf0e10cSrcweir 
SwLayoutInfoSwLayoutInfo65cdf0e10cSrcweir     SwLayoutInfo()
66cdf0e10cSrcweir         : mpAnchorFrm(0)
67cdf0e10cSrcweir         , mPosition()
68*dec99bbdSOliver-Rainer Wittmann         , mnStartNodeIdx( 0 )
69*dec99bbdSOliver-Rainer Wittmann         , mnStartContent( STRING_NOTFOUND )
70cdf0e10cSrcweir         , mPageFrame()
71cdf0e10cSrcweir         , mPagePrtArea()
72cdf0e10cSrcweir         , mnPageNumber(1)
73cdf0e10cSrcweir         , meSidebarPosition(sw::sidebarwindows::SIDEBAR_NONE)
74cdf0e10cSrcweir         , mRedlineAuthor(0)
75cdf0e10cSrcweir     {}
76cdf0e10cSrcweir };
77cdf0e10cSrcweir 
78cdf0e10cSrcweir namespace SwPostItHelper
79cdf0e10cSrcweir {
80cdf0e10cSrcweir     enum SwLayoutStatus
81cdf0e10cSrcweir     {
82cdf0e10cSrcweir         INVISIBLE, VISIBLE, INSERTED, DELETED, NONE, HIDDEN
83cdf0e10cSrcweir     };
84cdf0e10cSrcweir 
85*dec99bbdSOliver-Rainer Wittmann     SwLayoutStatus getLayoutInfos(
86*dec99bbdSOliver-Rainer Wittmann         SwLayoutInfo& o_rInfo,
87*dec99bbdSOliver-Rainer Wittmann         const SwPosition& rAnchorPos,
88*dec99bbdSOliver-Rainer Wittmann         const SwPosition* pAnnotationStartPos = NULL );
89*dec99bbdSOliver-Rainer Wittmann 
90cdf0e10cSrcweir     long getLayoutHeight( const SwRootFrm* pRoot );
91cdf0e10cSrcweir     void setSidebarChanged( SwRootFrm* pRoot, bool bBrowseMode );
92cdf0e10cSrcweir     unsigned long getPageInfo( SwRect& rPageFrm, const SwRootFrm* , const Point& );
93cdf0e10cSrcweir }
94cdf0e10cSrcweir 
95cdf0e10cSrcweir class SwSidebarItem
96cdf0e10cSrcweir {
97cdf0e10cSrcweir public:
98cdf0e10cSrcweir     sw::sidebarwindows::SwSidebarWin* pPostIt;
99cdf0e10cSrcweir     bool bShow;
100cdf0e10cSrcweir     bool bFocus;
101cdf0e10cSrcweir 
102cdf0e10cSrcweir     SwPostItHelper::SwLayoutStatus mLayoutStatus;
103cdf0e10cSrcweir     SwLayoutInfo maLayoutInfo;
104cdf0e10cSrcweir 
SwSidebarItem(const bool aShow,const bool aFocus)105cdf0e10cSrcweir     SwSidebarItem( const bool aShow,
106cdf0e10cSrcweir                    const bool aFocus)
107cdf0e10cSrcweir         : pPostIt(0)
108cdf0e10cSrcweir         , bShow(aShow)
109cdf0e10cSrcweir         , bFocus(aFocus)
110cdf0e10cSrcweir         , mLayoutStatus( SwPostItHelper::INVISIBLE )
111cdf0e10cSrcweir         , maLayoutInfo()
112*dec99bbdSOliver-Rainer Wittmann     {
113*dec99bbdSOliver-Rainer Wittmann     }
114*dec99bbdSOliver-Rainer Wittmann 
~SwSidebarItem()115*dec99bbdSOliver-Rainer Wittmann     virtual ~SwSidebarItem()
116*dec99bbdSOliver-Rainer Wittmann     {
117*dec99bbdSOliver-Rainer Wittmann     }
118*dec99bbdSOliver-Rainer Wittmann 
119cdf0e10cSrcweir     virtual SwPosition GetAnchorPosition() const = 0;
120*dec99bbdSOliver-Rainer Wittmann     virtual bool UseElement() = 0;
121*dec99bbdSOliver-Rainer Wittmann     virtual const SwFmtFld& GetFmtFld() const = 0;
122*dec99bbdSOliver-Rainer Wittmann     virtual const SfxBroadcaster* GetBroadCaster() const = 0;
123cdf0e10cSrcweir     virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
124cdf0e10cSrcweir                                                                 WinBits nBits,
125cdf0e10cSrcweir                                                                 SwPostItMgr& aMgr,
126cdf0e10cSrcweir                                                                 SwPostItBits aBits) = 0;
127cdf0e10cSrcweir };
128cdf0e10cSrcweir /*
129cdf0e10cSrcweir class SwRedCommentItem: public SwSidebarItem
130cdf0e10cSrcweir {
131cdf0e10cSrcweir private:
132cdf0e10cSrcweir 	SwRedline* pRedline;
133cdf0e10cSrcweir public:
134cdf0e10cSrcweir 
135cdf0e10cSrcweir 	SwRedCommentItem( SwRedline* pRed, bool aShow, bool aFocus)
136cdf0e10cSrcweir         : SwSidebarItem(aShow,aFocus),
137cdf0e10cSrcweir 		pRedline(pRed) {}
138cdf0e10cSrcweir 	virtual ~SwRedCommentItem() {}
139cdf0e10cSrcweir     virtual SwPosition GetAnchorPosition() const;
140cdf0e10cSrcweir 	virtual bool UseElement();
141cdf0e10cSrcweir     virtual SwFmtFld* GetFmtFld() const {return 0; }
142cdf0e10cSrcweir 	virtual SfxBroadcaster* GetBroadCaster() const { return dynamic_cast<SfxBroadcaster *> (pRedline); }
143cdf0e10cSrcweir     virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
144cdf0e10cSrcweir                                                                 WinBits nBits,
145cdf0e10cSrcweir                                                                 SwPostItMgr& aMgr,
146cdf0e10cSrcweir                                                                 SwPostItBits aBits);
147cdf0e10cSrcweir };
148cdf0e10cSrcweir */
149cdf0e10cSrcweir 
150cdf0e10cSrcweir class SwAnnotationItem: public SwSidebarItem
151cdf0e10cSrcweir {
152*dec99bbdSOliver-Rainer Wittmann public:
SwAnnotationItem(SwFmtFld & rFmtFld,const bool bShow,const bool bFocus)153*dec99bbdSOliver-Rainer Wittmann     SwAnnotationItem(
154*dec99bbdSOliver-Rainer Wittmann         SwFmtFld& rFmtFld,
155*dec99bbdSOliver-Rainer Wittmann         const bool bShow,
156*dec99bbdSOliver-Rainer Wittmann         const bool bFocus)
157*dec99bbdSOliver-Rainer Wittmann         : SwSidebarItem( bShow, bFocus )
158*dec99bbdSOliver-Rainer Wittmann         , mrFmtFld( rFmtFld )
159*dec99bbdSOliver-Rainer Wittmann     {
160*dec99bbdSOliver-Rainer Wittmann     }
161*dec99bbdSOliver-Rainer Wittmann 
~SwAnnotationItem()162*dec99bbdSOliver-Rainer Wittmann     virtual ~SwAnnotationItem()
163*dec99bbdSOliver-Rainer Wittmann     {
164*dec99bbdSOliver-Rainer Wittmann     }
165*dec99bbdSOliver-Rainer Wittmann 
166cdf0e10cSrcweir     virtual SwPosition GetAnchorPosition() const;
167*dec99bbdSOliver-Rainer Wittmann     virtual bool UseElement();
GetFmtFld() const168*dec99bbdSOliver-Rainer Wittmann     virtual const SwFmtFld& GetFmtFld() const
169*dec99bbdSOliver-Rainer Wittmann     {
170*dec99bbdSOliver-Rainer Wittmann         return mrFmtFld;
171*dec99bbdSOliver-Rainer Wittmann     }
GetBroadCaster() const172*dec99bbdSOliver-Rainer Wittmann     virtual const SfxBroadcaster* GetBroadCaster() const
173*dec99bbdSOliver-Rainer Wittmann     {
174*dec99bbdSOliver-Rainer Wittmann         return dynamic_cast<const SfxBroadcaster *> (&mrFmtFld);
175*dec99bbdSOliver-Rainer Wittmann     }
176*dec99bbdSOliver-Rainer Wittmann     virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow(
177*dec99bbdSOliver-Rainer Wittmann         SwEditWin& rEditWin,
178*dec99bbdSOliver-Rainer Wittmann         WinBits nBits,
179*dec99bbdSOliver-Rainer Wittmann         SwPostItMgr& aMgr,
180*dec99bbdSOliver-Rainer Wittmann         SwPostItBits aBits );
181*dec99bbdSOliver-Rainer Wittmann 
182*dec99bbdSOliver-Rainer Wittmann private:
183*dec99bbdSOliver-Rainer Wittmann     SwFmtFld& mrFmtFld;
184cdf0e10cSrcweir };
185cdf0e10cSrcweir 
186cdf0e10cSrcweir #endif // _POSTITHELPER_HXX
187