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: */
|