1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski #include <string> // HACK: prevent conflict between STLPORT and Workshop headers
31*b1cdbd2cSJim Jagielski #include <tools/shl.hxx>
32*b1cdbd2cSJim Jagielski #include <svl/poolitem.hxx>
33*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
34*b1cdbd2cSJim Jagielski #include <vcl/toolbox.hxx>
35*b1cdbd2cSJim Jagielski #include <vcl/bmpacc.hxx>
36*b1cdbd2cSJim Jagielski #include <svtools/valueset.hxx>
37*b1cdbd2cSJim Jagielski #include <svtools/ctrlbox.hxx>
38*b1cdbd2cSJim Jagielski #include <svl/style.hxx>
39*b1cdbd2cSJim Jagielski #include <svtools/ctrltool.hxx>
40*b1cdbd2cSJim Jagielski #include <svl/stritem.hxx>
41*b1cdbd2cSJim Jagielski #include <unotools/pathoptions.hxx>
42*b1cdbd2cSJim Jagielski #include <sfx2/tplpitem.hxx>
43*b1cdbd2cSJim Jagielski #include <sfx2/dispatch.hxx>
44*b1cdbd2cSJim Jagielski #include <sfx2/viewsh.hxx>
45*b1cdbd2cSJim Jagielski #include <sfx2/objsh.hxx>
46*b1cdbd2cSJim Jagielski #include <sfx2/docfac.hxx>
47*b1cdbd2cSJim Jagielski #include <sfx2/templdlg.hxx>
48*b1cdbd2cSJim Jagielski #include <svl/isethint.hxx>
49*b1cdbd2cSJim Jagielski #include <sfx2/querystatus.hxx>
50*b1cdbd2cSJim Jagielski #include <sfx2/sfxstatuslistener.hxx>
51*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx>
52*b1cdbd2cSJim Jagielski #include <sfx2/childwin.hxx>
53*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
54*b1cdbd2cSJim Jagielski #include <unotools/fontoptions.hxx>
55*b1cdbd2cSJim Jagielski #include <vcl/mnemonic.hxx>
56*b1cdbd2cSJim Jagielski
57*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
58*b1cdbd2cSJim Jagielski #include <svl/smplhint.hxx>
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski #define _SVX_TBCONTRL_CXX
61*b1cdbd2cSJim Jagielski #include <svtools/colorcfg.hxx>
62*b1cdbd2cSJim Jagielski #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
63*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp>
64*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
65*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/status/ItemStatus.hpp>
66*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/status/FontHeight.hpp>
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski #include <svx/dialogs.hrc>
69*b1cdbd2cSJim Jagielski #include <svx/svxitems.hrc>
70*b1cdbd2cSJim Jagielski #include "helpid.hrc"
71*b1cdbd2cSJim Jagielski #include "svx/htmlmode.hxx"
72*b1cdbd2cSJim Jagielski #include <svx/xtable.hxx>
73*b1cdbd2cSJim Jagielski #include "editeng/fontitem.hxx"
74*b1cdbd2cSJim Jagielski #include <editeng/fhgtitem.hxx>
75*b1cdbd2cSJim Jagielski #include <editeng/brshitem.hxx>
76*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
77*b1cdbd2cSJim Jagielski #include <editeng/colritem.hxx>
78*b1cdbd2cSJim Jagielski #include "editeng/flstitem.hxx"
79*b1cdbd2cSJim Jagielski #include "editeng/bolnitem.hxx"
80*b1cdbd2cSJim Jagielski #include "svx/drawitem.hxx"
81*b1cdbd2cSJim Jagielski #include <svx/tbcontrl.hxx>
82*b1cdbd2cSJim Jagielski #include "svx/dlgutil.hxx"
83*b1cdbd2cSJim Jagielski #include <svx/dialmgr.hxx>
84*b1cdbd2cSJim Jagielski #include "colorwindow.hxx"
85*b1cdbd2cSJim Jagielski #include <memory>
86*b1cdbd2cSJim Jagielski
87*b1cdbd2cSJim Jagielski #include <svx/tbxcolorupdate.hxx>
88*b1cdbd2cSJim Jagielski #include <editeng/eerdll.hxx>
89*b1cdbd2cSJim Jagielski #include <editeng/editrids.hrc>
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
92*b1cdbd2cSJim Jagielski
93*b1cdbd2cSJim Jagielski #define MAX_MRU_FONTNAME_ENTRIES 5
94*b1cdbd2cSJim Jagielski #define LOGICAL_EDIT_HEIGHT 12
95*b1cdbd2cSJim Jagielski
96*b1cdbd2cSJim Jagielski // STATIC DATA -----------------------------------------------------------
97*b1cdbd2cSJim Jagielski
98*b1cdbd2cSJim Jagielski #ifndef DELETEZ
99*b1cdbd2cSJim Jagielski #define DELETEZ(p) (delete (p), (p)=NULL)
100*b1cdbd2cSJim Jagielski #endif
101*b1cdbd2cSJim Jagielski // don't make more than 15 entries visible at once
102*b1cdbd2cSJim Jagielski #define MAX_STYLES_ENTRIES static_cast< sal_uInt16 >( 15 )
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski void lcl_ResizeValueSet( Window &rWin, ValueSet &rValueSet );
105*b1cdbd2cSJim Jagielski void lcl_CalcSizeValueSet( Window &rWin, ValueSet &rValueSet, const Size &aItemSize );
106*b1cdbd2cSJim Jagielski sal_Bool lcl_FontChangedHint( const SfxHint &rHint );
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski // namespaces
109*b1cdbd2cSJim Jagielski using ::rtl::OUString;
110*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
111*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
112*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::frame;
113*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::util;
114*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
115*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
116*b1cdbd2cSJim Jagielski
117*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxStyleToolBoxControl, SfxTemplateItem );
118*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxFontNameToolBoxControl, SvxFontItem );
119*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxFontColorToolBoxControl, SvxColorItem );
120*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxFontColorExtToolBoxControl, SvxColorItem );
121*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxColorToolBoxControl, SvxColorItem );
122*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxFrameToolBoxControl, SvxBoxItem );
123*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxFrameLineStyleToolBoxControl, SvxLineItem );
124*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxFrameLineColorToolBoxControl, SvxColorItem );
125*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxReloadControllerItem, SfxBoolItem );
126*b1cdbd2cSJim Jagielski SFX_IMPL_TOOLBOX_CONTROL( SvxSimpleUndoRedoController, SfxStringItem );
127*b1cdbd2cSJim Jagielski
128*b1cdbd2cSJim Jagielski //========================================================================
129*b1cdbd2cSJim Jagielski // class SvxStyleBox_Impl -----------------------------------------------------
130*b1cdbd2cSJim Jagielski //========================================================================
131*b1cdbd2cSJim Jagielski
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski class SvxStyleBox_Impl : public ComboBox
134*b1cdbd2cSJim Jagielski {
135*b1cdbd2cSJim Jagielski using Window::IsVisible;
136*b1cdbd2cSJim Jagielski public:
137*b1cdbd2cSJim Jagielski SvxStyleBox_Impl( Window* pParent, sal_uInt16 nSlot, const OUString& rCommand, SfxStyleFamily eFamily, const Reference< XDispatchProvider >& rDispatchProvider,
138*b1cdbd2cSJim Jagielski const Reference< XFrame >& _xFrame,const String& rClearFormatKey, const String& rMoreKey, sal_Bool bInSpecialMode );
139*b1cdbd2cSJim Jagielski ~SvxStyleBox_Impl();
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski void SetFamily( SfxStyleFamily eNewFamily );
IsVisible()142*b1cdbd2cSJim Jagielski inline sal_Bool IsVisible() { return bVisible; }
143*b1cdbd2cSJim Jagielski
144*b1cdbd2cSJim Jagielski virtual long PreNotify( NotifyEvent& rNEvt );
145*b1cdbd2cSJim Jagielski virtual long Notify( NotifyEvent& rNEvt );
146*b1cdbd2cSJim Jagielski virtual void DataChanged( const DataChangedEvent& rDCEvt );
147*b1cdbd2cSJim Jagielski virtual void StateChanged( StateChangedType nStateChange );
148*b1cdbd2cSJim Jagielski
SetVisibilityListener(const Link & aVisListener)149*b1cdbd2cSJim Jagielski inline void SetVisibilityListener( const Link& aVisListener ) { aVisibilityListener = aVisListener; }
RemoveVisibilityListener()150*b1cdbd2cSJim Jagielski inline void RemoveVisibilityListener() { aVisibilityListener = Link(); }
151*b1cdbd2cSJim Jagielski
SetDefaultStyle(const::rtl::OUString & rDefault)152*b1cdbd2cSJim Jagielski void SetDefaultStyle( const ::rtl::OUString& rDefault ) { sDefaultStyle = rDefault; }
153*b1cdbd2cSJim Jagielski DECL_STATIC_LINK( SvxStyleBox_Impl, FocusHdl_Impl, Control* );
154*b1cdbd2cSJim Jagielski
155*b1cdbd2cSJim Jagielski protected:
156*b1cdbd2cSJim Jagielski virtual void Select();
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski private:
159*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId;
160*b1cdbd2cSJim Jagielski SfxStyleFamily eStyleFamily;
161*b1cdbd2cSJim Jagielski sal_uInt16 nCurSel;
162*b1cdbd2cSJim Jagielski sal_Bool bRelease;
163*b1cdbd2cSJim Jagielski Size aLogicalSize;
164*b1cdbd2cSJim Jagielski Link aVisibilityListener;
165*b1cdbd2cSJim Jagielski sal_Bool bVisible;
166*b1cdbd2cSJim Jagielski Reference< XDispatchProvider > m_xDispatchProvider;
167*b1cdbd2cSJim Jagielski Reference< XFrame > m_xFrame;
168*b1cdbd2cSJim Jagielski OUString m_aCommand;
169*b1cdbd2cSJim Jagielski String aClearFormatKey;
170*b1cdbd2cSJim Jagielski String aMoreKey;
171*b1cdbd2cSJim Jagielski String sDefaultStyle;
172*b1cdbd2cSJim Jagielski sal_Bool bInSpecialMode;
173*b1cdbd2cSJim Jagielski
174*b1cdbd2cSJim Jagielski void ReleaseFocus();
175*b1cdbd2cSJim Jagielski };
176*b1cdbd2cSJim Jagielski
177*b1cdbd2cSJim Jagielski //========================================================================
178*b1cdbd2cSJim Jagielski // class SvxFontNameBox --------------------------------------------------
179*b1cdbd2cSJim Jagielski //========================================================================
180*b1cdbd2cSJim Jagielski
181*b1cdbd2cSJim Jagielski class SvxFontNameBox_Impl : public FontNameBox
182*b1cdbd2cSJim Jagielski {
183*b1cdbd2cSJim Jagielski using Window::Update;
184*b1cdbd2cSJim Jagielski private:
185*b1cdbd2cSJim Jagielski const FontList* pFontList;
186*b1cdbd2cSJim Jagielski ::std::auto_ptr<FontList> m_aOwnFontList;
187*b1cdbd2cSJim Jagielski Font aCurFont;
188*b1cdbd2cSJim Jagielski Size aLogicalSize;
189*b1cdbd2cSJim Jagielski String aCurText;
190*b1cdbd2cSJim Jagielski sal_uInt16 nFtCount;
191*b1cdbd2cSJim Jagielski sal_Bool bRelease;
192*b1cdbd2cSJim Jagielski Reference< XDispatchProvider > m_xDispatchProvider;
193*b1cdbd2cSJim Jagielski Reference< XFrame > m_xFrame;
194*b1cdbd2cSJim Jagielski
195*b1cdbd2cSJim Jagielski void ReleaseFocus_Impl();
196*b1cdbd2cSJim Jagielski void EnableControls_Impl();
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski protected:
199*b1cdbd2cSJim Jagielski virtual void Select();
200*b1cdbd2cSJim Jagielski virtual void DataChanged( const DataChangedEvent& rDCEvt );
201*b1cdbd2cSJim Jagielski
202*b1cdbd2cSJim Jagielski public:
203*b1cdbd2cSJim Jagielski SvxFontNameBox_Impl( Window* pParent, const Reference< XDispatchProvider >& rDispatchProvider,const Reference< XFrame >& _xFrame
204*b1cdbd2cSJim Jagielski , WinBits nStyle = WB_SORT
205*b1cdbd2cSJim Jagielski );
206*b1cdbd2cSJim Jagielski
207*b1cdbd2cSJim Jagielski void FillList();
208*b1cdbd2cSJim Jagielski void Update( const SvxFontItem* pFontItem );
GetListCount()209*b1cdbd2cSJim Jagielski sal_uInt16 GetListCount() { return nFtCount; }
Clear()210*b1cdbd2cSJim Jagielski void Clear() { FontNameBox::Clear(); nFtCount = 0; }
Fill(const FontList * pList)211*b1cdbd2cSJim Jagielski void Fill( const FontList* pList )
212*b1cdbd2cSJim Jagielski { FontNameBox::Fill( pList );
213*b1cdbd2cSJim Jagielski nFtCount = pList->GetFontNameCount(); }
214*b1cdbd2cSJim Jagielski virtual long PreNotify( NotifyEvent& rNEvt );
215*b1cdbd2cSJim Jagielski virtual long Notify( NotifyEvent& rNEvt );
216*b1cdbd2cSJim Jagielski virtual Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
SetOwnFontList(::std::auto_ptr<FontList> _aOwnFontList)217*b1cdbd2cSJim Jagielski inline void SetOwnFontList(::std::auto_ptr<FontList> _aOwnFontList) { m_aOwnFontList = _aOwnFontList; }
218*b1cdbd2cSJim Jagielski };
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski //========================================================================
221*b1cdbd2cSJim Jagielski // class SvxFrameWindow_Impl --------------------------------------------------
222*b1cdbd2cSJim Jagielski //========================================================================
223*b1cdbd2cSJim Jagielski
224*b1cdbd2cSJim Jagielski // fuer den SelectHdl werden die Modifier gebraucht, also
225*b1cdbd2cSJim Jagielski // muss man sie im MouseButtonUp besorgen
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielski class SvxFrmValueSet_Impl : public ValueSet
228*b1cdbd2cSJim Jagielski {
229*b1cdbd2cSJim Jagielski sal_uInt16 nModifier;
230*b1cdbd2cSJim Jagielski virtual void MouseButtonUp( const MouseEvent& rMEvt );
231*b1cdbd2cSJim Jagielski public:
SvxFrmValueSet_Impl(Window * pParent,WinBits nWinStyle)232*b1cdbd2cSJim Jagielski SvxFrmValueSet_Impl(Window* pParent, WinBits nWinStyle)
233*b1cdbd2cSJim Jagielski : ValueSet(pParent, nWinStyle), nModifier(0) {}
GetModifier() const234*b1cdbd2cSJim Jagielski sal_uInt16 GetModifier() const {return nModifier;}
235*b1cdbd2cSJim Jagielski
236*b1cdbd2cSJim Jagielski };
237*b1cdbd2cSJim Jagielski
MouseButtonUp(const MouseEvent & rMEvt)238*b1cdbd2cSJim Jagielski void SvxFrmValueSet_Impl::MouseButtonUp( const MouseEvent& rMEvt )
239*b1cdbd2cSJim Jagielski {
240*b1cdbd2cSJim Jagielski nModifier = rMEvt.GetModifier();
241*b1cdbd2cSJim Jagielski ValueSet::MouseButtonUp(rMEvt);
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski
244*b1cdbd2cSJim Jagielski class SvxFrameWindow_Impl : public SfxPopupWindow
245*b1cdbd2cSJim Jagielski {
246*b1cdbd2cSJim Jagielski using FloatingWindow::StateChanged;
247*b1cdbd2cSJim Jagielski
248*b1cdbd2cSJim Jagielski private:
249*b1cdbd2cSJim Jagielski SvxFrmValueSet_Impl aFrameSet;
250*b1cdbd2cSJim Jagielski ImageList aImgList;
251*b1cdbd2cSJim Jagielski sal_Bool bParagraphMode;
252*b1cdbd2cSJim Jagielski
253*b1cdbd2cSJim Jagielski #if _SOLAR__PRIVATE
254*b1cdbd2cSJim Jagielski DECL_LINK( SelectHdl, void * );
255*b1cdbd2cSJim Jagielski #endif
256*b1cdbd2cSJim Jagielski
257*b1cdbd2cSJim Jagielski protected:
258*b1cdbd2cSJim Jagielski virtual void Resize();
259*b1cdbd2cSJim Jagielski virtual sal_Bool Close();
260*b1cdbd2cSJim Jagielski virtual Window* GetPreferredKeyInputWindow();
261*b1cdbd2cSJim Jagielski virtual void GetFocus();
262*b1cdbd2cSJim Jagielski
263*b1cdbd2cSJim Jagielski public:
264*b1cdbd2cSJim Jagielski SvxFrameWindow_Impl( sal_uInt16 nId, const Reference< XFrame >& rFrame, Window* pParentWindow );
265*b1cdbd2cSJim Jagielski ~SvxFrameWindow_Impl();
266*b1cdbd2cSJim Jagielski void StartSelection();
267*b1cdbd2cSJim Jagielski
268*b1cdbd2cSJim Jagielski virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState,
269*b1cdbd2cSJim Jagielski const SfxPoolItem* pState );
270*b1cdbd2cSJim Jagielski virtual SfxPopupWindow* Clone() const;
271*b1cdbd2cSJim Jagielski virtual void DataChanged( const DataChangedEvent& rDCEvt );
272*b1cdbd2cSJim Jagielski
273*b1cdbd2cSJim Jagielski inline sal_Bool IsHighContrast( void ) const;
274*b1cdbd2cSJim Jagielski };
275*b1cdbd2cSJim Jagielski
IsHighContrast(void) const276*b1cdbd2cSJim Jagielski inline sal_Bool SvxFrameWindow_Impl::IsHighContrast( void ) const
277*b1cdbd2cSJim Jagielski {
278*b1cdbd2cSJim Jagielski return GetSettings().GetStyleSettings().GetHighContrastMode();
279*b1cdbd2cSJim Jagielski }
280*b1cdbd2cSJim Jagielski
281*b1cdbd2cSJim Jagielski //========================================================================
282*b1cdbd2cSJim Jagielski // class SvxLineWindow_Impl ---------------------------------------------------
283*b1cdbd2cSJim Jagielski //========================================================================
284*b1cdbd2cSJim Jagielski class SvxLineWindow_Impl : public SfxPopupWindow
285*b1cdbd2cSJim Jagielski {
286*b1cdbd2cSJim Jagielski private:
287*b1cdbd2cSJim Jagielski ValueSet aLineSet;
288*b1cdbd2cSJim Jagielski bool m_bIsWriter;
289*b1cdbd2cSJim Jagielski
290*b1cdbd2cSJim Jagielski #if _SOLAR__PRIVATE
291*b1cdbd2cSJim Jagielski void MakeLineBitmap( sal_uInt16 nNo, Bitmap& rBmp, const Size& rSize, String& rStr,
292*b1cdbd2cSJim Jagielski const ::Color& rLine, const ::Color& rBack );
293*b1cdbd2cSJim Jagielski DECL_LINK( SelectHdl, void * );
294*b1cdbd2cSJim Jagielski #endif
295*b1cdbd2cSJim Jagielski
296*b1cdbd2cSJim Jagielski protected:
297*b1cdbd2cSJim Jagielski virtual void Resize();
298*b1cdbd2cSJim Jagielski virtual sal_Bool Close();
299*b1cdbd2cSJim Jagielski virtual Window* GetPreferredKeyInputWindow();
300*b1cdbd2cSJim Jagielski virtual void GetFocus();
301*b1cdbd2cSJim Jagielski virtual void DataChanged( const DataChangedEvent& rDCEvt );
302*b1cdbd2cSJim Jagielski void CreateBitmaps( void );
303*b1cdbd2cSJim Jagielski public:
304*b1cdbd2cSJim Jagielski SvxLineWindow_Impl( sal_uInt16 nId, const Reference< XFrame >& rFrame, Window* pParentWindow );
305*b1cdbd2cSJim Jagielski
306*b1cdbd2cSJim Jagielski void StartSelection();
307*b1cdbd2cSJim Jagielski virtual SfxPopupWindow* Clone() const;
308*b1cdbd2cSJim Jagielski };
309*b1cdbd2cSJim Jagielski
310*b1cdbd2cSJim Jagielski //########################################################################
311*b1cdbd2cSJim Jagielski // Hilfsklassen:
312*b1cdbd2cSJim Jagielski //========================================================================
313*b1cdbd2cSJim Jagielski // class SfxStyleControllerItem ------------------------------------------
314*b1cdbd2cSJim Jagielski //========================================================================
315*b1cdbd2cSJim Jagielski class SvxStyleToolBoxControl;
316*b1cdbd2cSJim Jagielski
317*b1cdbd2cSJim Jagielski class SfxStyleControllerItem_Impl : public SfxStatusListener
318*b1cdbd2cSJim Jagielski {
319*b1cdbd2cSJim Jagielski public:
320*b1cdbd2cSJim Jagielski SfxStyleControllerItem_Impl( const Reference< XDispatchProvider >& rDispatchProvider,
321*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId,
322*b1cdbd2cSJim Jagielski const rtl::OUString& rCommand,
323*b1cdbd2cSJim Jagielski SvxStyleToolBoxControl& rTbxCtl );
324*b1cdbd2cSJim Jagielski
325*b1cdbd2cSJim Jagielski protected:
326*b1cdbd2cSJim Jagielski virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
327*b1cdbd2cSJim Jagielski
328*b1cdbd2cSJim Jagielski private:
329*b1cdbd2cSJim Jagielski SvxStyleToolBoxControl& rControl;
330*b1cdbd2cSJim Jagielski };
331*b1cdbd2cSJim Jagielski
332*b1cdbd2cSJim Jagielski //========================================================================
333*b1cdbd2cSJim Jagielski // class SvxStyleBox_Impl -----------------------------------------------------
334*b1cdbd2cSJim Jagielski //========================================================================
335*b1cdbd2cSJim Jagielski
SvxStyleBox_Impl(Window * pParent,sal_uInt16 nSlot,const rtl::OUString & rCommand,SfxStyleFamily eFamily,const Reference<XDispatchProvider> & rDispatchProvider,const Reference<XFrame> & _xFrame,const String & rClearFormatKey,const String & rMoreKey,sal_Bool bInSpec)336*b1cdbd2cSJim Jagielski SvxStyleBox_Impl::SvxStyleBox_Impl(
337*b1cdbd2cSJim Jagielski Window* pParent,
338*b1cdbd2cSJim Jagielski sal_uInt16 nSlot,
339*b1cdbd2cSJim Jagielski const rtl::OUString& rCommand,
340*b1cdbd2cSJim Jagielski SfxStyleFamily eFamily,
341*b1cdbd2cSJim Jagielski const Reference< XDispatchProvider >& rDispatchProvider,
342*b1cdbd2cSJim Jagielski const Reference< XFrame >& _xFrame,
343*b1cdbd2cSJim Jagielski const String& rClearFormatKey,
344*b1cdbd2cSJim Jagielski const String& rMoreKey,
345*b1cdbd2cSJim Jagielski sal_Bool bInSpec) :
346*b1cdbd2cSJim Jagielski
347*b1cdbd2cSJim Jagielski ComboBox( pParent, SVX_RES( RID_SVXTBX_STYLE ) ),
348*b1cdbd2cSJim Jagielski
349*b1cdbd2cSJim Jagielski nSlotId ( nSlot ),
350*b1cdbd2cSJim Jagielski eStyleFamily( eFamily ),
351*b1cdbd2cSJim Jagielski bRelease ( sal_True ),
352*b1cdbd2cSJim Jagielski bVisible(sal_False),
353*b1cdbd2cSJim Jagielski m_xDispatchProvider( rDispatchProvider ),
354*b1cdbd2cSJim Jagielski m_xFrame(_xFrame),
355*b1cdbd2cSJim Jagielski m_aCommand ( rCommand ),
356*b1cdbd2cSJim Jagielski aClearFormatKey ( rClearFormatKey ),
357*b1cdbd2cSJim Jagielski aMoreKey ( rMoreKey ),
358*b1cdbd2cSJim Jagielski bInSpecialMode ( bInSpec )
359*b1cdbd2cSJim Jagielski {
360*b1cdbd2cSJim Jagielski aLogicalSize = PixelToLogic( GetSizePixel(), MAP_APPFONT );
361*b1cdbd2cSJim Jagielski EnableAutocomplete( sal_True );
362*b1cdbd2cSJim Jagielski }
363*b1cdbd2cSJim Jagielski
~SvxStyleBox_Impl()364*b1cdbd2cSJim Jagielski SvxStyleBox_Impl::~SvxStyleBox_Impl()
365*b1cdbd2cSJim Jagielski {
366*b1cdbd2cSJim Jagielski }
367*b1cdbd2cSJim Jagielski
368*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
369*b1cdbd2cSJim Jagielski
ReleaseFocus()370*b1cdbd2cSJim Jagielski void SvxStyleBox_Impl::ReleaseFocus()
371*b1cdbd2cSJim Jagielski {
372*b1cdbd2cSJim Jagielski if ( !bRelease )
373*b1cdbd2cSJim Jagielski {
374*b1cdbd2cSJim Jagielski bRelease = sal_True;
375*b1cdbd2cSJim Jagielski return;
376*b1cdbd2cSJim Jagielski }
377*b1cdbd2cSJim Jagielski if ( m_xFrame.is() && m_xFrame->getContainerWindow().is() )
378*b1cdbd2cSJim Jagielski m_xFrame->getContainerWindow()->setFocus();
379*b1cdbd2cSJim Jagielski }
380*b1cdbd2cSJim Jagielski
381*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
382*b1cdbd2cSJim Jagielski
Select()383*b1cdbd2cSJim Jagielski void SvxStyleBox_Impl::Select()
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski // Tell base class about selection so that AT get informed about it.
386*b1cdbd2cSJim Jagielski ComboBox::Select();
387*b1cdbd2cSJim Jagielski
388*b1cdbd2cSJim Jagielski if ( !IsTravelSelect() )
389*b1cdbd2cSJim Jagielski {
390*b1cdbd2cSJim Jagielski String aSelEntry( GetText() );
391*b1cdbd2cSJim Jagielski bool bDoIt = true, bClear = false;
392*b1cdbd2cSJim Jagielski if( bInSpecialMode )
393*b1cdbd2cSJim Jagielski {
394*b1cdbd2cSJim Jagielski if( aSelEntry == aClearFormatKey && GetSelectEntryPos() == 0 )
395*b1cdbd2cSJim Jagielski {
396*b1cdbd2cSJim Jagielski aSelEntry = sDefaultStyle;
397*b1cdbd2cSJim Jagielski bClear = true;
398*b1cdbd2cSJim Jagielski //not only apply default style but also call 'ClearFormatting'
399*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aEmptyVals;
400*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( m_xDispatchProvider, String::CreateFromAscii(".uno:ResetAttributes"),
401*b1cdbd2cSJim Jagielski aEmptyVals);
402*b1cdbd2cSJim Jagielski }
403*b1cdbd2cSJim Jagielski else if( aSelEntry == aMoreKey && GetSelectEntryPos() == ( GetEntryCount() - 1 ) )
404*b1cdbd2cSJim Jagielski {
405*b1cdbd2cSJim Jagielski SfxViewFrame* pViewFrm = SfxViewFrame::Current();
406*b1cdbd2cSJim Jagielski DBG_ASSERT( pViewFrm, "SvxStyleBox_Impl::Select(): no viewframe" );
407*b1cdbd2cSJim Jagielski pViewFrm->ShowChildWindow( SID_STYLE_DESIGNER );
408*b1cdbd2cSJim Jagielski SfxChildWindow* pChildWin = pViewFrm->GetChildWindow( SID_STYLE_DESIGNER );
409*b1cdbd2cSJim Jagielski if ( pChildWin && pChildWin->GetWindow() )
410*b1cdbd2cSJim Jagielski {
411*b1cdbd2cSJim Jagielski static_cast< SfxTemplateDialogWrapper* >( pChildWin )->SetParagraphFamily();
412*b1cdbd2cSJim Jagielski static_cast< SfxDockingWindow* >( pChildWin->GetWindow() )->AutoShow( sal_True );
413*b1cdbd2cSJim Jagielski Application::PostUserEvent(
414*b1cdbd2cSJim Jagielski STATIC_LINK( 0, SvxStyleBox_Impl, FocusHdl_Impl ), pChildWin->GetWindow() );
415*b1cdbd2cSJim Jagielski }
416*b1cdbd2cSJim Jagielski bDoIt = false;
417*b1cdbd2cSJim Jagielski }
418*b1cdbd2cSJim Jagielski }
419*b1cdbd2cSJim Jagielski
420*b1cdbd2cSJim Jagielski // #i36723# after ReleaseFocus() the new entry is included into the List
421*b1cdbd2cSJim Jagielski sal_Bool bCreateNew = GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND;
422*b1cdbd2cSJim Jagielski
423*b1cdbd2cSJim Jagielski /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call.
424*b1cdbd2cSJim Jagielski This instance may be deleted in the meantime (i.e. when a dialog is opened
425*b1cdbd2cSJim Jagielski while in Dispatch()), accessing members will crash in this case. */
426*b1cdbd2cSJim Jagielski ReleaseFocus();
427*b1cdbd2cSJim Jagielski
428*b1cdbd2cSJim Jagielski if( bDoIt )
429*b1cdbd2cSJim Jagielski {
430*b1cdbd2cSJim Jagielski if ( bClear )
431*b1cdbd2cSJim Jagielski SetText( aSelEntry );
432*b1cdbd2cSJim Jagielski SaveValue();
433*b1cdbd2cSJim Jagielski
434*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 2 );
435*b1cdbd2cSJim Jagielski aArgs[0].Value = makeAny( OUString( aSelEntry ) );
436*b1cdbd2cSJim Jagielski aArgs[1].Name = OUString::createFromAscii( "Family" );
437*b1cdbd2cSJim Jagielski aArgs[1].Value = makeAny( sal_Int16( eStyleFamily ));
438*b1cdbd2cSJim Jagielski if( bCreateNew )
439*b1cdbd2cSJim Jagielski {
440*b1cdbd2cSJim Jagielski aArgs[0].Name = OUString::createFromAscii( "Param" );
441*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( m_xDispatchProvider, String::CreateFromAscii(".uno:StyleNewByExample"), aArgs);
442*b1cdbd2cSJim Jagielski }
443*b1cdbd2cSJim Jagielski else
444*b1cdbd2cSJim Jagielski {
445*b1cdbd2cSJim Jagielski aArgs[0].Name = OUString::createFromAscii( "Template" );
446*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( m_xDispatchProvider, m_aCommand, aArgs );
447*b1cdbd2cSJim Jagielski }
448*b1cdbd2cSJim Jagielski }
449*b1cdbd2cSJim Jagielski }
450*b1cdbd2cSJim Jagielski }
451*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
452*b1cdbd2cSJim Jagielski
SetFamily(SfxStyleFamily eNewFamily)453*b1cdbd2cSJim Jagielski void SvxStyleBox_Impl::SetFamily( SfxStyleFamily eNewFamily )
454*b1cdbd2cSJim Jagielski {
455*b1cdbd2cSJim Jagielski eStyleFamily = eNewFamily;
456*b1cdbd2cSJim Jagielski }
457*b1cdbd2cSJim Jagielski
458*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
459*b1cdbd2cSJim Jagielski
PreNotify(NotifyEvent & rNEvt)460*b1cdbd2cSJim Jagielski long SvxStyleBox_Impl::PreNotify( NotifyEvent& rNEvt )
461*b1cdbd2cSJim Jagielski {
462*b1cdbd2cSJim Jagielski sal_uInt16 nType = rNEvt.GetType();
463*b1cdbd2cSJim Jagielski
464*b1cdbd2cSJim Jagielski if ( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType )
465*b1cdbd2cSJim Jagielski nCurSel = GetSelectEntryPos();
466*b1cdbd2cSJim Jagielski else if ( EVENT_LOSEFOCUS == nType )
467*b1cdbd2cSJim Jagielski {
468*b1cdbd2cSJim Jagielski // don't handle before our Select() is called
469*b1cdbd2cSJim Jagielski if ( !HasFocus() && !HasChildPathFocus() )
470*b1cdbd2cSJim Jagielski SetText( GetSavedValue() );
471*b1cdbd2cSJim Jagielski }
472*b1cdbd2cSJim Jagielski return ComboBox::PreNotify( rNEvt );
473*b1cdbd2cSJim Jagielski }
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
476*b1cdbd2cSJim Jagielski
Notify(NotifyEvent & rNEvt)477*b1cdbd2cSJim Jagielski long SvxStyleBox_Impl::Notify( NotifyEvent& rNEvt )
478*b1cdbd2cSJim Jagielski {
479*b1cdbd2cSJim Jagielski long nHandled = 0;
480*b1cdbd2cSJim Jagielski
481*b1cdbd2cSJim Jagielski if ( rNEvt.GetType() == EVENT_KEYINPUT )
482*b1cdbd2cSJim Jagielski {
483*b1cdbd2cSJim Jagielski sal_uInt16 nCode = rNEvt.GetKeyEvent()->GetKeyCode().GetCode();
484*b1cdbd2cSJim Jagielski
485*b1cdbd2cSJim Jagielski switch ( nCode )
486*b1cdbd2cSJim Jagielski {
487*b1cdbd2cSJim Jagielski case KEY_RETURN:
488*b1cdbd2cSJim Jagielski case KEY_TAB:
489*b1cdbd2cSJim Jagielski {
490*b1cdbd2cSJim Jagielski if ( KEY_TAB == nCode )
491*b1cdbd2cSJim Jagielski bRelease = sal_False;
492*b1cdbd2cSJim Jagielski else
493*b1cdbd2cSJim Jagielski nHandled = 1;
494*b1cdbd2cSJim Jagielski Select();
495*b1cdbd2cSJim Jagielski break;
496*b1cdbd2cSJim Jagielski }
497*b1cdbd2cSJim Jagielski
498*b1cdbd2cSJim Jagielski case KEY_ESCAPE:
499*b1cdbd2cSJim Jagielski SelectEntryPos( nCurSel );
500*b1cdbd2cSJim Jagielski ReleaseFocus();
501*b1cdbd2cSJim Jagielski nHandled = 1;
502*b1cdbd2cSJim Jagielski break;
503*b1cdbd2cSJim Jagielski }
504*b1cdbd2cSJim Jagielski }
505*b1cdbd2cSJim Jagielski return nHandled ? nHandled : ComboBox::Notify( rNEvt );
506*b1cdbd2cSJim Jagielski }
507*b1cdbd2cSJim Jagielski /* -----------------------------08.03.2002 13:03------------------------------
508*b1cdbd2cSJim Jagielski
509*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
DataChanged(const DataChangedEvent & rDCEvt)510*b1cdbd2cSJim Jagielski void SvxStyleBox_Impl::DataChanged( const DataChangedEvent& rDCEvt )
511*b1cdbd2cSJim Jagielski {
512*b1cdbd2cSJim Jagielski if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
513*b1cdbd2cSJim Jagielski (rDCEvt.GetFlags() & SETTINGS_STYLE) )
514*b1cdbd2cSJim Jagielski {
515*b1cdbd2cSJim Jagielski SetSizePixel(LogicToPixel(aLogicalSize, MAP_APPFONT));
516*b1cdbd2cSJim Jagielski Size aDropSize( aLogicalSize.Width(), LOGICAL_EDIT_HEIGHT);
517*b1cdbd2cSJim Jagielski SetDropDownSizePixel(LogicToPixel(aDropSize, MAP_APPFONT));
518*b1cdbd2cSJim Jagielski }
519*b1cdbd2cSJim Jagielski
520*b1cdbd2cSJim Jagielski ComboBox::DataChanged( rDCEvt );
521*b1cdbd2cSJim Jagielski }
522*b1cdbd2cSJim Jagielski
StateChanged(StateChangedType nStateChange)523*b1cdbd2cSJim Jagielski void SvxStyleBox_Impl::StateChanged( StateChangedType nStateChange )
524*b1cdbd2cSJim Jagielski {
525*b1cdbd2cSJim Jagielski ComboBox::StateChanged( nStateChange );
526*b1cdbd2cSJim Jagielski
527*b1cdbd2cSJim Jagielski if ( nStateChange == STATE_CHANGE_VISIBLE )
528*b1cdbd2cSJim Jagielski {
529*b1cdbd2cSJim Jagielski bVisible = IsReallyVisible();
530*b1cdbd2cSJim Jagielski if ( aVisibilityListener.IsSet() )
531*b1cdbd2cSJim Jagielski aVisibilityListener.Call( this );
532*b1cdbd2cSJim Jagielski }
533*b1cdbd2cSJim Jagielski else if ( nStateChange == STATE_CHANGE_INITSHOW )
534*b1cdbd2cSJim Jagielski {
535*b1cdbd2cSJim Jagielski bVisible = sal_True;
536*b1cdbd2cSJim Jagielski if ( aVisibilityListener.IsSet() )
537*b1cdbd2cSJim Jagielski aVisibilityListener.Call( this );
538*b1cdbd2cSJim Jagielski }
539*b1cdbd2cSJim Jagielski }
540*b1cdbd2cSJim Jagielski
541*b1cdbd2cSJim Jagielski //--------------------------------------------------------------------
542*b1cdbd2cSJim Jagielski
IMPL_STATIC_LINK(SvxStyleBox_Impl,FocusHdl_Impl,Control *,_pCtrl)543*b1cdbd2cSJim Jagielski IMPL_STATIC_LINK( SvxStyleBox_Impl, FocusHdl_Impl, Control*, _pCtrl )
544*b1cdbd2cSJim Jagielski {
545*b1cdbd2cSJim Jagielski (void)pThis;
546*b1cdbd2cSJim Jagielski if ( _pCtrl )
547*b1cdbd2cSJim Jagielski _pCtrl->GrabFocus();
548*b1cdbd2cSJim Jagielski return 0;
549*b1cdbd2cSJim Jagielski }
550*b1cdbd2cSJim Jagielski
551*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
552*b1cdbd2cSJim Jagielski
GetDocFontList_Impl(const FontList ** ppFontList,SvxFontNameBox_Impl * pBox)553*b1cdbd2cSJim Jagielski sal_Bool GetDocFontList_Impl( const FontList** ppFontList, SvxFontNameBox_Impl* pBox )
554*b1cdbd2cSJim Jagielski {
555*b1cdbd2cSJim Jagielski sal_Bool bChanged = sal_False;
556*b1cdbd2cSJim Jagielski const SfxObjectShell* pDocSh = SfxObjectShell::Current();
557*b1cdbd2cSJim Jagielski SvxFontListItem* pFontListItem = NULL;
558*b1cdbd2cSJim Jagielski
559*b1cdbd2cSJim Jagielski if ( pDocSh )
560*b1cdbd2cSJim Jagielski pFontListItem =
561*b1cdbd2cSJim Jagielski (SvxFontListItem*)pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
562*b1cdbd2cSJim Jagielski else
563*b1cdbd2cSJim Jagielski {
564*b1cdbd2cSJim Jagielski ::std::auto_ptr<FontList> aFontList(new FontList( pBox ));
565*b1cdbd2cSJim Jagielski *ppFontList = aFontList.get();
566*b1cdbd2cSJim Jagielski pBox->SetOwnFontList(aFontList);
567*b1cdbd2cSJim Jagielski bChanged = sal_True;
568*b1cdbd2cSJim Jagielski }
569*b1cdbd2cSJim Jagielski
570*b1cdbd2cSJim Jagielski if ( pFontListItem )
571*b1cdbd2cSJim Jagielski {
572*b1cdbd2cSJim Jagielski const FontList* pNewFontList = pFontListItem->GetFontList();
573*b1cdbd2cSJim Jagielski DBG_ASSERT( pNewFontList, "Doc-FontList not available!" );
574*b1cdbd2cSJim Jagielski
575*b1cdbd2cSJim Jagielski // keine alte Liste, aber neue Liste
576*b1cdbd2cSJim Jagielski if ( !*ppFontList && pNewFontList )
577*b1cdbd2cSJim Jagielski {
578*b1cdbd2cSJim Jagielski // => "ubernehmen
579*b1cdbd2cSJim Jagielski *ppFontList = pNewFontList;
580*b1cdbd2cSJim Jagielski bChanged = sal_True;
581*b1cdbd2cSJim Jagielski }
582*b1cdbd2cSJim Jagielski else
583*b1cdbd2cSJim Jagielski {
584*b1cdbd2cSJim Jagielski // Vergleich der Fontlisten ist nicht vollkommen
585*b1cdbd2cSJim Jagielski // wird die Fontliste am Doc geaendert, kann man hier
586*b1cdbd2cSJim Jagielski // nur ueber die Listbox Aenderungen feststellen, weil
587*b1cdbd2cSJim Jagielski // ppFontList dabei schon upgedatet wurde
588*b1cdbd2cSJim Jagielski bChanged =
589*b1cdbd2cSJim Jagielski ( ( *ppFontList != pNewFontList ) ||
590*b1cdbd2cSJim Jagielski pBox->GetListCount() != pNewFontList->GetFontNameCount() );
591*b1cdbd2cSJim Jagielski HACK(vergleich ist unvollstaendig)
592*b1cdbd2cSJim Jagielski
593*b1cdbd2cSJim Jagielski if ( bChanged )
594*b1cdbd2cSJim Jagielski *ppFontList = pNewFontList;
595*b1cdbd2cSJim Jagielski }
596*b1cdbd2cSJim Jagielski
597*b1cdbd2cSJim Jagielski if ( pBox )
598*b1cdbd2cSJim Jagielski pBox->Enable();
599*b1cdbd2cSJim Jagielski }
600*b1cdbd2cSJim Jagielski else if ( pBox && ( pDocSh || ( !pDocSh && !ppFontList )))
601*b1cdbd2cSJim Jagielski {
602*b1cdbd2cSJim Jagielski // Disable box only when we have a SfxObjectShell and didn't get a font list OR
603*b1cdbd2cSJim Jagielski // we don't have a SfxObjectShell and no current font list.
604*b1cdbd2cSJim Jagielski // It's possible that we currently have no SfxObjectShell, but a current font list.
605*b1cdbd2cSJim Jagielski // See #i58471: When a user set the focus into the font name combo box and opens
606*b1cdbd2cSJim Jagielski // the help window with F1. After closing the help window, we disable the font name
607*b1cdbd2cSJim Jagielski // combo box. The SfxObjectShell::Current() method returns in that case zero. But the
608*b1cdbd2cSJim Jagielski // font list hasn't changed and therefore the combo box shouldn't be disabled!
609*b1cdbd2cSJim Jagielski pBox->Disable();
610*b1cdbd2cSJim Jagielski }
611*b1cdbd2cSJim Jagielski
612*b1cdbd2cSJim Jagielski // in die FontBox ggf. auch die neue Liste f"ullen
613*b1cdbd2cSJim Jagielski if ( pBox && bChanged )
614*b1cdbd2cSJim Jagielski {
615*b1cdbd2cSJim Jagielski if ( *ppFontList )
616*b1cdbd2cSJim Jagielski pBox->Fill( *ppFontList );
617*b1cdbd2cSJim Jagielski else
618*b1cdbd2cSJim Jagielski pBox->Clear();
619*b1cdbd2cSJim Jagielski }
620*b1cdbd2cSJim Jagielski return bChanged;
621*b1cdbd2cSJim Jagielski }
622*b1cdbd2cSJim Jagielski
623*b1cdbd2cSJim Jagielski //========================================================================
624*b1cdbd2cSJim Jagielski // class SvxFontNameBox_Impl --------------------------------------------------
625*b1cdbd2cSJim Jagielski //========================================================================
626*b1cdbd2cSJim Jagielski
SvxFontNameBox_Impl(Window * pParent,const Reference<XDispatchProvider> & rDispatchProvider,const Reference<XFrame> & _xFrame,WinBits nStyle)627*b1cdbd2cSJim Jagielski SvxFontNameBox_Impl::SvxFontNameBox_Impl( Window* pParent, const Reference< XDispatchProvider >& rDispatchProvider,const Reference< XFrame >& _xFrame, WinBits nStyle ) :
628*b1cdbd2cSJim Jagielski
629*b1cdbd2cSJim Jagielski FontNameBox ( pParent, nStyle | WinBits( WB_DROPDOWN | WB_AUTOHSCROLL ) ),
630*b1cdbd2cSJim Jagielski pFontList ( NULL ),
631*b1cdbd2cSJim Jagielski aLogicalSize ( 75,160 ),
632*b1cdbd2cSJim Jagielski nFtCount ( 0 ),
633*b1cdbd2cSJim Jagielski bRelease ( sal_True ),
634*b1cdbd2cSJim Jagielski m_xDispatchProvider( rDispatchProvider ),
635*b1cdbd2cSJim Jagielski m_xFrame (_xFrame)
636*b1cdbd2cSJim Jagielski {
637*b1cdbd2cSJim Jagielski SetSizePixel(LogicToPixel( aLogicalSize, MAP_APPFONT ));
638*b1cdbd2cSJim Jagielski EnableControls_Impl();
639*b1cdbd2cSJim Jagielski }
640*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
641*b1cdbd2cSJim Jagielski
FillList()642*b1cdbd2cSJim Jagielski void SvxFontNameBox_Impl::FillList()
643*b1cdbd2cSJim Jagielski {
644*b1cdbd2cSJim Jagielski // alte Selektion merken, und am Ende wieder setzen
645*b1cdbd2cSJim Jagielski Selection aOldSel = GetSelection();
646*b1cdbd2cSJim Jagielski // hat sich Doc-Fontlist geaendert?
647*b1cdbd2cSJim Jagielski GetDocFontList_Impl( &pFontList, this );
648*b1cdbd2cSJim Jagielski aCurText = GetText();
649*b1cdbd2cSJim Jagielski SetSelection( aOldSel );
650*b1cdbd2cSJim Jagielski }
651*b1cdbd2cSJim Jagielski
652*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
653*b1cdbd2cSJim Jagielski
Update(const SvxFontItem * pFontItem)654*b1cdbd2cSJim Jagielski void SvxFontNameBox_Impl::Update( const SvxFontItem* pFontItem )
655*b1cdbd2cSJim Jagielski {
656*b1cdbd2cSJim Jagielski if ( pFontItem )
657*b1cdbd2cSJim Jagielski {
658*b1cdbd2cSJim Jagielski aCurFont.SetName ( pFontItem->GetFamilyName() );
659*b1cdbd2cSJim Jagielski aCurFont.SetFamily ( pFontItem->GetFamily() );
660*b1cdbd2cSJim Jagielski aCurFont.SetStyleName ( pFontItem->GetStyleName() );
661*b1cdbd2cSJim Jagielski aCurFont.SetPitch ( pFontItem->GetPitch() );
662*b1cdbd2cSJim Jagielski aCurFont.SetCharSet ( pFontItem->GetCharSet() );
663*b1cdbd2cSJim Jagielski }
664*b1cdbd2cSJim Jagielski String aCurName = aCurFont.GetName();
665*b1cdbd2cSJim Jagielski if ( GetText() != aCurName )
666*b1cdbd2cSJim Jagielski SetText( aCurName );
667*b1cdbd2cSJim Jagielski }
668*b1cdbd2cSJim Jagielski
669*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
670*b1cdbd2cSJim Jagielski
PreNotify(NotifyEvent & rNEvt)671*b1cdbd2cSJim Jagielski long SvxFontNameBox_Impl::PreNotify( NotifyEvent& rNEvt )
672*b1cdbd2cSJim Jagielski {
673*b1cdbd2cSJim Jagielski sal_uInt16 nType = rNEvt.GetType();
674*b1cdbd2cSJim Jagielski
675*b1cdbd2cSJim Jagielski if ( EVENT_MOUSEBUTTONDOWN == nType || EVENT_GETFOCUS == nType )
676*b1cdbd2cSJim Jagielski {
677*b1cdbd2cSJim Jagielski EnableControls_Impl();
678*b1cdbd2cSJim Jagielski FillList();
679*b1cdbd2cSJim Jagielski }
680*b1cdbd2cSJim Jagielski return FontNameBox::PreNotify( rNEvt );
681*b1cdbd2cSJim Jagielski }
682*b1cdbd2cSJim Jagielski
683*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
684*b1cdbd2cSJim Jagielski
Notify(NotifyEvent & rNEvt)685*b1cdbd2cSJim Jagielski long SvxFontNameBox_Impl::Notify( NotifyEvent& rNEvt )
686*b1cdbd2cSJim Jagielski {
687*b1cdbd2cSJim Jagielski long nHandled = 0;
688*b1cdbd2cSJim Jagielski
689*b1cdbd2cSJim Jagielski if ( rNEvt.GetType() == EVENT_KEYINPUT )
690*b1cdbd2cSJim Jagielski {
691*b1cdbd2cSJim Jagielski sal_uInt16 nCode = rNEvt.GetKeyEvent()->GetKeyCode().GetCode();
692*b1cdbd2cSJim Jagielski
693*b1cdbd2cSJim Jagielski switch ( nCode )
694*b1cdbd2cSJim Jagielski {
695*b1cdbd2cSJim Jagielski case KEY_RETURN:
696*b1cdbd2cSJim Jagielski case KEY_TAB:
697*b1cdbd2cSJim Jagielski {
698*b1cdbd2cSJim Jagielski if ( KEY_TAB == nCode )
699*b1cdbd2cSJim Jagielski bRelease = sal_False;
700*b1cdbd2cSJim Jagielski else
701*b1cdbd2cSJim Jagielski nHandled = 1;
702*b1cdbd2cSJim Jagielski Select();
703*b1cdbd2cSJim Jagielski break;
704*b1cdbd2cSJim Jagielski }
705*b1cdbd2cSJim Jagielski
706*b1cdbd2cSJim Jagielski case KEY_ESCAPE:
707*b1cdbd2cSJim Jagielski SetText( aCurText );
708*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
709*b1cdbd2cSJim Jagielski break;
710*b1cdbd2cSJim Jagielski }
711*b1cdbd2cSJim Jagielski }
712*b1cdbd2cSJim Jagielski else if ( EVENT_LOSEFOCUS == rNEvt.GetType() )
713*b1cdbd2cSJim Jagielski {
714*b1cdbd2cSJim Jagielski Window* pFocusWin = Application::GetFocusWindow();
715*b1cdbd2cSJim Jagielski if ( !HasFocus() && GetSubEdit() != pFocusWin )
716*b1cdbd2cSJim Jagielski SetText( GetSavedValue() );
717*b1cdbd2cSJim Jagielski }
718*b1cdbd2cSJim Jagielski
719*b1cdbd2cSJim Jagielski return nHandled ? nHandled : FontNameBox::Notify( rNEvt );
720*b1cdbd2cSJim Jagielski }
721*b1cdbd2cSJim Jagielski
722*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------------------
DataChanged(const DataChangedEvent & rDCEvt)723*b1cdbd2cSJim Jagielski void SvxFontNameBox_Impl::DataChanged( const DataChangedEvent& rDCEvt )
724*b1cdbd2cSJim Jagielski {
725*b1cdbd2cSJim Jagielski if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
726*b1cdbd2cSJim Jagielski (rDCEvt.GetFlags() & SETTINGS_STYLE) )
727*b1cdbd2cSJim Jagielski {
728*b1cdbd2cSJim Jagielski SetSizePixel(LogicToPixel(aLogicalSize, MAP_APPFONT));
729*b1cdbd2cSJim Jagielski Size aDropSize( aLogicalSize.Width(), LOGICAL_EDIT_HEIGHT);
730*b1cdbd2cSJim Jagielski SetDropDownSizePixel(LogicToPixel(aDropSize, MAP_APPFONT));
731*b1cdbd2cSJim Jagielski }
732*b1cdbd2cSJim Jagielski
733*b1cdbd2cSJim Jagielski FontNameBox::DataChanged( rDCEvt );
734*b1cdbd2cSJim Jagielski }
735*b1cdbd2cSJim Jagielski
736*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
737*b1cdbd2cSJim Jagielski
ReleaseFocus_Impl()738*b1cdbd2cSJim Jagielski void SvxFontNameBox_Impl::ReleaseFocus_Impl()
739*b1cdbd2cSJim Jagielski {
740*b1cdbd2cSJim Jagielski if ( !bRelease )
741*b1cdbd2cSJim Jagielski {
742*b1cdbd2cSJim Jagielski bRelease = sal_True;
743*b1cdbd2cSJim Jagielski return;
744*b1cdbd2cSJim Jagielski }
745*b1cdbd2cSJim Jagielski if ( m_xFrame.is() && m_xFrame->getContainerWindow().is() )
746*b1cdbd2cSJim Jagielski m_xFrame->getContainerWindow()->setFocus();
747*b1cdbd2cSJim Jagielski }
748*b1cdbd2cSJim Jagielski
749*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
750*b1cdbd2cSJim Jagielski
EnableControls_Impl()751*b1cdbd2cSJim Jagielski void SvxFontNameBox_Impl::EnableControls_Impl()
752*b1cdbd2cSJim Jagielski {
753*b1cdbd2cSJim Jagielski SvtFontOptions aFontOpt;
754*b1cdbd2cSJim Jagielski sal_Bool bEnable = aFontOpt.IsFontHistoryEnabled();
755*b1cdbd2cSJim Jagielski sal_uInt16 nEntries = bEnable ? MAX_MRU_FONTNAME_ENTRIES : 0;
756*b1cdbd2cSJim Jagielski if ( GetMaxMRUCount() != nEntries )
757*b1cdbd2cSJim Jagielski {
758*b1cdbd2cSJim Jagielski // refill in the next GetFocus-Handler
759*b1cdbd2cSJim Jagielski pFontList = NULL;
760*b1cdbd2cSJim Jagielski Clear();
761*b1cdbd2cSJim Jagielski SetMaxMRUCount( nEntries );
762*b1cdbd2cSJim Jagielski }
763*b1cdbd2cSJim Jagielski
764*b1cdbd2cSJim Jagielski bEnable = aFontOpt.IsFontWYSIWYGEnabled();
765*b1cdbd2cSJim Jagielski EnableWYSIWYG( bEnable );
766*b1cdbd2cSJim Jagielski EnableSymbols( bEnable );
767*b1cdbd2cSJim Jagielski }
768*b1cdbd2cSJim Jagielski
769*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
770*b1cdbd2cSJim Jagielski
Select()771*b1cdbd2cSJim Jagielski void SvxFontNameBox_Impl::Select()
772*b1cdbd2cSJim Jagielski {
773*b1cdbd2cSJim Jagielski FontNameBox::Select();
774*b1cdbd2cSJim Jagielski
775*b1cdbd2cSJim Jagielski if ( !IsTravelSelect() )
776*b1cdbd2cSJim Jagielski {
777*b1cdbd2cSJim Jagielski if ( pFontList )
778*b1cdbd2cSJim Jagielski {
779*b1cdbd2cSJim Jagielski FontInfo aInfo( pFontList->Get( GetText(),
780*b1cdbd2cSJim Jagielski aCurFont.GetWeight(),
781*b1cdbd2cSJim Jagielski aCurFont.GetItalic() ) );
782*b1cdbd2cSJim Jagielski aCurFont = aInfo;
783*b1cdbd2cSJim Jagielski
784*b1cdbd2cSJim Jagielski SvxFontItem aFontItem( aInfo.GetFamily(),
785*b1cdbd2cSJim Jagielski aInfo.GetName(),
786*b1cdbd2cSJim Jagielski aInfo.GetStyleName(),
787*b1cdbd2cSJim Jagielski aInfo.GetPitch(),
788*b1cdbd2cSJim Jagielski aInfo.GetCharSet(),
789*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_FONT );
790*b1cdbd2cSJim Jagielski
791*b1cdbd2cSJim Jagielski Any a;
792*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
793*b1cdbd2cSJim Jagielski aArgs[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "CharFontName" ));
794*b1cdbd2cSJim Jagielski aFontItem.QueryValue( a );
795*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
796*b1cdbd2cSJim Jagielski
797*b1cdbd2cSJim Jagielski // #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call.
798*b1cdbd2cSJim Jagielski // This instance may be deleted in the meantime (i.e. when a dialog is opened
799*b1cdbd2cSJim Jagielski // while in Dispatch()), accessing members will crash in this case.
800*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
801*b1cdbd2cSJim Jagielski
802*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( m_xDispatchProvider,
803*b1cdbd2cSJim Jagielski OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:CharFontName" )),
804*b1cdbd2cSJim Jagielski aArgs );
805*b1cdbd2cSJim Jagielski }
806*b1cdbd2cSJim Jagielski else
807*b1cdbd2cSJim Jagielski ReleaseFocus_Impl();
808*b1cdbd2cSJim Jagielski }
809*b1cdbd2cSJim Jagielski }
810*b1cdbd2cSJim Jagielski
811*b1cdbd2cSJim Jagielski //========================================================================
812*b1cdbd2cSJim Jagielski // class SvxColorWindow_Impl --------------------------------------------------
813*b1cdbd2cSJim Jagielski //========================================================================
814*b1cdbd2cSJim Jagielski #ifndef WB_NO_DIRECTSELECT
815*b1cdbd2cSJim Jagielski #define WB_NO_DIRECTSELECT ((WinBits)0x04000000)
816*b1cdbd2cSJim Jagielski #endif
817*b1cdbd2cSJim Jagielski
SvxColorWindow_Impl(const OUString & rCommand,sal_uInt16 nSlotId,const Reference<XFrame> & rFrame,const String & rWndTitle,Window * pParentWindow)818*b1cdbd2cSJim Jagielski SvxColorWindow_Impl::SvxColorWindow_Impl( const OUString& rCommand,
819*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId,
820*b1cdbd2cSJim Jagielski const Reference< XFrame >& rFrame,
821*b1cdbd2cSJim Jagielski const String& rWndTitle,
822*b1cdbd2cSJim Jagielski Window* pParentWindow ) :
823*b1cdbd2cSJim Jagielski
824*b1cdbd2cSJim Jagielski SfxPopupWindow( nSlotId, rFrame, pParentWindow, WinBits( WB_BORDER | WB_STDFLOATWIN | WB_3DLOOK|WB_DIALOGCONTROL ) ),
825*b1cdbd2cSJim Jagielski
826*b1cdbd2cSJim Jagielski theSlotId( nSlotId ),
827*b1cdbd2cSJim Jagielski aColorSet( this, WinBits( WB_ITEMBORDER | WB_NAMEFIELD | WB_3DLOOK | WB_NO_DIRECTSELECT) ),
828*b1cdbd2cSJim Jagielski maCommand( rCommand )
829*b1cdbd2cSJim Jagielski
830*b1cdbd2cSJim Jagielski {
831*b1cdbd2cSJim Jagielski SfxObjectShell* pDocSh = SfxObjectShell::Current();
832*b1cdbd2cSJim Jagielski const SfxPoolItem* pItem = NULL;
833*b1cdbd2cSJim Jagielski XColorListSharedPtr aColorTable;
834*b1cdbd2cSJim Jagielski
835*b1cdbd2cSJim Jagielski if ( pDocSh )
836*b1cdbd2cSJim Jagielski if ( 0 != ( pItem = pDocSh->GetItem( SID_COLOR_TABLE ) ) )
837*b1cdbd2cSJim Jagielski aColorTable = static_cast< const SvxColorTableItem* >(pItem)->GetColorTable();
838*b1cdbd2cSJim Jagielski
839*b1cdbd2cSJim Jagielski if ( !aColorTable )
840*b1cdbd2cSJim Jagielski {
841*b1cdbd2cSJim Jagielski aColorTable = XPropertyListFactory::CreateSharedXColorList(SvtPathOptions().GetPalettePath());
842*b1cdbd2cSJim Jagielski }
843*b1cdbd2cSJim Jagielski
844*b1cdbd2cSJim Jagielski if ( SID_ATTR_CHAR_COLOR_BACKGROUND == theSlotId || SID_BACKGROUND_COLOR == theSlotId )
845*b1cdbd2cSJim Jagielski {
846*b1cdbd2cSJim Jagielski aColorSet.SetStyle( aColorSet.GetStyle() | WB_NONEFIELD );
847*b1cdbd2cSJim Jagielski aColorSet.SetText( SVX_RESSTR( RID_SVXSTR_TRANSPARENT ) );
848*b1cdbd2cSJim Jagielski aColorSet.SetAccessibleName( SVX_RESSTR( RID_SVXSTR_BACKGROUND ) );
849*b1cdbd2cSJim Jagielski }
850*b1cdbd2cSJim Jagielski else if ( SID_ATTR_CHAR_COLOR == theSlotId || SID_ATTR_CHAR_COLOR2 == theSlotId || SID_EXTRUSION_3D_COLOR == theSlotId )
851*b1cdbd2cSJim Jagielski {
852*b1cdbd2cSJim Jagielski SfxPoolItem* pDummy;
853*b1cdbd2cSJim Jagielski
854*b1cdbd2cSJim Jagielski Reference< XDispatchProvider > aDisp( GetFrame()->getController(), UNO_QUERY );
855*b1cdbd2cSJim Jagielski SfxQueryStatus aQueryStatus( aDisp,
856*b1cdbd2cSJim Jagielski SID_ATTR_AUTO_COLOR_INVALID,
857*b1cdbd2cSJim Jagielski rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:AutoColorInvalid" )));
858*b1cdbd2cSJim Jagielski SfxItemState eState = aQueryStatus.QueryState( pDummy );
859*b1cdbd2cSJim Jagielski if( (SFX_ITEM_DEFAULT > eState) || ( SID_EXTRUSION_3D_COLOR == theSlotId ) )
860*b1cdbd2cSJim Jagielski {
861*b1cdbd2cSJim Jagielski aColorSet.SetStyle( aColorSet.GetStyle() | WB_NONEFIELD );
862*b1cdbd2cSJim Jagielski aColorSet.SetText( SVX_RESSTR( RID_SVXSTR_AUTOMATIC ) );
863*b1cdbd2cSJim Jagielski aColorSet.SetAccessibleName( SVX_RESSTR( RID_SVXSTR_TEXTCOLOR ) );
864*b1cdbd2cSJim Jagielski }
865*b1cdbd2cSJim Jagielski }
866*b1cdbd2cSJim Jagielski else
867*b1cdbd2cSJim Jagielski {
868*b1cdbd2cSJim Jagielski aColorSet.SetAccessibleName( SVX_RESSTR( RID_SVXSTR_FRAME_COLOR ) );
869*b1cdbd2cSJim Jagielski }
870*b1cdbd2cSJim Jagielski
871*b1cdbd2cSJim Jagielski if ( aColorTable )
872*b1cdbd2cSJim Jagielski {
873*b1cdbd2cSJim Jagielski const long nColorCount(aColorTable->Count());
874*b1cdbd2cSJim Jagielski const Size aNewSize(aColorSet.layoutAllVisible(nColorCount));
875*b1cdbd2cSJim Jagielski aColorSet.SetOutputSizePixel(aNewSize);
876*b1cdbd2cSJim Jagielski static sal_Int32 nAdd = 4;
877*b1cdbd2cSJim Jagielski
878*b1cdbd2cSJim Jagielski SetOutputSizePixel(Size(aNewSize.Width() + nAdd, aNewSize.Height() + nAdd));
879*b1cdbd2cSJim Jagielski aColorSet.Clear();
880*b1cdbd2cSJim Jagielski aColorSet.addEntriesForXColorList(aColorTable);
881*b1cdbd2cSJim Jagielski }
882*b1cdbd2cSJim Jagielski
883*b1cdbd2cSJim Jagielski aColorSet.SetSelectHdl( LINK( this, SvxColorWindow_Impl, SelectHdl ) );
884*b1cdbd2cSJim Jagielski SetHelpId( HID_POPUP_COLOR );
885*b1cdbd2cSJim Jagielski aColorSet.SetHelpId( HID_POPUP_COLOR_CTRL );
886*b1cdbd2cSJim Jagielski SetText( rWndTitle );
887*b1cdbd2cSJim Jagielski aColorSet.Show();
888*b1cdbd2cSJim Jagielski AddStatusListener( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ColorTableState" )));
889*b1cdbd2cSJim Jagielski }
890*b1cdbd2cSJim Jagielski
~SvxColorWindow_Impl()891*b1cdbd2cSJim Jagielski SvxColorWindow_Impl::~SvxColorWindow_Impl()
892*b1cdbd2cSJim Jagielski {
893*b1cdbd2cSJim Jagielski }
894*b1cdbd2cSJim Jagielski
KeyInput(const KeyEvent & rKEvt)895*b1cdbd2cSJim Jagielski void SvxColorWindow_Impl::KeyInput( const KeyEvent& rKEvt )
896*b1cdbd2cSJim Jagielski {
897*b1cdbd2cSJim Jagielski aColorSet.KeyInput(rKEvt);
898*b1cdbd2cSJim Jagielski }
899*b1cdbd2cSJim Jagielski
Clone() const900*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxColorWindow_Impl::Clone() const
901*b1cdbd2cSJim Jagielski {
902*b1cdbd2cSJim Jagielski return new SvxColorWindow_Impl( maCommand, theSlotId, GetFrame(), GetText(), GetParent() );
903*b1cdbd2cSJim Jagielski }
904*b1cdbd2cSJim Jagielski
905*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
906*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxColorWindow_Impl,SelectHdl,void *,EMPTYARG)907*b1cdbd2cSJim Jagielski IMPL_LINK( SvxColorWindow_Impl, SelectHdl, void *, EMPTYARG )
908*b1cdbd2cSJim Jagielski {
909*b1cdbd2cSJim Jagielski sal_uInt16 nItemId = aColorSet.GetSelectItemId();
910*b1cdbd2cSJim Jagielski SvxColorItem aColorItem( aColorSet.GetItemColor( nItemId ), theSlotId );
911*b1cdbd2cSJim Jagielski
912*b1cdbd2cSJim Jagielski /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() calls.
913*b1cdbd2cSJim Jagielski This instance may be deleted in the meantime (i.e. when a dialog is opened
914*b1cdbd2cSJim Jagielski while in Dispatch()), accessing members will crash in this case. */
915*b1cdbd2cSJim Jagielski aColorSet.SetNoSelection();
916*b1cdbd2cSJim Jagielski
917*b1cdbd2cSJim Jagielski if ( IsInPopupMode() )
918*b1cdbd2cSJim Jagielski EndPopupMode();
919*b1cdbd2cSJim Jagielski
920*b1cdbd2cSJim Jagielski if ( !nItemId && ( SID_ATTR_CHAR_COLOR_BACKGROUND == theSlotId || SID_BACKGROUND_COLOR == theSlotId ) )
921*b1cdbd2cSJim Jagielski {
922*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs;
923*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ),
924*b1cdbd2cSJim Jagielski maCommand,
925*b1cdbd2cSJim Jagielski aArgs );
926*b1cdbd2cSJim Jagielski }
927*b1cdbd2cSJim Jagielski else if ( !nItemId && (SID_ATTR_CHAR_COLOR == theSlotId || SID_ATTR_CHAR_COLOR2 == theSlotId || SID_EXTRUSION_3D_COLOR == theSlotId) )
928*b1cdbd2cSJim Jagielski {
929*b1cdbd2cSJim Jagielski SvxColorItem _aColorItem( COL_AUTO, theSlotId );
930*b1cdbd2cSJim Jagielski INetURLObject aObj( maCommand );
931*b1cdbd2cSJim Jagielski
932*b1cdbd2cSJim Jagielski Any a;
933*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
934*b1cdbd2cSJim Jagielski aArgs[0].Name = aObj.GetURLPath();
935*b1cdbd2cSJim Jagielski _aColorItem.QueryValue( a );
936*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
937*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ),
938*b1cdbd2cSJim Jagielski maCommand,
939*b1cdbd2cSJim Jagielski aArgs );
940*b1cdbd2cSJim Jagielski }
941*b1cdbd2cSJim Jagielski else
942*b1cdbd2cSJim Jagielski {
943*b1cdbd2cSJim Jagielski INetURLObject aObj( maCommand );
944*b1cdbd2cSJim Jagielski
945*b1cdbd2cSJim Jagielski Any a;
946*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
947*b1cdbd2cSJim Jagielski aArgs[0].Name = aObj.GetURLPath();
948*b1cdbd2cSJim Jagielski aColorItem.QueryValue( a );
949*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
950*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ),
951*b1cdbd2cSJim Jagielski maCommand,
952*b1cdbd2cSJim Jagielski aArgs );
953*b1cdbd2cSJim Jagielski }
954*b1cdbd2cSJim Jagielski
955*b1cdbd2cSJim Jagielski return 0;
956*b1cdbd2cSJim Jagielski }
957*b1cdbd2cSJim Jagielski
958*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
959*b1cdbd2cSJim Jagielski
Resize()960*b1cdbd2cSJim Jagielski void SvxColorWindow_Impl::Resize()
961*b1cdbd2cSJim Jagielski {
962*b1cdbd2cSJim Jagielski lcl_ResizeValueSet( *this, aColorSet);
963*b1cdbd2cSJim Jagielski }
964*b1cdbd2cSJim Jagielski
965*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
966*b1cdbd2cSJim Jagielski
StartSelection()967*b1cdbd2cSJim Jagielski void SvxColorWindow_Impl::StartSelection()
968*b1cdbd2cSJim Jagielski {
969*b1cdbd2cSJim Jagielski aColorSet.StartSelection();
970*b1cdbd2cSJim Jagielski }
971*b1cdbd2cSJim Jagielski
972*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
973*b1cdbd2cSJim Jagielski
Close()974*b1cdbd2cSJim Jagielski sal_Bool SvxColorWindow_Impl::Close()
975*b1cdbd2cSJim Jagielski {
976*b1cdbd2cSJim Jagielski return SfxPopupWindow::Close();
977*b1cdbd2cSJim Jagielski }
978*b1cdbd2cSJim Jagielski
979*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
980*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState)981*b1cdbd2cSJim Jagielski void SvxColorWindow_Impl::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
982*b1cdbd2cSJim Jagielski {
983*b1cdbd2cSJim Jagielski if (( SFX_ITEM_DISABLED != eState ) && pState )
984*b1cdbd2cSJim Jagielski {
985*b1cdbd2cSJim Jagielski if (( nSID == SID_COLOR_TABLE ) && ( pState->ISA( SvxColorTableItem )))
986*b1cdbd2cSJim Jagielski {
987*b1cdbd2cSJim Jagielski XColorListSharedPtr aColorTable;
988*b1cdbd2cSJim Jagielski
989*b1cdbd2cSJim Jagielski if(pState)
990*b1cdbd2cSJim Jagielski {
991*b1cdbd2cSJim Jagielski aColorTable = static_cast< const SvxColorTableItem* >(pState)->GetColorTable();
992*b1cdbd2cSJim Jagielski }
993*b1cdbd2cSJim Jagielski
994*b1cdbd2cSJim Jagielski if ( aColorTable )
995*b1cdbd2cSJim Jagielski {
996*b1cdbd2cSJim Jagielski // Die Liste der Farben (ColorTable) hat sich ge"andert:
997*b1cdbd2cSJim Jagielski const long nColorCount(aColorTable->Count());
998*b1cdbd2cSJim Jagielski const Size aNewSize(aColorSet.layoutAllVisible(nColorCount));
999*b1cdbd2cSJim Jagielski aColorSet.SetOutputSizePixel(aNewSize);
1000*b1cdbd2cSJim Jagielski static sal_Int32 nAdd = 4;
1001*b1cdbd2cSJim Jagielski
1002*b1cdbd2cSJim Jagielski SetOutputSizePixel(Size(aNewSize.Width() + nAdd, aNewSize.Height() + nAdd));
1003*b1cdbd2cSJim Jagielski aColorSet.Clear();
1004*b1cdbd2cSJim Jagielski aColorSet.addEntriesForXColorList(aColorTable);
1005*b1cdbd2cSJim Jagielski }
1006*b1cdbd2cSJim Jagielski }
1007*b1cdbd2cSJim Jagielski }
1008*b1cdbd2cSJim Jagielski }
1009*b1cdbd2cSJim Jagielski
1010*b1cdbd2cSJim Jagielski //========================================================================
1011*b1cdbd2cSJim Jagielski // class SvxFrameWindow_Impl --------------------------------------------------
1012*b1cdbd2cSJim Jagielski //========================================================================
1013*b1cdbd2cSJim Jagielski
SvxFrameWindow_Impl(sal_uInt16 nId,const Reference<XFrame> & rFrame,Window * pParentWindow)1014*b1cdbd2cSJim Jagielski SvxFrameWindow_Impl::SvxFrameWindow_Impl( sal_uInt16 nId, const Reference< XFrame >& rFrame, Window* pParentWindow ) :
1015*b1cdbd2cSJim Jagielski
1016*b1cdbd2cSJim Jagielski SfxPopupWindow( nId, rFrame, pParentWindow, WinBits( WB_BORDER | WB_STDFLOATWIN | WB_3DLOOK | WB_DIALOGCONTROL ) ),
1017*b1cdbd2cSJim Jagielski aFrameSet ( this, WinBits( WB_ITEMBORDER | WB_DOUBLEBORDER | WB_3DLOOK | WB_NO_DIRECTSELECT ) ),
1018*b1cdbd2cSJim Jagielski bParagraphMode(sal_False)
1019*b1cdbd2cSJim Jagielski
1020*b1cdbd2cSJim Jagielski {
1021*b1cdbd2cSJim Jagielski BindListener();
1022*b1cdbd2cSJim Jagielski String sCommand(String::CreateFromAscii( ".uno:BorderReducedMode" ));
1023*b1cdbd2cSJim Jagielski AddStatusListener( sCommand );
1024*b1cdbd2cSJim Jagielski aImgList = ImageList( SVX_RES( IsHighContrast()? RID_SVXIL_FRAME_HC : RID_SVXIL_FRAME ) );
1025*b1cdbd2cSJim Jagielski
1026*b1cdbd2cSJim Jagielski /*
1027*b1cdbd2cSJim Jagielski * 1 2 3 4
1028*b1cdbd2cSJim Jagielski * -------------------------------------
1029*b1cdbd2cSJim Jagielski * NONE LEFT RIGHT LEFTRIGHT
1030*b1cdbd2cSJim Jagielski * TOP BOTTOM TOPBOTTOM OUTER
1031*b1cdbd2cSJim Jagielski * -------------------------------------
1032*b1cdbd2cSJim Jagielski * HOR HORINNER VERINNER ALL <- kann ueber bParagraphMode
1033*b1cdbd2cSJim Jagielski * abgeschaltet werden
1034*b1cdbd2cSJim Jagielski */
1035*b1cdbd2cSJim Jagielski
1036*b1cdbd2cSJim Jagielski sal_uInt16 i = 0;
1037*b1cdbd2cSJim Jagielski
1038*b1cdbd2cSJim Jagielski for ( i=1; i<9; i++ )
1039*b1cdbd2cSJim Jagielski aFrameSet.InsertItem( i, aImgList.GetImage(i) );
1040*b1cdbd2cSJim Jagielski
1041*b1cdbd2cSJim Jagielski //bParagraphMode should have been set in StateChanged
1042*b1cdbd2cSJim Jagielski if ( !bParagraphMode )
1043*b1cdbd2cSJim Jagielski for ( i = 9; i < 13; i++ )
1044*b1cdbd2cSJim Jagielski aFrameSet.InsertItem( i, aImgList.GetImage(i) );
1045*b1cdbd2cSJim Jagielski
1046*b1cdbd2cSJim Jagielski aFrameSet.SetColCount( 4 );
1047*b1cdbd2cSJim Jagielski aFrameSet.SetSelectHdl( LINK( this, SvxFrameWindow_Impl, SelectHdl ) );
1048*b1cdbd2cSJim Jagielski
1049*b1cdbd2cSJim Jagielski lcl_CalcSizeValueSet( *this, aFrameSet,Size( 20, 20 ));
1050*b1cdbd2cSJim Jagielski
1051*b1cdbd2cSJim Jagielski SetHelpId( HID_POPUP_FRAME );
1052*b1cdbd2cSJim Jagielski SetText( SVX_RESSTR(RID_SVXSTR_FRAME) );
1053*b1cdbd2cSJim Jagielski aFrameSet.SetAccessibleName( SVX_RESSTR(RID_SVXSTR_FRAME) );
1054*b1cdbd2cSJim Jagielski aFrameSet.Show();
1055*b1cdbd2cSJim Jagielski }
1056*b1cdbd2cSJim Jagielski /*-- 22.09.2004 12:27:50---------------------------------------------------
1057*b1cdbd2cSJim Jagielski
1058*b1cdbd2cSJim Jagielski -----------------------------------------------------------------------*/
~SvxFrameWindow_Impl()1059*b1cdbd2cSJim Jagielski SvxFrameWindow_Impl::~SvxFrameWindow_Impl()
1060*b1cdbd2cSJim Jagielski {
1061*b1cdbd2cSJim Jagielski UnbindListener();
1062*b1cdbd2cSJim Jagielski }
1063*b1cdbd2cSJim Jagielski
Clone() const1064*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxFrameWindow_Impl::Clone() const
1065*b1cdbd2cSJim Jagielski {
1066*b1cdbd2cSJim Jagielski //! HACK: wie bekomme ich den Paragraph-Mode ??
1067*b1cdbd2cSJim Jagielski return new SvxFrameWindow_Impl( GetId(), GetFrame(), GetParent() );
1068*b1cdbd2cSJim Jagielski }
1069*b1cdbd2cSJim Jagielski
GetPreferredKeyInputWindow()1070*b1cdbd2cSJim Jagielski Window* SvxFrameWindow_Impl::GetPreferredKeyInputWindow()
1071*b1cdbd2cSJim Jagielski {
1072*b1cdbd2cSJim Jagielski return &aFrameSet;
1073*b1cdbd2cSJim Jagielski }
1074*b1cdbd2cSJim Jagielski
GetFocus()1075*b1cdbd2cSJim Jagielski void SvxFrameWindow_Impl::GetFocus()
1076*b1cdbd2cSJim Jagielski {
1077*b1cdbd2cSJim Jagielski aFrameSet.GrabFocus();
1078*b1cdbd2cSJim Jagielski }
1079*b1cdbd2cSJim Jagielski
DataChanged(const DataChangedEvent & rDCEvt)1080*b1cdbd2cSJim Jagielski void SvxFrameWindow_Impl::DataChanged( const DataChangedEvent& rDCEvt )
1081*b1cdbd2cSJim Jagielski {
1082*b1cdbd2cSJim Jagielski SfxPopupWindow::DataChanged( rDCEvt );
1083*b1cdbd2cSJim Jagielski
1084*b1cdbd2cSJim Jagielski if( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
1085*b1cdbd2cSJim Jagielski {
1086*b1cdbd2cSJim Jagielski aImgList = ImageList( SVX_RES( IsHighContrast()? RID_SVXIL_FRAME_HC : RID_SVXIL_FRAME ) );
1087*b1cdbd2cSJim Jagielski
1088*b1cdbd2cSJim Jagielski sal_uInt16 nNumOfItems = aFrameSet.GetItemCount();
1089*b1cdbd2cSJim Jagielski
1090*b1cdbd2cSJim Jagielski for( sal_uInt16 i = 1 ; i <= nNumOfItems ; ++i )
1091*b1cdbd2cSJim Jagielski aFrameSet.SetItemImage( i, aImgList.GetImage( i ) );
1092*b1cdbd2cSJim Jagielski }
1093*b1cdbd2cSJim Jagielski }
1094*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1095*b1cdbd2cSJim Jagielski
1096*b1cdbd2cSJim Jagielski #define FRM_VALID_LEFT 0x01
1097*b1cdbd2cSJim Jagielski #define FRM_VALID_RIGHT 0x02
1098*b1cdbd2cSJim Jagielski #define FRM_VALID_TOP 0x04
1099*b1cdbd2cSJim Jagielski #define FRM_VALID_BOTTOM 0x08
1100*b1cdbd2cSJim Jagielski #define FRM_VALID_HINNER 0x10
1101*b1cdbd2cSJim Jagielski #define FRM_VALID_VINNER 0x20
1102*b1cdbd2cSJim Jagielski #define FRM_VALID_OUTER 0x0f
1103*b1cdbd2cSJim Jagielski #define FRM_VALID_ALL 0xff
1104*b1cdbd2cSJim Jagielski
1105*b1cdbd2cSJim Jagielski //
1106*b1cdbd2cSJim Jagielski // Per default bleiben ungesetzte Linien unveraendert
1107*b1cdbd2cSJim Jagielski // Mit Shift werden ungesetzte Linien zurueckgsetzt
1108*b1cdbd2cSJim Jagielski //
IMPL_LINK(SvxFrameWindow_Impl,SelectHdl,void *,EMPTYARG)1109*b1cdbd2cSJim Jagielski IMPL_LINK( SvxFrameWindow_Impl, SelectHdl, void *, EMPTYARG )
1110*b1cdbd2cSJim Jagielski {
1111*b1cdbd2cSJim Jagielski ::Color aColBlack( COL_BLACK );
1112*b1cdbd2cSJim Jagielski SvxBoxItem aBorderOuter( SID_ATTR_BORDER_OUTER );
1113*b1cdbd2cSJim Jagielski SvxBoxInfoItem aBorderInner( SID_ATTR_BORDER_INNER );
1114*b1cdbd2cSJim Jagielski SvxBorderLine theDefLine;
1115*b1cdbd2cSJim Jagielski SvxBorderLine *pLeft = 0,
1116*b1cdbd2cSJim Jagielski *pRight = 0,
1117*b1cdbd2cSJim Jagielski *pTop = 0,
1118*b1cdbd2cSJim Jagielski *pBottom = 0;
1119*b1cdbd2cSJim Jagielski sal_uInt16 nSel = aFrameSet.GetSelectItemId();
1120*b1cdbd2cSJim Jagielski sal_uInt16 nModifier = aFrameSet.GetModifier();
1121*b1cdbd2cSJim Jagielski sal_uInt8 nValidFlags = 0;
1122*b1cdbd2cSJim Jagielski
1123*b1cdbd2cSJim Jagielski theDefLine.SetOutWidth( DEF_LINE_WIDTH_0 );
1124*b1cdbd2cSJim Jagielski switch ( nSel )
1125*b1cdbd2cSJim Jagielski {
1126*b1cdbd2cSJim Jagielski case 1: nValidFlags |= FRM_VALID_ALL;
1127*b1cdbd2cSJim Jagielski break; // NONE
1128*b1cdbd2cSJim Jagielski case 2: pLeft = &theDefLine;
1129*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_LEFT;
1130*b1cdbd2cSJim Jagielski break; // LEFT
1131*b1cdbd2cSJim Jagielski case 3: pRight = &theDefLine;
1132*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_RIGHT;
1133*b1cdbd2cSJim Jagielski break; // RIGHT
1134*b1cdbd2cSJim Jagielski case 4: pLeft = pRight = &theDefLine;
1135*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_RIGHT|FRM_VALID_LEFT;
1136*b1cdbd2cSJim Jagielski break; // LEFTRIGHT
1137*b1cdbd2cSJim Jagielski case 5: pTop = &theDefLine;
1138*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_TOP;
1139*b1cdbd2cSJim Jagielski break; // TOP
1140*b1cdbd2cSJim Jagielski case 6: pBottom = &theDefLine;
1141*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_BOTTOM;
1142*b1cdbd2cSJim Jagielski break; // BOTTOM
1143*b1cdbd2cSJim Jagielski case 7: pTop = pBottom = &theDefLine;
1144*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_BOTTOM|FRM_VALID_TOP;
1145*b1cdbd2cSJim Jagielski break; // TOPBOTTOM
1146*b1cdbd2cSJim Jagielski case 8: pLeft = pRight = pTop = pBottom = &theDefLine;
1147*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_OUTER;
1148*b1cdbd2cSJim Jagielski break; // OUTER
1149*b1cdbd2cSJim Jagielski
1150*b1cdbd2cSJim Jagielski // Tabelle innen:
1151*b1cdbd2cSJim Jagielski case 9: // HOR
1152*b1cdbd2cSJim Jagielski pTop = pBottom = &theDefLine;
1153*b1cdbd2cSJim Jagielski aBorderInner.SetLine( &theDefLine, BOXINFO_LINE_HORI );
1154*b1cdbd2cSJim Jagielski aBorderInner.SetLine( NULL, BOXINFO_LINE_VERT );
1155*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_HINNER|FRM_VALID_TOP|FRM_VALID_BOTTOM;
1156*b1cdbd2cSJim Jagielski break;
1157*b1cdbd2cSJim Jagielski
1158*b1cdbd2cSJim Jagielski case 10: // HORINNER
1159*b1cdbd2cSJim Jagielski pLeft = pRight = pTop = pBottom = &theDefLine;
1160*b1cdbd2cSJim Jagielski aBorderInner.SetLine( &theDefLine, BOXINFO_LINE_HORI );
1161*b1cdbd2cSJim Jagielski aBorderInner.SetLine( NULL, BOXINFO_LINE_VERT );
1162*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_RIGHT|FRM_VALID_LEFT|FRM_VALID_HINNER|FRM_VALID_TOP|FRM_VALID_BOTTOM;
1163*b1cdbd2cSJim Jagielski break;
1164*b1cdbd2cSJim Jagielski
1165*b1cdbd2cSJim Jagielski case 11: // VERINNER
1166*b1cdbd2cSJim Jagielski pLeft = pRight = pTop = pBottom = &theDefLine;
1167*b1cdbd2cSJim Jagielski aBorderInner.SetLine( NULL, BOXINFO_LINE_HORI );
1168*b1cdbd2cSJim Jagielski aBorderInner.SetLine( &theDefLine, BOXINFO_LINE_VERT );
1169*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_RIGHT|FRM_VALID_LEFT|FRM_VALID_VINNER|FRM_VALID_TOP|FRM_VALID_BOTTOM;
1170*b1cdbd2cSJim Jagielski break;
1171*b1cdbd2cSJim Jagielski
1172*b1cdbd2cSJim Jagielski case 12: // ALL
1173*b1cdbd2cSJim Jagielski pLeft = pRight = pTop = pBottom = &theDefLine;
1174*b1cdbd2cSJim Jagielski aBorderInner.SetLine( &theDefLine, BOXINFO_LINE_HORI );
1175*b1cdbd2cSJim Jagielski aBorderInner.SetLine( &theDefLine, BOXINFO_LINE_VERT );
1176*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_ALL;
1177*b1cdbd2cSJim Jagielski break;
1178*b1cdbd2cSJim Jagielski
1179*b1cdbd2cSJim Jagielski default:
1180*b1cdbd2cSJim Jagielski break;
1181*b1cdbd2cSJim Jagielski }
1182*b1cdbd2cSJim Jagielski aBorderOuter.SetLine( pLeft, BOX_LINE_LEFT );
1183*b1cdbd2cSJim Jagielski aBorderOuter.SetLine( pRight, BOX_LINE_RIGHT );
1184*b1cdbd2cSJim Jagielski aBorderOuter.SetLine( pTop, BOX_LINE_TOP );
1185*b1cdbd2cSJim Jagielski aBorderOuter.SetLine( pBottom, BOX_LINE_BOTTOM );
1186*b1cdbd2cSJim Jagielski
1187*b1cdbd2cSJim Jagielski if(nModifier == KEY_SHIFT)
1188*b1cdbd2cSJim Jagielski nValidFlags |= FRM_VALID_ALL;
1189*b1cdbd2cSJim Jagielski aBorderInner.SetValid( VALID_TOP, 0 != (nValidFlags&FRM_VALID_TOP ));
1190*b1cdbd2cSJim Jagielski aBorderInner.SetValid( VALID_BOTTOM, 0 != (nValidFlags&FRM_VALID_BOTTOM ));
1191*b1cdbd2cSJim Jagielski aBorderInner.SetValid( VALID_LEFT, 0 != (nValidFlags&FRM_VALID_LEFT));
1192*b1cdbd2cSJim Jagielski aBorderInner.SetValid( VALID_RIGHT, 0 != (nValidFlags&FRM_VALID_RIGHT ));
1193*b1cdbd2cSJim Jagielski aBorderInner.SetValid( VALID_HORI, 0 != (nValidFlags&FRM_VALID_HINNER ));
1194*b1cdbd2cSJim Jagielski aBorderInner.SetValid( VALID_VERT, 0 != (nValidFlags&FRM_VALID_VINNER));
1195*b1cdbd2cSJim Jagielski aBorderInner.SetValid( VALID_DISTANCE, sal_True );
1196*b1cdbd2cSJim Jagielski aBorderInner.SetValid( VALID_DISABLE, sal_False );
1197*b1cdbd2cSJim Jagielski
1198*b1cdbd2cSJim Jagielski if ( IsInPopupMode() )
1199*b1cdbd2cSJim Jagielski EndPopupMode();
1200*b1cdbd2cSJim Jagielski
1201*b1cdbd2cSJim Jagielski Any a;
1202*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 2 );
1203*b1cdbd2cSJim Jagielski aArgs[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "OuterBorder" ));
1204*b1cdbd2cSJim Jagielski aBorderOuter.QueryValue( a );
1205*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
1206*b1cdbd2cSJim Jagielski aArgs[1].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "InnerBorder" ));
1207*b1cdbd2cSJim Jagielski aBorderInner.QueryValue( a );
1208*b1cdbd2cSJim Jagielski aArgs[1].Value = a;
1209*b1cdbd2cSJim Jagielski
1210*b1cdbd2cSJim Jagielski /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call.
1211*b1cdbd2cSJim Jagielski This instance may be deleted in the meantime (i.e. when a dialog is opened
1212*b1cdbd2cSJim Jagielski while in Dispatch()), accessing members will crash in this case. */
1213*b1cdbd2cSJim Jagielski aFrameSet.SetNoSelection();
1214*b1cdbd2cSJim Jagielski
1215*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ),
1216*b1cdbd2cSJim Jagielski OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:SetBorderStyle" )),
1217*b1cdbd2cSJim Jagielski aArgs );
1218*b1cdbd2cSJim Jagielski return 0;
1219*b1cdbd2cSJim Jagielski }
1220*b1cdbd2cSJim Jagielski
1221*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1222*b1cdbd2cSJim Jagielski
Resize()1223*b1cdbd2cSJim Jagielski void SvxFrameWindow_Impl::Resize()
1224*b1cdbd2cSJim Jagielski {
1225*b1cdbd2cSJim Jagielski lcl_ResizeValueSet( *this, aFrameSet);
1226*b1cdbd2cSJim Jagielski }
1227*b1cdbd2cSJim Jagielski
1228*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1229*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState)1230*b1cdbd2cSJim Jagielski void SvxFrameWindow_Impl::StateChanged(
1231*b1cdbd2cSJim Jagielski
1232*b1cdbd2cSJim Jagielski sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
1233*b1cdbd2cSJim Jagielski
1234*b1cdbd2cSJim Jagielski {
1235*b1cdbd2cSJim Jagielski if ( pState && nSID == SID_BORDER_REDUCED_MODE)
1236*b1cdbd2cSJim Jagielski {
1237*b1cdbd2cSJim Jagielski const SfxBoolItem* pItem = PTR_CAST( SfxBoolItem, pState );
1238*b1cdbd2cSJim Jagielski
1239*b1cdbd2cSJim Jagielski if ( pItem )
1240*b1cdbd2cSJim Jagielski {
1241*b1cdbd2cSJim Jagielski bParagraphMode = (sal_Bool)pItem->GetValue();
1242*b1cdbd2cSJim Jagielski //initial calls mustn't insert or remove elements
1243*b1cdbd2cSJim Jagielski if(aFrameSet.GetItemCount())
1244*b1cdbd2cSJim Jagielski {
1245*b1cdbd2cSJim Jagielski sal_Bool bTableMode = ( aFrameSet.GetItemCount() == 12 );
1246*b1cdbd2cSJim Jagielski sal_Bool bResize = sal_False;
1247*b1cdbd2cSJim Jagielski
1248*b1cdbd2cSJim Jagielski if ( bTableMode && bParagraphMode )
1249*b1cdbd2cSJim Jagielski {
1250*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 9; i < 13; i++ )
1251*b1cdbd2cSJim Jagielski aFrameSet.RemoveItem(i);
1252*b1cdbd2cSJim Jagielski bResize = sal_True;
1253*b1cdbd2cSJim Jagielski }
1254*b1cdbd2cSJim Jagielski else if ( !bTableMode && !bParagraphMode )
1255*b1cdbd2cSJim Jagielski {
1256*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 9; i < 13; i++ )
1257*b1cdbd2cSJim Jagielski aFrameSet.InsertItem( i, aImgList.GetImage(i) );
1258*b1cdbd2cSJim Jagielski bResize = sal_True;
1259*b1cdbd2cSJim Jagielski }
1260*b1cdbd2cSJim Jagielski
1261*b1cdbd2cSJim Jagielski if ( bResize )
1262*b1cdbd2cSJim Jagielski {
1263*b1cdbd2cSJim Jagielski lcl_CalcSizeValueSet( *this, aFrameSet,Size( 20, 20 ));
1264*b1cdbd2cSJim Jagielski }
1265*b1cdbd2cSJim Jagielski }
1266*b1cdbd2cSJim Jagielski }
1267*b1cdbd2cSJim Jagielski }
1268*b1cdbd2cSJim Jagielski SfxPopupWindow::StateChanged( nSID, eState, pState );
1269*b1cdbd2cSJim Jagielski }
1270*b1cdbd2cSJim Jagielski
1271*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1272*b1cdbd2cSJim Jagielski
StartSelection()1273*b1cdbd2cSJim Jagielski void SvxFrameWindow_Impl::StartSelection()
1274*b1cdbd2cSJim Jagielski {
1275*b1cdbd2cSJim Jagielski aFrameSet.StartSelection();
1276*b1cdbd2cSJim Jagielski }
1277*b1cdbd2cSJim Jagielski
1278*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1279*b1cdbd2cSJim Jagielski
Close()1280*b1cdbd2cSJim Jagielski sal_Bool SvxFrameWindow_Impl::Close()
1281*b1cdbd2cSJim Jagielski {
1282*b1cdbd2cSJim Jagielski return SfxPopupWindow::Close();
1283*b1cdbd2cSJim Jagielski }
1284*b1cdbd2cSJim Jagielski
1285*b1cdbd2cSJim Jagielski //========================================================================
1286*b1cdbd2cSJim Jagielski // class SvxLineWindow_Impl --------------------------------------------------
1287*b1cdbd2cSJim Jagielski //========================================================================
1288*b1cdbd2cSJim Jagielski
SvxLineWindow_Impl(sal_uInt16 nId,const Reference<XFrame> & rFrame,Window * pParentWindow)1289*b1cdbd2cSJim Jagielski SvxLineWindow_Impl::SvxLineWindow_Impl( sal_uInt16 nId, const Reference< XFrame >& rFrame, Window* pParentWindow ) :
1290*b1cdbd2cSJim Jagielski
1291*b1cdbd2cSJim Jagielski SfxPopupWindow( nId, rFrame, pParentWindow, WinBits( WB_BORDER | WB_STDFLOATWIN | WB_3DLOOK | WB_DIALOGCONTROL ) ),
1292*b1cdbd2cSJim Jagielski
1293*b1cdbd2cSJim Jagielski aLineSet( this, WinBits( WB_3DLOOK | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD | WB_NONEFIELD | WB_NO_DIRECTSELECT ) )
1294*b1cdbd2cSJim Jagielski {
1295*b1cdbd2cSJim Jagielski try
1296*b1cdbd2cSJim Jagielski {
1297*b1cdbd2cSJim Jagielski Reference< lang::XServiceInfo > xServices( rFrame->getController()->getModel(), UNO_QUERY_THROW );
1298*b1cdbd2cSJim Jagielski m_bIsWriter = xServices->supportsService(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextDocument")));
1299*b1cdbd2cSJim Jagielski }
1300*b1cdbd2cSJim Jagielski catch(const uno::Exception& )
1301*b1cdbd2cSJim Jagielski {
1302*b1cdbd2cSJim Jagielski }
1303*b1cdbd2cSJim Jagielski Size aBmpSize( 55, 12 );
1304*b1cdbd2cSJim Jagielski CreateBitmaps();
1305*b1cdbd2cSJim Jagielski
1306*b1cdbd2cSJim Jagielski aLineSet.SetColCount( 2 );
1307*b1cdbd2cSJim Jagielski aLineSet.SetSelectHdl( LINK( this, SvxLineWindow_Impl, SelectHdl ) );
1308*b1cdbd2cSJim Jagielski aLineSet.SetText( SVX_RESSTR(RID_SVXSTR_NONE) );
1309*b1cdbd2cSJim Jagielski
1310*b1cdbd2cSJim Jagielski aLineSet.SetAccessibleName( SVX_RESSTR(RID_SVXSTR_FRAME_STYLE) );
1311*b1cdbd2cSJim Jagielski lcl_CalcSizeValueSet( *this, aLineSet, aBmpSize );
1312*b1cdbd2cSJim Jagielski
1313*b1cdbd2cSJim Jagielski SetHelpId( HID_POPUP_LINE );
1314*b1cdbd2cSJim Jagielski SetText( SVX_RESSTR(RID_SVXSTR_FRAME_STYLE) );
1315*b1cdbd2cSJim Jagielski aLineSet.Show();
1316*b1cdbd2cSJim Jagielski }
1317*b1cdbd2cSJim Jagielski
Clone() const1318*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxLineWindow_Impl::Clone() const
1319*b1cdbd2cSJim Jagielski {
1320*b1cdbd2cSJim Jagielski return new SvxLineWindow_Impl( GetId(), GetFrame(), GetParent() );
1321*b1cdbd2cSJim Jagielski }
1322*b1cdbd2cSJim Jagielski
1323*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1324*b1cdbd2cSJim Jagielski
MakeLineBitmap(sal_uInt16 nNo,Bitmap & rBmp,const Size & rSize,String & rStr,const::Color & rLineCol,const::Color & rBackCol)1325*b1cdbd2cSJim Jagielski void SvxLineWindow_Impl::MakeLineBitmap( sal_uInt16 nNo, Bitmap& rBmp, const Size& rSize, String& rStr,
1326*b1cdbd2cSJim Jagielski const ::Color& rLineCol, const ::Color& rBackCol )
1327*b1cdbd2cSJim Jagielski {
1328*b1cdbd2cSJim Jagielski VirtualDevice aVirDev( *this );
1329*b1cdbd2cSJim Jagielski Rectangle aRect( Point(2,0), Size(rSize.Width()-4,0) );
1330*b1cdbd2cSJim Jagielski
1331*b1cdbd2cSJim Jagielski // grau einfaerben und Bitmap sichern:
1332*b1cdbd2cSJim Jagielski aVirDev.SetOutputSizePixel( rSize );
1333*b1cdbd2cSJim Jagielski aVirDev.SetLineColor();
1334*b1cdbd2cSJim Jagielski aVirDev.SetFillColor( rBackCol );
1335*b1cdbd2cSJim Jagielski aVirDev.DrawRect( Rectangle( Point(0,0), rSize ) );
1336*b1cdbd2cSJim Jagielski aVirDev.SetFillColor( rLineCol );
1337*b1cdbd2cSJim Jagielski
1338*b1cdbd2cSJim Jagielski sal_uInt16 nLineWidth = 0;
1339*b1cdbd2cSJim Jagielski switch ( nNo )
1340*b1cdbd2cSJim Jagielski {
1341*b1cdbd2cSJim Jagielski case 1: // DEF_LINE_WIDTH_0
1342*b1cdbd2cSJim Jagielski aRect.Top() = 6;
1343*b1cdbd2cSJim Jagielski aRect.Bottom() = 6;
1344*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1345*b1cdbd2cSJim Jagielski break;
1346*b1cdbd2cSJim Jagielski
1347*b1cdbd2cSJim Jagielski case 2: // DEF_LINE_WIDTH_1
1348*b1cdbd2cSJim Jagielski aRect.Top() = 5;
1349*b1cdbd2cSJim Jagielski aRect.Bottom() = 6;
1350*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1351*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) DEF_LINE_WIDTH_1/20;
1352*b1cdbd2cSJim Jagielski break;
1353*b1cdbd2cSJim Jagielski
1354*b1cdbd2cSJim Jagielski case 3: // DEF_LINE_WIDTH_2
1355*b1cdbd2cSJim Jagielski aRect.Top() = 5;
1356*b1cdbd2cSJim Jagielski aRect.Bottom() = 7;
1357*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1358*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) DEF_LINE_WIDTH_2/20;
1359*b1cdbd2cSJim Jagielski break;
1360*b1cdbd2cSJim Jagielski
1361*b1cdbd2cSJim Jagielski case 4: // DEF_LINE_WIDTH_3
1362*b1cdbd2cSJim Jagielski aRect.Top() = 4;
1363*b1cdbd2cSJim Jagielski aRect.Bottom() = 7;
1364*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1365*b1cdbd2cSJim Jagielski aVirDev.DrawRect( Rectangle( Point(2,4), Point(37,7) ) );
1366*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) DEF_LINE_WIDTH_3/20;
1367*b1cdbd2cSJim Jagielski break;
1368*b1cdbd2cSJim Jagielski
1369*b1cdbd2cSJim Jagielski case 5: // DEF_LINE_WIDTH_4
1370*b1cdbd2cSJim Jagielski aRect.Top() = 4;
1371*b1cdbd2cSJim Jagielski aRect.Bottom() = 8;
1372*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1373*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) DEF_LINE_WIDTH_4/20;
1374*b1cdbd2cSJim Jagielski break;
1375*b1cdbd2cSJim Jagielski
1376*b1cdbd2cSJim Jagielski case 6: // DEF_DOUBLE_LINE0
1377*b1cdbd2cSJim Jagielski aRect.Top() = 5;
1378*b1cdbd2cSJim Jagielski aRect.Bottom() = 5;
1379*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1380*b1cdbd2cSJim Jagielski aRect.Top() = 7;
1381*b1cdbd2cSJim Jagielski aRect.Bottom() = 7;
1382*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1383*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE0_OUT+DEF_DOUBLE_LINE0_IN+DEF_DOUBLE_LINE0_DIST)/20;
1384*b1cdbd2cSJim Jagielski break;
1385*b1cdbd2cSJim Jagielski
1386*b1cdbd2cSJim Jagielski case 7: // DEF_DOUBLE_LINE7
1387*b1cdbd2cSJim Jagielski aRect.Top() = 4;
1388*b1cdbd2cSJim Jagielski aRect.Bottom() = 4;
1389*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1390*b1cdbd2cSJim Jagielski aRect.Top() = 7;
1391*b1cdbd2cSJim Jagielski aRect.Bottom() = 7;
1392*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1393*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE7_OUT+DEF_DOUBLE_LINE7_IN+DEF_DOUBLE_LINE7_DIST)/20;
1394*b1cdbd2cSJim Jagielski break;
1395*b1cdbd2cSJim Jagielski
1396*b1cdbd2cSJim Jagielski case 8: // DEF_DOUBLE_LINE1
1397*b1cdbd2cSJim Jagielski aRect.Top() = 4;
1398*b1cdbd2cSJim Jagielski aRect.Bottom() = 5;
1399*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1400*b1cdbd2cSJim Jagielski aRect.Top() = 7;
1401*b1cdbd2cSJim Jagielski aRect.Bottom() = 8;
1402*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1403*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE1_OUT+DEF_DOUBLE_LINE1_IN+DEF_DOUBLE_LINE1_DIST)/20;
1404*b1cdbd2cSJim Jagielski break;
1405*b1cdbd2cSJim Jagielski
1406*b1cdbd2cSJim Jagielski case 9: // DEF_DOUBLE_LINE2
1407*b1cdbd2cSJim Jagielski aRect.Top() = 3;
1408*b1cdbd2cSJim Jagielski aRect.Bottom() = 5;
1409*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1410*b1cdbd2cSJim Jagielski aRect.Top() = 8;
1411*b1cdbd2cSJim Jagielski aRect.Bottom() = 10;
1412*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1413*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE2_OUT+DEF_DOUBLE_LINE2_IN+DEF_DOUBLE_LINE2_DIST)/20;
1414*b1cdbd2cSJim Jagielski break;
1415*b1cdbd2cSJim Jagielski
1416*b1cdbd2cSJim Jagielski case 10: // DEF_DOUBLE_LINE8
1417*b1cdbd2cSJim Jagielski aRect.Top() = 3;
1418*b1cdbd2cSJim Jagielski aRect.Bottom() = 4;
1419*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1420*b1cdbd2cSJim Jagielski aRect.Top() = 7;
1421*b1cdbd2cSJim Jagielski aRect.Bottom() = 7;
1422*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1423*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE8_OUT+DEF_DOUBLE_LINE8_IN+DEF_DOUBLE_LINE8_DIST)/20;
1424*b1cdbd2cSJim Jagielski break;
1425*b1cdbd2cSJim Jagielski
1426*b1cdbd2cSJim Jagielski case 11: // DEF_DOUBLE_LINE9
1427*b1cdbd2cSJim Jagielski aRect.Top() = 3;
1428*b1cdbd2cSJim Jagielski aRect.Bottom() = 5;
1429*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1430*b1cdbd2cSJim Jagielski aRect.Top() = 8;
1431*b1cdbd2cSJim Jagielski aRect.Bottom() = 8;
1432*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1433*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE9_OUT+DEF_DOUBLE_LINE9_IN+DEF_DOUBLE_LINE9_DIST)/20;
1434*b1cdbd2cSJim Jagielski break;
1435*b1cdbd2cSJim Jagielski
1436*b1cdbd2cSJim Jagielski case 12: // DEF_DOUBLE_LINE10
1437*b1cdbd2cSJim Jagielski aRect.Top() = 2;
1438*b1cdbd2cSJim Jagielski aRect.Bottom() = 5;
1439*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1440*b1cdbd2cSJim Jagielski aRect.Top() = 8;
1441*b1cdbd2cSJim Jagielski aRect.Bottom() = 8;
1442*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1443*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE10_OUT+DEF_DOUBLE_LINE10_IN+DEF_DOUBLE_LINE10_DIST)/20;
1444*b1cdbd2cSJim Jagielski break;
1445*b1cdbd2cSJim Jagielski
1446*b1cdbd2cSJim Jagielski case 13: // DEF_DOUBLE_LINE3
1447*b1cdbd2cSJim Jagielski aRect.Top() = 4;
1448*b1cdbd2cSJim Jagielski aRect.Bottom() = 5;
1449*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1450*b1cdbd2cSJim Jagielski aRect.Top() = 7;
1451*b1cdbd2cSJim Jagielski aRect.Bottom() = 7;
1452*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1453*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE3_OUT+DEF_DOUBLE_LINE3_IN+DEF_DOUBLE_LINE3_DIST)/20;
1454*b1cdbd2cSJim Jagielski break;
1455*b1cdbd2cSJim Jagielski
1456*b1cdbd2cSJim Jagielski case 14: // DEF_DOUBLE_LINE4
1457*b1cdbd2cSJim Jagielski aRect.Top() = 4;
1458*b1cdbd2cSJim Jagielski aRect.Bottom() = 4;
1459*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1460*b1cdbd2cSJim Jagielski aRect.Top() = 6;
1461*b1cdbd2cSJim Jagielski aRect.Bottom() = 7;
1462*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1463*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE4_OUT+DEF_DOUBLE_LINE4_IN+DEF_DOUBLE_LINE4_DIST)/20;
1464*b1cdbd2cSJim Jagielski break;
1465*b1cdbd2cSJim Jagielski
1466*b1cdbd2cSJim Jagielski case 15: // DEF_DOUBLE_LINE5
1467*b1cdbd2cSJim Jagielski aRect.Top() = 3;
1468*b1cdbd2cSJim Jagielski aRect.Bottom() = 5;
1469*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1470*b1cdbd2cSJim Jagielski aRect.Top() = 8;
1471*b1cdbd2cSJim Jagielski aRect.Bottom() = 9;
1472*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1473*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE5_OUT+DEF_DOUBLE_LINE5_IN+DEF_DOUBLE_LINE5_DIST)/20;
1474*b1cdbd2cSJim Jagielski break;
1475*b1cdbd2cSJim Jagielski
1476*b1cdbd2cSJim Jagielski case 16: // DEF_DOUBLE_LINE6
1477*b1cdbd2cSJim Jagielski aRect.Top() = 3;
1478*b1cdbd2cSJim Jagielski aRect.Bottom() = 4;
1479*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1480*b1cdbd2cSJim Jagielski aRect.Top() = 7;
1481*b1cdbd2cSJim Jagielski aRect.Bottom() = 9;
1482*b1cdbd2cSJim Jagielski aVirDev.DrawRect( aRect );
1483*b1cdbd2cSJim Jagielski nLineWidth = (sal_uInt16) (DEF_DOUBLE_LINE6_OUT+DEF_DOUBLE_LINE6_IN+DEF_DOUBLE_LINE6_DIST)/20;
1484*b1cdbd2cSJim Jagielski break;
1485*b1cdbd2cSJim Jagielski
1486*b1cdbd2cSJim Jagielski default:
1487*b1cdbd2cSJim Jagielski break;
1488*b1cdbd2cSJim Jagielski }
1489*b1cdbd2cSJim Jagielski if ( nLineWidth )
1490*b1cdbd2cSJim Jagielski {
1491*b1cdbd2cSJim Jagielski rStr = String::CreateFromInt32( nLineWidth );
1492*b1cdbd2cSJim Jagielski rStr.AppendAscii(" pt");
1493*b1cdbd2cSJim Jagielski }
1494*b1cdbd2cSJim Jagielski rBmp = aVirDev.GetBitmap( Point(0,0), rSize );
1495*b1cdbd2cSJim Jagielski }
1496*b1cdbd2cSJim Jagielski
1497*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1498*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxLineWindow_Impl,SelectHdl,void *,EMPTYARG)1499*b1cdbd2cSJim Jagielski IMPL_LINK( SvxLineWindow_Impl, SelectHdl, void *, EMPTYARG )
1500*b1cdbd2cSJim Jagielski {
1501*b1cdbd2cSJim Jagielski SvxLineItem aLineItem( SID_FRAME_LINESTYLE );
1502*b1cdbd2cSJim Jagielski sal_uInt16 n1 = 0,
1503*b1cdbd2cSJim Jagielski n2 = 0,
1504*b1cdbd2cSJim Jagielski n3 = 0;
1505*b1cdbd2cSJim Jagielski sal_Bool bSetLine = sal_True;
1506*b1cdbd2cSJim Jagielski
1507*b1cdbd2cSJim Jagielski switch ( aLineSet.GetSelectItemId() )
1508*b1cdbd2cSJim Jagielski {
1509*b1cdbd2cSJim Jagielski case 1: n1 = DEF_LINE_WIDTH_0; break;
1510*b1cdbd2cSJim Jagielski case 2: n1 = DEF_LINE_WIDTH_1; break;
1511*b1cdbd2cSJim Jagielski case 3: n1 = DEF_LINE_WIDTH_2; break;
1512*b1cdbd2cSJim Jagielski case 4: n1 = DEF_LINE_WIDTH_3; break;
1513*b1cdbd2cSJim Jagielski case 5: n1 = DEF_LINE_WIDTH_4; break;
1514*b1cdbd2cSJim Jagielski
1515*b1cdbd2cSJim Jagielski case 6: n1 = DEF_DOUBLE_LINE0_OUT;
1516*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE0_IN;
1517*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE0_DIST; break;
1518*b1cdbd2cSJim Jagielski case 7: n1 = DEF_DOUBLE_LINE7_OUT;
1519*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE7_IN;
1520*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE7_DIST; break;
1521*b1cdbd2cSJim Jagielski case 8: n1 = DEF_DOUBLE_LINE1_OUT;
1522*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE1_IN;
1523*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE1_DIST; break;
1524*b1cdbd2cSJim Jagielski case 9: n1 = DEF_DOUBLE_LINE2_OUT;
1525*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE2_IN;
1526*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE2_DIST; break;
1527*b1cdbd2cSJim Jagielski case 10: n1 = DEF_DOUBLE_LINE8_OUT;
1528*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE8_IN;
1529*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE8_DIST; break;
1530*b1cdbd2cSJim Jagielski case 11: n1 = DEF_DOUBLE_LINE9_OUT;
1531*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE9_IN;
1532*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE9_DIST; break;
1533*b1cdbd2cSJim Jagielski case 12: n1 = DEF_DOUBLE_LINE10_OUT;
1534*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE10_IN;
1535*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE10_DIST; break;
1536*b1cdbd2cSJim Jagielski case 13: n1 = DEF_DOUBLE_LINE3_OUT;
1537*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE3_IN;
1538*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE3_DIST; break;
1539*b1cdbd2cSJim Jagielski case 14: n1 = DEF_DOUBLE_LINE4_OUT;
1540*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE4_IN;
1541*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE4_DIST; break;
1542*b1cdbd2cSJim Jagielski case 15: n1 = DEF_DOUBLE_LINE5_OUT;
1543*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE5_IN;
1544*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE5_DIST; break;
1545*b1cdbd2cSJim Jagielski case 16: n1 = DEF_DOUBLE_LINE6_OUT;
1546*b1cdbd2cSJim Jagielski n2 = DEF_DOUBLE_LINE6_IN;
1547*b1cdbd2cSJim Jagielski n3 = DEF_DOUBLE_LINE6_DIST; break;
1548*b1cdbd2cSJim Jagielski case 0:
1549*b1cdbd2cSJim Jagielski default:
1550*b1cdbd2cSJim Jagielski bSetLine = sal_False;
1551*b1cdbd2cSJim Jagielski break;
1552*b1cdbd2cSJim Jagielski }
1553*b1cdbd2cSJim Jagielski if ( bSetLine )
1554*b1cdbd2cSJim Jagielski {
1555*b1cdbd2cSJim Jagielski SvxBorderLine aTmp( NULL, n1, n2, n3 );
1556*b1cdbd2cSJim Jagielski aLineItem.SetLine( &aTmp );
1557*b1cdbd2cSJim Jagielski }
1558*b1cdbd2cSJim Jagielski else
1559*b1cdbd2cSJim Jagielski aLineItem.SetLine( 0 );
1560*b1cdbd2cSJim Jagielski
1561*b1cdbd2cSJim Jagielski if ( IsInPopupMode() )
1562*b1cdbd2cSJim Jagielski EndPopupMode();
1563*b1cdbd2cSJim Jagielski
1564*b1cdbd2cSJim Jagielski Any a;
1565*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
1566*b1cdbd2cSJim Jagielski aArgs[0].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "LineStyle" ));
1567*b1cdbd2cSJim Jagielski aLineItem.QueryValue( a, m_bIsWriter ? CONVERT_TWIPS : 0 );
1568*b1cdbd2cSJim Jagielski aArgs[0].Value = a;
1569*b1cdbd2cSJim Jagielski
1570*b1cdbd2cSJim Jagielski /* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call.
1571*b1cdbd2cSJim Jagielski This instance may be deleted in the meantime (i.e. when a dialog is opened
1572*b1cdbd2cSJim Jagielski while in Dispatch()), accessing members will crash in this case. */
1573*b1cdbd2cSJim Jagielski aLineSet.SetNoSelection();
1574*b1cdbd2cSJim Jagielski
1575*b1cdbd2cSJim Jagielski SfxToolBoxControl::Dispatch( Reference< XDispatchProvider >( GetFrame()->getController(), UNO_QUERY ),
1576*b1cdbd2cSJim Jagielski OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:LineStyle" )),
1577*b1cdbd2cSJim Jagielski aArgs );
1578*b1cdbd2cSJim Jagielski return 0;
1579*b1cdbd2cSJim Jagielski }
1580*b1cdbd2cSJim Jagielski
1581*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1582*b1cdbd2cSJim Jagielski
Resize()1583*b1cdbd2cSJim Jagielski void SvxLineWindow_Impl::Resize()
1584*b1cdbd2cSJim Jagielski {
1585*b1cdbd2cSJim Jagielski lcl_ResizeValueSet( *this, aLineSet);
1586*b1cdbd2cSJim Jagielski }
1587*b1cdbd2cSJim Jagielski
1588*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1589*b1cdbd2cSJim Jagielski
StartSelection()1590*b1cdbd2cSJim Jagielski void SvxLineWindow_Impl::StartSelection()
1591*b1cdbd2cSJim Jagielski {
1592*b1cdbd2cSJim Jagielski aLineSet.StartSelection();
1593*b1cdbd2cSJim Jagielski }
1594*b1cdbd2cSJim Jagielski
1595*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1596*b1cdbd2cSJim Jagielski
Close()1597*b1cdbd2cSJim Jagielski sal_Bool SvxLineWindow_Impl::Close()
1598*b1cdbd2cSJim Jagielski {
1599*b1cdbd2cSJim Jagielski return SfxPopupWindow::Close();
1600*b1cdbd2cSJim Jagielski }
1601*b1cdbd2cSJim Jagielski
1602*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1603*b1cdbd2cSJim Jagielski
GetPreferredKeyInputWindow()1604*b1cdbd2cSJim Jagielski Window* SvxLineWindow_Impl::GetPreferredKeyInputWindow()
1605*b1cdbd2cSJim Jagielski {
1606*b1cdbd2cSJim Jagielski return &aLineSet;
1607*b1cdbd2cSJim Jagielski }
1608*b1cdbd2cSJim Jagielski
1609*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1610*b1cdbd2cSJim Jagielski
GetFocus()1611*b1cdbd2cSJim Jagielski void SvxLineWindow_Impl::GetFocus()
1612*b1cdbd2cSJim Jagielski {
1613*b1cdbd2cSJim Jagielski aLineSet.GrabFocus();
1614*b1cdbd2cSJim Jagielski }
1615*b1cdbd2cSJim Jagielski
DataChanged(const DataChangedEvent & rDCEvt)1616*b1cdbd2cSJim Jagielski void SvxLineWindow_Impl::DataChanged( const DataChangedEvent& rDCEvt )
1617*b1cdbd2cSJim Jagielski {
1618*b1cdbd2cSJim Jagielski SfxPopupWindow::DataChanged( rDCEvt );
1619*b1cdbd2cSJim Jagielski
1620*b1cdbd2cSJim Jagielski if( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
1621*b1cdbd2cSJim Jagielski {
1622*b1cdbd2cSJim Jagielski CreateBitmaps();
1623*b1cdbd2cSJim Jagielski Invalidate();
1624*b1cdbd2cSJim Jagielski }
1625*b1cdbd2cSJim Jagielski }
1626*b1cdbd2cSJim Jagielski
CreateBitmaps(void)1627*b1cdbd2cSJim Jagielski void SvxLineWindow_Impl::CreateBitmaps( void )
1628*b1cdbd2cSJim Jagielski {
1629*b1cdbd2cSJim Jagielski Size aBmpSize( 55, 12 );
1630*b1cdbd2cSJim Jagielski Bitmap aBmp;
1631*b1cdbd2cSJim Jagielski String aStr;
1632*b1cdbd2cSJim Jagielski
1633*b1cdbd2cSJim Jagielski const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
1634*b1cdbd2cSJim Jagielski svtools::ColorConfig aColorConfig;
1635*b1cdbd2cSJim Jagielski ::Color aLineCol( aColorConfig.GetColorValue( svtools::FONTCOLOR ).nColor );
1636*b1cdbd2cSJim Jagielski ::Color aBackCol( rStyleSettings.GetWindowColor() );
1637*b1cdbd2cSJim Jagielski aLineSet.Clear();
1638*b1cdbd2cSJim Jagielski
1639*b1cdbd2cSJim Jagielski for( sal_uInt16 i = 1 ; i < 17 ; ++i )
1640*b1cdbd2cSJim Jagielski {
1641*b1cdbd2cSJim Jagielski MakeLineBitmap( i, aBmp, aBmpSize, aStr, aLineCol, aBackCol );
1642*b1cdbd2cSJim Jagielski aLineSet.InsertItem( i, aBmp, aStr );
1643*b1cdbd2cSJim Jagielski }
1644*b1cdbd2cSJim Jagielski }
1645*b1cdbd2cSJim Jagielski
1646*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1647*b1cdbd2cSJim Jagielski
1648*b1cdbd2cSJim Jagielski //########################################################################
1649*b1cdbd2cSJim Jagielski // Hilfsklassen
1650*b1cdbd2cSJim Jagielski
1651*b1cdbd2cSJim Jagielski //========================================================================
1652*b1cdbd2cSJim Jagielski // class SfxStyleControllerItem_Impl ------------------------------------------
1653*b1cdbd2cSJim Jagielski //========================================================================
1654*b1cdbd2cSJim Jagielski
SfxStyleControllerItem_Impl(const Reference<XDispatchProvider> & rDispatchProvider,sal_uInt16 nSlotId,const rtl::OUString & rCommand,SvxStyleToolBoxControl & rTbxCtl)1655*b1cdbd2cSJim Jagielski SfxStyleControllerItem_Impl::SfxStyleControllerItem_Impl(
1656*b1cdbd2cSJim Jagielski const Reference< XDispatchProvider >& rDispatchProvider,
1657*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId, // Family-ID
1658*b1cdbd2cSJim Jagielski const rtl::OUString& rCommand, // .uno: command bound to this item
1659*b1cdbd2cSJim Jagielski SvxStyleToolBoxControl& rTbxCtl ) // Controller-Instanz, dem dieses Item zugeordnet ist.
1660*b1cdbd2cSJim Jagielski : SfxStatusListener( rDispatchProvider, nSlotId, rCommand ),
1661*b1cdbd2cSJim Jagielski rControl( rTbxCtl )
1662*b1cdbd2cSJim Jagielski {
1663*b1cdbd2cSJim Jagielski }
1664*b1cdbd2cSJim Jagielski
1665*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1666*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)1667*b1cdbd2cSJim Jagielski void SfxStyleControllerItem_Impl::StateChanged(
1668*b1cdbd2cSJim Jagielski sal_uInt16, SfxItemState eState, const SfxPoolItem* pState )
1669*b1cdbd2cSJim Jagielski {
1670*b1cdbd2cSJim Jagielski switch ( GetId() )
1671*b1cdbd2cSJim Jagielski {
1672*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY1:
1673*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY2:
1674*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY3:
1675*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY4:
1676*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY5:
1677*b1cdbd2cSJim Jagielski {
1678*b1cdbd2cSJim Jagielski const sal_uInt16 nIdx = GetId() - SID_STYLE_FAMILY_START;
1679*b1cdbd2cSJim Jagielski
1680*b1cdbd2cSJim Jagielski if ( SFX_ITEM_AVAILABLE == eState )
1681*b1cdbd2cSJim Jagielski {
1682*b1cdbd2cSJim Jagielski const SfxTemplateItem* pStateItem =
1683*b1cdbd2cSJim Jagielski PTR_CAST( SfxTemplateItem, pState );
1684*b1cdbd2cSJim Jagielski DBG_ASSERT( pStateItem != NULL, "SfxTemplateItem expected" );
1685*b1cdbd2cSJim Jagielski rControl.SetFamilyState( nIdx, pStateItem );
1686*b1cdbd2cSJim Jagielski }
1687*b1cdbd2cSJim Jagielski else
1688*b1cdbd2cSJim Jagielski rControl.SetFamilyState( nIdx, NULL );
1689*b1cdbd2cSJim Jagielski break;
1690*b1cdbd2cSJim Jagielski }
1691*b1cdbd2cSJim Jagielski }
1692*b1cdbd2cSJim Jagielski }
1693*b1cdbd2cSJim Jagielski
1694*b1cdbd2cSJim Jagielski //########################################################################
1695*b1cdbd2cSJim Jagielski
1696*b1cdbd2cSJim Jagielski //========================================================================
1697*b1cdbd2cSJim Jagielski // class SvxStyleToolBoxControl ------------------------------------------
1698*b1cdbd2cSJim Jagielski //========================================================================
1699*b1cdbd2cSJim Jagielski
1700*b1cdbd2cSJim Jagielski struct SvxStyleToolBoxControl::Impl
1701*b1cdbd2cSJim Jagielski {
1702*b1cdbd2cSJim Jagielski String aClearForm;
1703*b1cdbd2cSJim Jagielski String aMore;
1704*b1cdbd2cSJim Jagielski ::std::vector< ::rtl::OUString > aDefaultStyles;
1705*b1cdbd2cSJim Jagielski sal_Bool bListening;
1706*b1cdbd2cSJim Jagielski sal_Bool bSpecModeWriter;
1707*b1cdbd2cSJim Jagielski sal_Bool bSpecModeCalc;
1708*b1cdbd2cSJim Jagielski
ImplSvxStyleToolBoxControl::Impl1709*b1cdbd2cSJim Jagielski inline Impl( void )
1710*b1cdbd2cSJim Jagielski :aClearForm ( SVX_RESSTR( RID_SVXSTR_CLEARFORM ) )
1711*b1cdbd2cSJim Jagielski ,aMore ( SVX_RESSTR( RID_SVXSTR_MORE ) )
1712*b1cdbd2cSJim Jagielski ,bListening ( sal_False )
1713*b1cdbd2cSJim Jagielski ,bSpecModeWriter ( sal_False )
1714*b1cdbd2cSJim Jagielski ,bSpecModeCalc ( sal_False )
1715*b1cdbd2cSJim Jagielski {
1716*b1cdbd2cSJim Jagielski
1717*b1cdbd2cSJim Jagielski
1718*b1cdbd2cSJim Jagielski }
InitializeStylesSvxStyleToolBoxControl::Impl1719*b1cdbd2cSJim Jagielski void InitializeStyles(Reference < frame::XModel > xModel)
1720*b1cdbd2cSJim Jagielski {
1721*b1cdbd2cSJim Jagielski //now convert the default style names to the localized names
1722*b1cdbd2cSJim Jagielski try
1723*b1cdbd2cSJim Jagielski {
1724*b1cdbd2cSJim Jagielski Reference< style::XStyleFamiliesSupplier > xStylesSupplier( xModel, UNO_QUERY_THROW );
1725*b1cdbd2cSJim Jagielski Reference< lang::XServiceInfo > xServices( xModel, UNO_QUERY_THROW );
1726*b1cdbd2cSJim Jagielski bSpecModeWriter = xServices->supportsService(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.TextDocument")));
1727*b1cdbd2cSJim Jagielski if(bSpecModeWriter)
1728*b1cdbd2cSJim Jagielski {
1729*b1cdbd2cSJim Jagielski Reference<container::XNameAccess> xParaStyles;
1730*b1cdbd2cSJim Jagielski xStylesSupplier->getStyleFamilies()->getByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParagraphStyles"))) >>=
1731*b1cdbd2cSJim Jagielski xParaStyles;
1732*b1cdbd2cSJim Jagielski static const sal_Char* aWriterStyles[] =
1733*b1cdbd2cSJim Jagielski {
1734*b1cdbd2cSJim Jagielski "Standard",
1735*b1cdbd2cSJim Jagielski "Heading 1",
1736*b1cdbd2cSJim Jagielski "Heading 2",
1737*b1cdbd2cSJim Jagielski "Heading 3",
1738*b1cdbd2cSJim Jagielski "Text body"
1739*b1cdbd2cSJim Jagielski };
1740*b1cdbd2cSJim Jagielski for( sal_uInt32 nStyle = 0; nStyle < sizeof( aWriterStyles ) / sizeof( sal_Char*); ++nStyle )
1741*b1cdbd2cSJim Jagielski {
1742*b1cdbd2cSJim Jagielski try
1743*b1cdbd2cSJim Jagielski {
1744*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xStyle;
1745*b1cdbd2cSJim Jagielski xParaStyles->getByName( rtl::OUString::createFromAscii( aWriterStyles[nStyle] )) >>= xStyle;
1746*b1cdbd2cSJim Jagielski ::rtl::OUString sName;
1747*b1cdbd2cSJim Jagielski xStyle->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DisplayName"))) >>= sName;
1748*b1cdbd2cSJim Jagielski if( sName.getLength() )
1749*b1cdbd2cSJim Jagielski aDefaultStyles.push_back(sName);
1750*b1cdbd2cSJim Jagielski }
1751*b1cdbd2cSJim Jagielski catch( const uno::Exception& )
1752*b1cdbd2cSJim Jagielski {}
1753*b1cdbd2cSJim Jagielski }
1754*b1cdbd2cSJim Jagielski
1755*b1cdbd2cSJim Jagielski }
1756*b1cdbd2cSJim Jagielski else if( 0 != (
1757*b1cdbd2cSJim Jagielski bSpecModeCalc = xServices->supportsService(::rtl::OUString(
1758*b1cdbd2cSJim Jagielski RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sheet.SpreadsheetDocument")))))
1759*b1cdbd2cSJim Jagielski {
1760*b1cdbd2cSJim Jagielski static const sal_Char* aCalcStyles[] =
1761*b1cdbd2cSJim Jagielski {
1762*b1cdbd2cSJim Jagielski "Default",
1763*b1cdbd2cSJim Jagielski "Heading1",
1764*b1cdbd2cSJim Jagielski "Result",
1765*b1cdbd2cSJim Jagielski "Result2"
1766*b1cdbd2cSJim Jagielski };
1767*b1cdbd2cSJim Jagielski Reference<container::XNameAccess> xCellStyles;
1768*b1cdbd2cSJim Jagielski xStylesSupplier->getStyleFamilies()->getByName(
1769*b1cdbd2cSJim Jagielski ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CellStyles"))) >>=
1770*b1cdbd2cSJim Jagielski xCellStyles;
1771*b1cdbd2cSJim Jagielski for( sal_uInt32 nStyle = 0; nStyle < sizeof( aCalcStyles ) / sizeof( sal_Char*); ++nStyle )
1772*b1cdbd2cSJim Jagielski {
1773*b1cdbd2cSJim Jagielski try
1774*b1cdbd2cSJim Jagielski {
1775*b1cdbd2cSJim Jagielski const rtl::OUString sStyleName( rtl::OUString::createFromAscii( aCalcStyles[nStyle] ) );
1776*b1cdbd2cSJim Jagielski if( xCellStyles->hasByName( sStyleName ) )
1777*b1cdbd2cSJim Jagielski {
1778*b1cdbd2cSJim Jagielski Reference< beans::XPropertySet > xStyle( xCellStyles->getByName( sStyleName), UNO_QUERY_THROW );
1779*b1cdbd2cSJim Jagielski ::rtl::OUString sName;
1780*b1cdbd2cSJim Jagielski xStyle->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DisplayName"))) >>= sName;
1781*b1cdbd2cSJim Jagielski if( sName.getLength() )
1782*b1cdbd2cSJim Jagielski aDefaultStyles.push_back(sName);
1783*b1cdbd2cSJim Jagielski }
1784*b1cdbd2cSJim Jagielski }
1785*b1cdbd2cSJim Jagielski catch( const uno::Exception& )
1786*b1cdbd2cSJim Jagielski {}
1787*b1cdbd2cSJim Jagielski }
1788*b1cdbd2cSJim Jagielski }
1789*b1cdbd2cSJim Jagielski }
1790*b1cdbd2cSJim Jagielski catch(const uno::Exception& )
1791*b1cdbd2cSJim Jagielski {
1792*b1cdbd2cSJim Jagielski DBG_ERROR("error while initializing style names");
1793*b1cdbd2cSJim Jagielski }
1794*b1cdbd2cSJim Jagielski }
1795*b1cdbd2cSJim Jagielski };
1796*b1cdbd2cSJim Jagielski
1797*b1cdbd2cSJim Jagielski
1798*b1cdbd2cSJim Jagielski // mapping table from bound items. BE CAREFUL this table must be in the
1799*b1cdbd2cSJim Jagielski // same order as the uno commands bound to the slots SID_STYLE_FAMILY1..n
1800*b1cdbd2cSJim Jagielski // MAX_FAMILIES must also be correctly set!
1801*b1cdbd2cSJim Jagielski static const char* StyleSlotToStyleCommand[MAX_FAMILIES] =
1802*b1cdbd2cSJim Jagielski {
1803*b1cdbd2cSJim Jagielski ".uno:CharStyle",
1804*b1cdbd2cSJim Jagielski ".uno:ParaStyle",
1805*b1cdbd2cSJim Jagielski ".uno:FrameStyle",
1806*b1cdbd2cSJim Jagielski ".uno:PageStyle",
1807*b1cdbd2cSJim Jagielski ".uno:TemplateFamily5"
1808*b1cdbd2cSJim Jagielski };
1809*b1cdbd2cSJim Jagielski
SvxStyleToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)1810*b1cdbd2cSJim Jagielski SvxStyleToolBoxControl::SvxStyleToolBoxControl(
1811*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
1812*b1cdbd2cSJim Jagielski : SfxToolBoxControl ( nSlotId, nId, rTbx ),
1813*b1cdbd2cSJim Jagielski pStyleSheetPool ( NULL ),
1814*b1cdbd2cSJim Jagielski nActFamily ( 0xffff ),
1815*b1cdbd2cSJim Jagielski bListening ( sal_False ),
1816*b1cdbd2cSJim Jagielski pImpl ( new Impl )
1817*b1cdbd2cSJim Jagielski {
1818*b1cdbd2cSJim Jagielski for ( sal_uInt16 i=0; i<MAX_FAMILIES; i++ )
1819*b1cdbd2cSJim Jagielski {
1820*b1cdbd2cSJim Jagielski pBoundItems[i] = 0;
1821*b1cdbd2cSJim Jagielski m_xBoundItems[i] = Reference< XComponent >();
1822*b1cdbd2cSJim Jagielski pFamilyState[i] = NULL;
1823*b1cdbd2cSJim Jagielski }
1824*b1cdbd2cSJim Jagielski }
1825*b1cdbd2cSJim Jagielski
1826*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
~SvxStyleToolBoxControl()1827*b1cdbd2cSJim Jagielski SvxStyleToolBoxControl::~SvxStyleToolBoxControl()
1828*b1cdbd2cSJim Jagielski {
1829*b1cdbd2cSJim Jagielski }
1830*b1cdbd2cSJim Jagielski
1831*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
initialize(const Sequence<Any> & aArguments)1832*b1cdbd2cSJim Jagielski void SAL_CALL SvxStyleToolBoxControl::initialize( const Sequence< Any >& aArguments )
1833*b1cdbd2cSJim Jagielski throw ( Exception, RuntimeException)
1834*b1cdbd2cSJim Jagielski {
1835*b1cdbd2cSJim Jagielski SfxToolBoxControl::initialize( aArguments );
1836*b1cdbd2cSJim Jagielski
1837*b1cdbd2cSJim Jagielski // After initialize we should have a valid frame member where we can retrieve our
1838*b1cdbd2cSJim Jagielski // dispatch provider.
1839*b1cdbd2cSJim Jagielski if ( m_xFrame.is() )
1840*b1cdbd2cSJim Jagielski {
1841*b1cdbd2cSJim Jagielski pImpl->InitializeStyles(m_xFrame->getController()->getModel());
1842*b1cdbd2cSJim Jagielski Reference< XDispatchProvider > xDispatchProvider( m_xFrame->getController(), UNO_QUERY );
1843*b1cdbd2cSJim Jagielski for ( sal_uInt16 i=0; i<MAX_FAMILIES; i++ )
1844*b1cdbd2cSJim Jagielski {
1845*b1cdbd2cSJim Jagielski pBoundItems[i] = new SfxStyleControllerItem_Impl( xDispatchProvider,
1846*b1cdbd2cSJim Jagielski SID_STYLE_FAMILY_START + i,
1847*b1cdbd2cSJim Jagielski OUString::createFromAscii( StyleSlotToStyleCommand[i] ),
1848*b1cdbd2cSJim Jagielski *this );
1849*b1cdbd2cSJim Jagielski m_xBoundItems[i] = Reference< XComponent >( static_cast< OWeakObject* >( pBoundItems[i] ), UNO_QUERY );
1850*b1cdbd2cSJim Jagielski pFamilyState[i] = NULL;
1851*b1cdbd2cSJim Jagielski }
1852*b1cdbd2cSJim Jagielski }
1853*b1cdbd2cSJim Jagielski }
1854*b1cdbd2cSJim Jagielski
1855*b1cdbd2cSJim Jagielski // XComponent
dispose()1856*b1cdbd2cSJim Jagielski void SAL_CALL SvxStyleToolBoxControl::dispose()
1857*b1cdbd2cSJim Jagielski throw (::com::sun::star::uno::RuntimeException)
1858*b1cdbd2cSJim Jagielski {
1859*b1cdbd2cSJim Jagielski SfxToolBoxControl::dispose();
1860*b1cdbd2cSJim Jagielski
1861*b1cdbd2cSJim Jagielski for( sal_uInt16 i=0; i<MAX_FAMILIES; i++ )
1862*b1cdbd2cSJim Jagielski {
1863*b1cdbd2cSJim Jagielski if ( m_xBoundItems[i].is() )
1864*b1cdbd2cSJim Jagielski {
1865*b1cdbd2cSJim Jagielski try
1866*b1cdbd2cSJim Jagielski {
1867*b1cdbd2cSJim Jagielski m_xBoundItems[i]->dispose();
1868*b1cdbd2cSJim Jagielski }
1869*b1cdbd2cSJim Jagielski catch ( Exception& )
1870*b1cdbd2cSJim Jagielski {
1871*b1cdbd2cSJim Jagielski }
1872*b1cdbd2cSJim Jagielski
1873*b1cdbd2cSJim Jagielski m_xBoundItems[i].clear();
1874*b1cdbd2cSJim Jagielski pBoundItems[i] = 0;
1875*b1cdbd2cSJim Jagielski }
1876*b1cdbd2cSJim Jagielski DELETEZ( pFamilyState[i] );
1877*b1cdbd2cSJim Jagielski }
1878*b1cdbd2cSJim Jagielski pStyleSheetPool = NULL;
1879*b1cdbd2cSJim Jagielski DELETEZ( pImpl );
1880*b1cdbd2cSJim Jagielski }
1881*b1cdbd2cSJim Jagielski
1882*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
update()1883*b1cdbd2cSJim Jagielski void SAL_CALL SvxStyleToolBoxControl::update() throw (RuntimeException)
1884*b1cdbd2cSJim Jagielski {
1885*b1cdbd2cSJim Jagielski // Do nothing, we will start binding our listener when we are visible.
1886*b1cdbd2cSJim Jagielski // See link SvxStyleToolBoxControl::VisibilityNotification.
1887*b1cdbd2cSJim Jagielski SvxStyleBox_Impl* pBox = (SvxStyleBox_Impl*)GetToolBox().GetItemWindow( GetId() );
1888*b1cdbd2cSJim Jagielski if ( pBox->IsVisible() )
1889*b1cdbd2cSJim Jagielski {
1890*b1cdbd2cSJim Jagielski for ( int i=0; i<MAX_FAMILIES; i++ )
1891*b1cdbd2cSJim Jagielski pBoundItems [i]->ReBind();
1892*b1cdbd2cSJim Jagielski
1893*b1cdbd2cSJim Jagielski bindListener();
1894*b1cdbd2cSJim Jagielski }
1895*b1cdbd2cSJim Jagielski }
1896*b1cdbd2cSJim Jagielski
1897*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1898*b1cdbd2cSJim Jagielski
GetActFamily()1899*b1cdbd2cSJim Jagielski SfxStyleFamily SvxStyleToolBoxControl::GetActFamily()
1900*b1cdbd2cSJim Jagielski {
1901*b1cdbd2cSJim Jagielski switch ( nActFamily-1 + SID_STYLE_FAMILY_START )
1902*b1cdbd2cSJim Jagielski {
1903*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY1: return SFX_STYLE_FAMILY_CHAR;
1904*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY2: return SFX_STYLE_FAMILY_PARA;
1905*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY3: return SFX_STYLE_FAMILY_FRAME;
1906*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY4: return SFX_STYLE_FAMILY_PAGE;
1907*b1cdbd2cSJim Jagielski case SID_STYLE_FAMILY5: return SFX_STYLE_FAMILY_PSEUDO;
1908*b1cdbd2cSJim Jagielski default:
1909*b1cdbd2cSJim Jagielski DBG_ERROR( "unknown style family" );
1910*b1cdbd2cSJim Jagielski break;
1911*b1cdbd2cSJim Jagielski }
1912*b1cdbd2cSJim Jagielski return SFX_STYLE_FAMILY_PARA;
1913*b1cdbd2cSJim Jagielski }
1914*b1cdbd2cSJim Jagielski
1915*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
1916*b1cdbd2cSJim Jagielski
FillStyleBox()1917*b1cdbd2cSJim Jagielski void SvxStyleToolBoxControl::FillStyleBox()
1918*b1cdbd2cSJim Jagielski {
1919*b1cdbd2cSJim Jagielski SvxStyleBox_Impl* pBox = (SvxStyleBox_Impl*)GetToolBox().GetItemWindow( GetId() );
1920*b1cdbd2cSJim Jagielski
1921*b1cdbd2cSJim Jagielski DBG_ASSERT( pStyleSheetPool, "StyleSheetPool not found!" );
1922*b1cdbd2cSJim Jagielski DBG_ASSERT( pBox, "Control not found!" );
1923*b1cdbd2cSJim Jagielski
1924*b1cdbd2cSJim Jagielski if ( pStyleSheetPool && pBox && nActFamily!=0xffff )
1925*b1cdbd2cSJim Jagielski {
1926*b1cdbd2cSJim Jagielski const SfxStyleFamily eFamily = GetActFamily();
1927*b1cdbd2cSJim Jagielski sal_uInt16 nCount = pStyleSheetPool->Count();
1928*b1cdbd2cSJim Jagielski sal_uInt16 i = 0;
1929*b1cdbd2cSJim Jagielski SfxStyleSheetBase* pStyle = NULL;
1930*b1cdbd2cSJim Jagielski sal_Bool bDoFill = sal_False;
1931*b1cdbd2cSJim Jagielski
1932*b1cdbd2cSJim Jagielski pStyleSheetPool->SetSearchMask( eFamily, SFXSTYLEBIT_USED );
1933*b1cdbd2cSJim Jagielski
1934*b1cdbd2cSJim Jagielski //------------------------------
1935*b1cdbd2cSJim Jagielski // Ueberpruefen, ob Fill noetig:
1936*b1cdbd2cSJim Jagielski //------------------------------
1937*b1cdbd2cSJim Jagielski
1938*b1cdbd2cSJim Jagielski pStyle = pStyleSheetPool->First();
1939*b1cdbd2cSJim Jagielski //!!! TODO: This condition isn't right any longer, because we always show some default entries
1940*b1cdbd2cSJim Jagielski //!!! so the list doesn't show the count
1941*b1cdbd2cSJim Jagielski if ( nCount != pBox->GetEntryCount() )
1942*b1cdbd2cSJim Jagielski {
1943*b1cdbd2cSJim Jagielski bDoFill = sal_True;
1944*b1cdbd2cSJim Jagielski }
1945*b1cdbd2cSJim Jagielski else
1946*b1cdbd2cSJim Jagielski {
1947*b1cdbd2cSJim Jagielski while ( pStyle && !bDoFill )
1948*b1cdbd2cSJim Jagielski {
1949*b1cdbd2cSJim Jagielski bDoFill = ( pBox->GetEntry(i) != pStyle->GetName() );
1950*b1cdbd2cSJim Jagielski pStyle = pStyleSheetPool->Next();
1951*b1cdbd2cSJim Jagielski i++;
1952*b1cdbd2cSJim Jagielski }
1953*b1cdbd2cSJim Jagielski }
1954*b1cdbd2cSJim Jagielski
1955*b1cdbd2cSJim Jagielski if ( bDoFill )
1956*b1cdbd2cSJim Jagielski {
1957*b1cdbd2cSJim Jagielski pBox->SetUpdateMode( sal_False );
1958*b1cdbd2cSJim Jagielski pBox->Clear();
1959*b1cdbd2cSJim Jagielski
1960*b1cdbd2cSJim Jagielski {
1961*b1cdbd2cSJim Jagielski sal_uInt16 _i;
1962*b1cdbd2cSJim Jagielski sal_uInt32 nCnt = pImpl->aDefaultStyles.size();
1963*b1cdbd2cSJim Jagielski bool bInsert;
1964*b1cdbd2cSJim Jagielski
1965*b1cdbd2cSJim Jagielski pStyle = pStyleSheetPool->First();
1966*b1cdbd2cSJim Jagielski
1967*b1cdbd2cSJim Jagielski if( pImpl->bSpecModeWriter || pImpl->bSpecModeCalc )
1968*b1cdbd2cSJim Jagielski {
1969*b1cdbd2cSJim Jagielski while ( pStyle )
1970*b1cdbd2cSJim Jagielski {
1971*b1cdbd2cSJim Jagielski // sort out default styles
1972*b1cdbd2cSJim Jagielski bInsert = true;
1973*b1cdbd2cSJim Jagielski ::rtl::OUString aName( pStyle->GetName() );
1974*b1cdbd2cSJim Jagielski for( _i = 0 ; _i < nCnt ; ++_i )
1975*b1cdbd2cSJim Jagielski {
1976*b1cdbd2cSJim Jagielski if( pImpl->aDefaultStyles[_i] == aName )
1977*b1cdbd2cSJim Jagielski {
1978*b1cdbd2cSJim Jagielski bInsert = false;
1979*b1cdbd2cSJim Jagielski break;
1980*b1cdbd2cSJim Jagielski }
1981*b1cdbd2cSJim Jagielski }
1982*b1cdbd2cSJim Jagielski
1983*b1cdbd2cSJim Jagielski if( bInsert )
1984*b1cdbd2cSJim Jagielski pBox->InsertEntry( aName );
1985*b1cdbd2cSJim Jagielski pStyle = pStyleSheetPool->Next();
1986*b1cdbd2cSJim Jagielski }
1987*b1cdbd2cSJim Jagielski }
1988*b1cdbd2cSJim Jagielski else
1989*b1cdbd2cSJim Jagielski {
1990*b1cdbd2cSJim Jagielski while ( pStyle )
1991*b1cdbd2cSJim Jagielski {
1992*b1cdbd2cSJim Jagielski pBox->InsertEntry( pStyle->GetName() );
1993*b1cdbd2cSJim Jagielski pStyle = pStyleSheetPool->Next();
1994*b1cdbd2cSJim Jagielski }
1995*b1cdbd2cSJim Jagielski }
1996*b1cdbd2cSJim Jagielski }
1997*b1cdbd2cSJim Jagielski
1998*b1cdbd2cSJim Jagielski if( pImpl->bSpecModeWriter || pImpl->bSpecModeCalc )
1999*b1cdbd2cSJim Jagielski {
2000*b1cdbd2cSJim Jagielski // insert default styles
2001*b1cdbd2cSJim Jagielski sal_uInt16 _i;
2002*b1cdbd2cSJim Jagielski sal_uInt32 nCnt = pImpl->aDefaultStyles.size();
2003*b1cdbd2cSJim Jagielski sal_uInt16 nPos = 1;
2004*b1cdbd2cSJim Jagielski for( _i = 0 ; _i < nCnt ; ++_i )
2005*b1cdbd2cSJim Jagielski {
2006*b1cdbd2cSJim Jagielski pBox->InsertEntry( pImpl->aDefaultStyles[_i], nPos );
2007*b1cdbd2cSJim Jagielski ++nPos;
2008*b1cdbd2cSJim Jagielski }
2009*b1cdbd2cSJim Jagielski
2010*b1cdbd2cSJim Jagielski // disable sort to preserve special order
2011*b1cdbd2cSJim Jagielski WinBits nWinBits = pBox->GetStyle();
2012*b1cdbd2cSJim Jagielski nWinBits &= ~WB_SORT;
2013*b1cdbd2cSJim Jagielski pBox->SetStyle( nWinBits );
2014*b1cdbd2cSJim Jagielski
2015*b1cdbd2cSJim Jagielski pBox->InsertEntry( pImpl->aClearForm, 0 );
2016*b1cdbd2cSJim Jagielski pBox->SetSeparatorPos( 0 );
2017*b1cdbd2cSJim Jagielski
2018*b1cdbd2cSJim Jagielski pBox->InsertEntry( pImpl->aMore );
2019*b1cdbd2cSJim Jagielski
2020*b1cdbd2cSJim Jagielski // enable sort again
2021*b1cdbd2cSJim Jagielski nWinBits |= WB_SORT;
2022*b1cdbd2cSJim Jagielski pBox->SetStyle( nWinBits );
2023*b1cdbd2cSJim Jagielski }
2024*b1cdbd2cSJim Jagielski
2025*b1cdbd2cSJim Jagielski pBox->SetUpdateMode( sal_True );
2026*b1cdbd2cSJim Jagielski pBox->SetFamily( eFamily );
2027*b1cdbd2cSJim Jagielski
2028*b1cdbd2cSJim Jagielski sal_uInt16 nLines = Min( pBox->GetEntryCount(), MAX_STYLES_ENTRIES );
2029*b1cdbd2cSJim Jagielski pBox->SetDropDownLineCount( nLines );
2030*b1cdbd2cSJim Jagielski }
2031*b1cdbd2cSJim Jagielski }
2032*b1cdbd2cSJim Jagielski }
2033*b1cdbd2cSJim Jagielski
2034*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2035*b1cdbd2cSJim Jagielski
SelectStyle(const String & rStyleName)2036*b1cdbd2cSJim Jagielski void SvxStyleToolBoxControl::SelectStyle( const String& rStyleName )
2037*b1cdbd2cSJim Jagielski {
2038*b1cdbd2cSJim Jagielski SvxStyleBox_Impl* pBox = (SvxStyleBox_Impl*)GetToolBox().GetItemWindow( GetId() );
2039*b1cdbd2cSJim Jagielski DBG_ASSERT( pBox, "Control not found!" );
2040*b1cdbd2cSJim Jagielski
2041*b1cdbd2cSJim Jagielski if ( pBox )
2042*b1cdbd2cSJim Jagielski {
2043*b1cdbd2cSJim Jagielski // String aStrSel( pBox->GetSelectEntry() );
2044*b1cdbd2cSJim Jagielski String aStrSel( pBox->GetText() );
2045*b1cdbd2cSJim Jagielski
2046*b1cdbd2cSJim Jagielski if ( rStyleName.Len() > 0 )
2047*b1cdbd2cSJim Jagielski {
2048*b1cdbd2cSJim Jagielski if ( rStyleName != aStrSel )
2049*b1cdbd2cSJim Jagielski // pBox->SelectEntry( rStyleName );
2050*b1cdbd2cSJim Jagielski pBox->SetText( rStyleName );
2051*b1cdbd2cSJim Jagielski }
2052*b1cdbd2cSJim Jagielski else
2053*b1cdbd2cSJim Jagielski pBox->SetNoSelection();
2054*b1cdbd2cSJim Jagielski pBox->SaveValue();
2055*b1cdbd2cSJim Jagielski }
2056*b1cdbd2cSJim Jagielski }
2057*b1cdbd2cSJim Jagielski
2058*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2059*b1cdbd2cSJim Jagielski
Update()2060*b1cdbd2cSJim Jagielski void SvxStyleToolBoxControl::Update()
2061*b1cdbd2cSJim Jagielski {
2062*b1cdbd2cSJim Jagielski SfxStyleSheetBasePool* pPool = NULL;
2063*b1cdbd2cSJim Jagielski SfxObjectShell* pDocShell = SfxObjectShell::Current();
2064*b1cdbd2cSJim Jagielski
2065*b1cdbd2cSJim Jagielski if ( pDocShell )
2066*b1cdbd2cSJim Jagielski pPool = pDocShell->GetStyleSheetPool();
2067*b1cdbd2cSJim Jagielski
2068*b1cdbd2cSJim Jagielski sal_uInt16 i;
2069*b1cdbd2cSJim Jagielski for ( i=0; i<MAX_FAMILIES; i++ )
2070*b1cdbd2cSJim Jagielski if( pFamilyState[i] )
2071*b1cdbd2cSJim Jagielski break;
2072*b1cdbd2cSJim Jagielski
2073*b1cdbd2cSJim Jagielski if ( i==MAX_FAMILIES || !pPool )
2074*b1cdbd2cSJim Jagielski {
2075*b1cdbd2cSJim Jagielski pStyleSheetPool = pPool;
2076*b1cdbd2cSJim Jagielski return;
2077*b1cdbd2cSJim Jagielski }
2078*b1cdbd2cSJim Jagielski
2079*b1cdbd2cSJim Jagielski //--------------------------------------------------------------------
2080*b1cdbd2cSJim Jagielski const SfxTemplateItem* pItem = NULL;
2081*b1cdbd2cSJim Jagielski
2082*b1cdbd2cSJim Jagielski if ( nActFamily == 0xffff || 0 == (pItem = pFamilyState[nActFamily-1]) )
2083*b1cdbd2cSJim Jagielski // aktueller Bereich nicht innerhalb der erlaubten Bereiche
2084*b1cdbd2cSJim Jagielski // oder Default
2085*b1cdbd2cSJim Jagielski {
2086*b1cdbd2cSJim Jagielski pStyleSheetPool = pPool;
2087*b1cdbd2cSJim Jagielski nActFamily = 2;
2088*b1cdbd2cSJim Jagielski
2089*b1cdbd2cSJim Jagielski pItem = pFamilyState[nActFamily-1];
2090*b1cdbd2cSJim Jagielski if ( !pItem )
2091*b1cdbd2cSJim Jagielski {
2092*b1cdbd2cSJim Jagielski nActFamily++;
2093*b1cdbd2cSJim Jagielski pItem = pFamilyState[nActFamily-1];
2094*b1cdbd2cSJim Jagielski }
2095*b1cdbd2cSJim Jagielski
2096*b1cdbd2cSJim Jagielski if ( !pItem )
2097*b1cdbd2cSJim Jagielski {
2098*b1cdbd2cSJim Jagielski DBG_WARNING( "Unknown Family" ); // can happen
2099*b1cdbd2cSJim Jagielski }
2100*b1cdbd2cSJim Jagielski }
2101*b1cdbd2cSJim Jagielski else if ( pPool != pStyleSheetPool )
2102*b1cdbd2cSJim Jagielski pStyleSheetPool = pPool;
2103*b1cdbd2cSJim Jagielski
2104*b1cdbd2cSJim Jagielski FillStyleBox(); // entscheidet selbst, ob gefuellt werden muss
2105*b1cdbd2cSJim Jagielski
2106*b1cdbd2cSJim Jagielski if ( pItem )
2107*b1cdbd2cSJim Jagielski SelectStyle( pItem->GetStyleName() );
2108*b1cdbd2cSJim Jagielski }
2109*b1cdbd2cSJim Jagielski
2110*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2111*b1cdbd2cSJim Jagielski
SetFamilyState(sal_uInt16 nIdx,const SfxTemplateItem * pItem)2112*b1cdbd2cSJim Jagielski void SvxStyleToolBoxControl::SetFamilyState( sal_uInt16 nIdx,
2113*b1cdbd2cSJim Jagielski const SfxTemplateItem* pItem )
2114*b1cdbd2cSJim Jagielski {
2115*b1cdbd2cSJim Jagielski DELETEZ( pFamilyState[nIdx] );
2116*b1cdbd2cSJim Jagielski
2117*b1cdbd2cSJim Jagielski if ( pItem )
2118*b1cdbd2cSJim Jagielski pFamilyState[nIdx] = new SfxTemplateItem( *pItem );
2119*b1cdbd2cSJim Jagielski
2120*b1cdbd2cSJim Jagielski Update();
2121*b1cdbd2cSJim Jagielski }
2122*b1cdbd2cSJim Jagielski
2123*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2124*b1cdbd2cSJim Jagielski
IMPL_LINK(SvxStyleToolBoxControl,VisibilityNotification,void *,EMPTYARG)2125*b1cdbd2cSJim Jagielski IMPL_LINK( SvxStyleToolBoxControl, VisibilityNotification, void*, EMPTYARG )
2126*b1cdbd2cSJim Jagielski {
2127*b1cdbd2cSJim Jagielski
2128*b1cdbd2cSJim Jagielski sal_uInt16 i;
2129*b1cdbd2cSJim Jagielski
2130*b1cdbd2cSJim Jagielski // Call ReBind() && UnBind() according to visibility
2131*b1cdbd2cSJim Jagielski SvxStyleBox_Impl* pBox = (SvxStyleBox_Impl*)( GetToolBox().GetItemWindow( GetId() ));
2132*b1cdbd2cSJim Jagielski if ( pBox->IsVisible() && !isBound() )
2133*b1cdbd2cSJim Jagielski {
2134*b1cdbd2cSJim Jagielski for ( i=0; i<MAX_FAMILIES; i++ )
2135*b1cdbd2cSJim Jagielski pBoundItems [i]->ReBind();
2136*b1cdbd2cSJim Jagielski
2137*b1cdbd2cSJim Jagielski bindListener();
2138*b1cdbd2cSJim Jagielski }
2139*b1cdbd2cSJim Jagielski else if ( !pBox->IsVisible() && isBound() )
2140*b1cdbd2cSJim Jagielski {
2141*b1cdbd2cSJim Jagielski for ( i=0; i<MAX_FAMILIES; i++ )
2142*b1cdbd2cSJim Jagielski pBoundItems[i]->UnBind();
2143*b1cdbd2cSJim Jagielski unbindListener();
2144*b1cdbd2cSJim Jagielski }
2145*b1cdbd2cSJim Jagielski
2146*b1cdbd2cSJim Jagielski return 0;
2147*b1cdbd2cSJim Jagielski }
2148*b1cdbd2cSJim Jagielski
2149*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2150*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)2151*b1cdbd2cSJim Jagielski void SvxStyleToolBoxControl::StateChanged(
2152*b1cdbd2cSJim Jagielski
2153*b1cdbd2cSJim Jagielski sal_uInt16 , SfxItemState eState, const SfxPoolItem* pState )
2154*b1cdbd2cSJim Jagielski
2155*b1cdbd2cSJim Jagielski {
2156*b1cdbd2cSJim Jagielski sal_uInt16 nId = GetId();
2157*b1cdbd2cSJim Jagielski ToolBox& rTbx = GetToolBox();
2158*b1cdbd2cSJim Jagielski SvxStyleBox_Impl* pBox = (SvxStyleBox_Impl*)(rTbx.GetItemWindow( nId ));
2159*b1cdbd2cSJim Jagielski TriState eTri = STATE_NOCHECK;
2160*b1cdbd2cSJim Jagielski
2161*b1cdbd2cSJim Jagielski DBG_ASSERT( pBox, "Control not found!" );
2162*b1cdbd2cSJim Jagielski
2163*b1cdbd2cSJim Jagielski if ( SFX_ITEM_DISABLED == eState )
2164*b1cdbd2cSJim Jagielski pBox->Disable();
2165*b1cdbd2cSJim Jagielski else
2166*b1cdbd2cSJim Jagielski pBox->Enable();
2167*b1cdbd2cSJim Jagielski
2168*b1cdbd2cSJim Jagielski rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
2169*b1cdbd2cSJim Jagielski
2170*b1cdbd2cSJim Jagielski switch ( eState )
2171*b1cdbd2cSJim Jagielski {
2172*b1cdbd2cSJim Jagielski case SFX_ITEM_AVAILABLE:
2173*b1cdbd2cSJim Jagielski eTri = ((const SfxBoolItem*)pState)->GetValue()
2174*b1cdbd2cSJim Jagielski ? STATE_CHECK
2175*b1cdbd2cSJim Jagielski : STATE_NOCHECK;
2176*b1cdbd2cSJim Jagielski break;
2177*b1cdbd2cSJim Jagielski
2178*b1cdbd2cSJim Jagielski case SFX_ITEM_DONTCARE:
2179*b1cdbd2cSJim Jagielski eTri = STATE_DONTKNOW;
2180*b1cdbd2cSJim Jagielski break;
2181*b1cdbd2cSJim Jagielski }
2182*b1cdbd2cSJim Jagielski
2183*b1cdbd2cSJim Jagielski rTbx.SetItemState( nId, eTri );
2184*b1cdbd2cSJim Jagielski
2185*b1cdbd2cSJim Jagielski if ( SFX_ITEM_DISABLED != eState )
2186*b1cdbd2cSJim Jagielski Update();
2187*b1cdbd2cSJim Jagielski }
2188*b1cdbd2cSJim Jagielski
2189*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2190*b1cdbd2cSJim Jagielski
CreateItemWindow(Window * pParent)2191*b1cdbd2cSJim Jagielski Window* SvxStyleToolBoxControl::CreateItemWindow( Window *pParent )
2192*b1cdbd2cSJim Jagielski {
2193*b1cdbd2cSJim Jagielski SvxStyleBox_Impl* pBox = new SvxStyleBox_Impl( pParent,
2194*b1cdbd2cSJim Jagielski SID_STYLE_APPLY,
2195*b1cdbd2cSJim Jagielski OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:StyleApply" )),
2196*b1cdbd2cSJim Jagielski SFX_STYLE_FAMILY_PARA,
2197*b1cdbd2cSJim Jagielski Reference< XDispatchProvider >( m_xFrame->getController(), UNO_QUERY ),
2198*b1cdbd2cSJim Jagielski m_xFrame,
2199*b1cdbd2cSJim Jagielski pImpl->aClearForm,
2200*b1cdbd2cSJim Jagielski pImpl->aMore,
2201*b1cdbd2cSJim Jagielski pImpl->bSpecModeWriter || pImpl->bSpecModeCalc );
2202*b1cdbd2cSJim Jagielski if( !pImpl->aDefaultStyles.empty())
2203*b1cdbd2cSJim Jagielski pBox->SetDefaultStyle( pImpl->aDefaultStyles[0] );
2204*b1cdbd2cSJim Jagielski // Set visibility listener to bind/unbind controller
2205*b1cdbd2cSJim Jagielski pBox->SetVisibilityListener( LINK( this, SvxStyleToolBoxControl, VisibilityNotification ));
2206*b1cdbd2cSJim Jagielski
2207*b1cdbd2cSJim Jagielski return pBox;
2208*b1cdbd2cSJim Jagielski }
2209*b1cdbd2cSJim Jagielski
2210*b1cdbd2cSJim Jagielski //========================================================================
2211*b1cdbd2cSJim Jagielski // class SvxFontNameToolBoxControl ---------------------------------------
2212*b1cdbd2cSJim Jagielski //========================================================================
2213*b1cdbd2cSJim Jagielski
SvxFontNameToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2214*b1cdbd2cSJim Jagielski SvxFontNameToolBoxControl::SvxFontNameToolBoxControl(
2215*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId,
2216*b1cdbd2cSJim Jagielski sal_uInt16 nId,
2217*b1cdbd2cSJim Jagielski ToolBox& rTbx )
2218*b1cdbd2cSJim Jagielski
2219*b1cdbd2cSJim Jagielski : SfxToolBoxControl( nSlotId, nId, rTbx )
2220*b1cdbd2cSJim Jagielski {
2221*b1cdbd2cSJim Jagielski }
2222*b1cdbd2cSJim Jagielski
2223*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2224*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)2225*b1cdbd2cSJim Jagielski void SvxFontNameToolBoxControl::StateChanged(
2226*b1cdbd2cSJim Jagielski
2227*b1cdbd2cSJim Jagielski sal_uInt16 , SfxItemState eState, const SfxPoolItem* pState )
2228*b1cdbd2cSJim Jagielski
2229*b1cdbd2cSJim Jagielski {
2230*b1cdbd2cSJim Jagielski sal_uInt16 nId = GetId();
2231*b1cdbd2cSJim Jagielski ToolBox& rTbx = GetToolBox();
2232*b1cdbd2cSJim Jagielski SvxFontNameBox_Impl* pBox = (SvxFontNameBox_Impl*)(rTbx.GetItemWindow( nId ));
2233*b1cdbd2cSJim Jagielski
2234*b1cdbd2cSJim Jagielski DBG_ASSERT( pBox, "Control not found!" );
2235*b1cdbd2cSJim Jagielski
2236*b1cdbd2cSJim Jagielski if ( SFX_ITEM_DISABLED == eState )
2237*b1cdbd2cSJim Jagielski {
2238*b1cdbd2cSJim Jagielski pBox->Disable();
2239*b1cdbd2cSJim Jagielski pBox->Update( (const SvxFontItem*)NULL );
2240*b1cdbd2cSJim Jagielski }
2241*b1cdbd2cSJim Jagielski else
2242*b1cdbd2cSJim Jagielski {
2243*b1cdbd2cSJim Jagielski pBox->Enable();
2244*b1cdbd2cSJim Jagielski
2245*b1cdbd2cSJim Jagielski if ( SFX_ITEM_AVAILABLE == eState )
2246*b1cdbd2cSJim Jagielski {
2247*b1cdbd2cSJim Jagielski const SvxFontItem* pFontItem = dynamic_cast< const SvxFontItem* >( pState );
2248*b1cdbd2cSJim Jagielski
2249*b1cdbd2cSJim Jagielski DBG_ASSERT( pFontItem, "svx::SvxFontNameToolBoxControl::StateChanged(), wrong item type!" );
2250*b1cdbd2cSJim Jagielski if( pFontItem )
2251*b1cdbd2cSJim Jagielski pBox->Update( pFontItem );
2252*b1cdbd2cSJim Jagielski }
2253*b1cdbd2cSJim Jagielski else
2254*b1cdbd2cSJim Jagielski pBox->SetText( String() );
2255*b1cdbd2cSJim Jagielski pBox->SaveValue();
2256*b1cdbd2cSJim Jagielski }
2257*b1cdbd2cSJim Jagielski
2258*b1cdbd2cSJim Jagielski rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
2259*b1cdbd2cSJim Jagielski }
2260*b1cdbd2cSJim Jagielski
2261*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2262*b1cdbd2cSJim Jagielski
CreateItemWindow(Window * pParent)2263*b1cdbd2cSJim Jagielski Window* SvxFontNameToolBoxControl::CreateItemWindow( Window *pParent )
2264*b1cdbd2cSJim Jagielski {
2265*b1cdbd2cSJim Jagielski SvxFontNameBox_Impl* pBox = new SvxFontNameBox_Impl( pParent,
2266*b1cdbd2cSJim Jagielski Reference< XDispatchProvider >( m_xFrame->getController(), UNO_QUERY ),
2267*b1cdbd2cSJim Jagielski m_xFrame,0);
2268*b1cdbd2cSJim Jagielski return pBox;
2269*b1cdbd2cSJim Jagielski }
2270*b1cdbd2cSJim Jagielski
2271*b1cdbd2cSJim Jagielski //========================================================================
2272*b1cdbd2cSJim Jagielski // class SvxFontColorToolBoxControl --------------------------------------
2273*b1cdbd2cSJim Jagielski //========================================================================
2274*b1cdbd2cSJim Jagielski
SvxFontColorToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2275*b1cdbd2cSJim Jagielski SvxFontColorToolBoxControl::SvxFontColorToolBoxControl(
2276*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId,
2277*b1cdbd2cSJim Jagielski sal_uInt16 nId,
2278*b1cdbd2cSJim Jagielski ToolBox& rTbx )
2279*b1cdbd2cSJim Jagielski
2280*b1cdbd2cSJim Jagielski : SfxToolBoxControl( nSlotId, nId, rTbx ),
2281*b1cdbd2cSJim Jagielski pBtnUpdater( new ::svx::ToolboxButtonColorUpdater(
2282*b1cdbd2cSJim Jagielski nSlotId, nId, &GetToolBox(), TBX_UPDATER_MODE_CHAR_COLOR_NEW ))
2283*b1cdbd2cSJim Jagielski {
2284*b1cdbd2cSJim Jagielski rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
2285*b1cdbd2cSJim Jagielski }
2286*b1cdbd2cSJim Jagielski
2287*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2288*b1cdbd2cSJim Jagielski
~SvxFontColorToolBoxControl()2289*b1cdbd2cSJim Jagielski SvxFontColorToolBoxControl::~SvxFontColorToolBoxControl()
2290*b1cdbd2cSJim Jagielski {
2291*b1cdbd2cSJim Jagielski delete pBtnUpdater;
2292*b1cdbd2cSJim Jagielski }
2293*b1cdbd2cSJim Jagielski
2294*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2295*b1cdbd2cSJim Jagielski
GetPopupWindowType() const2296*b1cdbd2cSJim Jagielski SfxPopupWindowType SvxFontColorToolBoxControl::GetPopupWindowType() const
2297*b1cdbd2cSJim Jagielski {
2298*b1cdbd2cSJim Jagielski return SFX_POPUPWINDOW_ONCLICK;
2299*b1cdbd2cSJim Jagielski }
2300*b1cdbd2cSJim Jagielski
2301*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2302*b1cdbd2cSJim Jagielski
CreatePopupWindow()2303*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxFontColorToolBoxControl::CreatePopupWindow()
2304*b1cdbd2cSJim Jagielski {
2305*b1cdbd2cSJim Jagielski SvxColorWindow_Impl* pColorWin =
2306*b1cdbd2cSJim Jagielski new SvxColorWindow_Impl(
2307*b1cdbd2cSJim Jagielski OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:Color" )),
2308*b1cdbd2cSJim Jagielski SID_ATTR_CHAR_COLOR,
2309*b1cdbd2cSJim Jagielski m_xFrame,
2310*b1cdbd2cSJim Jagielski SVX_RESSTR( RID_SVXITEMS_EXTRAS_CHARCOLOR ),
2311*b1cdbd2cSJim Jagielski &GetToolBox() );
2312*b1cdbd2cSJim Jagielski
2313*b1cdbd2cSJim Jagielski pColorWin->StartPopupMode( &GetToolBox(),
2314*b1cdbd2cSJim Jagielski FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
2315*b1cdbd2cSJim Jagielski pColorWin->StartSelection();
2316*b1cdbd2cSJim Jagielski SetPopupWindow( pColorWin );
2317*b1cdbd2cSJim Jagielski return pColorWin;
2318*b1cdbd2cSJim Jagielski }
2319*b1cdbd2cSJim Jagielski
2320*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2321*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)2322*b1cdbd2cSJim Jagielski void SvxFontColorToolBoxControl::StateChanged(
2323*b1cdbd2cSJim Jagielski
2324*b1cdbd2cSJim Jagielski sal_uInt16 , SfxItemState eState, const SfxPoolItem* pState )
2325*b1cdbd2cSJim Jagielski
2326*b1cdbd2cSJim Jagielski {
2327*b1cdbd2cSJim Jagielski sal_uInt16 nId = GetId();
2328*b1cdbd2cSJim Jagielski ToolBox& rTbx = GetToolBox();
2329*b1cdbd2cSJim Jagielski const SvxColorItem* pItem = 0;
2330*b1cdbd2cSJim Jagielski
2331*b1cdbd2cSJim Jagielski if ( SFX_ITEM_DONTCARE != eState )
2332*b1cdbd2cSJim Jagielski pItem = PTR_CAST( SvxColorItem, pState );
2333*b1cdbd2cSJim Jagielski
2334*b1cdbd2cSJim Jagielski if ( pItem )
2335*b1cdbd2cSJim Jagielski pBtnUpdater->Update( pItem->GetValue());
2336*b1cdbd2cSJim Jagielski
2337*b1cdbd2cSJim Jagielski rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
2338*b1cdbd2cSJim Jagielski rTbx.SetItemState( nId, ( SFX_ITEM_DONTCARE == eState ) ? STATE_DONTKNOW : STATE_NOCHECK );
2339*b1cdbd2cSJim Jagielski }
2340*b1cdbd2cSJim Jagielski
2341*b1cdbd2cSJim Jagielski //========================================================================
2342*b1cdbd2cSJim Jagielski // class SvxColorToolBoxControl --------------------------------
2343*b1cdbd2cSJim Jagielski //========================================================================
2344*b1cdbd2cSJim Jagielski
SvxColorToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2345*b1cdbd2cSJim Jagielski SvxColorToolBoxControl::SvxColorToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx ) :
2346*b1cdbd2cSJim Jagielski
2347*b1cdbd2cSJim Jagielski SfxToolBoxControl( nSlotId, nId, rTbx )
2348*b1cdbd2cSJim Jagielski {
2349*b1cdbd2cSJim Jagielski if ( nSlotId == SID_BACKGROUND_COLOR )
2350*b1cdbd2cSJim Jagielski rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
2351*b1cdbd2cSJim Jagielski else
2352*b1cdbd2cSJim Jagielski rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
2353*b1cdbd2cSJim Jagielski rTbx.Invalidate();
2354*b1cdbd2cSJim Jagielski pBtnUpdater = new ::svx::ToolboxButtonColorUpdater( nSlotId, nId, &GetToolBox() );
2355*b1cdbd2cSJim Jagielski }
2356*b1cdbd2cSJim Jagielski
2357*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2358*b1cdbd2cSJim Jagielski
~SvxColorToolBoxControl()2359*b1cdbd2cSJim Jagielski SvxColorToolBoxControl::~SvxColorToolBoxControl()
2360*b1cdbd2cSJim Jagielski {
2361*b1cdbd2cSJim Jagielski delete pBtnUpdater;
2362*b1cdbd2cSJim Jagielski }
2363*b1cdbd2cSJim Jagielski
2364*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2365*b1cdbd2cSJim Jagielski
GetPopupWindowType() const2366*b1cdbd2cSJim Jagielski SfxPopupWindowType SvxColorToolBoxControl::GetPopupWindowType() const
2367*b1cdbd2cSJim Jagielski {
2368*b1cdbd2cSJim Jagielski return SFX_POPUPWINDOW_ONCLICK;
2369*b1cdbd2cSJim Jagielski }
2370*b1cdbd2cSJim Jagielski
2371*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2372*b1cdbd2cSJim Jagielski
CreatePopupWindow()2373*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxColorToolBoxControl::CreatePopupWindow()
2374*b1cdbd2cSJim Jagielski {
2375*b1cdbd2cSJim Jagielski sal_uInt16 nResId = GetSlotId() == SID_BACKGROUND_COLOR ?
2376*b1cdbd2cSJim Jagielski RID_SVXSTR_BACKGROUND : RID_SVXSTR_COLOR;
2377*b1cdbd2cSJim Jagielski SvxColorWindow_Impl* pColorWin = new SvxColorWindow_Impl(
2378*b1cdbd2cSJim Jagielski OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:BackgroundColor" )),
2379*b1cdbd2cSJim Jagielski SID_BACKGROUND_COLOR,
2380*b1cdbd2cSJim Jagielski m_xFrame,
2381*b1cdbd2cSJim Jagielski SVX_RESSTR(nResId),
2382*b1cdbd2cSJim Jagielski &GetToolBox() );
2383*b1cdbd2cSJim Jagielski
2384*b1cdbd2cSJim Jagielski pColorWin->StartPopupMode( &GetToolBox(),
2385*b1cdbd2cSJim Jagielski FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
2386*b1cdbd2cSJim Jagielski pColorWin->StartSelection();
2387*b1cdbd2cSJim Jagielski SetPopupWindow( pColorWin );
2388*b1cdbd2cSJim Jagielski return pColorWin;
2389*b1cdbd2cSJim Jagielski }
2390*b1cdbd2cSJim Jagielski
2391*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2392*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)2393*b1cdbd2cSJim Jagielski void SvxColorToolBoxControl::StateChanged(
2394*b1cdbd2cSJim Jagielski
2395*b1cdbd2cSJim Jagielski sal_uInt16 , SfxItemState eState, const SfxPoolItem* pState )
2396*b1cdbd2cSJim Jagielski
2397*b1cdbd2cSJim Jagielski {
2398*b1cdbd2cSJim Jagielski const SvxColorItem* pItem = 0;
2399*b1cdbd2cSJim Jagielski if ( SFX_ITEM_DONTCARE != eState )
2400*b1cdbd2cSJim Jagielski pItem = PTR_CAST( SvxColorItem, pState );
2401*b1cdbd2cSJim Jagielski
2402*b1cdbd2cSJim Jagielski if ( pItem )
2403*b1cdbd2cSJim Jagielski pBtnUpdater->Update( pItem->GetValue() );
2404*b1cdbd2cSJim Jagielski
2405*b1cdbd2cSJim Jagielski sal_uInt16 nId = GetId();
2406*b1cdbd2cSJim Jagielski ToolBox& rTbx = GetToolBox();
2407*b1cdbd2cSJim Jagielski rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
2408*b1cdbd2cSJim Jagielski rTbx.SetItemState( nId, ( SFX_ITEM_DONTCARE == eState ) ? STATE_DONTKNOW : STATE_NOCHECK );
2409*b1cdbd2cSJim Jagielski }
2410*b1cdbd2cSJim Jagielski
2411*b1cdbd2cSJim Jagielski //========================================================================
2412*b1cdbd2cSJim Jagielski // class SvxFontColorExtToolBoxControl --------------------------------------
2413*b1cdbd2cSJim Jagielski //========================================================================
2414*b1cdbd2cSJim Jagielski
SvxFontColorExtToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2415*b1cdbd2cSJim Jagielski SvxFontColorExtToolBoxControl::SvxFontColorExtToolBoxControl(
2416*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId,
2417*b1cdbd2cSJim Jagielski sal_uInt16 nId,
2418*b1cdbd2cSJim Jagielski ToolBox& rTbx ) :
2419*b1cdbd2cSJim Jagielski
2420*b1cdbd2cSJim Jagielski SfxToolBoxControl( nSlotId, nId, rTbx ),
2421*b1cdbd2cSJim Jagielski pBtnUpdater(0)
2422*b1cdbd2cSJim Jagielski {
2423*b1cdbd2cSJim Jagielski rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) );
2424*b1cdbd2cSJim Jagielski // The following commands are available at the writer module.
2425*b1cdbd2cSJim Jagielski if ( SID_ATTR_CHAR_COLOR2 == nSlotId )
2426*b1cdbd2cSJim Jagielski addStatusListener( OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:CharColorExt" )));
2427*b1cdbd2cSJim Jagielski else
2428*b1cdbd2cSJim Jagielski addStatusListener( OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:CharBackgroundExt" )));
2429*b1cdbd2cSJim Jagielski
2430*b1cdbd2cSJim Jagielski sal_uInt16 nMode = SID_ATTR_CHAR_COLOR2 == nSlotId
2431*b1cdbd2cSJim Jagielski ? TBX_UPDATER_MODE_CHAR_COLOR_NEW : TBX_UPDATER_MODE_CHAR_COLOR_NEW;
2432*b1cdbd2cSJim Jagielski pBtnUpdater = new ::svx::ToolboxButtonColorUpdater( nSlotId, nId, &GetToolBox(), nMode );
2433*b1cdbd2cSJim Jagielski }
2434*b1cdbd2cSJim Jagielski
2435*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2436*b1cdbd2cSJim Jagielski
~SvxFontColorExtToolBoxControl()2437*b1cdbd2cSJim Jagielski SvxFontColorExtToolBoxControl::~SvxFontColorExtToolBoxControl()
2438*b1cdbd2cSJim Jagielski {
2439*b1cdbd2cSJim Jagielski delete pBtnUpdater;
2440*b1cdbd2cSJim Jagielski }
2441*b1cdbd2cSJim Jagielski
2442*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2443*b1cdbd2cSJim Jagielski
GetPopupWindowType() const2444*b1cdbd2cSJim Jagielski SfxPopupWindowType SvxFontColorExtToolBoxControl::GetPopupWindowType() const
2445*b1cdbd2cSJim Jagielski {
2446*b1cdbd2cSJim Jagielski return SFX_POPUPWINDOW_ONTIMEOUT;
2447*b1cdbd2cSJim Jagielski }
2448*b1cdbd2cSJim Jagielski
2449*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2450*b1cdbd2cSJim Jagielski
CreatePopupWindow()2451*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxFontColorExtToolBoxControl::CreatePopupWindow()
2452*b1cdbd2cSJim Jagielski {
2453*b1cdbd2cSJim Jagielski SvxColorWindow_Impl* pColorWin =
2454*b1cdbd2cSJim Jagielski new SvxColorWindow_Impl(
2455*b1cdbd2cSJim Jagielski m_aCommandURL,
2456*b1cdbd2cSJim Jagielski GetSlotId(),
2457*b1cdbd2cSJim Jagielski m_xFrame,
2458*b1cdbd2cSJim Jagielski SVX_RESSTR( RID_SVXITEMS_EXTRAS_CHARCOLOR ),
2459*b1cdbd2cSJim Jagielski &GetToolBox() );
2460*b1cdbd2cSJim Jagielski
2461*b1cdbd2cSJim Jagielski if ( GetSlotId() == SID_ATTR_CHAR_COLOR_BACKGROUND )
2462*b1cdbd2cSJim Jagielski pColorWin->SetText( SVX_RESSTR( RID_SVXSTR_EXTRAS_CHARBACKGROUND ) );
2463*b1cdbd2cSJim Jagielski
2464*b1cdbd2cSJim Jagielski pColorWin->StartPopupMode( &GetToolBox(),
2465*b1cdbd2cSJim Jagielski FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
2466*b1cdbd2cSJim Jagielski pColorWin->StartSelection();
2467*b1cdbd2cSJim Jagielski SetPopupWindow( pColorWin );
2468*b1cdbd2cSJim Jagielski return pColorWin;
2469*b1cdbd2cSJim Jagielski }
2470*b1cdbd2cSJim Jagielski
2471*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2472*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16 nSID,SfxItemState eState,const SfxPoolItem * pState)2473*b1cdbd2cSJim Jagielski void SvxFontColorExtToolBoxControl::StateChanged(
2474*b1cdbd2cSJim Jagielski
2475*b1cdbd2cSJim Jagielski sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
2476*b1cdbd2cSJim Jagielski
2477*b1cdbd2cSJim Jagielski {
2478*b1cdbd2cSJim Jagielski sal_uInt16 nId = GetId();
2479*b1cdbd2cSJim Jagielski ToolBox& rTbx = GetToolBox();
2480*b1cdbd2cSJim Jagielski const SvxColorItem* pItem = 0;
2481*b1cdbd2cSJim Jagielski
2482*b1cdbd2cSJim Jagielski if ( nSID == SID_ATTR_CHAR_COLOR_EXT ||
2483*b1cdbd2cSJim Jagielski nSID == SID_ATTR_CHAR_COLOR_BACKGROUND_EXT )
2484*b1cdbd2cSJim Jagielski {
2485*b1cdbd2cSJim Jagielski if ( SFX_ITEM_DONTCARE != eState )
2486*b1cdbd2cSJim Jagielski {
2487*b1cdbd2cSJim Jagielski const SfxBoolItem* pBool = PTR_CAST( SfxBoolItem, pState );
2488*b1cdbd2cSJim Jagielski rTbx.CheckItem( nId, pBool && pBool->GetValue());
2489*b1cdbd2cSJim Jagielski }
2490*b1cdbd2cSJim Jagielski rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
2491*b1cdbd2cSJim Jagielski }
2492*b1cdbd2cSJim Jagielski else
2493*b1cdbd2cSJim Jagielski {
2494*b1cdbd2cSJim Jagielski if ( SFX_ITEM_DONTCARE != eState )
2495*b1cdbd2cSJim Jagielski pItem = PTR_CAST( SvxColorItem, pState );
2496*b1cdbd2cSJim Jagielski
2497*b1cdbd2cSJim Jagielski if ( pItem )
2498*b1cdbd2cSJim Jagielski pBtnUpdater->Update( pItem->GetValue() );
2499*b1cdbd2cSJim Jagielski }
2500*b1cdbd2cSJim Jagielski }
2501*b1cdbd2cSJim Jagielski
2502*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2503*b1cdbd2cSJim Jagielski
Select(sal_Bool)2504*b1cdbd2cSJim Jagielski void SvxFontColorExtToolBoxControl::Select( sal_Bool )
2505*b1cdbd2cSJim Jagielski {
2506*b1cdbd2cSJim Jagielski OUString aCommand;
2507*b1cdbd2cSJim Jagielski OUString aParamName;
2508*b1cdbd2cSJim Jagielski if ( SID_ATTR_CHAR_COLOR2 == GetSlotId() )
2509*b1cdbd2cSJim Jagielski {
2510*b1cdbd2cSJim Jagielski aCommand = OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:CharColorExt" ));
2511*b1cdbd2cSJim Jagielski aParamName = OUString( RTL_CONSTASCII_USTRINGPARAM( "CharColorExt" ));
2512*b1cdbd2cSJim Jagielski }
2513*b1cdbd2cSJim Jagielski else
2514*b1cdbd2cSJim Jagielski {
2515*b1cdbd2cSJim Jagielski aCommand = OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:CharBackgroundExt" ));
2516*b1cdbd2cSJim Jagielski aParamName = OUString( RTL_CONSTASCII_USTRINGPARAM( "CharBackgroundExt" ));
2517*b1cdbd2cSJim Jagielski }
2518*b1cdbd2cSJim Jagielski
2519*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aArgs( 1 );
2520*b1cdbd2cSJim Jagielski aArgs[0].Name = aParamName;
2521*b1cdbd2cSJim Jagielski aArgs[0].Value = makeAny( GetToolBox().IsItemChecked( GetId() ));
2522*b1cdbd2cSJim Jagielski Dispatch( aCommand, aArgs );
2523*b1cdbd2cSJim Jagielski }
2524*b1cdbd2cSJim Jagielski
2525*b1cdbd2cSJim Jagielski //========================================================================
2526*b1cdbd2cSJim Jagielski // class SvxFrameToolBoxControl ------------------------------------------
2527*b1cdbd2cSJim Jagielski //========================================================================
2528*b1cdbd2cSJim Jagielski
SvxFrameToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2529*b1cdbd2cSJim Jagielski SvxFrameToolBoxControl::SvxFrameToolBoxControl(
2530*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId,
2531*b1cdbd2cSJim Jagielski sal_uInt16 nId,
2532*b1cdbd2cSJim Jagielski ToolBox& rTbx )
2533*b1cdbd2cSJim Jagielski
2534*b1cdbd2cSJim Jagielski : SfxToolBoxControl( nSlotId, nId, rTbx )
2535*b1cdbd2cSJim Jagielski {
2536*b1cdbd2cSJim Jagielski rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
2537*b1cdbd2cSJim Jagielski }
2538*b1cdbd2cSJim Jagielski
2539*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2540*b1cdbd2cSJim Jagielski
GetPopupWindowType() const2541*b1cdbd2cSJim Jagielski SfxPopupWindowType SvxFrameToolBoxControl::GetPopupWindowType() const
2542*b1cdbd2cSJim Jagielski {
2543*b1cdbd2cSJim Jagielski return SFX_POPUPWINDOW_ONCLICK;
2544*b1cdbd2cSJim Jagielski }
2545*b1cdbd2cSJim Jagielski
2546*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2547*b1cdbd2cSJim Jagielski
CreatePopupWindow()2548*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxFrameToolBoxControl::CreatePopupWindow()
2549*b1cdbd2cSJim Jagielski {
2550*b1cdbd2cSJim Jagielski SvxFrameWindow_Impl* pFrameWin = new SvxFrameWindow_Impl(
2551*b1cdbd2cSJim Jagielski GetSlotId(), m_xFrame, &GetToolBox() );
2552*b1cdbd2cSJim Jagielski
2553*b1cdbd2cSJim Jagielski pFrameWin->StartPopupMode( &GetToolBox(), FLOATWIN_POPUPMODE_GRABFOCUS | FLOATWIN_POPUPMODE_ALLOWTEAROFF );
2554*b1cdbd2cSJim Jagielski pFrameWin->StartSelection();
2555*b1cdbd2cSJim Jagielski SetPopupWindow( pFrameWin );
2556*b1cdbd2cSJim Jagielski
2557*b1cdbd2cSJim Jagielski return pFrameWin;
2558*b1cdbd2cSJim Jagielski }
2559*b1cdbd2cSJim Jagielski
2560*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2561*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem *)2562*b1cdbd2cSJim Jagielski void SvxFrameToolBoxControl::StateChanged(
2563*b1cdbd2cSJim Jagielski
2564*b1cdbd2cSJim Jagielski sal_uInt16, SfxItemState eState, const SfxPoolItem* )
2565*b1cdbd2cSJim Jagielski
2566*b1cdbd2cSJim Jagielski {
2567*b1cdbd2cSJim Jagielski sal_uInt16 nId = GetId();
2568*b1cdbd2cSJim Jagielski ToolBox& rTbx = GetToolBox();
2569*b1cdbd2cSJim Jagielski
2570*b1cdbd2cSJim Jagielski rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
2571*b1cdbd2cSJim Jagielski rTbx.SetItemState( nId, (SFX_ITEM_DONTCARE == eState)
2572*b1cdbd2cSJim Jagielski ? STATE_DONTKNOW
2573*b1cdbd2cSJim Jagielski : STATE_NOCHECK );
2574*b1cdbd2cSJim Jagielski }
2575*b1cdbd2cSJim Jagielski
2576*b1cdbd2cSJim Jagielski //========================================================================
2577*b1cdbd2cSJim Jagielski // class SvxFrameLineStyleToolBoxControl ---------------------------------
2578*b1cdbd2cSJim Jagielski //========================================================================
2579*b1cdbd2cSJim Jagielski
SvxFrameLineStyleToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2580*b1cdbd2cSJim Jagielski SvxFrameLineStyleToolBoxControl::SvxFrameLineStyleToolBoxControl(
2581*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId,
2582*b1cdbd2cSJim Jagielski sal_uInt16 nId,
2583*b1cdbd2cSJim Jagielski ToolBox& rTbx )
2584*b1cdbd2cSJim Jagielski
2585*b1cdbd2cSJim Jagielski : SfxToolBoxControl( nSlotId, nId, rTbx )
2586*b1cdbd2cSJim Jagielski {
2587*b1cdbd2cSJim Jagielski rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
2588*b1cdbd2cSJim Jagielski }
2589*b1cdbd2cSJim Jagielski
2590*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2591*b1cdbd2cSJim Jagielski
GetPopupWindowType() const2592*b1cdbd2cSJim Jagielski SfxPopupWindowType SvxFrameLineStyleToolBoxControl::GetPopupWindowType() const
2593*b1cdbd2cSJim Jagielski {
2594*b1cdbd2cSJim Jagielski return SFX_POPUPWINDOW_ONCLICK;
2595*b1cdbd2cSJim Jagielski }
2596*b1cdbd2cSJim Jagielski
2597*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2598*b1cdbd2cSJim Jagielski
CreatePopupWindow()2599*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxFrameLineStyleToolBoxControl::CreatePopupWindow()
2600*b1cdbd2cSJim Jagielski {
2601*b1cdbd2cSJim Jagielski SvxLineWindow_Impl* pLineWin = new SvxLineWindow_Impl( GetSlotId(), m_xFrame, &GetToolBox() );
2602*b1cdbd2cSJim Jagielski pLineWin->StartPopupMode( &GetToolBox(), sal_True );
2603*b1cdbd2cSJim Jagielski pLineWin->StartSelection();
2604*b1cdbd2cSJim Jagielski SetPopupWindow( pLineWin );
2605*b1cdbd2cSJim Jagielski
2606*b1cdbd2cSJim Jagielski return pLineWin;
2607*b1cdbd2cSJim Jagielski }
2608*b1cdbd2cSJim Jagielski
2609*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2610*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem *)2611*b1cdbd2cSJim Jagielski void SvxFrameLineStyleToolBoxControl::StateChanged(
2612*b1cdbd2cSJim Jagielski
2613*b1cdbd2cSJim Jagielski sal_uInt16 , SfxItemState eState, const SfxPoolItem* )
2614*b1cdbd2cSJim Jagielski {
2615*b1cdbd2cSJim Jagielski sal_uInt16 nId = GetId();
2616*b1cdbd2cSJim Jagielski ToolBox& rTbx = GetToolBox();
2617*b1cdbd2cSJim Jagielski
2618*b1cdbd2cSJim Jagielski rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
2619*b1cdbd2cSJim Jagielski rTbx.SetItemState( nId, (SFX_ITEM_DONTCARE == eState)
2620*b1cdbd2cSJim Jagielski ? STATE_DONTKNOW
2621*b1cdbd2cSJim Jagielski : STATE_NOCHECK );
2622*b1cdbd2cSJim Jagielski }
2623*b1cdbd2cSJim Jagielski
2624*b1cdbd2cSJim Jagielski //========================================================================
2625*b1cdbd2cSJim Jagielski // class SvxFrameLineColorToolBoxControl ---------------------------------
2626*b1cdbd2cSJim Jagielski //========================================================================
2627*b1cdbd2cSJim Jagielski
SvxFrameLineColorToolBoxControl(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2628*b1cdbd2cSJim Jagielski SvxFrameLineColorToolBoxControl::SvxFrameLineColorToolBoxControl(
2629*b1cdbd2cSJim Jagielski sal_uInt16 nSlotId,
2630*b1cdbd2cSJim Jagielski sal_uInt16 nId,
2631*b1cdbd2cSJim Jagielski ToolBox& rTbx ) :
2632*b1cdbd2cSJim Jagielski
2633*b1cdbd2cSJim Jagielski SfxToolBoxControl( nSlotId, nId, rTbx ),
2634*b1cdbd2cSJim Jagielski pBtnUpdater(new ::svx::ToolboxButtonColorUpdater( nSlotId, nId, &GetToolBox() ))
2635*b1cdbd2cSJim Jagielski {
2636*b1cdbd2cSJim Jagielski rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
2637*b1cdbd2cSJim Jagielski }
2638*b1cdbd2cSJim Jagielski
2639*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2640*b1cdbd2cSJim Jagielski
~SvxFrameLineColorToolBoxControl()2641*b1cdbd2cSJim Jagielski SvxFrameLineColorToolBoxControl::~SvxFrameLineColorToolBoxControl()
2642*b1cdbd2cSJim Jagielski {
2643*b1cdbd2cSJim Jagielski
2644*b1cdbd2cSJim Jagielski delete pBtnUpdater;
2645*b1cdbd2cSJim Jagielski }
2646*b1cdbd2cSJim Jagielski
2647*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2648*b1cdbd2cSJim Jagielski
GetPopupWindowType() const2649*b1cdbd2cSJim Jagielski SfxPopupWindowType SvxFrameLineColorToolBoxControl::GetPopupWindowType() const
2650*b1cdbd2cSJim Jagielski {
2651*b1cdbd2cSJim Jagielski return SFX_POPUPWINDOW_ONCLICK;
2652*b1cdbd2cSJim Jagielski }
2653*b1cdbd2cSJim Jagielski
2654*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2655*b1cdbd2cSJim Jagielski
CreatePopupWindow()2656*b1cdbd2cSJim Jagielski SfxPopupWindow* SvxFrameLineColorToolBoxControl::CreatePopupWindow()
2657*b1cdbd2cSJim Jagielski {
2658*b1cdbd2cSJim Jagielski SvxColorWindow_Impl* pColorWin = new SvxColorWindow_Impl(
2659*b1cdbd2cSJim Jagielski OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:FrameLineColor" )),
2660*b1cdbd2cSJim Jagielski SID_FRAME_LINECOLOR,
2661*b1cdbd2cSJim Jagielski m_xFrame,
2662*b1cdbd2cSJim Jagielski SVX_RESSTR(RID_SVXSTR_FRAME_COLOR),
2663*b1cdbd2cSJim Jagielski &GetToolBox() );
2664*b1cdbd2cSJim Jagielski
2665*b1cdbd2cSJim Jagielski pColorWin->StartPopupMode( &GetToolBox(),
2666*b1cdbd2cSJim Jagielski FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
2667*b1cdbd2cSJim Jagielski pColorWin->StartSelection();
2668*b1cdbd2cSJim Jagielski SetPopupWindow( pColorWin );
2669*b1cdbd2cSJim Jagielski return pColorWin;
2670*b1cdbd2cSJim Jagielski }
2671*b1cdbd2cSJim Jagielski
2672*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2673*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)2674*b1cdbd2cSJim Jagielski void SvxFrameLineColorToolBoxControl::StateChanged(
2675*b1cdbd2cSJim Jagielski
2676*b1cdbd2cSJim Jagielski sal_uInt16 , SfxItemState eState, const SfxPoolItem* pState )
2677*b1cdbd2cSJim Jagielski
2678*b1cdbd2cSJim Jagielski {
2679*b1cdbd2cSJim Jagielski sal_uInt16 nId = GetId();
2680*b1cdbd2cSJim Jagielski ToolBox& rTbx = GetToolBox();
2681*b1cdbd2cSJim Jagielski rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
2682*b1cdbd2cSJim Jagielski rTbx.SetItemState( nId, ( SFX_ITEM_DONTCARE == eState ) ? STATE_DONTKNOW : STATE_NOCHECK );
2683*b1cdbd2cSJim Jagielski
2684*b1cdbd2cSJim Jagielski const SvxColorItem* pItem = 0;
2685*b1cdbd2cSJim Jagielski if ( SFX_ITEM_DONTCARE != eState )
2686*b1cdbd2cSJim Jagielski {
2687*b1cdbd2cSJim Jagielski pItem = PTR_CAST( SvxColorItem, pState );
2688*b1cdbd2cSJim Jagielski if ( pItem )
2689*b1cdbd2cSJim Jagielski pBtnUpdater->Update( pItem->GetValue());
2690*b1cdbd2cSJim Jagielski }
2691*b1cdbd2cSJim Jagielski }
2692*b1cdbd2cSJim Jagielski
2693*b1cdbd2cSJim Jagielski // class SvxReloadControllerItem_Impl ------------------------------------
2694*b1cdbd2cSJim Jagielski
2695*b1cdbd2cSJim Jagielski class SvxReloadControllerItem_Impl
2696*b1cdbd2cSJim Jagielski {
2697*b1cdbd2cSJim Jagielski public:
2698*b1cdbd2cSJim Jagielski Image* pNormalImage;
2699*b1cdbd2cSJim Jagielski Image* pSpecialImage;
2700*b1cdbd2cSJim Jagielski
SvxReloadControllerItem_Impl()2701*b1cdbd2cSJim Jagielski SvxReloadControllerItem_Impl() :
2702*b1cdbd2cSJim Jagielski pNormalImage( new Image( SVX_RES( RID_SVX_RELOAD_NORMAL ) ) ), pSpecialImage( 0 ) {}
~SvxReloadControllerItem_Impl()2703*b1cdbd2cSJim Jagielski ~SvxReloadControllerItem_Impl() { delete pNormalImage; delete pSpecialImage; }
2704*b1cdbd2cSJim Jagielski
GetNormalImage()2705*b1cdbd2cSJim Jagielski Image& GetNormalImage() { return *pNormalImage; }
GetSpecialImage()2706*b1cdbd2cSJim Jagielski Image& GetSpecialImage()
2707*b1cdbd2cSJim Jagielski {
2708*b1cdbd2cSJim Jagielski if ( !pSpecialImage )
2709*b1cdbd2cSJim Jagielski pSpecialImage = new Image( SVX_RES( RID_SVX_RELOAD_SPECIAL ) );
2710*b1cdbd2cSJim Jagielski return *pSpecialImage;
2711*b1cdbd2cSJim Jagielski }
2712*b1cdbd2cSJim Jagielski };
2713*b1cdbd2cSJim Jagielski
2714*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2715*b1cdbd2cSJim Jagielski
SvxReloadControllerItem(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2716*b1cdbd2cSJim Jagielski SvxReloadControllerItem::SvxReloadControllerItem( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
2717*b1cdbd2cSJim Jagielski : SfxToolBoxControl( nSlotId, nId, rTbx )
2718*b1cdbd2cSJim Jagielski , pImpl( new SvxReloadControllerItem_Impl )
2719*b1cdbd2cSJim Jagielski {
2720*b1cdbd2cSJim Jagielski rTbx.SetItemImage( nId, pImpl->GetNormalImage() );
2721*b1cdbd2cSJim Jagielski }
2722*b1cdbd2cSJim Jagielski
2723*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2724*b1cdbd2cSJim Jagielski
~SvxReloadControllerItem()2725*b1cdbd2cSJim Jagielski SvxReloadControllerItem::~SvxReloadControllerItem()
2726*b1cdbd2cSJim Jagielski {
2727*b1cdbd2cSJim Jagielski delete pImpl;
2728*b1cdbd2cSJim Jagielski }
2729*b1cdbd2cSJim Jagielski
2730*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2731*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)2732*b1cdbd2cSJim Jagielski void SvxReloadControllerItem::StateChanged(
2733*b1cdbd2cSJim Jagielski sal_uInt16 , SfxItemState eState, const SfxPoolItem* pState )
2734*b1cdbd2cSJim Jagielski {
2735*b1cdbd2cSJim Jagielski SfxBoolItem* pItem = PTR_CAST( SfxBoolItem, pState );
2736*b1cdbd2cSJim Jagielski ToolBox& rBox = GetToolBox();
2737*b1cdbd2cSJim Jagielski if( pItem )
2738*b1cdbd2cSJim Jagielski {
2739*b1cdbd2cSJim Jagielski rBox.SetItemImage( GetId(),
2740*b1cdbd2cSJim Jagielski pItem->GetValue() ? pImpl->GetSpecialImage() :
2741*b1cdbd2cSJim Jagielski pImpl->GetNormalImage() );
2742*b1cdbd2cSJim Jagielski }
2743*b1cdbd2cSJim Jagielski rBox.EnableItem( GetId(), eState != SFX_ITEM_DISABLED );
2744*b1cdbd2cSJim Jagielski }
2745*b1cdbd2cSJim Jagielski
2746*b1cdbd2cSJim Jagielski //========================================================================
2747*b1cdbd2cSJim Jagielski // class SvxSimpleUndoRedoController -------------------------------------
2748*b1cdbd2cSJim Jagielski //========================================================================
2749*b1cdbd2cSJim Jagielski
SvxSimpleUndoRedoController(sal_uInt16 nSlotId,sal_uInt16 nId,ToolBox & rTbx)2750*b1cdbd2cSJim Jagielski SvxSimpleUndoRedoController::SvxSimpleUndoRedoController( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
2751*b1cdbd2cSJim Jagielski :SfxToolBoxControl( nSlotId, nId, rTbx )
2752*b1cdbd2cSJim Jagielski {
2753*b1cdbd2cSJim Jagielski aDefaultText = rTbx.GetItemText( nId );
2754*b1cdbd2cSJim Jagielski }
2755*b1cdbd2cSJim Jagielski
2756*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2757*b1cdbd2cSJim Jagielski
~SvxSimpleUndoRedoController()2758*b1cdbd2cSJim Jagielski SvxSimpleUndoRedoController::~SvxSimpleUndoRedoController()
2759*b1cdbd2cSJim Jagielski {
2760*b1cdbd2cSJim Jagielski }
2761*b1cdbd2cSJim Jagielski
2762*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2763*b1cdbd2cSJim Jagielski
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)2764*b1cdbd2cSJim Jagielski void SvxSimpleUndoRedoController::StateChanged( sal_uInt16, SfxItemState eState, const SfxPoolItem* pState )
2765*b1cdbd2cSJim Jagielski {
2766*b1cdbd2cSJim Jagielski SfxStringItem* pItem = PTR_CAST( SfxStringItem, pState );
2767*b1cdbd2cSJim Jagielski ToolBox& rBox = GetToolBox();
2768*b1cdbd2cSJim Jagielski if ( pItem && eState != SFX_ITEM_DISABLED )
2769*b1cdbd2cSJim Jagielski {
2770*b1cdbd2cSJim Jagielski ::rtl::OUString aNewText( MnemonicGenerator::EraseAllMnemonicChars( pItem->GetValue() ) );
2771*b1cdbd2cSJim Jagielski rBox.SetQuickHelpText( GetId(), aNewText );
2772*b1cdbd2cSJim Jagielski }
2773*b1cdbd2cSJim Jagielski if ( eState == SFX_ITEM_DISABLED )
2774*b1cdbd2cSJim Jagielski rBox.SetQuickHelpText( GetId(), aDefaultText );
2775*b1cdbd2cSJim Jagielski rBox.EnableItem( GetId(), eState != SFX_ITEM_DISABLED );
2776*b1cdbd2cSJim Jagielski }
2777*b1cdbd2cSJim Jagielski
2778*b1cdbd2cSJim Jagielski //========================================================================
2779*b1cdbd2cSJim Jagielski
lcl_ResizeValueSet(Window & rWin,ValueSet & rValueSet)2780*b1cdbd2cSJim Jagielski void lcl_ResizeValueSet( Window &rWin, ValueSet &rValueSet )
2781*b1cdbd2cSJim Jagielski {
2782*b1cdbd2cSJim Jagielski Size aSize = rWin.GetOutputSizePixel();
2783*b1cdbd2cSJim Jagielski aSize.Width() -= 4;
2784*b1cdbd2cSJim Jagielski aSize.Height() -= 4;
2785*b1cdbd2cSJim Jagielski rValueSet.SetPosSizePixel( Point(2,2), aSize );
2786*b1cdbd2cSJim Jagielski }
2787*b1cdbd2cSJim Jagielski
2788*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2789*b1cdbd2cSJim Jagielski
lcl_CalcSizeValueSet(Window & rWin,ValueSet & rValueSet,const Size & aItemSize)2790*b1cdbd2cSJim Jagielski void lcl_CalcSizeValueSet( Window &rWin, ValueSet &rValueSet, const Size &aItemSize )
2791*b1cdbd2cSJim Jagielski {
2792*b1cdbd2cSJim Jagielski Size aSize = rValueSet.CalcWindowSizePixel( aItemSize );
2793*b1cdbd2cSJim Jagielski aSize.Width() += 4;
2794*b1cdbd2cSJim Jagielski aSize.Height() += 4;
2795*b1cdbd2cSJim Jagielski rWin.SetOutputSizePixel( aSize );
2796*b1cdbd2cSJim Jagielski }
2797*b1cdbd2cSJim Jagielski
2798*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
2799*b1cdbd2cSJim Jagielski
lcl_FontChangedHint(const SfxHint & rHint)2800*b1cdbd2cSJim Jagielski sal_Bool lcl_FontChangedHint( const SfxHint &rHint )
2801*b1cdbd2cSJim Jagielski {
2802*b1cdbd2cSJim Jagielski SfxPoolItemHint *pItemHint = PTR_CAST(SfxPoolItemHint, &rHint);
2803*b1cdbd2cSJim Jagielski if ( pItemHint )
2804*b1cdbd2cSJim Jagielski {
2805*b1cdbd2cSJim Jagielski SfxPoolItem *pItem = pItemHint->GetObject();
2806*b1cdbd2cSJim Jagielski return ( pItem->Which() == SID_ATTR_CHAR_FONTLIST );
2807*b1cdbd2cSJim Jagielski }
2808*b1cdbd2cSJim Jagielski else
2809*b1cdbd2cSJim Jagielski {
2810*b1cdbd2cSJim Jagielski SfxSimpleHint* pSimpleHint = PTR_CAST(SfxSimpleHint, &rHint);
2811*b1cdbd2cSJim Jagielski return pSimpleHint && ( SFX_HINT_DATACHANGED ==
2812*b1cdbd2cSJim Jagielski ( pSimpleHint->GetId() & SFX_HINT_DATACHANGED ) );
2813*b1cdbd2cSJim Jagielski }
2814*b1cdbd2cSJim Jagielski }
2815*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
CreateAccessible()2816*b1cdbd2cSJim Jagielski Reference< ::com::sun::star::accessibility::XAccessible > SvxFontNameBox_Impl::CreateAccessible()
2817*b1cdbd2cSJim Jagielski {
2818*b1cdbd2cSJim Jagielski FillList();
2819*b1cdbd2cSJim Jagielski return FontNameBox::CreateAccessible();
2820*b1cdbd2cSJim Jagielski }
2821