1*1d2dbeb0SAndrew Rist /************************************************************** 2*1d2dbeb0SAndrew Rist * 3*1d2dbeb0SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*1d2dbeb0SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*1d2dbeb0SAndrew Rist * distributed with this work for additional information 6*1d2dbeb0SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*1d2dbeb0SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*1d2dbeb0SAndrew Rist * "License"); you may not use this file except in compliance 9*1d2dbeb0SAndrew Rist * with the License. You may obtain a copy of the License at 10*1d2dbeb0SAndrew Rist * 11*1d2dbeb0SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*1d2dbeb0SAndrew Rist * 13*1d2dbeb0SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*1d2dbeb0SAndrew Rist * software distributed under the License is distributed on an 15*1d2dbeb0SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*1d2dbeb0SAndrew Rist * KIND, either express or implied. See the License for the 17*1d2dbeb0SAndrew Rist * specific language governing permissions and limitations 18*1d2dbeb0SAndrew Rist * under the License. 19*1d2dbeb0SAndrew Rist * 20*1d2dbeb0SAndrew Rist *************************************************************/ 21*1d2dbeb0SAndrew Rist 22*1d2dbeb0SAndrew 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; 52cdf0e10cSrcweir SwRect mPageFrame; 53cdf0e10cSrcweir SwRect mPagePrtArea; 54cdf0e10cSrcweir unsigned long mnPageNumber; 55cdf0e10cSrcweir sw::sidebarwindows::SidebarPosition meSidebarPosition; 56cdf0e10cSrcweir sal_uInt16 mRedlineAuthor; 57cdf0e10cSrcweir 58cdf0e10cSrcweir SwLayoutInfo() 59cdf0e10cSrcweir : mpAnchorFrm(0) 60cdf0e10cSrcweir , mPosition() 61cdf0e10cSrcweir , mPageFrame() 62cdf0e10cSrcweir , mPagePrtArea() 63cdf0e10cSrcweir , mnPageNumber(1) 64cdf0e10cSrcweir , meSidebarPosition(sw::sidebarwindows::SIDEBAR_NONE) 65cdf0e10cSrcweir , mRedlineAuthor(0) 66cdf0e10cSrcweir {} 67cdf0e10cSrcweir }; 68cdf0e10cSrcweir 69cdf0e10cSrcweir namespace SwPostItHelper 70cdf0e10cSrcweir { 71cdf0e10cSrcweir enum SwLayoutStatus 72cdf0e10cSrcweir { 73cdf0e10cSrcweir INVISIBLE, VISIBLE, INSERTED, DELETED, NONE, HIDDEN 74cdf0e10cSrcweir }; 75cdf0e10cSrcweir 76cdf0e10cSrcweir SwLayoutStatus getLayoutInfos( std::vector< SwLayoutInfo >&, SwPosition& ); 77cdf0e10cSrcweir long getLayoutHeight( const SwRootFrm* pRoot ); 78cdf0e10cSrcweir void setSidebarChanged( SwRootFrm* pRoot, bool bBrowseMode ); 79cdf0e10cSrcweir unsigned long getPageInfo( SwRect& rPageFrm, const SwRootFrm* , const Point& ); 80cdf0e10cSrcweir } 81cdf0e10cSrcweir 82cdf0e10cSrcweir class SwSidebarItem 83cdf0e10cSrcweir { 84cdf0e10cSrcweir public: 85cdf0e10cSrcweir sw::sidebarwindows::SwSidebarWin* pPostIt; 86cdf0e10cSrcweir bool bShow; 87cdf0e10cSrcweir bool bFocus; 88cdf0e10cSrcweir 89cdf0e10cSrcweir SwPostItHelper::SwLayoutStatus mLayoutStatus; 90cdf0e10cSrcweir SwLayoutInfo maLayoutInfo; 91cdf0e10cSrcweir 92cdf0e10cSrcweir SwSidebarItem( const bool aShow, 93cdf0e10cSrcweir const bool aFocus) 94cdf0e10cSrcweir : pPostIt(0) 95cdf0e10cSrcweir , bShow(aShow) 96cdf0e10cSrcweir , bFocus(aFocus) 97cdf0e10cSrcweir , mLayoutStatus( SwPostItHelper::INVISIBLE ) 98cdf0e10cSrcweir , maLayoutInfo() 99cdf0e10cSrcweir {} 100cdf0e10cSrcweir virtual ~SwSidebarItem(){} 101cdf0e10cSrcweir virtual SwPosition GetAnchorPosition() const = 0; 102cdf0e10cSrcweir virtual bool UseElement() = 0; 103cdf0e10cSrcweir virtual SwFmtFld* GetFmtFld() const = 0; 104cdf0e10cSrcweir virtual SfxBroadcaster* GetBroadCaster() const = 0; 105cdf0e10cSrcweir virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin, 106cdf0e10cSrcweir WinBits nBits, 107cdf0e10cSrcweir SwPostItMgr& aMgr, 108cdf0e10cSrcweir SwPostItBits aBits) = 0; 109cdf0e10cSrcweir }; 110cdf0e10cSrcweir /* 111cdf0e10cSrcweir class SwRedCommentItem: public SwSidebarItem 112cdf0e10cSrcweir { 113cdf0e10cSrcweir private: 114cdf0e10cSrcweir SwRedline* pRedline; 115cdf0e10cSrcweir public: 116cdf0e10cSrcweir 117cdf0e10cSrcweir SwRedCommentItem( SwRedline* pRed, bool aShow, bool aFocus) 118cdf0e10cSrcweir : SwSidebarItem(aShow,aFocus), 119cdf0e10cSrcweir pRedline(pRed) {} 120cdf0e10cSrcweir virtual ~SwRedCommentItem() {} 121cdf0e10cSrcweir virtual SwPosition GetAnchorPosition() const; 122cdf0e10cSrcweir virtual bool UseElement(); 123cdf0e10cSrcweir virtual SwFmtFld* GetFmtFld() const {return 0; } 124cdf0e10cSrcweir virtual SfxBroadcaster* GetBroadCaster() const { return dynamic_cast<SfxBroadcaster *> (pRedline); } 125cdf0e10cSrcweir virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin, 126cdf0e10cSrcweir WinBits nBits, 127cdf0e10cSrcweir SwPostItMgr& aMgr, 128cdf0e10cSrcweir SwPostItBits aBits); 129cdf0e10cSrcweir }; 130cdf0e10cSrcweir */ 131cdf0e10cSrcweir 132cdf0e10cSrcweir class SwAnnotationItem: public SwSidebarItem 133cdf0e10cSrcweir { 134cdf0e10cSrcweir private: 135cdf0e10cSrcweir SwFmtFld* pFmtFld; 136cdf0e10cSrcweir 137cdf0e10cSrcweir public: 138cdf0e10cSrcweir SwAnnotationItem( SwFmtFld* p, 139cdf0e10cSrcweir const bool aShow, 140cdf0e10cSrcweir const bool aFocus) 141cdf0e10cSrcweir : SwSidebarItem( aShow, aFocus ) 142cdf0e10cSrcweir , pFmtFld(p) 143cdf0e10cSrcweir {} 144cdf0e10cSrcweir virtual ~SwAnnotationItem() {} 145cdf0e10cSrcweir virtual SwPosition GetAnchorPosition() const; 146cdf0e10cSrcweir virtual bool UseElement(); 147cdf0e10cSrcweir virtual SwFmtFld* GetFmtFld() const {return pFmtFld;} 148cdf0e10cSrcweir virtual SfxBroadcaster* GetBroadCaster() const { return dynamic_cast<SfxBroadcaster *> (pFmtFld); } 149cdf0e10cSrcweir virtual sw::sidebarwindows::SwSidebarWin* GetSidebarWindow( SwEditWin& rEditWin, 150cdf0e10cSrcweir WinBits nBits, 151cdf0e10cSrcweir SwPostItMgr& aMgr, 152cdf0e10cSrcweir SwPostItBits aBits); 153cdf0e10cSrcweir }; 154cdf0e10cSrcweir 155cdf0e10cSrcweir #endif // _POSTITHELPER_HXX 156