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 <tools/stream.hxx>
21 :
22 :
23 : #include <svx/pageitem.hxx>
24 : #include <editeng/itemtype.hxx>
25 : #include <svx/unomid.hxx>
26 : #include <com/sun/star/style/PageStyleLayout.hpp>
27 : #include <com/sun/star/style/BreakType.hpp>
28 : #include <svl/itemset.hxx>
29 : #include <svx/svxitems.hrc>
30 : #include <svx/dialmgr.hxx>
31 :
32 : using namespace ::com::sun::star;
33 :
34 34013 : TYPEINIT1_FACTORY( SvxPageItem, SfxPoolItem , new SvxPageItem(0));
35 :
36 : // Konstruktor
37 32160 : SvxPageItem::SvxPageItem( const sal_uInt16 nId ) : SfxPoolItem( nId ),
38 :
39 : eNumType ( SVX_ARABIC ),
40 : bLandscape ( false ),
41 32160 : eUse ( SVX_PAGE_ALL )
42 : {
43 32160 : }
44 :
45 : // Copy-Konstruktor
46 80981 : SvxPageItem::SvxPageItem( const SvxPageItem& rItem )
47 80981 : : SfxPoolItem( rItem )
48 : {
49 80981 : eNumType = rItem.eNumType;
50 80981 : bLandscape = rItem.bLandscape;
51 80981 : eUse = rItem.eUse;
52 80981 : }
53 :
54 : // Clonen
55 80811 : SfxPoolItem* SvxPageItem::Clone( SfxItemPool * ) const
56 : {
57 80811 : return new SvxPageItem( *this );
58 : }
59 :
60 : // Abfrage auf Gleichheit
61 11506 : bool SvxPageItem::operator==( const SfxPoolItem& rAttr ) const
62 : {
63 : DBG_ASSERT( SfxPoolItem::operator==(rAttr), "unequal types" );
64 11506 : const SvxPageItem& rItem = static_cast<const SvxPageItem&>(rAttr);
65 23012 : return ( eNumType == rItem.eNumType &&
66 22870 : bLandscape == rItem.bLandscape &&
67 22870 : eUse == rItem.eUse );
68 : }
69 :
70 0 : inline OUString GetUsageText( const sal_uInt16 eU )
71 : {
72 0 : switch( eU & 0x000f )
73 : {
74 0 : case SVX_PAGE_LEFT : return SVX_RESSTR(RID_SVXITEMS_PAGE_USAGE_LEFT);
75 0 : case SVX_PAGE_RIGHT : return SVX_RESSTR(RID_SVXITEMS_PAGE_USAGE_RIGHT);
76 0 : case SVX_PAGE_ALL : return SVX_RESSTR(RID_SVXITEMS_PAGE_USAGE_ALL);
77 0 : case SVX_PAGE_MIRROR: return SVX_RESSTR(RID_SVXITEMS_PAGE_USAGE_MIRROR);
78 0 : default: return OUString();
79 : }
80 : }
81 :
82 :
83 :
84 0 : bool SvxPageItem::GetPresentation
85 : (
86 : SfxItemPresentation ePres,
87 : SfxMapUnit /*eCoreUnit*/,
88 : SfxMapUnit /*ePresUnit*/,
89 : OUString& rText, const IntlWrapper *
90 : ) const
91 : {
92 0 : rText = OUString();
93 0 : OUString cpDelimTmp = OUString(cpDelim);
94 :
95 0 : switch ( ePres )
96 : {
97 : case SFX_ITEM_PRESENTATION_NAMELESS:
98 : {
99 0 : if ( !aDescName.isEmpty() )
100 : {
101 0 : rText = aDescName + cpDelimTmp;
102 : }
103 : DBG_ASSERT( eNumType <= SVX_NUMBER_NONE, "enum overflow" );
104 0 : rText += SVX_RESSTR(RID_SVXITEMS_PAGE_NUM_BEGIN + eNumType) + cpDelimTmp;
105 0 : if ( bLandscape )
106 0 : rText += SVX_RESSTR(RID_SVXITEMS_PAGE_LAND_TRUE);
107 : else
108 0 : rText += SVX_RESSTR(RID_SVXITEMS_PAGE_LAND_FALSE);
109 0 : OUString aUsageText = GetUsageText( eUse );
110 0 : if (!aUsageText.isEmpty())
111 : {
112 0 : rText += cpDelimTmp + aUsageText;
113 : }
114 0 : return true;
115 : }
116 : case SFX_ITEM_PRESENTATION_COMPLETE:
117 : {
118 0 : rText += SVX_RESSTR(RID_SVXITEMS_PAGE_COMPLETE);
119 0 : if ( !aDescName.isEmpty() )
120 : {
121 0 : rText += aDescName + cpDelimTmp;
122 : }
123 : DBG_ASSERT( eNumType <= SVX_NUMBER_NONE, "enum overflow" );
124 0 : rText += SVX_RESSTR(RID_SVXITEMS_PAGE_NUM_BEGIN + eNumType) + cpDelimTmp;
125 0 : if ( bLandscape )
126 0 : rText += SVX_RESSTR(RID_SVXITEMS_PAGE_LAND_TRUE);
127 : else
128 0 : rText += SVX_RESSTR(RID_SVXITEMS_PAGE_LAND_FALSE);
129 0 : OUString aUsageText = GetUsageText( eUse );
130 0 : if (!aUsageText.isEmpty())
131 : {
132 0 : rText += cpDelimTmp + aUsageText;
133 : }
134 0 : return true;
135 : }
136 : default: ;//prevent warning
137 : }
138 0 : return false;
139 : }
140 :
141 :
142 386 : bool SvxPageItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
143 : {
144 : // sal_Bool bConvert = 0!=(nMemberId&CONVERT_TWIPS);
145 386 : nMemberId &= ~CONVERT_TWIPS;
146 386 : switch( nMemberId )
147 : {
148 : case MID_PAGE_NUMTYPE:
149 : {
150 : //! die Konstanten sind nicht mehr in den IDLs ?!?
151 84 : rVal <<= (sal_Int16)( eNumType );
152 : }
153 84 : break;
154 : case MID_PAGE_ORIENTATION:
155 : //Landscape= sal_True
156 206 : rVal = Bool2Any(bLandscape);
157 206 : break;
158 : case MID_PAGE_LAYOUT :
159 : {
160 : style::PageStyleLayout eRet;
161 96 : switch(eUse & 0x0f)
162 : {
163 0 : case SVX_PAGE_LEFT : eRet = style::PageStyleLayout_LEFT; break;
164 4 : case SVX_PAGE_RIGHT : eRet = style::PageStyleLayout_RIGHT; break;
165 84 : case SVX_PAGE_ALL : eRet = style::PageStyleLayout_ALL; break;
166 8 : case SVX_PAGE_MIRROR: eRet = style::PageStyleLayout_MIRRORED; break;
167 : default:
168 : OSL_FAIL("was fuer ein Layout ist das?");
169 0 : return false;
170 : }
171 96 : rVal <<= eRet;
172 : }
173 96 : break;
174 : }
175 :
176 386 : return true;
177 : }
178 :
179 9330 : bool SvxPageItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
180 : {
181 9330 : switch( nMemberId )
182 : {
183 : case MID_PAGE_NUMTYPE:
184 : {
185 494 : sal_Int32 nValue = 0;
186 494 : if(!(rVal >>= nValue))
187 0 : return false;
188 :
189 494 : eNumType = (SvxNumType)nValue;
190 : }
191 494 : break;
192 : case MID_PAGE_ORIENTATION:
193 4608 : bLandscape = Any2Bool(rVal);
194 4608 : break;
195 : case MID_PAGE_LAYOUT :
196 : {
197 : style::PageStyleLayout eLayout;
198 4228 : if(!(rVal >>= eLayout))
199 : {
200 0 : sal_Int32 nValue = 0;
201 0 : if(!(rVal >>= nValue))
202 0 : return false;
203 0 : eLayout = (style::PageStyleLayout)nValue;
204 : }
205 4228 : eUse &= 0xfff0;
206 4228 : switch( eLayout )
207 : {
208 8 : case style::PageStyleLayout_LEFT : eUse |= SVX_PAGE_LEFT ; break;
209 14 : case style::PageStyleLayout_RIGHT : eUse |= SVX_PAGE_RIGHT; break;
210 4132 : case style::PageStyleLayout_ALL : eUse |= SVX_PAGE_ALL ; break;
211 74 : case style::PageStyleLayout_MIRRORED: eUse |= SVX_PAGE_MIRROR;break;
212 : default: ;//prevent warning
213 : }
214 : }
215 4228 : break;
216 : }
217 9330 : return true;
218 : }
219 :
220 :
221 :
222 0 : SfxPoolItem* SvxPageItem::Create( SvStream& rStream, sal_uInt16 ) const
223 : {
224 : sal_uInt8 eType;
225 : bool bLand;
226 : sal_uInt16 nUse;
227 :
228 : // UNICODE: rStream >> sStr;
229 0 : OUString sStr = rStream.ReadUniOrByteString( rStream.GetStreamCharSet() );
230 :
231 0 : rStream.ReadUChar( eType );
232 0 : rStream.ReadCharAsBool( bLand );
233 0 : rStream.ReadUInt16( nUse );
234 :
235 0 : SvxPageItem* pPage = new SvxPageItem( Which() );
236 0 : pPage->SetDescName( sStr );
237 0 : pPage->SetNumType( (SvxNumType)eType );
238 0 : pPage->SetLandscape( bLand );
239 0 : pPage->SetPageUsage( nUse );
240 0 : return pPage;
241 : }
242 :
243 :
244 :
245 0 : SvStream& SvxPageItem::Store( SvStream &rStrm, sal_uInt16 /*nItemVersion*/ ) const
246 : {
247 : // UNICODE: rStrm << aDescName;
248 0 : rStrm.WriteUniOrByteString(aDescName, rStrm.GetStreamCharSet());
249 :
250 0 : rStrm.WriteUChar( eNumType ).WriteUChar( bLandscape ).WriteUInt16( eUse );
251 0 : return rStrm;
252 : }
253 :
254 : // HeaderFooterSet
255 19238 : SvxSetItem::SvxSetItem( const sal_uInt16 nId, const SfxItemSet& rSet ) :
256 :
257 19238 : SfxSetItem( nId, rSet )
258 : {
259 19238 : }
260 :
261 86612 : SvxSetItem::SvxSetItem( const SvxSetItem& rItem ) :
262 :
263 86612 : SfxSetItem( rItem )
264 : {
265 86612 : }
266 :
267 16 : SvxSetItem::SvxSetItem( const sal_uInt16 nId, SfxItemSet* _pSet ) :
268 :
269 16 : SfxSetItem( nId, _pSet )
270 : {
271 16 : }
272 :
273 66184 : SfxPoolItem* SvxSetItem::Clone( SfxItemPool * ) const
274 : {
275 66184 : return new SvxSetItem(*this);
276 : }
277 :
278 :
279 :
280 0 : bool SvxSetItem::GetPresentation
281 : (
282 : SfxItemPresentation /*ePres*/,
283 : SfxMapUnit /*eCoreUnit*/,
284 : SfxMapUnit /*ePresUnit*/,
285 : OUString& rText, const IntlWrapper *
286 : ) const
287 : {
288 0 : rText = OUString();
289 0 : return false;
290 : }
291 :
292 0 : SfxPoolItem* SvxSetItem::Create(SvStream &rStrm, sal_uInt16 /*nVersion*/) const
293 : {
294 0 : SfxItemSet* _pSet = new SfxItemSet( *GetItemSet().GetPool(),
295 0 : GetItemSet().GetRanges() );
296 :
297 0 : _pSet->Load( rStrm );
298 :
299 0 : return new SvxSetItem( Which(), *_pSet );
300 : }
301 :
302 0 : SvStream& SvxSetItem::Store(SvStream &rStrm, sal_uInt16 nItemVersion) const
303 : {
304 0 : GetItemSet().Store( rStrm, nItemVersion );
305 :
306 0 : return rStrm;
307 : }
308 :
309 :
310 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|