xref: /aoo4110/main/sw/inc/postithelper.hxx (revision b1cdbd2c)
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 _POSTITHELPER_HXX
24*b1cdbd2cSJim Jagielski #define _POSTITHELPER_HXX
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #include <swrect.hxx>
27*b1cdbd2cSJim Jagielski #include <fmtfld.hxx>
28*b1cdbd2cSJim Jagielski #include <redline.hxx>
29*b1cdbd2cSJim Jagielski #include <vector>
30*b1cdbd2cSJim Jagielski #include <vcl/window.hxx>
31*b1cdbd2cSJim Jagielski #include <SidebarWindowsTypes.hxx>
32*b1cdbd2cSJim Jagielski #include <svl/brdcst.hxx>
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski class SwTxtFld;
35*b1cdbd2cSJim Jagielski class SwRootFrm;
36*b1cdbd2cSJim Jagielski class SwPostIt;
37*b1cdbd2cSJim Jagielski class String;
38*b1cdbd2cSJim Jagielski class SwPostItMgr;
39*b1cdbd2cSJim Jagielski class SwEditWin;
40*b1cdbd2cSJim Jagielski namespace sw { namespace sidebarwindows {
41*b1cdbd2cSJim Jagielski     class SwSidebarWin;
42*b1cdbd2cSJim Jagielski } }
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski struct SwPosition;
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski typedef sal_Int64 SwPostItBits;
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski struct SwLayoutInfo
49*b1cdbd2cSJim Jagielski {
50*b1cdbd2cSJim Jagielski     const SwFrm* mpAnchorFrm;
51*b1cdbd2cSJim Jagielski     SwRect mPosition;
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski     // optional start of the annotation
54*b1cdbd2cSJim Jagielski     sal_uLong mnStartNodeIdx;
55*b1cdbd2cSJim Jagielski     xub_StrLen mnStartContent;
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski     SwRect mPageFrame;
58*b1cdbd2cSJim Jagielski     SwRect mPagePrtArea;
59*b1cdbd2cSJim Jagielski     unsigned long mnPageNumber;
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski     sw::sidebarwindows::SidebarPosition meSidebarPosition;
62*b1cdbd2cSJim Jagielski 
63*b1cdbd2cSJim Jagielski     sal_uInt16 mRedlineAuthor;
64*b1cdbd2cSJim Jagielski 
SwLayoutInfoSwLayoutInfo65*b1cdbd2cSJim Jagielski     SwLayoutInfo()
66*b1cdbd2cSJim Jagielski         : mpAnchorFrm(0)
67*b1cdbd2cSJim Jagielski         , mPosition()
68*b1cdbd2cSJim Jagielski         , mnStartNodeIdx( 0 )
69*b1cdbd2cSJim Jagielski         , mnStartContent( STRING_NOTFOUND )
70*b1cdbd2cSJim Jagielski         , mPageFrame()
71*b1cdbd2cSJim Jagielski         , mPagePrtArea()
72*b1cdbd2cSJim Jagielski         , mnPageNumber(1)
73*b1cdbd2cSJim Jagielski         , meSidebarPosition(sw::sidebarwindows::SIDEBAR_NONE)
74*b1cdbd2cSJim Jagielski         , mRedlineAuthor(0)
75*b1cdbd2cSJim Jagielski     {}
76*b1cdbd2cSJim Jagielski };
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski namespace SwPostItHelper
79*b1cdbd2cSJim Jagielski {
80*b1cdbd2cSJim Jagielski     enum SwLayoutStatus
81*b1cdbd2cSJim Jagielski     {
82*b1cdbd2cSJim Jagielski         INVISIBLE, VISIBLE, INSERTED, DELETED, NONE, HIDDEN
83*b1cdbd2cSJim Jagielski     };
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski     SwLayoutStatus getLayoutInfos(
86*b1cdbd2cSJim Jagielski         SwLayoutInfo& o_rInfo,
87*b1cdbd2cSJim Jagielski         const SwPosition& rAnchorPos,
88*b1cdbd2cSJim Jagielski         const SwPosition* pAnnotationStartPos = NULL );
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski     long getLayoutHeight( const SwRootFrm* pRoot );
91*b1cdbd2cSJim Jagielski     void setSidebarChanged( SwRootFrm* pRoot, bool bBrowseMode );
92*b1cdbd2cSJim Jagielski     unsigned long getPageInfo( SwRect& rPageFrm, const SwRootFrm* , const Point& );
93*b1cdbd2cSJim Jagielski }
94*b1cdbd2cSJim Jagielski 
95*b1cdbd2cSJim Jagielski class SwSidebarItem
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski public:
98*b1cdbd2cSJim Jagielski     sw::sidebarwindows::SwSidebarWin* pPostIt;
99*b1cdbd2cSJim Jagielski     bool bShow;
100*b1cdbd2cSJim Jagielski     bool bFocus;
101*b1cdbd2cSJim Jagielski 
102*b1cdbd2cSJim Jagielski     SwPostItHelper::SwLayoutStatus mLayoutStatus;
103*b1cdbd2cSJim Jagielski     SwLayoutInfo maLayoutInfo;
104*b1cdbd2cSJim Jagielski 
SwSidebarItem(const bool aShow,const bool aFocus)105*b1cdbd2cSJim Jagielski     SwSidebarItem( const bool aShow,
106*b1cdbd2cSJim Jagielski                    const bool aFocus)
107*b1cdbd2cSJim Jagielski         : pPostIt(0)
108*b1cdbd2cSJim Jagielski         , bShow(aShow)
109*b1cdbd2cSJim Jagielski         , bFocus(aFocus)
110*b1cdbd2cSJim Jagielski         , mLayoutStatus( SwPostItHelper::INVISIBLE )
111*b1cdbd2cSJim Jagielski         , maLayoutInfo()
112*b1cdbd2cSJim Jagielski     {
113*b1cdbd2cSJim Jagielski     }
114*b1cdbd2cSJim Jagielski 
~SwSidebarItem()115*b1cdbd2cSJim Jagielski     virtual ~SwSidebarItem()
116*b1cdbd2cSJim Jagielski     {
117*b1cdbd2cSJim Jagielski     }
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski     virtual SwPosition GetAnchorPosition() const = 0;
120*b1cdbd2cSJim Jagielski     virtual bool UseElement() = 0;
121*b1cdbd2cSJim Jagielski     virtual const SwFmtFld& GetFmtFld() const = 0;
122*b1cdbd2cSJim Jagielski     virtual const SfxBroadcaster* GetBroadCaster() const = 0;
123*b1cdbd2cSJim Jagielski     virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
124*b1cdbd2cSJim Jagielski                                                                 WinBits nBits,
125*b1cdbd2cSJim Jagielski                                                                 SwPostItMgr& aMgr,
126*b1cdbd2cSJim Jagielski                                                                 SwPostItBits aBits) = 0;
127*b1cdbd2cSJim Jagielski };
128*b1cdbd2cSJim Jagielski /*
129*b1cdbd2cSJim Jagielski class SwRedCommentItem: public SwSidebarItem
130*b1cdbd2cSJim Jagielski {
131*b1cdbd2cSJim Jagielski private:
132*b1cdbd2cSJim Jagielski 	SwRedline* pRedline;
133*b1cdbd2cSJim Jagielski public:
134*b1cdbd2cSJim Jagielski 
135*b1cdbd2cSJim Jagielski 	SwRedCommentItem( SwRedline* pRed, bool aShow, bool aFocus)
136*b1cdbd2cSJim Jagielski         : SwSidebarItem(aShow,aFocus),
137*b1cdbd2cSJim Jagielski 		pRedline(pRed) {}
138*b1cdbd2cSJim Jagielski 	virtual ~SwRedCommentItem() {}
139*b1cdbd2cSJim Jagielski     virtual SwPosition GetAnchorPosition() const;
140*b1cdbd2cSJim Jagielski 	virtual bool UseElement();
141*b1cdbd2cSJim Jagielski     virtual SwFmtFld* GetFmtFld() const {return 0; }
142*b1cdbd2cSJim Jagielski 	virtual SfxBroadcaster* GetBroadCaster() const { return dynamic_cast<SfxBroadcaster *> (pRedline); }
143*b1cdbd2cSJim Jagielski     virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin,
144*b1cdbd2cSJim Jagielski                                                                 WinBits nBits,
145*b1cdbd2cSJim Jagielski                                                                 SwPostItMgr& aMgr,
146*b1cdbd2cSJim Jagielski                                                                 SwPostItBits aBits);
147*b1cdbd2cSJim Jagielski };
148*b1cdbd2cSJim Jagielski */
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski class SwAnnotationItem: public SwSidebarItem
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski public:
SwAnnotationItem(SwFmtFld & rFmtFld,const bool bShow,const bool bFocus)153*b1cdbd2cSJim Jagielski     SwAnnotationItem(
154*b1cdbd2cSJim Jagielski         SwFmtFld& rFmtFld,
155*b1cdbd2cSJim Jagielski         const bool bShow,
156*b1cdbd2cSJim Jagielski         const bool bFocus)
157*b1cdbd2cSJim Jagielski         : SwSidebarItem( bShow, bFocus )
158*b1cdbd2cSJim Jagielski         , mrFmtFld( rFmtFld )
159*b1cdbd2cSJim Jagielski     {
160*b1cdbd2cSJim Jagielski     }
161*b1cdbd2cSJim Jagielski 
~SwAnnotationItem()162*b1cdbd2cSJim Jagielski     virtual ~SwAnnotationItem()
163*b1cdbd2cSJim Jagielski     {
164*b1cdbd2cSJim Jagielski     }
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski     virtual SwPosition GetAnchorPosition() const;
167*b1cdbd2cSJim Jagielski     virtual bool UseElement();
GetFmtFld() const168*b1cdbd2cSJim Jagielski     virtual const SwFmtFld& GetFmtFld() const
169*b1cdbd2cSJim Jagielski     {
170*b1cdbd2cSJim Jagielski         return mrFmtFld;
171*b1cdbd2cSJim Jagielski     }
GetBroadCaster() const172*b1cdbd2cSJim Jagielski     virtual const SfxBroadcaster* GetBroadCaster() const
173*b1cdbd2cSJim Jagielski     {
174*b1cdbd2cSJim Jagielski         return dynamic_cast<const SfxBroadcaster *> (&mrFmtFld);
175*b1cdbd2cSJim Jagielski     }
176*b1cdbd2cSJim Jagielski     virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow(
177*b1cdbd2cSJim Jagielski         SwEditWin& rEditWin,
178*b1cdbd2cSJim Jagielski         WinBits nBits,
179*b1cdbd2cSJim Jagielski         SwPostItMgr& aMgr,
180*b1cdbd2cSJim Jagielski         SwPostItBits aBits );
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski private:
183*b1cdbd2cSJim Jagielski     SwFmtFld& mrFmtFld;
184*b1cdbd2cSJim Jagielski };
185*b1cdbd2cSJim Jagielski 
186*b1cdbd2cSJim Jagielski #endif // _POSTITHELPER_HXX
187