LCOV - code coverage report
Current view: top level - libreoffice/svx/source/tbxctrls - extrusioncontrols.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 425 0.2 %
Date: 2012-12-27 Functions: 1 66 1.5 %
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 <string>
      22             : 
      23             : #include <com/sun/star/util/XURLTransformer.hpp>
      24             : #include <com/sun/star/awt/MenuItemStyle.hpp>
      25             : #include <com/sun/star/awt/XPopupMenuExtended.hpp>
      26             : #include <com/sun/star/graphic/XGraphic.hpp>
      27             : 
      28             : #include <osl/mutex.hxx>
      29             : 
      30             : #include <svtools/toolbarmenu.hxx>
      31             : #include <vcl/toolbox.hxx>
      32             : #include <sfx2/app.hxx>
      33             : #include <sfx2/dispatch.hxx>
      34             : #include <sfx2/objsh.hxx>
      35             : #include <svl/eitem.hxx>
      36             : #include <vcl/settings.hxx>
      37             : #include <svl/intitem.hxx>
      38             : #include <editeng/colritem.hxx>
      39             : 
      40             : #include <svx/dialogs.hrc>
      41             : #include <svx/svdtrans.hxx>
      42             : #include <svx/sdasitm.hxx>
      43             : #include <svx/dialmgr.hxx>
      44             : #include "svx/extrusioncolorcontrol.hxx"
      45             : 
      46             : #include "helpid.hrc"
      47             : #include "extrusioncontrols.hxx"
      48             : #include "extrusioncontrols.hrc"
      49             : #include "colorwindow.hxx"
      50             : #include "extrusiondepthdialog.hxx"
      51             : 
      52             : ////////////
      53             : 
      54             : using ::rtl::OUString;
      55             : //using ::svtools::ToolbarMenu;
      56             : 
      57             : using namespace ::com::sun::star;
      58             : using namespace ::com::sun::star::uno;
      59             : using namespace ::com::sun::star::lang;
      60             : using namespace ::com::sun::star::beans;
      61             : using namespace ::com::sun::star::util;
      62             : using namespace ::com::sun::star::graphic;
      63             : 
      64             : namespace svx
      65             : {
      66             : 
      67             : /*************************************************************************
      68             : |*
      69             : |* ExtrusionDirectionWindow
      70             : |*
      71             : \************************************************************************/
      72             : 
      73             : static sal_Int32 gSkewList[] = { 135, 90, 45, 180, 0, -360, -135, -90, -45 };
      74             : 
      75           0 : ExtrusionDirectionWindow::ExtrusionDirectionWindow(
      76             :     svt::ToolboxController& rController,
      77             :     const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame,
      78             :     Window* pParentWindow
      79             : )
      80           0 : :   ToolbarMenu( rFrame, pParentWindow, SVX_RES( RID_SVXFLOAT_EXTRUSION_DIRECTION )) ,
      81             :     mrController( rController ) ,
      82           0 :     maImgPerspective( SVX_RES( IMG_PERSPECTIVE ) ) ,
      83           0 :     maImgParallel(    SVX_RES( IMG_PARALLEL    ) ) ,
      84             :     msExtrusionDirection(  RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionDirection"  ) ) ,
      85           0 :     msExtrusionProjection( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionProjection" ) )
      86             : {
      87           0 :     SetHelpId( HID_MENU_EXTRUSION_DIRECTION );
      88             : 
      89             :     sal_uInt16 i;
      90           0 :     for( i = DIRECTION_NW; i <= DIRECTION_SE; i++ )
      91             :     {
      92           0 :         maImgDirection[i] = Image( SVX_RES( IMG_DIRECTION + i ) );
      93             :     }
      94             : 
      95           0 :     SetSelectHdl( LINK( this, ExtrusionDirectionWindow, SelectHdl ) );
      96           0 :     mpDirectionSet = createEmptyValueSetControl();
      97           0 :     mpDirectionSet->SetHelpId( HID_VALUESET_EXTRUSION_DIRECTION );
      98             : 
      99           0 :     mpDirectionSet->SetSelectHdl( LINK( this, ExtrusionDirectionWindow, SelectHdl ) );
     100           0 :     mpDirectionSet->SetColCount( 3 );
     101           0 :     mpDirectionSet->EnableFullItemMode( sal_False );
     102             : 
     103           0 :     for( i = DIRECTION_NW; i <= DIRECTION_SE; i++ )
     104             :     {
     105           0 :         String aText( SVX_RES( STR_DIRECTION + i ) );
     106           0 :         mpDirectionSet->InsertItem( i+1, maImgDirection[ i ], aText );
     107           0 :     }
     108             : 
     109           0 :     mpDirectionSet->SetOutputSizePixel( Size( 72, 72 ) );
     110             : 
     111           0 :     appendEntry( 2, mpDirectionSet );
     112           0 :     appendSeparator();
     113           0 :     appendEntry( 0, String( SVX_RES( STR_PERSPECTIVE ) ), maImgPerspective );
     114           0 :     appendEntry( 1, String( SVX_RES( STR_PARALLEL    ) ), maImgParallel    );
     115             : 
     116           0 :     SetOutputSizePixel( getMenuSize() );
     117             : 
     118           0 :     FreeResource();
     119             : 
     120           0 :     AddStatusListener( msExtrusionDirection );
     121           0 :     AddStatusListener( msExtrusionProjection );
     122           0 : }
     123             : 
     124           0 : void ExtrusionDirectionWindow::DataChanged( const DataChangedEvent& rDCEvt )
     125             : {
     126           0 :     ToolbarMenu::DataChanged( rDCEvt );
     127             : 
     128           0 :     if( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
     129             :     {
     130           0 :         for( sal_uInt16 i = DIRECTION_NW; i <= DIRECTION_SE; i++ )
     131             :         {
     132           0 :             mpDirectionSet->SetItemImage( i+1, maImgDirection[ i ] );
     133             :         }
     134             : 
     135           0 :         setEntryImage( 0, maImgPerspective );
     136           0 :         setEntryImage( 1, maImgParallel );
     137             :     }
     138           0 : }
     139             : 
     140             : // -----------------------------------------------------------------------
     141             : 
     142           0 : void ExtrusionDirectionWindow::implSetDirection( sal_Int32 nSkew, bool bEnabled )
     143             : {
     144           0 :     if( mpDirectionSet )
     145             :     {
     146             :         sal_uInt16 nItemId;
     147           0 :         for( nItemId = DIRECTION_NW; nItemId <= DIRECTION_SE; nItemId++ )
     148             :         {
     149           0 :             if( gSkewList[nItemId] == nSkew )
     150           0 :                 break;
     151             :         }
     152             : 
     153           0 :         if( nItemId <= DIRECTION_SE )
     154             :         {
     155           0 :             mpDirectionSet->SelectItem( nItemId+1 );
     156             :         }
     157             :         else
     158             :         {
     159           0 :             mpDirectionSet->SetNoSelection();
     160             :         }
     161             :     }
     162           0 :     enableEntry( 2, bEnabled );
     163           0 : }
     164             : 
     165             : // -----------------------------------------------------------------------
     166             : 
     167           0 : void ExtrusionDirectionWindow::implSetProjection( sal_Int32 nProjection, bool bEnabled )
     168             : {
     169           0 :     checkEntry( 0, (nProjection == 0) && bEnabled );
     170           0 :     checkEntry( 1, (nProjection == 1 ) && bEnabled );
     171           0 :     enableEntry( 0, bEnabled );
     172           0 :     enableEntry( 1, bEnabled );
     173           0 : }
     174             : 
     175             : // -----------------------------------------------------------------------
     176             : 
     177           0 : void SAL_CALL ExtrusionDirectionWindow::statusChanged(
     178             :     const ::com::sun::star::frame::FeatureStateEvent& Event
     179             : )   throw ( ::com::sun::star::uno::RuntimeException )
     180             : {
     181           0 :     if( Event.FeatureURL.Main.equals( msExtrusionDirection ) )
     182             :     {
     183           0 :         if( !Event.IsEnabled )
     184             :         {
     185           0 :             implSetDirection( -1, false );
     186             :         }
     187             :         else
     188             :         {
     189           0 :             sal_Int32 nValue = 0;
     190           0 :             if( Event.State >>= nValue )
     191           0 :                 implSetDirection( nValue, true );
     192             :         }
     193             :     }
     194           0 :     else if( Event.FeatureURL.Main.equals( msExtrusionProjection ) )
     195             :     {
     196           0 :         if( !Event.IsEnabled )
     197             :         {
     198           0 :             implSetProjection( -1, false );
     199             :         }
     200             :         else
     201             :         {
     202           0 :             sal_Int32 nValue = 0;
     203           0 :             if( Event.State >>= nValue )
     204           0 :                 implSetProjection( nValue, true );
     205             :         }
     206             :     }
     207           0 : }
     208             : 
     209             : // -----------------------------------------------------------------------
     210             : 
     211           0 : IMPL_LINK( ExtrusionDirectionWindow, SelectHdl, void *, pControl )
     212             : {
     213           0 :     if ( IsInPopupMode() )
     214           0 :         EndPopupMode();
     215             : 
     216           0 :     if( pControl == mpDirectionSet )
     217             :     {
     218           0 :         Sequence< PropertyValue > aArgs( 1 );
     219           0 :         aArgs[0].Name = msExtrusionDirection.copy(5);
     220           0 :         aArgs[0].Value <<= (sal_Int32)gSkewList[mpDirectionSet->GetSelectItemId()-1];
     221             : 
     222           0 :         mrController.dispatchCommand( msExtrusionDirection, aArgs );
     223             :     }
     224             :     else
     225             :     {
     226           0 :         int nProjection = getSelectedEntryId();
     227           0 :         if( (nProjection >= 0) && (nProjection < 2 ) )
     228             :         {
     229           0 :             Sequence< PropertyValue > aArgs( 1 );
     230           0 :             aArgs[0].Name = msExtrusionProjection.copy(5);
     231           0 :             aArgs[0].Value <<= (sal_Int32)nProjection;
     232             : 
     233           0 :             mrController.dispatchCommand( msExtrusionProjection, aArgs );
     234           0 :             implSetProjection( nProjection, true );
     235             :         }
     236             :     }
     237             : 
     238           0 :     return 0;
     239             : }
     240             : 
     241             : // =======================================================================
     242             : // ExtrusionDirectionControl
     243             : // =======================================================================
     244             : 
     245           0 : ExtrusionDirectionControl::ExtrusionDirectionControl(
     246             :     const Reference< lang::XMultiServiceFactory >& rServiceManager
     247             : )   : svt::PopupWindowController(
     248             :         rServiceManager,
     249             :         Reference< frame::XFrame >(),
     250             :         OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionDirectionFloater" ) )
     251           0 :     )
     252             : {
     253           0 : }
     254             : 
     255             : // -----------------------------------------------------------------------
     256             : 
     257           0 : ::Window* ExtrusionDirectionControl::createPopupWindow( ::Window* pParent )
     258             : {
     259           0 :     return new ExtrusionDirectionWindow( *this, m_xFrame, pParent );
     260             : }
     261             : 
     262             : // -----------------------------------------------------------------------
     263             : // XServiceInfo
     264             : // -----------------------------------------------------------------------
     265             : 
     266           0 : OUString SAL_CALL ExtrusionDirectionControl_getImplementationName()
     267             : {
     268           0 :     return OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svx.ExtrusionDirectionController" ));
     269             : }
     270             : 
     271             : // --------------------------------------------------------------------
     272             : 
     273           0 : Sequence< OUString > SAL_CALL ExtrusionDirectionControl_getSupportedServiceNames() throw( RuntimeException )
     274             : {
     275           0 :     Sequence< OUString > aSNS( 1 );
     276           0 :     aSNS.getArray()[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.ToolbarController" ));
     277           0 :     return aSNS;
     278             : }
     279             : 
     280             : // --------------------------------------------------------------------
     281             : 
     282           0 : Reference< XInterface > SAL_CALL SAL_CALL ExtrusionDirectionControl_createInstance(
     283             :     const Reference< XMultiServiceFactory >& rSMgr
     284             : )   throw( RuntimeException )
     285             : {
     286           0 :     return *new ExtrusionDirectionControl( rSMgr );
     287             : }
     288             : 
     289             : // --------------------------------------------------------------------
     290             : 
     291           0 : OUString SAL_CALL ExtrusionDirectionControl::getImplementationName(  ) throw (RuntimeException)
     292             : {
     293           0 :     return ExtrusionDirectionControl_getImplementationName();
     294             : }
     295             : 
     296             : // --------------------------------------------------------------------
     297             : 
     298           0 : Sequence< OUString > SAL_CALL ExtrusionDirectionControl::getSupportedServiceNames(  ) throw (RuntimeException)
     299             : {
     300           0 :     return ExtrusionDirectionControl_getSupportedServiceNames();
     301             : }
     302             : 
     303             : // ####################################################################
     304             : 
     305           0 : ExtrusionDepthDialog::ExtrusionDepthDialog( Window* pParent, double fDepth, FieldUnit eDefaultUnit )
     306           0 : :   ModalDialog( pParent, SVX_RES( RID_SVX_MDLG_EXTRUSION_DEPTH ) ),
     307           0 :     maFLDepth( this, SVX_RES( FL_DEPTH ) ),
     308           0 :     maMtrDepth( this, SVX_RES( MTR_DEPTH ) ),
     309           0 :     maOKButton( this, SVX_RES( BTN_OK ) ),
     310           0 :     maCancelButton( this, SVX_RES( BTN_CANCEL ) ),
     311           0 :     maHelpButton( this, SVX_RES( BTN_HELP ) )
     312             : {
     313           0 :     bool bMetric = IsMetric( eDefaultUnit );
     314           0 :     maMtrDepth.SetUnit( bMetric ? FUNIT_CM : FUNIT_INCH );
     315           0 :     maMtrDepth.SetValue( (int) fDepth * 100, FUNIT_100TH_MM );
     316             : 
     317           0 :     FreeResource();
     318           0 : }
     319             : 
     320           0 : ExtrusionDepthDialog::~ExtrusionDepthDialog()
     321             : {
     322           0 : }
     323             : 
     324           0 : double ExtrusionDepthDialog::getDepth() const
     325             : {
     326           0 :     return (double)( maMtrDepth.GetValue( FUNIT_100TH_MM ) ) / 100.0;
     327             : }
     328             : 
     329             : // ####################################################################
     330             : 
     331             : double aDepthListInch[] = { 0, 1270,2540,5080,10160 };
     332             : double aDepthListMM[] = { 0, 1000, 2500, 5000, 10000 };
     333             : 
     334           0 : ExtrusionDepthWindow::ExtrusionDepthWindow(
     335             :     svt::ToolboxController& rController,
     336             :     const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame,
     337             :     Window* pParentWindow
     338           0 : )   : ToolbarMenu( rFrame, pParentWindow, SVX_RES( RID_SVXFLOAT_EXTRUSION_DEPTH ))
     339             :     , mrController( rController )
     340           0 :     , maImgDepth0( SVX_RES( IMG_DEPTH_0 ) )
     341           0 :     , maImgDepth1( SVX_RES( IMG_DEPTH_1 ) )
     342           0 :     , maImgDepth2( SVX_RES( IMG_DEPTH_2 ) )
     343           0 :     , maImgDepth3( SVX_RES( IMG_DEPTH_3 ) )
     344           0 :     , maImgDepth4( SVX_RES( IMG_DEPTH_4 ) )
     345           0 :     , maImgDepthInfinity( SVX_RES( IMG_DEPTH_INFINITY ) )
     346             :     , mfDepth( -1.0 )
     347             :     , msExtrusionDepth( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionDepth" ) )
     348           0 :     , msMetricUnit(     RTL_CONSTASCII_USTRINGPARAM( ".uno:MetricUnit"     ) )
     349             : {
     350           0 :     SetHelpId( HID_MENU_EXTRUSION_DEPTH );
     351             : 
     352           0 :     SetSelectHdl( LINK( this, ExtrusionDepthWindow, SelectHdl ) );
     353             : 
     354           0 :     String aEmpty;
     355           0 :     appendEntry( 0, aEmpty, maImgDepth0 );
     356           0 :     appendEntry( 1, aEmpty, maImgDepth1 );
     357           0 :     appendEntry( 2, aEmpty, maImgDepth2 );
     358           0 :     appendEntry( 3, aEmpty, maImgDepth3 );
     359           0 :     appendEntry( 4, aEmpty, maImgDepth4 );
     360           0 :     appendEntry( 5, String( SVX_RES( STR_INFINITY ) ), maImgDepthInfinity );
     361           0 :     appendEntry( 6, String( SVX_RES( STR_CUSTOM ) ) );
     362             : 
     363           0 :     SetOutputSizePixel( getMenuSize() );
     364             : 
     365           0 :     FreeResource();
     366             : 
     367           0 :     AddStatusListener( msExtrusionDepth );
     368           0 :     AddStatusListener( msMetricUnit );
     369           0 : }
     370             : 
     371             : // -----------------------------------------------------------------------
     372             : 
     373           0 : void ExtrusionDepthWindow::implSetDepth( double fDepth )
     374             : {
     375           0 :     mfDepth = fDepth;
     376             :     int i;
     377           0 :     for( i = 0; i < 7; i++ )
     378             :     {
     379           0 :         if( i == 5 )
     380             :         {
     381           0 :             checkEntry( i, fDepth >= 338666 );
     382             :         }
     383           0 :         else if( i != 6 )
     384             :         {
     385           0 :             checkEntry( i, (fDepth == (IsMetric( meUnit ) ? aDepthListMM[i] : aDepthListInch[i]) ) );
     386             :         }
     387             :     }
     388           0 : }
     389             : 
     390             : // -----------------------------------------------------------------------
     391             : 
     392           0 : void ExtrusionDepthWindow::implFillStrings( FieldUnit eUnit )
     393             : {
     394           0 :     meUnit = eUnit;
     395           0 :     sal_uInt16 nResource = IsMetric( eUnit ) ? RID_SVXSTR_DEPTH_0 : RID_SVXSTR_DEPTH_0_INCH;
     396             : 
     397           0 :     for( int i = 0; i < 5; i++ )
     398             :     {
     399           0 :         String aStr( SVX_RES( nResource + i ) );
     400           0 :         setEntryText( i, aStr );
     401           0 :     };
     402           0 : }
     403             : 
     404             : // -----------------------------------------------------------------------
     405             : 
     406           0 : void SAL_CALL ExtrusionDepthWindow::statusChanged(
     407             :     const ::com::sun::star::frame::FeatureStateEvent& Event
     408             : )   throw ( ::com::sun::star::uno::RuntimeException )
     409             : {
     410           0 :     if( Event.FeatureURL.Main.equals( msExtrusionDepth ) )
     411             :     {
     412           0 :         if( !Event.IsEnabled )
     413             :         {
     414           0 :             implSetDepth( 0 );
     415             :         }
     416             :         else
     417             :         {
     418           0 :             double fValue = 0.0;
     419           0 :             if( Event.State >>= fValue )
     420           0 :                 implSetDepth( fValue );
     421             :         }
     422             :     }
     423           0 :     else if( Event.FeatureURL.Main.equals( msMetricUnit ) )
     424             :     {
     425           0 :         if( Event.IsEnabled )
     426             :         {
     427           0 :             sal_Int32 nValue = 0;
     428           0 :             if( Event.State >>= nValue )
     429             :             {
     430           0 :                 implFillStrings( static_cast<FieldUnit>(nValue) );
     431           0 :                 if( mfDepth >= 0.0 )
     432           0 :                     implSetDepth( mfDepth );
     433             :             }
     434             :         }
     435             :     }
     436           0 : }
     437             : 
     438             : // -----------------------------------------------------------------------
     439             : 
     440           0 : void ExtrusionDepthWindow::DataChanged( const DataChangedEvent& rDCEvt )
     441             : {
     442           0 :     ToolbarMenu::DataChanged( rDCEvt );
     443             : 
     444           0 :     if( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
     445             :     {
     446           0 :         setEntryImage( 0, maImgDepth0 );
     447           0 :         setEntryImage( 1, maImgDepth1 );
     448           0 :         setEntryImage( 2, maImgDepth2 );
     449           0 :         setEntryImage( 3, maImgDepth3 );
     450           0 :         setEntryImage( 4, maImgDepth4 );
     451           0 :         setEntryImage( 5, maImgDepthInfinity );
     452             :     }
     453           0 : }
     454             : 
     455             : 
     456             : // -----------------------------------------------------------------------
     457             : 
     458           0 : IMPL_LINK_NOARG(ExtrusionDepthWindow, SelectHdl)
     459             : {
     460           0 :     int nSelected = getSelectedEntryId();
     461           0 :     if( nSelected != -1 )
     462             :     {
     463           0 :         if( nSelected == 6 )
     464             :         {
     465           0 :             if ( IsInPopupMode() )
     466           0 :                 EndPopupMode();
     467             : 
     468           0 :             const rtl::OUString aCommand( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionDepthDialog" ));
     469             : 
     470           0 :             Any a;
     471           0 :             Sequence< PropertyValue > aArgs( 2 );
     472           0 :             aArgs[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Depth" ));
     473           0 :             aArgs[0].Value <<= mfDepth;
     474           0 :             aArgs[1].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Metric" ));
     475           0 :             aArgs[1].Value <<= static_cast<sal_Int32>( meUnit );
     476             : 
     477           0 :             mrController.dispatchCommand( aCommand, aArgs );
     478             :         }
     479             :         else
     480             :         {
     481             :             double fDepth;
     482             : 
     483           0 :             if( nSelected == 5 )
     484             :             {
     485           0 :                 fDepth = 338666.6;
     486             :             }
     487             :             else
     488             :             {
     489           0 :                 fDepth = IsMetric( meUnit ) ? aDepthListMM[nSelected] : aDepthListInch[nSelected];
     490             :             }
     491             : 
     492           0 :             Sequence< PropertyValue > aArgs( 1 );
     493           0 :             aArgs[0].Name = msExtrusionDepth.copy(5);
     494           0 :             aArgs[0].Value <<= fDepth;
     495             : 
     496           0 :             mrController.dispatchCommand( msExtrusionDepth,  aArgs );
     497           0 :             implSetDepth( fDepth );
     498             : 
     499           0 :             if ( IsInPopupMode() )
     500           0 :                 EndPopupMode();
     501             :         }
     502             :     }
     503           0 :     return 0;
     504             : }
     505             : 
     506             : // =======================================================================
     507             : // ExtrusionDirectionControl
     508             : // =======================================================================
     509             : 
     510           0 : ExtrusionDepthController::ExtrusionDepthController(
     511             :     const Reference< lang::XMultiServiceFactory >& rServiceManager
     512             : )   : svt::PopupWindowController(
     513             :         rServiceManager,
     514             :         Reference< frame::XFrame >(),
     515             :         OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionDepthFloater" ) )
     516           0 :     )
     517             : {
     518           0 : }
     519             : 
     520             : // -----------------------------------------------------------------------
     521             : 
     522           0 : ::Window* ExtrusionDepthController::createPopupWindow( ::Window* pParent )
     523             : {
     524           0 :     return new ExtrusionDepthWindow( *this, m_xFrame, pParent );
     525             : }
     526             : 
     527             : 
     528             : // -----------------------------------------------------------------------
     529             : // XServiceInfo
     530             : // -----------------------------------------------------------------------
     531             : 
     532           0 : OUString SAL_CALL ExtrusionDepthController_getImplementationName()
     533             : {
     534           0 :     return OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svx.ExtrusionDepthController" ));
     535             : }
     536             : 
     537             : // --------------------------------------------------------------------
     538             : 
     539           0 : Sequence< OUString > SAL_CALL ExtrusionDepthController_getSupportedServiceNames() throw( RuntimeException )
     540             : {
     541           0 :     Sequence< OUString > aSNS( 1 );
     542           0 :     aSNS.getArray()[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.PopupMenuController" ));
     543           0 :     return aSNS;
     544             : }
     545             : 
     546             : // --------------------------------------------------------------------
     547             : 
     548           0 : Reference< XInterface > SAL_CALL SAL_CALL ExtrusionDepthController_createInstance( const Reference< XMultiServiceFactory >& rSMgr ) throw( RuntimeException )
     549             : {
     550           0 :     return *new ExtrusionDepthController( rSMgr );
     551             : }
     552             : 
     553             : // --------------------------------------------------------------------
     554             : 
     555           0 : OUString SAL_CALL ExtrusionDepthController::getImplementationName(  ) throw (RuntimeException)
     556             : {
     557           0 :     return ExtrusionDepthController_getImplementationName();
     558             : }
     559             : 
     560             : // --------------------------------------------------------------------
     561             : 
     562           0 : Sequence< OUString > SAL_CALL ExtrusionDepthController::getSupportedServiceNames(  ) throw (RuntimeException)
     563             : {
     564           0 :     return ExtrusionDepthController_getSupportedServiceNames();
     565             : }
     566             : 
     567             : 
     568             : // ####################################################################
     569             : 
     570             : // -------------------------------------------------------------------------
     571             : 
     572           0 : ExtrusionLightingWindow::ExtrusionLightingWindow( svt::ToolboxController& rController, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, Window* pParentWindow )
     573           0 : : ToolbarMenu( rFrame, pParentWindow, SVX_RES( RID_SVXFLOAT_EXTRUSION_LIGHTING ))
     574             : , mrController( rController )
     575           0 : , maImgBright( SVX_RES( IMG_LIGHTING_BRIGHT ) )
     576           0 : , maImgNormal( SVX_RES( IMG_LIGHTING_NORMAL ) )
     577           0 : , maImgDim(    SVX_RES( IMG_LIGHTING_DIM    ) )
     578             : , mnLevel( 0 )
     579             : , mbLevelEnabled( false )
     580             : , mnDirection( FROM_FRONT )
     581             : , mbDirectionEnabled( false )
     582             : , msExtrusionLightingDirection( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionLightingDirection" ))
     583           0 : , msExtrusionLightingIntensity( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionLightingIntensity" ))
     584             : {
     585             :     sal_uInt16 i;
     586           0 :     for( i = FROM_TOP_LEFT; i <= FROM_BOTTOM_RIGHT; i++ )
     587             :     {
     588           0 :         if( i != FROM_FRONT )
     589             :         {
     590           0 :             maImgLightingOff[  i ] = Image( SVX_RES( IMG_LIGHT_OFF   + i ) );
     591           0 :             maImgLightingOn[   i ] = Image( SVX_RES( IMG_LIGHT_ON    + i ) );
     592             :         }
     593           0 :         maImgLightingPreview[i] = Image( SVX_RES( IMG_LIGHT_PREVIEW + i ) );
     594             :     }
     595             : 
     596           0 :     SetHelpId( HID_MENU_EXTRUSION_LIGHTING );
     597           0 :     SetSelectHdl( LINK( this, ExtrusionLightingWindow, SelectHdl ) );
     598             : 
     599           0 :     mpLightingSet = createEmptyValueSetControl();
     600           0 :     mpLightingSet->SetHelpId( HID_VALUESET_EXTRUSION_LIGHTING );
     601             : 
     602           0 :     mpLightingSet->SetSelectHdl( LINK( this, ExtrusionLightingWindow, SelectHdl ) );
     603           0 :     mpLightingSet->SetColCount( 3 );
     604           0 :     mpLightingSet->EnableFullItemMode( sal_False );
     605             : 
     606           0 :     for( i = FROM_TOP_LEFT; i <= FROM_BOTTOM_RIGHT; i++ )
     607             :     {
     608           0 :         if( i != FROM_FRONT )
     609             :         {
     610           0 :             mpLightingSet->InsertItem( i+1, maImgLightingOff[i] );
     611             :         }
     612             :         else
     613             :         {
     614           0 :             mpLightingSet->InsertItem( 5, maImgLightingPreview[FROM_FRONT] );
     615             :         }
     616             :     }
     617           0 :     mpLightingSet->SetOutputSizePixel( Size( 72, 72 ) );
     618             : 
     619           0 :     appendEntry( 3, mpLightingSet );
     620           0 :     appendSeparator();
     621           0 :     appendEntry( 0, String( SVX_RES( STR_BRIGHT ) ), maImgBright );
     622           0 :     appendEntry( 1, String( SVX_RES( STR_NORMAL ) ), maImgNormal );
     623           0 :     appendEntry( 2, String( SVX_RES( STR_DIM    ) ), maImgDim    );
     624             : 
     625           0 :     SetOutputSizePixel( getMenuSize() );
     626             : 
     627           0 :     FreeResource();
     628             : 
     629           0 :     AddStatusListener( msExtrusionLightingDirection );
     630           0 :     AddStatusListener( msExtrusionLightingIntensity );
     631           0 : }
     632             : 
     633             : // -----------------------------------------------------------------------
     634             : 
     635           0 : void ExtrusionLightingWindow::implSetIntensity( int nLevel, bool bEnabled )
     636             : {
     637           0 :     mnLevel = nLevel;
     638           0 :     mbLevelEnabled = bEnabled;
     639           0 :     int i = 0;
     640           0 :     for( i = 0; i < 3; i++ )
     641             :     {
     642           0 :         checkEntry( i, (i == nLevel) && bEnabled );
     643           0 :         enableEntry( i, bEnabled );
     644             :     }
     645           0 : }
     646             : 
     647             : // -----------------------------------------------------------------------
     648             : 
     649           0 : void ExtrusionLightingWindow::implSetDirection( int nDirection, bool bEnabled )
     650             : {
     651           0 :     mnDirection = nDirection;
     652           0 :     mbDirectionEnabled = bEnabled;
     653             : 
     654           0 :     if( !bEnabled )
     655           0 :         nDirection = FROM_FRONT;
     656             : 
     657             :     sal_uInt16 nItemId;
     658           0 :     for( nItemId = FROM_TOP_LEFT; nItemId <= FROM_BOTTOM_RIGHT; nItemId++ )
     659             :     {
     660           0 :         if( nItemId == FROM_FRONT )
     661             :         {
     662           0 :             mpLightingSet->SetItemImage( nItemId + 1, maImgLightingPreview[ nDirection ] );
     663             :         }
     664             :         else
     665             :         {
     666             :             mpLightingSet->SetItemImage(
     667             :                 nItemId + 1,
     668           0 :                 (sal_uInt16)nDirection == nItemId ? maImgLightingOn[nItemId] : maImgLightingOff[nItemId]
     669           0 :             );
     670             :         }
     671             :     }
     672             : 
     673           0 :     enableEntry( 3, bEnabled );
     674           0 : }
     675             : 
     676             : // -----------------------------------------------------------------------
     677             : 
     678           0 : void SAL_CALL ExtrusionLightingWindow::statusChanged(
     679             :     const ::com::sun::star::frame::FeatureStateEvent& Event
     680             : )   throw ( ::com::sun::star::uno::RuntimeException )
     681             : {
     682           0 :     if( Event.FeatureURL.Main.equals( msExtrusionLightingIntensity ) )
     683             :     {
     684           0 :         if( !Event.IsEnabled )
     685             :         {
     686           0 :             implSetIntensity( 0, false );
     687             :         }
     688             :         else
     689             :         {
     690           0 :             sal_Int32 nValue = 0;
     691           0 :             if( Event.State >>= nValue )
     692           0 :                 implSetIntensity( nValue, true );
     693             :         }
     694             :     }
     695           0 :     else if( Event.FeatureURL.Main.equals( msExtrusionLightingDirection ) )
     696             :     {
     697           0 :         if( !Event.IsEnabled )
     698             :         {
     699           0 :             implSetDirection( 0, false );
     700             :         }
     701             :         else
     702             :         {
     703           0 :             sal_Int32 nValue = 0;
     704           0 :             if( Event.State >>= nValue )
     705           0 :                 implSetDirection( nValue, true );
     706             :         }
     707             :     }
     708           0 : }
     709             : 
     710             : // -----------------------------------------------------------------------
     711             : 
     712           0 : void ExtrusionLightingWindow::DataChanged( const DataChangedEvent& rDCEvt )
     713             : {
     714           0 :     ToolbarMenu::DataChanged( rDCEvt );
     715             : 
     716           0 :     if( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
     717             :     {
     718           0 :         implSetDirection( mnDirection, mbDirectionEnabled );
     719           0 :         setEntryImage( 0, maImgBright );
     720           0 :         setEntryImage( 1, maImgNormal );
     721           0 :         setEntryImage( 2, maImgDim    );
     722             :     }
     723           0 : }
     724             : 
     725             : // -----------------------------------------------------------------------
     726             : 
     727           0 : IMPL_LINK( ExtrusionLightingWindow, SelectHdl, void *, pControl )
     728             : {
     729           0 :     if ( IsInPopupMode() )
     730           0 :         EndPopupMode();
     731             : 
     732           0 :     if( pControl == this )
     733             :     {
     734           0 :         int nLevel = getSelectedEntryId();
     735           0 :         if( nLevel >= 0 )
     736             :         {
     737           0 :             if( nLevel != 3 )
     738             :             {
     739           0 :                 Sequence< PropertyValue > aArgs( 1 );
     740           0 :                 aArgs[0].Name = msExtrusionLightingIntensity.copy(5);
     741           0 :                 aArgs[0].Value <<= (sal_Int32)nLevel;
     742             : 
     743           0 :                 mrController.dispatchCommand( msExtrusionLightingIntensity, aArgs );
     744             : 
     745           0 :                 implSetIntensity( nLevel, true );
     746             :             }
     747             :         }
     748             :     }
     749             :     else
     750             :     {
     751           0 :         sal_Int32 nDirection = mpLightingSet->GetSelectItemId();
     752             : 
     753           0 :         if( (nDirection > 0) && (nDirection < 10) )
     754             :         {
     755           0 :             nDirection--;
     756             : 
     757           0 :             Sequence< PropertyValue > aArgs( 1 );
     758           0 :             aArgs[0].Name = msExtrusionLightingDirection.copy(5);
     759           0 :             aArgs[0].Value <<= (sal_Int32)nDirection;
     760             : 
     761           0 :             mrController.dispatchCommand( msExtrusionLightingDirection, aArgs );
     762             : 
     763           0 :             implSetDirection( nDirection, true );
     764             :         }
     765             : 
     766             :     }
     767             : 
     768           0 :     return 0;
     769             : }
     770             : 
     771             : // ========================================================================
     772             : 
     773           0 : ExtrusionLightingControl::ExtrusionLightingControl(
     774             :     const Reference< lang::XMultiServiceFactory >& rServiceManager
     775             : )   : svt::PopupWindowController( rServiceManager,
     776             :                 Reference< frame::XFrame >(),
     777             :                 OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionDirectionFloater" ) )
     778           0 :     )
     779             : {
     780           0 : }
     781             : 
     782             : // -----------------------------------------------------------------------
     783             : 
     784           0 : ::Window* ExtrusionLightingControl::createPopupWindow( ::Window* pParent )
     785             : {
     786           0 :     return new ExtrusionLightingWindow( *this, m_xFrame, pParent );
     787             : }
     788             : 
     789             : // -----------------------------------------------------------------------
     790             : // XServiceInfo
     791             : // -----------------------------------------------------------------------
     792             : 
     793           0 : OUString SAL_CALL ExtrusionLightingControl_getImplementationName()
     794             : {
     795           0 :     return OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svx.ExtrusionLightingController" ));
     796             : }
     797             : 
     798             : // --------------------------------------------------------------------
     799             : 
     800           0 : Sequence< OUString > SAL_CALL ExtrusionLightingControl_getSupportedServiceNames() throw( RuntimeException )
     801             : {
     802           0 :     Sequence< OUString > aSNS( 1 );
     803           0 :     aSNS.getArray()[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.ToolbarController" ));
     804           0 :     return aSNS;
     805             : }
     806             : 
     807             : // --------------------------------------------------------------------
     808             : 
     809           0 : Reference< XInterface > SAL_CALL SAL_CALL ExtrusionLightingControl_createInstance(
     810             :     const Reference< XMultiServiceFactory >& rSMgr
     811             : )   throw( RuntimeException )
     812             : {
     813           0 :     return *new ExtrusionLightingControl( rSMgr );
     814             : }
     815             : 
     816             : // --------------------------------------------------------------------
     817             : 
     818           0 : OUString SAL_CALL ExtrusionLightingControl::getImplementationName(  ) throw (RuntimeException)
     819             : {
     820           0 :     return ExtrusionLightingControl_getImplementationName();
     821             : }
     822             : 
     823             : // --------------------------------------------------------------------
     824             : 
     825           0 : Sequence< OUString > SAL_CALL ExtrusionLightingControl::getSupportedServiceNames(  ) throw (RuntimeException)
     826             : {
     827           0 :     return ExtrusionLightingControl_getSupportedServiceNames();
     828             : }
     829             : 
     830             : // ####################################################################
     831             : 
     832           0 : ExtrusionSurfaceWindow::ExtrusionSurfaceWindow(
     833             :     svt::ToolboxController& rController,
     834             :     const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame,
     835             :     Window* pParentWindow
     836           0 : )   : ToolbarMenu( rFrame, pParentWindow, SVX_RES( RID_SVXFLOAT_EXTRUSION_SURFACE ) )
     837             :     , mrController( rController )
     838           0 :     , maImgSurface1( SVX_RES( IMG_WIRE_FRAME ) )
     839           0 :     , maImgSurface2( SVX_RES( IMG_MATTE ) )
     840           0 :     , maImgSurface3( SVX_RES( IMG_PLASTIC ) )
     841           0 :     , maImgSurface4( SVX_RES( IMG_METAL ) )
     842           0 :     , msExtrusionSurface( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionSurface" ) )
     843             : {
     844           0 :     SetHelpId( HID_MENU_EXTRUSION_SURFACE );
     845           0 :     SetSelectHdl( LINK( this, ExtrusionSurfaceWindow, SelectHdl ) );
     846             : 
     847           0 :     appendEntry( 0, String( SVX_RES( STR_WIREFRAME ) ), maImgSurface1 );
     848           0 :     appendEntry( 1, String( SVX_RES( STR_MATTE     ) ), maImgSurface2 );
     849           0 :     appendEntry( 2, String( SVX_RES( STR_PLASTIC   ) ), maImgSurface3 );
     850           0 :     appendEntry( 3, String( SVX_RES( STR_METAL     ) ), maImgSurface4 );
     851             : 
     852           0 :     SetOutputSizePixel( getMenuSize() );
     853             : 
     854           0 :     FreeResource();
     855             : 
     856           0 :     AddStatusListener( msExtrusionSurface );
     857           0 : }
     858             : 
     859             : // -----------------------------------------------------------------------
     860             : 
     861           0 : void ExtrusionSurfaceWindow::implSetSurface( int nSurface, bool bEnabled )
     862             : {
     863             :     int i;
     864           0 :     for( i = 0; i < 4; i++ )
     865             :     {
     866           0 :         checkEntry( i, (i == nSurface) && bEnabled );
     867           0 :         enableEntry( i, bEnabled );
     868             :     }
     869           0 : }
     870             : 
     871             : // -----------------------------------------------------------------------
     872             : 
     873           0 : void SAL_CALL ExtrusionSurfaceWindow::statusChanged(
     874             :     const ::com::sun::star::frame::FeatureStateEvent& Event
     875             : )   throw ( ::com::sun::star::uno::RuntimeException )
     876             : {
     877           0 :     if( Event.FeatureURL.Main.equals( msExtrusionSurface ) )
     878             :     {
     879           0 :         if( !Event.IsEnabled )
     880             :         {
     881           0 :             implSetSurface( 0, false );
     882             :         }
     883             :         else
     884             :         {
     885           0 :             sal_Int32 nValue = 0;
     886           0 :             if( Event.State >>= nValue )
     887           0 :                 implSetSurface( nValue, true );
     888             :         }
     889             :     }
     890           0 : }
     891             : 
     892             : // -----------------------------------------------------------------------
     893             : 
     894           0 : IMPL_LINK_NOARG(ExtrusionSurfaceWindow, SelectHdl)
     895             : {
     896           0 :     if ( IsInPopupMode() )
     897           0 :         EndPopupMode();
     898             : 
     899           0 :     sal_Int32 nSurface = getSelectedEntryId();
     900           0 :     if( nSurface >= 0 )
     901             :     {
     902           0 :         Sequence< PropertyValue > aArgs( 1 );
     903           0 :         aArgs[0].Name = msExtrusionSurface.copy(5);
     904           0 :         aArgs[0].Value <<= (sal_Int32)nSurface;
     905             : 
     906           0 :         mrController.dispatchCommand( msExtrusionSurface, aArgs );
     907             : 
     908           0 :         implSetSurface( nSurface, true );
     909             :     }
     910             : 
     911           0 :     return 0;
     912             : }
     913             : 
     914             : // ========================================================================
     915             : 
     916           0 : ExtrusionSurfaceControl::ExtrusionSurfaceControl(
     917             :     const Reference< lang::XMultiServiceFactory >& rServiceManager
     918             : )
     919             : :   svt::PopupWindowController(
     920             :         rServiceManager,
     921             :         Reference< frame::XFrame >(),
     922             :         OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ExtrusionSurfaceFloater" ) )
     923           0 :     )
     924             : {
     925           0 : }
     926             : 
     927             : // -----------------------------------------------------------------------
     928             : 
     929           0 : ::Window* ExtrusionSurfaceControl::createPopupWindow( ::Window* pParent )
     930             : {
     931           0 :     return new ExtrusionSurfaceWindow( *this, m_xFrame, pParent );
     932             : }
     933             : 
     934             : // -----------------------------------------------------------------------
     935             : // XServiceInfo
     936             : // -----------------------------------------------------------------------
     937             : 
     938           0 : OUString SAL_CALL ExtrusionSurfaceControl_getImplementationName()
     939             : {
     940           0 :     return OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svx.ExtrusionSurfaceController" ));
     941             : }
     942             : 
     943             : // --------------------------------------------------------------------
     944             : 
     945           0 : Sequence< OUString > SAL_CALL ExtrusionSurfaceControl_getSupportedServiceNames() throw( RuntimeException )
     946             : {
     947           0 :     Sequence< OUString > aSNS( 1 );
     948           0 :     aSNS.getArray()[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.ToolbarController" ));
     949           0 :     return aSNS;
     950             : }
     951             : 
     952             : // --------------------------------------------------------------------
     953             : 
     954           0 : Reference< XInterface > SAL_CALL SAL_CALL ExtrusionSurfaceControl_createInstance(
     955             :     const Reference< XMultiServiceFactory >& rSMgr
     956             : )   throw( RuntimeException )
     957             : {
     958           0 :     return *new ExtrusionSurfaceControl( rSMgr );
     959             : }
     960             : 
     961             : // --------------------------------------------------------------------
     962             : 
     963           0 : OUString SAL_CALL ExtrusionSurfaceControl::getImplementationName(  ) throw (RuntimeException)
     964             : {
     965           0 :     return ExtrusionSurfaceControl_getImplementationName();
     966             : }
     967             : 
     968             : // --------------------------------------------------------------------
     969             : 
     970           0 : Sequence< OUString > SAL_CALL ExtrusionSurfaceControl::getSupportedServiceNames(  ) throw (RuntimeException)
     971             : {
     972           0 :     return ExtrusionSurfaceControl_getSupportedServiceNames();
     973             : }
     974             : 
     975             : //========================================================================
     976             : 
     977          18 : SFX_IMPL_TOOLBOX_CONTROL( ExtrusionColorControl, SvxColorItem );
     978             : 
     979           0 : ExtrusionColorControl::ExtrusionColorControl(
     980             :     sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rTbx )
     981             : : SfxToolBoxControl ( nSlotId, nId, rTbx ),
     982           0 :   mLastColor( COL_AUTO )
     983             : {
     984           0 :     rTbx.SetItemBits( nId, TIB_DROPDOWNONLY | rTbx.GetItemBits( nId ) );
     985           0 :     mpBtnUpdater = new ToolboxButtonColorUpdater( nSlotId, nId, &GetToolBox(), TBX_UPDATER_MODE_CHAR_COLOR_NEW );
     986           0 : }
     987             : 
     988             : // -----------------------------------------------------------------------
     989             : 
     990           0 : ExtrusionColorControl::~ExtrusionColorControl()
     991             : {
     992           0 :     delete mpBtnUpdater;
     993           0 : }
     994             : 
     995             : // -----------------------------------------------------------------------
     996             : 
     997           0 : SfxPopupWindowType ExtrusionColorControl::GetPopupWindowType() const
     998             : {
     999           0 :     return SFX_POPUPWINDOW_ONCLICK;
    1000             : }
    1001             : 
    1002             : // -----------------------------------------------------------------------
    1003             : 
    1004           0 : SfxPopupWindow* ExtrusionColorControl::CreatePopupWindow()
    1005             : {
    1006             :     SvxColorWindow_Impl* pColorWin = new SvxColorWindow_Impl(
    1007             :         rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:Extrusion3DColor" )),
    1008             :         SID_EXTRUSION_3D_COLOR,
    1009             :         m_xFrame,
    1010           0 :         SVX_RESSTR( RID_SVXSTR_EXTRUSION_COLOR ),
    1011           0 :         &GetToolBox(),
    1012           0 :         mLastColor );
    1013           0 :     pColorWin->StartPopupMode( &GetToolBox(), FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
    1014           0 :     pColorWin->StartSelection();
    1015           0 :     SetPopupWindow( pColorWin );
    1016           0 :     return pColorWin;
    1017             : }
    1018             : 
    1019             : // -----------------------------------------------------------------------
    1020             : 
    1021           0 : void ExtrusionColorControl::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
    1022             : {
    1023           0 :     sal_uInt16 nId = GetId();
    1024           0 :     ToolBox& rTbx = GetToolBox();
    1025             : 
    1026           0 :     if( nSID == SID_EXTRUSION_3D_COLOR )
    1027             :     {
    1028           0 :         const SvxColorItem* pItem = 0;
    1029             : 
    1030           0 :         if( SFX_ITEM_DONTCARE != eState )
    1031           0 :             pItem = PTR_CAST( SvxColorItem, pState );
    1032             : 
    1033           0 :         if ( pItem )
    1034             :         {
    1035           0 :             mpBtnUpdater->Update( pItem->GetValue());
    1036           0 :             mLastColor = pItem->GetValue();
    1037             :         }
    1038             :     }
    1039             : 
    1040           0 :     rTbx.EnableItem( nId, SFX_ITEM_DISABLED != eState );
    1041           0 :     rTbx.SetItemState( nId, ( SFX_ITEM_DONTCARE == eState ) ? STATE_DONTKNOW : STATE_NOCHECK );
    1042           0 : }
    1043             : 
    1044             : }
    1045             : 
    1046             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10