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 24*b1cdbd2cSJim Jagielski #ifndef _SIDEBARWIN_HXX 25*b1cdbd2cSJim Jagielski #define _SIDEBARWIN_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <postithelper.hxx> 28*b1cdbd2cSJim Jagielski #include <SidebarWindowsTypes.hxx> 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski #include <vcl/window.hxx> 31*b1cdbd2cSJim Jagielski #include <swrect.hxx> 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski #include <tools/datetime.hxx> 34*b1cdbd2cSJim Jagielski #include <tools/date.hxx> 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski #include <vcl/lineinfo.hxx> 37*b1cdbd2cSJim Jagielski #include <basegfx/polygon/b2dpolygon.hxx> 38*b1cdbd2cSJim Jagielski #include <editeng/editstat.hxx> 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski class SwPostItMgr; 41*b1cdbd2cSJim Jagielski class SwPostItField; 42*b1cdbd2cSJim Jagielski class OutlinerView; 43*b1cdbd2cSJim Jagielski class Outliner; 44*b1cdbd2cSJim Jagielski class ScrollBar; 45*b1cdbd2cSJim Jagielski class SwEditWin; 46*b1cdbd2cSJim Jagielski class SwView; 47*b1cdbd2cSJim Jagielski class Edit; 48*b1cdbd2cSJim Jagielski class MenuButton; 49*b1cdbd2cSJim Jagielski class SwFrm; 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski namespace sw { namespace overlay { 52*b1cdbd2cSJim Jagielski class OverlayRanges; 53*b1cdbd2cSJim Jagielski }} 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski namespace sw { namespace sidebarwindows { 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski class SidebarTxtControl; 58*b1cdbd2cSJim Jagielski class AnchorOverlayObject; 59*b1cdbd2cSJim Jagielski class ShadowOverlayObject; 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski typedef sal_Int64 SwPostItBits; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski #define PB_Preview ((SwPostItBits)0x00000001) 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski class SwSidebarWin : public Window 67*b1cdbd2cSJim Jagielski { 68*b1cdbd2cSJim Jagielski public: 69*b1cdbd2cSJim Jagielski SwSidebarWin( SwEditWin& rEditWin, 70*b1cdbd2cSJim Jagielski WinBits nBits, 71*b1cdbd2cSJim Jagielski SwPostItMgr& aMgr, 72*b1cdbd2cSJim Jagielski SwPostItBits aBits, 73*b1cdbd2cSJim Jagielski SwSidebarItem& rSidebarItem ); 74*b1cdbd2cSJim Jagielski virtual ~SwSidebarWin(); 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski void SetSize( const Size& rNewSize ); 77*b1cdbd2cSJim Jagielski void SetPosSizePixelRect( long nX, 78*b1cdbd2cSJim Jagielski long nY, 79*b1cdbd2cSJim Jagielski long nWidth, 80*b1cdbd2cSJim Jagielski long nHeight, 81*b1cdbd2cSJim Jagielski const SwRect& aAnchorRect, 82*b1cdbd2cSJim Jagielski const long PageBorder); 83*b1cdbd2cSJim Jagielski void SetPosAndSize(); 84*b1cdbd2cSJim Jagielski void TranslateTopPosition(const long aAmount); 85*b1cdbd2cSJim Jagielski virtual void CheckMetaText(); 86*b1cdbd2cSJim Jagielski GetAnchorPos()87*b1cdbd2cSJim Jagielski inline Point GetAnchorPos() { return mAnchorRect.Pos(); } 88*b1cdbd2cSJim Jagielski SwEditWin* EditWin(); 89*b1cdbd2cSJim Jagielski GetOutlinerView()90*b1cdbd2cSJim Jagielski inline OutlinerView* GetOutlinerView() { return mpOutlinerView;} 91*b1cdbd2cSJim Jagielski bool HasScrollbar() const; 92*b1cdbd2cSJim Jagielski bool IsScrollbarVisible() const; Scrollbar()93*b1cdbd2cSJim Jagielski inline ScrollBar* Scrollbar() { return mpVScrollbar; } Anchor()94*b1cdbd2cSJim Jagielski inline ::sw::sidebarwindows::AnchorOverlayObject* Anchor() { return mpAnchor;} Shadow()95*b1cdbd2cSJim Jagielski inline ::sw::sidebarwindows::ShadowOverlayObject* Shadow() { return mpShadow;} TextRange()96*b1cdbd2cSJim Jagielski inline ::sw::overlay::OverlayRanges* TextRange() { return mpTextRangeOverlay;} 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski long GetPostItTextHeight(); 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski void SwitchToPostIt(sal_uInt16 aDirection); 101*b1cdbd2cSJim Jagielski virtual void SwitchToFieldPos(); 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski virtual sal_uInt32 MoveCaret() = 0; 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski virtual void UpdateData() = 0; 106*b1cdbd2cSJim Jagielski virtual void SetPostItText() = 0; 107*b1cdbd2cSJim Jagielski virtual void Delete(); 108*b1cdbd2cSJim Jagielski virtual void GotoPos() = 0; 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski virtual String GetAuthor() = 0; 111*b1cdbd2cSJim Jagielski virtual Date GetDate() = 0; 112*b1cdbd2cSJim Jagielski virtual Time GetTime() = 0; 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski void ExecuteCommand(sal_uInt16 nSlot); 115*b1cdbd2cSJim Jagielski void InitControls(); 116*b1cdbd2cSJim Jagielski void HidePostIt(); 117*b1cdbd2cSJim Jagielski void DoResize(); 118*b1cdbd2cSJim Jagielski void ResizeIfNeccessary(long aOldHeight, long aNewHeight); 119*b1cdbd2cSJim Jagielski void SetScrollbar(); 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski void SetVirtualPosSize( const Point& aPoint, const Size& aSize); VirtualPos()122*b1cdbd2cSJim Jagielski const Point VirtualPos() { return mPosSize.TopLeft(); } VirtualSize()123*b1cdbd2cSJim Jagielski const Size VirtualSize() { return mPosSize.GetSize(); } 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski void ShowAnchorOnly(const Point &aPoint); 126*b1cdbd2cSJim Jagielski void ShowNote(); 127*b1cdbd2cSJim Jagielski void HideNote(); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski void ResetAttributes(); 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski void SetSidebarPosition(sw::sidebarwindows::SidebarPosition eSidebarPosition); 132*b1cdbd2cSJim Jagielski void SetReadonly(sal_Bool bSet); IsReadOnly()133*b1cdbd2cSJim Jagielski sal_Bool IsReadOnly() 134*b1cdbd2cSJim Jagielski { 135*b1cdbd2cSJim Jagielski return mbReadonly; 136*b1cdbd2cSJim Jagielski } IsPreview()137*b1cdbd2cSJim Jagielski bool IsPreview() 138*b1cdbd2cSJim Jagielski { 139*b1cdbd2cSJim Jagielski return nFlags & PB_Preview; 140*b1cdbd2cSJim Jagielski } 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski void SetColor(Color aColorDark,Color aColorLight, Color aColorAnchor); ColorAnchor()143*b1cdbd2cSJim Jagielski const Color& ColorAnchor() { return mColorAnchor; } ColorDark()144*b1cdbd2cSJim Jagielski const Color& ColorDark() { return mColorDark; } ColorLight()145*b1cdbd2cSJim Jagielski const Color& ColorLight() { return mColorLight; } 146*b1cdbd2cSJim Jagielski void Rescale(); 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski void SetViewState(::sw::sidebarwindows::ViewState bViewState); 149*b1cdbd2cSJim Jagielski IsFollow()150*b1cdbd2cSJim Jagielski bool IsFollow() { return mbIsFollow; } SetFollow(bool bIsFollow)151*b1cdbd2cSJim Jagielski void SetFollow( bool bIsFollow) { mbIsFollow = bIsFollow; }; 152*b1cdbd2cSJim Jagielski virtual bool CalcFollow() = 0; 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielski sal_Int32 GetMetaHeight(); 155*b1cdbd2cSJim Jagielski sal_Int32 GetMinimumSizeWithMeta(); 156*b1cdbd2cSJim Jagielski sal_Int32 GetMinimumSizeWithoutMeta(); 157*b1cdbd2cSJim Jagielski sal_Int32 GetMetaButtonAreaWidth(); 158*b1cdbd2cSJim Jagielski sal_Int32 GetScrollbarWidth(); 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski void SetSpellChecking(); 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski void ToggleInsMode(); 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski virtual void ActivatePostIt(); 165*b1cdbd2cSJim Jagielski virtual void DeactivatePostIt(); 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski void SetChangeTracking( const SwPostItHelper::SwLayoutStatus aStatus, 168*b1cdbd2cSJim Jagielski const Color& aColor); GetLayoutStatus()169*b1cdbd2cSJim Jagielski SwPostItHelper::SwLayoutStatus GetLayoutStatus() { return mLayoutStatus; } GetChangeColor()170*b1cdbd2cSJim Jagielski Color GetChangeColor() { return mChangeColor; } 171*b1cdbd2cSJim Jagielski IsProtected()172*b1cdbd2cSJim Jagielski virtual bool IsProtected() 173*b1cdbd2cSJim Jagielski { 174*b1cdbd2cSJim Jagielski return mbReadonly; 175*b1cdbd2cSJim Jagielski } 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski DECL_LINK( WindowEventListener, VclSimpleEvent* ); IsMouseOverSidebarWin() const178*b1cdbd2cSJim Jagielski inline bool IsMouseOverSidebarWin() const { return mbMouseOver; } 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski void SetLanguage(const SvxLanguageItem aNewItem); 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski void ChangeSidebarItem( SwSidebarItem& rSidebarItem ); 183*b1cdbd2cSJim Jagielski virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible(); 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski protected: 186*b1cdbd2cSJim Jagielski virtual void DataChanged( const DataChangedEvent& aEvent); 187*b1cdbd2cSJim Jagielski virtual void LoseFocus(); 188*b1cdbd2cSJim Jagielski virtual void Paint( const Rectangle& rRect); 189*b1cdbd2cSJim Jagielski virtual void GetFocus(); 190*b1cdbd2cSJim Jagielski virtual MenuButton* CreateMenuButton() = 0; 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski void SetSizePixel( const Size& rNewSize ); 193*b1cdbd2cSJim Jagielski SfxItemSet DefaultItem(); 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski DECL_LINK(ModifyHdl, void*); 196*b1cdbd2cSJim Jagielski DECL_LINK(ScrollHdl, ScrollBar*); 197*b1cdbd2cSJim Jagielski DECL_LINK(DeleteHdl, void*); 198*b1cdbd2cSJim Jagielski DocView()199*b1cdbd2cSJim Jagielski inline SwView& DocView() { return mrView;} Mgr()200*b1cdbd2cSJim Jagielski inline SwPostItMgr& Mgr() { return mrMgr; } Engine()201*b1cdbd2cSJim Jagielski inline Outliner* Engine() { return mpOutliner;} 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski private: 204*b1cdbd2cSJim Jagielski SwSidebarWin* GetTopReplyNote(); 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski virtual SvxLanguageItem GetLanguage(void); 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski SwPostItMgr& mrMgr; 209*b1cdbd2cSJim Jagielski SwView& mrView; 210*b1cdbd2cSJim Jagielski const SwPostItBits nFlags; 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski sal_uLong mnEventId; 213*b1cdbd2cSJim Jagielski 214*b1cdbd2cSJim Jagielski OutlinerView* mpOutlinerView; 215*b1cdbd2cSJim Jagielski Outliner* mpOutliner; 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski sw::sidebarwindows::SidebarTxtControl* mpSidebarTxtControl; 218*b1cdbd2cSJim Jagielski ScrollBar* mpVScrollbar; 219*b1cdbd2cSJim Jagielski Edit* mpMetadataAuthor; 220*b1cdbd2cSJim Jagielski Edit* mpMetadataDate; 221*b1cdbd2cSJim Jagielski MenuButton* mpMenuButton; 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski sw::sidebarwindows::AnchorOverlayObject* mpAnchor; 224*b1cdbd2cSJim Jagielski sw::sidebarwindows::ShadowOverlayObject* mpShadow; 225*b1cdbd2cSJim Jagielski sw::overlay::OverlayRanges* mpTextRangeOverlay; 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski Color mColorAnchor; 228*b1cdbd2cSJim Jagielski Color mColorDark; 229*b1cdbd2cSJim Jagielski Color mColorLight; 230*b1cdbd2cSJim Jagielski Color mChangeColor; 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski sw::sidebarwindows::SidebarPosition meSidebarPosition; 233*b1cdbd2cSJim Jagielski 234*b1cdbd2cSJim Jagielski Rectangle mPosSize; 235*b1cdbd2cSJim Jagielski SwRect mAnchorRect; 236*b1cdbd2cSJim Jagielski long mPageBorder; 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski bool mbMouseOver; 239*b1cdbd2cSJim Jagielski SwPostItHelper::SwLayoutStatus mLayoutStatus; 240*b1cdbd2cSJim Jagielski 241*b1cdbd2cSJim Jagielski bool mbReadonly; 242*b1cdbd2cSJim Jagielski bool mbIsFollow; 243*b1cdbd2cSJim Jagielski 244*b1cdbd2cSJim Jagielski SwSidebarItem& mrSidebarItem; 245*b1cdbd2cSJim Jagielski const SwFrm* mpAnchorFrm; 246*b1cdbd2cSJim Jagielski }; 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski } } // eof namespace sw::sidebarwindows 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski 251*b1cdbd2cSJim Jagielski // implementation for change tracking comments, fully functional, but not yet used 252*b1cdbd2cSJim Jagielski /* 253*b1cdbd2cSJim Jagielski class SwRedComment : public SwSidebarWin 254*b1cdbd2cSJim Jagielski { 255*b1cdbd2cSJim Jagielski private: 256*b1cdbd2cSJim Jagielski SwRedline* pRedline; 257*b1cdbd2cSJim Jagielski 258*b1cdbd2cSJim Jagielski protected: 259*b1cdbd2cSJim Jagielski virtual void MouseButtonDown( const MouseEvent& rMEvt ); 260*b1cdbd2cSJim Jagielski public: 261*b1cdbd2cSJim Jagielski SwRedComment( Window* pParent, WinBits nBits,SwPostItMgr* aMgr,SwPostItBits aBits,SwRedline* pRed); 262*b1cdbd2cSJim Jagielski virtual ~SwRedComment() {}; 263*b1cdbd2cSJim Jagielski 264*b1cdbd2cSJim Jagielski virtual void UpdateData(); 265*b1cdbd2cSJim Jagielski virtual void SetPostItText(); 266*b1cdbd2cSJim Jagielski virtual void Delete(); 267*b1cdbd2cSJim Jagielski virtual void GotoPos(); 268*b1cdbd2cSJim Jagielski virtual void SetPopup(); 269*b1cdbd2cSJim Jagielski virtual void ActivatePostIt(); 270*b1cdbd2cSJim Jagielski virtual void DeactivatePostIt(); 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski virtual String GetAuthor(); 273*b1cdbd2cSJim Jagielski virtual Date GetDate(); 274*b1cdbd2cSJim Jagielski virtual Time GetTime(); 275*b1cdbd2cSJim Jagielski 276*b1cdbd2cSJim Jagielski virtual bool IsProtected(); 277*b1cdbd2cSJim Jagielski }; 278*b1cdbd2cSJim Jagielski */ 279*b1cdbd2cSJim Jagielski 280*b1cdbd2cSJim Jagielski #endif 281