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