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

Generated by: LCOV version 1.11