1b3f79822SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file 5b3f79822SAndrew Rist * distributed with this work for additional information 6b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the 8b3f79822SAndrew Rist * "License"); you may not use this file except in compliance 9b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing, 14b3f79822SAndrew Rist * software distributed under the License is distributed on an 15b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16b3f79822SAndrew Rist * KIND, either express or implied. See the License for the 17b3f79822SAndrew Rist * specific language governing permissions and limitations 18b3f79822SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20b3f79822SAndrew Rist *************************************************************/ 21b3f79822SAndrew Rist 22b3f79822SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25*b77af630Sdamjan #include "precompiled_scui.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #ifdef SC_DLLIMPLEMENTATION 28cdf0e10cSrcweir #undef SC_DLLIMPLEMENTATION 29cdf0e10cSrcweir #endif 30cdf0e10cSrcweir #include "editfield.hxx" 31cdf0e10cSrcweir #include <rtl/math.hxx> 32cdf0e10cSrcweir #include <unotools/localedatawrapper.hxx> 33cdf0e10cSrcweir #include "global.hxx" 34cdf0e10cSrcweir 35cdf0e10cSrcweir // ============================================================================ 36cdf0e10cSrcweir 37cdf0e10cSrcweir namespace { 38cdf0e10cSrcweir 39cdf0e10cSrcweir sal_Unicode lclGetDecSep() 40cdf0e10cSrcweir { 41cdf0e10cSrcweir return ScGlobal::GetpLocaleData()->getNumDecimalSep().GetChar( 0 ); 42cdf0e10cSrcweir } 43cdf0e10cSrcweir 44cdf0e10cSrcweir sal_Unicode lclGetGroupSep() 45cdf0e10cSrcweir { 46cdf0e10cSrcweir return ScGlobal::GetpLocaleData()->getNumThousandSep().GetChar( 0 ); 47cdf0e10cSrcweir } 48cdf0e10cSrcweir 49cdf0e10cSrcweir } // namespace 50cdf0e10cSrcweir 51cdf0e10cSrcweir // ============================================================================ 52cdf0e10cSrcweir 53cdf0e10cSrcweir ScDoubleField::ScDoubleField( Window* pParent, const ResId& rResId ) : 54cdf0e10cSrcweir Edit( pParent, rResId ) 55cdf0e10cSrcweir { 56cdf0e10cSrcweir } 57cdf0e10cSrcweir 58cdf0e10cSrcweir bool ScDoubleField::GetValue( double& rfValue ) const 59cdf0e10cSrcweir { 60cdf0e10cSrcweir String aStr( GetText() ); 61cdf0e10cSrcweir aStr.EraseLeadingAndTrailingChars( ' ' ); 62cdf0e10cSrcweir bool bOk = aStr.Len() > 0; 63cdf0e10cSrcweir if( bOk ) 64cdf0e10cSrcweir { 65cdf0e10cSrcweir rtl_math_ConversionStatus eStatus; 66cdf0e10cSrcweir sal_Int32 nEnd; 67cdf0e10cSrcweir rfValue = rtl::math::stringToDouble( aStr, lclGetDecSep(), lclGetGroupSep(), &eStatus, &nEnd ); 68cdf0e10cSrcweir bOk = (eStatus == rtl_math_ConversionStatus_Ok) && (nEnd == static_cast< sal_Int32 >( aStr.Len() )); 69cdf0e10cSrcweir } 70cdf0e10cSrcweir return bOk; 71cdf0e10cSrcweir } 72cdf0e10cSrcweir 73cdf0e10cSrcweir void ScDoubleField::SetValue( double fValue, sal_Int32 nDecPlaces, bool bEraseTrailingDecZeros ) 74cdf0e10cSrcweir { 75cdf0e10cSrcweir SetText( ::rtl::math::doubleToUString( fValue, rtl_math_StringFormat_G, 76cdf0e10cSrcweir nDecPlaces, lclGetDecSep(), bEraseTrailingDecZeros ) ); 77cdf0e10cSrcweir } 78cdf0e10cSrcweir 79cdf0e10cSrcweir // ============================================================================ 80cdf0e10cSrcweir 81