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