LCOV - code coverage report
Current view: top level - editeng/source/items - paraitem.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 735 0.0 %
Date: 2014-04-14 Functions: 0 166 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 <com/sun/star/style/TabStop.hpp>
      21             : #include <com/sun/star/style/LineSpacing.hpp>
      22             : #include <com/sun/star/style/LineSpacingMode.hpp>
      23             : #include <com/sun/star/uno/Sequence.hxx>
      24             : #include <comphelper/processfactory.hxx>
      25             : #include <unotools/syslocale.hxx>
      26             : #include <comphelper/types.hxx>
      27             : #include <tools/rtti.hxx>
      28             : #include <tools/mapunit.hxx>
      29             : #include <svl/itempool.hxx>
      30             : #include <svl/memberid.hrc>
      31             : #include <editeng/editrids.hrc>
      32             : #include <editeng/lspcitem.hxx>
      33             : #include <editeng/adjustitem.hxx>
      34             : #include <editeng/orphitem.hxx>
      35             : #include <editeng/widwitem.hxx>
      36             : #include <editeng/tstpitem.hxx>
      37             : #include <editeng/pmdlitem.hxx>
      38             : #include <editeng/spltitem.hxx>
      39             : #include <editeng/hyphenzoneitem.hxx>
      40             : #include <editeng/scriptspaceitem.hxx>
      41             : #include <editeng/hngpnctitem.hxx>
      42             : #include <editeng/forbiddenruleitem.hxx>
      43             : #include <editeng/paravertalignitem.hxx>
      44             : #include <editeng/pgrditem.hxx>
      45             : #include <rtl/ustring.hxx>
      46             : #include <editeng/memberids.hrc>
      47             : #include <editeng/editids.hrc>
      48             : #include <editeng/itemtype.hxx>
      49             : #include <editeng/eerdll.hxx>
      50             : #include <editeng/paperinf.hxx>
      51             : #include <vcl/svapp.hxx>
      52             : #include <algorithm>
      53             : 
      54             : using namespace ::rtl;
      55             : using namespace ::com::sun::star;
      56             : 
      57           0 : TYPEINIT1_FACTORY(SvxLineSpacingItem, SfxPoolItem , new SvxLineSpacingItem(LINE_SPACE_DEFAULT_HEIGHT, 0));
      58           0 : TYPEINIT1_FACTORY(SvxAdjustItem, SfxPoolItem, new SvxAdjustItem(SVX_ADJUST_LEFT, 0));
      59           0 : TYPEINIT1_FACTORY(SvxWidowsItem, SfxByteItem, new SvxWidowsItem(0, 0));
      60           0 : TYPEINIT1_FACTORY(SvxOrphansItem, SfxByteItem, new SvxOrphansItem(0, 0));
      61           0 : TYPEINIT1_FACTORY(SvxHyphenZoneItem, SfxPoolItem, new SvxHyphenZoneItem(false, 0));
      62           0 : TYPEINIT1_FACTORY(SvxTabStopItem, SfxPoolItem, new SvxTabStopItem(0));
      63           0 : TYPEINIT1_FACTORY(SvxFmtSplitItem, SfxBoolItem, new SvxFmtSplitItem(false, 0));
      64           0 : TYPEINIT1_FACTORY(SvxPageModelItem, SfxStringItem, new SvxPageModelItem(0));
      65           0 : TYPEINIT1_FACTORY(SvxScriptSpaceItem, SfxBoolItem, new SvxScriptSpaceItem(false, 0));
      66           0 : TYPEINIT1_FACTORY(SvxHangingPunctuationItem, SfxBoolItem, new SvxHangingPunctuationItem(false, 0));
      67           0 : TYPEINIT1_FACTORY(SvxForbiddenRuleItem, SfxBoolItem, new SvxForbiddenRuleItem(false, 0));
      68           0 : TYPEINIT1_FACTORY(SvxParaVertAlignItem, SfxUInt16Item, new SvxParaVertAlignItem(0, 0));
      69           0 : TYPEINIT1_FACTORY(SvxParaGridItem, SfxBoolItem, new SvxParaGridItem(true, 0));
      70             : 
      71             : 
      72             : 
      73           0 : SvxLineSpacingItem::SvxLineSpacingItem( sal_uInt16 nHeight, const sal_uInt16 nId )
      74           0 :     : SfxEnumItemInterface( nId )
      75             : {
      76           0 :     nPropLineSpace = 100;
      77           0 :     nInterLineSpace = 0;
      78           0 :     nLineHeight = nHeight;
      79           0 :     eLineSpace = SVX_LINE_SPACE_AUTO;
      80           0 :     eInterLineSpace = SVX_INTER_LINE_SPACE_OFF;
      81           0 : }
      82             : 
      83             : 
      84             : 
      85           0 : bool SvxLineSpacingItem::operator==( const SfxPoolItem& rAttr ) const
      86             : {
      87             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
      88             : 
      89           0 :     const SvxLineSpacingItem& rLineSpace = (const SvxLineSpacingItem&)rAttr;
      90             :     return (
      91             :         // Same Linespacing Rule?
      92           0 :         (eLineSpace == rLineSpace.eLineSpace)
      93             :         // For maximum and minimum Linespacing be the size must coincide.
      94           0 :         && (eLineSpace == SVX_LINE_SPACE_AUTO ||
      95           0 :             nLineHeight == rLineSpace.nLineHeight)
      96             :         // Same Linespacing Rule?
      97           0 :         && ( eInterLineSpace == rLineSpace.eInterLineSpace )
      98             :         // Either set proportional or additive.
      99           0 :         && (( eInterLineSpace == SVX_INTER_LINE_SPACE_OFF)
     100           0 :             || (eInterLineSpace == SVX_INTER_LINE_SPACE_PROP
     101           0 :                 && nPropLineSpace == rLineSpace.nPropLineSpace)
     102           0 :             || (eInterLineSpace == SVX_INTER_LINE_SPACE_FIX
     103           0 :                 && (nInterLineSpace == rLineSpace.nInterLineSpace)))) ?
     104           0 :                 1 : 0;
     105             : }
     106             : 
     107             : /* Who does still know why the LineSpacingItem is so complicated?
     108             :    We can not use it for UNO since there are only two values:
     109             :       - ein sal_uInt16 for the mode
     110             :       - ein sal_uInt32 for all values (distance, height, rel. detail)
     111             : */
     112           0 : bool SvxLineSpacingItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     113             : {
     114           0 :     sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     115           0 :     nMemberId &= ~CONVERT_TWIPS;
     116             : 
     117           0 :     style::LineSpacing aLSp;
     118           0 :     switch( eLineSpace )
     119             :     {
     120             :         case SVX_LINE_SPACE_AUTO:
     121           0 :             if(eInterLineSpace == SVX_INTER_LINE_SPACE_FIX)
     122             :             {
     123           0 :                 aLSp.Mode = style::LineSpacingMode::LEADING;
     124           0 :                 aLSp.Height = ( bConvert ? (short)convertTwipToMm100(nInterLineSpace) : nInterLineSpace);
     125             :             }
     126           0 :             else if(eInterLineSpace == SVX_INTER_LINE_SPACE_OFF)
     127             :             {
     128           0 :                 aLSp.Mode = style::LineSpacingMode::PROP;
     129           0 :                 aLSp.Height = 100;
     130             :             }
     131             :             else
     132             :             {
     133           0 :                 aLSp.Mode = style::LineSpacingMode::PROP;
     134           0 :                 aLSp.Height = nPropLineSpace;
     135             :             }
     136           0 :         break;
     137             :         case SVX_LINE_SPACE_FIX :
     138             :         case SVX_LINE_SPACE_MIN :
     139           0 :             aLSp.Mode = eLineSpace == SVX_LINE_SPACE_FIX ? style::LineSpacingMode::FIX : style::LineSpacingMode::MINIMUM;
     140           0 :             aLSp.Height = ( bConvert ? (short)convertTwipToMm100(nLineHeight) : nLineHeight );
     141           0 :         break;
     142             :         default:
     143             :             ;//prevent warning about SVX_LINE_SPACE_END
     144             :     }
     145             : 
     146           0 :     switch ( nMemberId )
     147             :     {
     148           0 :         case 0 :                rVal <<= aLSp; break;
     149           0 :         case MID_LINESPACE :    rVal <<= aLSp.Mode; break;
     150           0 :         case MID_HEIGHT :       rVal <<= aLSp.Height; break;
     151           0 :         default: OSL_FAIL("Wrong MemberId!"); break;
     152             :     }
     153             : 
     154           0 :     return true;
     155             : }
     156             : 
     157           0 : bool SvxLineSpacingItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     158             : {
     159           0 :     sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     160           0 :     nMemberId &= ~CONVERT_TWIPS;
     161             : 
     162             :     // fill with current data
     163           0 :     style::LineSpacing aLSp;
     164           0 :     uno::Any aAny;
     165           0 :     sal_Bool bRet = QueryValue( aAny, bConvert ? CONVERT_TWIPS : 0 ) && ( aAny >>= aLSp );
     166             : 
     167             :     // get new data
     168           0 :     switch ( nMemberId )
     169             :     {
     170           0 :         case 0 :                bRet = (rVal >>= aLSp); break;
     171           0 :         case MID_LINESPACE :    bRet = (rVal >>= aLSp.Mode); break;
     172           0 :         case MID_HEIGHT :       bRet = (rVal >>= aLSp.Height); break;
     173           0 :         default: OSL_FAIL("Wrong MemberId!"); break;
     174             :     }
     175             : 
     176           0 :     if( bRet )
     177             :     {
     178           0 :         nLineHeight = aLSp.Height;
     179           0 :         switch( aLSp.Mode )
     180             :         {
     181             :             case style::LineSpacingMode::LEADING:
     182             :             {
     183           0 :                 eInterLineSpace = SVX_INTER_LINE_SPACE_FIX;
     184           0 :                 eLineSpace = SVX_LINE_SPACE_AUTO;
     185           0 :                 nInterLineSpace = aLSp.Height;
     186           0 :                 if(bConvert)
     187           0 :                     nInterLineSpace = (short)convertMm100ToTwip(nInterLineSpace);
     188             : 
     189             :             }
     190           0 :             break;
     191             :             case style::LineSpacingMode::PROP:
     192             :             {
     193           0 :                 eLineSpace = SVX_LINE_SPACE_AUTO;
     194           0 :                 nPropLineSpace = (sal_Int16)aLSp.Height;
     195           0 :                 if(100 == aLSp.Height)
     196           0 :                     eInterLineSpace = SVX_INTER_LINE_SPACE_OFF;
     197             :                 else
     198           0 :                     eInterLineSpace = SVX_INTER_LINE_SPACE_PROP;
     199             :             }
     200           0 :             break;
     201             :             case style::LineSpacingMode::FIX:
     202             :             case style::LineSpacingMode::MINIMUM:
     203             :             {
     204           0 :                 eInterLineSpace =  SVX_INTER_LINE_SPACE_OFF;
     205           0 :                 eLineSpace = aLSp.Mode == style::LineSpacingMode::FIX ? SVX_LINE_SPACE_FIX : SVX_LINE_SPACE_MIN;
     206           0 :                 nLineHeight = aLSp.Height;
     207           0 :                 if(bConvert)
     208           0 :                     nLineHeight = (sal_uInt16)convertMm100ToTwip(nLineHeight);
     209             :             }
     210           0 :             break;
     211             :         }
     212             :     }
     213             : 
     214           0 :     return bRet;
     215             : }
     216             : 
     217             : 
     218             : 
     219           0 : SfxPoolItem* SvxLineSpacingItem::Clone( SfxItemPool * ) const
     220             : {
     221           0 :     return new SvxLineSpacingItem( *this );
     222             : }
     223             : 
     224             : 
     225             : 
     226           0 : SfxItemPresentation SvxLineSpacingItem::GetPresentation
     227             : (
     228             :     SfxItemPresentation /*ePres*/,
     229             :     SfxMapUnit          /*eCoreUnit*/,
     230             :     SfxMapUnit          /*ePresUnit*/,
     231             :     OUString&           rText, const IntlWrapper *
     232             : )   const
     233             : {
     234             : #ifdef DBG_UTIL
     235             :     rText = "SvxLineSpacingItem";
     236             : #else
     237           0 :     rText = OUString();
     238             : #endif
     239           0 :     return SFX_ITEM_PRESENTATION_NONE;
     240             : }
     241             : 
     242             : 
     243             : 
     244           0 : SfxPoolItem* SvxLineSpacingItem::Create(SvStream& rStrm, sal_uInt16) const
     245             : {
     246             :     sal_Int8    nPropSpace;
     247             :     short   nInterSpace;
     248             :     sal_uInt16  nHeight;
     249             :     sal_Int8    nRule, nInterRule;
     250             : 
     251           0 :     rStrm.ReadSChar( nPropSpace )
     252           0 :          .ReadInt16( nInterSpace )
     253           0 :          .ReadUInt16( nHeight )
     254           0 :          .ReadSChar( nRule )
     255           0 :          .ReadSChar( nInterRule );
     256             : 
     257           0 :     SvxLineSpacingItem* pAttr = new SvxLineSpacingItem( nHeight, Which() );
     258           0 :     pAttr->SetInterLineSpace( nInterSpace );
     259           0 :     pAttr->SetPropLineSpace( nPropSpace );
     260           0 :     pAttr->GetLineSpaceRule() = (SvxLineSpace)nRule;
     261           0 :     pAttr->GetInterLineSpaceRule() = (SvxInterLineSpace)nInterRule;
     262           0 :     return pAttr;
     263             : }
     264             : 
     265             : 
     266             : 
     267           0 : SvStream& SvxLineSpacingItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
     268             : {
     269           0 :     rStrm.WriteSChar( (sal_Int8)  GetPropLineSpace() )
     270           0 :          .WriteInt16( (short)  GetInterLineSpace() )
     271           0 :          .WriteUInt16( (sal_uInt16) GetLineHeight() )
     272           0 :          .WriteSChar( (sal_Int8)   GetLineSpaceRule() )
     273           0 :          .WriteSChar( (sal_Int8)   GetInterLineSpaceRule() );
     274           0 :     return rStrm;
     275             : }
     276             : 
     277             : 
     278             : 
     279           0 : sal_uInt16 SvxLineSpacingItem::GetValueCount() const
     280             : {
     281           0 :     return SVX_LINESPACE_END;   // SVX_LINESPACE_TWO_LINES + 1
     282             : }
     283             : 
     284             : 
     285             : 
     286           0 : OUString SvxLineSpacingItem::GetValueTextByPos( sal_uInt16 nPos ) const
     287             : {
     288             :     //! load strings from resource
     289           0 :     OUString aText;
     290           0 :     switch ( nPos )
     291             :     {
     292             :         case SVX_LINESPACE_USER:
     293           0 :             aText = "User";
     294           0 :             break;
     295             :         case SVX_LINESPACE_ONE_LINE:
     296           0 :             aText = "One line";
     297           0 :             break;
     298             :         case SVX_LINESPACE_ONE_POINT_FIVE_LINES:
     299           0 :             aText = "1.5 line";
     300           0 :             break;
     301             :         case SVX_LINESPACE_TWO_LINES:
     302           0 :             aText = "Two lines";
     303           0 :             break;
     304             :     }
     305           0 :     return aText;
     306             : }
     307             : 
     308             : 
     309             : 
     310           0 : sal_uInt16 SvxLineSpacingItem::GetEnumValue() const
     311             : {
     312             :     sal_uInt16 nVal;
     313           0 :     switch ( nPropLineSpace )
     314             :     {
     315           0 :         case 100:   nVal = SVX_LINESPACE_ONE_LINE;              break;
     316           0 :         case 150:   nVal = SVX_LINESPACE_ONE_POINT_FIVE_LINES;  break;
     317           0 :         case 200:   nVal = SVX_LINESPACE_TWO_LINES;             break;
     318           0 :         default:    nVal = SVX_LINESPACE_USER;                  break;
     319             :     }
     320           0 :     return nVal;
     321             : }
     322             : 
     323             : 
     324             : 
     325           0 : void SvxLineSpacingItem::SetEnumValue( sal_uInt16 nVal )
     326             : {
     327           0 :     switch ( nVal )
     328             :     {
     329           0 :         case SVX_LINESPACE_ONE_LINE:             nPropLineSpace = 100; break;
     330           0 :         case SVX_LINESPACE_ONE_POINT_FIVE_LINES: nPropLineSpace = 150; break;
     331           0 :         case SVX_LINESPACE_TWO_LINES:            nPropLineSpace = 200; break;
     332             :     }
     333           0 : }
     334             : 
     335             : // class SvxAdjustItem ---------------------------------------------------
     336             : 
     337           0 : SvxAdjustItem::SvxAdjustItem(const SvxAdjust eAdjst, const sal_uInt16 nId )
     338             :     : SfxEnumItemInterface( nId ),
     339           0 :     bOneBlock( false ), bLastCenter( false ), bLastBlock( false )
     340             : {
     341           0 :     SetAdjust( eAdjst );
     342           0 : }
     343             : 
     344             : 
     345             : 
     346           0 : bool SvxAdjustItem::operator==( const SfxPoolItem& rAttr ) const
     347             : {
     348             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
     349             : 
     350           0 :     return( ( GetAdjust() == ((SvxAdjustItem&)rAttr).GetAdjust() &&
     351           0 :         bOneBlock == ((SvxAdjustItem&)rAttr).bOneBlock &&
     352           0 :         bLastCenter == ((SvxAdjustItem&)rAttr).bLastCenter &&
     353           0 :         bLastBlock == ((SvxAdjustItem&)rAttr).bLastBlock )
     354           0 :         ? 1 : 0 );
     355             : }
     356             : 
     357           0 : bool SvxAdjustItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     358             : {
     359           0 :     nMemberId &= ~CONVERT_TWIPS;
     360           0 :     switch( nMemberId )
     361             :     {
     362           0 :         case MID_PARA_ADJUST      : rVal <<= (sal_Int16)GetAdjust(); break;
     363           0 :         case MID_LAST_LINE_ADJUST : rVal <<= (sal_Int16)GetLastBlock(); break;
     364             :         case MID_EXPAND_SINGLE    :
     365             :         {
     366           0 :             sal_Bool bValue = bOneBlock;
     367           0 :             rVal.setValue( &bValue, ::getCppuBooleanType() );
     368           0 :             break;
     369             :         }
     370             :         default: ;//prevent warning
     371             :     }
     372           0 :     return true;
     373             : }
     374             : 
     375           0 : bool SvxAdjustItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId  )
     376             : {
     377           0 :     nMemberId &= ~CONVERT_TWIPS;
     378           0 :     switch( nMemberId )
     379             :     {
     380             :         case MID_PARA_ADJUST              :
     381             :         case MID_LAST_LINE_ADJUST :
     382             :         {
     383           0 :             sal_Int32 eVal = - 1;
     384             :             try
     385             :             {
     386           0 :                 eVal = ::comphelper::getEnumAsINT32(rVal);
     387             :             }
     388           0 :             catch(...) {}
     389           0 :             if(eVal >= 0 && eVal <= 4)
     390             :             {
     391           0 :                 if(MID_LAST_LINE_ADJUST == nMemberId &&
     392           0 :                     eVal != SVX_ADJUST_LEFT &&
     393           0 :                     eVal != SVX_ADJUST_BLOCK &&
     394             :                     eVal != SVX_ADJUST_CENTER)
     395           0 :                         return false;
     396           0 :                 if(eVal < (sal_uInt16)SVX_ADJUST_END)
     397             :                     nMemberId == MID_PARA_ADJUST ?
     398           0 :                         SetAdjust((SvxAdjust)eVal) :
     399           0 :                             SetLastBlock((SvxAdjust)eVal);
     400             :             }
     401             :         }
     402           0 :         break;
     403             :         case MID_EXPAND_SINGLE :
     404           0 :             bOneBlock = Any2Bool(rVal);
     405           0 :             break;
     406             :     }
     407           0 :     return true;
     408             : }
     409             : 
     410             : 
     411             : 
     412           0 : SfxPoolItem* SvxAdjustItem::Clone( SfxItemPool * ) const
     413             : {
     414           0 :     return new SvxAdjustItem( *this );
     415             : }
     416             : 
     417             : 
     418             : 
     419           0 : SfxItemPresentation SvxAdjustItem::GetPresentation
     420             : (
     421             :     SfxItemPresentation ePres,
     422             :     SfxMapUnit          /*eCoreUnit*/,
     423             :     SfxMapUnit          /*ePresUnit*/,
     424             :     OUString&           rText, const IntlWrapper *
     425             : )   const
     426             : {
     427           0 :     switch ( ePres )
     428             :     {
     429             :         case SFX_ITEM_PRESENTATION_NONE:
     430           0 :             rText = OUString();
     431           0 :             return SFX_ITEM_PRESENTATION_NONE;
     432             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     433             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     434           0 :             rText = GetValueTextByPos( (sal_uInt16)GetAdjust() );
     435           0 :             return ePres;
     436             :         default: ;//prevent warning
     437             :     }
     438           0 :     return SFX_ITEM_PRESENTATION_NONE;
     439             : }
     440             : 
     441             : 
     442             : 
     443           0 : sal_uInt16 SvxAdjustItem::GetValueCount() const
     444             : {
     445           0 :     return SVX_ADJUST_END;  // SVX_ADJUST_BLOCKLINE + 1
     446             : }
     447             : 
     448             : 
     449             : 
     450           0 : OUString SvxAdjustItem::GetValueTextByPos( sal_uInt16 nPos ) const
     451             : {
     452             :     DBG_ASSERT( nPos <= (sal_uInt16)SVX_ADJUST_BLOCKLINE, "enum overflow!" );
     453           0 :     return EE_RESSTR(RID_SVXITEMS_ADJUST_BEGIN + nPos);
     454             : }
     455             : 
     456             : 
     457             : 
     458           0 : sal_uInt16 SvxAdjustItem::GetEnumValue() const
     459             : {
     460           0 :     return (sal_uInt16)GetAdjust();
     461             : }
     462             : 
     463             : 
     464             : 
     465           0 : void SvxAdjustItem::SetEnumValue( sal_uInt16 nVal )
     466             : {
     467           0 :     SetAdjust( (const SvxAdjust)nVal );
     468           0 : }
     469             : 
     470             : 
     471             : 
     472           0 : sal_uInt16 SvxAdjustItem::GetVersion( sal_uInt16 nFileVersion ) const
     473             : {
     474             :     return (nFileVersion == SOFFICE_FILEFORMAT_31)
     475           0 :                ? 0 : ADJUST_LASTBLOCK_VERSION;
     476             : }
     477             : 
     478             : 
     479             : 
     480           0 : SfxPoolItem* SvxAdjustItem::Create(SvStream& rStrm, sal_uInt16 nVersion) const
     481             : {
     482             :     char eAdjustment;
     483           0 :     rStrm.ReadChar( eAdjustment );
     484           0 :     SvxAdjustItem *pRet = new SvxAdjustItem( (SvxAdjust)eAdjustment, Which() );
     485           0 :     if( nVersion >= ADJUST_LASTBLOCK_VERSION )
     486             :     {
     487             :         sal_Int8 nFlags;
     488           0 :         rStrm.ReadSChar( nFlags );
     489           0 :         pRet->bOneBlock = 0 != (nFlags & 0x0001);
     490           0 :         pRet->bLastCenter = 0 != (nFlags & 0x0002);
     491           0 :         pRet->bLastBlock = 0 != (nFlags & 0x0004);
     492             :     }
     493           0 :     return pRet;
     494             : }
     495             : 
     496             : 
     497             : 
     498           0 : SvStream& SvxAdjustItem::Store( SvStream& rStrm, sal_uInt16 nItemVersion ) const
     499             : {
     500           0 :     rStrm.WriteChar( (char)GetAdjust() );
     501           0 :     if ( nItemVersion >= ADJUST_LASTBLOCK_VERSION )
     502             :     {
     503           0 :         sal_Int8 nFlags = 0;
     504           0 :         if ( bOneBlock )
     505           0 :             nFlags |= 0x0001;
     506           0 :         if ( bLastCenter )
     507           0 :             nFlags |= 0x0002;
     508           0 :         if ( bLastBlock )
     509           0 :             nFlags |= 0x0004;
     510           0 :         rStrm.WriteSChar( (sal_Int8) nFlags );
     511             :     }
     512           0 :     return rStrm;
     513             : }
     514             : 
     515             : // class SvxWidowsItem ---------------------------------------------------
     516             : 
     517           0 : SvxWidowsItem::SvxWidowsItem(const sal_uInt8 nL, const sal_uInt16 nId ) :
     518           0 :     SfxByteItem( nId, nL )
     519             : {
     520           0 : }
     521             : 
     522             : 
     523             : 
     524           0 : SfxPoolItem* SvxWidowsItem::Clone( SfxItemPool * ) const
     525             : {
     526           0 :     return new SvxWidowsItem( *this );
     527             : }
     528             : 
     529             : 
     530             : 
     531           0 : SfxPoolItem* SvxWidowsItem::Create(SvStream& rStrm, sal_uInt16) const
     532             : {
     533             :     sal_Int8 nLines;
     534           0 :     rStrm.ReadSChar( nLines );
     535           0 :     return new SvxWidowsItem( nLines, Which() );
     536             : }
     537             : 
     538             : 
     539             : 
     540           0 : SvStream& SvxWidowsItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
     541             : {
     542           0 :     rStrm.WriteSChar( (sal_Int8)GetValue() );
     543           0 :     return rStrm;
     544             : }
     545             : 
     546             : 
     547             : 
     548           0 : SfxItemPresentation SvxWidowsItem::GetPresentation
     549             : (
     550             :     SfxItemPresentation ePres,
     551             :     SfxMapUnit          /*eCoreUnit*/,
     552             :     SfxMapUnit          /*ePresUnit*/,
     553             :     OUString&           rText, const IntlWrapper *
     554             : )   const
     555             : {
     556           0 :     switch ( ePres )
     557             :     {
     558             :         case SFX_ITEM_PRESENTATION_NONE:
     559             :         {
     560           0 :             rText = OUString();
     561           0 :             break;
     562             :         }
     563             : 
     564             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     565             :         {
     566           0 :             rText = EE_RESSTR(RID_SVXITEMS_LINES);
     567           0 :             break;
     568             :         }
     569             : 
     570             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     571             :         {
     572           0 :             rText = EE_RESSTR(RID_SVXITEMS_WIDOWS_COMPLETE) + " " + EE_RESSTR(RID_SVXITEMS_LINES);
     573           0 :             break;
     574             :         }
     575             : 
     576             :         default:
     577             :         {
     578             :             SAL_WARN( "editeng.items", "SvxWidowsItem::GetPresentation(): unknown SfxItemPresentation" );
     579             :         }
     580             :     }
     581             : 
     582           0 :     rText = rText.replaceFirst( "%1", OUString::number( GetValue() ) );
     583           0 :     return ePres;
     584             : }
     585             : 
     586             : // class SvxOrphansItem --------------------------------------------------
     587             : 
     588           0 : SvxOrphansItem::SvxOrphansItem(const sal_uInt8 nL, const sal_uInt16 nId ) :
     589           0 :     SfxByteItem( nId, nL )
     590             : {
     591           0 : }
     592             : 
     593             : 
     594             : 
     595           0 : SfxPoolItem* SvxOrphansItem::Clone( SfxItemPool * ) const
     596             : {
     597           0 :     return new SvxOrphansItem( *this );
     598             : }
     599             : 
     600             : 
     601             : 
     602           0 : SfxPoolItem* SvxOrphansItem::Create(SvStream& rStrm, sal_uInt16) const
     603             : {
     604             :     sal_Int8 nLines;
     605           0 :     rStrm.ReadSChar( nLines );
     606           0 :     return new SvxOrphansItem( nLines, Which() );
     607             : }
     608             : 
     609             : 
     610             : 
     611           0 : SvStream& SvxOrphansItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
     612             : {
     613           0 :     rStrm.WriteSChar( (sal_Int8) GetValue() );
     614           0 :     return rStrm;
     615             : }
     616             : 
     617             : 
     618             : 
     619           0 : SfxItemPresentation SvxOrphansItem::GetPresentation
     620             : (
     621             :     SfxItemPresentation ePres,
     622             :     SfxMapUnit          /*eCoreUnit*/,
     623             :     SfxMapUnit          /*ePresUnit*/,
     624             :     OUString&           rText, const IntlWrapper *
     625             : )   const
     626             : {
     627           0 :     switch ( ePres )
     628             :     {
     629             :         case SFX_ITEM_PRESENTATION_NONE:
     630             :         {
     631           0 :             rText = OUString();
     632           0 :             break;
     633             :         }
     634             : 
     635             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     636             :         {
     637           0 :             rText = EE_RESSTR(RID_SVXITEMS_LINES);
     638           0 :             break;
     639             :         }
     640             : 
     641             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     642             :         {
     643           0 :             rText = EE_RESSTR(RID_SVXITEMS_ORPHANS_COMPLETE) + " " + EE_RESSTR(RID_SVXITEMS_LINES);
     644           0 :             break;
     645             :         }
     646             : 
     647             :         default:
     648             :         {
     649             :             SAL_WARN( "editeng.items", "SvxOrphansItem::GetPresentation(): unknown SfxItemPresentation" );
     650             :         }
     651             :     }
     652             : 
     653           0 :     rText = rText.replaceFirst( "%1", OUString::number( GetValue() ) );
     654           0 :     return ePres;
     655             : }
     656             : 
     657             : // class SvxHyphenZoneItem -----------------------------------------------
     658             : 
     659           0 : SvxHyphenZoneItem::SvxHyphenZoneItem( const bool bHyph, const sal_uInt16 nId ) :
     660           0 :     SfxPoolItem( nId )
     661             : {
     662           0 :     bHyphen = bHyph;
     663           0 :     bPageEnd = true;
     664           0 :     nMinLead = nMinTrail = 0;
     665           0 :     nMaxHyphens = 255;
     666           0 : }
     667             : 
     668             : 
     669           0 : bool    SvxHyphenZoneItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     670             : {
     671           0 :     nMemberId &= ~CONVERT_TWIPS;
     672           0 :     switch(nMemberId)
     673             :     {
     674             :         case  MID_IS_HYPHEN:
     675           0 :             rVal = Bool2Any(bHyphen);
     676           0 :         break;
     677             :         case MID_HYPHEN_MIN_LEAD:
     678           0 :             rVal <<= (sal_Int16)nMinLead;
     679           0 :         break;
     680             :         case MID_HYPHEN_MIN_TRAIL:
     681           0 :             rVal <<= (sal_Int16)nMinTrail;
     682           0 :         break;
     683             :         case MID_HYPHEN_MAX_HYPHENS:
     684           0 :             rVal <<= (sal_Int16)nMaxHyphens;
     685           0 :         break;
     686             :     }
     687           0 :     return true;
     688             : }
     689             : 
     690           0 : bool SvxHyphenZoneItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     691             : {
     692           0 :     nMemberId &= ~CONVERT_TWIPS;
     693           0 :     sal_Int16 nNewVal = 0;
     694             : 
     695           0 :     if( nMemberId != MID_IS_HYPHEN )
     696           0 :         if(!(rVal >>= nNewVal))
     697           0 :             return false;
     698             : 
     699           0 :     switch(nMemberId)
     700             :     {
     701             :         case  MID_IS_HYPHEN:
     702           0 :             bHyphen = Any2Bool(rVal);
     703           0 :         break;
     704             :         case MID_HYPHEN_MIN_LEAD:
     705           0 :             nMinLead = (sal_uInt8)nNewVal;
     706           0 :         break;
     707             :         case MID_HYPHEN_MIN_TRAIL:
     708           0 :             nMinTrail = (sal_uInt8)nNewVal;
     709           0 :         break;
     710             :         case MID_HYPHEN_MAX_HYPHENS:
     711           0 :             nMaxHyphens = (sal_uInt8)nNewVal;
     712           0 :         break;
     713             :     }
     714           0 :     return true;
     715             : }
     716             : 
     717             : 
     718             : 
     719           0 : bool SvxHyphenZoneItem::operator==( const SfxPoolItem& rAttr ) const
     720             : {
     721             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
     722             : 
     723           0 :     return ( (((SvxHyphenZoneItem&)rAttr).bHyphen == bHyphen)
     724           0 :             && (((SvxHyphenZoneItem&)rAttr).bPageEnd == bPageEnd)
     725           0 :             && (((SvxHyphenZoneItem&)rAttr).nMinLead == nMinLead)
     726           0 :             && (((SvxHyphenZoneItem&)rAttr).nMinTrail == nMinTrail)
     727           0 :             && (((SvxHyphenZoneItem&)rAttr).nMaxHyphens == nMaxHyphens) );
     728             : }
     729             : 
     730             : 
     731             : 
     732           0 : SfxPoolItem* SvxHyphenZoneItem::Clone( SfxItemPool * ) const
     733             : {
     734           0 :     return new SvxHyphenZoneItem( *this );
     735             : }
     736             : 
     737             : 
     738             : 
     739           0 : SfxItemPresentation SvxHyphenZoneItem::GetPresentation
     740             : (
     741             :     SfxItemPresentation ePres,
     742             :     SfxMapUnit          /*eCoreUnit*/,
     743             :     SfxMapUnit          /*ePresUnit*/,
     744             :     OUString&           rText, const IntlWrapper *
     745             : )   const
     746             : {
     747           0 :     OUString cpDelimTmp(cpDelim);
     748           0 :     switch ( ePres )
     749             :     {
     750             :         case SFX_ITEM_PRESENTATION_NONE:
     751           0 :             rText = OUString();
     752           0 :             return SFX_ITEM_PRESENTATION_NONE;
     753             :         case SFX_ITEM_PRESENTATION_NAMELESS:
     754             :         {
     755           0 :             sal_uInt16 nId = RID_SVXITEMS_HYPHEN_FALSE;
     756             : 
     757           0 :             if ( bHyphen )
     758           0 :                 nId = RID_SVXITEMS_HYPHEN_TRUE;
     759           0 :             rText = EE_RESSTR(nId) + cpDelimTmp;
     760           0 :             nId = RID_SVXITEMS_PAGE_END_FALSE;
     761             : 
     762           0 :             if ( bPageEnd )
     763           0 :                 nId = RID_SVXITEMS_PAGE_END_TRUE;
     764           0 :             rText = rText + EE_RESSTR(nId) + cpDelimTmp +
     765           0 :                     OUString::number( nMinLead ) + cpDelimTmp +
     766           0 :                     OUString::number( nMinTrail ) + cpDelimTmp +
     767           0 :                     OUString::number( nMaxHyphens );
     768           0 :             return SFX_ITEM_PRESENTATION_COMPLETE;
     769             :         }
     770             :         case SFX_ITEM_PRESENTATION_COMPLETE:
     771             :         {
     772           0 :             sal_uInt16 nId = RID_SVXITEMS_HYPHEN_FALSE;
     773             : 
     774           0 :             if ( bHyphen )
     775           0 :                 nId = RID_SVXITEMS_HYPHEN_TRUE;
     776           0 :             rText = EE_RESSTR(nId) + cpDelimTmp;
     777           0 :             nId = RID_SVXITEMS_PAGE_END_FALSE;
     778             : 
     779           0 :             if ( bPageEnd )
     780           0 :                 nId = RID_SVXITEMS_PAGE_END_TRUE;
     781           0 :             rText = rText +
     782           0 :                     EE_RESSTR(nId) +
     783           0 :                     cpDelimTmp +
     784           0 :                     EE_RESSTR(RID_SVXITEMS_HYPHEN_MINLEAD).replaceAll("%1", OUString::number(nMinLead)) +
     785           0 :                     cpDelimTmp +
     786           0 :                     EE_RESSTR(RID_SVXITEMS_HYPHEN_MINTRAIL).replaceAll("%1", OUString::number(nMinTrail)) +
     787           0 :                     cpDelimTmp +
     788           0 :                     EE_RESSTR(RID_SVXITEMS_HYPHEN_MAX).replaceAll("%1", OUString::number(nMaxHyphens));
     789           0 :             return SFX_ITEM_PRESENTATION_COMPLETE;
     790             :         }
     791             :         default: ;//prevent warning
     792             :     }
     793           0 :     return SFX_ITEM_PRESENTATION_NONE;
     794             : }
     795             : 
     796             : 
     797             : 
     798           0 : SfxPoolItem* SvxHyphenZoneItem::Create(SvStream& rStrm, sal_uInt16) const
     799             : {
     800             :     sal_Int8 _bHyphen, _bHyphenPageEnd;
     801             :     sal_Int8 _nMinLead, _nMinTrail, _nMaxHyphens;
     802           0 :     rStrm.ReadSChar( _bHyphen ).ReadSChar( _bHyphenPageEnd ).ReadSChar( _nMinLead ).ReadSChar( _nMinTrail ).ReadSChar( _nMaxHyphens );
     803           0 :     SvxHyphenZoneItem* pAttr = new SvxHyphenZoneItem( false, Which() );
     804           0 :     pAttr->SetHyphen( _bHyphen != 0 );
     805           0 :     pAttr->SetPageEnd( _bHyphenPageEnd != 0 );
     806           0 :     pAttr->GetMinLead() = _nMinLead;
     807           0 :     pAttr->GetMinTrail() = _nMinTrail;
     808           0 :     pAttr->GetMaxHyphens() = _nMaxHyphens;
     809           0 :     return pAttr;
     810             : }
     811             : 
     812             : 
     813             : 
     814           0 : SvStream& SvxHyphenZoneItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
     815             : {
     816           0 :     rStrm.WriteSChar( (sal_Int8) IsHyphen() )
     817           0 :          .WriteSChar( (sal_Int8) IsPageEnd() )
     818           0 :          .WriteSChar( (sal_Int8) GetMinLead() )
     819           0 :          .WriteSChar( (sal_Int8) GetMinTrail() )
     820           0 :          .WriteSChar( (sal_Int8) GetMaxHyphens() );
     821           0 :     return rStrm;
     822             : }
     823             : 
     824             : // class SvxTabStop ------------------------------------------------------
     825             : 
     826           0 : SvxTabStop::SvxTabStop()
     827             : {
     828           0 :     nTabPos = 0;
     829           0 :     eAdjustment = SVX_TAB_ADJUST_LEFT;
     830           0 :     m_cDecimal = cDfltDecimalChar;
     831           0 :     cFill = cDfltFillChar;
     832           0 : }
     833             : 
     834             : 
     835             : 
     836           0 : SvxTabStop::SvxTabStop( const sal_Int32 nPos, const SvxTabAdjust eAdjst,
     837             :                         const sal_Unicode cDec, const sal_Unicode cFil )
     838             : {
     839           0 :     nTabPos = nPos;
     840           0 :     eAdjustment = eAdjst;
     841           0 :     m_cDecimal = cDec;
     842           0 :     cFill = cFil;
     843           0 : }
     844             : 
     845           0 : void SvxTabStop::fillDecimal() const
     846             : {
     847           0 :     if ( cDfltDecimalChar == m_cDecimal )
     848           0 :         m_cDecimal = SvtSysLocale().GetLocaleData().getNumDecimalSep()[0];
     849           0 : }
     850             : 
     851             : 
     852           0 : OUString SvxTabStop::GetValueString() const
     853             : {
     854             :     OUString aStr = "("
     855           0 :         + OUString::number(nTabPos)
     856           0 :         + ", "
     857           0 :         + EE_RESSTR(RID_SVXITEMS_TAB_ADJUST_BEGIN + (sal_uInt16)eAdjustment)
     858           0 :         + ", ["
     859           0 :         + EE_RESSTR(RID_SVXITEMS_TAB_DECIMAL_CHAR)
     860           0 :         + OUString(GetDecimal())
     861           0 :         + "], , ["
     862           0 :         + EE_RESSTR(RID_SVXITEMS_TAB_FILL_CHAR)
     863           0 :         + OUString(cFill)
     864           0 :         + "])";
     865             : 
     866           0 :     return aStr;
     867             : }
     868             : 
     869             : // class SvxTabStopItem --------------------------------------------------
     870             : 
     871           0 : SvxTabStopItem::SvxTabStopItem( sal_uInt16 _nWhich ) :
     872             :     SfxPoolItem( _nWhich ),
     873           0 :     maTabStops()
     874             : {
     875           0 :     const sal_uInt16 nTabs = SVX_TAB_DEFCOUNT, nDist = SVX_TAB_DEFDIST;
     876           0 :     const SvxTabAdjust eAdjst= SVX_TAB_ADJUST_DEFAULT;
     877             : 
     878           0 :     for (sal_uInt16 i = 0; i < nTabs; ++i)
     879             :     {
     880           0 :         SvxTabStop aTab( (i + 1) * nDist, eAdjst );
     881           0 :         maTabStops.insert( aTab );
     882             :     }
     883           0 : }
     884             : 
     885             : 
     886             : 
     887           0 : SvxTabStopItem::SvxTabStopItem( const sal_uInt16 nTabs,
     888             :                                 const sal_uInt16 nDist,
     889             :                                 const SvxTabAdjust eAdjst,
     890             :                                 sal_uInt16 _nWhich ) :
     891             :     SfxPoolItem( _nWhich ),
     892           0 :     maTabStops()
     893             : {
     894           0 :     for ( sal_uInt16 i = 0; i < nTabs; ++i )
     895             :     {
     896           0 :         SvxTabStop aTab( (i + 1) * nDist, eAdjst );
     897           0 :         maTabStops.insert( aTab );
     898             :     }
     899           0 : }
     900             : 
     901             : 
     902             : 
     903           0 : SvxTabStopItem::SvxTabStopItem( const SvxTabStopItem& rTSI ) :
     904           0 :     SfxPoolItem( rTSI.Which() ),
     905           0 :     maTabStops( rTSI.maTabStops )
     906             : {
     907           0 : }
     908             : 
     909             : 
     910             : 
     911           0 : sal_uInt16 SvxTabStopItem::GetPos( const SvxTabStop& rTab ) const
     912             : {
     913           0 :     SvxTabStopArr::const_iterator it = maTabStops.find( rTab );
     914           0 :     return it != maTabStops.end() ? it - maTabStops.begin() : SVX_TAB_NOTFOUND;
     915             : }
     916             : 
     917             : 
     918             : 
     919           0 : sal_uInt16 SvxTabStopItem::GetPos( const sal_Int32 nPos ) const
     920             : {
     921           0 :     SvxTabStopArr::const_iterator it = maTabStops.find( SvxTabStop( nPos ) );
     922           0 :     return it != maTabStops.end() ? it - maTabStops.begin() : SVX_TAB_NOTFOUND;
     923             : }
     924             : 
     925             : 
     926             : 
     927           0 : SvxTabStopItem& SvxTabStopItem::operator=( const SvxTabStopItem& rTSI )
     928             : {
     929           0 :     maTabStops = rTSI.maTabStops;
     930           0 :     return *this;
     931             : }
     932             : 
     933           0 : bool SvxTabStopItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
     934             : {
     935           0 :     sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     936           0 :     nMemberId &= ~CONVERT_TWIPS;
     937           0 :     switch ( nMemberId )
     938             :     {
     939             :         case MID_TABSTOPS:
     940             :         {
     941           0 :             sal_uInt16 nCount = Count();
     942           0 :             uno::Sequence< style::TabStop> aSeq(nCount);
     943           0 :             style::TabStop* pArr = aSeq.getArray();
     944           0 :             for(sal_uInt16 i = 0; i < nCount; i++)
     945             :             {
     946           0 :                 const SvxTabStop& rTab = (*this)[i];
     947           0 :                 pArr[i].Position        = bConvert ? convertTwipToMm100(rTab.GetTabPos()) : rTab.GetTabPos();
     948           0 :                 switch(rTab.GetAdjustment())
     949             :                 {
     950           0 :                 case  SVX_TAB_ADJUST_LEFT   : pArr[i].Alignment = style::TabAlign_LEFT; break;
     951           0 :                 case  SVX_TAB_ADJUST_RIGHT  : pArr[i].Alignment = style::TabAlign_RIGHT; break;
     952           0 :                 case  SVX_TAB_ADJUST_DECIMAL: pArr[i].Alignment = style::TabAlign_DECIMAL; break;
     953           0 :                 case  SVX_TAB_ADJUST_CENTER : pArr[i].Alignment = style::TabAlign_CENTER; break;
     954             :                     default: //SVX_TAB_ADJUST_DEFAULT
     955           0 :                         pArr[i].Alignment = style::TabAlign_DEFAULT;
     956             : 
     957             :                 }
     958           0 :                 pArr[i].DecimalChar     = rTab.GetDecimal();
     959           0 :                 pArr[i].FillChar        = rTab.GetFill();
     960             :             }
     961           0 :             rVal <<= aSeq;
     962           0 :             break;
     963             :         }
     964             :         case MID_STD_TAB:
     965             :         {
     966           0 :             const SvxTabStop &rTab = maTabStops.front();
     967           0 :             rVal <<= (static_cast<sal_Int32>(bConvert ? convertTwipToMm100(rTab.GetTabPos()) : rTab.GetTabPos()));
     968           0 :             break;
     969             :         }
     970             :     }
     971           0 :     return true;
     972             : }
     973             : 
     974           0 : bool SvxTabStopItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
     975             : {
     976           0 :     sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
     977           0 :     nMemberId &= ~CONVERT_TWIPS;
     978           0 :     switch ( nMemberId )
     979             :     {
     980             :         case MID_TABSTOPS:
     981             :         {
     982           0 :             uno::Sequence< style::TabStop> aSeq;
     983           0 :             if(!(rVal >>= aSeq))
     984             :             {
     985           0 :                 uno::Sequence < uno::Sequence < uno::Any >  > aAnySeq;
     986           0 :                 if (!(rVal >>= aAnySeq))
     987           0 :                     return false;
     988           0 :                 sal_Int32 nLength = aAnySeq.getLength();
     989           0 :                 aSeq.realloc( nLength );
     990           0 :                 for ( sal_Int32 n=0; n<nLength; n++ )
     991             :                 {
     992           0 :                     uno::Sequence < uno::Any >& rAnySeq = aAnySeq[n];
     993           0 :                     if ( rAnySeq.getLength() == 4 )
     994             :                     {
     995           0 :                         if (!(rAnySeq[0] >>= aSeq[n].Position)) return false;
     996           0 :                         if (!(rAnySeq[1] >>= aSeq[n].Alignment))
     997             :                         {
     998           0 :                             sal_Int32 nVal = 0;
     999           0 :                             if (rAnySeq[1] >>= nVal)
    1000           0 :                                 aSeq[n].Alignment = (com::sun::star::style::TabAlign) nVal;
    1001             :                             else
    1002           0 :                                 return false;
    1003             :                         }
    1004           0 :                         if (!(rAnySeq[2] >>= aSeq[n].DecimalChar))
    1005             :                         {
    1006           0 :                             OUString aVal;
    1007           0 :                             if ( (rAnySeq[2] >>= aVal) && aVal.getLength() == 1 )
    1008           0 :                                 aSeq[n].DecimalChar = aVal.toChar();
    1009             :                             else
    1010           0 :                                 return false;
    1011             :                         }
    1012           0 :                         if (!(rAnySeq[3] >>= aSeq[n].FillChar))
    1013             :                         {
    1014           0 :                             OUString aVal;
    1015           0 :                             if ( (rAnySeq[3] >>= aVal) && aVal.getLength() == 1 )
    1016           0 :                                 aSeq[n].FillChar = aVal.toChar();
    1017             :                             else
    1018           0 :                                 return false;
    1019             :                         }
    1020             :                     }
    1021             :                     else
    1022           0 :                         return false;
    1023           0 :                 }
    1024             :             }
    1025             : 
    1026           0 :             maTabStops.clear();
    1027           0 :             const style::TabStop* pArr = aSeq.getConstArray();
    1028           0 :             const sal_uInt16 nCount = (sal_uInt16)aSeq.getLength();
    1029           0 :             for(sal_uInt16 i = 0; i < nCount ; i++)
    1030             :             {
    1031           0 :                 SvxTabAdjust eAdjust = SVX_TAB_ADJUST_DEFAULT;
    1032           0 :                 switch(pArr[i].Alignment)
    1033             :                 {
    1034           0 :                 case style::TabAlign_LEFT   : eAdjust = SVX_TAB_ADJUST_LEFT; break;
    1035           0 :                 case style::TabAlign_CENTER : eAdjust = SVX_TAB_ADJUST_CENTER; break;
    1036           0 :                 case style::TabAlign_RIGHT  : eAdjust = SVX_TAB_ADJUST_RIGHT; break;
    1037           0 :                 case style::TabAlign_DECIMAL: eAdjust = SVX_TAB_ADJUST_DECIMAL; break;
    1038             :                 default: ;//prevent warning
    1039             :                 }
    1040           0 :                 sal_Unicode cFill = pArr[i].FillChar;
    1041           0 :                 sal_Unicode cDecimal = pArr[i].DecimalChar;
    1042           0 :                 SvxTabStop aTab( bConvert ? convertMm100ToTwip(pArr[i].Position) : pArr[i].Position,
    1043             :                                     eAdjust,
    1044             :                                     cDecimal,
    1045           0 :                                     cFill );
    1046           0 :                 Insert(aTab);
    1047             :             }
    1048           0 :             break;
    1049             :         }
    1050             :         case MID_STD_TAB:
    1051             :         {
    1052           0 :             sal_Int32 nNewPos = 0;
    1053           0 :             if (!(rVal >>= nNewPos) )
    1054           0 :                 return false;
    1055           0 :             if (bConvert)
    1056           0 :                 nNewPos = convertMm100ToTwip ( nNewPos );
    1057           0 :             if (nNewPos <= 0)
    1058           0 :                 return false;
    1059           0 :             const SvxTabStop& rTab = maTabStops.front();
    1060           0 :             SvxTabStop aNewTab ( nNewPos, rTab.GetAdjustment(), rTab.GetDecimal(), rTab.GetFill() );
    1061           0 :             Remove( 0 );
    1062           0 :             Insert( aNewTab );
    1063           0 :             break;
    1064             :         }
    1065             :     }
    1066           0 :     return true;
    1067             : }
    1068             : 
    1069             : 
    1070           0 : bool SvxTabStopItem::operator==( const SfxPoolItem& rAttr ) const
    1071             : {
    1072             :     DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
    1073             : 
    1074           0 :     const SvxTabStopItem& rTSI = (SvxTabStopItem&)rAttr;
    1075             : 
    1076           0 :     if ( Count() != rTSI.Count() )
    1077           0 :         return false;
    1078             : 
    1079           0 :     for ( sal_uInt16 i = 0; i < Count(); ++i )
    1080           0 :         if( !(*this)[i].IsEqual( rTSI[i] ) )
    1081           0 :             return false;
    1082           0 :     return true;
    1083             : }
    1084             : 
    1085             : 
    1086             : 
    1087           0 : SfxPoolItem* SvxTabStopItem::Clone( SfxItemPool * ) const
    1088             : {
    1089           0 :     return new SvxTabStopItem( *this );
    1090             : }
    1091             : 
    1092             : 
    1093             : 
    1094           0 : SfxItemPresentation SvxTabStopItem::GetPresentation
    1095             : (
    1096             :     SfxItemPresentation ePres,
    1097             :     SfxMapUnit          eCoreUnit,
    1098             :     SfxMapUnit          ePresUnit,
    1099             :     OUString&           rText, const IntlWrapper *pIntl
    1100             : )   const
    1101             : {
    1102           0 :     rText = OUString();
    1103             : 
    1104           0 :     if ( ePres > SFX_ITEM_PRESENTATION_NONE )
    1105             :     {
    1106           0 :         sal_Bool bComma = sal_False;
    1107             : 
    1108           0 :         for ( sal_uInt16 i = 0; i < Count(); ++i )
    1109             :         {
    1110           0 :             if ( SVX_TAB_ADJUST_DEFAULT != ((*this)[i]).GetAdjustment() )
    1111             :             {
    1112           0 :                 if ( bComma )
    1113           0 :                     rText += ",";
    1114           0 :                 rText += GetMetricText(
    1115           0 :                     ((*this)[i]).GetTabPos(), eCoreUnit, ePresUnit, pIntl );
    1116           0 :                 if ( SFX_ITEM_PRESENTATION_COMPLETE == ePres )
    1117             :                 {
    1118           0 :                     rText += " " + EE_RESSTR(GetMetricId(ePresUnit));
    1119             :                 }
    1120           0 :                 bComma = sal_True;
    1121             :             }
    1122             :         }
    1123             :     }
    1124           0 :     return ePres;
    1125             : }
    1126             : 
    1127             : 
    1128             : 
    1129           0 : SfxPoolItem* SvxTabStopItem::Create( SvStream& rStrm, sal_uInt16 ) const
    1130             : {
    1131             :     sal_Int8 nTabs;
    1132           0 :     rStrm.ReadSChar( nTabs );
    1133             :     SvxTabStopItem* pAttr =
    1134           0 :         new SvxTabStopItem( 0, 0, SVX_TAB_ADJUST_DEFAULT, Which() );
    1135             : 
    1136           0 :     for ( sal_Int8 i = 0; i < nTabs; i++ )
    1137             :     {
    1138           0 :         sal_Int32 nPos(0);
    1139             :         sal_Int8 eAdjust;
    1140             :         unsigned char cDecimal, cFill;
    1141           0 :         rStrm.ReadInt32( nPos ).ReadSChar( eAdjust ).ReadUChar( cDecimal ).ReadUChar( cFill );
    1142           0 :         if( !i || SVX_TAB_ADJUST_DEFAULT != eAdjust )
    1143             :             pAttr->Insert( SvxTabStop
    1144           0 :                 ( nPos, (SvxTabAdjust)eAdjust, sal_Unicode(cDecimal), sal_Unicode(cFill) ) );
    1145             :     }
    1146           0 :     return pAttr;
    1147             : }
    1148             : 
    1149             : 
    1150             : 
    1151           0 : SvStream& SvxTabStopItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
    1152             : {
    1153             :     // Default-Tabs are only expanded for the default Attribute. For complete
    1154             :     // backward compabillity (<=304) all tabs have to be expanded, this makes
    1155             :     // the files grow large in size. All only SWG!
    1156             : 
    1157           0 :     const SfxItemPool *pPool = SfxItemPool::GetStoringPool();
    1158             :     const bool bStoreDefTabs = pPool
    1159           0 :         && pPool->GetName() == "SWG"
    1160           0 :         && ::IsDefaultItem( this );
    1161             : 
    1162           0 :     const short nTabs = Count();
    1163           0 :     sal_uInt16  nCount = 0, nDefDist = 0;
    1164           0 :     sal_Int32 nNew = 0;
    1165             : 
    1166           0 :     if( bStoreDefTabs )
    1167             :     {
    1168             :         const SvxTabStopItem& rDefTab = (const SvxTabStopItem &)
    1169           0 :             pPool->GetDefaultItem( pPool->GetWhich( SID_ATTR_TABSTOP, false ) );
    1170           0 :         nDefDist = sal_uInt16( rDefTab.maTabStops.front().GetTabPos() );
    1171           0 :         const sal_Int32 nPos = nTabs > 0 ? (*this)[nTabs-1].GetTabPos() : 0;
    1172           0 :         nCount  = (sal_uInt16)(nPos / nDefDist);
    1173           0 :         nNew    = (nCount + 1) * nDefDist;
    1174             : 
    1175           0 :         if( nNew <= nPos + 50 )
    1176           0 :             nNew += nDefDist;
    1177             : 
    1178           0 :         sal_Int32 lA3Width = SvxPaperInfo::GetPaperSize(PAPER_A3).Width();
    1179           0 :         nCount = (sal_uInt16)(nNew < lA3Width ? ( lA3Width - nNew ) / nDefDist + 1 : 0);
    1180             :     }
    1181             : 
    1182           0 :     rStrm.WriteSChar( (sal_Int8) ( nTabs + nCount ) );
    1183           0 :     for ( short i = 0; i < nTabs; i++ )
    1184             :     {
    1185           0 :         const SvxTabStop& rTab = (*this)[ i ];
    1186           0 :         rStrm.WriteInt32( rTab.GetTabPos() )
    1187           0 :              .WriteSChar( (sal_Int8) rTab.GetAdjustment() )
    1188           0 :              .WriteUChar( (unsigned char) rTab.GetDecimal() )
    1189           0 :              .WriteUChar( (unsigned char) rTab.GetFill() );
    1190             :     }
    1191             : 
    1192           0 :     if ( bStoreDefTabs )
    1193           0 :         for( ; nCount; --nCount )
    1194             :         {
    1195           0 :             SvxTabStop aSwTabStop(nNew, SVX_TAB_ADJUST_DEFAULT);
    1196           0 :             rStrm.WriteInt32( aSwTabStop.GetTabPos() )
    1197           0 :                  .WriteSChar( (sal_Int8) aSwTabStop.GetAdjustment() )
    1198           0 :                  .WriteUChar( (unsigned char) aSwTabStop.GetDecimal() )
    1199           0 :                  .WriteUChar( (unsigned char) aSwTabStop.GetFill() );
    1200           0 :             nNew += nDefDist;
    1201             :         }
    1202             : 
    1203           0 :     return rStrm;
    1204             : }
    1205             : 
    1206             : 
    1207           0 : bool SvxTabStopItem::Insert( const SvxTabStop& rTab )
    1208             : {
    1209           0 :     sal_uInt16 nTabPos = GetPos(rTab);
    1210           0 :     if(SVX_TAB_NOTFOUND != nTabPos )
    1211           0 :         Remove(nTabPos);
    1212           0 :     return maTabStops.insert( rTab ).second;
    1213             : }
    1214             : 
    1215           0 : void SvxTabStopItem::Insert( const SvxTabStopItem* pTabs, sal_uInt16 nStart,
    1216             :                             sal_uInt16 nEnd )
    1217             : {
    1218           0 :     for( sal_uInt16 i = nStart; i < nEnd && i < pTabs->Count(); i++ )
    1219             :     {
    1220           0 :         const SvxTabStop& rTab = (*pTabs)[i];
    1221           0 :         sal_uInt16 nTabPos = GetPos(rTab);
    1222           0 :         if(SVX_TAB_NOTFOUND != nTabPos)
    1223           0 :             Remove(nTabPos);
    1224             :     }
    1225           0 :     for( sal_uInt16 i = nStart; i < nEnd && i < pTabs->Count(); i++ )
    1226             :     {
    1227           0 :         maTabStops.insert( (*pTabs)[i] );
    1228             :     }
    1229           0 : }
    1230             : 
    1231             : 
    1232             : 
    1233             : // class SvxFmtSplitItem -------------------------------------------------
    1234           0 : SvxFmtSplitItem::~SvxFmtSplitItem()
    1235             : {
    1236           0 : }
    1237             : 
    1238           0 : SfxPoolItem* SvxFmtSplitItem::Clone( SfxItemPool * ) const
    1239             : {
    1240           0 :     return new SvxFmtSplitItem( *this );
    1241             : }
    1242             : 
    1243             : 
    1244             : 
    1245           0 : SvStream& SvxFmtSplitItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const
    1246             : {
    1247           0 :     rStrm.WriteSChar( (sal_Int8)GetValue() );
    1248           0 :     return rStrm;
    1249             : }
    1250             : 
    1251             : 
    1252             : 
    1253           0 : SfxPoolItem* SvxFmtSplitItem::Create( SvStream& rStrm, sal_uInt16 ) const
    1254             : {
    1255             :     sal_Int8 bIsSplit;
    1256           0 :     rStrm.ReadSChar( bIsSplit );
    1257           0 :     return new SvxFmtSplitItem( bIsSplit != 0, Which() );
    1258             : }
    1259             : 
    1260             : 
    1261             : 
    1262           0 : SfxItemPresentation SvxFmtSplitItem::GetPresentation
    1263             : (
    1264             :     SfxItemPresentation ePres,
    1265             :     SfxMapUnit          /*eCoreUnit*/,
    1266             :     SfxMapUnit          /*ePresUnit*/,
    1267             :     OUString&           rText, const IntlWrapper *
    1268             : )   const
    1269             : {
    1270           0 :     switch ( ePres )
    1271             :     {
    1272             :         case SFX_ITEM_PRESENTATION_NONE:
    1273           0 :             rText = OUString();
    1274           0 :             return SFX_ITEM_PRESENTATION_NONE;
    1275             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1276             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1277             :         {
    1278           0 :             sal_uInt16 nId = RID_SVXITEMS_FMTSPLIT_FALSE;
    1279             : 
    1280           0 :             if ( GetValue() )
    1281           0 :                 nId = RID_SVXITEMS_FMTSPLIT_TRUE;
    1282           0 :             rText = EE_RESSTR(nId);
    1283           0 :             return ePres;
    1284             :         }
    1285             :         default: ;//prevent warning
    1286             :     }
    1287           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1288             : }
    1289             : 
    1290             : 
    1291             : 
    1292           0 : SfxPoolItem* SvxPageModelItem::Clone( SfxItemPool* ) const
    1293             : {
    1294           0 :     return new SvxPageModelItem( *this );
    1295             : }
    1296             : 
    1297             : 
    1298             : 
    1299           0 : bool SvxPageModelItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const
    1300             : {
    1301           0 :     nMemberId &= ~CONVERT_TWIPS;
    1302             : 
    1303           0 :     switch ( nMemberId )
    1304             :     {
    1305           0 :         case MID_AUTO: rVal <<= (sal_Bool) bAuto; break;
    1306           0 :         case MID_NAME: rVal <<= OUString( GetValue() ); break;
    1307           0 :         default: OSL_FAIL("Wrong MemberId!"); return false;
    1308             :     }
    1309             : 
    1310           0 :     return true;
    1311             : }
    1312             : 
    1313           0 : bool SvxPageModelItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId )
    1314             : {
    1315           0 :     nMemberId &= ~CONVERT_TWIPS;
    1316             :     sal_Bool bRet;
    1317           0 :     OUString aStr;
    1318           0 :     switch ( nMemberId )
    1319             :     {
    1320           0 :         case MID_AUTO: bRet = ( rVal >>= bAuto ); break;
    1321           0 :         case MID_NAME: bRet = ( rVal >>= aStr ); if ( bRet ) SetValue(aStr); break;
    1322           0 :         default: OSL_FAIL("Wrong MemberId!"); return false;
    1323             :     }
    1324             : 
    1325           0 :     return bRet;
    1326             : }
    1327             : 
    1328           0 : SfxItemPresentation SvxPageModelItem::GetPresentation
    1329             : (
    1330             :     SfxItemPresentation ePres,
    1331             :     SfxMapUnit          /*eCoreUnit*/,
    1332             :     SfxMapUnit          /*ePresUnit*/,
    1333             :     OUString&           rText, const IntlWrapper *
    1334             : )   const
    1335             : {
    1336           0 :     rText = OUString();
    1337           0 :     bool bSet = !GetValue().isEmpty();
    1338             : 
    1339           0 :     switch ( ePres )
    1340             :     {
    1341             :         case SFX_ITEM_PRESENTATION_NONE:
    1342           0 :             return SFX_ITEM_PRESENTATION_NONE;
    1343             : 
    1344             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1345           0 :             if ( bSet )
    1346           0 :                 rText = GetValue();
    1347           0 :             return SFX_ITEM_PRESENTATION_NAMELESS;
    1348             : 
    1349             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1350           0 :             if ( bSet )
    1351             :             {
    1352           0 :                 rText = EE_RESSTR(RID_SVXITEMS_PAGEMODEL_COMPLETE) + GetValue();
    1353             :             }
    1354           0 :             return SFX_ITEM_PRESENTATION_COMPLETE;
    1355             :         default: ;//prevent warning
    1356             :     }
    1357           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1358             : }
    1359             : 
    1360             : 
    1361             : 
    1362           0 : SvxScriptSpaceItem::SvxScriptSpaceItem( bool bOn, const sal_uInt16 nId )
    1363           0 :     : SfxBoolItem( nId, bOn )
    1364             : {
    1365           0 : }
    1366             : 
    1367           0 : SfxPoolItem* SvxScriptSpaceItem::Clone( SfxItemPool * ) const
    1368             : {
    1369           0 :     return new SvxScriptSpaceItem( GetValue(), Which() );
    1370             : }
    1371             : 
    1372           0 : SfxPoolItem* SvxScriptSpaceItem::Create(SvStream & rStrm, sal_uInt16) const
    1373             : {
    1374             :     sal_Bool bFlag;
    1375           0 :     rStrm.ReadUChar( bFlag );
    1376           0 :     return new SvxScriptSpaceItem( bFlag, Which() );
    1377             : }
    1378             : 
    1379           0 : sal_uInt16  SvxScriptSpaceItem::GetVersion( sal_uInt16 nFFVer ) const
    1380             : {
    1381             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1382             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1383             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1384             :             "SvxTwoLinesItem: Is there a new file format? ");
    1385             : 
    1386           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1387             : }
    1388             : 
    1389           0 : SfxItemPresentation SvxScriptSpaceItem::GetPresentation(
    1390             :         SfxItemPresentation ePres,
    1391             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1392             :         OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    1393             : {
    1394           0 :     switch( ePres )
    1395             :     {
    1396             :     case SFX_ITEM_PRESENTATION_NONE:
    1397           0 :         rText = OUString();
    1398           0 :         break;
    1399             :     case SFX_ITEM_PRESENTATION_NAMELESS:
    1400             :     case SFX_ITEM_PRESENTATION_COMPLETE:
    1401             :         {
    1402           0 :             rText = EE_RESSTR( !GetValue()
    1403             :                                     ? RID_SVXITEMS_SCRPTSPC_OFF
    1404           0 :                                     : RID_SVXITEMS_SCRPTSPC_ON );
    1405           0 :             return ePres;
    1406             :         }
    1407             :     default: ;//prevent warning
    1408             :     }
    1409           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1410             : }
    1411             : 
    1412             : 
    1413             : 
    1414           0 : SvxHangingPunctuationItem::SvxHangingPunctuationItem(
    1415             :                                     bool bOn, const sal_uInt16 nId )
    1416           0 :     : SfxBoolItem( nId, bOn )
    1417             : {
    1418           0 : }
    1419             : 
    1420           0 : SfxPoolItem* SvxHangingPunctuationItem::Clone( SfxItemPool * ) const
    1421             : {
    1422           0 :     return new SvxHangingPunctuationItem( GetValue(), Which() );
    1423             : }
    1424             : 
    1425           0 : SfxPoolItem* SvxHangingPunctuationItem::Create(SvStream & rStrm, sal_uInt16) const
    1426             : {
    1427             :     sal_Bool nValue;
    1428           0 :     rStrm.ReadUChar( nValue );
    1429           0 :     return new SvxHangingPunctuationItem( nValue, Which() );
    1430             : }
    1431             : 
    1432           0 : sal_uInt16 SvxHangingPunctuationItem::GetVersion( sal_uInt16 nFFVer ) const
    1433             : {
    1434             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1435             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1436             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1437             :             "SvxHangingPunctuationItem: Is there a new file format? ");
    1438             : 
    1439           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1440             : }
    1441             : 
    1442           0 : SfxItemPresentation SvxHangingPunctuationItem::GetPresentation(
    1443             :         SfxItemPresentation ePres,
    1444             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1445             :         OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    1446             : {
    1447           0 :     switch( ePres )
    1448             :     {
    1449             :         case SFX_ITEM_PRESENTATION_NONE:
    1450           0 :             rText = OUString();
    1451           0 :             break;
    1452             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1453             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1454             :             {
    1455           0 :                 rText = EE_RESSTR( !GetValue()
    1456             :                                         ? RID_SVXITEMS_HNGPNCT_OFF
    1457           0 :                                         : RID_SVXITEMS_HNGPNCT_ON );
    1458           0 :                 return ePres;
    1459             :             }
    1460             :         default: ;//prevent warning
    1461           0 :             break;
    1462             :     }
    1463           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1464             : }
    1465             : 
    1466             : 
    1467           0 : SvxForbiddenRuleItem::SvxForbiddenRuleItem(
    1468             :                                     bool bOn, const sal_uInt16 nId )
    1469           0 :     : SfxBoolItem( nId, bOn )
    1470             : {
    1471           0 : }
    1472             : 
    1473           0 : SfxPoolItem* SvxForbiddenRuleItem::Clone( SfxItemPool * ) const
    1474             : {
    1475           0 :     return new SvxForbiddenRuleItem( GetValue(), Which() );
    1476             : }
    1477             : 
    1478           0 : SfxPoolItem* SvxForbiddenRuleItem::Create(SvStream & rStrm, sal_uInt16) const
    1479             : {
    1480             :     sal_Bool nValue;
    1481           0 :     rStrm.ReadUChar( nValue );
    1482           0 :     return new SvxForbiddenRuleItem( nValue, Which() );
    1483             : }
    1484             : 
    1485           0 : sal_uInt16 SvxForbiddenRuleItem::GetVersion( sal_uInt16 nFFVer ) const
    1486             : {
    1487             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1488             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1489             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1490             :             "SvxForbiddenRuleItem: Is there a new file format? ");
    1491             : 
    1492           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1493             : }
    1494             : 
    1495           0 : SfxItemPresentation SvxForbiddenRuleItem::GetPresentation(
    1496             :         SfxItemPresentation ePres,
    1497             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1498             :         OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    1499             : {
    1500           0 :     switch( ePres )
    1501             :     {
    1502             :         case SFX_ITEM_PRESENTATION_NONE:
    1503           0 :             rText = OUString();
    1504           0 :             break;
    1505             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1506             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1507             :             {
    1508           0 :                 rText = EE_RESSTR( !GetValue()
    1509             :                                         ? RID_SVXITEMS_FORBIDDEN_RULE_OFF
    1510           0 :                                         : RID_SVXITEMS_FORBIDDEN_RULE_ON );
    1511           0 :                 return ePres;
    1512             :             }
    1513             :         default: ;//prevent warning
    1514           0 :             break;
    1515             :     }
    1516           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1517             : }
    1518             : 
    1519             : /*************************************************************************
    1520             : |*    class SvxParaVertAlignItem
    1521             : *************************************************************************/
    1522             : 
    1523           0 : SvxParaVertAlignItem::SvxParaVertAlignItem( sal_uInt16 nValue,
    1524             :     const sal_uInt16 nW )
    1525           0 :     : SfxUInt16Item( nW, nValue )
    1526             : {
    1527           0 : }
    1528             : 
    1529           0 : SfxPoolItem* SvxParaVertAlignItem::Clone( SfxItemPool* ) const
    1530             : {
    1531           0 :     return new SvxParaVertAlignItem( GetValue(), Which() );
    1532             : }
    1533             : 
    1534           0 : SfxPoolItem* SvxParaVertAlignItem::Create( SvStream& rStrm, sal_uInt16 ) const
    1535             : {
    1536             :     sal_uInt16 nVal;
    1537           0 :     rStrm.ReadUInt16( nVal );
    1538           0 :     return new SvxParaVertAlignItem( nVal, Which() );
    1539             : }
    1540             : 
    1541           0 : SvStream& SvxParaVertAlignItem::Store( SvStream & rStrm, sal_uInt16 ) const
    1542             : {
    1543           0 :     rStrm.WriteUInt16( GetValue() );
    1544           0 :     return rStrm;
    1545             : }
    1546             : 
    1547           0 : sal_uInt16 SvxParaVertAlignItem::GetVersion( sal_uInt16 nFFVer ) const
    1548             : {
    1549           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1550             : }
    1551             : 
    1552           0 : SfxItemPresentation SvxParaVertAlignItem::GetPresentation(
    1553             :         SfxItemPresentation ePres,
    1554             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1555             :         OUString &rText, const IntlWrapper*  ) const
    1556             : {
    1557           0 :     switch( ePres )
    1558             :     {
    1559             :         case SFX_ITEM_PRESENTATION_NONE:
    1560           0 :             rText = OUString();
    1561           0 :             break;
    1562             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1563             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1564             :             {
    1565             :                 sal_uInt16 nTmp;
    1566           0 :                 switch( GetValue() )
    1567             :                 {
    1568           0 :                     case AUTOMATIC: nTmp = RID_SVXITEMS_PARAVERTALIGN_AUTO; break;
    1569           0 :                     case TOP:       nTmp = RID_SVXITEMS_PARAVERTALIGN_TOP; break;
    1570           0 :                     case CENTER:    nTmp = RID_SVXITEMS_PARAVERTALIGN_CENTER; break;
    1571           0 :                     case BOTTOM:    nTmp = RID_SVXITEMS_PARAVERTALIGN_BOTTOM; break;
    1572           0 :                     default:    nTmp = RID_SVXITEMS_PARAVERTALIGN_BASELINE; break;
    1573             :                 }
    1574           0 :                 rText = EE_RESSTR( nTmp );
    1575           0 :                 return ePres;
    1576             :             }
    1577             :         default: ;//prevent warning
    1578           0 :             break;
    1579             :     }
    1580           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1581             : }
    1582             : 
    1583           0 : bool SvxParaVertAlignItem::QueryValue( com::sun::star::uno::Any& rVal,
    1584             :                                            sal_uInt8 /*nMemberId*/ ) const
    1585             : {
    1586           0 :     rVal <<= (sal_Int16)GetValue();
    1587           0 :     return true;
    1588             : }
    1589             : 
    1590           0 : bool SvxParaVertAlignItem::PutValue( const com::sun::star::uno::Any& rVal,
    1591             :                                          sal_uInt8 /*nMemberId*/ )
    1592             : {
    1593           0 :     sal_Int16 nVal = sal_Int16();
    1594           0 :     if((rVal >>= nVal) && nVal >=0 && nVal <= BOTTOM )
    1595             :     {
    1596           0 :         SetValue( (sal_uInt16)nVal );
    1597           0 :         return true;
    1598             :     }
    1599             :     else
    1600           0 :         return false;
    1601             : }
    1602             : 
    1603           0 : bool SvxParaVertAlignItem::operator==( const SfxPoolItem& rItem ) const
    1604             : {
    1605             :     DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" );
    1606           0 :     return SfxUInt16Item::operator==( rItem );
    1607             : }
    1608             : 
    1609             : 
    1610           0 : SvxParaGridItem::SvxParaGridItem( bool bOn, const sal_uInt16 nId )
    1611           0 :     : SfxBoolItem( nId, bOn )
    1612             : {
    1613           0 : }
    1614             : 
    1615           0 : SfxPoolItem* SvxParaGridItem::Clone( SfxItemPool * ) const
    1616             : {
    1617           0 :     return new SvxParaGridItem( GetValue(), Which() );
    1618             : }
    1619             : 
    1620           0 : SfxPoolItem* SvxParaGridItem::Create(SvStream & rStrm, sal_uInt16) const
    1621             : {
    1622             :     sal_Bool bFlag;
    1623           0 :     rStrm.ReadUChar( bFlag );
    1624           0 :     return new SvxParaGridItem( bFlag, Which() );
    1625             : }
    1626             : 
    1627           0 : sal_uInt16  SvxParaGridItem::GetVersion( sal_uInt16 nFFVer ) const
    1628             : {
    1629             :     DBG_ASSERT( SOFFICE_FILEFORMAT_31==nFFVer ||
    1630             :             SOFFICE_FILEFORMAT_40==nFFVer ||
    1631             :             SOFFICE_FILEFORMAT_50==nFFVer,
    1632             :             "SvxParaGridItem: Is there a new file format? ");
    1633             : 
    1634           0 :     return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
    1635             : }
    1636             : 
    1637           0 : SfxItemPresentation SvxParaGridItem::GetPresentation(
    1638             :         SfxItemPresentation ePres,
    1639             :         SfxMapUnit /*eCoreMetric*/, SfxMapUnit /*ePresMetric*/,
    1640             :         OUString &rText, const IntlWrapper* /*pIntl*/ ) const
    1641             : {
    1642           0 :     switch( ePres )
    1643             :     {
    1644             :         case SFX_ITEM_PRESENTATION_NONE:
    1645           0 :             rText = OUString();
    1646           0 :             break;
    1647             :         case SFX_ITEM_PRESENTATION_NAMELESS:
    1648             :         case SFX_ITEM_PRESENTATION_COMPLETE:
    1649             :             {
    1650           0 :                 rText = GetValue() ?
    1651             :                         EE_RESSTR( RID_SVXITEMS_PARASNAPTOGRID_ON ) :
    1652           0 :                         EE_RESSTR( RID_SVXITEMS_PARASNAPTOGRID_OFF );
    1653             : 
    1654           0 :                 return ePres;
    1655             :             }
    1656             :         default: ;//prevent warning
    1657           0 :             break;
    1658             :     }
    1659           0 :     return SFX_ITEM_PRESENTATION_NONE;
    1660             : }
    1661             : 
    1662             : 
    1663             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10