LCOV - code coverage report
Current view: top level - cui/source/tabpages - tparea.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 0 1302 0.0 %
Date: 2014-11-03 Functions: 0 66 0.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10