1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_svx.hxx" 30*cdf0e10cSrcweir #include <tools/stream.hxx> 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir #include <svx/viewlayoutitem.hxx> 33*cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx> 34*cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp> 35*cdf0e10cSrcweir 36*cdf0e10cSrcweir // ----------------------------------------------------------------------- 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir TYPEINIT1_FACTORY(SvxViewLayoutItem,SfxUInt16Item, new SvxViewLayoutItem); 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir #define VIEWLAYOUT_PARAM_COLUMNS "Columns" 41*cdf0e10cSrcweir #define VIEWLAYOUT_PARAM_BOOKMODE "BookMode" 42*cdf0e10cSrcweir #define VIEWLAYOUT_PARAMS 2 43*cdf0e10cSrcweir 44*cdf0e10cSrcweir // ----------------------------------------------------------------------- 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir SvxViewLayoutItem::SvxViewLayoutItem 47*cdf0e10cSrcweir ( 48*cdf0e10cSrcweir sal_uInt16 nColumns, 49*cdf0e10cSrcweir bool bBookMode, 50*cdf0e10cSrcweir sal_uInt16 _nWhich 51*cdf0e10cSrcweir ) 52*cdf0e10cSrcweir : SfxUInt16Item( _nWhich, nColumns ), 53*cdf0e10cSrcweir mbBookMode( bBookMode ) 54*cdf0e10cSrcweir { 55*cdf0e10cSrcweir } 56*cdf0e10cSrcweir 57*cdf0e10cSrcweir // ----------------------------------------------------------------------- 58*cdf0e10cSrcweir 59*cdf0e10cSrcweir SvxViewLayoutItem::SvxViewLayoutItem( const SvxViewLayoutItem& rOrig ) 60*cdf0e10cSrcweir : SfxUInt16Item( rOrig.Which(), rOrig.GetValue() ), 61*cdf0e10cSrcweir mbBookMode( rOrig.IsBookMode() ) 62*cdf0e10cSrcweir { 63*cdf0e10cSrcweir } 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir // ----------------------------------------------------------------------- 66*cdf0e10cSrcweir 67*cdf0e10cSrcweir SvxViewLayoutItem::~SvxViewLayoutItem() 68*cdf0e10cSrcweir { 69*cdf0e10cSrcweir } 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir // ----------------------------------------------------------------------- 72*cdf0e10cSrcweir 73*cdf0e10cSrcweir SfxPoolItem* SvxViewLayoutItem::Clone( SfxItemPool * /*pPool*/ ) const 74*cdf0e10cSrcweir { 75*cdf0e10cSrcweir return new SvxViewLayoutItem( *this ); 76*cdf0e10cSrcweir } 77*cdf0e10cSrcweir 78*cdf0e10cSrcweir // ----------------------------------------------------------------------- 79*cdf0e10cSrcweir 80*cdf0e10cSrcweir SfxPoolItem* SvxViewLayoutItem::Create( SvStream& /*rStrm*/, sal_uInt16 /*nVersion*/ ) const 81*cdf0e10cSrcweir { 82*cdf0e10cSrcweir /* sal_uInt16 nValue; 83*cdf0e10cSrcweir sal_uInt16 nValSet; 84*cdf0e10cSrcweir sal_Int8 nType; 85*cdf0e10cSrcweir rStrm >> nValue >> nValSet >> nType; 86*cdf0e10cSrcweir SvxZoomItem* pNew = new SvxZoomItem( (SvxZoomType)nType, nValue, Which() ); 87*cdf0e10cSrcweir pNew->SetValueSet( nValSet ); 88*cdf0e10cSrcweir return pNew;*/ 89*cdf0e10cSrcweir return 0; 90*cdf0e10cSrcweir } 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir // ----------------------------------------------------------------------- 93*cdf0e10cSrcweir 94*cdf0e10cSrcweir SvStream& SvxViewLayoutItem::Store( SvStream& rStrm, sal_uInt16 /*nItemVersion*/ ) const 95*cdf0e10cSrcweir { 96*cdf0e10cSrcweir /* rStrm << (sal_uInt16)GetValue() 97*cdf0e10cSrcweir << nValueSet 98*cdf0e10cSrcweir << (sal_Int8)eType;*/ 99*cdf0e10cSrcweir return rStrm; 100*cdf0e10cSrcweir } 101*cdf0e10cSrcweir 102*cdf0e10cSrcweir // ----------------------------------------------------------------------- 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir int SvxViewLayoutItem::operator==( const SfxPoolItem& rAttr ) const 105*cdf0e10cSrcweir { 106*cdf0e10cSrcweir DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" ); 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir SvxViewLayoutItem& rItem = (SvxViewLayoutItem&)rAttr; 109*cdf0e10cSrcweir 110*cdf0e10cSrcweir return ( GetValue() == rItem.GetValue() && 111*cdf0e10cSrcweir mbBookMode == rItem.IsBookMode() ); 112*cdf0e10cSrcweir } 113*cdf0e10cSrcweir 114*cdf0e10cSrcweir sal_Bool SvxViewLayoutItem::QueryValue( com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) const 115*cdf0e10cSrcweir { 116*cdf0e10cSrcweir nMemberId &= ~CONVERT_TWIPS; 117*cdf0e10cSrcweir switch ( nMemberId ) 118*cdf0e10cSrcweir { 119*cdf0e10cSrcweir case 0 : 120*cdf0e10cSrcweir { 121*cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aSeq( VIEWLAYOUT_PARAMS ); 122*cdf0e10cSrcweir aSeq[0].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( VIEWLAYOUT_PARAM_COLUMNS )); 123*cdf0e10cSrcweir aSeq[0].Value <<= sal_Int32( GetValue() ); 124*cdf0e10cSrcweir aSeq[1].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( VIEWLAYOUT_PARAM_BOOKMODE )); 125*cdf0e10cSrcweir aSeq[1].Value <<= sal_Bool( mbBookMode ); 126*cdf0e10cSrcweir rVal <<= aSeq; 127*cdf0e10cSrcweir } 128*cdf0e10cSrcweir break; 129*cdf0e10cSrcweir 130*cdf0e10cSrcweir case MID_VIEWLAYOUT_COLUMNS : rVal <<= (sal_Int32) GetValue(); break; 131*cdf0e10cSrcweir case MID_VIEWLAYOUT_BOOKMODE: rVal <<= (sal_Bool) mbBookMode; break; 132*cdf0e10cSrcweir default: 133*cdf0e10cSrcweir DBG_ERROR("svx::SvxViewLayoutItem::QueryValue(), Wrong MemberId!"); 134*cdf0e10cSrcweir return sal_False; 135*cdf0e10cSrcweir } 136*cdf0e10cSrcweir 137*cdf0e10cSrcweir return sal_True; 138*cdf0e10cSrcweir } 139*cdf0e10cSrcweir 140*cdf0e10cSrcweir sal_Bool SvxViewLayoutItem::PutValue( const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId ) 141*cdf0e10cSrcweir { 142*cdf0e10cSrcweir // sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); 143*cdf0e10cSrcweir nMemberId &= ~CONVERT_TWIPS; 144*cdf0e10cSrcweir switch ( nMemberId ) 145*cdf0e10cSrcweir { 146*cdf0e10cSrcweir case 0 : 147*cdf0e10cSrcweir { 148*cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aSeq; 149*cdf0e10cSrcweir if (( rVal >>= aSeq ) && ( aSeq.getLength() == VIEWLAYOUT_PARAMS )) 150*cdf0e10cSrcweir { 151*cdf0e10cSrcweir sal_Int32 nColumns( 0 ); 152*cdf0e10cSrcweir sal_Bool bBookMode = sal_False; 153*cdf0e10cSrcweir sal_Bool bAllConverted( sal_True ); 154*cdf0e10cSrcweir sal_Int16 nConvertedCount( 0 ); 155*cdf0e10cSrcweir for ( sal_Int32 i = 0; i < aSeq.getLength(); i++ ) 156*cdf0e10cSrcweir { 157*cdf0e10cSrcweir if ( aSeq[i].Name.equalsAscii( VIEWLAYOUT_PARAM_COLUMNS )) 158*cdf0e10cSrcweir { 159*cdf0e10cSrcweir bAllConverted &= ( aSeq[i].Value >>= nColumns ); 160*cdf0e10cSrcweir ++nConvertedCount; 161*cdf0e10cSrcweir } 162*cdf0e10cSrcweir else if ( aSeq[i].Name.equalsAscii( VIEWLAYOUT_PARAM_BOOKMODE )) 163*cdf0e10cSrcweir { 164*cdf0e10cSrcweir bAllConverted &= ( aSeq[i].Value >>= bBookMode ); 165*cdf0e10cSrcweir ++nConvertedCount; 166*cdf0e10cSrcweir } 167*cdf0e10cSrcweir } 168*cdf0e10cSrcweir 169*cdf0e10cSrcweir if ( bAllConverted && nConvertedCount == VIEWLAYOUT_PARAMS ) 170*cdf0e10cSrcweir { 171*cdf0e10cSrcweir SetValue( (sal_uInt16)nColumns ); 172*cdf0e10cSrcweir mbBookMode = bBookMode; 173*cdf0e10cSrcweir return sal_True; 174*cdf0e10cSrcweir } 175*cdf0e10cSrcweir } 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir return sal_False; 178*cdf0e10cSrcweir } 179*cdf0e10cSrcweir 180*cdf0e10cSrcweir case MID_VIEWLAYOUT_COLUMNS: 181*cdf0e10cSrcweir { 182*cdf0e10cSrcweir sal_Int32 nVal = 0; 183*cdf0e10cSrcweir if ( rVal >>= nVal ) 184*cdf0e10cSrcweir { 185*cdf0e10cSrcweir SetValue( (sal_uInt16)nVal ); 186*cdf0e10cSrcweir return sal_True; 187*cdf0e10cSrcweir } 188*cdf0e10cSrcweir else 189*cdf0e10cSrcweir return sal_False; 190*cdf0e10cSrcweir } 191*cdf0e10cSrcweir 192*cdf0e10cSrcweir case MID_VIEWLAYOUT_BOOKMODE: 193*cdf0e10cSrcweir { 194*cdf0e10cSrcweir sal_Bool bBookMode = sal_False; 195*cdf0e10cSrcweir if ( rVal >>= bBookMode ) 196*cdf0e10cSrcweir { 197*cdf0e10cSrcweir mbBookMode = bBookMode; 198*cdf0e10cSrcweir return sal_True; 199*cdf0e10cSrcweir } 200*cdf0e10cSrcweir else 201*cdf0e10cSrcweir return sal_False; 202*cdf0e10cSrcweir } 203*cdf0e10cSrcweir 204*cdf0e10cSrcweir default: 205*cdf0e10cSrcweir DBG_ERROR("svx::SvxViewLayoutItem::PutValue(), Wrong MemberId!"); 206*cdf0e10cSrcweir return sal_False; 207*cdf0e10cSrcweir } 208*cdf0e10cSrcweir 209*cdf0e10cSrcweir return sal_True; 210*cdf0e10cSrcweir } 211*cdf0e10cSrcweir 212