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 SdNavigatorWin( 92 ::Window* pParent, 93 ::sd::NavigatorChildWindow* pChildWinContext, 94 const SdResId& rSdResId, 95 SfxBindings* pBindings ); 96 virtual ~SdNavigatorWin(); 97 98 virtual void KeyInput( const KeyEvent& rKEvt ); 99 100 void InitTreeLB( const SdDrawDocument* pDoc ); 101 void RefreshDocumentLB( const String* pDocName = NULL ); 102 103 sal_Bool InsertFile(const String& rFileName); 104 105 NavigatorDragType GetNavigatorDragType(); 106 void SetNavigatorDragType(NavigatorDragType eType) { meDragType = eType; } 107 108 protected: 109 virtual void Resize(); 110 virtual long Notify(NotifyEvent& rNEvt); 111 112 113 private: 114 friend class ::sd::NavigatorChildWindow; 115 friend class SdNavigatorControllerItem; 116 friend class SdPageNameControllerItem; 117 118 ToolBox maToolbox; 119 SdPageObjsTLB maTlbObjects; 120 ListBox maLbDocs; 121 122 ::sd::NavigatorChildWindow* mpChildWinContext; 123 Size maSize; 124 Size maMinSize; 125 // Size maFltWinSize; 126 sal_Bool mbDocImported; 127 String maDropFileName; 128 NavigatorDragType meDragType; 129 List* mpDocList; 130 SfxBindings* mpBindings; 131 SdNavigatorControllerItem* mpNavigatorCtrlItem; 132 SdPageNameControllerItem* mpPageNameCtrlItem; 133 134 ImageList maImageList; 135 ImageList maImageListH; 136 137 /** This flag controls whether all shapes or only the named shapes are 138 shown. 139 */ 140 bool mbShowAllShapes; 141 142 sal_uInt16 GetDragTypeSdResId( NavigatorDragType eDT, sal_Bool bImage = sal_False ); 143 NavDocInfo* GetDocInfo(); 144 145 DECL_LINK( GetFocusObjectsHdl, void * ); 146 DECL_LINK( SelectToolboxHdl, void * ); 147 DECL_LINK( ClickToolboxHdl, ToolBox * ); 148 DECL_LINK( DropdownClickToolBoxHdl, ToolBox * ); 149 DECL_LINK( ClickPageHdl, void * ); 150 DECL_LINK( ClickObjectHdl, void * ); 151 DECL_LINK( SelectDocumentHdl, void * ); 152 DECL_LINK( MenuSelectHdl, Menu * ); 153 DECL_LINK( ShapeFilterCallback, Menu * ); 154 155 virtual void DataChanged( const DataChangedEvent& rDCEvt ); 156 void SetDragImage(); 157 void ApplyImageList(); 158 }; 159 160 161 162 163 /************************************************************************* 164 |* 165 |* ControllerItem fuer Navigator 166 |* 167 \************************************************************************/ 168 169 class SdNavigatorControllerItem : public SfxControllerItem 170 { 171 public: 172 SdNavigatorControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings* ); 173 174 protected: 175 virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, 176 const SfxPoolItem* pState ); 177 178 private: 179 SdNavigatorWin* pNavigatorWin; 180 }; 181 182 183 184 /************************************************************************* 185 |* 186 |* ControllerItem fuer Navigator zum Anzeigen der Seite in der TreeLB 187 |* 188 \************************************************************************/ 189 190 class SdPageNameControllerItem : public SfxControllerItem 191 { 192 public: 193 SdPageNameControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings* ); 194 195 protected: 196 virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState, 197 const SfxPoolItem* pState ); 198 199 private: 200 SdNavigatorWin* pNavigatorWin; 201 }; 202 203 #endif 204