LCOV - code coverage report
Current view: top level - libreoffice/cui/source/tabpages - tparea.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 1481 0.1 %
Date: 2012-12-17 Functions: 2 64 3.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             : #include <tools/shl.hxx>
      21             : #include <tools/urlobj.hxx>
      22             : #include <sfx2/app.hxx>
      23             : #include <sfx2/module.hxx>
      24             : #include <svx/dialogs.hrc>
      25             : 
      26             : #define _SVX_TPAREA_CXX
      27             : 
      28             : #if defined (UNX) || defined (ICC) || defined(WNT)
      29             : #include <stdlib.h>
      30             : #endif
      31             : 
      32             : #include "svx/xattr.hxx"
      33             : #include <svx/xpool.hxx>
      34             : #include <cuires.hrc>
      35             : #include "tabarea.hrc"
      36             : #include <svx/xflbckit.hxx>
      37             : #include <svx/svdattr.hxx>
      38             : #include <svx/xtable.hxx>
      39             : #include <svx/xlineit0.hxx>
      40             : #include "svx/drawitem.hxx"
      41             : #include "cuitabarea.hxx"
      42             : #include "dlgname.hxx"
      43             : #include <dialmgr.hxx>
      44             : #include "svx/dlgutil.hxx"
      45             : #include <svl/intitem.hxx>
      46             : #include <sfx2/request.hxx>
      47             : #include "paragrph.hrc"
      48             : 
      49             : // static ----------------------------------------------------------------
      50             : 
      51             : static sal_uInt16 pAreaRanges[] =
      52             : {
      53             :     XATTR_GRADIENTSTEPCOUNT,
      54             :     XATTR_GRADIENTSTEPCOUNT,
      55             :     SID_ATTR_FILL_STYLE,
      56             :     SID_ATTR_FILL_BITMAP,
      57             :     0
      58             : };
      59             : 
      60             : static sal_uInt16 pTransparenceRanges[] =
      61             : {
      62             :     XATTR_FILLTRANSPARENCE,
      63             :     XATTR_FILLTRANSPARENCE,
      64             :     SDRATTR_SHADOWTRANSPARENCE,
      65             :     SDRATTR_SHADOWTRANSPARENCE,
      66             :     XATTR_FILLFLOATTRANSPARENCE,
      67             :     XATTR_FILLFLOATTRANSPARENCE,
      68             :     0
      69             : };
      70             : 
      71             : /*************************************************************************
      72             : |*
      73             : |*  Dialog for transparence
      74             : |*
      75             : \************************************************************************/
      76             : 
      77           0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransOffHdl_Impl)
      78             : {
      79             :     // disable all other controls
      80           0 :     ActivateLinear(sal_False);
      81           0 :     ActivateGradient(sal_False);
      82             : 
      83             :     // Preview
      84           0 :     rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
      85           0 :     rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
      86           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
      87           0 :     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
      88             : 
      89           0 :     InvalidatePreview( sal_False );
      90             : 
      91           0 :     return( 0L );
      92             : }
      93             : 
      94           0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransLinearHdl_Impl)
      95             : {
      96             :     // enable linear, disable other
      97           0 :     ActivateLinear(sal_True);
      98           0 :     ActivateGradient(sal_False);
      99             : 
     100             :     // preview
     101           0 :     rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
     102           0 :     ModifyTransparentHdl_Impl (NULL);
     103             : 
     104           0 :     return( 0L );
     105             : }
     106             : 
     107           0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransGradientHdl_Impl)
     108             : {
     109             :     // enable gradient, disable other
     110           0 :     ActivateLinear(sal_False);
     111           0 :     ActivateGradient(sal_True);
     112             : 
     113             :     // preview
     114           0 :     rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
     115           0 :     ModifiedTrgrHdl_Impl (NULL);
     116             : 
     117           0 :     return( 0L );
     118             : }
     119             : 
     120           0 : void SvxTransparenceTabPage::ActivateLinear(sal_Bool bActivate)
     121             : {
     122           0 :     aMtrTransparent.Enable(bActivate);
     123           0 : }
     124             : 
     125           0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ModifyTransparentHdl_Impl)
     126             : {
     127           0 :     sal_uInt16 nPos = (sal_uInt16)aMtrTransparent.GetValue();
     128           0 :     XFillTransparenceItem aItem(nPos);
     129           0 :     rXFSet.Put(XFillTransparenceItem(aItem));
     130             : 
     131             :     // preview
     132           0 :     InvalidatePreview();
     133             : 
     134           0 :     return 0L;
     135             : }
     136             : 
     137           0 : IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrHdl_Impl, void *, pControl)
     138             : {
     139           0 :     if(pControl == &aLbTrgrGradientType || pControl == this)
     140             :     {
     141           0 :         XGradientStyle eXGS = (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos();
     142           0 :         SetControlState_Impl( eXGS );
     143             :     }
     144             : 
     145             :     // preview
     146           0 :     sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrStartValue.GetValue() * 255) / 100);
     147           0 :     sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrEndValue.GetValue() * 255) / 100);
     148             :     XGradient aTmpGradient(
     149             :                 Color(nStartCol, nStartCol, nStartCol),
     150             :                 Color(nEndCol, nEndCol, nEndCol),
     151           0 :                 (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos(),
     152           0 :                 (sal_uInt16)aMtrTrgrAngle.GetValue() * 10,
     153           0 :                 (sal_uInt16)aMtrTrgrCenterX.GetValue(),
     154           0 :                 (sal_uInt16)aMtrTrgrCenterY.GetValue(),
     155           0 :                 (sal_uInt16)aMtrTrgrBorder.GetValue(),
     156           0 :                 100, 100);
     157             : 
     158           0 :     String aString;
     159           0 :     XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient);
     160           0 :     rXFSet.Put ( aItem );
     161             : 
     162           0 :     InvalidatePreview();
     163             : 
     164           0 :     return( 0L );
     165             : }
     166             : 
     167           0 : void SvxTransparenceTabPage::ActivateGradient(sal_Bool bActivate)
     168             : {
     169           0 :     aFtTrgrType.Enable(bActivate);
     170           0 :     aLbTrgrGradientType.Enable(bActivate);
     171           0 :     aFtTrgrCenterX.Enable(bActivate);
     172           0 :     aMtrTrgrCenterX.Enable(bActivate);
     173           0 :     aFtTrgrCenterY.Enable(bActivate);
     174           0 :     aMtrTrgrCenterY.Enable(bActivate);
     175           0 :     aFtTrgrAngle.Enable(bActivate);
     176           0 :     aMtrTrgrAngle.Enable(bActivate);
     177           0 :     aFtTrgrBorder.Enable(bActivate);
     178           0 :     aMtrTrgrBorder.Enable(bActivate);
     179           0 :     aFtTrgrStartValue.Enable(bActivate);
     180           0 :     aMtrTrgrStartValue.Enable(bActivate);
     181           0 :     aFtTrgrEndValue.Enable(bActivate);
     182           0 :     aMtrTrgrEndValue.Enable(bActivate);
     183             : 
     184           0 :     if(bActivate)
     185             :     {
     186           0 :         XGradientStyle eXGS = (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos();
     187           0 :         SetControlState_Impl( eXGS );
     188             :     }
     189           0 : }
     190             : 
     191           0 : IMPL_LINK_NOARG(SvxTransparenceTabPage, ChangeTrgrTypeHdl_Impl)
     192             : {
     193           0 :     return( 0L );
     194             : }
     195             : 
     196           0 : void SvxTransparenceTabPage::SetControlState_Impl(XGradientStyle eXGS)
     197             : {
     198           0 :     switch(eXGS)
     199             :     {
     200             :         case XGRAD_LINEAR:
     201             :         case XGRAD_AXIAL:
     202           0 :             aFtTrgrCenterX.Disable();
     203           0 :             aMtrTrgrCenterX.Disable();
     204           0 :             aFtTrgrCenterY.Disable();
     205           0 :             aMtrTrgrCenterY.Disable();
     206           0 :             aFtTrgrAngle.Enable();
     207           0 :             aMtrTrgrAngle.Enable();
     208           0 :             break;
     209             : 
     210             :         case XGRAD_RADIAL:
     211           0 :             aFtTrgrCenterX.Enable();
     212           0 :             aMtrTrgrCenterX.Enable();
     213           0 :             aFtTrgrCenterY.Enable();
     214           0 :             aMtrTrgrCenterY.Enable();
     215           0 :             aFtTrgrAngle.Disable();
     216           0 :             aMtrTrgrAngle.Disable();
     217           0 :             break;
     218             : 
     219             :         case XGRAD_ELLIPTICAL:
     220           0 :             aFtTrgrCenterX.Enable();
     221           0 :             aMtrTrgrCenterX.Enable();
     222           0 :             aFtTrgrCenterY.Enable();
     223           0 :             aMtrTrgrCenterY.Enable();
     224           0 :             aFtTrgrAngle.Enable();
     225           0 :             aMtrTrgrAngle.Enable();
     226           0 :             break;
     227             : 
     228             :         case XGRAD_SQUARE:
     229             :         case XGRAD_RECT:
     230           0 :             aFtTrgrCenterX.Enable();
     231           0 :             aMtrTrgrCenterX.Enable();
     232           0 :             aFtTrgrCenterY.Enable();
     233           0 :             aMtrTrgrCenterY.Enable();
     234           0 :             aFtTrgrAngle.Enable();
     235           0 :             aMtrTrgrAngle.Enable();
     236           0 :             break;
     237             :     }
     238           0 : }
     239             : 
     240           0 : SvxTransparenceTabPage::SvxTransparenceTabPage(Window* pParent, const SfxItemSet& rInAttrs)
     241           0 : :   SvxTabPage          ( pParent, CUI_RES( RID_SVXPAGE_TRANSPARENCE ), rInAttrs),
     242             :     rOutAttrs           ( rInAttrs ),
     243             :     nPageType(0),
     244             :     nDlgType(0),
     245             : 
     246           0 :     aFlProp             ( this, CUI_RES( FL_PROP ) ),
     247           0 :     aRbtTransOff        ( this, CUI_RES( RBT_TRANS_OFF ) ),
     248           0 :     aRbtTransLinear     ( this, CUI_RES( RBT_TRANS_LINEAR ) ),
     249           0 :     aRbtTransGradient   ( this, CUI_RES( RBT_TRANS_GRADIENT ) ),
     250             : 
     251           0 :     aMtrTransparent     ( this, CUI_RES( MTR_TRANSPARENT ) ),
     252             : 
     253           0 :     aFtTrgrType         ( this, CUI_RES( FT_TRGR_TYPE ) ),
     254           0 :     aLbTrgrGradientType ( this, CUI_RES( LB_TRGR_GRADIENT_TYPES ) ),
     255           0 :     aFtTrgrCenterX      ( this, CUI_RES( FT_TRGR_CENTER_X ) ),
     256           0 :     aMtrTrgrCenterX     ( this, CUI_RES( MTR_TRGR_CENTER_X ) ),
     257           0 :     aFtTrgrCenterY      ( this, CUI_RES( FT_TRGR_CENTER_Y ) ),
     258           0 :     aMtrTrgrCenterY     ( this, CUI_RES( MTR_TRGR_CENTER_Y ) ),
     259           0 :     aFtTrgrAngle        ( this, CUI_RES( FT_TRGR_ANGLE ) ),
     260           0 :     aMtrTrgrAngle       ( this, CUI_RES( MTR_TRGR_ANGLE ) ),
     261           0 :     aFtTrgrBorder       ( this, CUI_RES( FT_TRGR_BORDER ) ),
     262           0 :     aMtrTrgrBorder      ( this, CUI_RES( MTR_TRGR_BORDER ) ),
     263           0 :     aFtTrgrStartValue   ( this, CUI_RES( FT_TRGR_START_VALUE ) ),
     264           0 :     aMtrTrgrStartValue  ( this, CUI_RES( MTR_TRGR_START_VALUE ) ),
     265           0 :     aFtTrgrEndValue     ( this, CUI_RES( FT_TRGR_END_VALUE ) ),
     266           0 :     aMtrTrgrEndValue    ( this, CUI_RES( MTR_TRGR_END_VALUE ) ),
     267             : 
     268           0 :     aCtlBitmapPreview   ( this, CUI_RES( CTL_BITMAP_PREVIEW ) ),
     269           0 :     aCtlXRectPreview    ( this, CUI_RES( CTL_TRANS_PREVIEW ) ),
     270             :     bBitmap             ( sal_False ),
     271           0 :     pXPool              ( (XOutdevItemPool*) rInAttrs.GetPool() ),
     272             :     aXFillAttr          ( pXPool ),
     273           0 :     rXFSet              ( aXFillAttr.GetItemSet() )
     274             : {
     275           0 :     FreeResource();
     276             : 
     277           0 :     String accName = String(CUI_RES(STR_EXAMPLE));
     278           0 :     aCtlBitmapPreview.SetAccessibleName(accName);
     279           0 :     aCtlXRectPreview.SetAccessibleName(accName);
     280           0 :     aMtrTransparent.SetAccessibleRelationLabeledBy( &aRbtTransLinear );
     281             : 
     282             :     // main selection
     283           0 :     aRbtTransOff.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl));
     284           0 :     aRbtTransLinear.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl));
     285           0 :     aRbtTransGradient.SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl));
     286             : 
     287             :     // linear transparency
     288           0 :     aMtrTransparent.SetValue( 50 );
     289           0 :     aMtrTransparent.SetModifyHdl(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl));
     290             : 
     291             :     // gradient transparency
     292           0 :     aMtrTrgrEndValue.SetValue( 100 );
     293           0 :     aMtrTrgrStartValue.SetValue( 0 );
     294           0 :     aLbTrgrGradientType.SetSelectHdl(LINK(this, SvxTransparenceTabPage, ChangeTrgrTypeHdl_Impl));
     295           0 :     Link aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrHdl_Impl);
     296           0 :     aLbTrgrGradientType.SetSelectHdl( aLink );
     297           0 :     aMtrTrgrCenterX.SetModifyHdl( aLink );
     298           0 :     aMtrTrgrCenterY.SetModifyHdl( aLink );
     299           0 :     aMtrTrgrAngle.SetModifyHdl( aLink );
     300           0 :     aMtrTrgrBorder.SetModifyHdl( aLink );
     301           0 :     aMtrTrgrStartValue.SetModifyHdl( aLink );
     302           0 :     aMtrTrgrEndValue.SetModifyHdl( aLink );
     303             : 
     304             :     // this page needs ExchangeSupport
     305           0 :     SetExchangeSupport();
     306           0 : }
     307             : 
     308           0 : void SvxTransparenceTabPage::Construct()
     309             : {
     310           0 : }
     311             : 
     312           0 : SfxTabPage* SvxTransparenceTabPage::Create(Window* pWindow, const SfxItemSet& rAttrs)
     313             : {
     314           0 :     return(new SvxTransparenceTabPage(pWindow, rAttrs));
     315             : }
     316             : 
     317           0 : sal_uInt16* SvxTransparenceTabPage::GetRanges()
     318             : {
     319           0 :     return(pTransparenceRanges);
     320             : }
     321             : 
     322           0 : sal_Bool SvxTransparenceTabPage::FillItemSet(SfxItemSet& rAttrs)
     323             : {
     324           0 :     const SfxPoolItem* pGradientItem = NULL;
     325           0 :     const SfxPoolItem* pLinearItem = NULL;
     326           0 :     SfxItemState eStateGradient(rOutAttrs.GetItemState(XATTR_FILLFLOATTRANSPARENCE, sal_True, &pGradientItem));
     327           0 :     SfxItemState eStateLinear(rOutAttrs.GetItemState(XATTR_FILLTRANSPARENCE, sal_True, &pLinearItem));
     328           0 :     sal_Bool bGradActive = (eStateGradient == SFX_ITEM_SET && ((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled());
     329           0 :     sal_Bool bLinearActive = (eStateLinear == SFX_ITEM_SET && ((XFillTransparenceItem*)pLinearItem)->GetValue() != 0);
     330             : 
     331             :     // #103765#
     332           0 :     sal_Bool bGradUsed = (eStateGradient == SFX_ITEM_DONTCARE);
     333           0 :     sal_Bool bLinearUsed = (eStateLinear == SFX_ITEM_DONTCARE);
     334             : 
     335           0 :     sal_Bool bModified(sal_False);
     336           0 :     sal_Bool bSwitchOffLinear(sal_False);
     337           0 :     sal_Bool bSwitchOffGradient(sal_False);
     338             : 
     339           0 :     if(aMtrTransparent.IsEnabled())
     340             :     {
     341             :         // linear transparence
     342           0 :         sal_uInt16 nPos = (sal_uInt16)aMtrTransparent.GetValue();
     343           0 :         if(nPos != (sal_uInt16)aMtrTransparent.GetSavedValue().ToInt32() || !bLinearActive)
     344             :         {
     345           0 :             XFillTransparenceItem aItem(nPos);
     346           0 :             SdrShadowTransparenceItem aShadowItem(nPos);
     347           0 :             const SfxPoolItem* pOld = GetOldItem(rAttrs, XATTR_FILLTRANSPARENCE);
     348           0 :             if(!pOld || !(*(const XFillTransparenceItem*)pOld == aItem) || !bLinearActive)
     349             :             {
     350           0 :                 rAttrs.Put(aItem);
     351           0 :                 rAttrs.Put(aShadowItem);
     352           0 :                 bModified = sal_True;
     353           0 :                 bSwitchOffGradient = sal_True;
     354           0 :             }
     355             :         }
     356             :     }
     357           0 :     else if(aLbTrgrGradientType.IsEnabled())
     358             :     {
     359             :         // transparence gradient, fill ItemSet from values
     360           0 :         if(!bGradActive
     361           0 :             || (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos() != (XGradientStyle)aLbTrgrGradientType.GetSavedValue()
     362           0 :             || (sal_uInt16)aMtrTrgrAngle.GetValue() != (sal_uInt16)aMtrTrgrAngle.GetSavedValue().ToInt32()
     363           0 :             || (sal_uInt16)aMtrTrgrCenterX.GetValue() != (sal_uInt16)aMtrTrgrCenterX.GetSavedValue().ToInt32()
     364           0 :             || (sal_uInt16)aMtrTrgrCenterY.GetValue() != (sal_uInt16)aMtrTrgrCenterY.GetSavedValue().ToInt32()
     365           0 :             || (sal_uInt16)aMtrTrgrBorder.GetValue() != (sal_uInt16)aMtrTrgrBorder.GetSavedValue().ToInt32()
     366           0 :             || (sal_uInt16)aMtrTrgrStartValue.GetValue() != (sal_uInt16)aMtrTrgrStartValue.GetSavedValue().ToInt32()
     367           0 :             || (sal_uInt16)aMtrTrgrEndValue.GetValue() != (sal_uInt16)aMtrTrgrEndValue.GetSavedValue().ToInt32() )
     368             :         {
     369           0 :             sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrStartValue.GetValue() * 255) / 100);
     370           0 :             sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)aMtrTrgrEndValue.GetValue() * 255) / 100);
     371             :             XGradient aTmpGradient(
     372             :                         Color(nStartCol, nStartCol, nStartCol),
     373             :                         Color(nEndCol, nEndCol, nEndCol),
     374           0 :                         (XGradientStyle)aLbTrgrGradientType.GetSelectEntryPos(),
     375           0 :                         (sal_uInt16)aMtrTrgrAngle.GetValue() * 10,
     376           0 :                         (sal_uInt16)aMtrTrgrCenterX.GetValue(),
     377           0 :                         (sal_uInt16)aMtrTrgrCenterY.GetValue(),
     378           0 :                         (sal_uInt16)aMtrTrgrBorder.GetValue(),
     379           0 :                         100, 100);
     380             : 
     381           0 :             String aString;
     382           0 :             XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient);
     383           0 :             const SfxPoolItem* pOld = GetOldItem(rAttrs, XATTR_FILLFLOATTRANSPARENCE);
     384             : 
     385           0 :             if(!pOld || !(*(const XFillFloatTransparenceItem*)pOld == aItem) || !bGradActive)
     386             :             {
     387           0 :                 rAttrs.Put(aItem);
     388           0 :                 bModified = sal_True;
     389           0 :                 bSwitchOffLinear = sal_True;
     390           0 :             }
     391             :         }
     392             :     }
     393             :     else
     394             :     {
     395             :         // no transparence
     396           0 :         bSwitchOffGradient = sal_True;
     397           0 :         bSwitchOffLinear = sal_True;
     398             :     }
     399             : 
     400             :     // disable unused XFillFloatTransparenceItem
     401           0 :     if(bSwitchOffGradient && (bGradActive || bGradUsed))
     402             :     {
     403           0 :         Color aColor(COL_BLACK);
     404           0 :         XGradient aGrad(aColor, Color(COL_WHITE));
     405           0 :         aGrad.SetStartIntens(100);
     406           0 :         aGrad.SetEndIntens(100);
     407           0 :         String aString;
     408           0 :         XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aGrad);
     409           0 :         aItem.SetEnabled(sal_False);
     410           0 :         rAttrs.Put(aItem);
     411           0 :         bModified = sal_True;
     412             :     }
     413             : 
     414             :     // disable unused XFillFloatTransparenceItem
     415           0 :     if(bSwitchOffLinear && (bLinearActive || bLinearUsed))
     416             :     {
     417           0 :         XFillTransparenceItem aItem(0);
     418           0 :         SdrShadowTransparenceItem aShadowItem(0);
     419           0 :         rAttrs.Put(aItem);
     420           0 :         rAttrs.Put(aShadowItem);
     421           0 :         bModified = sal_True;
     422             :     }
     423           0 :     rAttrs.Put (CntUInt16Item(SID_PAGE_TYPE,nPageType));
     424           0 :     return bModified;
     425             : }
     426             : 
     427           0 : void SvxTransparenceTabPage::Reset(const SfxItemSet& rAttrs)
     428             : {
     429           0 :     const SfxPoolItem* pGradientItem = NULL;
     430           0 :     SfxItemState eStateGradient(rAttrs.GetItemState(XATTR_FILLFLOATTRANSPARENCE, sal_True, &pGradientItem));
     431           0 :     if(!pGradientItem)
     432           0 :         pGradientItem = &rAttrs.Get(XATTR_FILLFLOATTRANSPARENCE);
     433           0 :     sal_Bool bGradActive = (eStateGradient == SFX_ITEM_SET && ((XFillFloatTransparenceItem*)pGradientItem)->IsEnabled());
     434             : 
     435           0 :     const SfxPoolItem* pLinearItem = NULL;
     436           0 :     SfxItemState eStateLinear(rAttrs.GetItemState(XATTR_FILLTRANSPARENCE, sal_True, &pLinearItem));
     437           0 :     if(!pLinearItem)
     438           0 :         pLinearItem = &rAttrs.Get(XATTR_FILLTRANSPARENCE);
     439           0 :     sal_Bool bLinearActive = (eStateLinear == SFX_ITEM_SET && ((XFillTransparenceItem*)pLinearItem)->GetValue() != 0);
     440             : 
     441             :     // transparence gradient
     442           0 :     const XGradient& rGradient = ((XFillFloatTransparenceItem*)pGradientItem)->GetGradientValue();
     443           0 :     XGradientStyle eXGS(rGradient.GetGradientStyle());
     444           0 :     aLbTrgrGradientType.SelectEntryPos(sal::static_int_cast< sal_uInt16 >(eXGS));
     445           0 :     aMtrTrgrAngle.SetValue(rGradient.GetAngle() / 10);
     446           0 :     aMtrTrgrBorder.SetValue(rGradient.GetBorder());
     447           0 :     aMtrTrgrCenterX.SetValue(rGradient.GetXOffset());
     448           0 :     aMtrTrgrCenterY.SetValue(rGradient.GetYOffset());
     449           0 :     aMtrTrgrStartValue.SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetStartColor().GetRed() + 1) * 100) / 255));
     450           0 :     aMtrTrgrEndValue.SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetEndColor().GetRed() + 1) * 100) / 255));
     451             : 
     452             :     // linear transparence
     453           0 :     sal_uInt16 nTransp = ((XFillTransparenceItem*)pLinearItem)->GetValue();
     454           0 :     aMtrTransparent.SetValue(bLinearActive ? nTransp : 50);
     455           0 :     ModifyTransparentHdl_Impl(NULL);
     456             : 
     457             :     // select the correct radio button
     458           0 :     if(bGradActive)
     459             :     {
     460             :         // transparence gradient, set controls appropriate to item
     461           0 :         aRbtTransGradient.Check();
     462           0 :         ClickTransGradientHdl_Impl(NULL);
     463             :     }
     464           0 :     else if(bLinearActive)
     465             :     {
     466             :         // linear transparence
     467           0 :         aRbtTransLinear.Check();
     468           0 :         ClickTransLinearHdl_Impl(NULL);
     469             :     }
     470             :     else
     471             :     {
     472             :         // no transparence
     473           0 :         aRbtTransOff.Check();
     474           0 :         ClickTransOffHdl_Impl(NULL);
     475           0 :         ModifiedTrgrHdl_Impl(NULL);
     476             :     }
     477             : 
     478             :     // save values
     479           0 :     aMtrTransparent.SaveValue();
     480           0 :     aLbTrgrGradientType.SaveValue();
     481           0 :     aMtrTrgrCenterX.SaveValue();
     482           0 :     aMtrTrgrCenterY.SaveValue();
     483           0 :     aMtrTrgrAngle.SaveValue();
     484           0 :     aMtrTrgrBorder.SaveValue();
     485           0 :     aMtrTrgrStartValue.SaveValue();
     486           0 :     aMtrTrgrEndValue.SaveValue();
     487             : 
     488           0 :     sal_Bool bActive = InitPreview ( rAttrs );
     489           0 :     InvalidatePreview ( bActive );
     490           0 : }
     491             : 
     492           0 : void SvxTransparenceTabPage::ActivatePage(const SfxItemSet& rSet)
     493             : {
     494           0 :     SFX_ITEMSET_ARG (&rSet,pPageTypeItem,CntUInt16Item,SID_PAGE_TYPE,sal_False);
     495           0 :     if (pPageTypeItem)
     496           0 :         SetPageType(pPageTypeItem->GetValue());
     497             : 
     498           0 :     if(nDlgType == 0) // area dialog
     499           0 :         nPageType = PT_TRANSPARENCE;
     500             : 
     501           0 :     InitPreview ( rSet );
     502           0 : }
     503             : 
     504           0 : int SvxTransparenceTabPage::DeactivatePage(SfxItemSet* _pSet)
     505             : {
     506           0 :     if( _pSet )
     507           0 :         FillItemSet( *_pSet );
     508           0 :     return(LEAVE_PAGE);
     509             : }
     510             : 
     511           0 : void SvxTransparenceTabPage::PointChanged(Window* , RECT_POINT eRcPt)
     512             : {
     513           0 :     eRP = eRcPt;
     514           0 : }
     515             : 
     516             : //
     517             : // Preview-Methods
     518             : //
     519           0 : sal_Bool SvxTransparenceTabPage::InitPreview ( const SfxItemSet& rSet )
     520             : {
     521             :     // set transparencetyp for preview
     522           0 :     if ( aRbtTransOff.IsChecked() )
     523             :     {
     524           0 :         ClickTransOffHdl_Impl(NULL);
     525           0 :     } else if ( aRbtTransLinear.IsChecked() )
     526             :     {
     527           0 :         ClickTransLinearHdl_Impl(NULL);
     528           0 :     } else if ( aRbtTransGradient.IsChecked() )
     529             :     {
     530           0 :         ClickTransGradientHdl_Impl(NULL);
     531             :     }
     532             : 
     533             :     // Get fillstyle for preview
     534           0 :     rXFSet.Put ( ( XFillStyleItem& )    rSet.Get(XATTR_FILLSTYLE) );
     535           0 :     rXFSet.Put ( ( XFillColorItem& )    rSet.Get(XATTR_FILLCOLOR) );
     536           0 :     rXFSet.Put ( ( XFillGradientItem& ) rSet.Get(XATTR_FILLGRADIENT) );
     537           0 :     rXFSet.Put ( ( XFillHatchItem& )    rSet.Get(XATTR_FILLHATCH) );
     538           0 :     rXFSet.Put ( ( XFillBackgroundItem&)rSet.Get(XATTR_FILLBACKGROUND) );
     539           0 :     rXFSet.Put ( ( XFillBitmapItem& )   rSet.Get(XATTR_FILLBITMAP) );
     540             : 
     541           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
     542           0 :     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
     543             : 
     544           0 :     bBitmap = ( ( ( XFillStyleItem& )rSet.Get(XATTR_FILLSTYLE) ).GetValue() == XFILL_BITMAP );
     545             : 
     546             :     // show the right preview window
     547           0 :     if ( bBitmap )
     548             :     {
     549           0 :         aCtlBitmapPreview.Show();
     550           0 :         aCtlXRectPreview.Hide();
     551             :     }
     552             :     else
     553             :     {
     554           0 :         aCtlBitmapPreview.Hide();
     555           0 :         aCtlXRectPreview.Show();
     556             :     }
     557             : 
     558           0 :     return !aRbtTransOff.IsChecked();
     559             : }
     560             : 
     561           0 : void SvxTransparenceTabPage::InvalidatePreview (sal_Bool bEnable)
     562             : {
     563           0 :     if ( bBitmap )
     564             :     {
     565           0 :         if ( bEnable )
     566             :         {
     567           0 :             aCtlBitmapPreview.Enable();
     568           0 :             aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
     569             :         }
     570             :         else
     571           0 :             aCtlBitmapPreview.Disable();
     572           0 :         aCtlBitmapPreview.Invalidate();
     573             :     }
     574             :     else
     575             :     {
     576           0 :         if ( bEnable )
     577             :         {
     578           0 :             aCtlXRectPreview.Enable();
     579           0 :             aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
     580             :         }
     581             :         else
     582           0 :             aCtlXRectPreview.Disable();
     583           0 :         aCtlXRectPreview.Invalidate();
     584             :     }
     585           0 : }
     586             : 
     587           0 : void SvxTransparenceTabPage::PageCreated (SfxAllItemSet aSet)
     588             : {
     589           0 :     SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False);
     590           0 :     SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False);
     591             : 
     592           0 :     if (pPageTypeItem)
     593           0 :         SetPageType(pPageTypeItem->GetValue());
     594           0 :     if (pDlgTypeItem)
     595           0 :         SetDlgType(pDlgTypeItem->GetValue());
     596           0 :     Construct();
     597           0 : }
     598             : /*************************************************************************
     599             : |*
     600             : |*  Dialog to modify fill-attributes
     601             : |*
     602             : \************************************************************************/
     603             : 
     604           0 : SvxAreaTabPage::SvxAreaTabPage( Window* pParent, const SfxItemSet& rInAttrs ) :
     605             : 
     606           0 :     SvxTabPage          ( pParent, CUI_RES( RID_SVXPAGE_AREA ), rInAttrs ),
     607             : 
     608           0 :     aFlProp             ( this, CUI_RES( FL_PROP ) ),
     609           0 :     aTypeLB             ( this, CUI_RES( LB_AREA_TYPE ) ),
     610             : 
     611           0 :     aLbColor            ( this, CUI_RES( LB_COLOR ) ),
     612           0 :     aLbGradient         ( this, CUI_RES( LB_GRADIENT ) ),
     613           0 :     aLbHatching         ( this, CUI_RES( LB_HATCHING ) ),
     614           0 :     aLbBitmap           ( this, CUI_RES( LB_BITMAP ) ),
     615           0 :     aCtlBitmapPreview   ( this, CUI_RES( CTL_BITMAP_PREVIEW ) ),
     616             : 
     617           0 :     aTsbStepCount       ( this, CUI_RES( TSB_STEPCOUNT ) ),
     618           0 :     aFlStepCount        ( this, CUI_RES( FL_STEPCOUNT ) ),
     619           0 :     aNumFldStepCount    ( this, CUI_RES( NUM_FLD_STEPCOUNT ) ),
     620             : 
     621           0 :     aCbxHatchBckgrd     ( this, CUI_RES( CB_HATCHBCKGRD ) ),
     622           0 :     aLbHatchBckgrdColor ( this, CUI_RES( LB_HATCHBCKGRDCOLOR ) ),
     623             : 
     624           0 :     aFlSize             ( this, CUI_RES( FL_SIZE ) ),
     625           0 :     aTsbOriginal        ( this, CUI_RES( TSB_ORIGINAL ) ),
     626           0 :     aTsbScale           ( this, CUI_RES( TSB_SCALE ) ),
     627           0 :     aFtXSize            ( this, CUI_RES( FT_X_SIZE ) ),
     628           0 :     aMtrFldXSize        ( this, CUI_RES( MTR_FLD_X_SIZE ) ),
     629           0 :     aFtYSize            ( this, CUI_RES( FT_Y_SIZE ) ),
     630           0 :     aMtrFldYSize        ( this, CUI_RES( MTR_FLD_Y_SIZE ) ),
     631           0 :     aFlPosition         ( this, CUI_RES( FL_POSITION ) ),
     632           0 :     aCtlPosition        ( this, CUI_RES( CTL_POSITION ), RP_RM, 110, 80, CS_RECT ),
     633           0 :     aFtXOffset          ( this, CUI_RES( FT_X_OFFSET ) ),
     634           0 :     aMtrFldXOffset      ( this, CUI_RES( MTR_FLD_X_OFFSET ) ),
     635           0 :     aFtYOffset          ( this, CUI_RES( FT_Y_OFFSET ) ),
     636           0 :     aMtrFldYOffset      ( this, CUI_RES( MTR_FLD_Y_OFFSET ) ),
     637           0 :     aTsbTile            ( this, CUI_RES( TSB_TILE ) ),
     638           0 :     aTsbStretch         ( this, CUI_RES( TSB_STRETCH ) ),
     639           0 :     aFlOffset           ( this, CUI_RES( FL_OFFSET ) ),
     640           0 :     aRbtRow             ( this, CUI_RES( RBT_ROW ) ),
     641           0 :     aRbtColumn          ( this, CUI_RES( RBT_COLUMN ) ),
     642           0 :     aMtrFldOffset       ( this, CUI_RES( MTR_FLD_OFFSET ) ),
     643             : 
     644           0 :     aCtlXRectPreview    ( this, CUI_RES( CTL_COLOR_PREVIEW ) ),
     645             : 
     646             :     rOutAttrs           ( rInAttrs ),
     647             : 
     648             :     pColorList( NULL ),
     649             :     pGradientList( NULL ),
     650             :     pHatchingList( NULL ),
     651             :     pBitmapList( NULL ),
     652             : 
     653           0 :     pXPool              ( (XOutdevItemPool*) rInAttrs.GetPool() ),
     654             :     aXFillAttr          ( pXPool ),
     655           0 :     rXFSet              ( aXFillAttr.GetItemSet() )
     656             : {
     657           0 :     FreeResource();
     658             : 
     659           0 :     String accName = String(CUI_RES(STR_EXAMPLE));
     660           0 :     aCtlXRectPreview.SetAccessibleName(accName);
     661           0 :     aCtlBitmapPreview.SetAccessibleName(accName);
     662             : 
     663             :     // groups that overlay each other
     664           0 :     aLbBitmap.Hide();
     665           0 :     aCtlBitmapPreview.Hide();
     666             : 
     667           0 :     aFlStepCount.Hide();
     668           0 :     aTsbStepCount.Hide();
     669           0 :     aNumFldStepCount.Hide();
     670             : 
     671           0 :     aTsbTile.Hide();
     672           0 :     aTsbStretch.Hide();
     673           0 :     aTsbScale.Hide();
     674           0 :     aTsbOriginal.Hide();
     675           0 :     aFtXSize.Hide();
     676           0 :     aMtrFldXSize.Hide();
     677           0 :     aFtYSize.Hide();
     678           0 :     aMtrFldYSize.Hide();
     679           0 :     aFlSize.Hide();
     680           0 :     aRbtRow.Hide();
     681           0 :     aRbtColumn.Hide();
     682           0 :     aMtrFldOffset.Hide();
     683           0 :     aFlOffset.Hide();
     684           0 :     aCtlPosition.Hide();
     685           0 :     aFtXOffset.Hide();
     686           0 :     aMtrFldXOffset.Hide();
     687           0 :     aFtYOffset.Hide();
     688           0 :     aMtrFldYOffset.Hide();
     689           0 :     aFlPosition.Hide();
     690             :     // Controls for Hatch-Background
     691           0 :     aCbxHatchBckgrd.Hide();
     692           0 :     aLbHatchBckgrdColor.Hide();
     693             : 
     694             : 
     695           0 :     aTsbOriginal.EnableTriState( sal_False );
     696             : 
     697             : 
     698             :     // this page needs ExchangeSupport
     699           0 :     SetExchangeSupport();
     700             : 
     701             :     // set Metrics
     702           0 :     eFUnit = GetModuleFieldUnit( rInAttrs );
     703             : 
     704           0 :     switch ( eFUnit )
     705             :     {
     706             :         case FUNIT_M:
     707             :         case FUNIT_KM:
     708           0 :             eFUnit = FUNIT_MM;
     709           0 :         break;
     710             :         default: ;//prevent warning
     711             :     }
     712           0 :     SetFieldUnit( aMtrFldXSize, eFUnit, sal_True );
     713           0 :     SetFieldUnit( aMtrFldYSize, eFUnit, sal_True );
     714             : 
     715             :     // get PoolUnit
     716           0 :     SfxItemPool* pPool = rOutAttrs.GetPool();
     717             :     DBG_ASSERT( pPool, "Wo ist der Pool?" );
     718           0 :     ePoolUnit = pPool->GetMetric( XATTR_FILLBMP_SIZEX );
     719             : 
     720             :     // setting the output device
     721           0 :     rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
     722           0 :     rXFSet.Put( XFillColorItem( String(), COL_BLACK ) );
     723           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
     724           0 :     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
     725             : 
     726           0 :     aLbColor.SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyColorHdl_Impl ) );
     727           0 :     aLbHatchBckgrdColor.SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyHatchBckgrdColorHdl_Impl ) );
     728           0 :     aCbxHatchBckgrd.SetToggleHdl( LINK( this, SvxAreaTabPage, ToggleHatchBckgrdColorHdl_Impl ) );
     729             : 
     730             :     aLbGradient.SetSelectHdl(
     731           0 :         LINK( this, SvxAreaTabPage, ModifyGradientHdl_Impl ) );
     732             :     aLbHatching.SetSelectHdl(
     733           0 :         LINK( this, SvxAreaTabPage, ModifyHatchingHdl_Impl ) );
     734             :     aLbBitmap.SetSelectHdl(
     735           0 :         LINK( this, SvxAreaTabPage, ModifyBitmapHdl_Impl ) );
     736             : 
     737             :     aTsbStepCount.SetClickHdl(
     738           0 :         LINK( this, SvxAreaTabPage, ModifyStepCountHdl_Impl ) );
     739             :     aNumFldStepCount.SetModifyHdl(
     740           0 :         LINK( this, SvxAreaTabPage, ModifyStepCountHdl_Impl ) );
     741             : 
     742           0 :     Link aLink( LINK( this, SvxAreaTabPage, ModifyTileHdl_Impl ) );
     743           0 :     aTsbTile.SetClickHdl( aLink );
     744           0 :     aTsbStretch.SetClickHdl( aLink );
     745           0 :     aTsbOriginal.SetClickHdl( aLink );
     746           0 :     aMtrFldXSize.SetModifyHdl( aLink );
     747           0 :     aMtrFldYSize.SetModifyHdl( aLink );
     748           0 :     aRbtRow.SetClickHdl( aLink );
     749           0 :     aRbtColumn.SetClickHdl( aLink );
     750           0 :     aMtrFldOffset.SetModifyHdl( aLink );
     751           0 :     aMtrFldXOffset.SetModifyHdl( aLink );
     752           0 :     aMtrFldYOffset.SetModifyHdl( aLink );
     753           0 :     aTsbScale.SetClickHdl( LINK( this, SvxAreaTabPage, ClickScaleHdl_Impl ) );
     754             : 
     755           0 :     aTypeLB.SetSelectHdl( LINK( this, SvxAreaTabPage, SelectDialogTypeHdl_Impl ) );
     756             : 
     757             :     // #i76307# always paint the preview in LTR, because this is what the document does
     758           0 :     aCtlXRectPreview.EnableRTL(sal_False);
     759             : 
     760           0 :     aNumFldStepCount.SetAccessibleRelationLabeledBy( &aTsbStepCount );
     761           0 :     aCtlPosition.SetAccessibleRelationMemberOf( &aFlPosition );
     762           0 :     aLbHatchBckgrdColor.SetAccessibleRelationLabeledBy( &aCbxHatchBckgrd );
     763           0 :     aLbHatchBckgrdColor.SetAccessibleName(aCbxHatchBckgrd.GetText());
     764             : 
     765           0 :     aLbColor.SetAccessibleRelationMemberOf( &aFlProp );
     766           0 :     aMtrFldOffset.SetAccessibleRelationLabeledBy(&aFlOffset);
     767           0 :     aMtrFldOffset.SetAccessibleName(aFlOffset.GetText());
     768           0 : }
     769             : 
     770             : // -----------------------------------------------------------------------
     771             : 
     772           0 : void SvxAreaTabPage::Construct()
     773             : {
     774             :     // fill colortables / lists
     775           0 :     aLbColor.Fill( pColorList );
     776           0 :     aLbHatchBckgrdColor.Fill ( pColorList );
     777             : 
     778           0 :     aLbGradient.Fill( pGradientList );
     779           0 :     aLbHatching.Fill( pHatchingList );
     780           0 :     aLbBitmap.Fill( pBitmapList );
     781           0 : }
     782             : 
     783             : // -----------------------------------------------------------------------
     784             : 
     785           0 : void SvxAreaTabPage::ActivatePage( const SfxItemSet& rSet )
     786             : {
     787             :     sal_uInt16 nCount;
     788           0 :     SFX_ITEMSET_ARG (&rSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False);
     789           0 :     SFX_ITEMSET_ARG (&rSet,pPosItem,SfxUInt16Item,SID_TABPAGE_POS,sal_False);
     790           0 :     if (pPageTypeItem)
     791           0 :         SetPageType(pPageTypeItem->GetValue());
     792           0 :     if (pPosItem)
     793           0 :         SetPos(pPosItem->GetValue());
     794           0 :     if( nDlgType == 0 ) // area dialog
     795             :     {
     796           0 :         *pbAreaTP = sal_True;
     797             : 
     798           0 :         if( pColorList.is() )
     799             :         {
     800           0 :             sal_uInt16 _nPos = 0;
     801             : 
     802           0 :             if( *pnBitmapListState )
     803             :             {
     804           0 :                 if( *pnBitmapListState & CT_CHANGED )
     805           0 :                     pBitmapList = ( (SvxAreaTabDialog*) GetParentDialog() )->
     806           0 :                                             GetNewBitmapList();
     807             : 
     808           0 :                 _nPos = aLbBitmap.GetSelectEntryPos();
     809             : 
     810           0 :                 aLbBitmap.Clear();
     811           0 :                 aLbBitmap.Fill( pBitmapList );
     812           0 :                 nCount = aLbBitmap.GetEntryCount();
     813           0 :                 if( nCount == 0 )
     814             :                     ; // This case should never occur
     815           0 :                 else if( nCount <= _nPos )
     816           0 :                     aLbBitmap.SelectEntryPos( 0 );
     817             :                 else
     818           0 :                     aLbBitmap.SelectEntryPos( _nPos );
     819           0 :                 ModifyBitmapHdl_Impl( this );
     820             :             }
     821             : 
     822           0 :             if( *pnHatchingListState )
     823             :             {
     824           0 :                 if( *pnHatchingListState & CT_CHANGED )
     825           0 :                     pHatchingList = ( (SvxAreaTabDialog*) GetParentDialog() )->
     826           0 :                                             GetNewHatchingList();
     827             : 
     828           0 :                 _nPos = aLbHatching.GetSelectEntryPos();
     829             : 
     830           0 :                 aLbHatching.Clear();
     831           0 :                 aLbHatching.Fill( pHatchingList );
     832           0 :                 nCount = aLbHatching.GetEntryCount();
     833           0 :                 if( nCount == 0 )
     834             :                     ; // This case should never occur
     835           0 :                 else if( nCount <= _nPos )
     836           0 :                     aLbHatching.SelectEntryPos( 0 );
     837             :                 else
     838           0 :                     aLbHatching.SelectEntryPos( _nPos );
     839           0 :                 ModifyHatchingHdl_Impl( this );
     840             : 
     841           0 :                 ModifyHatchBckgrdColorHdl_Impl( this );
     842             :             }
     843             : 
     844           0 :             if( *pnGradientListState )
     845             :             {
     846           0 :                 if( *pnGradientListState & CT_CHANGED )
     847           0 :                     pGradientList = ( (SvxAreaTabDialog*) GetParentDialog() )->
     848           0 :                                             GetNewGradientList();
     849             : 
     850           0 :                 _nPos = aLbGradient.GetSelectEntryPos();
     851             : 
     852           0 :                 aLbGradient.Clear();
     853           0 :                 aLbGradient.Fill( pGradientList );
     854           0 :                 nCount = aLbGradient.GetEntryCount();
     855           0 :                 if( nCount == 0 )
     856             :                     ; // This case should never occur
     857           0 :                 else if( nCount <= _nPos )
     858           0 :                     aLbGradient.SelectEntryPos( 0 );
     859             :                 else
     860           0 :                     aLbGradient.SelectEntryPos( _nPos );
     861           0 :                 ModifyGradientHdl_Impl( this );
     862             :             }
     863             : 
     864           0 :             if( *pnColorListState )
     865             :             {
     866           0 :                 if( *pnColorListState & CT_CHANGED )
     867           0 :                     pColorList = ( (SvxAreaTabDialog*) GetParentDialog() )->
     868           0 :                                             GetNewColorList();
     869             :                 // aLbColor
     870           0 :                 _nPos = aLbColor.GetSelectEntryPos();
     871           0 :                 aLbColor.Clear();
     872           0 :                 aLbColor.Fill( pColorList );
     873           0 :                 nCount = aLbColor.GetEntryCount();
     874           0 :                 if( nCount == 0 )
     875             :                     ; // This case should never occur
     876           0 :                 else if( nCount <= _nPos )
     877           0 :                     aLbColor.SelectEntryPos( 0 );
     878             :                 else
     879           0 :                     aLbColor.SelectEntryPos( _nPos );
     880             : 
     881           0 :                 ModifyColorHdl_Impl( this );
     882             : 
     883             :                 // Backgroundcolor of hatch
     884           0 :                 _nPos = aLbHatchBckgrdColor.GetSelectEntryPos();
     885           0 :                 aLbHatchBckgrdColor.Clear();
     886           0 :                 aLbHatchBckgrdColor.Fill( pColorList );
     887           0 :                 nCount = aLbHatchBckgrdColor.GetEntryCount();
     888           0 :                 if( nCount == 0 )
     889             :                     ; // This case should never occur
     890           0 :                 else if( nCount <= _nPos )
     891           0 :                     aLbHatchBckgrdColor.SelectEntryPos( 0 );
     892             :                 else
     893           0 :                     aLbHatchBckgrdColor.SelectEntryPos( _nPos );
     894             : 
     895           0 :                 ModifyHatchBckgrdColorHdl_Impl( this );
     896             :             }
     897             : 
     898             :             // evaluate if any other Tabpage set another filltype
     899           0 :             if( aTypeLB.GetSelectEntryPos() > XFILL_NONE)
     900             :             {
     901           0 :                 switch( nPageType )
     902             :                 {
     903             :                     case PT_GRADIENT:
     904           0 :                         aTypeLB.SelectEntryPos( XFILL_GRADIENT );
     905           0 :                         aLbGradient.SelectEntryPos( _nPos );
     906           0 :                         ClickGradientHdl_Impl();
     907           0 :                     break;
     908             : 
     909             :                     case PT_HATCH:
     910           0 :                         aTypeLB.SelectEntryPos( XFILL_HATCH );
     911           0 :                         aLbHatching.SelectEntryPos( _nPos );
     912           0 :                         ClickHatchingHdl_Impl();
     913           0 :                     break;
     914             : 
     915             :                     case PT_BITMAP:
     916           0 :                         aTypeLB.SelectEntryPos( XFILL_BITMAP );
     917           0 :                         aLbBitmap.SelectEntryPos( _nPos );
     918           0 :                         ClickBitmapHdl_Impl();
     919           0 :                     break;
     920             : 
     921             :                     case PT_COLOR:
     922           0 :                         aTypeLB.SelectEntryPos( XFILL_SOLID );
     923           0 :                         aLbColor.SelectEntryPos( _nPos );
     924           0 :                         aLbHatchBckgrdColor.SelectEntryPos( _nPos );
     925           0 :                         ClickColorHdl_Impl();
     926           0 :                     break;
     927             :                 }
     928             :             }
     929           0 :             nPageType = PT_AREA;
     930             :         }
     931             :     }
     932           0 : }
     933             : 
     934             : // -----------------------------------------------------------------------
     935             : 
     936           0 : int SvxAreaTabPage::DeactivatePage( SfxItemSet* _pSet )
     937             : {
     938           0 :     if( nDlgType == 0 ) // area dialog
     939             :     {
     940           0 :         sal_uInt16 nPosOrig = nPos;
     941           0 :         XFillStyle eStyle = (XFillStyle) aTypeLB.GetSelectEntryPos();
     942           0 :         switch( eStyle )
     943             :         {
     944             :             case XFILL_GRADIENT:
     945             :             {
     946           0 :                         nPageType = PT_GRADIENT;
     947           0 :                         nPos = aLbGradient.GetSelectEntryPos();
     948           0 :                         if( nPosOrig != nPos )
     949           0 :                             *pnGradientListState |= CT_MODIFIED;
     950             :             }
     951           0 :             break;
     952             :             case XFILL_HATCH:
     953             :             {
     954           0 :                 nPageType = PT_HATCH;
     955           0 :                 nPos = aLbHatching.GetSelectEntryPos();
     956           0 :                 if( nPosOrig != nPos )
     957           0 :                     *pnHatchingListState |= CT_MODIFIED;
     958             :             }
     959           0 :             break;
     960             :             case XFILL_BITMAP:
     961             :             {
     962           0 :                 nPageType = PT_BITMAP;
     963           0 :                 nPos = aLbBitmap.GetSelectEntryPos();
     964           0 :                 if( nPosOrig != nPos )
     965           0 :                     *pnBitmapListState |= CT_MODIFIED;
     966             :             }
     967           0 :             break;
     968             :             case XFILL_SOLID:
     969             :             {
     970           0 :                 nPageType = PT_COLOR;
     971           0 :                 nPos = aLbColor.GetSelectEntryPos();
     972           0 :                 if( nPosOrig != nPos )
     973           0 :                     *pnColorListState |= CT_MODIFIED;
     974             :             }
     975           0 :             break;
     976             :             default: ;//prevent warning
     977             :         }
     978             :     }
     979             : 
     980           0 :     if( _pSet )
     981           0 :         FillItemSet( *_pSet );
     982             : 
     983           0 :     return( LEAVE_PAGE );
     984             : }
     985             : 
     986             : // -----------------------------------------------------------------------
     987             : 
     988           0 : sal_Bool SvxAreaTabPage::FillItemSet( SfxItemSet& rAttrs )
     989             : {
     990           0 :     const SfxPoolItem* pOld = NULL;
     991             :     sal_uInt16  _nPos;
     992           0 :     sal_Bool    bModified = sal_False;
     993             : 
     994           0 :     if( nDlgType != 0 || *pbAreaTP )
     995             :     {
     996           0 :         XFillStyle eStyle = (XFillStyle) aTypeLB.GetSelectEntryPos();
     997           0 :         XFillStyle eSavedStyle = (XFillStyle) aTypeLB.GetSavedValue();
     998           0 :         switch( eStyle )
     999             :         {
    1000             :             case XFILL_NONE:
    1001             :             {
    1002           0 :                 if(  eSavedStyle != eStyle )
    1003             :                 {
    1004           0 :                     XFillStyleItem aStyleItem( XFILL_NONE );
    1005           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
    1006           0 :                     if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
    1007             :                     {
    1008           0 :                         rAttrs.Put( aStyleItem );
    1009           0 :                         bModified = sal_True;
    1010           0 :                     }
    1011             :                 }
    1012             :             }
    1013           0 :             break;
    1014             :             case XFILL_SOLID:
    1015             :             {
    1016           0 :                  _nPos = aLbColor.GetSelectEntryPos();
    1017           0 :                  if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
    1018           0 :                      _nPos != aLbColor.GetSavedValue() )
    1019             :                  {
    1020             :                      XFillColorItem aItem( aLbColor.GetSelectEntry(),
    1021           0 :                                            aLbColor.GetSelectEntryColor() );
    1022           0 :                      pOld = GetOldItem( rAttrs, XATTR_FILLCOLOR );
    1023           0 :                      if ( !pOld || !( *(const XFillColorItem*)pOld == aItem ) )
    1024             :                      {
    1025           0 :                          rAttrs.Put( aItem );
    1026           0 :                          bModified = sal_True;
    1027           0 :                      }
    1028             :                  }
    1029             :                  // NEW
    1030           0 :                  if( (eSavedStyle != eStyle) &&
    1031             :                      ( bModified ||
    1032           0 :                        SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True ) ) )
    1033             :                  {
    1034           0 :                      XFillStyleItem aStyleItem( XFILL_SOLID );
    1035           0 :                      pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
    1036           0 :                      if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
    1037             :                      {
    1038           0 :                          rAttrs.Put( aStyleItem );
    1039           0 :                          bModified = sal_True;
    1040           0 :                      }
    1041             :                  }
    1042             :             }
    1043           0 :             break;
    1044             :             case XFILL_GRADIENT:
    1045             :             {
    1046           0 :                 _nPos = aLbGradient.GetSelectEntryPos();
    1047           0 :                 if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
    1048           0 :                     _nPos != aLbGradient.GetSavedValue() )
    1049             :                 {
    1050           0 :                     XGradient aGradient = pGradientList->GetGradient( _nPos )->GetGradient();
    1051           0 :                     String aString = aLbGradient.GetSelectEntry();
    1052           0 :                     XFillGradientItem aItem( aString, aGradient );
    1053           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLGRADIENT );
    1054           0 :                     if ( !pOld || !( *(const XFillGradientItem*)pOld == aItem ) )
    1055             :                     {
    1056           0 :                         rAttrs.Put( aItem );
    1057           0 :                         bModified = sal_True;
    1058           0 :                     }
    1059             :                 }
    1060             :                 // NEW
    1061           0 :                 if( (eSavedStyle != eStyle) &&
    1062             :                     ( bModified ||
    1063           0 :                       SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), sal_True ) ) )
    1064             :                 {
    1065           0 :                     XFillStyleItem aStyleItem( XFILL_GRADIENT );
    1066           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
    1067           0 :                     if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
    1068             :                     {
    1069           0 :                         rAttrs.Put( aStyleItem );
    1070           0 :                         bModified = sal_True;
    1071           0 :                     }
    1072             :                 }
    1073             :             }
    1074           0 :             break;
    1075             :             case XFILL_HATCH:
    1076             :             {
    1077           0 :                 _nPos = aLbHatching.GetSelectEntryPos();
    1078           0 :                 if( _nPos != LISTBOX_ENTRY_NOTFOUND &&
    1079           0 :                    _nPos != aLbHatching.GetSavedValue() )
    1080             :                 {
    1081           0 :                     XHatch aHatching = pHatchingList->GetHatch( _nPos )->GetHatch();
    1082           0 :                     String aString = aLbHatching.GetSelectEntry();
    1083           0 :                     XFillHatchItem aItem( aString, aHatching );
    1084           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLHATCH );
    1085           0 :                     if ( !pOld || !( *(const XFillHatchItem*)pOld == aItem ) )
    1086             :                     {
    1087           0 :                         rAttrs.Put( aItem );
    1088           0 :                         bModified = sal_True;
    1089           0 :                     }
    1090             :                 }
    1091           0 :                 XFillBackgroundItem aItem ( aCbxHatchBckgrd.IsChecked() );
    1092           0 :                 rAttrs.Put( aItem );
    1093           0 :                 nPos = aLbHatchBckgrdColor.GetSelectEntryPos();
    1094           0 :                 if( nPos != LISTBOX_ENTRY_NOTFOUND &&
    1095           0 :                      nPos != aLbHatchBckgrdColor.GetSavedValue() )
    1096             :                 {
    1097             :                     XFillColorItem aFillColorItem( aLbHatchBckgrdColor.GetSelectEntry(),
    1098           0 :                                           aLbHatchBckgrdColor.GetSelectEntryColor() );
    1099           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLCOLOR );
    1100           0 :                     if ( !pOld || !( *(const XFillColorItem*)pOld == aFillColorItem ) )
    1101             :                     {
    1102           0 :                         rAttrs.Put( aFillColorItem );
    1103           0 :                         bModified = sal_True;
    1104           0 :                     }
    1105             :                 }
    1106             :                 // NEW
    1107           0 :                 if( (eSavedStyle != eStyle) &&
    1108             :                     ( bModified ||
    1109           0 :                       SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True ) ) )
    1110             :                 {
    1111           0 :                     XFillStyleItem aStyleItem( XFILL_HATCH );
    1112           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
    1113           0 :                     if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
    1114             :                     {
    1115           0 :                         rAttrs.Put( aStyleItem );
    1116           0 :                         bModified = sal_True;
    1117           0 :                     }
    1118           0 :                 }
    1119             :             }
    1120           0 :             break;
    1121             :             case XFILL_BITMAP:
    1122             :             {
    1123           0 :                 nPos = aLbBitmap.GetSelectEntryPos();
    1124           0 :                 if( nPos != LISTBOX_ENTRY_NOTFOUND &&
    1125           0 :                     nPos != aLbBitmap.GetSavedValue() )
    1126             :                 {
    1127           0 :                     XOBitmap aXOBitmap = pBitmapList->GetBitmap( nPos )->GetXBitmap();
    1128           0 :                     String aString = aLbBitmap.GetSelectEntry();
    1129           0 :                     XFillBitmapItem aFillBitmapItem( aString, aXOBitmap );
    1130           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLBITMAP );
    1131           0 :                     if ( !pOld || !( *(const XFillBitmapItem*)pOld == aFillBitmapItem ) )
    1132             :                     {
    1133           0 :                         rAttrs.Put( aFillBitmapItem );
    1134           0 :                         bModified = sal_True;
    1135           0 :                     }
    1136             :                 }
    1137             :                 // NEW
    1138           0 :                 if( (eSavedStyle != eStyle) &&
    1139             :                     ( bModified ||
    1140           0 :                       SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), sal_True ) ) )
    1141             :                 {
    1142           0 :                     XFillStyleItem aStyleItem( XFILL_BITMAP );
    1143           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLSTYLE );
    1144           0 :                     if ( !pOld || !( *(const XFillStyleItem*)pOld == aStyleItem ) )
    1145             :                     {
    1146           0 :                         rAttrs.Put( aStyleItem );
    1147           0 :                         bModified = sal_True;
    1148           0 :                     }
    1149             :                }
    1150             :            }
    1151           0 :            break;
    1152             :        }
    1153             : 
    1154             :         // step size
    1155           0 :         if( aTsbStepCount.IsEnabled() )
    1156             :         {
    1157           0 :             sal_uInt16 nValue = 0;
    1158           0 :             sal_Bool   bValueModified = sal_False;
    1159           0 :             TriState eState = aTsbStepCount.GetState();
    1160           0 :             if( eState == STATE_CHECK )
    1161             :             {
    1162           0 :                 if( eState != aTsbStepCount.GetSavedValue() )
    1163           0 :                     bValueModified = sal_True;
    1164             :             }
    1165             :             else
    1166             :             {
    1167             :                 // condition != Disabled ?
    1168           0 :                 if( aNumFldStepCount.GetText().Len() > 0 )
    1169             :                 {
    1170           0 :                     nValue = (sal_uInt16) aNumFldStepCount.GetValue();
    1171           0 :                     if( nValue != (sal_uInt16) aNumFldStepCount.GetSavedValue().ToInt32() )
    1172           0 :                         bValueModified = sal_True;
    1173             :                 }
    1174             :             }
    1175           0 :             if( bValueModified )
    1176             :             {
    1177           0 :                 XGradientStepCountItem aFillBitmapItem( nValue );
    1178           0 :                 pOld = GetOldItem( rAttrs, XATTR_GRADIENTSTEPCOUNT );
    1179           0 :                 if ( !pOld || !( *(const XGradientStepCountItem*)pOld == aFillBitmapItem ) )
    1180             :                 {
    1181           0 :                     rAttrs.Put( aFillBitmapItem );
    1182           0 :                     bModified = sal_True;
    1183           0 :                 }
    1184             :             }
    1185             :         }
    1186             : 
    1187           0 :         if( aTsbTile.IsEnabled() )
    1188             :         {
    1189           0 :             TriState eState = aTsbTile.GetState();
    1190           0 :             if( eState != aTsbTile.GetSavedValue() )
    1191             :             {
    1192             :                 XFillBmpTileItem aFillBmpTileItem(
    1193           0 :                     sal::static_int_cast< sal_Bool >( eState ) );
    1194           0 :                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILE );
    1195           0 :                 if ( !pOld || !( *(const XFillBmpTileItem*)pOld == aFillBmpTileItem ) )
    1196             :                 {
    1197           0 :                     rAttrs.Put( aFillBmpTileItem );
    1198           0 :                     bModified = sal_True;
    1199           0 :                 }
    1200             :             }
    1201             :         }
    1202             : 
    1203           0 :         if( aTsbStretch.IsEnabled() )
    1204             :         {
    1205           0 :             TriState eState = aTsbStretch.GetState();
    1206           0 :             if( eState != aTsbStretch.GetSavedValue() )
    1207             :             {
    1208             :                 XFillBmpStretchItem aFillBmpStretchItem(
    1209           0 :                     sal::static_int_cast< sal_Bool >( eState ) );
    1210           0 :                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_STRETCH );
    1211           0 :                 if ( !pOld || !( *(const XFillBmpStretchItem*)pOld == aFillBmpStretchItem ) )
    1212             :                 {
    1213           0 :                     rAttrs.Put( aFillBmpStretchItem );
    1214           0 :                     bModified = sal_True;
    1215           0 :                 }
    1216             :             }
    1217             :         }
    1218             : 
    1219             :         // Original size (in the UI) is used as follows:
    1220             :         // Controls are disabled, but have to be set.
    1221             :         // SizeX = 0; SizeY = 0; Log = sal_True
    1222             : 
    1223             :         //aTsbScale
    1224           0 :         TriState eState = aTsbScale.GetState();
    1225           0 :         if( eState != aTsbScale.GetSavedValue() ||
    1226           0 :             ( !aTsbScale.IsEnabled() &&
    1227           0 :               aTsbOriginal.IsEnabled() &&
    1228           0 :               aTsbScale.GetSavedValue() != STATE_CHECK ) )
    1229             :         {
    1230           0 :             XFillBmpSizeLogItem* pItem = NULL;
    1231           0 :             if( aTsbScale.IsEnabled() )
    1232           0 :                 pItem = new XFillBmpSizeLogItem( eState == STATE_NOCHECK );
    1233           0 :             else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK )
    1234           0 :                 pItem = new XFillBmpSizeLogItem( sal_True );
    1235             : 
    1236           0 :             if( pItem )
    1237             :             {
    1238           0 :                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZELOG );
    1239           0 :                 if ( !pOld || !( *(const XFillBmpSizeLogItem*)pOld == *pItem ) )
    1240             :                 {
    1241           0 :                     rAttrs.Put( *pItem );
    1242           0 :                     bModified = sal_True;
    1243             :                 }
    1244           0 :                 delete pItem;
    1245             :             }
    1246             :         }
    1247             : 
    1248             :         //aMtrFldXSize
    1249           0 :         String aStr = aMtrFldXSize.GetText();
    1250             :         {
    1251           0 :             XFillBmpSizeXItem* pItem = NULL;
    1252           0 :             TriState eScaleState = aTsbScale.GetState();
    1253             : 
    1254           0 :             if( aMtrFldXSize.IsEnabled() &&
    1255           0 :                 aStr.Len() > 0  &&
    1256           0 :                 aStr != aMtrFldXSize.GetSavedValue() )
    1257             :             {
    1258           0 :                 if( eScaleState == STATE_NOCHECK )
    1259           0 :                     pItem = new XFillBmpSizeXItem( GetCoreValue( aMtrFldXSize, ePoolUnit ) );
    1260             :                 else
    1261             :                 {
    1262             :                     // Percentage values are set negatively, so that
    1263             :                     // they aren't scaled; this is considered in the item.
    1264           0 :                     pItem = new XFillBmpSizeXItem( -labs( static_cast<long>(aMtrFldXSize.GetValue()) ) );
    1265             :                 }
    1266             :             }
    1267           0 :             else if( aTsbOriginal.IsEnabled() &&
    1268           0 :                      aTsbOriginal.GetState() == STATE_CHECK &&
    1269           0 :                      aMtrFldXSize.GetSavedValue().Len() > 0 )
    1270           0 :                 pItem = new XFillBmpSizeXItem( 0 );
    1271             : 
    1272           0 :             if( pItem )
    1273             :             {
    1274           0 :                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZEX );
    1275           0 :                 if ( !pOld || !( *(const XFillBmpSizeXItem*)pOld == *pItem ) )
    1276             :                 {
    1277           0 :                     rAttrs.Put( *pItem );
    1278           0 :                     bModified = sal_True;
    1279             :                 }
    1280           0 :                 delete pItem;
    1281             :             }
    1282             :         }
    1283             : 
    1284             :         //aMtrFldYSize
    1285           0 :         aStr = aMtrFldYSize.GetText();
    1286             :         {
    1287           0 :             XFillBmpSizeYItem* pItem = NULL;
    1288           0 :             TriState eScaleState = aTsbScale.GetState();
    1289             : 
    1290           0 :             if( aMtrFldYSize.IsEnabled() &&
    1291           0 :                 aStr.Len() > 0  &&
    1292           0 :                 aStr != aMtrFldYSize.GetSavedValue() )
    1293             :             {
    1294           0 :                 if( eScaleState == STATE_NOCHECK )
    1295           0 :                     pItem = new XFillBmpSizeYItem( GetCoreValue( aMtrFldYSize, ePoolUnit ) );
    1296             :                 else
    1297             :                 {
    1298             :                     // Percentage values are set negatively, so that
    1299             :                     // they aren't scaled by the MetricItem;
    1300             :                     // this is considered in the item.
    1301           0 :                     pItem = new XFillBmpSizeYItem( -labs( static_cast<long>(aMtrFldYSize.GetValue()) ) );
    1302             :                 }
    1303             :             }
    1304           0 :             else if( aTsbOriginal.IsEnabled() &&
    1305           0 :                      aTsbOriginal.GetState() == STATE_CHECK &&
    1306           0 :                      aMtrFldYSize.GetSavedValue().Len() > 0 )
    1307           0 :                 pItem = new XFillBmpSizeYItem( 0 );
    1308             : 
    1309           0 :             if( pItem )
    1310             :             {
    1311           0 :                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_SIZEY );
    1312           0 :                 if ( !pOld || !( *(const XFillBmpSizeYItem*)pOld == *pItem ) )
    1313             :                 {
    1314           0 :                     rAttrs.Put( *pItem );
    1315           0 :                     bModified = sal_True;
    1316             :                 }
    1317           0 :                 delete pItem;
    1318             :             }
    1319             :         }
    1320             : 
    1321             :         //aRbtRow
    1322             :         //aRbtColumn
    1323             :         //aMtrFldOffset
    1324           0 :         if( aMtrFldOffset.IsEnabled() )
    1325             :         {
    1326           0 :             String aMtrString = aMtrFldOffset.GetText();
    1327           0 :             if( ( aMtrString.Len() > 0  &&
    1328           0 :                   aMtrString != aMtrFldOffset.GetSavedValue() ) ||
    1329           0 :                   aRbtRow.GetSavedValue() != aRbtRow.IsChecked() ||
    1330           0 :                   aRbtColumn.GetSavedValue() != aRbtColumn.IsChecked() )
    1331             :             {
    1332           0 :                 if( aRbtRow.IsChecked() )
    1333             :                 {
    1334           0 :                     XFillBmpTileOffsetXItem aFillBmpTileOffsetXItem( (sal_uInt16) aMtrFldOffset.GetValue() );
    1335           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILEOFFSETX );
    1336           0 :                     if ( !pOld || !( *(const XFillBmpTileOffsetXItem*)pOld == aFillBmpTileOffsetXItem ) )
    1337             :                     {
    1338           0 :                         rAttrs.Put( aFillBmpTileOffsetXItem );
    1339           0 :                         rAttrs.Put( XFillBmpTileOffsetYItem( 0 ) );
    1340           0 :                         bModified = sal_True;
    1341           0 :                     }
    1342             :                 }
    1343           0 :                 else if( aRbtColumn.IsChecked() )
    1344             :                 {
    1345           0 :                     XFillBmpTileOffsetYItem aFillBmpTileOffsetYItem( (sal_uInt16) aMtrFldOffset.GetValue() );
    1346           0 :                     pOld = GetOldItem( rAttrs, XATTR_FILLBMP_TILEOFFSETY );
    1347           0 :                     if ( !pOld || !( *(const XFillBmpTileOffsetYItem*)pOld == aFillBmpTileOffsetYItem ) )
    1348             :                     {
    1349           0 :                         rAttrs.Put( aFillBmpTileOffsetYItem );
    1350           0 :                         rAttrs.Put( XFillBmpTileOffsetXItem( 0 ) );
    1351           0 :                         bModified = sal_True;
    1352           0 :                     }
    1353             :                 }
    1354           0 :             }
    1355             :         }
    1356             : 
    1357             :         //aCtlPosition
    1358           0 :         if( aCtlPosition.IsEnabled() )
    1359             :         {
    1360           0 :             sal_Bool bPut = sal_False;
    1361           0 :             RECT_POINT _eRP = aCtlPosition.GetActualRP();
    1362             : 
    1363           0 :             if( SFX_ITEM_DONTCARE == rOutAttrs.GetItemState( XATTR_FILLBMP_POS ) )
    1364           0 :                 bPut = sal_True;
    1365             :             else
    1366             :             {
    1367           0 :                 RECT_POINT eValue = ( ( const XFillBmpPosItem& ) rOutAttrs.Get( XATTR_FILLBMP_POS ) ).GetValue();
    1368           0 :                 if( eValue != _eRP )
    1369           0 :                     bPut = sal_True;
    1370             :             }
    1371           0 :             if( bPut )
    1372             :             {
    1373           0 :                 XFillBmpPosItem aFillBmpPosItem( _eRP );
    1374           0 :                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POS );
    1375           0 :                 if ( !pOld || !( *(const XFillBmpPosItem*)pOld == aFillBmpPosItem ) )
    1376             :                 {
    1377           0 :                     rAttrs.Put( aFillBmpPosItem );
    1378           0 :                     bModified = sal_True;
    1379           0 :                 }
    1380             :             }
    1381             :         }
    1382             : 
    1383             :         //aMtrFldXOffset
    1384           0 :         if( aMtrFldXOffset.IsEnabled() )
    1385             :         {
    1386           0 :             String sMtrXOffset = aMtrFldXOffset.GetText();
    1387           0 :             if( sMtrXOffset.Len() > 0  &&
    1388           0 :                 sMtrXOffset != aMtrFldXOffset.GetSavedValue() )
    1389             :             {
    1390           0 :                 XFillBmpPosOffsetXItem aFillBmpPosOffsetXItem( (sal_uInt16) aMtrFldXOffset.GetValue() );
    1391           0 :                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POSOFFSETX );
    1392           0 :                 if ( !pOld || !( *(const XFillBmpPosOffsetXItem*)pOld == aFillBmpPosOffsetXItem ) )
    1393             :                 {
    1394           0 :                     rAttrs.Put( aFillBmpPosOffsetXItem );
    1395           0 :                     bModified = sal_True;
    1396           0 :                 }
    1397           0 :             }
    1398             :         }
    1399             : 
    1400             :         //aMtrFldYOffset
    1401           0 :         if( aMtrFldYOffset.IsEnabled() )
    1402             :         {
    1403           0 :             String sMtrYOffset = aMtrFldYOffset.GetText();
    1404           0 :             if( sMtrYOffset.Len() > 0  &&
    1405           0 :                 sMtrYOffset != aMtrFldYOffset.GetSavedValue() )
    1406             :             {
    1407           0 :                 XFillBmpPosOffsetYItem aFillBmpPosOffsetYItem( (sal_uInt16) aMtrFldYOffset.GetValue() );
    1408           0 :                 pOld = GetOldItem( rAttrs, XATTR_FILLBMP_POSOFFSETY );
    1409           0 :                 if ( !pOld || !( *(const XFillBmpPosOffsetYItem*)pOld == aFillBmpPosOffsetYItem ) )
    1410             :                 {
    1411           0 :                     rAttrs.Put( aFillBmpPosOffsetYItem );
    1412           0 :                     bModified = sal_True;
    1413           0 :                 }
    1414           0 :             }
    1415             :         }
    1416           0 :         rAttrs.Put (SfxUInt16Item(SID_PAGE_TYPE,nPageType));
    1417           0 :         rAttrs.Put (SfxUInt16Item(SID_TABPAGE_POS,nPos));
    1418             :     }
    1419             : 
    1420           0 :     return( bModified );
    1421             : }
    1422             : 
    1423             : // -----------------------------------------------------------------------
    1424             : 
    1425           0 : void SvxAreaTabPage::Reset( const SfxItemSet& rAttrs )
    1426             : {
    1427             :     XFillStyle eXFS;
    1428           0 :     if( rAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE )
    1429             :     {
    1430             :         eXFS = (XFillStyle) ( ( ( const XFillStyleItem& ) rAttrs.
    1431           0 :                                 Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() );
    1432           0 :         aTypeLB.SelectEntryPos( sal::static_int_cast< sal_uInt16 >( eXFS ) );
    1433           0 :         switch( eXFS )
    1434             :         {
    1435             :             case XFILL_NONE:
    1436           0 :                 ClickInvisibleHdl_Impl();
    1437           0 :             break;
    1438             : 
    1439             :             case XFILL_SOLID:
    1440           0 :                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLCOLOR ) )
    1441             :                 {
    1442             :                     XFillColorItem aColorItem( ( const XFillColorItem& )
    1443           0 :                                         rAttrs.Get( XATTR_FILLCOLOR ) );
    1444             : 
    1445           0 :                     aLbColor.SelectEntry( aColorItem.GetColorValue() );
    1446           0 :                     aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() );
    1447             :                 }
    1448           0 :                 ClickColorHdl_Impl();
    1449             : 
    1450           0 :             break;
    1451             : 
    1452             :             case XFILL_GRADIENT:
    1453           0 :                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLGRADIENT ) )
    1454             :                 {
    1455             :                     XFillGradientItem aGradientItem( ( ( const XFillGradientItem& )
    1456           0 :                                             rAttrs.Get( XATTR_FILLGRADIENT ) ) );
    1457           0 :                     String    aString( aGradientItem.GetName() );
    1458           0 :                     XGradient aGradient( aGradientItem.GetGradientValue() );
    1459             : 
    1460           0 :                     aLbGradient.SelectEntryByList( pGradientList, aString, aGradient );
    1461             :                 }
    1462           0 :                 ClickGradientHdl_Impl();
    1463           0 :             break;
    1464             : 
    1465             :             case XFILL_HATCH:
    1466           0 :                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLHATCH ) )
    1467             :                 {
    1468             :                     aLbHatching.SelectEntry( ( ( const XFillHatchItem& )
    1469           0 :                                     rAttrs.Get( XATTR_FILLHATCH ) ).GetName() );
    1470             :                 }
    1471           0 :                 ClickHatchingHdl_Impl();
    1472             : 
    1473           0 :                 if ( SFX_ITEM_DONTCARE != rAttrs.GetItemState ( XATTR_FILLBACKGROUND ) )
    1474             :                 {
    1475           0 :                     aCbxHatchBckgrd.Check ( ( ( const XFillBackgroundItem& ) rAttrs.Get ( XATTR_FILLBACKGROUND ) ).GetValue() );
    1476             :                 }
    1477           0 :                 ToggleHatchBckgrdColorHdl_Impl( this );
    1478           0 :                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLCOLOR ) )
    1479             :                 {
    1480             :                     XFillColorItem aColorItem( ( const XFillColorItem& )
    1481           0 :                                         rAttrs.Get( XATTR_FILLCOLOR ) );
    1482             : 
    1483           0 :                     aLbColor.SelectEntry( aColorItem.GetColorValue() );
    1484           0 :                     aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() );
    1485             :                 }
    1486           0 :             break;
    1487             : 
    1488             :             case XFILL_BITMAP:
    1489             :             {
    1490           0 :                 if( SFX_ITEM_DONTCARE != rAttrs.GetItemState( XATTR_FILLBITMAP ) )
    1491             :                 {
    1492             :                     XFillBitmapItem aBitmapItem( ( const XFillBitmapItem& )
    1493           0 :                                         rAttrs.Get( XATTR_FILLBITMAP ) );
    1494             : 
    1495           0 :                     String aString( aBitmapItem.GetName() );
    1496           0 :                     aLbBitmap.SelectEntry( aString );
    1497             :                 }
    1498           0 :                 ClickBitmapHdl_Impl();
    1499             :             }
    1500           0 :             break;
    1501             : 
    1502             :             default:
    1503           0 :             break;
    1504             :         }
    1505             :     }
    1506             :     else
    1507             :     {
    1508             :         // make all LBs not accessible
    1509           0 :         aLbColor.Hide();
    1510           0 :         aLbGradient.Hide();
    1511           0 :         aLbHatching.Hide();
    1512           0 :         aLbBitmap.Hide();
    1513           0 :         aCtlBitmapPreview.Hide();
    1514           0 :         aLbColor.Disable();
    1515           0 :         aLbColor.Show();
    1516             : 
    1517             :         // so that Reset() also works correctly with Back
    1518           0 :         aTypeLB.SetNoSelection();
    1519             :     }
    1520             : 
    1521             :     // step size
    1522           0 :     if( ( rAttrs.GetItemState( XATTR_GRADIENTSTEPCOUNT ) != SFX_ITEM_DONTCARE ) ||
    1523           0 :         ( rAttrs.GetItemState( XATTR_FILLSTYLE ) != SFX_ITEM_DONTCARE ) )
    1524             :     {
    1525           0 :         aTsbStepCount.EnableTriState( sal_False );
    1526           0 :         sal_uInt16 nValue = ( ( const XGradientStepCountItem& ) rAttrs.Get( XATTR_GRADIENTSTEPCOUNT ) ).GetValue();
    1527           0 :         if( nValue == 0 )
    1528             :         {
    1529           0 :             aTsbStepCount.SetState( STATE_CHECK );
    1530           0 :             aNumFldStepCount.SetText( String() );
    1531             :         }
    1532             :         else
    1533             :         {
    1534           0 :             aTsbStepCount.SetState( STATE_NOCHECK );
    1535           0 :             aNumFldStepCount.SetValue( nValue );
    1536             :         }
    1537           0 :         ModifyStepCountHdl_Impl( &aTsbStepCount );
    1538             :     }
    1539             :     else
    1540             :     {
    1541           0 :         aTsbStepCount.SetState( STATE_DONTKNOW );
    1542           0 :         aNumFldStepCount.SetText( String() );
    1543             :     }
    1544             : 
    1545             :     // attributes for the bitmap filling
    1546             : 
    1547           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_TILE ) != SFX_ITEM_DONTCARE )
    1548             :     {
    1549           0 :         aTsbTile.EnableTriState( sal_False );
    1550             : 
    1551           0 :         if( ( ( const XFillBmpTileItem& ) rAttrs.Get( XATTR_FILLBMP_TILE ) ).GetValue() )
    1552           0 :             aTsbTile.SetState( STATE_CHECK );
    1553             :         else
    1554           0 :             aTsbTile.SetState( STATE_NOCHECK );
    1555             :     }
    1556             :     else
    1557           0 :         aTsbTile.SetState( STATE_DONTKNOW );
    1558             : 
    1559           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_STRETCH ) != SFX_ITEM_DONTCARE )
    1560             :     {
    1561           0 :         aTsbStretch.EnableTriState( sal_False );
    1562             : 
    1563           0 :         if( ( ( const XFillBmpStretchItem& ) rAttrs.Get( XATTR_FILLBMP_STRETCH ) ).GetValue() )
    1564           0 :             aTsbStretch.SetState( STATE_CHECK );
    1565             :         else
    1566           0 :             aTsbStretch.SetState( STATE_NOCHECK );
    1567             :     }
    1568             :     else
    1569           0 :         aTsbStretch.SetState( STATE_DONTKNOW );
    1570             : 
    1571             : 
    1572             :     //aTsbScale
    1573           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_SIZELOG ) != SFX_ITEM_DONTCARE )
    1574             :     {
    1575           0 :         aTsbScale.EnableTriState( sal_False );
    1576             : 
    1577           0 :         if( ( ( const XFillBmpSizeLogItem& ) rAttrs.Get( XATTR_FILLBMP_SIZELOG ) ).GetValue() )
    1578           0 :             aTsbScale.SetState( STATE_NOCHECK );
    1579             :         else
    1580           0 :             aTsbScale.SetState( STATE_CHECK );
    1581             : 
    1582           0 :         ClickScaleHdl_Impl( NULL );
    1583             :     }
    1584             :     else
    1585           0 :         aTsbScale.SetState( STATE_DONTKNOW );
    1586             : 
    1587             : 
    1588             :     // determine status for the original size
    1589           0 :     TriState eOriginal = STATE_NOCHECK;
    1590             : 
    1591             :     //aMtrFldXSize
    1592           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_SIZEX ) != SFX_ITEM_DONTCARE )
    1593             :     {
    1594           0 :         sal_Int32 nValue = ( ( const XFillBmpSizeXItem& ) rAttrs.Get( XATTR_FILLBMP_SIZEX ) ).GetValue();
    1595           0 :         if( aTsbScale.GetState() == STATE_CHECK )
    1596             :         {
    1597             :             // If there's a percentage value in the item,
    1598             :             // it is negative because of the MetricItems.
    1599           0 :             aMtrFldXSize.SetValue( labs( nValue ) );
    1600             :         }
    1601             :         else
    1602           0 :             SetMetricValue( aMtrFldXSize, nValue, ePoolUnit );
    1603           0 :         aMtrFldXSize.SaveValue();
    1604             : 
    1605           0 :         if( nValue == 0 )
    1606             :         {
    1607           0 :             eOriginal = STATE_CHECK;
    1608             :             // value would be too small otherwise when turning off the original size
    1609             :             // (performance problem)
    1610           0 :             aMtrFldXSize.SetValue( 100 );
    1611             :         }
    1612             :     }
    1613             :     else
    1614             :     {
    1615           0 :         aMtrFldXSize.SetText( String() );
    1616           0 :         aMtrFldXSize.SaveValue();
    1617             :     }
    1618             : 
    1619             :     //aMtrFldYSize
    1620           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_SIZEY ) != SFX_ITEM_DONTCARE )
    1621             :     {
    1622           0 :         sal_Int32 nValue = ( ( const XFillBmpSizeYItem& ) rAttrs.Get( XATTR_FILLBMP_SIZEY ) ).GetValue();
    1623           0 :         if( aTsbScale.GetState() == STATE_CHECK )
    1624             :         {
    1625             :             // If there's a percentage value in the item,
    1626             :             // it is negative because of the MetricItems.
    1627           0 :             aMtrFldYSize.SetValue( labs( nValue ) );
    1628             :         }
    1629             :         else
    1630           0 :             SetMetricValue( aMtrFldYSize, nValue, ePoolUnit );
    1631           0 :         aMtrFldYSize.SaveValue();
    1632             : 
    1633           0 :         if( nValue == 0 )
    1634           0 :             aMtrFldYSize.SetValue( 100 ); //s.o.
    1635             :         else
    1636           0 :             eOriginal = STATE_NOCHECK;
    1637             :     }
    1638             :     else
    1639             :     {
    1640           0 :         aMtrFldYSize.SetText( String() );
    1641           0 :         aMtrFldYSize.SaveValue();
    1642           0 :         eOriginal = STATE_NOCHECK;
    1643             :     }
    1644             : 
    1645             :     // aTsbOriginal
    1646           0 :     aTsbOriginal.SetState( eOriginal );
    1647             : 
    1648             :     // #93372# Setting proper state after changing button
    1649           0 :     ModifyTileHdl_Impl( NULL );
    1650             : 
    1651             :     //aRbtRow
    1652             :     //aRbtColumn
    1653             :     //aMtrFldOffset
    1654           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_TILEOFFSETX ) != SFX_ITEM_DONTCARE )
    1655             :     {
    1656           0 :         sal_uInt16 nValue = ( ( const XFillBmpTileOffsetXItem& ) rAttrs.Get( XATTR_FILLBMP_TILEOFFSETX ) ).GetValue();
    1657           0 :         if( nValue > 0 )
    1658             :         {
    1659           0 :             aMtrFldOffset.SetValue( nValue );
    1660           0 :             aRbtRow.Check();
    1661             :         }
    1662           0 :         else if( rAttrs.GetItemState( XATTR_FILLBMP_TILEOFFSETY ) != SFX_ITEM_DONTCARE )
    1663             :         {
    1664           0 :             nValue = ( ( const XFillBmpTileOffsetYItem& ) rAttrs.Get( XATTR_FILLBMP_TILEOFFSETY ) ).GetValue();
    1665           0 :             if( nValue > 0 )
    1666             :             {
    1667           0 :                 aMtrFldOffset.SetValue( nValue );
    1668           0 :                 aRbtColumn.Check();
    1669             :             }
    1670             :         }
    1671             :         else
    1672           0 :             aMtrFldOffset.SetValue( 0 );
    1673             :     }
    1674             :     else
    1675           0 :         aMtrFldOffset.SetText( String() );
    1676             : 
    1677             : 
    1678             :     //aCtlPosition
    1679           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_POS ) != SFX_ITEM_DONTCARE )
    1680             :     {
    1681           0 :         RECT_POINT eValue = ( ( const XFillBmpPosItem& ) rAttrs.Get( XATTR_FILLBMP_POS ) ).GetValue();
    1682           0 :         aCtlPosition.SetActualRP( eValue );
    1683             :     }
    1684             :     else
    1685           0 :         aCtlPosition.Reset();
    1686             : 
    1687             :     //aMtrFldXOffset
    1688           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_POSOFFSETX ) != SFX_ITEM_DONTCARE )
    1689             :     {
    1690           0 :         sal_Int32 nValue = ( ( const XFillBmpPosOffsetXItem& ) rAttrs.Get( XATTR_FILLBMP_POSOFFSETX ) ).GetValue();
    1691           0 :         aMtrFldXOffset.SetValue( nValue );
    1692             :     }
    1693             :     else
    1694           0 :         aMtrFldXOffset.SetText( String() );
    1695             : 
    1696             :     //aMtrFldYOffset
    1697           0 :     if( rAttrs.GetItemState( XATTR_FILLBMP_POSOFFSETY ) != SFX_ITEM_DONTCARE )
    1698             :     {
    1699           0 :         sal_Int32 nValue = ( ( const XFillBmpPosOffsetYItem& ) rAttrs.Get( XATTR_FILLBMP_POSOFFSETY ) ).GetValue();
    1700           0 :         aMtrFldYOffset.SetValue( nValue );
    1701             :     }
    1702             :     else
    1703           0 :         aMtrFldYOffset.SetText( String() );
    1704             : 
    1705             :     // not earlier so that tile and stretch are considered
    1706           0 :     if( aTypeLB.GetSelectEntryPos() == XFILL_BITMAP )
    1707           0 :         ClickBitmapHdl_Impl();
    1708             : 
    1709           0 :     aTypeLB.SaveValue();
    1710           0 :     aLbColor.SaveValue();
    1711           0 :     aLbGradient.SaveValue();
    1712           0 :     aLbHatching.SaveValue();
    1713           0 :     aLbHatchBckgrdColor.SaveValue();
    1714           0 :     aLbBitmap.SaveValue();
    1715           0 :     aTsbStepCount.SaveValue();
    1716           0 :     aNumFldStepCount.SaveValue();
    1717           0 :     aTsbTile.SaveValue();
    1718           0 :     aTsbStretch.SaveValue();
    1719           0 :     aTsbScale.SaveValue();
    1720           0 :     aRbtRow.SaveValue();
    1721           0 :     aRbtColumn.SaveValue();
    1722           0 :     aMtrFldOffset.SaveValue();
    1723           0 :     aMtrFldXOffset.SaveValue();
    1724           0 :     aMtrFldYOffset.SaveValue();
    1725           0 : }
    1726             : 
    1727             : // -----------------------------------------------------------------------
    1728             : 
    1729           0 : SfxTabPage* SvxAreaTabPage::Create( Window* pWindow,
    1730             :                 const SfxItemSet& rAttrs )
    1731             : {
    1732           0 :     return( new SvxAreaTabPage( pWindow, rAttrs ) );
    1733             : }
    1734             : 
    1735             : //------------------------------------------------------------------------
    1736             : 
    1737           0 : sal_uInt16* SvxAreaTabPage::GetRanges()
    1738             : {
    1739           0 :     return( pAreaRanges );
    1740             : }
    1741             : 
    1742             : //------------------------------------------------------------------------
    1743           0 : IMPL_LINK_NOARG(SvxAreaTabPage, SelectDialogTypeHdl_Impl)
    1744             : {
    1745           0 :     switch( (XFillStyle)aTypeLB.GetSelectEntryPos() )
    1746             :     {
    1747           0 :         case XFILL_NONE: ClickInvisibleHdl_Impl(); break;
    1748           0 :         case XFILL_SOLID: ClickColorHdl_Impl(); break;
    1749           0 :         case XFILL_GRADIENT: ClickGradientHdl_Impl(); break;
    1750           0 :         case XFILL_HATCH: ClickHatchingHdl_Impl(); break;
    1751           0 :         case XFILL_BITMAP: ClickBitmapHdl_Impl(); break;
    1752             :     }
    1753             : 
    1754           0 :     return 0;
    1755             : }
    1756             : 
    1757           0 : void SvxAreaTabPage::ClickInvisibleHdl_Impl()
    1758             : {
    1759           0 :     aTsbTile.Hide();
    1760           0 :     aTsbStretch.Hide();
    1761           0 :     aTsbScale.Hide();
    1762           0 :     aTsbOriginal.Hide();
    1763           0 :     aFtXSize.Hide();
    1764           0 :     aMtrFldXSize.Hide();
    1765           0 :     aFtYSize.Hide();
    1766           0 :     aMtrFldYSize.Hide();
    1767           0 :     aFlSize.Hide();
    1768           0 :     aRbtRow.Hide();
    1769           0 :     aRbtColumn.Hide();
    1770           0 :     aMtrFldOffset.Hide();
    1771           0 :     aFlOffset.Hide();
    1772           0 :     aCtlPosition.Hide();
    1773           0 :     aFtXOffset.Hide();
    1774           0 :     aMtrFldXOffset.Hide();
    1775           0 :     aFtYOffset.Hide();
    1776           0 :     aMtrFldYOffset.Hide();
    1777           0 :     aFlPosition.Hide();
    1778             : 
    1779           0 :     aLbColor.Hide();
    1780           0 :     aLbGradient.Hide();
    1781           0 :     aLbHatching.Hide();
    1782           0 :     aLbBitmap.Hide();
    1783           0 :     aCtlXRectPreview.Hide();
    1784           0 :     aCtlBitmapPreview.Hide();
    1785             : 
    1786           0 :     aFlStepCount.Hide();
    1787           0 :     aTsbStepCount.Hide();
    1788           0 :     aNumFldStepCount.Hide();
    1789             : 
    1790             :     // Controls for Hatch-Background
    1791           0 :     aCbxHatchBckgrd.Hide();
    1792           0 :     aLbHatchBckgrdColor.Hide();
    1793             : 
    1794           0 :     rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
    1795           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
    1796           0 :     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
    1797             : 
    1798           0 :     aCtlXRectPreview.Invalidate();
    1799           0 :     aCtlBitmapPreview.Invalidate();
    1800           0 : }
    1801             : 
    1802             : //------------------------------------------------------------------------
    1803             : 
    1804           0 : void SvxAreaTabPage::ClickColorHdl_Impl()
    1805             : {
    1806           0 :     aTsbTile.Hide();
    1807           0 :     aTsbStretch.Hide();
    1808           0 :     aTsbScale.Hide();
    1809           0 :     aTsbOriginal.Hide();
    1810           0 :     aFtXSize.Hide();
    1811           0 :     aMtrFldXSize.Hide();
    1812           0 :     aFtYSize.Hide();
    1813           0 :     aMtrFldYSize.Hide();
    1814           0 :     aFlSize.Hide();
    1815           0 :     aRbtRow.Hide();
    1816           0 :     aRbtColumn.Hide();
    1817           0 :     aMtrFldOffset.Hide();
    1818           0 :     aFlOffset.Hide();
    1819           0 :     aCtlPosition.Hide();
    1820           0 :     aFtXOffset.Hide();
    1821           0 :     aMtrFldXOffset.Hide();
    1822           0 :     aFtYOffset.Hide();
    1823           0 :     aMtrFldYOffset.Hide();
    1824           0 :     aFlPosition.Hide();
    1825             : 
    1826           0 :     aLbColor.Enable();
    1827           0 :     aLbColor.Show();
    1828           0 :     aLbGradient.Hide();
    1829           0 :     aLbHatching.Hide();
    1830           0 :     aLbBitmap.Hide();
    1831           0 :     aCtlXRectPreview.Enable();
    1832           0 :     aCtlXRectPreview.Show();
    1833           0 :     aCtlBitmapPreview.Hide();
    1834             : 
    1835           0 :     aFlStepCount.Hide();
    1836           0 :     aTsbStepCount.Hide();
    1837           0 :     aNumFldStepCount.Hide();
    1838             : 
    1839             :     // Controls for Hatch-Background
    1840           0 :     aCbxHatchBckgrd.Hide();
    1841           0 :     aLbHatchBckgrdColor.Hide();
    1842             : 
    1843             :     // set table text
    1844           0 :     String          aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
    1845           0 :     INetURLObject   aURL( pColorList->GetPath() );
    1846             : 
    1847           0 :     aURL.Append( pColorList->GetName() );
    1848             :     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
    1849             : 
    1850           0 :     if( aURL.getBase().getLength() > 18 )
    1851             :     {
    1852           0 :         aString += String(aURL.getBase()).Copy( 0, 15 );
    1853           0 :         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
    1854             :     }
    1855             :     else
    1856           0 :         aString += String(aURL.getBase());
    1857             : 
    1858           0 :     ModifyColorHdl_Impl( this );
    1859           0 : }
    1860             : 
    1861             : //------------------------------------------------------------------------
    1862             : 
    1863           0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyColorHdl_Impl)
    1864             : {
    1865           0 :     const SfxPoolItem* pPoolItem = NULL;
    1866           0 :     sal_uInt16 _nPos = aLbColor.GetSelectEntryPos();
    1867           0 :     aLbHatchBckgrdColor.SelectEntryPos( _nPos );
    1868           0 :     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
    1869             :     {
    1870           0 :         rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
    1871             :         rXFSet.Put( XFillColorItem( String(),
    1872           0 :                                     aLbColor.GetSelectEntryColor() ) );
    1873             :     }
    1874             :     // NEW
    1875           0 :     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) )
    1876             :     {
    1877           0 :         rXFSet.Put( XFillStyleItem( XFILL_SOLID ) );
    1878           0 :         Color aColor( ( ( const XFillColorItem* ) pPoolItem )->GetColorValue() );
    1879           0 :         rXFSet.Put( XFillColorItem( String(), aColor ) );
    1880             :     }
    1881             :     else
    1882           0 :         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
    1883             : 
    1884           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
    1885           0 :     aCtlXRectPreview.Invalidate();
    1886             : 
    1887           0 :     return( 0L );
    1888             : }
    1889             : //------------------------------------------------------------------------
    1890             : 
    1891           0 : void SvxAreaTabPage::ClickGradientHdl_Impl()
    1892             : {
    1893           0 :     aTsbTile.Hide();
    1894           0 :     aTsbStretch.Hide();
    1895           0 :     aTsbScale.Hide();
    1896           0 :     aTsbOriginal.Hide();
    1897           0 :     aFtXSize.Hide();
    1898           0 :     aMtrFldXSize.Hide();
    1899           0 :     aFtYSize.Hide();
    1900           0 :     aMtrFldYSize.Hide();
    1901           0 :     aFlSize.Hide();
    1902           0 :     aRbtRow.Hide();
    1903           0 :     aRbtColumn.Hide();
    1904           0 :     aMtrFldOffset.Hide();
    1905           0 :     aFlOffset.Hide();
    1906           0 :     aCtlPosition.Hide();
    1907           0 :     aFtXOffset.Hide();
    1908           0 :     aMtrFldXOffset.Hide();
    1909           0 :     aFtYOffset.Hide();
    1910           0 :     aMtrFldYOffset.Hide();
    1911           0 :     aFlPosition.Hide();
    1912             : 
    1913           0 :     aLbColor.Hide();
    1914           0 :     aLbGradient.Enable();
    1915           0 :     aLbGradient.Show();
    1916           0 :     aLbHatching.Hide();
    1917           0 :     aLbBitmap.Hide();
    1918           0 :     aCtlXRectPreview.Enable();
    1919           0 :     aCtlXRectPreview.Show();
    1920           0 :     aCtlBitmapPreview.Hide();
    1921             : 
    1922           0 :     aFlStepCount.Enable();
    1923           0 :     aFlStepCount.Show();
    1924           0 :     aTsbStepCount.Enable();
    1925           0 :     aTsbStepCount.Show();
    1926           0 :     aNumFldStepCount.Show();
    1927             : 
    1928             :     // Controls for Hatch-Background
    1929           0 :     aCbxHatchBckgrd.Hide();
    1930           0 :     aLbHatchBckgrdColor.Hide();
    1931             : 
    1932             :     // set table text
    1933           0 :     String          aString( CUI_RES( RID_SVXSTR_TABLE ) ); aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
    1934           0 :     INetURLObject   aURL( pGradientList->GetPath() );
    1935             : 
    1936           0 :     aURL.Append( pGradientList->GetName() );
    1937             :     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
    1938             : 
    1939           0 :     if( aURL.getBase().getLength() > 18 )
    1940             :     {
    1941           0 :         aString += String(aURL.getBase()).Copy( 0, 15 );
    1942           0 :         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
    1943             :     }
    1944             :     else
    1945           0 :         aString += String(aURL.getBase());
    1946             : 
    1947           0 :     ModifyGradientHdl_Impl( this );
    1948           0 :     ModifyStepCountHdl_Impl( &aTsbStepCount );
    1949           0 : }
    1950             : 
    1951             : //------------------------------------------------------------------------
    1952             : 
    1953           0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyGradientHdl_Impl)
    1954             : {
    1955           0 :     const SfxPoolItem* pPoolItem = NULL;
    1956           0 :     sal_uInt16 _nPos = aLbGradient.GetSelectEntryPos();
    1957           0 :     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
    1958             :     {
    1959             :         // fill ItemSet and pass it on to aCtlXRectPreview
    1960           0 :         XGradientEntry* pEntry = pGradientList->GetGradient( _nPos );
    1961             : 
    1962           0 :         rXFSet.Put( XFillStyleItem( XFILL_GRADIENT ) );
    1963             :         rXFSet.Put( XFillGradientItem( String(),
    1964           0 :                                        pEntry->GetGradient() ) );
    1965             :     }
    1966           0 :     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), sal_True, &pPoolItem ) )
    1967             :     {
    1968           0 :         rXFSet.Put( XFillStyleItem( XFILL_GRADIENT ) );
    1969           0 :         rXFSet.Put( XFillGradientItem( String(), ( ( const XFillGradientItem* ) pPoolItem )->GetGradientValue() ) );
    1970             :     }
    1971             :     else
    1972           0 :         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
    1973             : 
    1974           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
    1975           0 :     aCtlXRectPreview.Invalidate();
    1976             : 
    1977           0 :     return( 0L );
    1978             : }
    1979             : 
    1980             : //------------------------------------------------------------------------
    1981             : 
    1982           0 : void SvxAreaTabPage::ClickHatchingHdl_Impl()
    1983             : {
    1984           0 :     aLbColor.Hide();
    1985           0 :     aLbGradient.Hide();
    1986           0 :     aLbHatching.Enable();
    1987           0 :     aLbHatching.Show();
    1988           0 :     aLbBitmap.Hide();
    1989           0 :     aCtlXRectPreview.Enable();
    1990           0 :     aCtlXRectPreview.Show();
    1991           0 :     aCtlBitmapPreview.Hide();
    1992             : 
    1993           0 :     aFlStepCount.Hide();
    1994           0 :     aTsbStepCount.Hide();
    1995           0 :     aNumFldStepCount.Hide();
    1996             : 
    1997           0 :     aTsbTile.Hide();
    1998           0 :     aTsbStretch.Hide();
    1999           0 :     aTsbScale.Hide();
    2000           0 :     aTsbOriginal.Hide();
    2001           0 :     aFtXSize.Hide();
    2002           0 :     aMtrFldXSize.Hide();
    2003           0 :     aFtYSize.Hide();
    2004           0 :     aMtrFldYSize.Hide();
    2005           0 :     aFlSize.Hide();
    2006           0 :     aRbtRow.Hide();
    2007           0 :     aRbtColumn.Hide();
    2008           0 :     aMtrFldOffset.Hide();
    2009           0 :     aFlOffset.Hide();
    2010           0 :     aCtlPosition.Hide();
    2011           0 :     aFtXOffset.Hide();
    2012           0 :     aMtrFldXOffset.Hide();
    2013           0 :     aFtYOffset.Hide();
    2014           0 :     aMtrFldYOffset.Hide();
    2015           0 :     aFlPosition.Hide();
    2016             : 
    2017             :     // Controls for Hatch-Background
    2018           0 :     aCbxHatchBckgrd.Show();
    2019           0 :     aLbHatchBckgrdColor.Show();
    2020           0 :     aCbxHatchBckgrd.Enable();
    2021           0 :     aLbHatchBckgrdColor.Enable();
    2022             : 
    2023             :     // set table text
    2024           0 :     String          aString( CUI_RES( RID_SVXSTR_TABLE ) );     aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
    2025           0 :     INetURLObject   aURL( pHatchingList->GetPath() );
    2026             : 
    2027           0 :     aURL.Append( pHatchingList->GetName() );
    2028             :     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
    2029             : 
    2030           0 :     if( aURL.getBase().getLength() > 18 )
    2031             :     {
    2032           0 :         aString += String(String(aURL.getBase()).Copy( 0, 15 ));
    2033           0 :         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
    2034             :     }
    2035             :     else
    2036           0 :         aString += String(aURL.getBase());
    2037             : 
    2038           0 :     ModifyHatchingHdl_Impl( this );
    2039           0 :     ModifyHatchBckgrdColorHdl_Impl( this );
    2040           0 :     ToggleHatchBckgrdColorHdl_Impl( this );
    2041           0 : }
    2042             : 
    2043             : //------------------------------------------------------------------------
    2044             : 
    2045           0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyHatchingHdl_Impl)
    2046             : {
    2047           0 :     const SfxPoolItem* pPoolItem = NULL;
    2048           0 :     sal_uInt16 _nPos = aLbHatching.GetSelectEntryPos();
    2049           0 :     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
    2050             :     {
    2051             :         // fill ItemSet and pass it on to aCtlXRectPreview
    2052           0 :         XHatchEntry* pEntry = pHatchingList->GetHatch( _nPos );
    2053             : 
    2054           0 :         rXFSet.Put( XFillStyleItem( XFILL_HATCH ) );
    2055           0 :         rXFSet.Put( XFillHatchItem( String(), pEntry->GetHatch() ) );
    2056             :     }
    2057           0 :     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), sal_True, &pPoolItem ) )
    2058             :     {
    2059           0 :         rXFSet.Put( XFillStyleItem( XFILL_HATCH ) );
    2060           0 :         rXFSet.Put( XFillHatchItem( String(), ( ( const XFillHatchItem* ) pPoolItem )->GetHatchValue() ) );
    2061             :     }
    2062             :     else
    2063           0 :         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
    2064             : 
    2065           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
    2066           0 :     aCtlXRectPreview.Invalidate();
    2067             : 
    2068           0 :     return( 0L );
    2069             : }
    2070             : 
    2071             : //------------------------------------------------------------------------
    2072             : 
    2073           0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyHatchBckgrdColorHdl_Impl)
    2074             : {
    2075           0 :     const SfxPoolItem* pPoolItem = NULL;
    2076           0 :     sal_uInt16 _nPos = aLbHatchBckgrdColor.GetSelectEntryPos();
    2077           0 :     aLbColor.SelectEntryPos( _nPos );
    2078           0 :     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
    2079             :     {
    2080             :         rXFSet.Put( XFillColorItem( String(),
    2081           0 :                                     aLbHatchBckgrdColor.GetSelectEntryColor() ) );
    2082             :     }
    2083           0 :     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), sal_True, &pPoolItem ) )
    2084             :     {
    2085           0 :         Color aColor( ( ( const XFillColorItem* ) pPoolItem )->GetColorValue() );
    2086           0 :         rXFSet.Put( XFillColorItem( String(), aColor ) );
    2087             :     }
    2088             :     else
    2089           0 :         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
    2090             : 
    2091           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
    2092           0 :     aCtlXRectPreview.Invalidate();
    2093             : 
    2094           0 :     return( 0L );
    2095             : }
    2096             : 
    2097             : //------------------------------------------------------------------------
    2098             : 
    2099           0 : IMPL_LINK_NOARG(SvxAreaTabPage, ToggleHatchBckgrdColorHdl_Impl)
    2100             : {
    2101             :     // switch on/off backgroundcolor for hatches
    2102           0 :     aLbHatchBckgrdColor.Enable( aCbxHatchBckgrd.IsChecked() );
    2103             : 
    2104           0 :     XFillBackgroundItem aItem( aCbxHatchBckgrd.IsChecked() );
    2105           0 :     rXFSet.Put ( aItem, XATTR_FILLBACKGROUND );
    2106             : 
    2107           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
    2108           0 :     aCtlXRectPreview.Invalidate();
    2109             : 
    2110           0 :     if( aLbHatchBckgrdColor.GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND )
    2111             :     {
    2112           0 :         if ( SFX_ITEM_SET == rOutAttrs.GetItemState( XATTR_FILLCOLOR ) )//>= SFX_ITEM_DEFAULT )
    2113             :         {
    2114           0 :             XFillColorItem aColorItem( (const XFillColorItem&)rOutAttrs.Get( XATTR_FILLCOLOR ) );
    2115           0 :             aLbHatchBckgrdColor.SelectEntry( aColorItem.GetColorValue() );
    2116             :         }
    2117             :     }
    2118             : 
    2119           0 :     return( 0L );
    2120             : }
    2121             : 
    2122             : //------------------------------------------------------------------------
    2123             : 
    2124           0 : void SvxAreaTabPage::ClickBitmapHdl_Impl()
    2125             : {
    2126           0 :     aLbColor.Hide();
    2127           0 :     aLbGradient.Hide();
    2128           0 :     aLbHatching.Hide();
    2129           0 :     aLbBitmap.Enable();
    2130           0 :     aLbBitmap.Show();
    2131           0 :     aCtlBitmapPreview.Enable();
    2132           0 :     aCtlBitmapPreview.Show();
    2133           0 :     aCtlXRectPreview.Hide();
    2134           0 :     aFlStepCount.Hide();
    2135           0 :     aTsbStepCount.Hide();
    2136           0 :     aNumFldStepCount.Hide();
    2137             : 
    2138           0 :     aTsbTile.Enable();
    2139           0 :     aTsbStretch.Enable();
    2140           0 :     aTsbScale.Enable();
    2141           0 :     aTsbOriginal.Enable();
    2142           0 :     aFtXSize.Enable();
    2143           0 :     aMtrFldXSize.Enable();
    2144           0 :     aFtYSize.Enable();
    2145           0 :     aMtrFldYSize.Enable();
    2146           0 :     aFlSize.Enable();
    2147           0 :     aCtlPosition.Enable();
    2148           0 :     aFtXOffset.Enable();
    2149           0 :     aMtrFldXOffset.Enable();
    2150           0 :     aFtYOffset.Enable();
    2151           0 :     aMtrFldYOffset.Enable();
    2152           0 :     aFlPosition.Enable();
    2153           0 :     aRbtRow.Enable();
    2154           0 :     aRbtColumn.Enable();
    2155           0 :     aMtrFldOffset.Enable();
    2156           0 :     aFlOffset.Enable();
    2157             : 
    2158             :     // Controls for Hatch-Background
    2159           0 :     aCbxHatchBckgrd.Hide();
    2160           0 :     aLbHatchBckgrdColor.Hide();
    2161             : 
    2162           0 :     aTsbTile.Show();
    2163           0 :     aTsbStretch.Show();
    2164           0 :     aTsbScale.Show();
    2165           0 :     aTsbOriginal.Show();
    2166           0 :     aFtXSize.Show();
    2167           0 :     aMtrFldXSize.Show();
    2168           0 :     aFtYSize.Show();
    2169           0 :     aMtrFldYSize.Show();
    2170           0 :     aFlSize.Show();
    2171           0 :     aCtlPosition.Show();
    2172           0 :     aFtXOffset.Show();
    2173           0 :     aMtrFldXOffset.Show();
    2174           0 :     aFtYOffset.Show();
    2175           0 :     aMtrFldYOffset.Show();
    2176           0 :     aFlPosition.Show();
    2177           0 :     aRbtRow.Show();
    2178           0 :     aRbtColumn.Show();
    2179           0 :     aMtrFldOffset.Show();
    2180           0 :     aFlOffset.Show();
    2181             : 
    2182             :     // set table text
    2183           0 :     String          aString( CUI_RES( RID_SVXSTR_TABLE ) );     aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": " ) );
    2184           0 :     INetURLObject   aURL( pBitmapList->GetPath() );
    2185             : 
    2186           0 :     aURL.Append( pBitmapList->GetName() );
    2187             :     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
    2188             : 
    2189           0 :     if( aURL.getBase().getLength() > 18 )
    2190             :     {
    2191           0 :         aString += String(aURL.getBase()).Copy( 0, 15 );
    2192           0 :         aString.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "..." ) );
    2193             :     }
    2194             :     else
    2195           0 :         aString += String(aURL.getBase());
    2196             : 
    2197           0 :     ModifyBitmapHdl_Impl( this );
    2198           0 :     ModifyTileHdl_Impl( &aTsbOriginal );
    2199           0 : }
    2200             : 
    2201             : //------------------------------------------------------------------------
    2202             : 
    2203           0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyBitmapHdl_Impl)
    2204             : {
    2205           0 :     const SfxPoolItem* pPoolItem = NULL;
    2206           0 :     sal_uInt16 _nPos = aLbBitmap.GetSelectEntryPos();
    2207           0 :     if( _nPos != LISTBOX_ENTRY_NOTFOUND )
    2208             :     {
    2209             :         // fill ItemSet and pass it on to aCtlXRectPreview
    2210           0 :         XBitmapEntry* pEntry = pBitmapList->GetBitmap( _nPos );
    2211             : 
    2212           0 :         rXFSet.Put( XFillStyleItem( XFILL_BITMAP ) );
    2213           0 :         rXFSet.Put( XFillBitmapItem( String(), pEntry->GetXBitmap() ) );
    2214             :     }
    2215           0 :     else if( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), sal_True, &pPoolItem ) )
    2216             :     {
    2217           0 :         rXFSet.Put( XFillStyleItem( XFILL_BITMAP ) );
    2218           0 :         rXFSet.Put( XFillBitmapItem( String(), ( ( const XFillBitmapItem* ) pPoolItem )->GetBitmapValue() ) );
    2219             :     }
    2220             :     else
    2221           0 :         rXFSet.Put( XFillStyleItem( XFILL_NONE ) );
    2222             : 
    2223           0 :     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
    2224           0 :     aCtlBitmapPreview.Invalidate();
    2225             : 
    2226           0 :     return( 0L );
    2227             : }
    2228             : 
    2229             : //------------------------------------------------------------------------
    2230             : 
    2231           0 : IMPL_LINK( SvxAreaTabPage, ModifyStepCountHdl_Impl, void *, p )
    2232             : {
    2233           0 :     if( p == &aTsbStepCount )
    2234             :     {
    2235           0 :         if( aTsbStepCount.GetState() == STATE_NOCHECK )
    2236             :         {
    2237           0 :             if( aNumFldStepCount.GetText().Len() == 0 )
    2238           0 :                 aNumFldStepCount.SetText(rtl::OUString("64"));
    2239             : 
    2240           0 :             aNumFldStepCount.Enable();
    2241             :         }
    2242             :         else
    2243           0 :             aNumFldStepCount.Disable();
    2244             :     }
    2245             : 
    2246           0 :     sal_uInt16 nValue = 0;
    2247           0 :     if( aTsbStepCount.GetState() != STATE_CHECK )
    2248             :     {
    2249             :         // condition != Disabled ?
    2250           0 :         if( aNumFldStepCount.GetText().Len() > 0 )
    2251           0 :             nValue = (sal_uInt16) aNumFldStepCount.GetValue();
    2252             :     }
    2253           0 :     rXFSet.Put( XGradientStepCountItem( nValue ) );
    2254           0 :     aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
    2255           0 :     aCtlXRectPreview.Invalidate();
    2256             : 
    2257           0 :     return( 0L );
    2258             : }
    2259             : 
    2260             : //------------------------------------------------------------------------
    2261             : 
    2262           0 : IMPL_LINK_NOARG(SvxAreaTabPage, ModifyTileHdl_Impl)
    2263             : {
    2264           0 :     TriState eState = aTsbTile.GetState();
    2265           0 :     if( eState == STATE_CHECK )
    2266             :     {
    2267           0 :         aTsbStretch.Disable();
    2268           0 :         aRbtRow.Enable();
    2269           0 :         aRbtColumn.Enable();
    2270           0 :         aMtrFldOffset.Enable();
    2271           0 :         aFlOffset.Enable();
    2272             : 
    2273           0 :         aCtlPosition.Enable();
    2274           0 :         aCtlPosition.Invalidate();
    2275           0 :         aFtXOffset.Enable();
    2276           0 :         aMtrFldXOffset.Enable();
    2277           0 :         aFtYOffset.Enable();
    2278           0 :         aMtrFldYOffset.Enable();
    2279           0 :         aFlPosition.Enable();
    2280             : 
    2281           0 :         aTsbScale.Enable();
    2282           0 :         aTsbOriginal.Enable();
    2283           0 :         aFtXSize.Enable();
    2284           0 :         aMtrFldXSize.Enable();
    2285           0 :         aFtYSize.Enable();
    2286           0 :         aMtrFldYSize.Enable();
    2287           0 :         aFlSize.Enable();
    2288             :     }
    2289           0 :     else if( eState == STATE_NOCHECK )
    2290             :     {
    2291           0 :         aTsbStretch.Enable();
    2292           0 :         aRbtRow.Disable();
    2293           0 :         aRbtColumn.Disable();
    2294           0 :         aMtrFldOffset.Disable();
    2295           0 :         aFlOffset.Disable();
    2296             : 
    2297           0 :         aCtlPosition.Disable();
    2298           0 :         aCtlPosition.Invalidate();
    2299           0 :         aFtXOffset.Disable();
    2300           0 :         aMtrFldXOffset.Disable();
    2301           0 :         aFtYOffset.Disable();
    2302           0 :         aMtrFldYOffset.Disable();
    2303           0 :         aFlPosition.Disable();
    2304             : 
    2305           0 :         if( aTsbStretch.GetState() != STATE_NOCHECK )
    2306             :         {
    2307           0 :             aTsbScale.Disable();
    2308           0 :             aTsbOriginal.Disable();
    2309           0 :             aFtXSize.Disable();
    2310           0 :             aMtrFldXSize.Disable();
    2311           0 :             aFtYSize.Disable();
    2312           0 :             aMtrFldYSize.Disable();
    2313           0 :             aFlSize.Disable();
    2314             :         }
    2315             :         else
    2316             :         {
    2317           0 :             aTsbScale.Enable();
    2318           0 :             aTsbOriginal.Enable();
    2319           0 :             aFtXSize.Enable();
    2320           0 :             aMtrFldXSize.Enable();
    2321           0 :             aFtYSize.Enable();
    2322           0 :             aMtrFldYSize.Enable();
    2323           0 :             aFlSize.Enable();
    2324             :         }
    2325             :     }
    2326             :     else
    2327             :     {
    2328           0 :         aTsbStretch.Disable();
    2329           0 :         aRbtRow.Disable();
    2330           0 :         aRbtColumn.Disable();
    2331           0 :         aMtrFldOffset.Disable();
    2332           0 :         aFlOffset.Disable();
    2333             : 
    2334           0 :         aCtlPosition.Disable();
    2335           0 :         aCtlPosition.Invalidate();
    2336           0 :         aFtXOffset.Disable();
    2337           0 :         aMtrFldXOffset.Disable();
    2338           0 :         aFtYOffset.Disable();
    2339           0 :         aMtrFldYOffset.Disable();
    2340           0 :         aFlPosition.Disable();
    2341             : 
    2342           0 :         aTsbScale.Disable();
    2343           0 :         aTsbOriginal.Disable();
    2344           0 :         aFtXSize.Disable();
    2345           0 :         aMtrFldXSize.Disable();
    2346           0 :         aFtYSize.Disable();
    2347           0 :         aMtrFldYSize.Disable();
    2348           0 :         aFlSize.Disable();
    2349             :     }
    2350             : 
    2351           0 :     if( aTsbOriginal.GetState() == STATE_CHECK )
    2352             :     {
    2353           0 :         aMtrFldXSize.SetText( String() );
    2354           0 :         aMtrFldYSize.SetText( String() );
    2355           0 :         aFtXSize.Disable();
    2356           0 :         aFtYSize.Disable();
    2357           0 :         aMtrFldXSize.Disable();
    2358           0 :         aMtrFldYSize.Disable();
    2359           0 :         aTsbScale.Disable();
    2360             :     }
    2361             :     else
    2362             :     {
    2363           0 :         aMtrFldXSize.SetValue( aMtrFldXSize.GetValue() );
    2364           0 :         aMtrFldYSize.SetValue( aMtrFldYSize.GetValue() );
    2365             :     }
    2366             : 
    2367           0 :     rXFSet.Put( XFillBmpTileItem( sal::static_int_cast< sal_Bool >( eState ) ) );
    2368             : 
    2369           0 :     if( aTsbStretch.IsEnabled() )
    2370             :         rXFSet.Put(
    2371             :             XFillBmpStretchItem(
    2372           0 :                 sal::static_int_cast< sal_Bool >( aTsbStretch.GetState() ) ) );
    2373             : 
    2374           0 :     if( aTsbScale.IsEnabled() )
    2375           0 :         rXFSet.Put( XFillBmpSizeLogItem( aTsbScale.GetState() == STATE_NOCHECK ) );
    2376             : 
    2377           0 :     if( aMtrFldXSize.IsEnabled() )
    2378             :     {
    2379           0 :         XFillBmpSizeXItem* pItem = NULL;
    2380           0 :         TriState eScaleState = aTsbScale.GetState();
    2381             : 
    2382           0 :         if( eScaleState == STATE_NOCHECK )
    2383           0 :             pItem = new XFillBmpSizeXItem( GetCoreValue( aMtrFldXSize, ePoolUnit ) );
    2384             :         else
    2385           0 :             pItem = new XFillBmpSizeXItem( -labs( static_cast<long>(aMtrFldXSize.GetValue()) ) );
    2386             : 
    2387           0 :         rXFSet.Put( *pItem );
    2388             : 
    2389           0 :         delete pItem;
    2390             :     }
    2391           0 :     else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK )
    2392             :     {
    2393             :         // original size -> size == 0
    2394           0 :         rXFSet.Put( XFillBmpSizeXItem( 0 ) );
    2395           0 :         rXFSet.Put( XFillBmpSizeLogItem( sal_True ) );
    2396             :     }
    2397             : 
    2398           0 :     if( aMtrFldYSize.IsEnabled() )
    2399             :     {
    2400           0 :         XFillBmpSizeYItem* pItem = NULL;
    2401           0 :         TriState eScaleState = aTsbScale.GetState();
    2402             : 
    2403           0 :         if( eScaleState == STATE_NOCHECK )
    2404           0 :             pItem = new XFillBmpSizeYItem( GetCoreValue( aMtrFldYSize, ePoolUnit ) );
    2405             :         else
    2406           0 :             pItem = new XFillBmpSizeYItem( -labs( static_cast<long>(aMtrFldYSize.GetValue()) ) );
    2407             : 
    2408           0 :         rXFSet.Put( *pItem );
    2409             : 
    2410           0 :         delete pItem;
    2411             :     }
    2412           0 :     else if( aTsbOriginal.IsEnabled() && aTsbOriginal.GetState() == STATE_CHECK )
    2413             :     {
    2414             :         // original size -> size == 0
    2415           0 :         rXFSet.Put( XFillBmpSizeYItem( 0 ) );
    2416           0 :         rXFSet.Put( XFillBmpSizeLogItem( sal_True ) );
    2417             :     }
    2418             : 
    2419           0 :     if( aMtrFldOffset.IsEnabled() )
    2420             :     {
    2421           0 :         if( aRbtRow.IsChecked() )
    2422             :         {
    2423           0 :             rXFSet.Put( XFillBmpTileOffsetXItem( (sal_uInt16) aMtrFldOffset.GetValue() ) );
    2424           0 :             rXFSet.Put( XFillBmpTileOffsetYItem( (sal_uInt16) 0 ) );
    2425             :         }
    2426           0 :         else if( aRbtColumn.IsChecked() )
    2427             :         {
    2428           0 :             rXFSet.Put( XFillBmpTileOffsetXItem( (sal_uInt16) 0 ) );
    2429           0 :             rXFSet.Put( XFillBmpTileOffsetYItem( (sal_uInt16) aMtrFldOffset.GetValue() ) );
    2430             :         }
    2431             :     }
    2432             : 
    2433           0 :     if( aCtlPosition.IsEnabled() )
    2434           0 :         rXFSet.Put( XFillBmpPosItem( aCtlPosition.GetActualRP() ) );
    2435             : 
    2436           0 :     if( aMtrFldXOffset.IsEnabled() )
    2437           0 :         rXFSet.Put( XFillBmpPosOffsetXItem( (sal_uInt16) aMtrFldXOffset.GetValue() ) );
    2438             : 
    2439           0 :     if( aMtrFldYOffset.IsEnabled() )
    2440           0 :         rXFSet.Put( XFillBmpPosOffsetYItem( (sal_uInt16) aMtrFldYOffset.GetValue() ) );
    2441             : 
    2442             : 
    2443           0 :     aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
    2444           0 :     aCtlBitmapPreview.Invalidate();
    2445             : 
    2446           0 :     return( 0L );
    2447             : }
    2448             : 
    2449             : //------------------------------------------------------------------------
    2450             : 
    2451           0 : IMPL_LINK_NOARG(SvxAreaTabPage, ClickScaleHdl_Impl)
    2452             : {
    2453           0 :     if( aTsbScale.GetState() == STATE_CHECK )
    2454             :     {
    2455           0 :         aMtrFldXSize.SetDecimalDigits( 0 );
    2456           0 :         aMtrFldXSize.SetUnit( FUNIT_CUSTOM );
    2457           0 :         aMtrFldXSize.SetValue( 100 );
    2458           0 :         aMtrFldXSize.SetMax( 100 );
    2459           0 :         aMtrFldXSize.SetLast( 100 );
    2460             : 
    2461           0 :         aMtrFldYSize.SetDecimalDigits( 0 );
    2462           0 :         aMtrFldYSize.SetUnit( FUNIT_CUSTOM );
    2463           0 :         aMtrFldYSize.SetValue( 100 );
    2464           0 :         aMtrFldYSize.SetMax( 100 );
    2465           0 :         aMtrFldYSize.SetLast( 100 );
    2466             :     }
    2467             :     else
    2468             :     {
    2469           0 :         aMtrFldXSize.SetDecimalDigits( 2 );
    2470           0 :         aMtrFldXSize.SetUnit( eFUnit );
    2471           0 :         aMtrFldXSize.SetValue( 100 );
    2472           0 :         aMtrFldXSize.SetMax( 999900 );
    2473           0 :         aMtrFldXSize.SetLast( 100000 );
    2474             : 
    2475           0 :         aMtrFldYSize.SetDecimalDigits( 2 );
    2476           0 :         aMtrFldYSize.SetUnit( eFUnit );
    2477           0 :         aMtrFldYSize.SetValue( 100 );
    2478           0 :         aMtrFldYSize.SetMax( 999900 );
    2479           0 :         aMtrFldYSize.SetLast( 100000 );
    2480             :     }
    2481             : 
    2482           0 :     ModifyTileHdl_Impl( NULL );
    2483             : 
    2484           0 :     return( 0L );
    2485             : }
    2486             : 
    2487             : //------------------------------------------------------------------------
    2488             : 
    2489           0 : void SvxAreaTabPage::PointChanged( Window* pWindow, RECT_POINT eRcPt )
    2490             : {
    2491           0 :     eRP = eRcPt;
    2492             : 
    2493             :     // alignment of the bitmap fill
    2494           0 :     ModifyTileHdl_Impl( pWindow );
    2495           0 : }
    2496             : 
    2497           0 : void SvxAreaTabPage::PageCreated (SfxAllItemSet aSet)
    2498             : {
    2499           0 :     SFX_ITEMSET_ARG (&aSet,pColorListItem,SvxColorListItem,SID_COLOR_TABLE,sal_False);
    2500           0 :     SFX_ITEMSET_ARG (&aSet,pGradientListItem,SvxGradientListItem,SID_GRADIENT_LIST,sal_False);
    2501           0 :     SFX_ITEMSET_ARG (&aSet,pHatchingListItem,SvxHatchListItem,SID_HATCH_LIST,sal_False);
    2502           0 :     SFX_ITEMSET_ARG (&aSet,pBitmapListItem,SvxBitmapListItem,SID_BITMAP_LIST,sal_False);
    2503           0 :     SFX_ITEMSET_ARG (&aSet,pPageTypeItem,SfxUInt16Item,SID_PAGE_TYPE,sal_False);
    2504           0 :     SFX_ITEMSET_ARG (&aSet,pDlgTypeItem,SfxUInt16Item,SID_DLG_TYPE,sal_False);
    2505           0 :     SFX_ITEMSET_ARG (&aSet,pPosItem,SfxUInt16Item,SID_TABPAGE_POS,sal_False);
    2506             : 
    2507           0 :     if (pColorListItem)
    2508           0 :         SetColorList(pColorListItem->GetColorList());
    2509           0 :     if (pGradientListItem)
    2510           0 :         SetGradientList(pGradientListItem->GetGradientList());
    2511           0 :     if (pHatchingListItem)
    2512           0 :         SetHatchingList(pHatchingListItem->GetHatchList());
    2513           0 :     if (pBitmapListItem)
    2514           0 :         SetBitmapList(pBitmapListItem->GetBitmapList());
    2515           0 :     if (pPageTypeItem)
    2516           0 :         SetPageType(pPageTypeItem->GetValue());
    2517           0 :     if (pDlgTypeItem)
    2518           0 :         SetDlgType(pDlgTypeItem->GetValue());
    2519           0 :     if (pPosItem)
    2520           0 :         SetPos(pPosItem->GetValue());
    2521           0 :     Construct();
    2522           6 : }
    2523             : 
    2524             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10