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 SD_NAVIGATOR_HXX 25 #define SD_NAVIGATOR_HXX 26 27 #include <vcl/window.hxx> 28 #include <vcl/lstbox.hxx> 29 #ifndef _TOOLBOX_HXX //autogen 30 #include <vcl/toolbox.hxx> 31 #endif 32 #include <sfx2/ctrlitem.hxx> 33 #include "sdtreelb.hxx" 34 #include "pres.hxx" 35 36 #define NAVSTATE_NONE 0x00000000 37 38 #define NAVBTN_PEN_ENABLED 0x00000010 39 #define NAVBTN_PEN_DISABLED 0x00000020 40 #define NAVBTN_PEN_CHECKED 0x00000040 41 #define NAVBTN_PEN_UNCHECKED 0x00000080 42 43 #define NAVTLB_UPDATE 0x00000100 44 45 #define NAVBTN_FIRST_ENABLED 0x00001000 46 #define NAVBTN_FIRST_DISABLED 0x00002000 47 #define NAVBTN_PREV_ENABLED 0x00004000 48 #define NAVBTN_PREV_DISABLED 0x00008000 49 50 #define NAVBTN_LAST_ENABLED 0x00010000 51 #define NAVBTN_LAST_DISABLED 0x00020000 52 #define NAVBTN_NEXT_ENABLED 0x00040000 53 #define NAVBTN_NEXT_DISABLED 0x00080000 54 55 // forward 56 namespace sd { 57 class DrawDocShell; 58 class NavigatorChildWindow; 59 class View; 60 } 61 class Menu; 62 class SdNavigatorControllerItem; 63 class SdPageNameControllerItem; 64 65 //------------------------------------------------------------------------ 66 67 class NavDocInfo 68 { 69 public: 70 NavDocInfo() { mpDocShell = NULL; } 71 72 sal_Bool HasName() { return( (sal_Bool) bName ); } 73 sal_Bool IsActive() { return( (sal_Bool) bActive ); } 74 75 void SetName( sal_Bool bOn = sal_True ) { bName = bOn; } 76 void SetActive( sal_Bool bOn = sal_True ) { bActive = bOn; } 77 78 private: 79 friend class SdNavigatorWin; 80 sal_Bool bName : 1; 81 sal_Bool bActive : 1; 82 ::sd::DrawDocShell* mpDocShell; 83 }; 84 85 //------------------------------------------------------------------------ 86 87 class SdNavigatorWin 88 : public Window 89 { 90 public: 91 typedef ::boost::function<void(void)> UpdateRequestFunctor; 92 93 /** Create a new instance of the navigator. 94 @param bUseActiveUpdate 95 When <TRUE/>, the default, then the SdNavigatorWin object 96 will make a SID_NAVIGATOR_INIT call whenever it thinks an 97 update is necessary. When <FALSE/> the navigator will 98 rely on others to trigger updates. 99 */ 100 SdNavigatorWin( 101 ::Window* pParent, 102 ::sd::NavigatorChildWindow* pChildWinContext, 103 const SdResId& rSdResId, 104 SfxBindings* pBindings, 105 const UpdateRequestFunctor& rUpdateRequest); 106 virtual ~SdNavigatorWin(); 107 108 virtual void KeyInput( const KeyEvent& rKEvt ); 109 110 void InitTreeLB( const SdDrawDocument* pDoc ); 111 void RefreshDocumentLB( const String* pDocName = NULL ); 112 113 sal_Bool InsertFile(const String& rFileName); 114 115 NavigatorDragType GetNavigatorDragType(); 116 void SetNavigatorDragType(NavigatorDragType eType) { meDragType = eType; } 117 118 protected: 119 virtual void Resize(); 120 virtual long Notify(NotifyEvent& rNEvt); 121 122 123 private: 124 friend class ::sd::NavigatorChildWindow; 125 friend class SdNavigatorControllerItem; 126 friend class SdPageNameControllerItem; 127 128 ToolBox maToolbox; 129 SdPageObjsTLB maTlbObjects; 130 ListBox maLbDocs; 131 132 ::sd::NavigatorChildWindow* mpChildWinContext; 133 Size maSize; 134 Size maMinSize; 135 // Size maFltWinSize; 136 sal_Bool mbDocImported; 137 String maDropFileName; 138 NavigatorDragType meDragType; 139 List* mpDocList; 140 SfxBindings* mpBindings; 141 SdNavigatorControllerItem* mpNavigatorCtrlItem; 142 SdPageNameControllerItem* mpPageNameCtrlItem; 143 144 ImageList maImageList; 145 ImageList maImageListH; 146 147 /** This flag controls whether all shapes or only the named shapes are 148 shown. 149 */ 150 // bool mbShowAllShapes; 151 152 sal_uInt16 GetDragTypeSdResId( NavigatorDragType eDT, sal_Bool bImage = sal_False ); 153 NavDocInfo* GetDocInfo(); 154 155 DECL_LINK( GetFocusObjectsHdl, void * ); 156 DECL_LINK( SelectToolboxHdl, void * ); 157 DECL_LINK( ClickToolboxHdl, ToolBox * ); 158 DECL_LINK( DropdownClickToolBoxHdl, ToolBox * ); 159 DECL_LINK( ClickPageHdl, void * ); 160 DECL_LINK( ClickObjectHdl, void * ); 161 DECL_LINK( SelectDocumentHdl, void * ); 162 DECL_LINK( MenuSelectHdl, Menu * ); 163 DECL_LINK( ShapeFilterCallback, Menu * ); 164 165 virtual void DataChanged( const DataChangedEvent& rDCEvt ); 166 void SetDragImage(); 167 void ApplyImageList(); 168 }; 169 170 171 172 173 /************************************************************************* 174 |* 175 |* ControllerItem fuer Navigator 176 |* 177 \************************************************************************/ 178 179 class SdNavigatorControllerItem : public SfxControllerItem 180 { 181 public: 182 SdNavigatorControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings*, 183 const SdNavigatorWin::UpdateRequestFunctor& rUpdateRequest); 184 185 protected: 186 virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, 187 const SfxPoolItem* pState ); 188 189 private: 190 SdNavigatorWin* pNavigatorWin; 191 const SdNavigatorWin::UpdateRequestFunctor maUpdateRequest; 192 }; 193 194 195 196 /************************************************************************* 197 |* 198 |* ControllerItem fuer Navigator zum Anzeigen der Seite in der TreeLB 199 |* 200 \************************************************************************/ 201 202 class SdPageNameControllerItem : public SfxControllerItem 203 { 204 public: 205 SdPageNameControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings*, 206 const SdNavigatorWin::UpdateRequestFunctor& rUpdateRequest); 207 208 protected: 209 virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, 210 const SfxPoolItem* pState ); 211 212 private: 213 SdNavigatorWin* pNavigatorWin; 214 const SdNavigatorWin::UpdateRequestFunctor maUpdateRequest; 215 }; 216 217 #endif 218