LCOV - code coverage report
Current view: top level - svtools/source/uno - unoiface.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 1208 0.0 %
Date: 2014-04-14 Functions: 0 165 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : 
      21             : #include <tools/debug.hxx>
      22             : #include <vcl/fixedhyper.hxx>
      23             : #include <vcl/prgsbar.hxx>
      24             : #include <vcl/svapp.hxx>
      25             : #include <svtools/svmedit.hxx>
      26             : #include <unoiface.hxx>
      27             : #include <svtools/filectrl.hxx>
      28             : #include <svtools/roadmap.hxx>
      29             : #include <com/sun/star/lang/XMultiServiceFactory.hpp>
      30             : #include <com/sun/star/lang/XSingleServiceFactory.hpp>
      31             : #include <com/sun/star/awt/LineEndFormat.hpp>
      32             : #include <comphelper/processfactory.hxx>
      33             : #include <toolkit/helper/convert.hxx>
      34             : #include <toolkit/helper/property.hxx>
      35             : #include <svtools/fmtfield.hxx>
      36             : #include <svl/numuno.hxx>
      37             : #include <svtools/calendar.hxx>
      38             : #include <svtools/treelistbox.hxx>
      39             : #include "treecontrolpeer.hxx"
      40             : #include "svtxgridcontrol.hxx"
      41             : #include <svtools/table/tablecontrol.hxx>
      42             : 
      43             : namespace
      44             : {
      45           0 :     static void lcl_setWinBits( Window* _pWindow, WinBits _nBits, sal_Bool _bSet )
      46             :     {
      47           0 :         WinBits nStyle = _pWindow->GetStyle();
      48           0 :         if ( _bSet )
      49           0 :             nStyle |= _nBits;
      50             :         else
      51           0 :             nStyle &= ~_nBits;
      52           0 :         _pWindow->SetStyle( nStyle );
      53           0 :     }
      54             : }
      55             : 
      56             : 
      57             : //  help function for the toolkit...
      58             : 
      59             : 
      60             : extern "C" {
      61             : 
      62           0 : SAL_DLLPUBLIC_EXPORT Window* CreateWindow( VCLXWindow** ppNewComp, const ::com::sun::star::awt::WindowDescriptor* pDescriptor, Window* pParent, WinBits nWinBits )
      63             : {
      64           0 :     Window* pWindow = NULL;
      65           0 :     OUString aServiceName( pDescriptor->WindowServiceName );
      66           0 :     if ( aServiceName.equalsIgnoreAsciiCase( "MultiLineEdit" ) )
      67             :     {
      68           0 :         if ( pParent )
      69             :         {
      70           0 :             pWindow = new MultiLineEdit( pParent, nWinBits|WB_IGNORETAB);
      71           0 :             static_cast< MultiLineEdit* >( pWindow )->DisableSelectionOnFocus();
      72           0 :             *ppNewComp = new VCLXMultiLineEdit;
      73             :         }
      74             :         else
      75             :         {
      76           0 :             *ppNewComp = NULL;
      77           0 :             return NULL;
      78             :         }
      79             :     }
      80           0 :     else if ( aServiceName.equalsIgnoreAsciiCase( "FileControl" ) )
      81             :     {
      82           0 :         if ( pParent )
      83             :         {
      84           0 :             pWindow = new FileControl( pParent, nWinBits );
      85           0 :             *ppNewComp = new VCLXFileControl;
      86             :         }
      87             :         else
      88             :         {
      89           0 :             *ppNewComp = NULL;
      90           0 :             return NULL;
      91             :         }
      92             :     }
      93           0 :     else if (aServiceName.equalsIgnoreAsciiCase("FormattedField") )
      94             :     {
      95           0 :         pWindow = new FormattedField( pParent, nWinBits );
      96           0 :         *ppNewComp = new SVTXFormattedField;
      97             :     }
      98           0 :     else if (aServiceName.equalsIgnoreAsciiCase("NumericField") )
      99             :     {
     100           0 :         pWindow = new DoubleNumericField( pParent, nWinBits );
     101           0 :         *ppNewComp = new SVTXNumericField;
     102             :     }
     103           0 :     else if (aServiceName.equalsIgnoreAsciiCase("LongCurrencyField") )
     104             :     {
     105           0 :         pWindow = new DoubleCurrencyField( pParent, nWinBits );
     106           0 :         *ppNewComp = new SVTXCurrencyField;
     107             :     }
     108           0 :     else if (aServiceName.equalsIgnoreAsciiCase("datefield") )
     109             :     {
     110           0 :         pWindow = new CalendarField( pParent, nWinBits);
     111           0 :         static_cast<CalendarField*>(pWindow)->EnableToday();
     112           0 :         static_cast<CalendarField*>(pWindow)->EnableNone();
     113           0 :         static_cast<CalendarField*>(pWindow)->EnableEmptyFieldValue( true );
     114           0 :         *ppNewComp = new SVTXDateField;
     115           0 :         ((VCLXFormattedSpinField*)*ppNewComp)->SetFormatter( (FormatterBase*)(DateField*)pWindow );
     116             :     }
     117           0 :     else if (aServiceName.equalsIgnoreAsciiCase("roadmap") )
     118             :     {
     119           0 :         pWindow = new ::svt::ORoadmap( pParent, WB_TABSTOP );
     120           0 :         *ppNewComp = new SVTXRoadmap;
     121             :     }
     122           0 :     else if ( aServiceName.equalsIgnoreAsciiCase( "ProgressBar" ) )
     123             :     {
     124           0 :         if ( pParent )
     125             :         {
     126           0 :             pWindow = new ProgressBar( pParent, nWinBits );
     127           0 :             *ppNewComp = new VCLXProgressBar;
     128             :         }
     129             :         else
     130             :         {
     131           0 :             *ppNewComp = NULL;
     132           0 :             return NULL;
     133             :         }
     134             :     }
     135           0 :     else if ( aServiceName.equalsIgnoreAsciiCase( "Tree" ) )
     136             :     {
     137           0 :         TreeControlPeer* pPeer = new TreeControlPeer;
     138           0 :         *ppNewComp = pPeer;
     139           0 :         pWindow = pPeer->createVclControl( pParent, nWinBits );
     140             :     }
     141           0 :     else if ( aServiceName.equalsIgnoreAsciiCase( "FixedHyperlink" ) )
     142             :     {
     143           0 :         if ( pParent )
     144             :         {
     145           0 :             pWindow = new FixedHyperlink( pParent, nWinBits );
     146           0 :             *ppNewComp = new VCLXFixedHyperlink;
     147             :         }
     148             :         else
     149             :         {
     150           0 :             *ppNewComp = NULL;
     151           0 :             return NULL;
     152             :         }
     153             :     }
     154           0 :     else if ( aServiceName.equalsIgnoreAsciiCase( "Grid" ) )
     155             :     {
     156           0 :         if ( pParent )
     157             :         {
     158           0 :             pWindow = new ::svt::table::TableControl(pParent, nWinBits);
     159           0 :             *ppNewComp = new SVTXGridControl;
     160             :         }
     161             :         else
     162             :         {
     163           0 :             *ppNewComp = NULL;
     164           0 :             return NULL;
     165             :         }
     166             :     }
     167           0 :     return pWindow;
     168             : }
     169             : 
     170             : }   // extern "C"
     171             : 
     172             : 
     173             : //  class VCLXMultiLineEdit
     174             : 
     175           0 : VCLXMultiLineEdit::VCLXMultiLineEdit()
     176             :     :maTextListeners( *this )
     177           0 :     ,meLineEndType( LINEEND_LF )    // default behavior before introducing this property: LF (unix-like)
     178             : {
     179           0 : }
     180             : 
     181           0 : VCLXMultiLineEdit::~VCLXMultiLineEdit()
     182             : {
     183           0 : }
     184             : 
     185           0 : ::com::sun::star::uno::Any VCLXMultiLineEdit::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     186             : {
     187             :     ::com::sun::star::uno::Any aRet = ::cppu::queryInterface( rType,
     188             :                                         (static_cast< ::com::sun::star::awt::XTextComponent* >(this)),
     189             :                                         (static_cast< ::com::sun::star::awt::XTextArea* >(this)),
     190             :                                         (static_cast< ::com::sun::star::awt::XTextLayoutConstrains* >(this)),
     191           0 :                                         (static_cast< ::com::sun::star::lang::XTypeProvider* >(this)) );
     192           0 :     return (aRet.hasValue() ? aRet : VCLXWindow::queryInterface( rType ));
     193             : }
     194             : 
     195             : // ::com::sun::star::lang::XTypeProvider
     196           0 : IMPL_XTYPEPROVIDER_START( VCLXMultiLineEdit )
     197           0 :     getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent>* ) NULL ),
     198           0 :     getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextArea>* ) NULL ),
     199           0 :     getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextLayoutConstrains>* ) NULL ),
     200             :     VCLXWindow::getTypes()
     201           0 : IMPL_XTYPEPROVIDER_END
     202             : 
     203           0 : void VCLXMultiLineEdit::addTextListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener > & l ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     204             : {
     205           0 :     maTextListeners.addInterface( l );
     206           0 : }
     207             : 
     208           0 : void VCLXMultiLineEdit::removeTextListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener > & l ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     209             : {
     210           0 :     maTextListeners.removeInterface( l );
     211           0 : }
     212             : 
     213           0 : void VCLXMultiLineEdit::setText( const OUString& aText ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     214             : {
     215           0 :     SolarMutexGuard aGuard;
     216             : 
     217           0 :     MultiLineEdit* pEdit = (MultiLineEdit*)GetWindow();
     218           0 :     if ( pEdit )
     219             :     {
     220           0 :         pEdit->SetText( aText );
     221             : 
     222             :         // #107218# Call same listeners like VCL would do after user interaction
     223           0 :         SetSynthesizingVCLEvent( true );
     224           0 :         pEdit->SetModifyFlag();
     225           0 :         pEdit->Modify();
     226           0 :         SetSynthesizingVCLEvent( false );
     227           0 :     }
     228           0 : }
     229             : 
     230           0 : void VCLXMultiLineEdit::insertText( const ::com::sun::star::awt::Selection& rSel, const OUString& aText ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     231             : {
     232           0 :     SolarMutexGuard aGuard;
     233             : 
     234           0 :     MultiLineEdit* pEdit = (MultiLineEdit*)GetWindow();
     235           0 :     if ( pEdit )
     236             :     {
     237           0 :         setSelection( rSel );
     238           0 :         pEdit->ReplaceSelected( aText );
     239           0 :     }
     240           0 : }
     241             : 
     242           0 : OUString VCLXMultiLineEdit::getText() throw(::com::sun::star::uno::RuntimeException, std::exception)
     243             : {
     244           0 :     SolarMutexGuard aGuard;
     245             : 
     246           0 :     OUString aText;
     247           0 :     MultiLineEdit* pEdit = (MultiLineEdit*)GetWindow();
     248           0 :     if ( pEdit )
     249           0 :         aText = pEdit->GetText( meLineEndType );
     250           0 :     return aText;
     251             : }
     252             : 
     253           0 : OUString VCLXMultiLineEdit::getSelectedText() throw(::com::sun::star::uno::RuntimeException, std::exception)
     254             : {
     255           0 :     SolarMutexGuard aGuard;
     256             : 
     257           0 :     OUString aText;
     258           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*) GetWindow();
     259           0 :     if ( pMultiLineEdit)
     260           0 :         aText = pMultiLineEdit->GetSelected( meLineEndType );
     261           0 :     return aText;
     262             : 
     263             : }
     264             : 
     265           0 : void VCLXMultiLineEdit::setSelection( const ::com::sun::star::awt::Selection& aSelection ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     266             : {
     267           0 :     SolarMutexGuard aGuard;
     268             : 
     269           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*) GetWindow();
     270           0 :     if ( pMultiLineEdit )
     271             :     {
     272           0 :         pMultiLineEdit->SetSelection( Selection( aSelection.Min, aSelection.Max ) );
     273           0 :     }
     274           0 : }
     275             : 
     276           0 : ::com::sun::star::awt::Selection VCLXMultiLineEdit::getSelection() throw(::com::sun::star::uno::RuntimeException, std::exception)
     277             : {
     278           0 :     SolarMutexGuard aGuard;
     279             : 
     280           0 :     ::com::sun::star::awt::Selection aSel;
     281           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*) GetWindow();
     282           0 :     if ( pMultiLineEdit )
     283             :     {
     284           0 :         aSel.Min = pMultiLineEdit->GetSelection().Min();
     285           0 :         aSel.Max = pMultiLineEdit->GetSelection().Max();
     286             :     }
     287           0 :     return aSel;
     288             : }
     289             : 
     290           0 : sal_Bool VCLXMultiLineEdit::isEditable() throw(::com::sun::star::uno::RuntimeException, std::exception)
     291             : {
     292           0 :     SolarMutexGuard aGuard;
     293             : 
     294           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*) GetWindow();
     295           0 :     return ( pMultiLineEdit && !pMultiLineEdit->IsReadOnly() && pMultiLineEdit->IsEnabled() ) ? sal_True : sal_False;
     296             : }
     297             : 
     298           0 : void VCLXMultiLineEdit::setEditable( sal_Bool bEditable ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     299             : {
     300           0 :     SolarMutexGuard aGuard;
     301             : 
     302           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*) GetWindow();
     303           0 :     if ( pMultiLineEdit )
     304           0 :         pMultiLineEdit->SetReadOnly( !bEditable );
     305           0 : }
     306             : 
     307           0 : void VCLXMultiLineEdit::setMaxTextLen( sal_Int16 nLen ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     308             : {
     309           0 :     SolarMutexGuard aGuard;
     310             : 
     311           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*) GetWindow();
     312           0 :     if ( pMultiLineEdit )
     313           0 :         pMultiLineEdit->SetMaxTextLen( nLen );
     314           0 : }
     315             : 
     316           0 : sal_Int16 VCLXMultiLineEdit::getMaxTextLen() throw(::com::sun::star::uno::RuntimeException, std::exception)
     317             : {
     318           0 :     SolarMutexGuard aGuard;
     319             : 
     320           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*) GetWindow();
     321           0 :     return pMultiLineEdit ? (sal_Int16)pMultiLineEdit->GetMaxTextLen() : (sal_Int16)0;
     322             : }
     323             : 
     324           0 : OUString VCLXMultiLineEdit::getTextLines() throw(::com::sun::star::uno::RuntimeException, std::exception)
     325             : {
     326           0 :     SolarMutexGuard aGuard;
     327             : 
     328           0 :     OUString aText;
     329           0 :     MultiLineEdit* pEdit = (MultiLineEdit*)GetWindow();
     330           0 :     if ( pEdit )
     331           0 :         aText = pEdit->GetTextLines( meLineEndType );
     332           0 :     return aText;
     333             : }
     334             : 
     335           0 : ::com::sun::star::awt::Size VCLXMultiLineEdit::getMinimumSize() throw(::com::sun::star::uno::RuntimeException, std::exception)
     336             : {
     337           0 :     SolarMutexGuard aGuard;
     338             : 
     339           0 :     ::com::sun::star::awt::Size aSz;
     340           0 :     MultiLineEdit* pEdit = (MultiLineEdit*) GetWindow();
     341           0 :     if ( pEdit )
     342           0 :         aSz = AWTSize(pEdit->CalcMinimumSize());
     343           0 :     return aSz;
     344             : }
     345             : 
     346           0 : ::com::sun::star::awt::Size VCLXMultiLineEdit::getPreferredSize() throw(::com::sun::star::uno::RuntimeException, std::exception)
     347             : {
     348           0 :     return getMinimumSize();
     349             : }
     350             : 
     351           0 : ::com::sun::star::awt::Size VCLXMultiLineEdit::calcAdjustedSize( const ::com::sun::star::awt::Size& rNewSize ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     352             : {
     353           0 :     SolarMutexGuard aGuard;
     354             : 
     355           0 :     ::com::sun::star::awt::Size aSz = rNewSize;
     356           0 :     MultiLineEdit* pEdit = (MultiLineEdit*) GetWindow();
     357           0 :     if ( pEdit )
     358           0 :         aSz = AWTSize(pEdit->CalcAdjustedSize( VCLSize(rNewSize )));
     359           0 :     return aSz;
     360             : }
     361             : 
     362           0 : ::com::sun::star::awt::Size VCLXMultiLineEdit::getMinimumSize( sal_Int16 nCols, sal_Int16 nLines ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     363             : {
     364           0 :     SolarMutexGuard aGuard;
     365             : 
     366           0 :     ::com::sun::star::awt::Size aSz;
     367           0 :     MultiLineEdit* pEdit = (MultiLineEdit*) GetWindow();
     368           0 :     if ( pEdit )
     369           0 :         aSz = AWTSize(pEdit->CalcBlockSize( nCols, nLines ));
     370           0 :     return aSz;
     371             : }
     372             : 
     373           0 : void VCLXMultiLineEdit::getColumnsAndLines( sal_Int16& nCols, sal_Int16& nLines ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     374             : {
     375           0 :     SolarMutexGuard aGuard;
     376             : 
     377           0 :     nCols = nLines = 0;
     378           0 :     MultiLineEdit* pEdit = (MultiLineEdit*) GetWindow();
     379           0 :     if ( pEdit )
     380             :     {
     381             :         sal_uInt16 nC, nL;
     382           0 :         pEdit->GetMaxVisColumnsAndLines( nC, nL );
     383           0 :         nCols = nC;
     384           0 :         nLines = nL;
     385           0 :     }
     386           0 : }
     387             : 
     388           0 : void VCLXMultiLineEdit::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
     389             : {
     390           0 :     switch ( rVclWindowEvent.GetId() )
     391             :     {
     392             :         case VCLEVENT_EDIT_MODIFY:
     393             :         {
     394           0 :             if ( maTextListeners.getLength() )
     395             :             {
     396           0 :                 ::com::sun::star::awt::TextEvent aEvent;
     397           0 :                 aEvent.Source = (::cppu::OWeakObject*)this;
     398           0 :                 maTextListeners.textChanged( aEvent );
     399             :             }
     400             :         }
     401           0 :         break;
     402             :         default:
     403             :         {
     404           0 :             VCLXWindow::ProcessWindowEvent( rVclWindowEvent );
     405             :         }
     406           0 :         break;
     407             :     }
     408           0 : }
     409             : 
     410           0 : void VCLXMultiLineEdit::setProperty( const OUString& PropertyName, const ::com::sun::star::uno::Any& Value) throw(::com::sun::star::uno::RuntimeException, std::exception)
     411             : {
     412           0 :     SolarMutexGuard aGuard;
     413             : 
     414           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*)GetWindow();
     415           0 :     if ( pMultiLineEdit )
     416             :     {
     417           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
     418           0 :         switch ( nPropType )
     419             :         {
     420             :             case BASEPROPERTY_LINE_END_FORMAT:
     421             :             {
     422           0 :                 sal_Int16 nLineEndType = ::com::sun::star::awt::LineEndFormat::LINE_FEED;
     423           0 :                 OSL_VERIFY( Value >>= nLineEndType );
     424           0 :                 switch ( nLineEndType )
     425             :                 {
     426           0 :                 case ::com::sun::star::awt::LineEndFormat::CARRIAGE_RETURN:           meLineEndType = LINEEND_CR; break;
     427           0 :                 case ::com::sun::star::awt::LineEndFormat::LINE_FEED:                 meLineEndType = LINEEND_LF; break;
     428           0 :                 case ::com::sun::star::awt::LineEndFormat::CARRIAGE_RETURN_LINE_FEED: meLineEndType = LINEEND_CRLF; break;
     429           0 :                 default: OSL_FAIL( "VCLXMultiLineEdit::setProperty: invalid line end value!" ); break;
     430             :                 }
     431             :             }
     432           0 :             break;
     433             : 
     434             :             case BASEPROPERTY_READONLY:
     435             :             {
     436           0 :                 sal_Bool b = sal_Bool();
     437           0 :                 if ( Value >>= b )
     438           0 :                     pMultiLineEdit->SetReadOnly( b );
     439             :             }
     440           0 :             break;
     441             :             case BASEPROPERTY_MAXTEXTLEN:
     442             :             {
     443           0 :                 sal_Int16 n = sal_Int16();
     444           0 :                 if ( Value >>= n )
     445           0 :                     pMultiLineEdit->SetMaxTextLen( n );
     446             :             }
     447           0 :             break;
     448             :             case BASEPROPERTY_HIDEINACTIVESELECTION:
     449             :             {
     450           0 :                 sal_Bool b = sal_Bool();
     451           0 :                 if ( Value >>= b )
     452             :                 {
     453           0 :                     pMultiLineEdit->EnableFocusSelectionHide( b );
     454           0 :                     lcl_setWinBits( pMultiLineEdit, WB_NOHIDESELECTION, !b );
     455             :                 }
     456             :             }
     457           0 :             break;
     458             :             default:
     459             :             {
     460           0 :                 VCLXWindow::setProperty( PropertyName, Value );
     461             :             }
     462             :         }
     463           0 :     }
     464           0 : }
     465             : 
     466           0 : ::com::sun::star::uno::Any VCLXMultiLineEdit::getProperty( const OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     467             : {
     468           0 :     SolarMutexGuard aGuard;
     469             : 
     470           0 :     ::com::sun::star::uno::Any aProp;
     471           0 :     MultiLineEdit* pMultiLineEdit = (MultiLineEdit*)GetWindow();
     472           0 :     if ( pMultiLineEdit )
     473             :     {
     474           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
     475           0 :         switch ( nPropType )
     476             :         {
     477             :             case BASEPROPERTY_LINE_END_FORMAT:
     478             :             {
     479           0 :                 sal_Int16 nLineEndType = ::com::sun::star::awt::LineEndFormat::LINE_FEED;
     480           0 :                 switch ( meLineEndType )
     481             :                 {
     482           0 :                 case LINEEND_CR:   nLineEndType = ::com::sun::star::awt::LineEndFormat::CARRIAGE_RETURN; break;
     483           0 :                 case LINEEND_LF:   nLineEndType = ::com::sun::star::awt::LineEndFormat::LINE_FEED; break;
     484           0 :                 case LINEEND_CRLF: nLineEndType = ::com::sun::star::awt::LineEndFormat::CARRIAGE_RETURN_LINE_FEED; break;
     485           0 :                 default: OSL_FAIL( "VCLXMultiLineEdit::getProperty: invalid line end value!" ); break;
     486             :                 }
     487           0 :                 aProp <<= nLineEndType;
     488             :             }
     489           0 :             break;
     490             : 
     491             :             case BASEPROPERTY_READONLY:
     492             :             {
     493           0 :                 aProp <<= pMultiLineEdit->IsReadOnly();
     494             :             }
     495           0 :             break;
     496             :             case BASEPROPERTY_MAXTEXTLEN:
     497             :             {
     498           0 :                 aProp <<= (sal_Int16) pMultiLineEdit->GetMaxTextLen();
     499             :             }
     500           0 :             break;
     501             :             default:
     502             :             {
     503           0 :                 aProp <<= VCLXWindow::getProperty( PropertyName );
     504             :             }
     505             :         }
     506             :     }
     507           0 :     return aProp;
     508             : }
     509             : 
     510           0 : void SAL_CALL VCLXMultiLineEdit::setFocus(  ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     511             : {
     512           0 :     SolarMutexGuard aGuard;
     513             : 
     514             :     // don't grab the focus if we already have it. Reason is that the only thing which the edit
     515             :     // does is forwarding the focus to it's text window. This text window then does a "select all".
     516             :     // So if the text window already has the focus, and we give the focus to the multi line
     517             :     // edit, then all which happens is that everything is selected.
     518             :     // #i27072#
     519           0 :     if ( GetWindow() && !GetWindow()->HasChildPathFocus() )
     520           0 :         GetWindow()->GrabFocus();
     521           0 : }
     522             : 
     523           0 : void VCLXMultiLineEdit::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
     524             : {
     525             :     PushPropertyIds( rIds,
     526             :                      // FIXME: elide duplication ?
     527             :                      BASEPROPERTY_LINE_END_FORMAT,
     528             :                      BASEPROPERTY_READONLY,
     529             :                      BASEPROPERTY_MAXTEXTLEN,
     530             :                      BASEPROPERTY_HIDEINACTIVESELECTION,
     531           0 :                      0);
     532           0 :     VCLXWindow::ImplGetPropertyIds( rIds, true );
     533             : 
     534           0 : }
     535             : 
     536             : //  class VCLXFileControl
     537             : 
     538           0 : VCLXFileControl::VCLXFileControl() : maTextListeners( *this )
     539             : {
     540           0 : }
     541             : 
     542           0 : VCLXFileControl::~VCLXFileControl()
     543             : {
     544           0 :     FileControl* pControl = (FileControl*) GetWindow();
     545           0 :     if ( pControl )
     546           0 :         pControl->GetEdit().SetModifyHdl( Link() );
     547           0 : }
     548             : 
     549           0 : ::com::sun::star::uno::Any VCLXFileControl::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     550             : {
     551             :     ::com::sun::star::uno::Any aRet = ::cppu::queryInterface( rType,
     552             :                                         (static_cast< ::com::sun::star::awt::XTextComponent* >(this)),
     553             :                                         (static_cast< ::com::sun::star::awt::XTextLayoutConstrains* >(this)),
     554           0 :                                         (static_cast< ::com::sun::star::lang::XTypeProvider* >(this)) );
     555           0 :     return (aRet.hasValue() ? aRet : VCLXWindow::queryInterface( rType ));
     556             : }
     557             : 
     558             : // ::com::sun::star::lang::XTypeProvider
     559           0 : IMPL_XTYPEPROVIDER_START( VCLXFileControl )
     560           0 :     getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent>* ) NULL ),
     561           0 :     getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextLayoutConstrains>* ) NULL ),
     562             :     VCLXWindow::getTypes()
     563           0 : IMPL_XTYPEPROVIDER_END
     564             : 
     565           0 : void SAL_CALL VCLXFileControl::setProperty( const OUString& PropertyName, const ::com::sun::star::uno::Any& Value) throw(::com::sun::star::uno::RuntimeException, std::exception)
     566             : {
     567           0 :     SolarMutexGuard aGuard;
     568             : 
     569           0 :     FileControl* pControl = (FileControl*)GetWindow();
     570           0 :     if ( pControl )
     571             :     {
     572           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
     573           0 :         switch ( nPropType )
     574             :         {
     575             :         case BASEPROPERTY_HIDEINACTIVESELECTION:
     576             :         {
     577           0 :             sal_Bool bValue( sal_False );
     578           0 :             OSL_VERIFY( Value >>= bValue );
     579             : 
     580           0 :             lcl_setWinBits( pControl, WB_NOHIDESELECTION, !bValue );
     581           0 :             lcl_setWinBits( &pControl->GetEdit(), WB_NOHIDESELECTION, !bValue );
     582             :         }
     583           0 :         break;
     584             : 
     585             :         default:
     586           0 :             VCLXWindow::setProperty( PropertyName, Value );
     587           0 :             break;
     588             :         }
     589           0 :     }
     590           0 : }
     591             : 
     592           0 : void VCLXFileControl::SetWindow( Window* pWindow )
     593             : {
     594           0 :     FileControl* pPrevFileControl = dynamic_cast<FileControl*>( GetWindow() );
     595           0 :     if ( pPrevFileControl )
     596           0 :         pPrevFileControl->GetEdit().SetModifyHdl( Link() );
     597             : 
     598           0 :     FileControl* pNewFileControl = dynamic_cast<FileControl*>( pWindow );
     599           0 :     if ( pNewFileControl )
     600           0 :         pNewFileControl->GetEdit().SetModifyHdl( LINK( this, VCLXFileControl, ModifyHdl ) );
     601             : 
     602           0 :     VCLXWindow::SetWindow( pWindow );
     603           0 : }
     604             : 
     605           0 : void VCLXFileControl::addTextListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener > & l ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     606             : {
     607           0 :     maTextListeners.addInterface( l );
     608           0 : }
     609             : 
     610           0 : void VCLXFileControl::removeTextListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener > & l ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     611             : {
     612           0 :     maTextListeners.removeInterface( l );
     613           0 : }
     614             : 
     615           0 : void VCLXFileControl::setText( const OUString& aText ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     616             : {
     617           0 :     SolarMutexGuard aGuard;
     618             : 
     619           0 :     Window* pWindow = GetWindow();
     620           0 :     if ( pWindow )
     621             :     {
     622           0 :         pWindow->SetText( aText );
     623             : 
     624             :         // also in Java a textChanged is triggered, not in VCL.
     625             :         // ::com::sun::star::awt::Toolkit should be JAVA-compliant...
     626           0 :         ModifyHdl( NULL );
     627           0 :     }
     628           0 : }
     629             : 
     630           0 : void VCLXFileControl::insertText( const ::com::sun::star::awt::Selection& rSel, const OUString& aText ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     631             : {
     632           0 :     SolarMutexGuard aGuard;
     633             : 
     634           0 :     FileControl* pFileControl = (FileControl*) GetWindow();
     635           0 :     if ( pFileControl )
     636             :     {
     637           0 :         pFileControl->GetEdit().SetSelection( Selection( rSel.Min, rSel.Max ) );
     638           0 :         pFileControl->GetEdit().ReplaceSelected( aText );
     639           0 :     }
     640           0 : }
     641             : 
     642           0 : OUString VCLXFileControl::getText() throw(::com::sun::star::uno::RuntimeException, std::exception)
     643             : {
     644           0 :     SolarMutexGuard aGuard;
     645             : 
     646           0 :     OUString aText;
     647           0 :     Window* pWindow = GetWindow();
     648           0 :     if ( pWindow )
     649           0 :         aText = pWindow->GetText();
     650           0 :     return aText;
     651             : }
     652             : 
     653           0 : OUString VCLXFileControl::getSelectedText() throw(::com::sun::star::uno::RuntimeException, std::exception)
     654             : {
     655           0 :     SolarMutexGuard aGuard;
     656             : 
     657           0 :     OUString aText;
     658           0 :     FileControl* pFileControl = (FileControl*) GetWindow();
     659           0 :     if ( pFileControl)
     660           0 :         aText = pFileControl->GetEdit().GetSelected();
     661           0 :     return aText;
     662             : 
     663             : }
     664             : 
     665           0 : void VCLXFileControl::setSelection( const ::com::sun::star::awt::Selection& aSelection ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     666             : {
     667           0 :     SolarMutexGuard aGuard;
     668             : 
     669           0 :     FileControl* pFileControl = (FileControl*) GetWindow();
     670           0 :     if ( pFileControl )
     671           0 :         pFileControl->GetEdit().SetSelection( Selection( aSelection.Min, aSelection.Max ) );
     672           0 : }
     673             : 
     674           0 : ::com::sun::star::awt::Selection VCLXFileControl::getSelection() throw(::com::sun::star::uno::RuntimeException, std::exception)
     675             : {
     676           0 :     SolarMutexGuard aGuard;
     677             : 
     678           0 :     ::com::sun::star::awt::Selection aSel;
     679           0 :     FileControl* pFileControl = (FileControl*) GetWindow();
     680           0 :     if ( pFileControl )
     681             :     {
     682           0 :         aSel.Min = pFileControl->GetEdit().GetSelection().Min();
     683           0 :         aSel.Max = pFileControl->GetEdit().GetSelection().Max();
     684             :     }
     685           0 :     return aSel;
     686             : }
     687             : 
     688           0 : sal_Bool VCLXFileControl::isEditable() throw(::com::sun::star::uno::RuntimeException, std::exception)
     689             : {
     690           0 :     SolarMutexGuard aGuard;
     691             : 
     692           0 :     FileControl* pFileControl = (FileControl*) GetWindow();
     693           0 :     return ( pFileControl && !pFileControl->GetEdit().IsReadOnly() && pFileControl->GetEdit().IsEnabled() ) ? sal_True : sal_False;
     694             : }
     695             : 
     696           0 : void VCLXFileControl::setEditable( sal_Bool bEditable ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     697             : {
     698           0 :     SolarMutexGuard aGuard;
     699             : 
     700           0 :     FileControl* pFileControl = (FileControl*) GetWindow();
     701           0 :     if ( pFileControl )
     702           0 :         pFileControl->GetEdit().SetReadOnly( !bEditable );
     703           0 : }
     704             : 
     705           0 : void VCLXFileControl::setMaxTextLen( sal_Int16 nLen ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     706             : {
     707           0 :     SolarMutexGuard aGuard;
     708             : 
     709           0 :     FileControl* pFileControl = (FileControl*) GetWindow();
     710           0 :     if ( pFileControl )
     711           0 :         pFileControl->GetEdit().SetMaxTextLen( nLen );
     712           0 : }
     713             : 
     714           0 : sal_Int16 VCLXFileControl::getMaxTextLen() throw(::com::sun::star::uno::RuntimeException, std::exception)
     715             : {
     716           0 :     SolarMutexGuard aGuard;
     717             : 
     718           0 :     FileControl* pFileControl = (FileControl*) GetWindow();
     719           0 :     return pFileControl ? pFileControl->GetEdit().GetMaxTextLen() : 0;
     720             : }
     721             : 
     722             : 
     723           0 : IMPL_LINK_NOARG(VCLXFileControl, ModifyHdl)
     724             : {
     725           0 :     ::com::sun::star::awt::TextEvent aEvent;
     726           0 :     aEvent.Source = (::cppu::OWeakObject*)this;
     727           0 :     maTextListeners.textChanged( aEvent );
     728             : 
     729           0 :     return 1;
     730             : }
     731             : 
     732           0 : ::com::sun::star::awt::Size VCLXFileControl::getMinimumSize() throw(::com::sun::star::uno::RuntimeException, std::exception)
     733             : {
     734           0 :     SolarMutexGuard aGuard;
     735             : 
     736           0 :     ::com::sun::star::awt::Size aSz;
     737           0 :     FileControl* pControl = (FileControl*) GetWindow();
     738           0 :     if ( pControl )
     739             :     {
     740           0 :         Size aTmpSize = pControl->GetEdit().CalcMinimumSize();
     741           0 :         aTmpSize.Width() += pControl->GetButton().CalcMinimumSize().Width();
     742           0 :         aSz = AWTSize(pControl->CalcWindowSize( aTmpSize ));
     743             :     }
     744           0 :     return aSz;
     745             : }
     746             : 
     747           0 : ::com::sun::star::awt::Size VCLXFileControl::getPreferredSize() throw(::com::sun::star::uno::RuntimeException, std::exception)
     748             : {
     749           0 :     ::com::sun::star::awt::Size aSz = getMinimumSize();
     750           0 :     aSz.Height += 4;
     751           0 :     return aSz;
     752             : }
     753             : 
     754           0 : ::com::sun::star::awt::Size VCLXFileControl::calcAdjustedSize( const ::com::sun::star::awt::Size& rNewSize ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     755             : {
     756           0 :     SolarMutexGuard aGuard;
     757             : 
     758           0 :     ::com::sun::star::awt::Size aSz =rNewSize;
     759           0 :     FileControl* pControl = (FileControl*) GetWindow();
     760           0 :     if ( pControl )
     761             :     {
     762           0 :         ::com::sun::star::awt::Size aMinSz = getMinimumSize();
     763           0 :         if ( aSz.Height != aMinSz.Height )
     764           0 :             aSz.Height = aMinSz.Height;
     765             :     }
     766           0 :     return aSz;
     767             : }
     768             : 
     769           0 : ::com::sun::star::awt::Size VCLXFileControl::getMinimumSize( sal_Int16 nCols, sal_Int16 ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     770             : {
     771           0 :     SolarMutexGuard aGuard;
     772             : 
     773           0 :     ::com::sun::star::awt::Size aSz;
     774           0 :     FileControl* pControl = (FileControl*) GetWindow();
     775           0 :     if ( pControl )
     776             :     {
     777           0 :         aSz = AWTSize(pControl->GetEdit().CalcSize( nCols ));
     778           0 :         aSz.Width += pControl->GetButton().CalcMinimumSize().Width();
     779             :     }
     780           0 :     return aSz;
     781             : }
     782             : 
     783           0 : void VCLXFileControl::getColumnsAndLines( sal_Int16& nCols, sal_Int16& nLines ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     784             : {
     785           0 :     SolarMutexGuard aGuard;
     786             : 
     787           0 :     nCols = 0;
     788           0 :     nLines = 1;
     789           0 :     FileControl* pControl = (FileControl*) GetWindow();
     790           0 :     if ( pControl )
     791           0 :         nCols = pControl->GetEdit().GetMaxVisChars();
     792           0 : }
     793             : 
     794           0 : void VCLXFileControl::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
     795             : {
     796             :     PushPropertyIds( rIds,
     797             :                      // FIXME: elide duplication ?
     798             :                      BASEPROPERTY_HIDEINACTIVESELECTION,
     799           0 :                      0);
     800           0 :     VCLXWindow::ImplGetPropertyIds( rIds, true );
     801           0 : }
     802             : 
     803             : 
     804             : 
     805             : //  class SVTXFormattedField
     806             : 
     807             : 
     808           0 : SVTXFormattedField::SVTXFormattedField()
     809             :     :m_pCurrentSupplier(NULL)
     810             :     ,bIsStandardSupplier(sal_True)
     811           0 :     ,nKeyToSetDelayed(-1)
     812             : {
     813           0 : }
     814             : 
     815             : 
     816           0 : SVTXFormattedField::~SVTXFormattedField()
     817             : {
     818           0 :     if (m_pCurrentSupplier)
     819             :     {
     820           0 :         m_pCurrentSupplier->release();
     821           0 :         m_pCurrentSupplier = NULL;
     822             :     }
     823           0 : }
     824             : 
     825             : 
     826           0 : void SVTXFormattedField::SetWindow( Window* _pWindow )
     827             : {
     828           0 :     VCLXSpinField::SetWindow(_pWindow);
     829           0 :     if (GetFormattedField())
     830           0 :         GetFormattedField()->SetAutoColor(true);
     831           0 : }
     832             : 
     833             : 
     834           0 : void SVTXFormattedField::setProperty( const OUString& PropertyName, const ::com::sun::star::uno::Any& Value) throw(::com::sun::star::uno::RuntimeException, std::exception)
     835             : {
     836           0 :     SolarMutexGuard aGuard;
     837             : 
     838           0 :     FormattedField* pField = GetFormattedField();
     839           0 :     if ( pField )
     840             :     {
     841           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
     842           0 :         switch (nPropType)
     843             :         {
     844             :             case BASEPROPERTY_ENFORCE_FORMAT:
     845             :             {
     846           0 :                 sal_Bool bEnable( sal_True );
     847           0 :                 if ( Value >>= bEnable )
     848           0 :                     pField->EnableNotANumber( !bEnable );
     849             :             }
     850           0 :             break;
     851             : 
     852             :             case BASEPROPERTY_EFFECTIVE_MIN:
     853             :             case BASEPROPERTY_VALUEMIN_DOUBLE:
     854           0 :                 SetMinValue(Value);
     855           0 :                 break;
     856             : 
     857             :             case BASEPROPERTY_EFFECTIVE_MAX:
     858             :             case BASEPROPERTY_VALUEMAX_DOUBLE:
     859           0 :                 SetMaxValue(Value);
     860           0 :                 break;
     861             : 
     862             :             case BASEPROPERTY_EFFECTIVE_DEFAULT:
     863           0 :                 SetDefaultValue(Value);
     864           0 :                 break;
     865             : 
     866             :             case BASEPROPERTY_TREATASNUMBER:
     867             :             {
     868           0 :                 sal_Bool b = sal_Bool();
     869           0 :                 if ( Value >>= b )
     870           0 :                     SetTreatAsNumber(b);
     871             :             }
     872           0 :             break;
     873             : 
     874             :             case BASEPROPERTY_FORMATSSUPPLIER:
     875           0 :                 if (!Value.hasValue())
     876           0 :                     setFormatsSupplier(::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > (NULL));
     877             :                 else
     878             :                 {
     879           0 :                     ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > xNFS;
     880           0 :                     if ( Value >>= xNFS )
     881           0 :                         setFormatsSupplier(xNFS);
     882             :                 }
     883           0 :                 break;
     884             :             case BASEPROPERTY_FORMATKEY:
     885           0 :                 if (!Value.hasValue())
     886           0 :                     setFormatKey(0);
     887             :                 else
     888             :                 {
     889           0 :                     sal_Int32 n = 0;
     890           0 :                     if ( Value >>= n )
     891           0 :                         setFormatKey(n);
     892             :                 }
     893           0 :                 break;
     894             : 
     895             :             case BASEPROPERTY_EFFECTIVE_VALUE:
     896             :             case BASEPROPERTY_VALUE_DOUBLE:
     897             :             {
     898           0 :                 const ::com::sun::star::uno::TypeClass rTC = Value.getValueType().getTypeClass();
     899           0 :                 if (rTC != ::com::sun::star::uno::TypeClass_STRING)
     900             :                     // no string
     901           0 :                     if (rTC != ::com::sun::star::uno::TypeClass_DOUBLE)
     902             :                         // no double
     903           0 :                         if (Value.hasValue())
     904             :                         {   // but a value
     905             :                             // try if it is something converitble
     906           0 :                             sal_Int32 nValue = 0;
     907           0 :                             if (!(Value >>= nValue))
     908           0 :                                 throw ::com::sun::star::lang::IllegalArgumentException();
     909           0 :                             SetValue(::com::sun::star::uno::makeAny((double)nValue));
     910           0 :                             break;
     911             :                         }
     912             : 
     913           0 :                 SetValue(Value);
     914             :             }
     915           0 :             break;
     916             :             case BASEPROPERTY_VALUESTEP_DOUBLE:
     917             :             {
     918           0 :                 double d = 0.0;
     919           0 :                 if ( Value >>= d )
     920           0 :                      pField->SetSpinSize( d );
     921             :                 else
     922             :                 {
     923           0 :                     sal_Int32 n = 0;
     924           0 :                     if ( Value >>= n )
     925           0 :                          pField->SetSpinSize( n );
     926             :                 }
     927             :             }
     928           0 :             break;
     929             :             case BASEPROPERTY_DECIMALACCURACY:
     930             :             {
     931           0 :                 sal_Int32 n = 0;
     932           0 :                 if ( Value >>= n )
     933           0 :                      pField->SetDecimalDigits( (sal_uInt16)n );
     934             :             }
     935           0 :             break;
     936             :             case BASEPROPERTY_NUMSHOWTHOUSANDSEP:
     937             :             {
     938           0 :                     sal_Bool b = sal_Bool();
     939           0 :                     if ( Value >>= b )
     940           0 :                      pField->SetThousandsSep( b );
     941             :             }
     942           0 :             break;
     943             : 
     944             :             default:
     945           0 :                 VCLXSpinField::setProperty( PropertyName, Value );
     946             :         }
     947             : 
     948           0 :         if (BASEPROPERTY_TEXTCOLOR == nPropType)
     949             :         {   // after setting a new text color, think again about the AutoColor flag of the control
     950             :             // 17.05.2001 - 86859 - frank.schoenheit@germany.sun.com
     951           0 :             pField->SetAutoColor(!Value.hasValue());
     952             :         }
     953             :     }
     954             :     else
     955           0 :         VCLXSpinField::setProperty( PropertyName, Value );
     956           0 : }
     957             : 
     958             : 
     959           0 : ::com::sun::star::uno::Any SVTXFormattedField::getProperty( const OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException, std::exception)
     960             : {
     961           0 :     SolarMutexGuard aGuard;
     962             : 
     963           0 :     ::com::sun::star::uno::Any aReturn;
     964             : 
     965           0 :     FormattedField* pField = GetFormattedField();
     966           0 :     if ( pField )
     967             :     {
     968           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
     969           0 :         switch (nPropType)
     970             :         {
     971             :             case BASEPROPERTY_EFFECTIVE_MIN:
     972             :             case BASEPROPERTY_VALUEMIN_DOUBLE:
     973           0 :                 aReturn <<= GetMinValue();
     974           0 :                 break;
     975             : 
     976             :             case BASEPROPERTY_EFFECTIVE_MAX:
     977             :             case BASEPROPERTY_VALUEMAX_DOUBLE:
     978           0 :                 aReturn <<= GetMaxValue();
     979           0 :                 break;
     980             : 
     981             :             case BASEPROPERTY_EFFECTIVE_DEFAULT:
     982           0 :                 aReturn <<= GetDefaultValue();
     983           0 :                 break;
     984             : 
     985             :             case BASEPROPERTY_TREATASNUMBER:
     986           0 :                 aReturn <<= GetTreatAsNumber();
     987           0 :                 break;
     988             : 
     989             :             case BASEPROPERTY_EFFECTIVE_VALUE:
     990             :             case BASEPROPERTY_VALUE_DOUBLE:
     991           0 :                 aReturn <<= GetValue();
     992           0 :                 break;
     993             : 
     994             :             case BASEPROPERTY_VALUESTEP_DOUBLE:
     995           0 :                 aReturn <<= pField->GetSpinSize();
     996           0 :                 break;
     997             : 
     998             :             case BASEPROPERTY_DECIMALACCURACY:
     999           0 :                 aReturn <<= pField->GetDecimalDigits();
    1000           0 :                 break;
    1001             : 
    1002             :             case BASEPROPERTY_FORMATSSUPPLIER:
    1003             :             {
    1004           0 :                 if (!bIsStandardSupplier)
    1005             :                 {   // ansonsten void
    1006           0 :                     ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >  xSupplier = getFormatsSupplier();
    1007           0 :                     aReturn <<= xSupplier;
    1008             :                 }
    1009             :             }
    1010           0 :             break;
    1011             : 
    1012             :             case BASEPROPERTY_FORMATKEY:
    1013             :             {
    1014           0 :                 if (!bIsStandardSupplier)
    1015           0 :                     aReturn <<= getFormatKey();
    1016             :             }
    1017           0 :             break;
    1018             : 
    1019             :             default:
    1020           0 :                 aReturn <<= VCLXSpinField::getProperty(PropertyName);
    1021             :         }
    1022             :     }
    1023           0 :     return aReturn;
    1024             : }
    1025             : 
    1026             : 
    1027           0 : ::com::sun::star::uno::Any SVTXFormattedField::convertEffectiveValue(const ::com::sun::star::uno::Any& rValue)
    1028             : {
    1029           0 :     ::com::sun::star::uno::Any aReturn;
    1030             : 
    1031           0 :     FormattedField* pField = GetFormattedField();
    1032           0 :     if (!pField)
    1033           0 :         return aReturn;
    1034             : 
    1035           0 :     switch (rValue.getValueType().getTypeClass())
    1036             :     {
    1037             :         case ::com::sun::star::uno::TypeClass_DOUBLE:
    1038           0 :             if (pField->TreatingAsNumber())
    1039             :             {
    1040           0 :                 double d = 0.0;
    1041           0 :                 rValue >>= d;
    1042           0 :                 aReturn <<= d;
    1043             :             }
    1044             :             else
    1045             :             {
    1046           0 :                 SvNumberFormatter* pFormatter = pField->GetFormatter();
    1047           0 :                 if (!pFormatter)
    1048           0 :                     pFormatter = pField->StandardFormatter();
    1049             :                     // should never fail
    1050             : 
    1051             :                 Color* pDum;
    1052           0 :                 double d = 0.0;
    1053           0 :                 rValue >>= d;
    1054           0 :                 OUString sConverted;
    1055           0 :                 pFormatter->GetOutputString(d, 0, sConverted, &pDum);
    1056           0 :                 aReturn <<= sConverted;
    1057             :             }
    1058           0 :             break;
    1059             :         case ::com::sun::star::uno::TypeClass_STRING:
    1060             :         {
    1061           0 :             OUString aStr;
    1062           0 :             rValue >>= aStr;
    1063           0 :             if (pField->TreatingAsNumber())
    1064             :             {
    1065           0 :                 SvNumberFormatter* pFormatter = pField->GetFormatter();
    1066           0 :                 if (!pFormatter)
    1067           0 :                     pFormatter = pField->StandardFormatter();
    1068             : 
    1069             :                 double dVal;
    1070           0 :                 sal_uInt32 nTestFormat(0);
    1071           0 :                 if (!pFormatter->IsNumberFormat(aStr, nTestFormat, dVal))
    1072           0 :                     aReturn.clear();
    1073           0 :                 aReturn <<= dVal;
    1074             :             }
    1075             :             else
    1076           0 :                 aReturn <<= aStr;
    1077             :         }
    1078           0 :         break;
    1079             :         default:
    1080           0 :             aReturn.clear();
    1081           0 :             break;
    1082             :     }
    1083           0 :     return aReturn;
    1084             : }
    1085             : 
    1086             : 
    1087           0 : void SVTXFormattedField::SetMinValue(const ::com::sun::star::uno::Any& rValue)
    1088             : {
    1089           0 :     FormattedField* pField = GetFormattedField();
    1090           0 :     if (!pField)
    1091           0 :         return;
    1092             : 
    1093           0 :     switch (rValue.getValueType().getTypeClass())
    1094             : 
    1095             :     {
    1096             :         case ::com::sun::star::uno::TypeClass_DOUBLE:
    1097             :         {
    1098           0 :             double d = 0.0;
    1099           0 :             rValue >>= d;
    1100           0 :             pField->SetMinValue(d);
    1101             :         }
    1102           0 :             break;
    1103             :         default:
    1104             :             DBG_ASSERT(rValue.getValueType().getTypeClass() == ::com::sun::star::uno::TypeClass_VOID, "SVTXFormattedField::SetMinValue : invalid argument (an exception will be thrown) !");
    1105           0 :             if ( rValue.getValueType().getTypeClass() != ::com::sun::star::uno::TypeClass_VOID )
    1106             : 
    1107             :             {
    1108           0 :                 throw ::com::sun::star::lang::IllegalArgumentException();
    1109             :             }
    1110           0 :             pField->ClearMinValue();
    1111           0 :             break;
    1112             :     }
    1113             : }
    1114             : 
    1115             : 
    1116           0 : ::com::sun::star::uno::Any SVTXFormattedField::GetMinValue()
    1117             : {
    1118           0 :     FormattedField* pField = GetFormattedField();
    1119           0 :     if (!pField || !pField->HasMinValue())
    1120           0 :         return ::com::sun::star::uno::Any();
    1121             : 
    1122           0 :     ::com::sun::star::uno::Any aReturn;
    1123           0 :     aReturn <<= pField->GetMinValue();
    1124           0 :     return aReturn;
    1125             : }
    1126             : 
    1127             : 
    1128           0 : void SVTXFormattedField::SetMaxValue(const ::com::sun::star::uno::Any& rValue)
    1129             : {
    1130           0 :     FormattedField* pField = GetFormattedField();
    1131           0 :     if (!pField)
    1132           0 :         return;
    1133             : 
    1134           0 :     switch (rValue.getValueType().getTypeClass())
    1135             : 
    1136             :     {
    1137             :         case ::com::sun::star::uno::TypeClass_DOUBLE:
    1138             :         {
    1139           0 :             double d = 0.0;
    1140           0 :             rValue >>= d;
    1141           0 :             pField->SetMaxValue(d);
    1142             :         }
    1143           0 :             break;
    1144             :         default:
    1145           0 :             if (rValue.getValueType().getTypeClass() != ::com::sun::star::uno::TypeClass_VOID)
    1146             : 
    1147             :             {
    1148           0 :                 throw ::com::sun::star::lang::IllegalArgumentException();
    1149             :             }
    1150           0 :             pField->ClearMaxValue();
    1151           0 :             break;
    1152             :     }
    1153             : }
    1154             : 
    1155             : 
    1156           0 : ::com::sun::star::uno::Any SVTXFormattedField::GetMaxValue()
    1157             : {
    1158           0 :     FormattedField* pField = GetFormattedField();
    1159           0 :     if (!pField || !pField->HasMaxValue())
    1160           0 :         return ::com::sun::star::uno::Any();
    1161             : 
    1162           0 :     ::com::sun::star::uno::Any aReturn;
    1163           0 :     aReturn <<= pField->GetMaxValue();
    1164           0 :     return aReturn;
    1165             : }
    1166             : 
    1167             : 
    1168           0 : void SVTXFormattedField::SetDefaultValue(const ::com::sun::star::uno::Any& rValue)
    1169             : {
    1170           0 :     FormattedField* pField = GetFormattedField();
    1171           0 :     if (!pField)
    1172           0 :         return;
    1173             : 
    1174           0 :     ::com::sun::star::uno::Any aConverted = convertEffectiveValue(rValue);
    1175             : 
    1176           0 :     switch (aConverted.getValueType().getTypeClass())
    1177             : 
    1178             :     {
    1179             :         case ::com::sun::star::uno::TypeClass_DOUBLE:
    1180             :         {
    1181           0 :             double d = 0.0;
    1182           0 :             aConverted >>= d;
    1183           0 :             pField->SetDefaultValue(d);
    1184             :         }
    1185           0 :         break;
    1186             :         case ::com::sun::star::uno::TypeClass_STRING:
    1187             :         {
    1188           0 :             OUString aStr;
    1189           0 :             aConverted >>= aStr;
    1190           0 :             pField->SetDefaultText( aStr );
    1191             :         }
    1192           0 :         break;
    1193             :         default:
    1194           0 :             pField->EnableEmptyField(true);
    1195             :                 // nur noch void erlaubt
    1196           0 :             break;
    1197           0 :     }
    1198             : }
    1199             : 
    1200             : 
    1201           0 : ::com::sun::star::uno::Any SVTXFormattedField::GetDefaultValue()
    1202             : {
    1203           0 :     FormattedField* pField = GetFormattedField();
    1204           0 :     if (!pField || pField->IsEmptyFieldEnabled())
    1205           0 :         return ::com::sun::star::uno::Any();
    1206             : 
    1207           0 :     ::com::sun::star::uno::Any aReturn;
    1208           0 :     if (pField->TreatingAsNumber())
    1209           0 :         aReturn <<= pField->GetDefaultValue();
    1210             :     else
    1211           0 :         aReturn <<= OUString( pField->GetDefaultText() );
    1212           0 :     return aReturn;
    1213             : }
    1214             : 
    1215             : 
    1216           0 : sal_Bool SVTXFormattedField::GetTreatAsNumber()
    1217             : {
    1218           0 :     FormattedField* pField = GetFormattedField();
    1219           0 :     if (pField)
    1220           0 :         return pField->TreatingAsNumber();
    1221             : 
    1222           0 :     return sal_True;
    1223             : }
    1224             : 
    1225             : 
    1226           0 : void SVTXFormattedField::SetTreatAsNumber(sal_Bool bSet)
    1227             : {
    1228           0 :     FormattedField* pField = GetFormattedField();
    1229           0 :     if (pField)
    1230           0 :         pField->TreatAsNumber(bSet);
    1231           0 : }
    1232             : 
    1233             : 
    1234           0 : ::com::sun::star::uno::Any SVTXFormattedField::GetValue()
    1235             : {
    1236           0 :     FormattedField* pField = GetFormattedField();
    1237           0 :     if (!pField)
    1238           0 :         return ::com::sun::star::uno::Any();
    1239             : 
    1240           0 :     ::com::sun::star::uno::Any aReturn;
    1241           0 :     if (!pField->TreatingAsNumber())
    1242             :     {
    1243           0 :         OUString sText = pField->GetTextValue();
    1244           0 :         aReturn <<= sText;
    1245             :     }
    1246             :     else
    1247             :     {
    1248           0 :         if (!pField->GetText().isEmpty())    // empty is returned as void by default
    1249           0 :             aReturn <<= pField->GetValue();
    1250             :     }
    1251             : 
    1252           0 :     return aReturn;
    1253             : }
    1254             : 
    1255             : 
    1256           0 : void SVTXFormattedField::SetValue(const ::com::sun::star::uno::Any& rValue)
    1257             : {
    1258           0 :     FormattedField* pField = GetFormattedField();
    1259           0 :     if (!pField)
    1260           0 :         return;
    1261             : 
    1262           0 :     if (!rValue.hasValue())
    1263             :     {
    1264           0 :         pField->SetText("");
    1265             :     }
    1266             :     else
    1267             :     {
    1268           0 :         if (rValue.getValueType().getTypeClass() == ::com::sun::star::uno::TypeClass_DOUBLE )
    1269             :         {
    1270           0 :             double d = 0.0;
    1271           0 :             rValue >>= d;
    1272           0 :             pField->SetValue(d);
    1273             :         }
    1274             :         else
    1275             :         {
    1276             :             DBG_ASSERT(rValue.getValueType().getTypeClass() == ::com::sun::star::uno::TypeClass_STRING, "SVTXFormattedField::SetValue : invalid argument !");
    1277             : 
    1278           0 :             OUString sText;
    1279           0 :             rValue >>= sText;
    1280           0 :             if (!pField->TreatingAsNumber())
    1281           0 :                 pField->SetTextFormatted(sText);
    1282             :             else
    1283           0 :                 pField->SetTextValue(sText);
    1284             :         }
    1285             :     }
    1286             : //  NotifyTextListeners();
    1287             : }
    1288             : 
    1289             : 
    1290           0 : ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >  SVTXFormattedField::getFormatsSupplier(void) const
    1291             : {
    1292           0 :     return ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > ((::com::sun::star::util::XNumberFormatsSupplier*)m_pCurrentSupplier);
    1293             : }
    1294             : 
    1295             : 
    1296           0 : void SVTXFormattedField::setFormatsSupplier(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > & xSupplier)
    1297             : {
    1298           0 :     FormattedField* pField = GetFormattedField();
    1299             : 
    1300           0 :     SvNumberFormatsSupplierObj* pNew = NULL;
    1301           0 :     if (!xSupplier.is())
    1302             :     {
    1303           0 :         if (pField)
    1304             :         {
    1305           0 :             pNew = new SvNumberFormatsSupplierObj(pField->StandardFormatter());
    1306           0 :             bIsStandardSupplier = sal_True;
    1307             :         }
    1308             :     }
    1309             :     else
    1310             :     {
    1311           0 :         pNew = SvNumberFormatsSupplierObj::getImplementation(xSupplier);
    1312           0 :         bIsStandardSupplier = sal_False;
    1313             :     }
    1314             : 
    1315           0 :     if (!pNew)
    1316           0 :         return;     // TODO : how to process ?
    1317             : 
    1318           0 :     if (m_pCurrentSupplier)
    1319           0 :         m_pCurrentSupplier->release();
    1320           0 :     m_pCurrentSupplier = pNew;
    1321           0 :     m_pCurrentSupplier->acquire();
    1322           0 :     if (pField)
    1323             :     {
    1324             :         // save the actual value
    1325           0 :         ::com::sun::star::uno::Any aCurrent = GetValue();
    1326           0 :         pField->SetFormatter(m_pCurrentSupplier->GetNumberFormatter(), false);
    1327           0 :         if (nKeyToSetDelayed != -1)
    1328             :         {
    1329           0 :             pField->SetFormatKey(nKeyToSetDelayed);
    1330           0 :             nKeyToSetDelayed = -1;
    1331             :         }
    1332           0 :         SetValue(aCurrent);
    1333           0 :         NotifyTextListeners();
    1334             :     }
    1335             : }
    1336             : 
    1337             : 
    1338           0 : sal_Int32 SVTXFormattedField::getFormatKey(void) const
    1339             : {
    1340           0 :     FormattedField* pField = GetFormattedField();
    1341           0 :     return pField ? pField->GetFormatKey() : 0;
    1342             : }
    1343             : 
    1344             : 
    1345           0 : void SVTXFormattedField::setFormatKey(sal_Int32 nKey)
    1346             : {
    1347           0 :     FormattedField* pField = GetFormattedField();
    1348           0 :     if (pField)
    1349             :     {
    1350           0 :         if (pField->GetFormatter())
    1351           0 :             pField->SetFormatKey(nKey);
    1352             :         else
    1353             :         {
    1354             :             // probably I am in a block, in which first the key and next the formatter will be set,
    1355             :             // initially this happens quite certain, as the properties are set in alphabettic sequence,
    1356             :             // and the FormatsSupplier is processed before the FormatKey
    1357           0 :             nKeyToSetDelayed = nKey;
    1358             :         }
    1359           0 :         NotifyTextListeners();
    1360             :     }
    1361           0 : }
    1362             : 
    1363             : 
    1364           0 : void SVTXFormattedField::NotifyTextListeners()
    1365             : {
    1366           0 :     if ( GetTextListeners().getLength() )
    1367             :     {
    1368           0 :         ::com::sun::star::awt::TextEvent aEvent;
    1369           0 :         aEvent.Source = (::cppu::OWeakObject*)this;
    1370           0 :         GetTextListeners().textChanged( aEvent );
    1371             :     }
    1372           0 : }
    1373             : 
    1374           0 : void SVTXFormattedField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
    1375             : {
    1376             :     PushPropertyIds( rIds,
    1377             :                      // FIXME: elide duplication ?
    1378             :                      BASEPROPERTY_EFFECTIVE_MIN,
    1379             :                      BASEPROPERTY_VALUEMIN_DOUBLE,
    1380             :                      BASEPROPERTY_EFFECTIVE_MAX,
    1381             :                      BASEPROPERTY_VALUEMAX_DOUBLE,
    1382             :                      BASEPROPERTY_EFFECTIVE_DEFAULT,
    1383             :                      BASEPROPERTY_TREATASNUMBER,
    1384             :                      BASEPROPERTY_EFFECTIVE_VALUE,
    1385             :                      BASEPROPERTY_VALUE_DOUBLE,
    1386             :                      BASEPROPERTY_VALUESTEP_DOUBLE,
    1387             :                      BASEPROPERTY_DECIMALACCURACY,
    1388             :                      BASEPROPERTY_FORMATSSUPPLIER,
    1389             :                      BASEPROPERTY_NUMSHOWTHOUSANDSEP,
    1390             :                      BASEPROPERTY_FORMATKEY,
    1391             :                      BASEPROPERTY_TREATASNUMBER,
    1392             :                      BASEPROPERTY_ENFORCE_FORMAT,
    1393           0 :                      0);
    1394           0 :     VCLXWindow::ImplGetPropertyIds( rIds, true );
    1395           0 :     VCLXSpinField::ImplGetPropertyIds( rIds );
    1396           0 : }
    1397             : 
    1398             : 
    1399             : 
    1400             : //  class SVTXRoadmap
    1401             : 
    1402             : 
    1403             : using namespace svt;
    1404             : 
    1405             : 
    1406           0 : SVTXRoadmap::SVTXRoadmap() : maItemListeners( *this )
    1407             : {
    1408           0 : }
    1409             : 
    1410             : 
    1411           0 : SVTXRoadmap::~SVTXRoadmap()
    1412             : {
    1413           0 : }
    1414             : 
    1415           0 : void SVTXRoadmap::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
    1416             : {
    1417           0 :     switch ( rVclWindowEvent.GetId() )
    1418             :     {
    1419             :         case VCLEVENT_ROADMAP_ITEMSELECTED:
    1420             :         {
    1421           0 :             SolarMutexGuard aGuard;
    1422           0 :             ::svt::ORoadmap* pField = GetRoadmap();
    1423           0 :             if ( pField )
    1424             :             {
    1425           0 :                 sal_Int16 CurItemID = pField->GetCurrentRoadmapItemID();
    1426           0 :                 ::com::sun::star::awt::ItemEvent aEvent;
    1427           0 :                 aEvent.Selected = CurItemID;
    1428           0 :                 aEvent.Highlighted = CurItemID;
    1429           0 :                 aEvent.ItemId = CurItemID;
    1430           0 :                 maItemListeners.itemStateChanged( aEvent );
    1431           0 :             }
    1432             :         }
    1433           0 :         break;
    1434             :         default:
    1435           0 :             SVTXRoadmap_Base::ProcessWindowEvent( rVclWindowEvent );
    1436           0 :             break;
    1437             :     }
    1438           0 : }
    1439             : 
    1440             : 
    1441           0 : void SVTXRoadmap::propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw (::com::sun::star::uno::RuntimeException, std::exception)
    1442             : {
    1443           0 :     SolarMutexGuard aGuard;
    1444           0 :     ::svt::ORoadmap* pField = GetRoadmap();
    1445           0 :     if ( pField )
    1446             :     {
    1447           0 :         ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xRoadmapItem;
    1448           0 :         xRoadmapItem = evt.Source;
    1449           0 :         sal_Int32 nID = 0;
    1450           0 :         ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPropertySet( xRoadmapItem, ::com::sun::star::uno::UNO_QUERY );
    1451           0 :         ::com::sun::star::uno::Any aValue = xPropertySet->getPropertyValue("ID");
    1452           0 :         aValue >>= nID;
    1453             : 
    1454           0 :         ::com::sun::star::uno::Any rVal = evt.NewValue;
    1455           0 :         evt.NewValue >>= rVal;
    1456           0 :         OUString sPropertyName = evt.PropertyName;
    1457           0 :         if ( sPropertyName == "Enabled" )
    1458             :         {
    1459           0 :             sal_Bool bEnable = false;
    1460           0 :             evt.NewValue >>= bEnable;
    1461           0 :             pField->EnableRoadmapItem( (RoadmapTypes::ItemId)nID , bEnable );
    1462             :         }
    1463           0 :         else if ( sPropertyName == "Label" )
    1464             :         {
    1465           0 :             OUString sLabel;
    1466           0 :             evt.NewValue >>= sLabel;
    1467           0 :             pField->ChangeRoadmapItemLabel( (RoadmapTypes::ItemId)nID , sLabel );
    1468             :         }
    1469           0 :         else if  ( sPropertyName == "ID" )
    1470             :         {
    1471           0 :             sal_Int32 nNewID = 0;
    1472           0 :             evt.NewValue >>= nNewID;
    1473           0 :             evt.OldValue >>= nID;
    1474           0 :             pField->ChangeRoadmapItemID( (RoadmapTypes::ItemId)nID, (RoadmapTypes::ItemId)nNewID );
    1475           0 :         }
    1476             :     //    else
    1477             :             // Todo: handle Interactive appropriately
    1478           0 :     }
    1479           0 : }
    1480             : 
    1481             : 
    1482           0 : void SVTXRoadmap::addItemListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l ) throw (::com::sun::star::uno::RuntimeException, std::exception)
    1483             : {
    1484           0 :     maItemListeners.addInterface( l );
    1485           0 : }
    1486             : 
    1487           0 : void SVTXRoadmap::removeItemListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l ) throw (::com::sun::star::uno::RuntimeException, std::exception)
    1488             : {
    1489           0 :     maItemListeners.removeInterface( l );
    1490           0 : }
    1491             : 
    1492           0 : RMItemData SVTXRoadmap::GetRMItemData( const ::com::sun::star::container::ContainerEvent& _rEvent )
    1493             : {
    1494           0 :     RMItemData aCurRMItemData;
    1495           0 :     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xRoadmapItem;
    1496           0 :     _rEvent.Element >>= xRoadmapItem;
    1497           0 :     ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPropertySet( xRoadmapItem, ::com::sun::star::uno::UNO_QUERY );
    1498           0 :     if ( xPropertySet.is() )
    1499             :     {
    1500           0 :         ::com::sun::star::uno::Any aValue = xPropertySet->getPropertyValue("Label");
    1501           0 :         aValue >>= aCurRMItemData.Label;
    1502           0 :         aValue = xPropertySet->getPropertyValue("ID");
    1503           0 :         aValue >>= aCurRMItemData.n_ID;
    1504           0 :         aValue = xPropertySet->getPropertyValue("Enabled");
    1505           0 :         aValue >>= aCurRMItemData.b_Enabled;
    1506             :     }
    1507             :     else
    1508             :     {
    1509           0 :         aCurRMItemData.b_Enabled = sal_False;
    1510           0 :         aCurRMItemData.n_ID = 0;
    1511             :     }
    1512           0 :     return aCurRMItemData;
    1513             : }
    1514             : 
    1515           0 : void SVTXRoadmap::elementInserted( const ::com::sun::star::container::ContainerEvent& _rEvent )throw(::com::sun::star::uno::RuntimeException, std::exception)
    1516             : {
    1517           0 :     SolarMutexGuard aGuard;
    1518           0 :     ::svt::ORoadmap* pField = GetRoadmap();
    1519           0 :     if ( pField )
    1520             :     {
    1521           0 :         RMItemData CurItemData = GetRMItemData(  _rEvent );
    1522           0 :         sal_Int32 InsertIndex = 0;
    1523           0 :         _rEvent.Accessor >>= InsertIndex;
    1524           0 :         pField->InsertRoadmapItem( InsertIndex, CurItemData.Label, (RoadmapTypes::ItemId)CurItemData.n_ID, CurItemData.b_Enabled );
    1525           0 :     }
    1526           0 : }
    1527             : 
    1528           0 : void SVTXRoadmap::elementRemoved( const ::com::sun::star::container::ContainerEvent& _rEvent )throw(::com::sun::star::uno::RuntimeException, std::exception)
    1529             : {
    1530           0 :     SolarMutexGuard aGuard;
    1531           0 :     ::svt::ORoadmap* pField = GetRoadmap();
    1532           0 :     if ( pField )
    1533             :     {
    1534           0 :         sal_Int32 DelIndex = 0;
    1535           0 :         _rEvent.Accessor >>= DelIndex;
    1536           0 :         pField->DeleteRoadmapItem(DelIndex);
    1537           0 :     }
    1538           0 : }
    1539             : 
    1540           0 : void SVTXRoadmap::elementReplaced( const ::com::sun::star::container::ContainerEvent& _rEvent )throw(::com::sun::star::uno::RuntimeException, std::exception)
    1541             : {
    1542           0 :     SolarMutexGuard aGuard;
    1543           0 :     ::svt::ORoadmap* pField = GetRoadmap();
    1544           0 :     if ( pField )
    1545             :     {
    1546           0 :         RMItemData CurItemData = GetRMItemData(  _rEvent );
    1547           0 :         sal_Int32 ReplaceIndex = 0;
    1548           0 :         _rEvent.Accessor >>= ReplaceIndex;
    1549           0 :         pField->ReplaceRoadmapItem( ReplaceIndex, CurItemData.Label, (RoadmapTypes::ItemId)CurItemData.n_ID, CurItemData.b_Enabled );
    1550           0 :     }
    1551           0 : }
    1552             : 
    1553             : 
    1554             : 
    1555             : 
    1556           0 : void SVTXRoadmap::setProperty( const OUString& PropertyName, const ::com::sun::star::uno::Any& Value) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1557             : {
    1558           0 :     SolarMutexGuard aGuard;
    1559             : 
    1560           0 :     ::svt::ORoadmap* pField = GetRoadmap();
    1561           0 :     if ( pField )
    1562             :     {
    1563           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
    1564           0 :         switch (nPropType)
    1565             :         {
    1566             :             case BASEPROPERTY_COMPLETE:
    1567             :             {
    1568           0 :                 sal_Bool b = false;
    1569           0 :                 Value >>= b;
    1570           0 :                 pField->SetRoadmapComplete( b);
    1571             :             }
    1572           0 :             break;
    1573             : 
    1574             :             case BASEPROPERTY_ACTIVATED:
    1575             :             {
    1576           0 :                    sal_Bool b = false;
    1577           0 :                 Value >>= b;
    1578           0 :                 pField->SetRoadmapInteractive( b);
    1579             :             }
    1580           0 :             break;
    1581             : 
    1582             :             case BASEPROPERTY_CURRENTITEMID:
    1583             :             {
    1584           0 :                    sal_Int32 nId = 0;
    1585           0 :                 Value >>= nId;
    1586           0 :                 pField->SelectRoadmapItemByID( (RoadmapTypes::ItemId)nId );
    1587             :             }
    1588           0 :             break;
    1589             : 
    1590             :             case BASEPROPERTY_TEXT:
    1591             :             {
    1592           0 :                    OUString aStr;
    1593           0 :                 Value >>= aStr;
    1594           0 :                 pField->SetText( aStr );
    1595           0 :                 pField->Invalidate();
    1596             :             }
    1597           0 :             break;
    1598             : 
    1599             :             default:
    1600           0 :                 SVTXRoadmap_Base::setProperty( PropertyName, Value );
    1601           0 :                 break;
    1602             :         }
    1603             : 
    1604             :     }
    1605             :     else
    1606           0 :         SVTXRoadmap_Base::setProperty( PropertyName, Value );
    1607           0 : }
    1608             : 
    1609             : 
    1610             : 
    1611           0 : ::com::sun::star::uno::Any SVTXRoadmap::getProperty( const OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1612             : {
    1613           0 :     SolarMutexGuard aGuard;
    1614             : 
    1615           0 :     ::com::sun::star::uno::Any aReturn;
    1616             : 
    1617           0 :     ::svt::ORoadmap* pField = GetRoadmap();
    1618           0 :     if ( pField )
    1619             :     {
    1620           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
    1621           0 :         switch (nPropType)
    1622             :         {
    1623             :             case BASEPROPERTY_COMPLETE:
    1624           0 :                 aReturn <<= pField->IsRoadmapComplete();
    1625           0 :                 break;
    1626             :             case BASEPROPERTY_ACTIVATED:
    1627           0 :                 aReturn <<= pField->IsRoadmapInteractive();
    1628           0 :                 break;
    1629             :             case BASEPROPERTY_CURRENTITEMID:
    1630           0 :                 aReturn <<= pField->GetCurrentRoadmapItemID();
    1631           0 :                 break;
    1632             :             default:
    1633           0 :                 aReturn = SVTXRoadmap_Base::getProperty(PropertyName);
    1634           0 :                 break;
    1635             :         }
    1636             :     }
    1637           0 :     return aReturn;
    1638             : }
    1639             : 
    1640           0 : void SVTXRoadmap::ImplSetNewImage()
    1641             : {
    1642             :     OSL_PRECOND( GetWindow(), "SVTXRoadmap::ImplSetNewImage: window is required to be not-NULL!" );
    1643           0 :     ::svt::ORoadmap* pButton = static_cast< ::svt::ORoadmap* >( GetWindow() );
    1644           0 :     pButton->SetRoadmapBitmap( GetImage().GetBitmapEx() );
    1645           0 : }
    1646             : 
    1647           0 : void SVTXRoadmap::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
    1648             : {
    1649             :     PushPropertyIds( rIds,
    1650             :                      BASEPROPERTY_COMPLETE,
    1651             :                      BASEPROPERTY_ACTIVATED,
    1652             :                      BASEPROPERTY_CURRENTITEMID,
    1653             :                      BASEPROPERTY_TEXT,
    1654           0 :                      0);
    1655           0 :     VCLXWindow::ImplGetPropertyIds( rIds, true );
    1656           0 :     VCLXGraphicControl::ImplGetPropertyIds( rIds );
    1657           0 : }
    1658             : 
    1659             : 
    1660             : //  class SVTXNumericField
    1661             : 
    1662           0 : SVTXNumericField::SVTXNumericField()
    1663             : {
    1664           0 : }
    1665             : 
    1666           0 : SVTXNumericField::~SVTXNumericField()
    1667             : {
    1668           0 : }
    1669             : 
    1670           0 : ::com::sun::star::uno::Any SVTXNumericField::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1671             : {
    1672             :     ::com::sun::star::uno::Any aRet = ::cppu::queryInterface( rType,
    1673             :                                         (static_cast< ::com::sun::star::awt::XNumericField* >(this)),
    1674           0 :                                         (static_cast< ::com::sun::star::lang::XTypeProvider* >(this)) );
    1675           0 :     return (aRet.hasValue() ? aRet : SVTXFormattedField::queryInterface( rType ));
    1676             : }
    1677             : 
    1678             : // ::com::sun::star::lang::XTypeProvider
    1679           0 : IMPL_XTYPEPROVIDER_START( SVTXNumericField )
    1680           0 :     getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XNumericField>* ) NULL ),
    1681             :     SVTXFormattedField::getTypes()
    1682           0 : IMPL_XTYPEPROVIDER_END
    1683             : 
    1684             : 
    1685           0 : void SVTXNumericField::setValue( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1686             : {
    1687           0 :     SolarMutexGuard aGuard;
    1688             : 
    1689           0 :     FormattedField* pField = GetFormattedField();
    1690           0 :     if ( pField )
    1691           0 :         pField->SetValue( Value );
    1692           0 : }
    1693             : 
    1694           0 : double SVTXNumericField::getValue() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1695             : {
    1696           0 :     SolarMutexGuard aGuard;
    1697             : 
    1698           0 :     FormattedField* pField = GetFormattedField();
    1699           0 :     return pField ? pField->GetValue() : 0;
    1700             : }
    1701             : 
    1702           0 : void SVTXNumericField::setMin( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1703             : {
    1704           0 :     SolarMutexGuard aGuard;
    1705             : 
    1706           0 :     FormattedField* pField = GetFormattedField();
    1707           0 :     if ( pField )
    1708           0 :         pField->SetMinValue( Value );
    1709           0 : }
    1710             : 
    1711           0 : double SVTXNumericField::getMin() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1712             : {
    1713           0 :     SolarMutexGuard aGuard;
    1714             : 
    1715           0 :     FormattedField* pField = GetFormattedField();
    1716           0 :     return pField ? pField->GetMinValue() : 0;
    1717             : }
    1718             : 
    1719           0 : void SVTXNumericField::setMax( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1720             : {
    1721           0 :     SolarMutexGuard aGuard;
    1722             : 
    1723           0 :     FormattedField* pField = GetFormattedField();
    1724           0 :     if ( pField )
    1725           0 :         pField->SetMaxValue( Value );
    1726           0 : }
    1727             : 
    1728           0 : double SVTXNumericField::getMax() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1729             : {
    1730           0 :     SolarMutexGuard aGuard;
    1731             : 
    1732           0 :     FormattedField* pField = GetFormattedField();
    1733           0 :     return pField ? pField->GetMaxValue() : 0;
    1734             : }
    1735             : 
    1736           0 : void SVTXNumericField::setFirst( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1737             : {
    1738           0 :     SolarMutexGuard aGuard;
    1739             : 
    1740           0 :     FormattedField* pField = GetFormattedField();
    1741           0 :     if ( pField )
    1742           0 :         pField->SetSpinFirst( Value );
    1743           0 : }
    1744             : 
    1745           0 : double SVTXNumericField::getFirst() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1746             : {
    1747           0 :     SolarMutexGuard aGuard;
    1748             : 
    1749           0 :     FormattedField* pField = GetFormattedField();
    1750           0 :     return pField ? pField->GetSpinFirst() : 0;
    1751             : }
    1752             : 
    1753           0 : void SVTXNumericField::setLast( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1754             : {
    1755           0 :     SolarMutexGuard aGuard;
    1756             : 
    1757           0 :     FormattedField* pField = GetFormattedField();
    1758           0 :     if ( pField )
    1759           0 :         pField->SetSpinLast( Value );
    1760           0 : }
    1761             : 
    1762           0 : double SVTXNumericField::getLast() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1763             : {
    1764           0 :     SolarMutexGuard aGuard;
    1765             : 
    1766           0 :     FormattedField* pField = GetFormattedField();
    1767           0 :     return pField ? pField->GetSpinLast() : 0;
    1768             : }
    1769             : 
    1770           0 : void SVTXNumericField::setSpinSize( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1771             : {
    1772           0 :     SolarMutexGuard aGuard;
    1773             : 
    1774           0 :     FormattedField* pField = GetFormattedField();
    1775           0 :     if ( pField )
    1776           0 :         pField->SetSpinSize( Value );
    1777           0 : }
    1778             : 
    1779           0 : double SVTXNumericField::getSpinSize() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1780             : {
    1781           0 :     SolarMutexGuard aGuard;
    1782             : 
    1783           0 :     FormattedField* pField = GetFormattedField();
    1784           0 :     return pField ? pField->GetSpinSize() : 0;
    1785             : }
    1786             : 
    1787           0 : void SVTXNumericField::setDecimalDigits( sal_Int16 Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1788             : {
    1789           0 :     SolarMutexGuard aGuard;
    1790             : 
    1791           0 :     FormattedField* pField = GetFormattedField();
    1792           0 :     if ( pField )
    1793           0 :         pField->SetDecimalDigits( Value );
    1794           0 : }
    1795             : 
    1796           0 : sal_Int16 SVTXNumericField::getDecimalDigits() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1797             : {
    1798           0 :     SolarMutexGuard aGuard;
    1799             : 
    1800           0 :     FormattedField* pField = GetFormattedField();
    1801           0 :     return pField ? pField->GetDecimalDigits() : 0;
    1802             : }
    1803             : 
    1804           0 : void SVTXNumericField::setStrictFormat( sal_Bool bStrict ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1805             : {
    1806           0 :     SolarMutexGuard aGuard;
    1807             : 
    1808           0 :     FormattedField* pField = GetFormattedField();
    1809           0 :     if ( pField )
    1810           0 :         pField->SetStrictFormat( bStrict );
    1811           0 : }
    1812             : 
    1813           0 : sal_Bool SVTXNumericField::isStrictFormat() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1814             : {
    1815           0 :     SolarMutexGuard aGuard;
    1816             : 
    1817           0 :     FormattedField* pField = GetFormattedField();
    1818           0 :     return pField ? pField->IsStrictFormat() : sal_False;
    1819             : }
    1820             : 
    1821           0 : void SVTXNumericField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
    1822             : {
    1823           0 :     SVTXFormattedField::ImplGetPropertyIds( rIds );
    1824           0 : }
    1825             : 
    1826             : 
    1827             : //  class SVTXCurrencyField
    1828             : 
    1829           0 : SVTXCurrencyField::SVTXCurrencyField()
    1830             : {
    1831           0 : }
    1832             : 
    1833           0 : SVTXCurrencyField::~SVTXCurrencyField()
    1834             : {
    1835           0 : }
    1836             : 
    1837           0 : ::com::sun::star::uno::Any SVTXCurrencyField::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1838             : {
    1839             :     ::com::sun::star::uno::Any aRet = ::cppu::queryInterface( rType,
    1840             :                                         (static_cast< ::com::sun::star::awt::XCurrencyField* >(this)),
    1841           0 :                                         (static_cast< ::com::sun::star::lang::XTypeProvider* >(this)) );
    1842           0 :     return (aRet.hasValue() ? aRet : SVTXFormattedField::queryInterface( rType ));
    1843             : }
    1844             : 
    1845             : // ::com::sun::star::lang::XTypeProvider
    1846           0 : IMPL_XTYPEPROVIDER_START( SVTXCurrencyField )
    1847           0 :     getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XCurrencyField>* ) NULL ),
    1848             :     SVTXFormattedField::getTypes()
    1849           0 : IMPL_XTYPEPROVIDER_END
    1850             : 
    1851           0 : void SVTXCurrencyField::setValue( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1852             : {
    1853           0 :     SolarMutexGuard aGuard;
    1854             : 
    1855           0 :     FormattedField* pField = GetFormattedField();
    1856           0 :     if ( pField )
    1857           0 :         pField->SetValue( Value );
    1858           0 : }
    1859             : 
    1860           0 : double SVTXCurrencyField::getValue() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1861             : {
    1862           0 :     SolarMutexGuard aGuard;
    1863             : 
    1864           0 :     FormattedField* pField = GetFormattedField();
    1865           0 :     return pField ? pField->GetValue() : 0;
    1866             : }
    1867             : 
    1868           0 : void SVTXCurrencyField::setMin( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1869             : {
    1870           0 :     SolarMutexGuard aGuard;
    1871             : 
    1872           0 :     FormattedField* pField = GetFormattedField();
    1873           0 :     if ( pField )
    1874           0 :         pField->SetMinValue( Value );
    1875           0 : }
    1876             : 
    1877           0 : double SVTXCurrencyField::getMin() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1878             : {
    1879           0 :     SolarMutexGuard aGuard;
    1880             : 
    1881           0 :     FormattedField* pField = GetFormattedField();
    1882           0 :     return pField ? pField->GetMinValue() : 0;
    1883             : }
    1884             : 
    1885           0 : void SVTXCurrencyField::setMax( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1886             : {
    1887           0 :     SolarMutexGuard aGuard;
    1888             : 
    1889           0 :     FormattedField* pField = GetFormattedField();
    1890           0 :     if ( pField )
    1891           0 :         pField->SetMaxValue( Value );
    1892           0 : }
    1893             : 
    1894           0 : double SVTXCurrencyField::getMax() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1895             : {
    1896           0 :     SolarMutexGuard aGuard;
    1897             : 
    1898           0 :     FormattedField* pField = GetFormattedField();
    1899           0 :     return pField ? pField->GetMaxValue() : 0;
    1900             : }
    1901             : 
    1902           0 : void SVTXCurrencyField::setFirst( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1903             : {
    1904           0 :     SolarMutexGuard aGuard;
    1905             : 
    1906           0 :     FormattedField* pField = GetFormattedField();
    1907           0 :     if ( pField )
    1908           0 :         pField->SetSpinFirst( Value );
    1909           0 : }
    1910             : 
    1911           0 : double SVTXCurrencyField::getFirst() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1912             : {
    1913           0 :     SolarMutexGuard aGuard;
    1914             : 
    1915           0 :     FormattedField* pField = GetFormattedField();
    1916           0 :     return pField ? pField->GetSpinFirst() : 0;
    1917             : }
    1918             : 
    1919           0 : void SVTXCurrencyField::setLast( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1920             : {
    1921           0 :     SolarMutexGuard aGuard;
    1922             : 
    1923           0 :     FormattedField* pField = GetFormattedField();
    1924           0 :     if ( pField )
    1925           0 :         pField->SetSpinLast( Value );
    1926           0 : }
    1927             : 
    1928           0 : double SVTXCurrencyField::getLast() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1929             : {
    1930           0 :     SolarMutexGuard aGuard;
    1931             : 
    1932           0 :     FormattedField* pField = GetFormattedField();
    1933           0 :     return pField ? pField->GetSpinLast() : 0;
    1934             : }
    1935             : 
    1936           0 : void SVTXCurrencyField::setSpinSize( double Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1937             : {
    1938           0 :     SolarMutexGuard aGuard;
    1939             : 
    1940           0 :     FormattedField* pField = GetFormattedField();
    1941           0 :     if ( pField )
    1942           0 :         pField->SetSpinSize( Value );
    1943           0 : }
    1944             : 
    1945           0 : double SVTXCurrencyField::getSpinSize() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1946             : {
    1947           0 :     SolarMutexGuard aGuard;
    1948             : 
    1949           0 :     FormattedField* pField = GetFormattedField();
    1950           0 :     return pField ? pField->GetSpinSize() : 0;
    1951             : }
    1952             : 
    1953           0 : void SVTXCurrencyField::setDecimalDigits( sal_Int16 Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1954             : {
    1955           0 :     SolarMutexGuard aGuard;
    1956             : 
    1957           0 :     FormattedField* pField = GetFormattedField();
    1958           0 :     if ( pField )
    1959           0 :         pField->SetDecimalDigits( Value );
    1960           0 : }
    1961             : 
    1962           0 : sal_Int16 SVTXCurrencyField::getDecimalDigits() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1963             : {
    1964           0 :     SolarMutexGuard aGuard;
    1965             : 
    1966           0 :     FormattedField* pField = GetFormattedField();
    1967           0 :     return pField ? pField->GetDecimalDigits() : 0;
    1968             : }
    1969             : 
    1970           0 : void SVTXCurrencyField::setStrictFormat( sal_Bool bStrict ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1971             : {
    1972           0 :     SolarMutexGuard aGuard;
    1973             : 
    1974           0 :     FormattedField* pField = GetFormattedField();
    1975           0 :     if ( pField )
    1976           0 :         pField->SetStrictFormat( bStrict );
    1977           0 : }
    1978             : 
    1979           0 : sal_Bool SVTXCurrencyField::isStrictFormat() throw(::com::sun::star::uno::RuntimeException, std::exception)
    1980             : {
    1981           0 :     SolarMutexGuard aGuard;
    1982             : 
    1983           0 :     FormattedField* pField = GetFormattedField();
    1984           0 :     return pField ? pField->IsStrictFormat() : sal_False;
    1985             : }
    1986             : 
    1987           0 : void SVTXCurrencyField::setProperty( const OUString& PropertyName, const ::com::sun::star::uno::Any& Value) throw(::com::sun::star::uno::RuntimeException, std::exception)
    1988             : {
    1989           0 :     SolarMutexGuard aGuard;
    1990             : 
    1991           0 :     DoubleCurrencyField* pField = (DoubleCurrencyField*)GetFormattedField();
    1992           0 :     if ( pField )
    1993             :     {
    1994           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
    1995           0 :         switch (nPropType)
    1996             :         {
    1997             :             case BASEPROPERTY_CURRENCYSYMBOL:
    1998             :             {
    1999           0 :                 OUString aStr;
    2000           0 :                 Value >>= aStr;
    2001           0 :                 pField->setCurrencySymbol( aStr );
    2002             :             }
    2003           0 :             break;
    2004             :             case BASEPROPERTY_CURSYM_POSITION:
    2005             :             {
    2006           0 :                 sal_Bool b = false;
    2007           0 :                 Value >>= b;
    2008           0 :                 pField->setPrependCurrSym(b);
    2009             :             }
    2010           0 :             break;
    2011             : 
    2012             :             default:
    2013           0 :                 SVTXFormattedField::setProperty(PropertyName, Value);
    2014             :         }
    2015             :     }
    2016             :     else
    2017           0 :         SVTXFormattedField::setProperty(PropertyName, Value);
    2018           0 : }
    2019             : 
    2020           0 : ::com::sun::star::uno::Any SVTXCurrencyField::getProperty( const OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    2021             : {
    2022           0 :     SolarMutexGuard aGuard;
    2023             : 
    2024           0 :     ::com::sun::star::uno::Any aReturn;
    2025             : 
    2026           0 :     DoubleCurrencyField* pField = (DoubleCurrencyField*)GetFormattedField();
    2027           0 :     if ( pField )
    2028             :     {
    2029           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
    2030           0 :         switch (nPropType)
    2031             :         {
    2032             :             case BASEPROPERTY_CURRENCYSYMBOL:
    2033             :             {
    2034           0 :                 aReturn <<= OUString( pField->getCurrencySymbol() );
    2035             :             }
    2036           0 :             break;
    2037             :             case BASEPROPERTY_CURSYM_POSITION:
    2038             :             {
    2039           0 :                 aReturn <<= pField->getPrependCurrSym();
    2040             :             }
    2041           0 :             break;
    2042             :             default:
    2043           0 :                 return SVTXFormattedField::getProperty(PropertyName);
    2044             :         }
    2045             :     }
    2046           0 :     return SVTXFormattedField::getProperty(PropertyName);
    2047             : }
    2048             : 
    2049           0 : void SVTXCurrencyField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
    2050             : {
    2051             :     PushPropertyIds( rIds,
    2052             :                      BASEPROPERTY_CURRENCYSYMBOL,
    2053             :                      BASEPROPERTY_CURSYM_POSITION,
    2054           0 :                      0);
    2055           0 :     SVTXFormattedField::ImplGetPropertyIds( rIds );
    2056           0 : }
    2057             : 
    2058             : 
    2059             : 
    2060             : //  class VCLXProgressBar
    2061             : 
    2062             : 
    2063           0 : VCLXProgressBar::VCLXProgressBar()
    2064             :             :m_nValue(0)
    2065             :             ,m_nValueMin(0)
    2066           0 :             ,m_nValueMax(100)
    2067             : {
    2068           0 : }
    2069             : 
    2070           0 : VCLXProgressBar::~VCLXProgressBar()
    2071             : {
    2072           0 : }
    2073             : 
    2074           0 : void VCLXProgressBar::ImplUpdateValue()
    2075             : {
    2076           0 :     ProgressBar* pProgressBar = (ProgressBar*) GetWindow();
    2077           0 :     if ( pProgressBar )
    2078             :     {
    2079             :         sal_Int32 nVal;
    2080             :         sal_Int32 nValMin;
    2081             :         sal_Int32 nValMax;
    2082             : 
    2083             :         // check min and max
    2084           0 :         if (m_nValueMin < m_nValueMax)
    2085             :         {
    2086           0 :             nValMin = m_nValueMin;
    2087           0 :             nValMax = m_nValueMax;
    2088             :         }
    2089             :         else
    2090             :         {
    2091           0 :             nValMin = m_nValueMax;
    2092           0 :             nValMax = m_nValueMin;
    2093             :         }
    2094             : 
    2095             :         // check value
    2096           0 :         if (m_nValue < nValMin)
    2097             :         {
    2098           0 :             nVal = nValMin;
    2099             :         }
    2100           0 :         else if (m_nValue > nValMax)
    2101             :         {
    2102           0 :             nVal = nValMax;
    2103             :         }
    2104             :         else
    2105             :         {
    2106           0 :             nVal = m_nValue;
    2107             :         }
    2108             : 
    2109             :         // calculate percent
    2110             :         sal_Int32 nPercent;
    2111           0 :         if (nValMin != nValMax)
    2112             :         {
    2113           0 :             nPercent = 100 * (nVal - nValMin) / (nValMax - nValMin);
    2114             :         }
    2115             :         else
    2116             :         {
    2117           0 :             nPercent = 0;
    2118             :         }
    2119             : 
    2120             :         // set progressbar value
    2121           0 :         pProgressBar->SetValue( (sal_uInt16) nPercent );
    2122             :     }
    2123           0 : }
    2124             : 
    2125             : // ::com::sun::star::uno::XInterface
    2126           0 : ::com::sun::star::uno::Any VCLXProgressBar::queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    2127             : {
    2128             :     ::com::sun::star::uno::Any aRet = ::cppu::queryInterface( rType,
    2129             :                                         (static_cast< ::com::sun::star::awt::XProgressBar* >(this)),
    2130           0 :                                         (static_cast< ::com::sun::star::lang::XTypeProvider* >(this)) );
    2131           0 :     return (aRet.hasValue() ? aRet : VCLXWindow::queryInterface( rType ));
    2132             : }
    2133             : 
    2134             : // ::com::sun::star::lang::XTypeProvider
    2135           0 : IMPL_XTYPEPROVIDER_START( VCLXProgressBar )
    2136           0 :     getCppuType( ( ::com::sun::star::uno::Reference< ::com::sun::star::awt::XProgressBar>* ) NULL ),
    2137             :     VCLXWindow::getTypes()
    2138           0 : IMPL_XTYPEPROVIDER_END
    2139             : 
    2140             : // ::com::sun::star::awt::XProgressBar
    2141           0 : void VCLXProgressBar::setForegroundColor( sal_Int32 nColor ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    2142             : {
    2143           0 :     SolarMutexGuard aGuard;
    2144             : 
    2145           0 :     Window* pWindow = GetWindow();
    2146           0 :     if ( pWindow )
    2147             :     {
    2148           0 :         Color aColor( nColor );
    2149           0 :         pWindow->SetControlForeground( aColor );
    2150           0 :     }
    2151           0 : }
    2152             : 
    2153           0 : void VCLXProgressBar::setBackgroundColor( sal_Int32 nColor ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    2154             : {
    2155           0 :     SolarMutexGuard aGuard;
    2156             : 
    2157           0 :     Window* pWindow = GetWindow();
    2158           0 :     if ( pWindow )
    2159             :     {
    2160           0 :         Color aColor( nColor );
    2161           0 :         pWindow->SetBackground( aColor );
    2162           0 :         pWindow->SetControlBackground( aColor );
    2163           0 :         pWindow->Invalidate();
    2164           0 :     }
    2165           0 : }
    2166             : 
    2167           0 : void VCLXProgressBar::setValue( sal_Int32 nValue ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    2168             : {
    2169           0 :     SolarMutexGuard aGuard;
    2170             : 
    2171           0 :     m_nValue = nValue;
    2172           0 :     ImplUpdateValue();
    2173           0 : }
    2174             : 
    2175           0 : void VCLXProgressBar::setRange( sal_Int32 nMin, sal_Int32 nMax ) throw(::com::sun::star::uno::RuntimeException, std::exception )
    2176             : {
    2177           0 :     SolarMutexGuard aGuard;
    2178             : 
    2179           0 :     if ( nMin < nMax )
    2180             :     {
    2181             :         // take correct min and max
    2182           0 :         m_nValueMin = nMin;
    2183           0 :         m_nValueMax = nMax;
    2184             :     }
    2185             :     else
    2186             :     {
    2187             :         // change min and max
    2188           0 :         m_nValueMin = nMax;
    2189           0 :         m_nValueMax = nMin;
    2190             :     }
    2191             : 
    2192           0 :     ImplUpdateValue();
    2193           0 : }
    2194             : 
    2195           0 : sal_Int32 VCLXProgressBar::getValue() throw(::com::sun::star::uno::RuntimeException, std::exception)
    2196             : {
    2197           0 :     SolarMutexGuard aGuard;
    2198             : 
    2199           0 :     return m_nValue;
    2200             : }
    2201             : 
    2202             : // ::com::sun::star::awt::VclWindowPeer
    2203           0 : void VCLXProgressBar::setProperty( const OUString& PropertyName, const ::com::sun::star::uno::Any& Value) throw(::com::sun::star::uno::RuntimeException, std::exception)
    2204             : {
    2205           0 :     SolarMutexGuard aGuard;
    2206             : 
    2207           0 :     ProgressBar* pProgressBar = (ProgressBar*)GetWindow();
    2208           0 :     if ( pProgressBar )
    2209             :     {
    2210           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
    2211           0 :         switch ( nPropType )
    2212             :         {
    2213             :             case BASEPROPERTY_PROGRESSVALUE:
    2214             :             {
    2215           0 :                 if ( Value >>= m_nValue )
    2216           0 :                     ImplUpdateValue();
    2217             :             }
    2218           0 :             break;
    2219             :             case BASEPROPERTY_PROGRESSVALUE_MIN:
    2220             :             {
    2221           0 :                 if ( Value >>= m_nValueMin )
    2222           0 :                     ImplUpdateValue();
    2223             :             }
    2224           0 :             break;
    2225             :             case BASEPROPERTY_PROGRESSVALUE_MAX:
    2226             :             {
    2227           0 :                 if ( Value >>= m_nValueMax )
    2228           0 :                     ImplUpdateValue();
    2229             :             }
    2230           0 :             break;
    2231             :             case BASEPROPERTY_FILLCOLOR:
    2232             :             {
    2233           0 :                 Window* pWindow = GetWindow();
    2234           0 :                 if ( pWindow )
    2235             :                 {
    2236           0 :                     sal_Bool bVoid = Value.getValueType().getTypeClass() == ::com::sun::star::uno::TypeClass_VOID;
    2237             : 
    2238           0 :                     if ( bVoid )
    2239             :                     {
    2240           0 :                         pWindow->SetControlForeground();
    2241             :                     }
    2242             :                     else
    2243             :                     {
    2244           0 :                         sal_Int32 nColor = 0;
    2245           0 :                         if ( Value >>= nColor )
    2246             :                         {
    2247           0 :                             Color aColor( nColor );
    2248           0 :                             pWindow->SetControlForeground( aColor );
    2249             :                         }
    2250             :                     }
    2251             :                 }
    2252             :             }
    2253           0 :             break;
    2254             :             default:
    2255           0 :                 VCLXWindow::setProperty( PropertyName, Value );
    2256           0 :                 break;
    2257             :         }
    2258           0 :     }
    2259           0 : }
    2260             : 
    2261           0 : ::com::sun::star::uno::Any VCLXProgressBar::getProperty( const OUString& PropertyName ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    2262             : {
    2263           0 :     SolarMutexGuard aGuard;
    2264             : 
    2265           0 :     ::com::sun::star::uno::Any aProp;
    2266           0 :     ProgressBar* pProgressBar = (ProgressBar*)GetWindow();
    2267           0 :     if ( pProgressBar )
    2268             :     {
    2269           0 :         sal_uInt16 nPropType = GetPropertyId( PropertyName );
    2270           0 :         switch ( nPropType )
    2271             :         {
    2272             :             case BASEPROPERTY_PROGRESSVALUE:
    2273             :             {
    2274           0 :                  aProp <<= m_nValue;
    2275             :             }
    2276           0 :             break;
    2277             :             case BASEPROPERTY_PROGRESSVALUE_MIN:
    2278             :             {
    2279           0 :                  aProp <<= m_nValueMin;
    2280             :             }
    2281           0 :             break;
    2282             :             case BASEPROPERTY_PROGRESSVALUE_MAX:
    2283             :             {
    2284           0 :                  aProp <<= m_nValueMax;
    2285             :             }
    2286           0 :             break;
    2287             :             default:
    2288           0 :                 aProp <<= VCLXWindow::getProperty( PropertyName );
    2289           0 :                 break;
    2290             :         }
    2291             :     }
    2292           0 :     return aProp;
    2293             : }
    2294             : 
    2295           0 : void VCLXProgressBar::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
    2296             : {
    2297             :     PushPropertyIds( rIds,
    2298             :                      BASEPROPERTY_PROGRESSVALUE,
    2299             :                      BASEPROPERTY_PROGRESSVALUE_MIN,
    2300             :                      BASEPROPERTY_PROGRESSVALUE_MAX,
    2301             :                      BASEPROPERTY_FILLCOLOR,
    2302           0 :                      0);
    2303           0 :     VCLXWindow::ImplGetPropertyIds( rIds, true );
    2304           0 : }
    2305             : 
    2306             : 
    2307             : 
    2308             : //  class SVTXDateField
    2309             : 
    2310           0 : SVTXDateField::SVTXDateField()
    2311           0 :     :VCLXDateField()
    2312             : {
    2313           0 : }
    2314             : 
    2315           0 : SVTXDateField::~SVTXDateField()
    2316             : {
    2317           0 : }
    2318             : 
    2319           0 : void SAL_CALL SVTXDateField::setProperty( const OUString& PropertyName, const ::com::sun::star::uno::Any& Value ) throw(::com::sun::star::uno::RuntimeException, std::exception)
    2320             : {
    2321           0 :     VCLXDateField::setProperty( PropertyName, Value );
    2322             : 
    2323             :     // some properties need to be forwarded to the sub edit, too
    2324           0 :     Edit* pSubEdit = GetWindow() ? static_cast< Edit* >( GetWindow() )->GetSubEdit() : NULL;
    2325           0 :     if ( !pSubEdit )
    2326           0 :         return;
    2327             : 
    2328           0 :     switch ( GetPropertyId( PropertyName ) )
    2329             :     {
    2330             :     case BASEPROPERTY_TEXTLINECOLOR:
    2331           0 :         if ( !Value.hasValue() )
    2332           0 :             pSubEdit->SetTextLineColor();
    2333             :         else
    2334             :         {
    2335           0 :             sal_Int32 nColor = 0;
    2336           0 :             if ( Value >>= nColor )
    2337           0 :                 pSubEdit->SetTextLineColor( Color( nColor ) );
    2338             :         }
    2339           0 :         break;
    2340             :     }
    2341             : }
    2342             : 
    2343           0 : void SVTXDateField::ImplGetPropertyIds( std::list< sal_uInt16 > &rIds )
    2344             : {
    2345             :     PushPropertyIds( rIds,
    2346             :                      BASEPROPERTY_TEXTLINECOLOR,
    2347           0 :                      0);
    2348           0 :     VCLXDateField::ImplGetPropertyIds( rIds );
    2349           0 : }
    2350             : 
    2351             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10