LCOV - code coverage report
Current view: top level - sw/source/ui/frmdlg - wrap.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 369 0.0 %
Date: 2014-04-14 Functions: 0 20 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 "hintids.hxx"
      21             : #include <vcl/graph.hxx>
      22             : #include <vcl/settings.hxx>
      23             : 
      24             : #include <sfx2/htmlmode.hxx>
      25             : #include <sfx2/objsh.hxx>
      26             : #include <svl/intitem.hxx>
      27             : #include <editeng/opaqitem.hxx>
      28             : #include <editeng/ulspitem.hxx>
      29             : #include <editeng/lrspitem.hxx>
      30             : // #i18732#
      31             : #include <fmtfollowtextflow.hxx>
      32             : #include <svx/swframevalidation.hxx>
      33             : 
      34             : #include "cmdid.h"
      35             : #include "uitool.hxx"
      36             : #include "wrtsh.hxx"
      37             : #include "swmodule.hxx"
      38             : #include "viewopt.hxx"
      39             : #include "frmatr.hxx"
      40             : #include "frmmgr.hxx"
      41             : #include "globals.hrc"
      42             : #include "frmui.hrc"
      43             : #include "wrap.hrc"
      44             : #include "wrap.hxx"
      45             : 
      46             : using namespace ::com::sun::star;
      47             : 
      48             : static sal_uInt16 aWrapPageRg[] = {
      49             :     RES_LR_SPACE, RES_UL_SPACE,
      50             :     RES_PROTECT, RES_SURROUND,
      51             :     RES_PRINT, RES_PRINT,
      52             :     0
      53             : };
      54             : 
      55           0 : SwWrapDlg::SwWrapDlg(Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh, bool bDrawMode)
      56             :     : SfxSingleTabDialog(pParent, rSet, "WrapDialog", "modules/swriter/ui/wrapdialog.ui")
      57           0 :     , pWrtShell(pSh)
      58             : 
      59             : {
      60             :     // create TabPage
      61           0 :     SwWrapTabPage* pNewPage = (SwWrapTabPage*) SwWrapTabPage::Create(get_content_area(), rSet);
      62           0 :     pNewPage->SetFormatUsed(sal_False, bDrawMode);
      63           0 :     pNewPage->SetShell(pWrtShell);
      64           0 :     SetTabPage(pNewPage);
      65           0 : }
      66             : 
      67           0 : SwWrapTabPage::SwWrapTabPage(Window *pParent, const SfxItemSet &rSet)
      68             :     : SfxTabPage(pParent, "WrapPage" , "modules/swriter/ui/wrappage.ui", rSet)
      69             :     , nAnchorId(FLY_AT_PARA)
      70             :     , nHtmlMode(0)
      71             :     , pWrtSh(0)
      72             :     , bFormat(false)
      73             :     , bNew(true)
      74             :     , bHtmlMode(false)
      75           0 :     , bContourImage(false)
      76             : 
      77             : {
      78           0 :     get(m_pNoWrapRB, "none");
      79           0 :     get(m_pWrapLeftRB, "before");
      80           0 :     get(m_pWrapRightRB, "after");
      81           0 :     get(m_pWrapParallelRB, "parallel");
      82           0 :     get(m_pWrapThroughRB, "through");
      83           0 :     get(m_pIdealWrapRB, "optimal");
      84           0 :     get(m_pLeftMarginED, "left");
      85           0 :     get(m_pRightMarginED, "right");
      86           0 :     get(m_pTopMarginED, "top");
      87           0 :     get(m_pBottomMarginED, "bottom");
      88           0 :     get(m_pWrapAnchorOnlyCB, "anchoronly");
      89           0 :     get(m_pWrapTransparentCB, "transparent");
      90           0 :     get(m_pWrapOutlineCB, "outline");
      91           0 :     get(m_pWrapOutsideCB, "outside");
      92             : 
      93           0 :     SetExchangeSupport();
      94             : 
      95           0 :     Link aLk = LINK(this, SwWrapTabPage, RangeModifyHdl);
      96           0 :     m_pLeftMarginED->SetUpHdl(aLk);
      97           0 :     m_pLeftMarginED->SetDownHdl(aLk);
      98           0 :     m_pLeftMarginED->SetFirstHdl(aLk);
      99           0 :     m_pLeftMarginED->SetLastHdl(aLk);
     100           0 :     m_pLeftMarginED->SetLoseFocusHdl(aLk);
     101             : 
     102           0 :     m_pRightMarginED->SetUpHdl(aLk);
     103           0 :     m_pRightMarginED->SetDownHdl(aLk);
     104           0 :     m_pRightMarginED->SetFirstHdl(aLk);
     105           0 :     m_pRightMarginED->SetLastHdl(aLk);
     106           0 :     m_pRightMarginED->SetLoseFocusHdl(aLk);
     107             : 
     108           0 :     m_pTopMarginED->SetUpHdl(aLk);
     109           0 :     m_pTopMarginED->SetDownHdl(aLk);
     110           0 :     m_pTopMarginED->SetFirstHdl(aLk);
     111           0 :     m_pTopMarginED->SetLastHdl(aLk);
     112           0 :     m_pTopMarginED->SetLoseFocusHdl(aLk);
     113             : 
     114           0 :     m_pBottomMarginED->SetUpHdl(aLk);
     115           0 :     m_pBottomMarginED->SetDownHdl(aLk);
     116           0 :     m_pBottomMarginED->SetFirstHdl(aLk);
     117           0 :     m_pBottomMarginED->SetLastHdl(aLk);
     118           0 :     m_pBottomMarginED->SetLoseFocusHdl(aLk);
     119             : 
     120           0 :     aLk = LINK(this, SwWrapTabPage, WrapTypeHdl);
     121           0 :     m_pNoWrapRB->SetClickHdl(aLk);
     122           0 :     m_pWrapLeftRB->SetClickHdl(aLk);
     123           0 :     m_pWrapRightRB->SetClickHdl(aLk);
     124           0 :     m_pWrapParallelRB->SetClickHdl(aLk);
     125           0 :     m_pWrapThroughRB->SetClickHdl(aLk);
     126           0 :     m_pIdealWrapRB->SetClickHdl(aLk);
     127           0 :     ApplyImageList();
     128           0 :     m_pWrapOutlineCB->SetClickHdl(LINK(this, SwWrapTabPage, ContourHdl));
     129           0 : }
     130             : 
     131           0 : SwWrapTabPage::~SwWrapTabPage()
     132             : {
     133           0 : }
     134             : 
     135           0 : SfxTabPage* SwWrapTabPage::Create(Window *pParent, const SfxItemSet &rSet)
     136             : {
     137           0 :     return new SwWrapTabPage(pParent, rSet);
     138             : }
     139             : 
     140           0 : void SwWrapTabPage::Reset(const SfxItemSet &rSet)
     141             : {
     142             :     // contour for Draw, Graphic and OLE (Insert/Graphic/Properties still missing!)
     143           0 :     if( bDrawMode )
     144             :     {
     145           0 :         m_pWrapOutlineCB->Show();
     146           0 :         m_pWrapOutsideCB->Show();
     147             : 
     148             :         m_pWrapTransparentCB->Check( 0 == ((const SfxInt16Item&)rSet.Get(
     149           0 :                                         FN_DRAW_WRAP_DLG)).GetValue() );
     150           0 :         m_pWrapTransparentCB->SaveValue();
     151             :     }
     152             :     else
     153             :     {
     154           0 :         sal_Bool bShowCB = bFormat;
     155           0 :         if( !bFormat )
     156             :         {
     157           0 :             int nSelType = pWrtSh->GetSelectionType();
     158           0 :             if( ( nSelType & nsSelectionType::SEL_GRF ) ||
     159           0 :                 ( nSelType & nsSelectionType::SEL_OLE && GRAPHIC_NONE !=
     160           0 :                             pWrtSh->GetIMapGraphic().GetType() ))
     161           0 :                 bShowCB = sal_True;
     162             :         }
     163           0 :         if( bShowCB )
     164             :         {
     165           0 :             m_pWrapOutlineCB->Show();
     166           0 :             m_pWrapOutsideCB->Show();
     167             :         }
     168             :     }
     169             : 
     170           0 :     nHtmlMode = ::GetHtmlMode((const SwDocShell*)SfxObjectShell::Current());
     171           0 :     bHtmlMode = nHtmlMode & HTMLMODE_ON ? sal_True : sal_False;
     172             : 
     173           0 :     FieldUnit aMetric = ::GetDfltMetric(bHtmlMode);
     174           0 :     SetMetric(*m_pLeftMarginED, aMetric);
     175           0 :     SetMetric(*m_pRightMarginED, aMetric);
     176           0 :     SetMetric(*m_pTopMarginED, aMetric);
     177           0 :     SetMetric(*m_pBottomMarginED, aMetric);
     178             : 
     179           0 :     const SwFmtSurround& rSurround = (const SwFmtSurround&)rSet.Get(RES_SURROUND);
     180             : 
     181           0 :     SwSurround nSur = rSurround.GetSurround();
     182           0 :     const SwFmtAnchor &rAnch = (const SwFmtAnchor&)rSet.Get(RES_ANCHOR);
     183           0 :     nAnchorId = rAnch.GetAnchorId();
     184             : 
     185           0 :     if (((nAnchorId == FLY_AT_PARA) || (nAnchorId == FLY_AT_CHAR))
     186           0 :         && (nSur != SURROUND_NONE))
     187             :     {
     188           0 :         m_pWrapAnchorOnlyCB->Check( rSurround.IsAnchorOnly() );
     189             :     }
     190             :     else
     191             :     {
     192           0 :         m_pWrapAnchorOnlyCB->Enable( false );
     193             :     }
     194             : 
     195           0 :     sal_Bool bContour = rSurround.IsContour();
     196           0 :     m_pWrapOutlineCB->Check( bContour );
     197           0 :     m_pWrapOutsideCB->Check( rSurround.IsOutside() );
     198           0 :     m_pWrapThroughRB->Enable(!m_pWrapOutlineCB->IsChecked());
     199           0 :     bContourImage = !bContour;
     200             : 
     201           0 :     RadioButton* pBtn = NULL;
     202             : 
     203           0 :     switch (nSur)
     204             :     {
     205             :         case SURROUND_NONE:
     206             :         {
     207           0 :             pBtn = m_pNoWrapRB;
     208           0 :             break;
     209             :         }
     210             : 
     211             :         case SURROUND_THROUGHT:
     212             :         {
     213             :             // transparent ?
     214           0 :             pBtn = m_pWrapThroughRB;
     215             : 
     216           0 :             if (!bDrawMode)
     217             :             {
     218           0 :                 const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)rSet.Get(RES_OPAQUE);
     219           0 :                 m_pWrapTransparentCB->Check(!rOpaque.GetValue());
     220             :             }
     221           0 :             break;
     222             :         }
     223             : 
     224             :         case SURROUND_PARALLEL:
     225             :         {
     226           0 :             pBtn = m_pWrapParallelRB;
     227           0 :             break;
     228             :         }
     229             : 
     230             :         case SURROUND_IDEAL:
     231             :         {
     232           0 :             pBtn = m_pIdealWrapRB;
     233           0 :             break;
     234             :         }
     235             : 
     236             :         default:
     237             :         {
     238           0 :             if (nSur == SURROUND_LEFT)
     239           0 :                 pBtn = m_pWrapLeftRB;
     240           0 :             else if (nSur == SURROUND_RIGHT)
     241           0 :                 pBtn = m_pWrapRightRB;
     242             :         }
     243             :     }
     244           0 :     if (pBtn)
     245             :     {
     246           0 :         pBtn->Check();
     247           0 :         WrapTypeHdl(pBtn);
     248             :         // For character objects that currently are in passage, the default
     249             :         // "contour on" is prepared here, in case we switch to any other
     250             :         // passage later.
     251           0 :         if (bDrawMode && !m_pWrapOutlineCB->IsEnabled())
     252           0 :             m_pWrapOutlineCB->Check();
     253             :     }
     254           0 :     m_pWrapTransparentCB->Enable( pBtn == m_pWrapThroughRB && !bHtmlMode );
     255             : 
     256           0 :     const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rSet.Get(RES_UL_SPACE);
     257           0 :     const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rSet.Get(RES_LR_SPACE);
     258             : 
     259             :     // gap to text
     260           0 :     m_pLeftMarginED->SetValue(m_pLeftMarginED->Normalize(rLR.GetLeft()), FUNIT_TWIP);
     261           0 :     m_pRightMarginED->SetValue(m_pRightMarginED->Normalize(rLR.GetRight()), FUNIT_TWIP);
     262           0 :     m_pTopMarginED->SetValue(m_pTopMarginED->Normalize(rUL.GetUpper()), FUNIT_TWIP);
     263           0 :     m_pBottomMarginED->SetValue(m_pBottomMarginED->Normalize(rUL.GetLower()), FUNIT_TWIP);
     264             : 
     265           0 :     ContourHdl(0);
     266           0 :     ActivatePage( rSet );
     267           0 : }
     268             : 
     269             : /*--------------------------------------------------------------------
     270             :     Description:    stuff attributes into the set when OK
     271             :  --------------------------------------------------------------------*/
     272           0 : bool SwWrapTabPage::FillItemSet(SfxItemSet &rSet)
     273             : {
     274           0 :     bool bModified = false;
     275             :     const SfxPoolItem* pOldItem;
     276             : 
     277           0 :     const SwFmtSurround& rOldSur = (const SwFmtSurround&)GetItemSet().Get(RES_SURROUND);
     278           0 :     SwFmtSurround aSur( rOldSur );
     279             : 
     280           0 :     SvxOpaqueItem aOp( RES_OPAQUE);
     281             : 
     282           0 :     if (!bDrawMode)
     283             :     {
     284           0 :         const SvxOpaqueItem& rOpaque = (const SvxOpaqueItem&)GetItemSet().Get(RES_OPAQUE);
     285           0 :         aOp = rOpaque;
     286           0 :         aOp.SetValue(true);
     287             :     }
     288             : 
     289           0 :     if (m_pNoWrapRB->IsChecked())
     290           0 :         aSur.SetSurround(SURROUND_NONE);
     291           0 :     else if (m_pWrapLeftRB->IsChecked())
     292           0 :         aSur.SetSurround(SURROUND_LEFT);
     293           0 :     else if (m_pWrapRightRB->IsChecked())
     294           0 :         aSur.SetSurround(SURROUND_RIGHT);
     295           0 :     else if (m_pWrapParallelRB->IsChecked())
     296           0 :         aSur.SetSurround(SURROUND_PARALLEL);
     297           0 :     else if (m_pWrapThroughRB->IsChecked())
     298             :     {
     299           0 :         aSur.SetSurround(SURROUND_THROUGHT);
     300           0 :         if (m_pWrapTransparentCB->IsChecked() && !bDrawMode)
     301           0 :             aOp.SetValue(false);
     302             :     }
     303           0 :     else if (m_pIdealWrapRB->IsChecked())
     304           0 :         aSur.SetSurround(SURROUND_IDEAL);
     305             : 
     306           0 :     aSur.SetAnchorOnly( m_pWrapAnchorOnlyCB->IsChecked() );
     307           0 :     sal_Bool bContour = m_pWrapOutlineCB->IsChecked() && m_pWrapOutlineCB->IsEnabled();
     308           0 :     aSur.SetContour( bContour );
     309             : 
     310           0 :     if ( bContour )
     311           0 :         aSur.SetOutside(m_pWrapOutsideCB->IsChecked());
     312             : 
     313           0 :     if(0 == (pOldItem = GetOldItem( rSet, RES_SURROUND )) ||
     314           0 :                 aSur != *pOldItem )
     315             :     {
     316           0 :         rSet.Put(aSur);
     317           0 :         bModified = true;
     318             :     }
     319             : 
     320           0 :     if (!bDrawMode)
     321             :     {
     322           0 :         if(0 == (pOldItem = GetOldItem( rSet, FN_OPAQUE )) ||
     323           0 :                     aOp != *pOldItem )
     324             :         {
     325           0 :             rSet.Put(aOp);
     326           0 :             bModified = true;
     327             :         }
     328             :     }
     329             : 
     330           0 :     sal_Bool bTopMod = m_pTopMarginED->IsValueModified();
     331           0 :     sal_Bool bBottomMod = m_pBottomMarginED->IsValueModified();
     332             : 
     333           0 :     SvxULSpaceItem aUL( RES_UL_SPACE );
     334           0 :     aUL.SetUpper((sal_uInt16)m_pTopMarginED->Denormalize(m_pTopMarginED->GetValue(FUNIT_TWIP)));
     335           0 :     aUL.SetLower((sal_uInt16)m_pBottomMarginED->Denormalize(m_pBottomMarginED->GetValue(FUNIT_TWIP)));
     336             : 
     337           0 :     if ( bTopMod || bBottomMod )
     338             :     {
     339           0 :         if(0 == (pOldItem = GetOldItem(rSet, RES_UL_SPACE)) ||
     340           0 :                 aUL != *pOldItem )
     341             :         {
     342           0 :             rSet.Put( aUL, RES_UL_SPACE );
     343           0 :             bModified = true;
     344             :         }
     345             :     }
     346             : 
     347           0 :     sal_Bool bLeftMod = m_pLeftMarginED->IsValueModified();
     348           0 :     sal_Bool bRightMod = m_pRightMarginED->IsValueModified();
     349             : 
     350           0 :     SvxLRSpaceItem aLR( RES_LR_SPACE );
     351           0 :     aLR.SetLeft((sal_uInt16)m_pLeftMarginED->Denormalize(m_pLeftMarginED->GetValue(FUNIT_TWIP)));
     352           0 :     aLR.SetRight((sal_uInt16)m_pRightMarginED->Denormalize(m_pRightMarginED->GetValue(FUNIT_TWIP)));
     353             : 
     354           0 :     if ( bLeftMod || bRightMod )
     355             :     {
     356           0 :         if( 0 == (pOldItem = GetOldItem(rSet, RES_LR_SPACE)) ||
     357           0 :                 aLR != *pOldItem )
     358             :         {
     359           0 :             rSet.Put(aLR, RES_LR_SPACE);
     360           0 :             bModified = true;
     361             :         }
     362             :     }
     363             : 
     364           0 :     if ( bDrawMode )
     365             :     {
     366           0 :         sal_Bool bChecked = m_pWrapTransparentCB->IsChecked() && m_pWrapTransparentCB->IsEnabled();
     367           0 :         if (m_pWrapTransparentCB->GetSavedValue() != bChecked)
     368           0 :             bModified |= 0 != rSet.Put(SfxInt16Item(FN_DRAW_WRAP_DLG, bChecked ? 0 : 1));
     369             :     }
     370             : 
     371           0 :     return bModified;
     372             : }
     373             : 
     374             : /*--------------------------------------------------------------------
     375             :     Description:    example update
     376             :  --------------------------------------------------------------------*/
     377           0 : void SwWrapTabPage::ActivatePage(const SfxItemSet& rSet)
     378             : {
     379             :     // anchor
     380           0 :     const SwFmtAnchor &rAnch = (const SwFmtAnchor&)rSet.Get(RES_ANCHOR);
     381           0 :     nAnchorId = rAnch.GetAnchorId();
     382           0 :     sal_Bool bEnable = (nAnchorId != FLY_AS_CHAR);
     383             : 
     384           0 :     if (!bDrawMode)
     385             :     {
     386           0 :         SwWrtShell* pSh = bFormat ? ::GetActiveWrtShell() : pWrtSh;
     387           0 :         SwFlyFrmAttrMgr aMgr( bNew, pSh, (const SwAttrSet&)GetItemSet() );
     388           0 :         SvxSwFrameValidation aVal;
     389             : 
     390             :         // size
     391           0 :         const SwFmtFrmSize& rFrmSize = (const SwFmtFrmSize&)rSet.Get(RES_FRM_SIZE);
     392           0 :         Size aSize = rFrmSize.GetSize();
     393             : 
     394             :         // margin
     395           0 :         const SvxULSpaceItem& rUL = (const SvxULSpaceItem&)rSet.Get(RES_UL_SPACE);
     396           0 :         const SvxLRSpaceItem& rLR = (const SvxLRSpaceItem&)rSet.Get(RES_LR_SPACE);
     397           0 :         nOldLeftMargin  = static_cast< sal_uInt16 >(rLR.GetLeft());
     398           0 :         nOldRightMargin = static_cast< sal_uInt16 >(rLR.GetRight());
     399           0 :         nOldUpperMargin = static_cast< sal_uInt16 >(rUL.GetUpper());
     400           0 :         nOldLowerMargin = static_cast< sal_uInt16 >(rUL.GetLower());
     401             : 
     402             :         // position
     403           0 :         const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)rSet.Get(RES_HORI_ORIENT);
     404           0 :         const SwFmtVertOrient& rVert = (const SwFmtVertOrient&)rSet.Get(RES_VERT_ORIENT);
     405             : 
     406           0 :         aVal.nAnchorType = static_cast< sal_Int16 >(nAnchorId);
     407           0 :         aVal.bAutoHeight = rFrmSize.GetHeightSizeType() == ATT_MIN_SIZE;
     408           0 :         aVal.bAutoWidth = rFrmSize.GetWidthSizeType() == ATT_MIN_SIZE;
     409           0 :         aVal.bMirror = rHori.IsPosToggle();
     410             :         // #i18732#
     411             :         aVal.bFollowTextFlow =
     412           0 :             static_cast<const SwFmtFollowTextFlow&>(rSet.Get(RES_FOLLOW_TEXT_FLOW)).GetValue();
     413             : 
     414           0 :         aVal.nHoriOrient = (short)rHori.GetHoriOrient();
     415           0 :         aVal.nVertOrient = (short)rVert.GetVertOrient();
     416             : 
     417           0 :         aVal.nHPos = rHori.GetPos();
     418           0 :         aVal.nHRelOrient = rHori.GetRelationOrient();
     419           0 :         aVal.nVPos = rVert.GetPos();
     420           0 :         aVal.nVRelOrient = rVert.GetRelationOrient();
     421             : 
     422           0 :         if (rFrmSize.GetWidthPercent() && rFrmSize.GetWidthPercent() != 0xff)
     423           0 :             aSize.Width() = aSize.Width() * rFrmSize.GetWidthPercent() / 100;
     424             : 
     425           0 :         if (rFrmSize.GetHeightPercent() && rFrmSize.GetHeightPercent() != 0xff)
     426           0 :             aSize.Height() = aSize.Height() * rFrmSize.GetHeightPercent() / 100;
     427             : 
     428           0 :         aVal.nWidth  = aSize.Width();
     429           0 :         aVal.nHeight = aSize.Height();
     430           0 :         aFrmSize = aSize;
     431             : 
     432           0 :         aMgr.ValidateMetrics(aVal, 0);
     433             : 
     434             :         SwTwips nLeft;
     435             :         SwTwips nRight;
     436             :         SwTwips nTop;
     437             :         SwTwips nBottom;
     438             : 
     439           0 :         nLeft   = aVal.nHPos - aVal.nMinHPos;
     440           0 :         nRight  = aVal.nMaxWidth - aVal.nWidth;
     441           0 :         nTop    = aVal.nVPos - aVal.nMinVPos;
     442           0 :         nBottom = aVal.nMaxHeight - aVal.nHeight;
     443             : 
     444             :         {
     445           0 :             if (aVal.nAnchorType == FLY_AS_CHAR)
     446             :             {
     447           0 :                 nLeft = nRight;
     448             : 
     449           0 :                 if (aVal.nVPos < 0)
     450             :                 {
     451           0 :                     if (aVal.nVPos <= aVal.nMaxHeight)
     452           0 :                         nTop = aVal.nMaxVPos - aVal.nHeight;
     453             :                     else
     454           0 :                         nTop = nBottom = 0; // no passage
     455             :                 }
     456             :                 else
     457           0 :                     nTop = aVal.nMaxVPos - aVal.nHeight - aVal.nVPos;
     458             :             }
     459             :             else
     460             :             {
     461           0 :                 nLeft += nRight;
     462           0 :                 nTop += nBottom;
     463             :             }
     464             : 
     465           0 :             nBottom = nTop;
     466           0 :             nRight = nLeft;
     467             :         }
     468             : 
     469           0 :         m_pLeftMarginED->SetMax(m_pLeftMarginED->Normalize(nLeft), FUNIT_TWIP);
     470           0 :         m_pRightMarginED->SetMax(m_pRightMarginED->Normalize(nRight), FUNIT_TWIP);
     471             : 
     472           0 :         m_pTopMarginED->SetMax(m_pTopMarginED->Normalize(nTop), FUNIT_TWIP);
     473           0 :         m_pBottomMarginED->SetMax(m_pBottomMarginED->Normalize(nBottom), FUNIT_TWIP);
     474             : 
     475           0 :         RangeModifyHdl(m_pLeftMarginED);
     476           0 :         RangeModifyHdl(m_pTopMarginED);
     477             :     }
     478             : 
     479           0 :     const SwFmtSurround& rSurround = (const SwFmtSurround&)rSet.Get(RES_SURROUND);
     480           0 :     SwSurround nSur = rSurround.GetSurround();
     481             : 
     482           0 :     m_pWrapTransparentCB->Enable( bEnable && !bHtmlMode && nSur == SURROUND_THROUGHT );
     483           0 :     if(bHtmlMode)
     484             :     {
     485           0 :         const SwFmtHoriOrient& rHori = (const SwFmtHoriOrient&)rSet.Get(RES_HORI_ORIENT);
     486           0 :         sal_Int16 eHOrient = rHori.GetHoriOrient();
     487           0 :         sal_Int16 eHRelOrient = rHori.GetRelationOrient();
     488           0 :         m_pWrapOutlineCB->Hide();
     489             :         const bool bAllHtmlModes =
     490           0 :             ((nAnchorId == FLY_AT_PARA) || (nAnchorId == FLY_AT_CHAR)) &&
     491           0 :                             (eHOrient == text::HoriOrientation::RIGHT || eHOrient == text::HoriOrientation::LEFT);
     492           0 :         m_pWrapAnchorOnlyCB->Enable( bAllHtmlModes && nSur != SURROUND_NONE );
     493           0 :         m_pWrapOutsideCB->Hide();
     494           0 :         m_pIdealWrapRB->Enable( false );
     495             : 
     496           0 :         m_pWrapTransparentCB->Enable( false );
     497           0 :         m_pNoWrapRB->Enable( FLY_AT_PARA == nAnchorId );
     498           0 :         m_pWrapParallelRB->Enable( false  );
     499             :         m_pWrapLeftRB->Enable
     500           0 :                     (  (FLY_AT_PARA == nAnchorId)
     501           0 :                     || (   (FLY_AT_CHAR == nAnchorId)
     502           0 :                         && (eHOrient == text::HoriOrientation::RIGHT)
     503           0 :                         && (eHRelOrient == text::RelOrientation::PRINT_AREA)));
     504             :         m_pWrapRightRB->Enable
     505           0 :                     (  (FLY_AT_PARA == nAnchorId)
     506           0 :                     || (   (FLY_AT_CHAR == nAnchorId)
     507           0 :                         && (eHOrient == text::HoriOrientation::LEFT)
     508           0 :                         && (eHRelOrient == text::RelOrientation::PRINT_AREA)));
     509             : 
     510             :         m_pWrapThroughRB->Enable
     511           0 :                 (   (  (FLY_AT_PAGE == nAnchorId)
     512           0 :                     || (   (FLY_AT_CHAR == nAnchorId)
     513           0 :                         && (eHRelOrient != text::RelOrientation::PRINT_AREA))
     514           0 :                     || (FLY_AT_PARA == nAnchorId))
     515           0 :                 && (eHOrient != text::HoriOrientation::RIGHT));
     516           0 :         if(m_pNoWrapRB->IsChecked() && !m_pNoWrapRB->IsEnabled())
     517             :         {
     518           0 :             if(m_pWrapThroughRB->IsEnabled())
     519           0 :                 m_pWrapThroughRB->Check(true);
     520           0 :             else if(m_pWrapLeftRB->IsEnabled())
     521           0 :                 m_pWrapLeftRB->Check();
     522           0 :             else if(m_pWrapRightRB->IsEnabled())
     523           0 :                 m_pWrapRightRB->Check();
     524             : 
     525             :         }
     526           0 :         if(m_pWrapLeftRB->IsChecked() && !m_pWrapLeftRB->IsEnabled())
     527             :         {
     528           0 :             if(m_pWrapRightRB->IsEnabled())
     529           0 :                 m_pWrapRightRB->Check();
     530           0 :             else if(m_pWrapThroughRB->IsEnabled())
     531           0 :                 m_pWrapThroughRB->Check();
     532             :         }
     533           0 :         if(m_pWrapRightRB->IsChecked() && !m_pWrapRightRB->IsEnabled())
     534             :         {
     535           0 :             if(m_pWrapLeftRB->IsEnabled())
     536           0 :                 m_pWrapLeftRB->Check();
     537           0 :             else if(m_pWrapThroughRB->IsEnabled())
     538           0 :                 m_pWrapThroughRB->Check();
     539             :         }
     540           0 :         if(m_pWrapThroughRB->IsChecked() && !m_pWrapThroughRB->IsEnabled())
     541           0 :             if(m_pNoWrapRB->IsEnabled())
     542           0 :                 m_pNoWrapRB->Check();
     543             : 
     544           0 :         if(m_pWrapParallelRB->IsChecked() && !m_pWrapParallelRB->IsEnabled())
     545           0 :             m_pWrapThroughRB->Check();
     546             :     }
     547             :     else
     548             :     {
     549           0 :         m_pNoWrapRB->Enable( bEnable );
     550           0 :         m_pWrapLeftRB->Enable( bEnable );
     551           0 :         m_pWrapRightRB->Enable( bEnable );
     552           0 :         m_pIdealWrapRB->Enable( bEnable );
     553           0 :         m_pWrapThroughRB->Enable( bEnable );
     554           0 :         m_pWrapParallelRB->Enable( bEnable );
     555             :         m_pWrapAnchorOnlyCB->Enable(
     556           0 :                 ((nAnchorId == FLY_AT_PARA) || (nAnchorId == FLY_AT_CHAR))
     557           0 :                 && nSur != SURROUND_NONE );
     558             :     }
     559           0 :     ContourHdl(0);
     560           0 : }
     561             : 
     562           0 : int SwWrapTabPage::DeactivatePage(SfxItemSet* _pSet)
     563             : {
     564           0 :     if(_pSet)
     565           0 :         FillItemSet(*_pSet);
     566             : 
     567           0 :     return sal_True;
     568             : }
     569             : 
     570             : /*--------------------------------------------------------------------
     571             :     Description:    range check
     572             :  --------------------------------------------------------------------*/
     573           0 : IMPL_LINK( SwWrapTabPage, RangeModifyHdl, MetricField *, pEdit )
     574             : {
     575           0 :         sal_Int64 nValue = pEdit->GetValue();
     576           0 :         MetricField *pOpposite = 0;
     577             : 
     578           0 :         if (pEdit == m_pLeftMarginED)
     579           0 :             pOpposite = m_pRightMarginED;
     580           0 :         else if (pEdit == m_pRightMarginED)
     581           0 :             pOpposite = m_pLeftMarginED;
     582           0 :         else if (pEdit == m_pTopMarginED)
     583           0 :             pOpposite = m_pBottomMarginED;
     584           0 :         else if (pEdit == m_pBottomMarginED)
     585           0 :             pOpposite = m_pTopMarginED;
     586             : 
     587             :         OSL_ASSERT(pOpposite);
     588             : 
     589           0 :         if (pOpposite)
     590             :         {
     591           0 :             sal_Int64 nOpposite = pOpposite->GetValue();
     592             : 
     593           0 :             if (nValue + nOpposite > std::max(pEdit->GetMax(), pOpposite->GetMax()))
     594           0 :                 pOpposite->SetValue(pOpposite->GetMax() - nValue);
     595             :         }
     596             : 
     597           0 :     return 0;
     598             : }
     599             : 
     600           0 : IMPL_LINK( SwWrapTabPage, WrapTypeHdl, RadioButton *, pBtn )
     601             : {
     602           0 :     bool bWrapThrough = (pBtn == m_pWrapThroughRB);
     603           0 :     m_pWrapTransparentCB->Enable( bWrapThrough && !bHtmlMode );
     604           0 :     bWrapThrough |= ( nAnchorId == FLY_AS_CHAR );
     605           0 :     m_pWrapOutlineCB->Enable( !bWrapThrough && pBtn != m_pNoWrapRB);
     606           0 :     m_pWrapOutsideCB->Enable( !bWrapThrough && m_pWrapOutlineCB->IsChecked() );
     607             :     m_pWrapAnchorOnlyCB->Enable(
     608           0 :         ((nAnchorId == FLY_AT_PARA) || (nAnchorId == FLY_AT_CHAR)) &&
     609           0 :         (pBtn != m_pNoWrapRB) );
     610             : 
     611           0 :     ContourHdl(0);
     612           0 :     return 0;
     613             : }
     614             : 
     615           0 : IMPL_LINK_NOARG(SwWrapTabPage, ContourHdl)
     616             : {
     617           0 :     sal_Bool bEnable = !(m_pWrapOutlineCB->IsChecked() && m_pWrapOutlineCB->IsEnabled());
     618             : 
     619           0 :     m_pWrapOutsideCB->Enable(!bEnable);
     620             : 
     621           0 :     bEnable =  !m_pWrapOutlineCB->IsChecked();
     622           0 :     if (bEnable == bContourImage) // so that it doesn't always flicker
     623             :     {
     624           0 :         bContourImage = !bEnable;
     625           0 :         ApplyImageList();
     626             :     }
     627             : 
     628           0 :     return 0;
     629             : }
     630             : 
     631           0 : sal_uInt16* SwWrapTabPage::GetRanges()
     632             : {
     633           0 :     return aWrapPageRg;
     634             : }
     635             : 
     636           0 : void SwWrapTabPage::DataChanged( const DataChangedEvent& rDCEvt )
     637             : {
     638           0 :     if ( (rDCEvt.GetType() == DATACHANGED_SETTINGS) &&
     639           0 :          (rDCEvt.GetFlags() & SETTINGS_STYLE) )
     640           0 :             ApplyImageList();
     641             : 
     642           0 :     SfxTabPage::DataChanged( rDCEvt );
     643           0 : }
     644             : 
     645           0 : void SwWrapTabPage::ApplyImageList()
     646             : {
     647           0 :     m_pWrapThroughRB->SetModeRadioImage(get<FixedImage>("imgthrough")->GetImage());
     648           0 :     sal_Bool bWrapOutline =  !m_pWrapOutlineCB->IsChecked();
     649           0 :     if(bWrapOutline)
     650             :     {
     651           0 :         m_pNoWrapRB->SetModeRadioImage(get<FixedImage>("imgnone")->GetImage());
     652           0 :         m_pWrapLeftRB->SetModeRadioImage(get<FixedImage>("imgleft")->GetImage());
     653           0 :         m_pWrapRightRB->SetModeRadioImage(get<FixedImage>("imgright")->GetImage());
     654           0 :         m_pWrapParallelRB->SetModeRadioImage(get<FixedImage>("imgparallel")->GetImage());
     655           0 :         m_pIdealWrapRB->SetModeRadioImage(get<FixedImage>("imgideal")->GetImage());
     656             :     }
     657             :     else
     658             :     {
     659           0 :         m_pNoWrapRB->SetModeRadioImage(get<FixedImage>("imgkonnone")->GetImage());
     660           0 :         m_pWrapLeftRB->SetModeRadioImage(get<FixedImage>("imgkonleft")->GetImage());
     661           0 :         m_pWrapRightRB->SetModeRadioImage(get<FixedImage>("imgkonright")->GetImage());
     662           0 :         m_pWrapParallelRB->SetModeRadioImage(get<FixedImage>("imgkonparallel")->GetImage());
     663           0 :         m_pIdealWrapRB->SetModeRadioImage(get<FixedImage>("imgkonideal")->GetImage());
     664             :     }
     665           0 : }
     666             : 
     667             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10