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