LCOV - code coverage report
Current view: top level - cui/source/tabpages - tpshadow.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 254 0.0 %
Date: 2014-04-14 Functions: 0 16 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #include <tools/shl.hxx>
      21             : #include <sfx2/app.hxx>
      22             : #include <sfx2/module.hxx>
      23             : #include <svx/dialogs.hrc>
      24             : 
      25             : #include "svx/xattr.hxx"
      26             : #include <svx/xpool.hxx>
      27             : #include <cuires.hrc>
      28             : #include <svx/svdattr.hxx>
      29             : #include "svx/drawitem.hxx"
      30             : #include "cuitabarea.hxx"
      31             : #include <dialmgr.hxx>
      32             : #include "svx/dlgutil.hxx"
      33             : #include <cuitabline.hxx>
      34             : #include "paragrph.hrc"
      35             : #include <svx/xlineit0.hxx>
      36             : #include <sfx2/request.hxx>
      37             : 
      38             : static sal_uInt16 pShadowRanges[] =
      39             : {
      40             :     SDRATTR_SHADOWCOLOR,
      41             :     SDRATTR_SHADOWTRANSPARENCE,
      42             :     SID_ATTR_FILL_SHADOW,
      43             :     SID_ATTR_FILL_SHADOW,
      44             :     0
      45             : };
      46             : 
      47           0 : SvxShadowTabPage::SvxShadowTabPage( Window* pParent, const SfxItemSet& rInAttrs ) :
      48             : 
      49             :     SvxTabPage          ( pParent,
      50             :                           "ShadowTabPage",
      51             :                           "cui/ui/shadowtabpage.ui",
      52             :                           rInAttrs ),
      53             :     rOutAttrs           ( rInAttrs ),
      54             :     eRP                 ( RP_LT ),
      55             :     nPageType           ( 0 ),
      56             :     nDlgType            ( 0 ),
      57             :     pbAreaTP            ( 0 ),
      58             :     bDisable            ( sal_False ),
      59           0 :     pXPool              ( (XOutdevItemPool*) rInAttrs.GetPool() ),
      60             :     aXFillAttr          ( pXPool ),
      61           0 :     rXFSet              ( aXFillAttr.GetItemSet() )
      62             : {
      63           0 :     get(m_pTsbShowShadow,"TSB_SHOW_SHADOW");
      64           0 :     get(m_pGridShadow,"gridSHADOW");
      65           0 :     get(m_pCtlPosition,"CTL_POSITION");
      66           0 :     get(m_pMtrDistance,"MTR_FLD_DISTANCE");
      67           0 :     get(m_pLbShadowColor,"LB_SHADOW_COLOR");
      68           0 :     get(m_pMtrTransparent,"MTR_SHADOW_TRANSPARENT");
      69           0 :     get(m_pCtlXRectPreview,"CTL_COLOR_PREVIEW");
      70             : 
      71             :     // this page needs ExchangeSupport
      72           0 :     SetExchangeSupport();
      73             : 
      74             :     // adjust metric
      75           0 :     FieldUnit eFUnit = GetModuleFieldUnit( rInAttrs );
      76             : 
      77           0 :     switch ( eFUnit )
      78             :     {
      79             :         case FUNIT_M:
      80             :         case FUNIT_KM:
      81           0 :             eFUnit = FUNIT_MM;
      82           0 :             break;
      83             :         default: ;//prevent warning
      84             :     }
      85           0 :     SetFieldUnit( *m_pMtrDistance, eFUnit );
      86             : 
      87             :     // determine PoolUnit
      88           0 :     SfxItemPool* pPool = rOutAttrs.GetPool();
      89             :     DBG_ASSERT( pPool, "Wo ist der Pool?" );
      90           0 :     ePoolUnit = pPool->GetMetric( SDRATTR_SHADOWXDIST );
      91             : 
      92             :     // setting the output device
      93           0 :     XFillStyle eXFS = XFILL_SOLID;
      94           0 :     if( rOutAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE )
      95             :     {
      96             :         eXFS = (XFillStyle) ( ( ( const XFillStyleItem& ) rOutAttrs.
      97           0 :                                 Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() );
      98           0 :         switch( eXFS )
      99             :         {
     100             :             //case XFILL_NONE: --> NOTHING
     101             : 
     102             :             case XFILL_SOLID:
     103           0 :                 if( SFX_ITEM_DONTCARE != rOutAttrs.GetItemState( XATTR_FILLCOLOR ) )
     104             :                 {
     105             :                     XFillColorItem aColorItem( ( const XFillColorItem& )
     106           0 :                                         rOutAttrs.Get( XATTR_FILLCOLOR ) );
     107           0 :                     rXFSet.Put( aColorItem );
     108             :                 }
     109           0 :             break;
     110             : 
     111             :             case XFILL_GRADIENT:
     112           0 :                 if( SFX_ITEM_DONTCARE != rOutAttrs.GetItemState( XATTR_FILLGRADIENT ) )
     113             :                 {
     114             :                     XFillGradientItem aGradientItem( ( ( const XFillGradientItem& )
     115           0 :                                             rOutAttrs.Get( XATTR_FILLGRADIENT ) ) );
     116           0 :                     rXFSet.Put( aGradientItem );
     117             :                 }
     118           0 :             break;
     119             : 
     120             :             case XFILL_HATCH:
     121           0 :                 if( SFX_ITEM_DONTCARE != rOutAttrs.GetItemState( XATTR_FILLHATCH ) )
     122             :                 {
     123             :                     XFillHatchItem aHatchItem( ( ( const XFillHatchItem& )
     124           0 :                                     rOutAttrs.Get( XATTR_FILLHATCH ) ) );
     125           0 :                     rXFSet.Put( aHatchItem );
     126             :                 }
     127           0 :             break;
     128             : 
     129             :             case XFILL_BITMAP:
     130             :             {
     131           0 :                 if( SFX_ITEM_DONTCARE != rOutAttrs.GetItemState( XATTR_FILLBITMAP ) )
     132             :                 {
     133             :                     XFillBitmapItem aBitmapItem( ( const XFillBitmapItem& )
     134           0 :                                         rOutAttrs.Get( XATTR_FILLBITMAP ) );
     135           0 :                     rXFSet.Put( aBitmapItem );
     136             :                 }
     137             :             }
     138           0 :             break;
     139           0 :             case XFILL_NONE : break;
     140             :         }
     141             :     }
     142             :     else
     143             :     {
     144           0 :         rXFSet.Put( XFillColorItem( OUString(), COL_LIGHTRED ) );
     145             :     }
     146             : 
     147           0 :     if(XFILL_NONE == eXFS)
     148             :     {
     149             :         // #i96350#
     150             :         // fallback to solid fillmode when no fill mode is provided to have
     151             :         // a reasonable shadow preview. The used color will be a set one or
     152             :         // the default (currently blue8)
     153           0 :         eXFS = XFILL_SOLID;
     154             :     }
     155             : 
     156           0 :     rXFSet.Put( XFillStyleItem( eXFS ) );
     157           0 :     m_pCtlXRectPreview->SetRectangleAttributes(aXFillAttr.GetItemSet());
     158             :     //aCtlXRectPreview.SetFillAttr( aXFillAttr );
     159             : 
     160           0 :     m_pTsbShowShadow->SetClickHdl( LINK( this, SvxShadowTabPage, ClickShadowHdl_Impl ) );
     161           0 :     Link aLink = LINK( this, SvxShadowTabPage, ModifyShadowHdl_Impl );
     162           0 :     m_pLbShadowColor->SetSelectHdl( aLink );
     163           0 :     m_pMtrTransparent->SetModifyHdl( aLink );
     164           0 :     m_pMtrDistance->SetModifyHdl( aLink );
     165             : 
     166           0 : }
     167             : 
     168             : 
     169             : 
     170           0 : void SvxShadowTabPage::Construct()
     171             : {
     172           0 :     m_pLbShadowColor->Fill( pColorList );
     173             : 
     174           0 :     if( bDisable )
     175             :     {
     176           0 :         m_pTsbShowShadow->Disable();
     177           0 :         m_pGridShadow->Disable();
     178             :     }
     179           0 : }
     180             : 
     181             : 
     182             : 
     183           0 : void SvxShadowTabPage::ActivatePage( const SfxItemSet& rSet )
     184             : {
     185             :     sal_Int32 nPos;
     186             :     sal_Int32 nCount;
     187             : 
     188           0 :     SFX_ITEMSET_ARG (&rSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,false);
     189           0 :     if (pPageTypeItem)
     190           0 :         SetPageType(pPageTypeItem->GetValue());
     191             : 
     192           0 :     if( nDlgType == 0 )
     193             :     {
     194           0 :         if( pColorList.is() )
     195             :         {
     196             :             // ColorList
     197           0 :             if( *pnColorListState & CT_CHANGED ||
     198           0 :                 *pnColorListState & CT_MODIFIED )
     199             :             {
     200           0 :                 if( *pnColorListState & CT_CHANGED )
     201             :                 {
     202           0 :                     SvxAreaTabDialog* pArea = dynamic_cast< SvxAreaTabDialog* >( GetParentDialog() );
     203           0 :                     if( pArea )
     204             :                     {
     205           0 :                         pColorList = pArea->GetNewColorList();
     206             :                     }
     207             :                     else
     208             :                     {
     209           0 :                         SvxLineTabDialog* pLine = dynamic_cast< SvxLineTabDialog* >( GetParentDialog() );
     210           0 :                         if( pLine )
     211           0 :                             pColorList = pLine->GetNewColorList();
     212             :                     }
     213             :                 }
     214             : 
     215           0 :                 m_pCtlXRectPreview->SetRectangleAttributes(rSet);
     216             :                 // aLbShadowColor
     217           0 :                 nPos = m_pLbShadowColor->GetSelectEntryPos();
     218           0 :                 m_pLbShadowColor->Clear();
     219           0 :                 m_pLbShadowColor->Fill( pColorList );
     220           0 :                 nCount = m_pLbShadowColor->GetEntryCount();
     221           0 :                 if( nCount == 0 )
     222             :                     ; // this case should not occur
     223           0 :                 else if( nCount <= nPos )
     224           0 :                     m_pLbShadowColor->SelectEntryPos( 0 );
     225             :                 else
     226           0 :                     m_pLbShadowColor->SelectEntryPos( nPos );
     227             : 
     228           0 :                 ModifyShadowHdl_Impl( this );
     229             :             }
     230           0 :             nPageType = PT_SHADOW;
     231             :         }
     232             :     }
     233           0 : }
     234             : 
     235             : 
     236             : 
     237           0 : int SvxShadowTabPage::DeactivatePage( SfxItemSet* _pSet )
     238             : {
     239           0 :     if( _pSet )
     240           0 :         FillItemSet( *_pSet );
     241             : 
     242           0 :     return( LEAVE_PAGE );
     243             : }
     244             : 
     245             : 
     246             : 
     247           0 : bool SvxShadowTabPage::FillItemSet( SfxItemSet& rAttrs )
     248             : {
     249           0 :     const SfxPoolItem*  pOld = NULL;
     250           0 :     sal_Bool                bModified = sal_False;
     251             : 
     252           0 :     if( !bDisable )
     253             :     {
     254           0 :         TriState eState = m_pTsbShowShadow->GetState();
     255           0 :         if( eState != m_pTsbShowShadow->GetSavedValue() )
     256             :         {
     257           0 :             SdrShadowItem aItem( sal::static_int_cast< sal_Bool >( eState ) );
     258           0 :             pOld = GetOldItem( rAttrs, SDRATTR_SHADOW );
     259           0 :             if ( !pOld || !( *(const SdrShadowItem*)pOld == aItem ) )
     260             :             {
     261           0 :                 rAttrs.Put( aItem );
     262           0 :                 bModified = sal_True;
     263           0 :             }
     264             :         }
     265             : 
     266             :         // shadow removal
     267             :         // a bit intricate inquiry whether there was something changed,
     268             :         // as the items can't be displayed directly on controls
     269           0 :         sal_Int32 nX = 0L, nY = 0L;
     270           0 :         sal_Int32 nXY = GetCoreValue( *m_pMtrDistance, ePoolUnit );
     271             : 
     272           0 :         switch( m_pCtlPosition->GetActualRP() )
     273             :         {
     274           0 :             case RP_LT: nX = nY = -nXY;      break;
     275           0 :             case RP_MT: nY = -nXY;           break;
     276           0 :             case RP_RT: nX = nXY; nY = -nXY; break;
     277           0 :             case RP_LM: nX = -nXY;           break;
     278           0 :             case RP_RM: nX = nXY;            break;
     279           0 :             case RP_LB: nX = -nXY; nY = nXY; break;
     280           0 :             case RP_MB: nY = nXY;            break;
     281           0 :             case RP_RB: nX = nY = nXY;       break;
     282           0 :             case RP_MM: break;
     283             :         }
     284             : 
     285             :         // If the values of the shadow distances==SFX_ITEM_DONTCARE and the displayed
     286             :         // string in the respective MetricField=="", then the comparison of the old
     287             :         // and the new distance values would return a wrong result because in such a
     288             :         // case the new distance values would matche the default values of the MetricField !!!!
     289           0 :         if ( !m_pMtrDistance->IsEmptyFieldValue()                                  ||
     290           0 :              rOutAttrs.GetItemState( SDRATTR_SHADOWXDIST ) != SFX_ITEM_DONTCARE ||
     291           0 :              rOutAttrs.GetItemState( SDRATTR_SHADOWYDIST ) != SFX_ITEM_DONTCARE    )
     292             :         {
     293           0 :             sal_Int32 nOldX = 9876543; // impossible value, so DontCare
     294           0 :             sal_Int32 nOldY = 9876543;
     295           0 :             if( rOutAttrs.GetItemState( SDRATTR_SHADOWXDIST ) != SFX_ITEM_DONTCARE &&
     296           0 :                 rOutAttrs.GetItemState( SDRATTR_SHADOWYDIST ) != SFX_ITEM_DONTCARE )
     297             :             {
     298             :                 nOldX = ( ( const SdrShadowXDistItem& ) rOutAttrs.
     299           0 :                                     Get( SDRATTR_SHADOWXDIST ) ).GetValue();
     300             :                 nOldY = ( ( const SdrShadowYDistItem& ) rOutAttrs.
     301           0 :                                     Get( SDRATTR_SHADOWYDIST ) ).GetValue();
     302             :             }
     303           0 :             SdrShadowXDistItem aXItem( nX );
     304           0 :             pOld = GetOldItem( rAttrs, SDRATTR_SHADOWXDIST );
     305           0 :             if ( nX != nOldX &&
     306           0 :                 ( !pOld || !( *(const SdrShadowXDistItem*)pOld == aXItem ) ) )
     307             :             {
     308           0 :                 rAttrs.Put( aXItem );
     309           0 :                 bModified = sal_True;
     310             :             }
     311           0 :             SdrShadowYDistItem aYItem( nY );
     312           0 :             pOld = GetOldItem( rAttrs, SDRATTR_SHADOWYDIST );
     313           0 :             if ( nY != nOldY &&
     314           0 :                 ( !pOld || !( *(const SdrShadowYDistItem*)pOld == aYItem ) ) )
     315             :             {
     316           0 :                 rAttrs.Put( aYItem );
     317           0 :                 bModified = sal_True;
     318           0 :             }
     319             :         }
     320             : 
     321             :         // ShadowColor
     322           0 :         sal_Int32 nPos = m_pLbShadowColor->GetSelectEntryPos();
     323           0 :         if( nPos != LISTBOX_ENTRY_NOTFOUND &&
     324           0 :             nPos != m_pLbShadowColor->GetSavedValue() )
     325             :         {
     326           0 :             SdrShadowColorItem aItem(m_pLbShadowColor->GetSelectEntryColor());
     327           0 :             pOld = GetOldItem( rAttrs, SDRATTR_SHADOWCOLOR );
     328           0 :             if ( !pOld || !( *(const SdrShadowColorItem*)pOld == aItem ) )
     329             :             {
     330           0 :                 rAttrs.Put( aItem );
     331           0 :                 bModified = sal_True;
     332           0 :             }
     333             :         }
     334             : 
     335             :         // transparency
     336           0 :         sal_uInt16 nVal = (sal_uInt16)m_pMtrTransparent->GetValue();
     337           0 :         if( nVal != (sal_uInt16)m_pMtrTransparent->GetSavedValue().toInt32() )
     338             :         {
     339           0 :             SdrShadowTransparenceItem aItem( nVal );
     340           0 :             pOld = GetOldItem( rAttrs, SDRATTR_SHADOWTRANSPARENCE );
     341           0 :             if ( !pOld || !( *(const SdrShadowTransparenceItem*)pOld == aItem ) )
     342             :             {
     343           0 :                 rAttrs.Put( aItem );
     344           0 :                 bModified = sal_True;
     345           0 :             }
     346             :         }
     347             :     }
     348             : 
     349           0 :     rAttrs.Put (CntUInt16Item(SID_PAGE_TYPE,nPageType));
     350             : 
     351           0 :     return( bModified );
     352             : }
     353             : 
     354             : 
     355             : 
     356           0 : void SvxShadowTabPage::Reset( const SfxItemSet& rAttrs )
     357             : {
     358           0 :     if( !bDisable )
     359             :     {
     360             :         // all objects can have a shadow
     361             :         // at the moment there are only 8 possible positions where a shadow can be set
     362             : 
     363             :         // has a shadow been set?
     364           0 :         if( rAttrs.GetItemState( SDRATTR_SHADOW ) != SFX_ITEM_DONTCARE )
     365             :         {
     366           0 :             m_pTsbShowShadow->EnableTriState( false );
     367             : 
     368           0 :             if( ( ( const SdrShadowItem& ) rAttrs.Get( SDRATTR_SHADOW ) ).GetValue() )
     369           0 :                 m_pTsbShowShadow->SetState( TRISTATE_TRUE );
     370             :             else
     371             :             {
     372           0 :                 m_pTsbShowShadow->SetState( TRISTATE_FALSE );
     373             :             }
     374             :         }
     375             :         else
     376           0 :             m_pTsbShowShadow->SetState( TRISTATE_INDET );
     377             : 
     378             :         // distance (only 8 possible positions),
     379             :         // so there is only one item evaluated
     380             : 
     381           0 :         if( rAttrs.GetItemState( SDRATTR_SHADOWXDIST ) != SFX_ITEM_DONTCARE &&
     382           0 :             rAttrs.GetItemState( SDRATTR_SHADOWYDIST ) != SFX_ITEM_DONTCARE )
     383             :         {
     384           0 :             sal_Int32 nX = ( ( const SdrShadowXDistItem& ) rAttrs.Get( SDRATTR_SHADOWXDIST ) ).GetValue();
     385           0 :             sal_Int32 nY = ( ( const SdrShadowYDistItem& ) rAttrs.Get( SDRATTR_SHADOWYDIST ) ).GetValue();
     386             : 
     387           0 :             if( nX != 0 )
     388           0 :                 SetMetricValue( *m_pMtrDistance, nX < 0L ? -nX : nX, ePoolUnit );
     389             :             else
     390           0 :                 SetMetricValue( *m_pMtrDistance, nY < 0L ? -nY : nY, ePoolUnit );
     391             : 
     392             :             // setting the shadow control
     393           0 :             if     ( nX <  0L && nY <  0L ) m_pCtlPosition->SetActualRP( RP_LT );
     394           0 :             else if( nX == 0L && nY <  0L ) m_pCtlPosition->SetActualRP( RP_MT );
     395           0 :             else if( nX >  0L && nY <  0L ) m_pCtlPosition->SetActualRP( RP_RT );
     396           0 :             else if( nX <  0L && nY == 0L ) m_pCtlPosition->SetActualRP( RP_LM );
     397             :             // there's no center point anymore
     398           0 :             else if( nX == 0L && nY == 0L ) m_pCtlPosition->SetActualRP( RP_RB );
     399           0 :             else if( nX >  0L && nY == 0L ) m_pCtlPosition->SetActualRP( RP_RM );
     400           0 :             else if( nX <  0L && nY >  0L ) m_pCtlPosition->SetActualRP( RP_LB );
     401           0 :             else if( nX == 0L && nY >  0L ) m_pCtlPosition->SetActualRP( RP_MB );
     402           0 :             else if( nX >  0L && nY >  0L ) m_pCtlPosition->SetActualRP( RP_RB );
     403             :         }
     404             :         else
     405             :         {
     406             :             // determine default-distance
     407           0 :             SfxItemPool* pPool = rOutAttrs.GetPool();
     408           0 :             SdrShadowXDistItem* pXDistItem = (SdrShadowXDistItem*)&pPool->GetDefaultItem (SDRATTR_SHADOWXDIST);
     409           0 :             SdrShadowYDistItem* pYDistItem = (SdrShadowYDistItem*)&pPool->GetDefaultItem (SDRATTR_SHADOWYDIST);
     410           0 :             if (pXDistItem && pYDistItem)
     411             :             {
     412           0 :                 sal_Int32 nX = pXDistItem->GetValue();
     413           0 :                 sal_Int32 nY = pYDistItem->GetValue();
     414           0 :                 if( nX != 0 )
     415           0 :                     SetMetricValue( *m_pMtrDistance, nX < 0L ? -nX : nX, ePoolUnit );
     416             :                 else
     417           0 :                     SetMetricValue( *m_pMtrDistance, nY < 0L ? -nY : nY, ePoolUnit );
     418             :             }
     419             : 
     420             :             // Tristate, e. g. multiple objects have been marked of which some have a shadow and some don't.
     421             :             // The text (which shall be displayed) of the MetricFields is set to "" and serves as an
     422             :             // identification in the method FillItemSet for the fact that the distance value was NOT changed !!!!
     423           0 :             m_pMtrDistance->SetText( "" );
     424           0 :             m_pCtlPosition->SetActualRP( RP_MM );
     425             :         }
     426             : 
     427           0 :         if( rAttrs.GetItemState( SDRATTR_SHADOWCOLOR ) != SFX_ITEM_DONTCARE )
     428             :         {
     429           0 :             m_pLbShadowColor->SelectEntry( ( ( const SdrShadowColorItem& ) rAttrs.Get( SDRATTR_SHADOWCOLOR ) ).GetColorValue() );
     430             :         }
     431             :         else
     432           0 :             m_pLbShadowColor->SetNoSelection();
     433             : 
     434           0 :         if( rAttrs.GetItemState( SDRATTR_SHADOWTRANSPARENCE ) != SFX_ITEM_DONTCARE )
     435             :         {
     436           0 :             sal_uInt16 nTransp = ( ( const SdrShadowTransparenceItem& ) rAttrs.Get( SDRATTR_SHADOWTRANSPARENCE ) ).GetValue();
     437           0 :             m_pMtrTransparent->SetValue( nTransp );
     438             :         }
     439             :         else
     440           0 :             m_pMtrTransparent->SetText( "" );
     441             : 
     442             :         //aCtlPosition
     443           0 :         m_pMtrDistance->SaveValue();
     444           0 :         m_pLbShadowColor->SaveValue();
     445           0 :         m_pTsbShowShadow->SaveValue();
     446             : 
     447             :         // #66832# This field was not saved, but used to determine changes.
     448             :         // Why? Seems to be the error.
     449             :         // It IS the error.
     450           0 :         m_pMtrTransparent->SaveValue();
     451             : 
     452           0 :         ClickShadowHdl_Impl( NULL );
     453           0 :         ModifyShadowHdl_Impl( NULL );
     454             :     }
     455           0 : }
     456             : 
     457             : 
     458             : 
     459           0 : SfxTabPage* SvxShadowTabPage::Create( Window* pWindow,
     460             :                 const SfxItemSet& rAttrs )
     461             : {
     462           0 :     return( new SvxShadowTabPage( pWindow, rAttrs ) );
     463             : }
     464             : 
     465             : 
     466             : 
     467           0 : sal_uInt16* SvxShadowTabPage::GetRanges()
     468             : {
     469           0 :     return( pShadowRanges );
     470             : }
     471             : 
     472             : 
     473             : 
     474           0 : IMPL_LINK_NOARG(SvxShadowTabPage, ClickShadowHdl_Impl)
     475             : {
     476           0 :     if( m_pTsbShowShadow->GetState() == TRISTATE_FALSE )
     477             :     {
     478           0 :         m_pGridShadow->Disable();
     479             :     }
     480             :     else
     481             :     {
     482           0 :         m_pGridShadow->Enable();
     483             :     }
     484           0 :     m_pCtlPosition->Invalidate();
     485             : 
     486           0 :     ModifyShadowHdl_Impl( NULL );
     487             : 
     488           0 :     return( 0L );
     489             : }
     490             : 
     491             : 
     492             : 
     493           0 : IMPL_LINK_NOARG(SvxShadowTabPage, ModifyShadowHdl_Impl)
     494             : {
     495           0 :     if( m_pTsbShowShadow->GetState() == TRISTATE_TRUE )
     496           0 :         rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
     497             :     else
     498           0 :         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
     499             : 
     500           0 :     sal_Int32 nPos = m_pLbShadowColor->GetSelectEntryPos();
     501           0 :     if( nPos != LISTBOX_ENTRY_NOTFOUND )
     502             :     {
     503           0 :         rXFSet.Put( XFillColorItem( OUString(), m_pLbShadowColor->GetSelectEntryColor() ) );
     504             :     }
     505           0 :     sal_uInt16 nVal = (sal_uInt16)m_pMtrTransparent->GetValue();
     506           0 :     XFillTransparenceItem aItem( nVal );
     507           0 :     rXFSet.Put( XFillTransparenceItem( aItem ) );
     508             : 
     509             :     // shadow removal
     510           0 :     sal_Int32 nX = 0L, nY = 0L;
     511           0 :     sal_Int32 nXY = GetCoreValue( *m_pMtrDistance, ePoolUnit );
     512           0 :     switch( m_pCtlPosition->GetActualRP() )
     513             :     {
     514           0 :         case RP_LT: nX = nY = -nXY;      break;
     515           0 :         case RP_MT: nY = -nXY;           break;
     516           0 :         case RP_RT: nX = nXY; nY = -nXY; break;
     517           0 :         case RP_LM: nX = -nXY;           break;
     518           0 :         case RP_RM: nX = nXY;            break;
     519           0 :         case RP_LB: nX = -nXY; nY = nXY; break;
     520           0 :         case RP_MB: nY = nXY;            break;
     521           0 :         case RP_RB: nX = nY = nXY;       break;
     522           0 :         case RP_MM: break;
     523             :     }
     524             : 
     525           0 :     m_pCtlXRectPreview->SetShadowPosition(Point(nX, nY));
     526             : 
     527           0 :     m_pCtlXRectPreview->SetShadowAttributes(aXFillAttr.GetItemSet());
     528             :     //aCtlXRectPreview.SetFillAttr( aXFillAttr );
     529           0 :     m_pCtlXRectPreview->Invalidate();
     530             : 
     531           0 :     return( 0L );
     532             : }
     533             : 
     534             : 
     535             : 
     536           0 : void SvxShadowTabPage::PointChanged( Window* pWindow, RECT_POINT eRcPt )
     537             : {
     538           0 :     eRP = eRcPt;
     539             : 
     540             :     // repaint shadow
     541           0 :     ModifyShadowHdl_Impl( pWindow );
     542           0 : }
     543             : 
     544           0 : void SvxShadowTabPage::PageCreated (SfxAllItemSet aSet)
     545             : {
     546           0 :     SFX_ITEMSET_ARG (&aSet,pColorListItem,SvxColorListItem,SID_COLOR_TABLE,false);
     547           0 :     SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,false);
     548           0 :     SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,false);
     549             : 
     550           0 :     if (pColorListItem)
     551           0 :         SetColorList(pColorListItem->GetColorList());
     552           0 :     if (pPageTypeItem)
     553           0 :         SetPageType(pPageTypeItem->GetValue());
     554           0 :     if (pDlgTypeItem)
     555           0 :         SetDlgType(pDlgTypeItem->GetValue());
     556           0 :     Construct();
     557           0 : }
     558             : 
     559             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10