1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove 25*b1cdbd2cSJim Jagielski #include "precompiled_extensions.hxx" 26*b1cdbd2cSJim Jagielski #include "usercontrol.hxx" 27*b1cdbd2cSJim Jagielski 28*b1cdbd2cSJim Jagielski /** === begin UNO includes === **/ 29*b1cdbd2cSJim Jagielski #include <com/sun/star/inspection/PropertyControlType.hpp> 30*b1cdbd2cSJim Jagielski #include <com/sun/star/inspection/PropertyControlType.hpp> 31*b1cdbd2cSJim Jagielski /** === end UNO includes === **/ 32*b1cdbd2cSJim Jagielski #include <svl/numuno.hxx> 33*b1cdbd2cSJim Jagielski #include <rtl/math.hxx> 34*b1cdbd2cSJim Jagielski #include <tools/debug.hxx> 35*b1cdbd2cSJim Jagielski #include <svl/zformat.hxx> 36*b1cdbd2cSJim Jagielski #include <connectivity/dbconversion.hxx> 37*b1cdbd2cSJim Jagielski #include <com/sun/star/util/Time.hpp> 38*b1cdbd2cSJim Jagielski #include "modulepcr.hxx" 39*b1cdbd2cSJim Jagielski #include "propresid.hrc" 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski //............................................................................ 42*b1cdbd2cSJim Jagielski namespace pcr 43*b1cdbd2cSJim Jagielski { 44*b1cdbd2cSJim Jagielski //............................................................................ 45*b1cdbd2cSJim Jagielski 46*b1cdbd2cSJim Jagielski /** === begin UNO using === **/ 47*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Any; 48*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Type; 49*b1cdbd2cSJim Jagielski using ::com::sun::star::beans::IllegalTypeException; 50*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::RuntimeException; 51*b1cdbd2cSJim Jagielski /** === end UNO using === **/ 52*b1cdbd2cSJim Jagielski namespace PropertyControlType = ::com::sun::star::inspection::PropertyControlType; 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski //================================================================== 55*b1cdbd2cSJim Jagielski // NumberFormatSampleField 56*b1cdbd2cSJim Jagielski //================================================================== 57*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ PreNotify(NotifyEvent & rNEvt)58*b1cdbd2cSJim Jagielski long NumberFormatSampleField::PreNotify( NotifyEvent& rNEvt ) 59*b1cdbd2cSJim Jagielski { 60*b1cdbd2cSJim Jagielski // want to handle two keys myself : Del/Backspace should empty the window (setting my prop to "standard" this way) 61*b1cdbd2cSJim Jagielski if (EVENT_KEYINPUT == rNEvt.GetType()) 62*b1cdbd2cSJim Jagielski { 63*b1cdbd2cSJim Jagielski sal_uInt16 nKey = rNEvt.GetKeyEvent()->GetKeyCode().GetCode(); 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski if ((KEY_DELETE == nKey) || (KEY_BACKSPACE == nKey)) 66*b1cdbd2cSJim Jagielski { 67*b1cdbd2cSJim Jagielski SetText( String() ); 68*b1cdbd2cSJim Jagielski if ( m_pHelper ) 69*b1cdbd2cSJim Jagielski m_pHelper->ModifiedHdl( this ); 70*b1cdbd2cSJim Jagielski return 1; 71*b1cdbd2cSJim Jagielski } 72*b1cdbd2cSJim Jagielski } 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielski return BaseClass::PreNotify( rNEvt ); 75*b1cdbd2cSJim Jagielski } 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ SetFormatSupplier(const SvNumberFormatsSupplierObj * pSupplier)78*b1cdbd2cSJim Jagielski void NumberFormatSampleField::SetFormatSupplier( const SvNumberFormatsSupplierObj* pSupplier ) 79*b1cdbd2cSJim Jagielski { 80*b1cdbd2cSJim Jagielski if ( pSupplier ) 81*b1cdbd2cSJim Jagielski { 82*b1cdbd2cSJim Jagielski TreatAsNumber( sal_True ); 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski SvNumberFormatter* pFormatter = pSupplier->GetNumberFormatter(); 85*b1cdbd2cSJim Jagielski SetFormatter( pFormatter, sal_True ); 86*b1cdbd2cSJim Jagielski SetValue( 1234.56789 ); 87*b1cdbd2cSJim Jagielski } 88*b1cdbd2cSJim Jagielski else 89*b1cdbd2cSJim Jagielski { 90*b1cdbd2cSJim Jagielski TreatAsNumber( sal_False ); 91*b1cdbd2cSJim Jagielski SetFormatter( NULL, sal_True ); 92*b1cdbd2cSJim Jagielski SetText( String() ); 93*b1cdbd2cSJim Jagielski } 94*b1cdbd2cSJim Jagielski } 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski //================================================================== 97*b1cdbd2cSJim Jagielski // OFormatSampleControl 98*b1cdbd2cSJim Jagielski //================================================================== 99*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ OFormatSampleControl(Window * pParent,WinBits nWinStyle)100*b1cdbd2cSJim Jagielski OFormatSampleControl::OFormatSampleControl( Window* pParent, WinBits nWinStyle ) 101*b1cdbd2cSJim Jagielski :OFormatSampleControl_Base( PropertyControlType::Unknown, pParent, nWinStyle ) 102*b1cdbd2cSJim Jagielski { 103*b1cdbd2cSJim Jagielski } 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ setValue(const Any & _rValue)106*b1cdbd2cSJim Jagielski void SAL_CALL OFormatSampleControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) 107*b1cdbd2cSJim Jagielski { 108*b1cdbd2cSJim Jagielski sal_Int32 nFormatKey = 0; 109*b1cdbd2cSJim Jagielski if ( _rValue >>= nFormatKey ) 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski // else set the new format key, the text will be reformatted 112*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetFormatKey( nFormatKey ); 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski SvNumberFormatter* pNF = getTypedControlWindow()->GetFormatter(); 115*b1cdbd2cSJim Jagielski const SvNumberformat* pEntry = pNF->GetEntry( nFormatKey ); 116*b1cdbd2cSJim Jagielski OSL_ENSURE( pEntry, "OFormatSampleControl::setValue: invalid format entry!" ); 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski const bool bIsTextFormat = ( pEntry && pEntry->IsTextFormat() ); 119*b1cdbd2cSJim Jagielski if ( bIsTextFormat ) 120*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetText( String( PcrRes( RID_STR_TEXT_FORMAT ) ) ); 121*b1cdbd2cSJim Jagielski else 122*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetValue( pEntry ? getPreviewValue( *pEntry ) : 1234.56789 ); 123*b1cdbd2cSJim Jagielski } 124*b1cdbd2cSJim Jagielski else 125*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetText( String() ); 126*b1cdbd2cSJim Jagielski } 127*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getPreviewValue(const SvNumberformat & i_rEntry)128*b1cdbd2cSJim Jagielski double OFormatSampleControl::getPreviewValue( const SvNumberformat& i_rEntry ) 129*b1cdbd2cSJim Jagielski { 130*b1cdbd2cSJim Jagielski double nValue = 1234.56789; 131*b1cdbd2cSJim Jagielski switch ( i_rEntry.GetType() & ~NUMBERFORMAT_DEFINED ) 132*b1cdbd2cSJim Jagielski { 133*b1cdbd2cSJim Jagielski case NUMBERFORMAT_DATE: 134*b1cdbd2cSJim Jagielski { 135*b1cdbd2cSJim Jagielski Date aCurrentDate; 136*b1cdbd2cSJim Jagielski static ::com::sun::star::util::Date STANDARD_DB_DATE(30,12,1899); 137*b1cdbd2cSJim Jagielski nValue = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDate(static_cast<sal_Int32>(aCurrentDate.GetDate())),STANDARD_DB_DATE); 138*b1cdbd2cSJim Jagielski } 139*b1cdbd2cSJim Jagielski break; 140*b1cdbd2cSJim Jagielski case NUMBERFORMAT_TIME: 141*b1cdbd2cSJim Jagielski case NUMBERFORMAT_DATETIME: 142*b1cdbd2cSJim Jagielski { 143*b1cdbd2cSJim Jagielski Time aCurrentTime; 144*b1cdbd2cSJim Jagielski nValue = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toTime(aCurrentTime.GetTime())); 145*b1cdbd2cSJim Jagielski } 146*b1cdbd2cSJim Jagielski break; 147*b1cdbd2cSJim Jagielski default: 148*b1cdbd2cSJim Jagielski break; 149*b1cdbd2cSJim Jagielski } 150*b1cdbd2cSJim Jagielski return nValue; 151*b1cdbd2cSJim Jagielski } 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getPreviewValue(SvNumberFormatter * _pNF,sal_Int32 _nFormatKey)154*b1cdbd2cSJim Jagielski double OFormatSampleControl::getPreviewValue(SvNumberFormatter* _pNF,sal_Int32 _nFormatKey) 155*b1cdbd2cSJim Jagielski { 156*b1cdbd2cSJim Jagielski const SvNumberformat* pEntry = _pNF->GetEntry(_nFormatKey); 157*b1cdbd2cSJim Jagielski DBG_ASSERT( pEntry, "OFormattedNumericControl::SetFormatDescription: invalid format key!" ); 158*b1cdbd2cSJim Jagielski double nValue = 1234.56789; 159*b1cdbd2cSJim Jagielski if ( pEntry ) 160*b1cdbd2cSJim Jagielski nValue = getPreviewValue( *pEntry ); 161*b1cdbd2cSJim Jagielski return nValue; 162*b1cdbd2cSJim Jagielski } 163*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getValue()164*b1cdbd2cSJim Jagielski Any SAL_CALL OFormatSampleControl::getValue() throw (RuntimeException) 165*b1cdbd2cSJim Jagielski { 166*b1cdbd2cSJim Jagielski Any aPropValue; 167*b1cdbd2cSJim Jagielski if ( getTypedControlWindow()->GetText().Len() ) 168*b1cdbd2cSJim Jagielski aPropValue <<= (sal_Int32)getTypedControlWindow()->GetFormatKey(); 169*b1cdbd2cSJim Jagielski return aPropValue; 170*b1cdbd2cSJim Jagielski } 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getValueType()173*b1cdbd2cSJim Jagielski Type SAL_CALL OFormatSampleControl::getValueType() throw (RuntimeException) 174*b1cdbd2cSJim Jagielski { 175*b1cdbd2cSJim Jagielski return ::getCppuType( static_cast< sal_Int32* >( NULL ) ); 176*b1cdbd2cSJim Jagielski } 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski //================================================================== 179*b1cdbd2cSJim Jagielski // class OFormattedNumericControl 180*b1cdbd2cSJim Jagielski //================================================================== 181*b1cdbd2cSJim Jagielski DBG_NAME(OFormattedNumericControl); 182*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ OFormattedNumericControl(Window * pParent,WinBits nWinStyle)183*b1cdbd2cSJim Jagielski OFormattedNumericControl::OFormattedNumericControl( Window* pParent, WinBits nWinStyle ) 184*b1cdbd2cSJim Jagielski :OFormattedNumericControl_Base( PropertyControlType::Unknown, pParent, nWinStyle ) 185*b1cdbd2cSJim Jagielski { 186*b1cdbd2cSJim Jagielski DBG_CTOR(OFormattedNumericControl,NULL); 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski getTypedControlWindow()->TreatAsNumber(sal_True); 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski m_nLastDecimalDigits = getTypedControlWindow()->GetDecimalDigits(); 191*b1cdbd2cSJim Jagielski } 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ ~OFormattedNumericControl()194*b1cdbd2cSJim Jagielski OFormattedNumericControl::~OFormattedNumericControl() 195*b1cdbd2cSJim Jagielski { 196*b1cdbd2cSJim Jagielski DBG_DTOR(OFormattedNumericControl,NULL); 197*b1cdbd2cSJim Jagielski } 198*b1cdbd2cSJim Jagielski 199*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ setValue(const Any & _rValue)200*b1cdbd2cSJim Jagielski void SAL_CALL OFormattedNumericControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) 201*b1cdbd2cSJim Jagielski { 202*b1cdbd2cSJim Jagielski double nValue( 0 ); 203*b1cdbd2cSJim Jagielski if ( _rValue >>= nValue ) 204*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetValue( nValue ); 205*b1cdbd2cSJim Jagielski else 206*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetText(String()); 207*b1cdbd2cSJim Jagielski } 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getValue()210*b1cdbd2cSJim Jagielski Any SAL_CALL OFormattedNumericControl::getValue() throw (RuntimeException) 211*b1cdbd2cSJim Jagielski { 212*b1cdbd2cSJim Jagielski Any aPropValue; 213*b1cdbd2cSJim Jagielski if ( getTypedControlWindow()->GetText().Len() ) 214*b1cdbd2cSJim Jagielski aPropValue <<= (double)getTypedControlWindow()->GetValue(); 215*b1cdbd2cSJim Jagielski return aPropValue; 216*b1cdbd2cSJim Jagielski } 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getValueType()219*b1cdbd2cSJim Jagielski Type SAL_CALL OFormattedNumericControl::getValueType() throw (RuntimeException) 220*b1cdbd2cSJim Jagielski { 221*b1cdbd2cSJim Jagielski return ::getCppuType( static_cast< double* >( NULL ) ); 222*b1cdbd2cSJim Jagielski } 223*b1cdbd2cSJim Jagielski 224*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ SetFormatDescription(const FormatDescription & rDesc)225*b1cdbd2cSJim Jagielski void OFormattedNumericControl::SetFormatDescription(const FormatDescription& rDesc) 226*b1cdbd2cSJim Jagielski { 227*b1cdbd2cSJim Jagielski sal_Bool bFallback = sal_True; 228*b1cdbd2cSJim Jagielski 229*b1cdbd2cSJim Jagielski if (rDesc.pSupplier) 230*b1cdbd2cSJim Jagielski { 231*b1cdbd2cSJim Jagielski getTypedControlWindow()->TreatAsNumber(sal_True); 232*b1cdbd2cSJim Jagielski 233*b1cdbd2cSJim Jagielski SvNumberFormatter* pFormatter = rDesc.pSupplier->GetNumberFormatter(); 234*b1cdbd2cSJim Jagielski if (pFormatter != getTypedControlWindow()->GetFormatter()) 235*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetFormatter(pFormatter, sal_True); 236*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetFormatKey(rDesc.nKey); 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski const SvNumberformat* pEntry = getTypedControlWindow()->GetFormatter()->GetEntry(getTypedControlWindow()->GetFormatKey()); 239*b1cdbd2cSJim Jagielski DBG_ASSERT( pEntry, "OFormattedNumericControl::SetFormatDescription: invalid format key!" ); 240*b1cdbd2cSJim Jagielski if ( pEntry ) 241*b1cdbd2cSJim Jagielski { 242*b1cdbd2cSJim Jagielski switch (pEntry->GetType() & ~NUMBERFORMAT_DEFINED) 243*b1cdbd2cSJim Jagielski { 244*b1cdbd2cSJim Jagielski case NUMBERFORMAT_NUMBER: 245*b1cdbd2cSJim Jagielski case NUMBERFORMAT_CURRENCY: 246*b1cdbd2cSJim Jagielski case NUMBERFORMAT_SCIENTIFIC: 247*b1cdbd2cSJim Jagielski case NUMBERFORMAT_FRACTION: 248*b1cdbd2cSJim Jagielski case NUMBERFORMAT_PERCENT: 249*b1cdbd2cSJim Jagielski m_nLastDecimalDigits = getTypedControlWindow()->GetDecimalDigits(); 250*b1cdbd2cSJim Jagielski break; 251*b1cdbd2cSJim Jagielski case NUMBERFORMAT_DATETIME: 252*b1cdbd2cSJim Jagielski case NUMBERFORMAT_DATE: 253*b1cdbd2cSJim Jagielski case NUMBERFORMAT_TIME: 254*b1cdbd2cSJim Jagielski m_nLastDecimalDigits = 7; 255*b1cdbd2cSJim Jagielski break; 256*b1cdbd2cSJim Jagielski default: 257*b1cdbd2cSJim Jagielski m_nLastDecimalDigits = 0; 258*b1cdbd2cSJim Jagielski break; 259*b1cdbd2cSJim Jagielski } 260*b1cdbd2cSJim Jagielski bFallback = sal_False; 261*b1cdbd2cSJim Jagielski } 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielski } 264*b1cdbd2cSJim Jagielski 265*b1cdbd2cSJim Jagielski if ( bFallback ) 266*b1cdbd2cSJim Jagielski { 267*b1cdbd2cSJim Jagielski getTypedControlWindow()->TreatAsNumber(sal_False); 268*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetFormatter(NULL, sal_True); 269*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetText(String()); 270*b1cdbd2cSJim Jagielski m_nLastDecimalDigits = 0; 271*b1cdbd2cSJim Jagielski } 272*b1cdbd2cSJim Jagielski } 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski //======================================================================== 275*b1cdbd2cSJim Jagielski //= OFileUrlControl 276*b1cdbd2cSJim Jagielski //======================================================================== 277*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ OFileUrlControl(Window * pParent,WinBits nWinStyle)278*b1cdbd2cSJim Jagielski OFileUrlControl::OFileUrlControl( Window* pParent, WinBits nWinStyle ) 279*b1cdbd2cSJim Jagielski :OFileUrlControl_Base( PropertyControlType::Unknown, pParent, nWinStyle | WB_DROPDOWN ) 280*b1cdbd2cSJim Jagielski { 281*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetDropDownLineCount( 10 ); 282*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetPlaceHolder( String( PcrRes( RID_EMBED_IMAGE_PLACEHOLDER ) ) ) ; 283*b1cdbd2cSJim Jagielski } 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ ~OFileUrlControl()286*b1cdbd2cSJim Jagielski OFileUrlControl::~OFileUrlControl() 287*b1cdbd2cSJim Jagielski { 288*b1cdbd2cSJim Jagielski } 289*b1cdbd2cSJim Jagielski 290*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ setValue(const Any & _rValue)291*b1cdbd2cSJim Jagielski void SAL_CALL OFileUrlControl::setValue( const Any& _rValue ) throw (IllegalTypeException, RuntimeException) 292*b1cdbd2cSJim Jagielski { 293*b1cdbd2cSJim Jagielski ::rtl::OUString sURL; 294*b1cdbd2cSJim Jagielski if ( ( _rValue >>= sURL ) ) 295*b1cdbd2cSJim Jagielski { 296*b1cdbd2cSJim Jagielski if ( sURL.indexOf( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "vnd.sun.star.GraphicObject:" ) ) ) == 0 ) 297*b1cdbd2cSJim Jagielski getTypedControlWindow()->DisplayURL( getTypedControlWindow()->GetPlaceHolder() ); 298*b1cdbd2cSJim Jagielski else 299*b1cdbd2cSJim Jagielski getTypedControlWindow()->DisplayURL( sURL ); 300*b1cdbd2cSJim Jagielski } 301*b1cdbd2cSJim Jagielski else 302*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetText( String() ); 303*b1cdbd2cSJim Jagielski } 304*b1cdbd2cSJim Jagielski 305*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getValue()306*b1cdbd2cSJim Jagielski Any SAL_CALL OFileUrlControl::getValue() throw (RuntimeException) 307*b1cdbd2cSJim Jagielski { 308*b1cdbd2cSJim Jagielski Any aPropValue; 309*b1cdbd2cSJim Jagielski if ( getTypedControlWindow()->GetText().Len() ) 310*b1cdbd2cSJim Jagielski aPropValue <<= (::rtl::OUString)getTypedControlWindow()->GetURL(); 311*b1cdbd2cSJim Jagielski return aPropValue; 312*b1cdbd2cSJim Jagielski } 313*b1cdbd2cSJim Jagielski 314*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getValueType()315*b1cdbd2cSJim Jagielski Type SAL_CALL OFileUrlControl::getValueType() throw (RuntimeException) 316*b1cdbd2cSJim Jagielski { 317*b1cdbd2cSJim Jagielski return ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) ); 318*b1cdbd2cSJim Jagielski } 319*b1cdbd2cSJim Jagielski 320*b1cdbd2cSJim Jagielski //======================================================================== 321*b1cdbd2cSJim Jagielski //= OTimeDurationControl 322*b1cdbd2cSJim Jagielski //======================================================================== 323*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ OTimeDurationControl(::Window * pParent,WinBits nWinStyle)324*b1cdbd2cSJim Jagielski OTimeDurationControl::OTimeDurationControl( ::Window* pParent, WinBits nWinStyle ) 325*b1cdbd2cSJim Jagielski :ONumericControl( pParent, nWinStyle ) 326*b1cdbd2cSJim Jagielski { 327*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetUnit( FUNIT_CUSTOM ); 328*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetCustomUnitText( String::CreateFromAscii( " ms" ) ); 329*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetCustomConvertHdl( LINK( this, OTimeDurationControl, OnCustomConvert ) ); 330*b1cdbd2cSJim Jagielski } 331*b1cdbd2cSJim Jagielski 332*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ ~OTimeDurationControl()333*b1cdbd2cSJim Jagielski OTimeDurationControl::~OTimeDurationControl() 334*b1cdbd2cSJim Jagielski { 335*b1cdbd2cSJim Jagielski } 336*b1cdbd2cSJim Jagielski 337*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ getControlType()338*b1cdbd2cSJim Jagielski ::sal_Int16 SAL_CALL OTimeDurationControl::getControlType() throw (::com::sun::star::uno::RuntimeException) 339*b1cdbd2cSJim Jagielski { 340*b1cdbd2cSJim Jagielski // don't use the base class'es method, it would claim we're a standard control, which 341*b1cdbd2cSJim Jagielski // we in fact aren't 342*b1cdbd2cSJim Jagielski return PropertyControlType::Unknown; 343*b1cdbd2cSJim Jagielski } 344*b1cdbd2cSJim Jagielski 345*b1cdbd2cSJim Jagielski //------------------------------------------------------------------ 346*b1cdbd2cSJim Jagielski IMPL_LINK( OTimeDurationControl, OnCustomConvert, MetricField*, /*pField*/ ) 347*b1cdbd2cSJim Jagielski { 348*b1cdbd2cSJim Jagielski long nMultiplier = 1; 349*b1cdbd2cSJim Jagielski if ( getTypedControlWindow()->GetCurUnitText().EqualsIgnoreCaseAscii( "ms" ) ) 350*b1cdbd2cSJim Jagielski nMultiplier = 1; 351*b1cdbd2cSJim Jagielski if ( getTypedControlWindow()->GetCurUnitText().EqualsIgnoreCaseAscii( "s" ) ) 352*b1cdbd2cSJim Jagielski nMultiplier = 1000; 353*b1cdbd2cSJim Jagielski else if ( getTypedControlWindow()->GetCurUnitText().EqualsIgnoreCaseAscii( "m" ) ) 354*b1cdbd2cSJim Jagielski nMultiplier = 1000 * 60; 355*b1cdbd2cSJim Jagielski else if ( getTypedControlWindow()->GetCurUnitText().EqualsIgnoreCaseAscii( "h" ) ) 356*b1cdbd2cSJim Jagielski nMultiplier = 1000 * 60 * 60; 357*b1cdbd2cSJim Jagielski 358*b1cdbd2cSJim Jagielski getTypedControlWindow()->SetValue( getTypedControlWindow()->GetLastValue() * nMultiplier ); 359*b1cdbd2cSJim Jagielski 360*b1cdbd2cSJim Jagielski return 0L; 361*b1cdbd2cSJim Jagielski } 362*b1cdbd2cSJim Jagielski 363*b1cdbd2cSJim Jagielski //............................................................................ 364*b1cdbd2cSJim Jagielski } // namespace pcr 365*b1cdbd2cSJim Jagielski //............................................................................ 366*b1cdbd2cSJim Jagielski 367