Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 : #ifndef INCLUDED_SVX_SOURCE_SIDEBAR_AREA_AREAPROPERTYPANEL_HXX
20 : #define INCLUDED_SVX_SOURCE_SIDEBAR_AREA_AREAPROPERTYPANEL_HXX
21 :
22 : #include "AreaTransparencyGradientPopup.hxx"
23 : #include <vcl/ctrl.hxx>
24 : #include <sfx2/sidebar/SidebarPanelBase.hxx>
25 : #include <sfx2/sidebar/ControllerItem.hxx>
26 : #include <svx/xgrad.hxx>
27 : #include <svx/itemwin.hxx>
28 : #include <svx/xfillit0.hxx>
29 : #include <svx/xflclit.hxx>
30 : #include <svx/xflgrit.hxx>
31 : #include <svx/xflhtit.hxx>
32 : #include <svx/xbtmpit.hxx>
33 : #include <svx/drawitem.hxx>
34 : #include <svx/sidebar/PanelLayout.hxx>
35 : #include <vcl/lstbox.hxx>
36 : #include <vcl/field.hxx>
37 : #include <vcl/fixed.hxx>
38 : #include <svl/intitem.hxx>
39 : #include <com/sun/star/ui/XUIElement.hpp>
40 : #include <boost/scoped_ptr.hpp>
41 :
42 :
43 : class XFillFloatTransparenceItem;
44 :
45 :
46 : namespace svx { namespace sidebar {
47 :
48 : class PopupContainer;
49 : class AreaTransparencyGradientControl;
50 :
51 : class AreaPropertyPanel
52 : : public PanelLayout,
53 : public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
54 : {
55 : public:
56 : static AreaPropertyPanel* Create(
57 : vcl::Window* pParent,
58 : const css::uno::Reference<css::frame::XFrame>& rxFrame,
59 : SfxBindings* pBindings);
60 :
61 : virtual void DataChanged(
62 : const DataChangedEvent& rEvent) SAL_OVERRIDE;
63 :
64 : virtual void NotifyItemUpdate(
65 : const sal_uInt16 nSId,
66 : const SfxItemState eState,
67 : const SfxPoolItem* pState,
68 : const bool bIsEnabled) SAL_OVERRIDE;
69 :
70 0 : SfxBindings* GetBindings() { return mpBindings;}
71 :
72 : const static sal_Int32 DEFAULT_CENTERX;
73 : const static sal_Int32 DEFAULT_CENTERY;
74 : const static sal_Int32 DEFAULT_ANGLE;
75 : const static sal_Int32 DEFAULT_STARTVALUE;
76 : const static sal_Int32 DEFAULT_ENDVALUE;
77 : const static sal_Int32 DEFAULT_BORDER;
78 :
79 : XGradient GetGradient (const XGradientStyle eStyle) const;
80 : void SetGradient (const XGradient& rGradient);
81 : sal_Int32 GetSelectedTransparencyTypeIndex (void) const;
82 :
83 : private:
84 : sal_uInt16 meLastXFS;
85 :
86 : sal_Int32 mnLastPosGradient;
87 : sal_Int32 mnLastPosHatch;
88 : sal_Int32 mnLastPosBitmap;
89 : sal_uInt16 mnLastTransSolid;
90 :
91 : XGradient maGradientLinear;
92 : XGradient maGradientAxial;
93 : XGradient maGradientRadial;
94 : XGradient maGradientElliptical;
95 : XGradient maGradientSquare;
96 : XGradient maGradientRect;
97 :
98 : //ui controls
99 : FixedText* mpColorTextFT;
100 : SvxFillTypeBox* mpLbFillType;
101 : SvxFillAttrBox* mpLbFillAttr;
102 : ToolBox* mpToolBoxColor; // for new color picker
103 : FixedText* mpTrspTextFT;
104 : ListBox* mpLBTransType;
105 : MetricField* mpMTRTransparent;
106 : ToolBox* mpBTNGradient;
107 :
108 : ::boost::scoped_ptr< XFillStyleItem > mpStyleItem;
109 : ::boost::scoped_ptr< XFillColorItem > mpColorItem;
110 : ::boost::scoped_ptr< XFillGradientItem > mpFillGradientItem;
111 : ::boost::scoped_ptr< XFillHatchItem > mpHatchItem;
112 : ::boost::scoped_ptr< XFillBitmapItem > mpBitmapItem;
113 :
114 : ::sfx2::sidebar::ControllerItem maStyleControl;
115 : ::sfx2::sidebar::ControllerItem maColorControl;
116 : ::sfx2::sidebar::ControllerItem maGradientControl;
117 : ::sfx2::sidebar::ControllerItem maHatchControl;
118 : ::sfx2::sidebar::ControllerItem maBitmapControl;
119 : ::sfx2::sidebar::ControllerItem maGradientListControl;
120 : ::sfx2::sidebar::ControllerItem maHatchListControl;
121 : ::sfx2::sidebar::ControllerItem maBitmapListControl;
122 : ::sfx2::sidebar::ControllerItem maFillTransparenceController;
123 : ::sfx2::sidebar::ControllerItem maFillFloatTransparenceController;
124 :
125 : Image maImgAxial;
126 : Image maImgElli;
127 : Image maImgQuad;
128 : Image maImgRadial;
129 : Image maImgSquare;
130 : Image maImgLinear;
131 :
132 : AreaTransparencyGradientPopup maTrGrPopup;
133 :
134 : ::boost::scoped_ptr< XFillFloatTransparenceItem > mpFloatTransparenceItem;
135 : ::boost::scoped_ptr< SfxUInt16Item > mpTransparanceItem;
136 :
137 : css::uno::Reference<css::frame::XFrame> mxFrame;
138 : SfxBindings* mpBindings;
139 :
140 : DECL_LINK(SelectFillTypeHdl, ListBox* );
141 : DECL_LINK(SelectFillAttrHdl, ListBox* );
142 : DECL_LINK(ChangeTrgrTypeHdl_Impl, void*);
143 : DECL_LINK(ModifyTransparentHdl_Impl, void*);
144 :
145 : // for transparency gradient
146 : PopupControl* CreateTransparencyGradientControl (PopupContainer* pParent);
147 : DECL_LINK( ClickTrGrHdl_Impl, ToolBox* );
148 :
149 : // constructor/destuctor
150 : AreaPropertyPanel(
151 : vcl::Window* pParent,
152 : const css::uno::Reference<css::frame::XFrame>& rxFrame,
153 : SfxBindings* pBindings);
154 : virtual ~AreaPropertyPanel(void);
155 :
156 : void SetupIcons(void);
157 : void Initialize();
158 : void Update();
159 : void ImpUpdateTransparencies();
160 : };
161 :
162 :
163 : } } // end of namespace ::svx::sidebar
164 :
165 :
166 :
167 : #endif // INCLUDED_SVX_SOURCE_SIDEBAR_AREA_AREAPROPERTYPANEL_HXX
168 :
169 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|