xref: /trunk/main/svx/source/stbctrls/modctrl.cxx (revision 07662b26)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_svx.hxx"
26 
27 // include ---------------------------------------------------------------
28 
29 #ifndef _STATUS_HXX //autogen
30 #include <vcl/status.hxx>
31 #endif
32 #include <svl/eitem.hxx>
33 #include <sfx2/app.hxx>
34 
35 #define _SVX_MODCTRL_CXX
36 
37 #include <svx/dialogs.hrc>
38 
39 #include "svx/modctrl.hxx"
40 #include <svx/dialmgr.hxx>
41 
42 SFX_IMPL_STATUSBAR_CONTROL(SvxModifyControl, SfxBoolItem);
43 
44 // class SvxModifyControl ------------------------------------------------
45 
SvxModifyControl(sal_uInt16 _nSlotId,sal_uInt16 _nId,StatusBar & rStb)46 SvxModifyControl::SvxModifyControl( sal_uInt16 _nSlotId,
47 									sal_uInt16 _nId,
48 									StatusBar& rStb ) :
49 
50 	SfxStatusBarControl( _nSlotId, _nId, rStb ),
51 	bState( sal_True )
52 {
53 }
54 
55 // -----------------------------------------------------------------------
56 
StateChanged(sal_uInt16,SfxItemState eState,const SfxPoolItem * pState)57 void SvxModifyControl::StateChanged( sal_uInt16, SfxItemState eState,
58 									 const SfxPoolItem* pState )
59 {
60 	if ( SFX_ITEM_AVAILABLE != eState )
61 		GetStatusBar().SetItemText( GetId(), String() );
62 	else
63 	{
64 		DBG_ASSERT( pState->ISA( SfxBoolItem ), "invalid item type" );
65 		SfxBoolItem* pItem = (SfxBoolItem*)pState;
66 		bState = pItem->GetValue();
67 		DrawItemText_Impl();
68 	}
69 }
70 
71 // -----------------------------------------------------------------------
72 
Paint(const UserDrawEvent &)73 void SvxModifyControl::Paint( const UserDrawEvent& )
74 {
75 	DrawItemText_Impl();
76 }
77 
78 // -----------------------------------------------------------------------
79 
DrawItemText_Impl()80 void SvxModifyControl::DrawItemText_Impl()
81 {
82 	String sMode;
83 
84 	if ( bState )
85 		sMode = '*';
86 	GetStatusBar().SetItemText( GetId(), sMode );
87 }
88 
GetDefItemWidth(const StatusBar & rStb)89 sal_uIntPtr SvxModifyControl::GetDefItemWidth(const StatusBar& rStb)
90 {
91 	return rStb.GetTextWidth(String::CreateFromAscii("XX"));
92 }
93 
94 /* vim: set noet sw=4 ts=4: */
95