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 #include "vbaradiobutton.hxx"
29 #include "vbanewfont.hxx"
30 
31 using namespace com::sun::star;
32 using namespace ooo::vba;
33 
34 
35 const static rtl::OUString LABEL( RTL_CONSTASCII_USTRINGPARAM("Label") );
36 const static rtl::OUString STATE( RTL_CONSTASCII_USTRINGPARAM("State") );
37 ScVbaRadioButton::ScVbaRadioButton( const uno::Reference< XHelperInterface >& xParent, const uno::Reference< uno::XComponentContext >& xContext, const uno::Reference< uno::XInterface >& xControl, const uno::Reference< frame::XModel >& xModel, AbstractGeometryAttributes* pGeomHelper ) : RadioButtonImpl_BASE( xParent, xContext, xControl, xModel, pGeomHelper )
38 {
39 }
40 
41 // Attributes
42 rtl::OUString SAL_CALL
43 ScVbaRadioButton::getCaption() throw (css::uno::RuntimeException)
44 {
45     rtl::OUString Label;
46     m_xProps->getPropertyValue( LABEL ) >>= Label;
47     return Label;
48 }
49 
50 void SAL_CALL
51 ScVbaRadioButton::setCaption( const rtl::OUString& _caption ) throw (::com::sun::star::uno::RuntimeException)
52 {
53     m_xProps->setPropertyValue( LABEL, uno::makeAny( _caption ) );
54 }
55 
56 uno::Any SAL_CALL
57 ScVbaRadioButton::getValue() throw (css::uno::RuntimeException)
58 {
59     sal_Int16 nValue = -1;
60     m_xProps->getPropertyValue( STATE ) >>= nValue;
61     if( nValue != 0 )
62         nValue = -1;
63 //    return uno::makeAny( nValue );
64 // I must be missing something MSO says value should be -1 if selected, 0 if not
65 // selected
66     return uno::makeAny( ( nValue == -1 ) ? sal_True : sal_False );
67 
68 }
69 
70 void SAL_CALL
71 ScVbaRadioButton::setValue( const uno::Any& _value ) throw (uno::RuntimeException)
72 {
73     sal_Int16 nValue = 0;
74     sal_Bool bValue = sal_False;
75     if( _value >>= nValue )
76     {
77         if( nValue == -1)
78         nValue = 1;
79     }
80     else if ( _value >>= bValue )
81     {
82         if ( bValue )
83             nValue = 1;
84     }
85     m_xProps->setPropertyValue( STATE, uno::makeAny( nValue ) );
86 }
87 
88 uno::Reference< msforms::XNewFont > SAL_CALL ScVbaRadioButton::getFont() throw (uno::RuntimeException)
89 {
90     return new VbaNewFont( this, mxContext, m_xProps );
91 }
92 
93 rtl::OUString&
94 ScVbaRadioButton::getServiceImplName()
95 {
96 	static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("ScVbaRadioButton") );
97 	return sImplName;
98 }
99 
100 uno::Sequence< rtl::OUString >
101 ScVbaRadioButton::getServiceNames()
102 {
103 	static uno::Sequence< rtl::OUString > aServiceNames;
104 	if ( aServiceNames.getLength() == 0 )
105 	{
106 		aServiceNames.realloc( 1 );
107 		aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.msforms.RadioButton" ) );
108 	}
109 	return aServiceNames;
110 }
111