1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_SD_SOURCE_UI_INC_NAVIGATR_HXX
#define INCLUDED_SD_SOURCE_UI_INC_NAVIGATR_HXX
#include <vcl/window.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/toolbox.hxx>
#include <sfx2/ctrlitem.hxx>
#include "sdtreelb.hxx"
#include "pres.hxx"
#define NAVSTATE_NONE 0x00000000
#define NAVBTN_PEN_ENABLED 0x00000010
#define NAVBTN_PEN_DISABLED 0x00000020
#define NAVBTN_PEN_CHECKED 0x00000040
#define NAVBTN_PEN_UNCHECKED 0x00000080
#define NAVTLB_UPDATE 0x00000100
#define NAVBTN_FIRST_ENABLED 0x00001000
#define NAVBTN_FIRST_DISABLED 0x00002000
#define NAVBTN_PREV_ENABLED 0x00004000
#define NAVBTN_PREV_DISABLED 0x00008000
#define NAVBTN_LAST_ENABLED 0x00010000
#define NAVBTN_LAST_DISABLED 0x00020000
#define NAVBTN_NEXT_ENABLED 0x00040000
#define NAVBTN_NEXT_DISABLED 0x00080000
// forward
namespace sd {
class DrawDocShell;
class NavigatorChildWindow;
}
class Menu;
class SdNavigatorControllerItem;
class SdPageNameControllerItem;
class NavDocInfo
{
public:
NavDocInfo()
: bName(false)
, bActive(false)
, mpDocShell(NULL)
{
}
bool HasName() { return bName; }
bool IsActive() { return bActive; }
void SetName( bool bOn = true ) { bName = bOn; }
void SetActive( bool bOn = true ) { bActive = bOn; }
private:
friend class SdNavigatorWin;
bool bName : 1;
bool bActive : 1;
::sd::DrawDocShell* mpDocShell;
};
class SdNavigatorWin
: public Window
{
public:
typedef ::boost::function<void(void)> UpdateRequestFunctor;
/** Create a new instance of the navigator.
@param bUseActiveUpdate
When <TRUE/>, the default, then the SdNavigatorWin object
will make a SID_NAVIGATOR_INIT call whenever it thinks an
update is necessary. When <FALSE/> the navigator will
rely on others to trigger updates.
*/
SdNavigatorWin(
::Window* pParent,
::sd::NavigatorChildWindow* pChildWinContext,
const SdResId& rSdResId,
SfxBindings* pBindings,
const UpdateRequestFunctor& rUpdateRequest);
virtual ~SdNavigatorWin();
virtual void KeyInput( const KeyEvent& rKEvt ) SAL_OVERRIDE;
void InitTreeLB( const SdDrawDocument* pDoc );
void RefreshDocumentLB( const OUString* pDocName = NULL );
bool InsertFile(const OUString& rFileName);
NavigatorDragType GetNavigatorDragType();
void SetNavigatorDragType(NavigatorDragType eType) { meDragType = eType; }
protected:
virtual void Resize() SAL_OVERRIDE;
virtual bool Notify(NotifyEvent& rNEvt) SAL_OVERRIDE;
private:
friend class ::sd::NavigatorChildWindow;
friend class SdNavigatorControllerItem;
friend class SdPageNameControllerItem;
ToolBox maToolbox;
SdPageObjsTLB maTlbObjects;
ListBox maLbDocs;
::sd::NavigatorChildWindow* mpChildWinContext;
Size maSize;
Size maMinSize;
bool mbDocImported;
OUString maDropFileName;
NavigatorDragType meDragType;
std::vector<NavDocInfo> maDocList;
SfxBindings* mpBindings;
SdNavigatorControllerItem* mpNavigatorCtrlItem;
SdPageNameControllerItem* mpPageNameCtrlItem;
ImageList maImageList;
/** This flag controls whether all shapes or only the named shapes are
shown.
*/
// bool mbShowAllShapes;
sal_uInt16 GetDragTypeSdResId( NavigatorDragType eDT, bool bImage = false );
NavDocInfo* GetDocInfo();
DECL_LINK( GetFocusObjectsHdl, void * );
DECL_LINK( SelectToolboxHdl, void * );
DECL_LINK(ClickToolboxHdl, void *);
DECL_LINK( DropdownClickToolBoxHdl, ToolBox * );
DECL_LINK( ClickPageHdl, void * );
DECL_LINK( ClickObjectHdl, void * );
DECL_LINK( SelectDocumentHdl, void * );
DECL_LINK( MenuSelectHdl, Menu * );
DECL_LINK( ShapeFilterCallback, Menu * );
virtual void DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
void SetDragImage();
void ApplyImageList();
public:
//when object is marked , fresh the corresponding entry tree .
sd::DrawDocShell* GetDrawDocShell(const SdDrawDocument*);
void FreshTree ( const SdDrawDocument* pDoc );
void FreshEntry( );
};
/**
* ControllerItem for Navigator
*/
class SdNavigatorControllerItem : public SfxControllerItem
{
public:
SdNavigatorControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings*,
const SdNavigatorWin::UpdateRequestFunctor& rUpdateRequest);
protected:
virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState,
const SfxPoolItem* pState ) SAL_OVERRIDE;
private:
SdNavigatorWin* pNavigatorWin;
const SdNavigatorWin::UpdateRequestFunctor maUpdateRequest;
};
/**
* ControllerItem for Navigator to show the page in the TreeLB
*/
class SdPageNameControllerItem : public SfxControllerItem
{
public:
SdPageNameControllerItem( sal_uInt16, SdNavigatorWin*, SfxBindings*,
const SdNavigatorWin::UpdateRequestFunctor& rUpdateRequest);
protected:
virtual void StateChanged( sal_uInt16 nSId, SfxItemState eState,
const SfxPoolItem* pState ) SAL_OVERRIDE;
private:
SdNavigatorWin* pNavigatorWin;
const SdNavigatorWin::UpdateRequestFunctor maUpdateRequest;
};
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|