xref: /aoo41x/main/svx/source/stbctrls/modctrl.cxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_svx.hxx"
30 
31 // include ---------------------------------------------------------------
32 
33 #ifndef _STATUS_HXX //autogen
34 #include <vcl/status.hxx>
35 #endif
36 #include <svl/eitem.hxx>
37 #include <sfx2/app.hxx>
38 
39 #define _SVX_MODCTRL_CXX
40 
41 #include <svx/dialogs.hrc>
42 
43 #include "svx/modctrl.hxx"
44 #include <svx/dialmgr.hxx>
45 
46 SFX_IMPL_STATUSBAR_CONTROL(SvxModifyControl, SfxBoolItem);
47 
48 // class SvxModifyControl ------------------------------------------------
49 
50 SvxModifyControl::SvxModifyControl( sal_uInt16 _nSlotId,
51                                     sal_uInt16 _nId,
52 									StatusBar& rStb ) :
53 
54 	SfxStatusBarControl( _nSlotId, _nId, rStb ),
55 	bState( sal_True )
56 {
57 }
58 
59 // -----------------------------------------------------------------------
60 
61 void SvxModifyControl::StateChanged( sal_uInt16, SfxItemState eState,
62 									 const SfxPoolItem* pState )
63 {
64 	if ( SFX_ITEM_AVAILABLE != eState )
65 		GetStatusBar().SetItemText( GetId(), String() );
66 	else
67 	{
68 		DBG_ASSERT( pState->ISA( SfxBoolItem ), "invalid item type" );
69 		SfxBoolItem* pItem = (SfxBoolItem*)pState;
70 		bState = pItem->GetValue();
71 		DrawItemText_Impl();
72 	}
73 }
74 
75 // -----------------------------------------------------------------------
76 
77 void SvxModifyControl::Paint( const UserDrawEvent& )
78 {
79 	DrawItemText_Impl();
80 }
81 
82 // -----------------------------------------------------------------------
83 
84 void SvxModifyControl::DrawItemText_Impl()
85 {
86 	String sMode;
87 
88 	if ( bState )
89 		sMode = '*';
90 	GetStatusBar().SetItemText( GetId(), sMode );
91 }
92 
93 sal_uIntPtr SvxModifyControl::GetDefItemWidth(const StatusBar& rStb)
94 {
95 	return rStb.GetTextWidth(String::CreateFromAscii("XX"));
96 }
97 
98 
99