Files
libreoffice/svx/source/items/pageitem.cxx
Rüdiger Timm f267502e6b INTEGRATION: CWS ooo19126 (1.4.1624); FILE MERGED
2005/09/05 14:25:44 rt 1.4.1624.1: #i54170# Change license header: remove SISSL
2005-09-08 22:38:18 +00:00

355 lines
10 KiB
C++

/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: pageitem.cxx,v $
*
* $Revision: 1.5 $
*
* last change: $Author: rt $ $Date: 2005-09-08 23:38:18 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
// include ---------------------------------------------------------------
#ifndef _STREAM_HXX
#include <tools/stream.hxx>
#endif
#pragma hdrstop
// Erstmal definieren, damit die Klassendeklarionen angezogen werden.
#define ITEMID_PAGE 0
#define ITEMID_SETITEM 0
#include "pageitem.hxx"
#include "itemtype.hxx"
#include <unomid.hxx>
#ifndef _COM_SUN_STAR_STYLE_PAGESTYLELAYOUT_HPP_
#include <com/sun/star/style/PageStyleLayout.hpp>
#endif
#ifndef _COM_SUN_STAR_STYLE_BREAKTYPE_HPP_
#include <com/sun/star/style/BreakType.hpp>
#endif
#ifndef _SFXITEMSET_HXX //autogen
#include <svtools/itemset.hxx>
#endif
using namespace ::rtl;
using namespace ::com::sun::star;
// STATIC DATA -----------------------------------------------------------
TYPEINIT1_AUTOFACTORY( SvxPageItem, SfxPoolItem );
/*--------------------------------------------------------------------
Beschreibung: Konstruktor
--------------------------------------------------------------------*/
SvxPageItem::SvxPageItem( const USHORT nId ) : SfxPoolItem( nId ),
eNumType ( SVX_ARABIC ),
bLandscape ( sal_False ),
eUse ( SVX_PAGE_ALL )
{
}
/*--------------------------------------------------------------------
Beschreibung: Copy-Konstruktor
--------------------------------------------------------------------*/
SvxPageItem::SvxPageItem( const SvxPageItem& rItem )
: SfxPoolItem( rItem )
{
eNumType = rItem.eNumType;
bLandscape = rItem.bLandscape;
eUse = rItem.eUse;
}
/*--------------------------------------------------------------------
Beschreibung: Clonen
--------------------------------------------------------------------*/
SfxPoolItem* SvxPageItem::Clone( SfxItemPool *pPool ) const
{
return new SvxPageItem( *this );
}
/*--------------------------------------------------------------------
Beschreibung: Abfrage auf Gleichheit
--------------------------------------------------------------------*/
int SvxPageItem::operator==( const SfxPoolItem& rAttr ) const
{
DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
const SvxPageItem& rItem = (SvxPageItem&)rAttr;
return ( eNumType == rItem.eNumType &&
bLandscape == rItem.bLandscape &&
eUse == rItem.eUse );
}
inline XubString GetUsageText( const USHORT eU )
{
if ( eU & SVX_PAGE_LEFT )
return SVX_RESSTR(RID_SVXITEMS_PAGE_USAGE_LEFT);
if ( eU & SVX_PAGE_RIGHT )
return SVX_RESSTR(RID_SVXITEMS_PAGE_USAGE_RIGHT);
if ( eU & SVX_PAGE_ALL )
return SVX_RESSTR(RID_SVXITEMS_PAGE_USAGE_ALL);
if ( eU & SVX_PAGE_MIRROR )
return SVX_RESSTR(RID_SVXITEMS_PAGE_USAGE_MIRROR);
return String();
}
//------------------------------------------------------------------------
SfxItemPresentation SvxPageItem::GetPresentation
(
SfxItemPresentation ePres,
SfxMapUnit eCoreUnit,
SfxMapUnit ePresUnit,
XubString& rText, const IntlWrapper *
) const
{
rText.Erase();
switch ( ePres )
{
case SFX_ITEM_PRESENTATION_NONE:
return SFX_ITEM_PRESENTATION_NONE;
case SFX_ITEM_PRESENTATION_NAMELESS:
{
if ( aDescName.Len() )
{
rText = aDescName;
rText += cpDelim;
}
DBG_ASSERT( eNumType <= SVX_NUMBER_NONE, "enum overflow" );
rText += SVX_RESSTR(RID_SVXITEMS_PAGE_NUM_BEGIN + eNumType);
rText += cpDelim;
if ( bLandscape )
rText += SVX_RESSTR(RID_SVXITEMS_PAGE_LAND_TRUE);
else
rText += SVX_RESSTR(RID_SVXITEMS_PAGE_LAND_FALSE);
rText += GetUsageText( eUse );
return SFX_ITEM_PRESENTATION_NAMELESS;
}
case SFX_ITEM_PRESENTATION_COMPLETE:
{
rText += SVX_RESSTR(RID_SVXITEMS_PAGE_COMPLETE);
if ( aDescName.Len() )
{
rText += aDescName;
rText += cpDelim;
}
DBG_ASSERT( eNumType <= SVX_NUMBER_NONE, "enum overflow" );
rText += SVX_RESSTR(RID_SVXITEMS_PAGE_NUM_BEGIN + eNumType);
rText += cpDelim;
if ( bLandscape )
rText += SVX_RESSTR(RID_SVXITEMS_PAGE_LAND_TRUE);
else
rText += SVX_RESSTR(RID_SVXITEMS_PAGE_LAND_FALSE);
rText += GetUsageText( eUse );
return SFX_ITEM_PRESENTATION_COMPLETE;
}
}
return SFX_ITEM_PRESENTATION_NONE;
}
//------------------------------------------------------------------------
sal_Bool SvxPageItem::QueryValue( uno::Any& rVal, BYTE nMemberId ) const
{
sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
nMemberId &= ~CONVERT_TWIPS;
switch( nMemberId )
{
case MID_PAGE_NUMTYPE:
{
//! die Konstanten sind nicht mehr in den IDLs ?!?
rVal <<= (sal_Int16)( eNumType );
}
break;
case MID_PAGE_ORIENTATION:
//Landscape= sal_True
rVal = Bool2Any(bLandscape);
break;
case MID_PAGE_LAYOUT :
{
style::PageStyleLayout eRet;
switch(eUse & 0x0f)
{
case SVX_PAGE_LEFT : eRet = style::PageStyleLayout_LEFT; break;
case SVX_PAGE_RIGHT : eRet = style::PageStyleLayout_RIGHT; break;
case SVX_PAGE_ALL : eRet = style::PageStyleLayout_ALL; break;
case SVX_PAGE_MIRROR: eRet = style::PageStyleLayout_MIRRORED; break;
default:
DBG_ERROR("was fuer ein Layout ist das?");
return sal_False;
}
rVal <<= eRet;
}
break;
}
return sal_True;
}
//------------------------------------------------------------------------
sal_Bool SvxPageItem::PutValue( const uno::Any& rVal, BYTE nMemberId )
{
switch( nMemberId )
{
case MID_PAGE_NUMTYPE:
{
sal_Int32 nValue;
if(!(rVal >>= nValue))
return sal_False;
eNumType = (SvxNumType)nValue;
}
break;
case MID_PAGE_ORIENTATION:
bLandscape = Any2Bool(rVal);
break;
case MID_PAGE_LAYOUT :
{
style::PageStyleLayout eLayout;
if(!(rVal >>= eLayout))
{
sal_Int32 nValue;
if(!(rVal >>= nValue))
return sal_False;
eLayout = (style::PageStyleLayout)nValue;
}
eUse &= 0xfff0;
switch( eLayout )
{
case style::PageStyleLayout_LEFT : eUse |= SVX_PAGE_LEFT ; break;
case style::PageStyleLayout_RIGHT : eUse |= SVX_PAGE_RIGHT; break;
case style::PageStyleLayout_ALL : eUse |= SVX_PAGE_ALL ; break;
case style::PageStyleLayout_MIRRORED: eUse |= SVX_PAGE_MIRROR;break;
}
}
break;
}
return sal_True;
}
//------------------------------------------------------------------------
SfxPoolItem* SvxPageItem::Create( SvStream& rStream, USHORT ) const
{
XubString sStr;
BYTE eType;
sal_Bool bLand;
USHORT nUse;
// UNICODE: rStream >> sStr;
rStream.ReadByteString( sStr );
rStream >> eType;
rStream >> bLand;
rStream >> nUse;
SvxPageItem* pPage = new SvxPageItem( Which() );
pPage->SetDescName( sStr );
pPage->SetNumType( (SvxNumType)eType );
pPage->SetLandscape( bLand );
pPage->SetPageUsage( nUse );
return pPage;
}
//------------------------------------------------------------------------
SvStream& SvxPageItem::Store( SvStream &rStrm, USHORT nItemVersion ) const
{
// UNICODE: rStrm << aDescName;
rStrm.WriteByteString(aDescName);
rStrm << (BYTE)eNumType << bLandscape << eUse;
return rStrm;
}
/*--------------------------------------------------------------------
Beschreibung: HeaderFooterSet
--------------------------------------------------------------------*/
SvxSetItem::SvxSetItem( const USHORT nId, const SfxItemSet& rSet ) :
SfxSetItem( nId, rSet )
{
}
SvxSetItem::SvxSetItem( const SvxSetItem& rItem ) :
SfxSetItem( rItem )
{
}
SvxSetItem::SvxSetItem( const USHORT nId, SfxItemSet* pSet ) :
SfxSetItem( nId, pSet )
{
}
SfxPoolItem* SvxSetItem::Clone( SfxItemPool *pPool ) const
{
return new SvxSetItem(*this);
}
//------------------------------------------------------------------------
SfxItemPresentation SvxSetItem::GetPresentation
(
SfxItemPresentation ePres,
SfxMapUnit eCoreUnit,
SfxMapUnit ePresUnit,
XubString& rText, const IntlWrapper *
) const
{
rText.Erase();
return SFX_ITEM_PRESENTATION_NONE;
}
SfxPoolItem* SvxSetItem::Create(SvStream &rStrm, USHORT nVersion) const
{
SfxItemSet* pSet = new SfxItemSet( *GetItemSet().GetPool(),
GetItemSet().GetRanges() );
pSet->Load( rStrm );
return new SvxSetItem( Which(), *pSet );
}
SvStream& SvxSetItem::Store(SvStream &rStrm, USHORT nItemVersion) const
{
GetItemSet().Store( rStrm, nItemVersion );
return rStrm;
}