diff options
Diffstat (limited to 'sc/source/ui/vba/vbavalidation.cxx')
-rw-r--r-- | sc/source/ui/vba/vbavalidation.cxx | 346 |
1 files changed, 0 insertions, 346 deletions
diff --git a/sc/source/ui/vba/vbavalidation.cxx b/sc/source/ui/vba/vbavalidation.cxx deleted file mode 100644 index 573d9fab5..000000000 --- a/sc/source/ui/vba/vbavalidation.cxx +++ /dev/null @@ -1,346 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#include "vbavalidation.hxx" -#include "vbaformatcondition.hxx" -#include <com/sun/star/sheet/XSheetCondition.hpp> -#include <com/sun/star/sheet/ValidationType.hpp> -#include <com/sun/star/sheet/ValidationAlertStyle.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <ooo/vba/excel/XlDVType.hpp> -#include <ooo/vba/excel/XlFormatConditionOperator.hpp> -#include <ooo/vba/excel/XlDVAlertStyle.hpp> - -#include "unonames.hxx" - -using namespace ::ooo::vba; -using namespace ::com::sun::star; - -const static rtl::OUString VALIDATION( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_VALIDAT ) ); -const static rtl::OUString IGNOREBLANK( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_IGNOREBL ) ); -const static rtl::OUString SHOWINPUT( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SHOWINP ) ); -const static rtl::OUString SHOWERROR( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SHOWERR ) ); -const static rtl::OUString ERRORTITLE( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ERRTITLE ) ); -const static rtl::OUString INPUTTITLE( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_INPTITLE ) ); -const static rtl::OUString INPUTMESS( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_INPMESS ) ); -const static rtl::OUString ERRORMESS( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ERRMESS ) ); -const static rtl::OUString STYPE( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_TYPE ) ); -const static rtl::OUString SHOWLIST( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_SHOWLIST ) ); -const static rtl::OUString ALERTSTYLE( RTL_CONSTASCII_USTRINGPARAM( SC_UNONAME_ERRALSTY ) ); - -void -lcl_setValidationProps( const uno::Reference< table::XCellRange >& xRange, const uno::Reference< beans::XPropertySet >& xProps ) -{ - uno::Reference< beans::XPropertySet > xRangeProps( xRange, uno::UNO_QUERY_THROW ); - xRangeProps->setPropertyValue( VALIDATION , uno::makeAny( xProps ) ); -} - -uno::Reference< beans::XPropertySet > -lcl_getValidationProps( const uno::Reference< table::XCellRange >& xRange ) -{ - uno::Reference< beans::XPropertySet > xProps( xRange, uno::UNO_QUERY_THROW ); - uno::Reference< beans::XPropertySet > xValProps; - xValProps.set( xProps->getPropertyValue( VALIDATION ), uno::UNO_QUERY_THROW ); - return xValProps; -} - -::sal_Bool SAL_CALL -ScVbaValidation::getIgnoreBlank() throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - sal_Bool bBlank = false; - xProps->getPropertyValue( IGNOREBLANK ) >>= bBlank; - return bBlank; -} - -void SAL_CALL -ScVbaValidation::setIgnoreBlank( ::sal_Bool _ignoreblank ) throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - xProps->setPropertyValue( IGNOREBLANK, uno::makeAny( _ignoreblank ) ); - lcl_setValidationProps( m_xRange, xProps ); -} - -::sal_Bool SAL_CALL -ScVbaValidation::getInCellDropdown() throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps = lcl_getValidationProps( m_xRange ); - sal_Int32 nShowList = 0; - xProps->getPropertyValue( SHOWLIST ) >>= nShowList; - return ( nShowList ? sal_True : false ); -} - -void SAL_CALL -ScVbaValidation::setInCellDropdown( ::sal_Bool _incelldropdown ) throw (uno::RuntimeException) -{ - sal_Int32 nDropDown = false; - if ( _incelldropdown ) - nDropDown = 1; - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps(m_xRange) ); - xProps->setPropertyValue( SHOWLIST, uno::makeAny( nDropDown ) ); - lcl_setValidationProps( m_xRange, xProps ); -} - -::sal_Bool SAL_CALL -ScVbaValidation::getShowInput() throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps = lcl_getValidationProps( m_xRange ); - sal_Bool bShowInput = false; - xProps->getPropertyValue( SHOWINPUT ) >>= bShowInput; - return bShowInput; -} - -void SAL_CALL -ScVbaValidation:: setShowInput( ::sal_Bool _showinput ) throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps(m_xRange) ); - xProps->setPropertyValue( IGNOREBLANK, uno::makeAny( _showinput ) ); - lcl_setValidationProps( m_xRange, xProps ); -} - -::sal_Bool SAL_CALL -ScVbaValidation::getShowError() throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps = lcl_getValidationProps( m_xRange ); - sal_Bool bShowError = false; - xProps->getPropertyValue( SHOWERROR ) >>= bShowError; - return bShowError; -} - -void SAL_CALL -ScVbaValidation::setShowError( ::sal_Bool _showerror ) throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - xProps->setPropertyValue( SHOWERROR, uno::makeAny( _showerror ) ); - lcl_setValidationProps( m_xRange, xProps ); -} - -::rtl::OUString SAL_CALL -ScVbaValidation::getErrorTitle() throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps = lcl_getValidationProps( m_xRange ); - rtl::OUString sErrorTitle; - xProps->getPropertyValue( ERRORTITLE ) >>= sErrorTitle; - return sErrorTitle; -} - -void -ScVbaValidation::setErrorTitle( const rtl::OUString& _errormessage ) throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - xProps->setPropertyValue( ERRORTITLE, uno::makeAny( _errormessage ) ); - lcl_setValidationProps( m_xRange, xProps ); -} - -::rtl::OUString SAL_CALL -ScVbaValidation::getInputMessage() throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps = lcl_getValidationProps( m_xRange ); - rtl::OUString sMsg; - xProps->getPropertyValue( INPUTMESS ) >>= sMsg; - return sMsg; -} - -void SAL_CALL -ScVbaValidation::setInputMessage( const ::rtl::OUString& _inputmessage ) throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - xProps->setPropertyValue( INPUTMESS, uno::makeAny( _inputmessage ) ); - lcl_setValidationProps( m_xRange, xProps ); -} - -::rtl::OUString SAL_CALL -ScVbaValidation::getInputTitle() throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps = lcl_getValidationProps( m_xRange ); - rtl::OUString sString; - xProps->getPropertyValue( INPUTTITLE ) >>= sString; - return sString; -} - -void SAL_CALL -ScVbaValidation::setInputTitle( const ::rtl::OUString& _inputtitle ) throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - xProps->setPropertyValue( INPUTTITLE, uno::makeAny( _inputtitle ) ); - lcl_setValidationProps( m_xRange, xProps ); -} - -::rtl::OUString SAL_CALL -ScVbaValidation::getErrorMessage() throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps = lcl_getValidationProps( m_xRange ); - rtl::OUString sString; - xProps->getPropertyValue( ERRORMESS ) >>= sString; - return sString; -} - -void SAL_CALL -ScVbaValidation::setErrorMessage( const ::rtl::OUString& _errormessage ) throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - xProps->setPropertyValue( ERRORMESS, uno::makeAny( _errormessage ) ); - lcl_setValidationProps( m_xRange, xProps ); -} - - -void SAL_CALL -ScVbaValidation::Delete( ) throw (uno::RuntimeException) -{ - rtl::OUString sBlank; - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - uno::Reference< sheet::XSheetCondition > xCond( xProps, uno::UNO_QUERY_THROW ); - xProps->setPropertyValue( IGNOREBLANK, uno::makeAny( sal_True ) ); - xProps->setPropertyValue( SHOWINPUT, uno::makeAny( sal_True ) ); - xProps->setPropertyValue( SHOWERROR, uno::makeAny( sal_True ) ); - xProps->setPropertyValue( ERRORTITLE, uno::makeAny( sBlank ) ); - xProps->setPropertyValue( INPUTMESS, uno::makeAny( sBlank) ); - xProps->setPropertyValue( ALERTSTYLE, uno::makeAny( sheet::ValidationAlertStyle_STOP) ); - xProps->setPropertyValue( STYPE, uno::makeAny( sheet::ValidationType_ANY ) ); - xCond->setFormula1( sBlank ); - xCond->setFormula2( sBlank ); - xCond->setOperator( sheet::ConditionOperator_NONE ); - - lcl_setValidationProps( m_xRange, xProps ); -} - -// Fix the defect that validatation cannot work when the input should be limited between a lower bound and an upper bound -void SAL_CALL -ScVbaValidation::Add( const uno::Any& Type, const uno::Any& AlertStyle, const uno::Any& Operator, const uno::Any& Formula1, const uno::Any& Formula2 ) throw (uno::RuntimeException) -{ - uno::Reference< beans::XPropertySet > xProps( lcl_getValidationProps( m_xRange ) ); - uno::Reference< sheet::XSheetCondition > xCond( xProps, uno::UNO_QUERY_THROW ); - - sheet::ValidationType nValType = sheet::ValidationType_ANY; - xProps->getPropertyValue( STYPE ) >>= nValType; - if ( nValType != sheet::ValidationType_ANY ) - throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "validation object already exists" ) ), uno::Reference< uno::XInterface >() ); - sal_Int32 nType = -1; - if ( !Type.hasValue() || !( Type >>= nType ) ) - throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "missing required param" ) ), uno::Reference< uno::XInterface >() ); - - Delete(); // set up defaults - rtl::OUString sFormula1; - Formula1 >>= sFormula1; - rtl::OUString sFormula2; - Formula2 >>= sFormula2; - switch ( nType ) - { - case excel::XlDVType::xlValidateList: - { - // for validate list - // at least formula1 is required - if ( !Formula1.hasValue() ) - throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "missing param" ) ), uno::Reference< uno::XInterface >() ); - nValType = sheet::ValidationType_LIST; - xProps->setPropertyValue( STYPE, uno::makeAny(nValType )); - // #TODO validate required params - // #TODO need to correct the ';' delimited formula on get/set - break; - } - case excel::XlDVType::xlValidateWholeNumber: - nValType = sheet::ValidationType_WHOLE; - xProps->setPropertyValue( STYPE, uno::makeAny(nValType )); - break; - default: - throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "unsupported operation..." ) ), uno::Reference< uno::XInterface >() ); - } - - sheet::ValidationAlertStyle eStyle = sheet::ValidationAlertStyle_STOP; - sal_Int32 nVbaAlertStyle = excel::XlDVAlertStyle::xlValidAlertStop; - if ( AlertStyle.hasValue() && ( AlertStyle >>= nVbaAlertStyle ) ) - { - switch( nVbaAlertStyle ) - { - case excel::XlDVAlertStyle::xlValidAlertStop: - // yes I know it's already defaulted but safer to assume - // someone propbably could change the code above - eStyle = sheet::ValidationAlertStyle_STOP; - break; - case excel::XlDVAlertStyle::xlValidAlertWarning: - eStyle = sheet::ValidationAlertStyle_WARNING; - break; - case excel::XlDVAlertStyle::xlValidAlertInformation: - eStyle = sheet::ValidationAlertStyle_INFO; - break; - default: - throw uno::RuntimeException( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "bad param..." ) ), uno::Reference< uno::XInterface >() ); - - } - } - - xProps->setPropertyValue( ALERTSTYLE, uno::makeAny( eStyle ) ); - - // fix the defect that validatation cannot work when the input should be limited between a lower bound and an upper bound - if ( Operator.hasValue() ) - { - css::sheet::ConditionOperator conOperator = ScVbaFormatCondition::retrieveAPIOperator( Operator ); - xCond->setOperator( conOperator ); - } - - if ( sFormula1.getLength() ) - xCond->setFormula1( sFormula1 ); - if ( sFormula2.getLength() ) - xCond->setFormula2( sFormula2 ); - - lcl_setValidationProps( m_xRange, xProps ); -} - -::rtl::OUString SAL_CALL -ScVbaValidation::getFormula1() throw (uno::RuntimeException) -{ - uno::Reference< sheet::XSheetCondition > xCond( lcl_getValidationProps( m_xRange ), uno::UNO_QUERY_THROW ); - return xCond->getFormula1(); -} - -::rtl::OUString SAL_CALL -ScVbaValidation::getFormula2() throw (uno::RuntimeException) -{ - uno::Reference< sheet::XSheetCondition > xCond( lcl_getValidationProps( m_xRange ), uno::UNO_QUERY_THROW ); - return xCond->getFormula2(); -} - -rtl::OUString& -ScVbaValidation::getServiceImplName() -{ - static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("ScVbaValidation") ); - return sImplName; -} - -uno::Sequence< rtl::OUString > -ScVbaValidation::getServiceNames() -{ - static uno::Sequence< rtl::OUString > aServiceNames; - if ( aServiceNames.getLength() == 0 ) - { - aServiceNames.realloc( 1 ); - aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.excel.Validation" ) ); - } - return aServiceNames; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |