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