/src/libreoffice/editeng/source/items/paraitem.cxx
Line | Count | Source (jump to first uncovered line) |
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/text/ParagraphHyphenationKeepType.hpp> |
24 | | #include <com/sun/star/uno/Sequence.hxx> |
25 | | #include <libxml/xmlwriter.h> |
26 | | #include <comphelper/extract.hxx> |
27 | | #include <osl/diagnose.h> |
28 | | #include <unotools/localedatawrapper.hxx> |
29 | | #include <unotools/syslocale.hxx> |
30 | | #include <tools/mapunit.hxx> |
31 | | #include <tools/UnitConversion.hxx> |
32 | | #include <svl/itempool.hxx> |
33 | | #include <svl/memberid.h> |
34 | | #include <editeng/editrids.hrc> |
35 | | #include <editeng/lspcitem.hxx> |
36 | | #include <editeng/adjustitem.hxx> |
37 | | #include <editeng/orphitem.hxx> |
38 | | #include <editeng/widwitem.hxx> |
39 | | #include <editeng/tstpitem.hxx> |
40 | | #include <editeng/pmdlitem.hxx> |
41 | | #include <editeng/spltitem.hxx> |
42 | | #include <editeng/hyphenzoneitem.hxx> |
43 | | #include <editeng/scriptspaceitem.hxx> |
44 | | #include <editeng/hngpnctitem.hxx> |
45 | | #include <editeng/forbiddenruleitem.hxx> |
46 | | #include <editeng/paravertalignitem.hxx> |
47 | | #include <editeng/pgrditem.hxx> |
48 | | #include <rtl/ustring.hxx> |
49 | | #include <sal/log.hxx> |
50 | | #include <editeng/memberids.h> |
51 | | #include <editeng/itemtype.hxx> |
52 | | #include <editeng/eerdll.hxx> |
53 | | #include <o3tl/hash_combine.hxx> |
54 | | |
55 | | using namespace ::com::sun::star; |
56 | | |
57 | | |
58 | 0 | SfxPoolItem* SvxLineSpacingItem::CreateDefault() { return new SvxLineSpacingItem(LINE_SPACE_DEFAULT_HEIGHT, 0);} |
59 | 0 | SfxPoolItem* SvxAdjustItem::CreateDefault() { return new SvxAdjustItem(SvxAdjust::Left, 0);} |
60 | 0 | SfxPoolItem* SvxWidowsItem::CreateDefault() { return new SvxWidowsItem(0, 0);} |
61 | 0 | SfxPoolItem* SvxOrphansItem::CreateDefault() { return new SvxOrphansItem(0, 0);} |
62 | 0 | SfxPoolItem* SvxHyphenZoneItem::CreateDefault() { return new SvxHyphenZoneItem(false, 0);} |
63 | 0 | SfxPoolItem* SvxTabStopItem::CreateDefault() { return new SvxTabStopItem(0);} |
64 | 0 | SfxPoolItem* SvxFormatSplitItem::CreateDefault() { return new SvxFormatSplitItem(false, 0);} |
65 | 0 | SfxPoolItem* SvxPageModelItem::CreateDefault() { return new SvxPageModelItem(TypedWhichId<SvxPageModelItem>(0));} |
66 | 0 | SfxPoolItem* SvxParaVertAlignItem::CreateDefault() { return new SvxParaVertAlignItem(Align::Automatic, TypedWhichId<SvxParaVertAlignItem>(0));} |
67 | | |
68 | | namespace { |
69 | | |
70 | | enum class SvxSpecialLineSpace |
71 | | { |
72 | | User, |
73 | | OneLine, |
74 | | OnePointFiveLines, |
75 | | TwoLines, |
76 | | End |
77 | | }; |
78 | | |
79 | | } |
80 | | |
81 | | SvxLineSpacingItem::SvxLineSpacingItem( sal_uInt16 nHeight, const sal_uInt16 nId ) |
82 | 344k | : SfxPoolItem(nId) |
83 | 344k | { |
84 | 344k | nPropLineSpace = 100; |
85 | 344k | nInterLineSpace = 0; |
86 | 344k | nLineHeight = nHeight; |
87 | 344k | eLineSpaceRule = SvxLineSpaceRule::Auto; |
88 | 344k | eInterLineSpaceRule = SvxInterLineSpaceRule::Off; |
89 | 344k | } |
90 | | |
91 | | |
92 | | bool SvxLineSpacingItem::operator==( const SfxPoolItem& rAttr ) const |
93 | 1.85M | { |
94 | 1.85M | assert(SfxPoolItem::operator==(rAttr)); |
95 | | |
96 | 1.85M | const SvxLineSpacingItem& rLineSpace = static_cast<const SvxLineSpacingItem&>(rAttr); |
97 | 1.85M | return |
98 | | // Same Linespacing Rule? |
99 | 1.85M | (eLineSpaceRule == rLineSpace.eLineSpaceRule) |
100 | | // For maximum and minimum Linespacing be the size must coincide. |
101 | 1.85M | && (eLineSpaceRule == SvxLineSpaceRule::Auto || |
102 | 1.84M | nLineHeight == rLineSpace.nLineHeight) |
103 | | // Same Linespacing Rule? |
104 | 1.85M | && ( eInterLineSpaceRule == rLineSpace.eInterLineSpaceRule ) |
105 | | // Either set proportional or additive. |
106 | 1.85M | && (( eInterLineSpaceRule == SvxInterLineSpaceRule::Off) |
107 | 1.59M | || (eInterLineSpaceRule == SvxInterLineSpaceRule::Prop |
108 | 324k | && nPropLineSpace == rLineSpace.nPropLineSpace) |
109 | 1.59M | || (eInterLineSpaceRule == SvxInterLineSpaceRule::Fix |
110 | 11.1k | && (nInterLineSpace == rLineSpace.nInterLineSpace))); |
111 | 1.85M | } |
112 | | |
113 | | size_t SvxLineSpacingItem::hashCode() const |
114 | 293k | { |
115 | 293k | std::size_t seed(0); |
116 | 293k | o3tl::hash_combine(seed, eLineSpaceRule); |
117 | 293k | o3tl::hash_combine(seed, nLineHeight); |
118 | 293k | o3tl::hash_combine(seed, eInterLineSpaceRule); |
119 | 293k | o3tl::hash_combine(seed, nPropLineSpace); |
120 | 293k | o3tl::hash_combine(seed, nInterLineSpace); |
121 | 293k | return seed; |
122 | 293k | } |
123 | | |
124 | | /* Who does still know why the LineSpacingItem is so complicated? |
125 | | We can not use it for UNO since there are only two values: |
126 | | - a sal_uInt16 for the mode |
127 | | - a sal_uInt32 for all values (distance, height, rel. detail) |
128 | | */ |
129 | | bool SvxLineSpacingItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const |
130 | 315k | { |
131 | 315k | bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); |
132 | 315k | nMemberId &= ~CONVERT_TWIPS; |
133 | | |
134 | 315k | style::LineSpacing aLSp; |
135 | 315k | switch( eLineSpaceRule ) |
136 | 315k | { |
137 | 314k | case SvxLineSpaceRule::Auto: |
138 | 314k | if(eInterLineSpaceRule == SvxInterLineSpaceRule::Fix) |
139 | 0 | { |
140 | 0 | aLSp.Mode = style::LineSpacingMode::LEADING; |
141 | 0 | aLSp.Height = ( bConvert ? static_cast<short>(convertTwipToMm100(nInterLineSpace)) : nInterLineSpace); |
142 | 0 | } |
143 | 314k | else if(eInterLineSpaceRule == SvxInterLineSpaceRule::Off) |
144 | 277k | { |
145 | 277k | aLSp.Mode = style::LineSpacingMode::PROP; |
146 | 277k | aLSp.Height = 100; |
147 | 277k | } |
148 | 37.3k | else |
149 | 37.3k | { |
150 | 37.3k | aLSp.Mode = style::LineSpacingMode::PROP; |
151 | 37.3k | aLSp.Height = nPropLineSpace; |
152 | 37.3k | } |
153 | 314k | break; |
154 | 1.10k | case SvxLineSpaceRule::Fix : |
155 | 1.43k | case SvxLineSpaceRule::Min : |
156 | 1.43k | aLSp.Mode = eLineSpaceRule == SvxLineSpaceRule::Fix ? style::LineSpacingMode::FIX : style::LineSpacingMode::MINIMUM; |
157 | 1.43k | aLSp.Height = ( bConvert ? static_cast<short>(convertTwipToMm100(nLineHeight)) : nLineHeight ); |
158 | 1.43k | break; |
159 | 0 | default: |
160 | 0 | ;//prevent warning about SvxLineSpaceRule::End |
161 | 315k | } |
162 | | |
163 | 315k | switch ( nMemberId ) |
164 | 315k | { |
165 | 315k | case 0 : rVal <<= aLSp; break; |
166 | 0 | case MID_LINESPACE : rVal <<= aLSp.Mode; break; |
167 | 0 | case MID_HEIGHT : rVal <<= aLSp.Height; break; |
168 | 0 | default: OSL_FAIL("Wrong MemberId!"); break; |
169 | 315k | } |
170 | | |
171 | 315k | return true; |
172 | 315k | } |
173 | | |
174 | | bool SvxLineSpacingItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) |
175 | 315k | { |
176 | 315k | ASSERT_CHANGE_REFCOUNTED_ITEM; |
177 | 315k | bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); |
178 | 315k | nMemberId &= ~CONVERT_TWIPS; |
179 | | |
180 | | // fill with current data |
181 | 315k | style::LineSpacing aLSp; |
182 | 315k | uno::Any aAny; |
183 | 315k | bool bRet = QueryValue( aAny, bConvert ? CONVERT_TWIPS : 0 ) && ( aAny >>= aLSp ); |
184 | | |
185 | | // get new data |
186 | 315k | switch ( nMemberId ) |
187 | 315k | { |
188 | 315k | case 0 : bRet = (rVal >>= aLSp); break; |
189 | 0 | case MID_LINESPACE : bRet = (rVal >>= aLSp.Mode); break; |
190 | 0 | case MID_HEIGHT : bRet = (rVal >>= aLSp.Height); break; |
191 | 0 | default: OSL_FAIL("Wrong MemberId!"); break; |
192 | 315k | } |
193 | | |
194 | 315k | if( bRet ) |
195 | 315k | { |
196 | 315k | nLineHeight = aLSp.Height; |
197 | 315k | switch( aLSp.Mode ) |
198 | 315k | { |
199 | 0 | case style::LineSpacingMode::LEADING: |
200 | 0 | { |
201 | 0 | eInterLineSpaceRule = SvxInterLineSpaceRule::Fix; |
202 | 0 | eLineSpaceRule = SvxLineSpaceRule::Auto; |
203 | 0 | nInterLineSpace = aLSp.Height; |
204 | 0 | if(bConvert) |
205 | 0 | nInterLineSpace = o3tl::toTwips(nInterLineSpace, o3tl::Length::mm100); |
206 | |
|
207 | 0 | } |
208 | 0 | break; |
209 | 306k | case style::LineSpacingMode::PROP: |
210 | 306k | { |
211 | 306k | eLineSpaceRule = SvxLineSpaceRule::Auto; |
212 | 306k | nPropLineSpace = aLSp.Height; |
213 | 306k | if(100 == aLSp.Height) |
214 | 256k | eInterLineSpaceRule = SvxInterLineSpaceRule::Off; |
215 | 49.9k | else |
216 | 49.9k | eInterLineSpaceRule = SvxInterLineSpaceRule::Prop; |
217 | 306k | } |
218 | 306k | break; |
219 | 5.85k | case style::LineSpacingMode::FIX: |
220 | 9.10k | case style::LineSpacingMode::MINIMUM: |
221 | 9.10k | { |
222 | 9.10k | eInterLineSpaceRule = SvxInterLineSpaceRule::Off; |
223 | 9.10k | eLineSpaceRule = aLSp.Mode == style::LineSpacingMode::FIX ? SvxLineSpaceRule::Fix : SvxLineSpaceRule::Min; |
224 | 9.10k | nLineHeight = aLSp.Height; |
225 | 9.10k | if(bConvert) |
226 | 9.09k | nLineHeight = o3tl::toTwips(nLineHeight, o3tl::Length::mm100); |
227 | 9.10k | } |
228 | 9.10k | break; |
229 | 315k | } |
230 | 315k | } |
231 | | |
232 | 315k | return bRet; |
233 | 315k | } |
234 | | |
235 | | SvxLineSpacingItem* SvxLineSpacingItem::Clone( SfxItemPool * ) const |
236 | 638k | { |
237 | 638k | return new SvxLineSpacingItem( *this ); |
238 | 638k | } |
239 | | |
240 | | bool SvxLineSpacingItem::GetPresentation |
241 | | ( |
242 | | SfxItemPresentation ePres, |
243 | | MapUnit eCoreUnit, |
244 | | MapUnit ePresUnit, |
245 | | OUString& rText, const IntlWrapper& rIntl |
246 | | ) const |
247 | 0 | { |
248 | 0 | switch ( ePres ) |
249 | 0 | { |
250 | 0 | case SfxItemPresentation::Nameless: |
251 | 0 | case SfxItemPresentation::Complete: |
252 | 0 | { |
253 | 0 | switch( GetLineSpaceRule() ) |
254 | 0 | { |
255 | 0 | case SvxLineSpaceRule::Auto: |
256 | 0 | { |
257 | 0 | SvxInterLineSpaceRule eInter = GetInterLineSpaceRule(); |
258 | |
|
259 | 0 | switch( eInter ) |
260 | 0 | { |
261 | | // Default single line spacing |
262 | 0 | case SvxInterLineSpaceRule::Off: |
263 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_SINGLE); |
264 | 0 | break; |
265 | | |
266 | | // Default single line spacing |
267 | 0 | case SvxInterLineSpaceRule::Prop: |
268 | 0 | if ( 100 == GetPropLineSpace() ) |
269 | 0 | { |
270 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_SINGLE); |
271 | 0 | break; |
272 | 0 | } |
273 | | // 1.15 line spacing |
274 | 0 | if ( 115 == GetPropLineSpace() ) |
275 | 0 | { |
276 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_115); |
277 | 0 | break; |
278 | 0 | } |
279 | | // 1.5 line spacing |
280 | 0 | if ( 150 == GetPropLineSpace() ) |
281 | 0 | { |
282 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_15); |
283 | 0 | break; |
284 | 0 | } |
285 | | // double line spacing |
286 | 0 | if ( 200 == GetPropLineSpace() ) |
287 | 0 | { |
288 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_DOUBLE); |
289 | 0 | break; |
290 | 0 | } |
291 | | // the set per cent value |
292 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_PROPORTIONAL) + " " + OUString::number(GetPropLineSpace()) + "%"; |
293 | 0 | break; |
294 | | |
295 | 0 | case SvxInterLineSpaceRule::Fix: |
296 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_LEADING) + |
297 | 0 | " " + GetMetricText(GetInterLineSpace(), eCoreUnit, ePresUnit, &rIntl) + |
298 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
299 | 0 | break; |
300 | 0 | default: ;//prevent warning |
301 | 0 | } |
302 | 0 | } |
303 | 0 | break; |
304 | 0 | case SvxLineSpaceRule::Fix: |
305 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_FIXED) + |
306 | 0 | " " + GetMetricText(GetLineHeight(), eCoreUnit, ePresUnit, &rIntl) + |
307 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
308 | 0 | break; |
309 | | |
310 | 0 | case SvxLineSpaceRule::Min: |
311 | 0 | rText = EditResId(RID_SVXITEMS_LINESPACING_MIN) + |
312 | 0 | " " + GetMetricText(GetLineHeight(), eCoreUnit, ePresUnit, &rIntl) + |
313 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
314 | 0 | break; |
315 | 0 | default: ;//prevent warning |
316 | 0 | } |
317 | 0 | } |
318 | 0 | } |
319 | 0 | return true; |
320 | 0 | } |
321 | | |
322 | | // class SvxAdjustItem --------------------------------------------------- |
323 | | |
324 | | ItemInstanceManager* SvxAdjustItem::getItemInstanceManager() const |
325 | 1.49M | { |
326 | 1.49M | static DefaultItemInstanceManager aInstanceManager(ItemType()); |
327 | 1.49M | return &aInstanceManager; |
328 | 1.49M | } |
329 | | |
330 | | SvxAdjustItem::SvxAdjustItem(const SvxAdjust eAdjst, const sal_uInt16 nId ) |
331 | 1.27M | : SfxPoolItem( nId ), |
332 | 1.27M | bOneBlock( false ), bLastCenter( false ), bLastBlock( false ), |
333 | 1.27M | nPropWordSpacing(100), |
334 | 1.27M | nPropWordSpacingMinimum(100), |
335 | 1.27M | nPropWordSpacingMaximum(100) |
336 | 1.27M | { |
337 | 1.27M | SetAdjust( eAdjst ); |
338 | 1.27M | } |
339 | | |
340 | | bool SvxAdjustItem::operator==( const SfxPoolItem& rAttr ) const |
341 | 4.49M | { |
342 | 4.49M | assert(SfxPoolItem::operator==(rAttr)); |
343 | | |
344 | 4.49M | const SvxAdjustItem& rItem = static_cast<const SvxAdjustItem&>(rAttr); |
345 | 4.49M | return GetAdjust() == rItem.GetAdjust() && |
346 | 4.49M | bOneBlock == rItem.bOneBlock && |
347 | 4.49M | bLastCenter == rItem.bLastCenter && |
348 | 4.49M | bLastBlock == rItem.bLastBlock && |
349 | 4.49M | nPropWordSpacingMinimum == rItem.nPropWordSpacingMinimum && |
350 | 4.49M | nPropWordSpacingMaximum == rItem.nPropWordSpacingMaximum && |
351 | 4.49M | nPropWordSpacing == rItem.nPropWordSpacing; |
352 | 4.49M | } |
353 | | |
354 | | size_t SvxAdjustItem::hashCode() const |
355 | 0 | { |
356 | 0 | std::size_t seed(0); |
357 | 0 | o3tl::hash_combine(seed, GetAdjust()); |
358 | 0 | o3tl::hash_combine(seed, bOneBlock); |
359 | 0 | o3tl::hash_combine(seed, bLastCenter); |
360 | 0 | o3tl::hash_combine(seed, bLastBlock); |
361 | 0 | o3tl::hash_combine(seed, nPropWordSpacing); |
362 | 0 | o3tl::hash_combine(seed, nPropWordSpacingMinimum); |
363 | 0 | o3tl::hash_combine(seed, nPropWordSpacingMaximum); |
364 | 0 | return seed; |
365 | 0 | } |
366 | | |
367 | | bool SvxAdjustItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const |
368 | 90.4k | { |
369 | 90.4k | nMemberId &= ~CONVERT_TWIPS; |
370 | 90.4k | switch( nMemberId ) |
371 | 90.4k | { |
372 | 24.3k | case MID_PARA_ADJUST : rVal <<= static_cast<sal_Int16>(GetAdjust()); break; |
373 | 13.2k | case MID_LAST_LINE_ADJUST : rVal <<= static_cast<sal_Int16>(GetLastBlock()); break; |
374 | 13.2k | case MID_WORD_SPACING : rVal <<= static_cast<sal_Int16>(GetPropWordSpacing()); break; |
375 | 13.2k | case MID_WORD_SPACING_MIN : rVal <<= static_cast<sal_Int16>(GetPropWordSpacingMinimum()); break; |
376 | 13.2k | case MID_WORD_SPACING_MAX : rVal <<= static_cast<sal_Int16>(GetPropWordSpacingMaximum()); break; |
377 | 13.2k | case MID_EXPAND_SINGLE : |
378 | 13.2k | { |
379 | 13.2k | rVal <<= bOneBlock; |
380 | 13.2k | break; |
381 | 0 | } |
382 | 0 | default: ;//prevent warning |
383 | 90.4k | } |
384 | 90.4k | return true; |
385 | 90.4k | } |
386 | | |
387 | | bool SvxAdjustItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) |
388 | 555k | { |
389 | 555k | ASSERT_CHANGE_REFCOUNTED_ITEM; |
390 | 555k | nMemberId &= ~CONVERT_TWIPS; |
391 | 555k | switch( nMemberId ) |
392 | 555k | { |
393 | 430k | case MID_PARA_ADJUST : |
394 | 487k | case MID_LAST_LINE_ADJUST : |
395 | 487k | { |
396 | 487k | sal_Int32 eVal = - 1; |
397 | 487k | ::cppu::enum2int(eVal,rVal); |
398 | 487k | if(eVal >= 0 && eVal <= 4) |
399 | 487k | { |
400 | 487k | SvxAdjust eAdjust = static_cast<SvxAdjust>(eVal); |
401 | 487k | if(MID_LAST_LINE_ADJUST == nMemberId && |
402 | 487k | eAdjust != SvxAdjust::Left && |
403 | 487k | eAdjust != SvxAdjust::Block && |
404 | 487k | eAdjust != SvxAdjust::Center) |
405 | 0 | return false; |
406 | 487k | nMemberId == MID_PARA_ADJUST ? SetAdjust(eAdjust) : SetLastBlock(eAdjust); |
407 | 487k | } |
408 | 487k | } |
409 | 487k | break; |
410 | 487k | case MID_WORD_SPACING : |
411 | 13.2k | { |
412 | 13.2k | sal_Int16 nVal = -1; |
413 | 13.2k | rVal >>= nVal; |
414 | 13.2k | SetPropWordSpacing(nVal); |
415 | 13.2k | } |
416 | 13.2k | break; |
417 | 13.2k | case MID_WORD_SPACING_MIN : |
418 | 13.2k | { |
419 | 13.2k | sal_Int16 nVal = -1; |
420 | 13.2k | rVal >>= nVal; |
421 | 13.2k | SetPropWordSpacingMinimum(nVal); |
422 | 13.2k | } |
423 | 13.2k | break; |
424 | 13.2k | case MID_WORD_SPACING_MAX : |
425 | 13.2k | { |
426 | 13.2k | sal_Int16 nVal = -1; |
427 | 13.2k | rVal >>= nVal; |
428 | 13.2k | SetPropWordSpacingMaximum(nVal); |
429 | 13.2k | } |
430 | 13.2k | break; |
431 | 28.1k | case MID_EXPAND_SINGLE : |
432 | 28.1k | ASSERT_CHANGE_REFCOUNTED_ITEM; |
433 | 28.1k | bOneBlock = Any2Bool(rVal); |
434 | 28.1k | break; |
435 | 555k | } |
436 | 555k | return true; |
437 | 555k | } |
438 | | |
439 | | SvxAdjustItem* SvxAdjustItem::Clone( SfxItemPool * ) const |
440 | 1.50M | { |
441 | 1.50M | return new SvxAdjustItem( *this ); |
442 | 1.50M | } |
443 | | |
444 | | bool SvxAdjustItem::GetPresentation |
445 | | ( |
446 | | SfxItemPresentation ePres, |
447 | | MapUnit /*eCoreUnit*/, |
448 | | MapUnit /*ePresUnit*/, |
449 | | OUString& rText, const IntlWrapper& |
450 | | ) const |
451 | 0 | { |
452 | 0 | switch ( ePres ) |
453 | 0 | { |
454 | 0 | case SfxItemPresentation::Nameless: |
455 | 0 | case SfxItemPresentation::Complete: |
456 | | // TODO Word spacing |
457 | 0 | rText = GetValueTextByPos( static_cast<sal_uInt16>(GetAdjust()) ); |
458 | 0 | return true; |
459 | 0 | default: ;//prevent warning |
460 | 0 | } |
461 | 0 | return false; |
462 | 0 | } |
463 | | |
464 | | |
465 | | OUString SvxAdjustItem::GetValueTextByPos( sal_uInt16 nPos ) |
466 | 0 | { |
467 | 0 | static TranslateId RID_SVXITEMS_ADJUST[] = |
468 | 0 | { |
469 | 0 | RID_SVXITEMS_ADJUST_LEFT, |
470 | 0 | RID_SVXITEMS_ADJUST_RIGHT, |
471 | 0 | RID_SVXITEMS_ADJUST_BLOCK, |
472 | 0 | RID_SVXITEMS_ADJUST_CENTER, |
473 | 0 | RID_SVXITEMS_ADJUST_BLOCKLINE |
474 | 0 | }; |
475 | 0 | static_assert(std::size(RID_SVXITEMS_ADJUST) - 1 == static_cast<size_t>(SvxAdjust::BlockLine), "unexpected size"); |
476 | 0 | assert(nPos <= sal_uInt16(SvxAdjust::BlockLine) && "enum overflow!"); |
477 | 0 | return EditResId(RID_SVXITEMS_ADJUST[nPos]); |
478 | 0 | } |
479 | | |
480 | | |
481 | | // class SvxWidowsItem --------------------------------------------------- |
482 | | |
483 | | SvxWidowsItem::SvxWidowsItem(const sal_uInt8 nL, const sal_uInt16 nId ) : |
484 | 38.0k | SfxByteItem( nId, nL ) |
485 | 38.0k | { |
486 | 38.0k | } |
487 | | |
488 | | SvxWidowsItem* SvxWidowsItem::Clone( SfxItemPool * ) const |
489 | 76.5k | { |
490 | 76.5k | return new SvxWidowsItem( *this ); |
491 | 76.5k | } |
492 | | |
493 | | bool SvxWidowsItem::GetPresentation |
494 | | ( |
495 | | SfxItemPresentation ePres, |
496 | | MapUnit /*eCoreUnit*/, |
497 | | MapUnit /*ePresUnit*/, |
498 | | OUString& rText, const IntlWrapper& |
499 | | ) const |
500 | 0 | { |
501 | 0 | switch ( ePres ) |
502 | 0 | { |
503 | 0 | case SfxItemPresentation::Nameless: |
504 | 0 | { |
505 | 0 | rText = EditResId(RID_SVXITEMS_LINES); |
506 | 0 | break; |
507 | 0 | } |
508 | | |
509 | 0 | case SfxItemPresentation::Complete: |
510 | 0 | { |
511 | 0 | rText = EditResId(RID_SVXITEMS_WIDOWS_COMPLETE) + " " + EditResId(RID_SVXITEMS_LINES); |
512 | 0 | break; |
513 | 0 | } |
514 | | |
515 | 0 | default: |
516 | 0 | { |
517 | 0 | SAL_WARN( "editeng.items", "SvxWidowsItem::GetPresentation(): unknown SfxItemPresentation" ); |
518 | 0 | } |
519 | 0 | } |
520 | | |
521 | 0 | rText = rText.replaceFirst( "%1", OUString::number( GetValue() ) ); |
522 | 0 | return true; |
523 | 0 | } |
524 | | |
525 | | // class SvxOrphansItem -------------------------------------------------- |
526 | | |
527 | | SvxOrphansItem::SvxOrphansItem(const sal_uInt8 nL, const sal_uInt16 nId ) : |
528 | 38.4k | SfxByteItem( nId, nL ) |
529 | 38.4k | { |
530 | 38.4k | } |
531 | | |
532 | | SvxOrphansItem* SvxOrphansItem::Clone( SfxItemPool * ) const |
533 | 80.6k | { |
534 | 80.6k | return new SvxOrphansItem( *this ); |
535 | 80.6k | } |
536 | | |
537 | | bool SvxOrphansItem::GetPresentation |
538 | | ( |
539 | | SfxItemPresentation ePres, |
540 | | MapUnit /*eCoreUnit*/, |
541 | | MapUnit /*ePresUnit*/, |
542 | | OUString& rText, const IntlWrapper& |
543 | | ) const |
544 | 0 | { |
545 | 0 | switch ( ePres ) |
546 | 0 | { |
547 | 0 | case SfxItemPresentation::Nameless: |
548 | 0 | { |
549 | 0 | rText = EditResId(RID_SVXITEMS_LINES); |
550 | 0 | break; |
551 | 0 | } |
552 | | |
553 | 0 | case SfxItemPresentation::Complete: |
554 | 0 | { |
555 | 0 | rText = EditResId(RID_SVXITEMS_ORPHANS_COMPLETE) + " " + EditResId(RID_SVXITEMS_LINES); |
556 | 0 | break; |
557 | 0 | } |
558 | | |
559 | 0 | default: |
560 | 0 | { |
561 | 0 | SAL_WARN( "editeng.items", "SvxOrphansItem::GetPresentation(): unknown SfxItemPresentation" ); |
562 | 0 | } |
563 | 0 | } |
564 | | |
565 | 0 | rText = rText.replaceFirst( "%1", OUString::number( GetValue() ) ); |
566 | 0 | return true; |
567 | 0 | } |
568 | | |
569 | | // class SvxHyphenZoneItem ----------------------------------------------- |
570 | | |
571 | | SvxHyphenZoneItem::SvxHyphenZoneItem( const bool bHyph, const sal_uInt16 nId ) : |
572 | 1.73k | SfxPoolItem( nId ), |
573 | 1.73k | bHyphen(bHyph), |
574 | 1.73k | bKeep(false), |
575 | 1.73k | bNoCapsHyphenation(false), |
576 | 1.73k | bNoLastWordHyphenation(false), |
577 | 1.73k | nMinLead(0), |
578 | 1.73k | nMinTrail(0), |
579 | 1.73k | nMaxHyphens(255), |
580 | 1.73k | nMinWordLength(0), |
581 | 1.73k | nTextHyphenZone(0), |
582 | 1.73k | nTextHyphenZoneAlways(0), |
583 | 1.73k | nTextHyphenZoneColumn(0), |
584 | 1.73k | nTextHyphenZonePage(0), |
585 | 1.73k | nTextHyphenZoneSpread(0), |
586 | 1.73k | nKeepType(css::text::ParagraphHyphenationKeepType::COLUMN), |
587 | 1.73k | bKeepLine(false), |
588 | 1.73k | nCompoundMinLead(0) |
589 | 1.73k | { |
590 | 1.73k | } |
591 | | |
592 | | |
593 | | bool SvxHyphenZoneItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const |
594 | 0 | { |
595 | 0 | nMemberId &= ~CONVERT_TWIPS; |
596 | 0 | switch(nMemberId) |
597 | 0 | { |
598 | 0 | case MID_IS_HYPHEN: |
599 | 0 | rVal <<= bHyphen; |
600 | 0 | break; |
601 | 0 | case MID_HYPHEN_KEEP: |
602 | 0 | rVal <<= bKeep; |
603 | 0 | break; |
604 | 0 | case MID_HYPHEN_MIN_LEAD: |
605 | 0 | rVal <<= static_cast<sal_Int16>(nMinLead); |
606 | 0 | break; |
607 | 0 | case MID_HYPHEN_MIN_TRAIL: |
608 | 0 | rVal <<= static_cast<sal_Int16>(nMinTrail); |
609 | 0 | break; |
610 | 0 | case MID_HYPHEN_MAX_HYPHENS: |
611 | 0 | rVal <<= static_cast<sal_Int16>(nMaxHyphens); |
612 | 0 | break; |
613 | 0 | case MID_HYPHEN_NO_CAPS: |
614 | 0 | rVal <<= bNoCapsHyphenation; |
615 | 0 | break; |
616 | 0 | case MID_HYPHEN_NO_LAST_WORD: |
617 | 0 | rVal <<= bNoLastWordHyphenation; |
618 | 0 | break; |
619 | 0 | case MID_HYPHEN_MIN_WORD_LENGTH: |
620 | 0 | rVal <<= static_cast<sal_Int16>(nMinWordLength); |
621 | 0 | break; |
622 | 0 | case MID_HYPHEN_ZONE: |
623 | 0 | rVal <<= static_cast<sal_Int16>(nTextHyphenZone); |
624 | 0 | break; |
625 | 0 | case MID_HYPHEN_ZONE_ALWAYS: |
626 | 0 | rVal <<= static_cast<sal_Int16>(nTextHyphenZoneAlways); |
627 | 0 | break; |
628 | 0 | case MID_HYPHEN_ZONE_COLUMN: |
629 | 0 | rVal <<= static_cast<sal_Int16>(nTextHyphenZoneColumn); |
630 | 0 | break; |
631 | 0 | case MID_HYPHEN_ZONE_PAGE: |
632 | 0 | rVal <<= static_cast<sal_Int16>(nTextHyphenZonePage); |
633 | 0 | break; |
634 | 0 | case MID_HYPHEN_ZONE_SPREAD: |
635 | 0 | rVal <<= static_cast<sal_Int16>(nTextHyphenZoneSpread); |
636 | 0 | break; |
637 | 0 | case MID_HYPHEN_KEEP_TYPE: |
638 | 0 | rVal <<= static_cast<sal_Int16>(nKeepType); |
639 | 0 | break; |
640 | 0 | case MID_HYPHEN_KEEP_LINE: |
641 | 0 | rVal <<= bKeepLine; |
642 | 0 | break; |
643 | 0 | case MID_HYPHEN_COMPOUND_MIN_LEAD: |
644 | 0 | rVal <<= static_cast<sal_Int16>(nCompoundMinLead); |
645 | 0 | break; |
646 | 0 | } |
647 | 0 | return true; |
648 | 0 | } |
649 | | |
650 | | bool SvxHyphenZoneItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) |
651 | 8.55k | { |
652 | 8.55k | nMemberId &= ~CONVERT_TWIPS; |
653 | 8.55k | sal_Int32 nNewVal = 0; // sal_Int32 needs for MID_HYPHEN_KEEP_TYPE |
654 | | |
655 | 8.55k | if( nMemberId != MID_IS_HYPHEN && nMemberId != MID_HYPHEN_NO_CAPS && |
656 | 8.55k | nMemberId != MID_HYPHEN_NO_LAST_WORD && nMemberId != MID_HYPHEN_KEEP && |
657 | 8.55k | nMemberId != MID_HYPHEN_KEEP_LINE ) |
658 | 4.56k | { |
659 | 4.56k | if(!(rVal >>= nNewVal)) |
660 | 0 | return false; |
661 | 4.56k | } |
662 | | |
663 | 8.55k | switch(nMemberId) |
664 | 8.55k | { |
665 | 3.59k | case MID_IS_HYPHEN: |
666 | 3.59k | bHyphen = Any2Bool(rVal); |
667 | 3.59k | break; |
668 | 190 | case MID_HYPHEN_KEEP: |
669 | 190 | bKeep = Any2Bool(rVal); |
670 | 190 | break; |
671 | 1.44k | case MID_HYPHEN_MIN_LEAD: |
672 | 1.44k | nMinLead = static_cast<sal_uInt8>(nNewVal); |
673 | 1.44k | break; |
674 | 1.23k | case MID_HYPHEN_MIN_TRAIL: |
675 | 1.23k | nMinTrail = static_cast<sal_uInt8>(nNewVal); |
676 | 1.23k | break; |
677 | 1.56k | case MID_HYPHEN_MAX_HYPHENS: |
678 | 1.56k | nMaxHyphens = static_cast<sal_uInt8>(nNewVal); |
679 | 1.56k | break; |
680 | 54 | case MID_HYPHEN_NO_CAPS: |
681 | 54 | bNoCapsHyphenation = Any2Bool(rVal); |
682 | 54 | break; |
683 | 0 | case MID_HYPHEN_NO_LAST_WORD: |
684 | 0 | bNoLastWordHyphenation = Any2Bool(rVal); |
685 | 0 | break; |
686 | 0 | case MID_HYPHEN_MIN_WORD_LENGTH: |
687 | 0 | nMinWordLength = static_cast<sal_uInt8>(nNewVal); |
688 | 0 | break; |
689 | 142 | case MID_HYPHEN_ZONE: |
690 | 142 | nTextHyphenZone = nNewVal; |
691 | 142 | break; |
692 | 0 | case MID_HYPHEN_ZONE_ALWAYS: |
693 | 0 | nTextHyphenZoneAlways = nNewVal; |
694 | 0 | break; |
695 | 0 | case MID_HYPHEN_ZONE_COLUMN: |
696 | 0 | nTextHyphenZoneColumn = nNewVal; |
697 | 0 | break; |
698 | 0 | case MID_HYPHEN_ZONE_PAGE: |
699 | 0 | nTextHyphenZonePage = nNewVal; |
700 | 0 | break; |
701 | 0 | case MID_HYPHEN_ZONE_SPREAD: |
702 | 0 | nTextHyphenZoneSpread = nNewVal; |
703 | 0 | break; |
704 | 190 | case MID_HYPHEN_KEEP_TYPE: |
705 | 190 | nKeepType = static_cast<sal_uInt8>(nNewVal); |
706 | 190 | break; |
707 | 142 | case MID_HYPHEN_KEEP_LINE: |
708 | 142 | bKeepLine = Any2Bool(rVal); |
709 | 142 | break; |
710 | 0 | case MID_HYPHEN_COMPOUND_MIN_LEAD: |
711 | 0 | nCompoundMinLead = static_cast<sal_uInt8>(nNewVal); |
712 | 0 | break; |
713 | 8.55k | } |
714 | 8.55k | return true; |
715 | 8.55k | } |
716 | | |
717 | | |
718 | | bool SvxHyphenZoneItem::operator==( const SfxPoolItem& rAttr ) const |
719 | 152k | { |
720 | 152k | assert(SfxPoolItem::operator==(rAttr)); |
721 | | |
722 | 152k | const SvxHyphenZoneItem& rItem = static_cast<const SvxHyphenZoneItem&>(rAttr); |
723 | 152k | return ( rItem.bHyphen == bHyphen |
724 | 152k | && rItem.bNoCapsHyphenation == bNoCapsHyphenation |
725 | 152k | && rItem.bNoLastWordHyphenation == bNoLastWordHyphenation |
726 | 152k | && rItem.bKeep == bKeep |
727 | 152k | && rItem.nMinLead == nMinLead |
728 | 152k | && rItem.nMinTrail == nMinTrail |
729 | 152k | && rItem.nCompoundMinLead == nCompoundMinLead |
730 | 152k | && rItem.nMaxHyphens == nMaxHyphens |
731 | 152k | && rItem.nMinWordLength == nMinWordLength |
732 | 152k | && rItem.nTextHyphenZone == nTextHyphenZone |
733 | 152k | && rItem.nTextHyphenZoneAlways == nTextHyphenZoneAlways |
734 | 152k | && rItem.nTextHyphenZoneColumn == nTextHyphenZoneColumn |
735 | 152k | && rItem.nTextHyphenZonePage == nTextHyphenZonePage |
736 | 152k | && rItem.nTextHyphenZoneSpread == nTextHyphenZoneSpread |
737 | 152k | && rItem.bKeepLine == bKeepLine |
738 | 152k | && rItem.nKeepType == nKeepType ); |
739 | 152k | } |
740 | | |
741 | | SvxHyphenZoneItem* SvxHyphenZoneItem::Clone( SfxItemPool * ) const |
742 | 136k | { |
743 | 136k | return new SvxHyphenZoneItem( *this ); |
744 | 136k | } |
745 | | |
746 | | bool SvxHyphenZoneItem::GetPresentation |
747 | | ( |
748 | | SfxItemPresentation ePres, |
749 | | MapUnit eCoreUnit, |
750 | | MapUnit ePresUnit, |
751 | | OUString& rText, const IntlWrapper& rIntl |
752 | | ) const |
753 | 0 | { |
754 | 0 | OUString cpDelimTmp(cpDelim); |
755 | 0 | switch ( ePres ) |
756 | 0 | { |
757 | 0 | case SfxItemPresentation::Nameless: |
758 | 0 | { |
759 | 0 | TranslateId pId = RID_SVXITEMS_HYPHEN_FALSE; |
760 | 0 | if ( bHyphen ) |
761 | 0 | pId = RID_SVXITEMS_HYPHEN_TRUE; |
762 | 0 | rText += EditResId(pId) + cpDelimTmp + |
763 | 0 | OUString::number( nMinLead ) + cpDelimTmp + |
764 | 0 | OUString::number( nMinTrail ) + cpDelimTmp + |
765 | 0 | OUString::number( nCompoundMinLead ) + cpDelimTmp + |
766 | 0 | OUString::number( nMaxHyphens ) + cpDelimTmp + |
767 | 0 | OUString::number( nMinWordLength ) + cpDelimTmp + |
768 | 0 | GetMetricText( nTextHyphenZone, eCoreUnit, ePresUnit, &rIntl ) + |
769 | 0 | " " + EditResId(GetMetricId(ePresUnit)) + |
770 | 0 | GetMetricText( nTextHyphenZoneAlways, eCoreUnit, ePresUnit, &rIntl ) + |
771 | 0 | " " + EditResId(GetMetricId(ePresUnit)) + |
772 | 0 | GetMetricText( nTextHyphenZoneColumn, eCoreUnit, ePresUnit, &rIntl ) + |
773 | 0 | " " + EditResId(GetMetricId(ePresUnit)) + |
774 | 0 | GetMetricText( nTextHyphenZonePage, eCoreUnit, ePresUnit, &rIntl ) + |
775 | 0 | " " + EditResId(GetMetricId(ePresUnit)) + |
776 | 0 | GetMetricText( nTextHyphenZoneSpread, eCoreUnit, ePresUnit, &rIntl ) + |
777 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
778 | |
|
779 | 0 | if ( bNoCapsHyphenation ) |
780 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_NO_CAPS_TRUE); |
781 | |
|
782 | 0 | if ( bNoLastWordHyphenation ) |
783 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_LAST_WORD_TRUE); |
784 | |
|
785 | 0 | if ( bKeep ) |
786 | 0 | { |
787 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_TRUE) + |
788 | 0 | cpDelimTmp + OUString::number( nKeepType ); |
789 | 0 | if ( bKeepLine ) |
790 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_LINE_TRUE); |
791 | 0 | else |
792 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_LINE_FALSE); |
793 | 0 | } |
794 | 0 | else |
795 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_FALSE); |
796 | | |
797 | |
|
798 | 0 | return true; |
799 | 0 | } |
800 | 0 | case SfxItemPresentation::Complete: |
801 | 0 | { |
802 | 0 | TranslateId pId = RID_SVXITEMS_HYPHEN_FALSE; |
803 | |
|
804 | 0 | if ( bHyphen ) |
805 | 0 | pId = RID_SVXITEMS_HYPHEN_TRUE; |
806 | 0 | rText += EditResId(pId) + |
807 | 0 | cpDelimTmp + |
808 | 0 | EditResId(RID_SVXITEMS_HYPHEN_MINLEAD).replaceAll("%1", OUString::number(nMinLead)) + |
809 | 0 | cpDelimTmp + |
810 | 0 | EditResId(RID_SVXITEMS_HYPHEN_MINTRAIL).replaceAll("%1", OUString::number(nMinTrail)) + |
811 | 0 | cpDelimTmp + |
812 | 0 | EditResId(RID_SVXITEMS_HYPHEN_COMPOUND_MINLEAD).replaceAll("%1", OUString::number(nCompoundMinLead)) + |
813 | 0 | cpDelimTmp + |
814 | 0 | EditResId(RID_SVXITEMS_HYPHEN_MAX).replaceAll("%1", OUString::number(nMaxHyphens)) + |
815 | 0 | cpDelimTmp + |
816 | 0 | EditResId(RID_SVXITEMS_HYPHEN_MINWORDLEN).replaceAll("%1", OUString::number(nMinWordLength)); |
817 | |
|
818 | 0 | if ( nTextHyphenZone > 0 || nTextHyphenZoneAlways > 0 || |
819 | 0 | nTextHyphenZoneColumn > 0 || nTextHyphenZonePage > 0 || |
820 | 0 | nTextHyphenZoneSpread > 0 ) |
821 | 0 | { |
822 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_ZONE) + |
823 | 0 | GetMetricText( nTextHyphenZone, eCoreUnit, ePresUnit, &rIntl ) + |
824 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
825 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_ZONE_ALWAYS) + |
826 | 0 | GetMetricText( nTextHyphenZoneAlways, eCoreUnit, ePresUnit, &rIntl ) + |
827 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
828 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_ZONE_COLUMN) + |
829 | 0 | GetMetricText( nTextHyphenZoneColumn, eCoreUnit, ePresUnit, &rIntl ) + |
830 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
831 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_ZONE_PAGE) + |
832 | 0 | GetMetricText( nTextHyphenZonePage, eCoreUnit, ePresUnit, &rIntl ) + |
833 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
834 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_ZONE_SPREAD) + |
835 | 0 | GetMetricText( nTextHyphenZoneSpread, eCoreUnit, ePresUnit, &rIntl ) + |
836 | 0 | " " + EditResId(GetMetricId(ePresUnit)); |
837 | 0 | } |
838 | |
|
839 | 0 | if ( bNoCapsHyphenation ) |
840 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_NO_CAPS_TRUE); |
841 | |
|
842 | 0 | if ( bNoLastWordHyphenation ) |
843 | 0 | rText += cpDelimTmp + EditResId(RID_SVXITEMS_HYPHEN_LAST_WORD_TRUE); |
844 | |
|
845 | 0 | if ( bKeep ) |
846 | 0 | { |
847 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_TRUE) + cpDelimTmp; |
848 | |
|
849 | 0 | switch ( nKeepType ) |
850 | 0 | { |
851 | 0 | case 0: |
852 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_AUTO); |
853 | 0 | break; |
854 | 0 | case 1: |
855 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_SPREAD); |
856 | 0 | break; |
857 | 0 | case 2: |
858 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_PAGE); |
859 | 0 | break; |
860 | 0 | case 3: |
861 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_COLUMN); |
862 | 0 | break; |
863 | 0 | case 4: |
864 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_ALWAYS); |
865 | 0 | break; |
866 | 0 | } |
867 | | |
868 | 0 | if ( bKeepLine ) |
869 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_LINE_TRUE); |
870 | 0 | else |
871 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_LINE_FALSE); |
872 | 0 | } |
873 | 0 | else |
874 | 0 | rText += EditResId(RID_SVXITEMS_HYPHEN_KEEP_FALSE); |
875 | | |
876 | 0 | return true; |
877 | 0 | } |
878 | 0 | default: ;//prevent warning |
879 | 0 | } |
880 | 0 | return false; |
881 | 0 | } |
882 | | |
883 | | |
884 | | // class SvxTabStop ------------------------------------------------------ |
885 | | |
886 | | SvxTabStop::SvxTabStop() |
887 | 759k | { |
888 | 759k | nTabPos = 0; |
889 | 759k | eAdjustment = SvxTabAdjust::Left; |
890 | 759k | m_cDecimal = cDfltDecimalChar; |
891 | 759k | cFill = cDfltFillChar; |
892 | 759k | fillDecimal(); |
893 | 759k | } |
894 | | |
895 | | |
896 | | SvxTabStop::SvxTabStop( const sal_Int32 nPos, const SvxTabAdjust eAdjst, |
897 | | const sal_Unicode cDec, const sal_Unicode cFil ) |
898 | 3.34M | { |
899 | 3.34M | nTabPos = nPos; |
900 | 3.34M | eAdjustment = eAdjst; |
901 | 3.34M | m_cDecimal = cDec; |
902 | 3.34M | cFill = cFil; |
903 | 3.34M | fillDecimal(); |
904 | 3.34M | } |
905 | | |
906 | | void SvxTabStop::fillDecimal() |
907 | 4.10M | { |
908 | 4.10M | if ( cDfltDecimalChar == m_cDecimal ) |
909 | 4.09M | m_cDecimal = SvtSysLocale().GetLocaleData().getNumDecimalSep()[0]; |
910 | 4.10M | } |
911 | | |
912 | | void SvxTabStop::dumpAsXml(xmlTextWriterPtr pWriter) const |
913 | 0 | { |
914 | 0 | (void)xmlTextWriterStartElement(pWriter, BAD_CAST("SvxTabStop")); |
915 | 0 | (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("nTabPos"), |
916 | 0 | BAD_CAST(OString::number(nTabPos).getStr())); |
917 | 0 | (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("eAdjustment"), |
918 | 0 | BAD_CAST(OString::number(static_cast<int>(eAdjustment)).getStr())); |
919 | 0 | (void)xmlTextWriterEndElement(pWriter); |
920 | 0 | } |
921 | | |
922 | | // class SvxTabStopItem -------------------------------------------------- |
923 | | |
924 | | SvxTabStopItem::SvxTabStopItem( sal_uInt16 _nWhich ) : |
925 | 6 | SfxPoolItem( _nWhich ) |
926 | 6 | { |
927 | 6 | const sal_uInt16 nTabs = SVX_TAB_DEFCOUNT, nDist = SVX_TAB_DEFDIST; |
928 | 6 | const SvxTabAdjust eAdjst= SvxTabAdjust::Default; |
929 | | |
930 | 66 | for (sal_uInt16 i = 0; i < nTabs; ++i) |
931 | 60 | { |
932 | 60 | SvxTabStop aTab( (i + 1) * nDist, eAdjst ); |
933 | 60 | maTabStops.insert( aTab ); |
934 | 60 | } |
935 | 6 | } |
936 | | |
937 | | |
938 | | SvxTabStopItem::SvxTabStopItem( const sal_uInt16 nTabs, |
939 | | const sal_uInt16 nDist, |
940 | | const SvxTabAdjust eAdjst, |
941 | | sal_uInt16 _nWhich ) : |
942 | 487k | SfxPoolItem( _nWhich ) |
943 | 487k | { |
944 | 611k | for ( sal_uInt16 i = 0; i < nTabs; ++i ) |
945 | 124k | { |
946 | 124k | SvxTabStop aTab( (i + 1) * nDist, eAdjst ); |
947 | 124k | maTabStops.insert( aTab ); |
948 | 124k | } |
949 | 487k | } |
950 | | |
951 | | |
952 | | sal_uInt16 SvxTabStopItem::GetPos( const SvxTabStop& rTab ) const |
953 | 3.21M | { |
954 | 3.21M | SvxTabStopArr::const_iterator it = maTabStops.find( rTab ); |
955 | 3.21M | return it != maTabStops.end() ? it - maTabStops.begin() : SVX_TAB_NOTFOUND; |
956 | 3.21M | } |
957 | | |
958 | | |
959 | | sal_uInt16 SvxTabStopItem::GetPos( const sal_Int32 nPos ) const |
960 | 185k | { |
961 | 185k | SvxTabStopArr::const_iterator it = maTabStops.find( SvxTabStop( nPos ) ); |
962 | 185k | return it != maTabStops.end() ? it - maTabStops.begin() : SVX_TAB_NOTFOUND; |
963 | 185k | } |
964 | | |
965 | | void SvxTabStopItem::SetDefaultDistance(sal_Int32 nDefaultDistance) |
966 | 0 | { |
967 | 0 | ASSERT_CHANGE_REFCOUNTED_ITEM; |
968 | 0 | mnDefaultDistance = nDefaultDistance; |
969 | 0 | } |
970 | | |
971 | | sal_Int32 SvxTabStopItem::GetDefaultDistance() const |
972 | 1.25M | { |
973 | 1.25M | return mnDefaultDistance; |
974 | 1.25M | } |
975 | | |
976 | | bool SvxTabStopItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const |
977 | 201 | { |
978 | 201 | bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); |
979 | 201 | nMemberId &= ~CONVERT_TWIPS; |
980 | 201 | switch ( nMemberId ) |
981 | 201 | { |
982 | 201 | case MID_TABSTOPS: |
983 | 201 | { |
984 | 201 | sal_uInt16 nCount = Count(); |
985 | 201 | uno::Sequence< style::TabStop> aSeq(nCount); |
986 | 201 | style::TabStop* pArr = aSeq.getArray(); |
987 | 2.44k | for(sal_uInt16 i = 0; i < nCount; i++) |
988 | 2.24k | { |
989 | 2.24k | const SvxTabStop& rTab = (*this)[i]; |
990 | 2.24k | pArr[i].Position = bConvert ? convertTwipToMm100(rTab.GetTabPos()) : rTab.GetTabPos(); |
991 | 2.24k | switch(rTab.GetAdjustment()) |
992 | 2.24k | { |
993 | 2.20k | case SvxTabAdjust::Left : pArr[i].Alignment = style::TabAlign_LEFT; break; |
994 | 0 | case SvxTabAdjust::Right : pArr[i].Alignment = style::TabAlign_RIGHT; break; |
995 | 0 | case SvxTabAdjust::Decimal: pArr[i].Alignment = style::TabAlign_DECIMAL; break; |
996 | 33 | case SvxTabAdjust::Center : pArr[i].Alignment = style::TabAlign_CENTER; break; |
997 | 0 | default: //SvxTabAdjust::Default |
998 | 0 | pArr[i].Alignment = style::TabAlign_DEFAULT; |
999 | | |
1000 | 2.24k | } |
1001 | 2.24k | pArr[i].DecimalChar = rTab.GetDecimal(); |
1002 | 2.24k | pArr[i].FillChar = rTab.GetFill(); |
1003 | 2.24k | } |
1004 | 201 | rVal <<= aSeq; |
1005 | 201 | break; |
1006 | 201 | } |
1007 | 0 | case MID_STD_TAB: |
1008 | 0 | { |
1009 | 0 | const SvxTabStop &rTab = maTabStops.front(); |
1010 | 0 | rVal <<= static_cast<sal_Int32>(bConvert ? convertTwipToMm100(rTab.GetTabPos()) : rTab.GetTabPos()); |
1011 | 0 | break; |
1012 | 201 | } |
1013 | 0 | case MID_TABSTOP_DEFAULT_DISTANCE: |
1014 | 0 | { |
1015 | 0 | rVal <<= static_cast<sal_Int32>(bConvert ? convertTwipToMm100(mnDefaultDistance) : mnDefaultDistance); |
1016 | 0 | break; |
1017 | 201 | } |
1018 | 201 | } |
1019 | 201 | return true; |
1020 | 201 | } |
1021 | | |
1022 | | bool SvxTabStopItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) |
1023 | 67.2k | { |
1024 | 67.2k | ASSERT_CHANGE_REFCOUNTED_ITEM; |
1025 | 67.2k | bool bConvert = 0!=(nMemberId&CONVERT_TWIPS); |
1026 | 67.2k | nMemberId &= ~CONVERT_TWIPS; |
1027 | 67.2k | switch ( nMemberId ) |
1028 | 67.2k | { |
1029 | 24.0k | case MID_TABSTOPS: |
1030 | 24.0k | { |
1031 | 24.0k | uno::Sequence< style::TabStop> aSeq; |
1032 | 24.0k | if(!(rVal >>= aSeq)) |
1033 | 0 | { |
1034 | 0 | uno::Sequence < uno::Sequence < uno::Any > > aAnySeq; |
1035 | 0 | if (!(rVal >>= aAnySeq)) |
1036 | 0 | return false; |
1037 | 0 | auto aAnySeqRange = asNonConstRange(aAnySeq); |
1038 | 0 | sal_Int32 nLength = aAnySeq.getLength(); |
1039 | 0 | aSeq.realloc( nLength ); |
1040 | 0 | auto pSeq = aSeq.getArray(); |
1041 | 0 | for ( sal_Int32 n=0; n<nLength; n++ ) |
1042 | 0 | { |
1043 | 0 | uno::Sequence < uno::Any >& rAnySeq = aAnySeqRange[n]; |
1044 | 0 | if ( rAnySeq.getLength() == 4 ) |
1045 | 0 | { |
1046 | 0 | if (!(rAnySeq[0] >>= pSeq[n].Position)) return false; |
1047 | 0 | if (!(rAnySeq[1] >>= pSeq[n].Alignment)) |
1048 | 0 | { |
1049 | 0 | sal_Int32 nVal = 0; |
1050 | 0 | if (rAnySeq[1] >>= nVal) |
1051 | 0 | pSeq[n].Alignment = static_cast<css::style::TabAlign>(nVal); |
1052 | 0 | else |
1053 | 0 | return false; |
1054 | 0 | } |
1055 | 0 | if (!(rAnySeq[2] >>= pSeq[n].DecimalChar)) |
1056 | 0 | { |
1057 | 0 | OUString aVal; |
1058 | 0 | if ( (rAnySeq[2] >>= aVal) && aVal.getLength() == 1 ) |
1059 | 0 | pSeq[n].DecimalChar = aVal.toChar(); |
1060 | 0 | else |
1061 | 0 | return false; |
1062 | 0 | } |
1063 | 0 | if (!(rAnySeq[3] >>= pSeq[n].FillChar)) |
1064 | 0 | { |
1065 | 0 | OUString aVal; |
1066 | 0 | if ( (rAnySeq[3] >>= aVal) && aVal.getLength() == 1 ) |
1067 | 0 | pSeq[n].FillChar = aVal.toChar(); |
1068 | 0 | else |
1069 | 0 | return false; |
1070 | 0 | } |
1071 | 0 | } |
1072 | 0 | else |
1073 | 0 | return false; |
1074 | 0 | } |
1075 | 0 | } |
1076 | | |
1077 | 24.0k | maTabStops.clear(); |
1078 | 24.0k | const style::TabStop* pArr = aSeq.getConstArray(); |
1079 | 24.0k | const sal_uInt16 nCount = static_cast<sal_uInt16>(aSeq.getLength()); |
1080 | 102k | for(sal_uInt16 i = 0; i < nCount ; i++) |
1081 | 78.4k | { |
1082 | 78.4k | SvxTabAdjust eAdjust = SvxTabAdjust::Default; |
1083 | 78.4k | switch(pArr[i].Alignment) |
1084 | 78.4k | { |
1085 | 70.2k | case style::TabAlign_LEFT : eAdjust = SvxTabAdjust::Left; break; |
1086 | 2.70k | case style::TabAlign_CENTER : eAdjust = SvxTabAdjust::Center; break; |
1087 | 5.18k | case style::TabAlign_RIGHT : eAdjust = SvxTabAdjust::Right; break; |
1088 | 339 | case style::TabAlign_DECIMAL: eAdjust = SvxTabAdjust::Decimal; break; |
1089 | 0 | default: ;//prevent warning |
1090 | 78.4k | } |
1091 | 78.4k | sal_Unicode cFill = pArr[i].FillChar; |
1092 | 78.4k | sal_Unicode cDecimal = pArr[i].DecimalChar; |
1093 | 78.4k | SvxTabStop aTab( bConvert ? o3tl::toTwips(pArr[i].Position, o3tl::Length::mm100) : pArr[i].Position, |
1094 | 78.4k | eAdjust, |
1095 | 78.4k | cDecimal, |
1096 | 78.4k | cFill ); |
1097 | 78.4k | Insert(aTab); |
1098 | 78.4k | } |
1099 | 24.0k | break; |
1100 | 24.0k | } |
1101 | 24.0k | case MID_STD_TAB: |
1102 | 7.36k | { |
1103 | 7.36k | sal_Int32 nNewPos = 0; |
1104 | 7.36k | if (!(rVal >>= nNewPos) ) |
1105 | 0 | return false; |
1106 | 7.36k | if (bConvert) |
1107 | 7.36k | nNewPos = o3tl::toTwips(nNewPos, o3tl::Length::mm100); |
1108 | 7.36k | if (nNewPos <= 0) |
1109 | 13 | return false; |
1110 | 7.35k | const SvxTabStop& rTab = maTabStops.front(); |
1111 | 7.35k | SvxTabStop aNewTab ( nNewPos, rTab.GetAdjustment(), rTab.GetDecimal(), rTab.GetFill() ); |
1112 | 7.35k | Remove( 0 ); |
1113 | 7.35k | Insert( aNewTab ); |
1114 | 7.35k | break; |
1115 | 7.36k | } |
1116 | 35.8k | case MID_TABSTOP_DEFAULT_DISTANCE: |
1117 | 35.8k | { |
1118 | 35.8k | sal_Int32 nNewDefaultDistance = 0; |
1119 | 35.8k | if (!(rVal >>= nNewDefaultDistance)) |
1120 | 0 | return false; |
1121 | 35.8k | if (bConvert) |
1122 | 0 | nNewDefaultDistance = o3tl::toTwips(nNewDefaultDistance, o3tl::Length::mm100); |
1123 | 35.8k | if (nNewDefaultDistance < 0) |
1124 | 0 | return false; |
1125 | 35.8k | mnDefaultDistance = nNewDefaultDistance; |
1126 | 35.8k | break; |
1127 | 35.8k | } |
1128 | 67.2k | } |
1129 | 67.2k | return true; |
1130 | 67.2k | } |
1131 | | |
1132 | | |
1133 | | bool SvxTabStopItem::operator==( const SfxPoolItem& rAttr ) const |
1134 | 1.25M | { |
1135 | 1.25M | assert(SfxPoolItem::operator==(rAttr)); |
1136 | | |
1137 | 1.25M | const SvxTabStopItem& rTSI = static_cast<const SvxTabStopItem&>(rAttr); |
1138 | | |
1139 | 1.25M | if ( mnDefaultDistance != rTSI.GetDefaultDistance() ) |
1140 | 28.6k | return false; |
1141 | | |
1142 | 1.22M | if ( Count() != rTSI.Count() ) |
1143 | 43.7k | return false; |
1144 | | |
1145 | 5.62M | for ( sal_uInt16 i = 0; i < Count(); ++i ) |
1146 | 4.48M | if( (*this)[i] != rTSI[i] ) |
1147 | 39.0k | return false; |
1148 | 1.14M | return true; |
1149 | 1.18M | } |
1150 | | |
1151 | | size_t SvxTabStopItem::hashCode() const |
1152 | 423k | { |
1153 | 423k | std::size_t seed(0); |
1154 | 423k | o3tl::hash_combine(seed, mnDefaultDistance); |
1155 | 423k | for (const SvxTabStop & rStop : maTabStops) |
1156 | 3.73M | { |
1157 | 3.73M | o3tl::hash_combine(seed, rStop.GetTabPos()); |
1158 | 3.73M | o3tl::hash_combine(seed, rStop. GetAdjustment()); |
1159 | 3.73M | } |
1160 | 423k | return seed; |
1161 | 423k | } |
1162 | | |
1163 | | SvxTabStopItem* SvxTabStopItem::Clone( SfxItemPool * ) const |
1164 | 604k | { |
1165 | 604k | return new SvxTabStopItem( *this ); |
1166 | 604k | } |
1167 | | |
1168 | | bool SvxTabStopItem::GetPresentation |
1169 | | ( |
1170 | | SfxItemPresentation ePres, |
1171 | | MapUnit eCoreUnit, |
1172 | | MapUnit ePresUnit, |
1173 | | OUString& rText, const IntlWrapper& rIntl |
1174 | | ) const |
1175 | 0 | { |
1176 | 0 | rText.clear(); |
1177 | | // TODO also consider mnDefaultTabDistance here |
1178 | |
|
1179 | 0 | bool bComma = false; |
1180 | |
|
1181 | 0 | for ( sal_uInt16 i = 0; i < Count(); ++i ) |
1182 | 0 | { |
1183 | 0 | if ( SvxTabAdjust::Default != ((*this)[i]).GetAdjustment() ) |
1184 | 0 | { |
1185 | 0 | if ( bComma ) |
1186 | 0 | rText += ","; |
1187 | 0 | rText += GetMetricText( |
1188 | 0 | ((*this)[i]).GetTabPos(), eCoreUnit, ePresUnit, &rIntl ); |
1189 | 0 | if ( SfxItemPresentation::Complete == ePres ) |
1190 | 0 | { |
1191 | 0 | rText += " " + EditResId(GetMetricId(ePresUnit)); |
1192 | 0 | } |
1193 | 0 | bComma = true; |
1194 | 0 | } |
1195 | 0 | } |
1196 | 0 | return true; |
1197 | 0 | } |
1198 | | |
1199 | | |
1200 | | bool SvxTabStopItem::Insert( const SvxTabStop& rTab ) |
1201 | 3.21M | { |
1202 | 3.21M | ASSERT_CHANGE_REFCOUNTED_ITEM; |
1203 | 3.21M | sal_uInt16 nTabPos = GetPos(rTab); |
1204 | 3.21M | if(SVX_TAB_NOTFOUND != nTabPos ) |
1205 | 25.6k | Remove(nTabPos); |
1206 | 3.21M | return maTabStops.insert( rTab ).second; |
1207 | 3.21M | } |
1208 | | |
1209 | | void SvxTabStopItem::Insert( const SvxTabStopItem* pTabs ) |
1210 | 0 | { |
1211 | 0 | ASSERT_CHANGE_REFCOUNTED_ITEM; |
1212 | 0 | for( sal_uInt16 i = 0; i < pTabs->Count(); i++ ) |
1213 | 0 | { |
1214 | 0 | const SvxTabStop& rTab = (*pTabs)[i]; |
1215 | 0 | sal_uInt16 nTabPos = GetPos(rTab); |
1216 | 0 | if(SVX_TAB_NOTFOUND != nTabPos) |
1217 | 0 | Remove(nTabPos); |
1218 | 0 | } |
1219 | 0 | for( sal_uInt16 i = 0; i < pTabs->Count(); i++ ) |
1220 | 0 | { |
1221 | 0 | maTabStops.insert( (*pTabs)[i] ); |
1222 | 0 | } |
1223 | 0 | } |
1224 | | |
1225 | | void SvxTabStopItem::dumpAsXml(xmlTextWriterPtr pWriter) const |
1226 | 0 | { |
1227 | 0 | (void)xmlTextWriterStartElement(pWriter, BAD_CAST("SvxTabStopItem")); |
1228 | 0 | (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("mnDefaultDistance"), |
1229 | 0 | BAD_CAST(OString::number(mnDefaultDistance).getStr())); |
1230 | 0 | for (const auto& rTabStop : maTabStops) |
1231 | 0 | rTabStop.dumpAsXml(pWriter); |
1232 | 0 | (void)xmlTextWriterEndElement(pWriter); |
1233 | 0 | } |
1234 | | |
1235 | | // class SvxFormatSplitItem ------------------------------------------------- |
1236 | | SvxFormatSplitItem::~SvxFormatSplitItem() |
1237 | 258k | { |
1238 | 258k | } |
1239 | | |
1240 | | SvxFormatSplitItem* SvxFormatSplitItem::Clone( SfxItemPool * ) const |
1241 | 193k | { |
1242 | 193k | return new SvxFormatSplitItem( *this ); |
1243 | 193k | } |
1244 | | |
1245 | | bool SvxFormatSplitItem::GetPresentation |
1246 | | ( |
1247 | | SfxItemPresentation /*ePres*/, |
1248 | | MapUnit /*eCoreUnit*/, |
1249 | | MapUnit /*ePresUnit*/, |
1250 | | OUString& rText, const IntlWrapper& |
1251 | | ) const |
1252 | 0 | { |
1253 | 0 | TranslateId pId = RID_SVXITEMS_FMTSPLIT_FALSE; |
1254 | |
|
1255 | 0 | if ( GetValue() ) |
1256 | 0 | pId = RID_SVXITEMS_FMTSPLIT_TRUE; |
1257 | 0 | rText = EditResId(pId); |
1258 | 0 | return true; |
1259 | 0 | } |
1260 | | |
1261 | | SvxPageModelItem* SvxPageModelItem::Clone( SfxItemPool* ) const |
1262 | 0 | { |
1263 | 0 | return new SvxPageModelItem( *this ); |
1264 | 0 | } |
1265 | | |
1266 | | bool SvxPageModelItem::QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId ) const |
1267 | 0 | { |
1268 | 0 | nMemberId &= ~CONVERT_TWIPS; |
1269 | |
|
1270 | 0 | switch ( nMemberId ) |
1271 | 0 | { |
1272 | 0 | case MID_AUTO: rVal <<= bAuto; break; |
1273 | 0 | case MID_NAME: rVal <<= GetValue(); break; |
1274 | 0 | default: OSL_FAIL("Wrong MemberId!"); return false; |
1275 | 0 | } |
1276 | | |
1277 | 0 | return true; |
1278 | 0 | } |
1279 | | |
1280 | | bool SvxPageModelItem::PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) |
1281 | 0 | { |
1282 | 0 | nMemberId &= ~CONVERT_TWIPS; |
1283 | 0 | bool bRet; |
1284 | 0 | OUString aStr; |
1285 | 0 | switch ( nMemberId ) |
1286 | 0 | { |
1287 | 0 | case MID_AUTO: bRet = ( rVal >>= bAuto ); break; |
1288 | 0 | case MID_NAME: bRet = ( rVal >>= aStr ); if ( bRet ) SetValue(aStr); break; |
1289 | 0 | default: OSL_FAIL("Wrong MemberId!"); return false; |
1290 | 0 | } |
1291 | | |
1292 | 0 | return bRet; |
1293 | 0 | } |
1294 | | |
1295 | | bool SvxPageModelItem::operator==( const SfxPoolItem& rAttr ) const |
1296 | 0 | { |
1297 | 0 | return SfxStringItem::operator==(rAttr) && |
1298 | 0 | bAuto == static_cast<const SvxPageModelItem&>( rAttr ).bAuto; |
1299 | 0 | } |
1300 | | |
1301 | | bool SvxPageModelItem::GetPresentation |
1302 | | ( |
1303 | | SfxItemPresentation ePres, |
1304 | | MapUnit /*eCoreUnit*/, |
1305 | | MapUnit /*ePresUnit*/, |
1306 | | OUString& rText, const IntlWrapper& |
1307 | | ) const |
1308 | 0 | { |
1309 | 0 | rText.clear(); |
1310 | 0 | bool bSet = !GetValue().isEmpty(); |
1311 | |
|
1312 | 0 | switch ( ePres ) |
1313 | 0 | { |
1314 | 0 | case SfxItemPresentation::Nameless: |
1315 | 0 | if ( bSet ) |
1316 | 0 | rText = GetValue(); |
1317 | 0 | return true; |
1318 | | |
1319 | 0 | case SfxItemPresentation::Complete: |
1320 | 0 | if ( bSet ) |
1321 | 0 | { |
1322 | 0 | rText = EditResId(RID_SVXITEMS_PAGEMODEL_COMPLETE) + GetValue(); |
1323 | 0 | } |
1324 | 0 | return true; |
1325 | 0 | default: ;//prevent warning |
1326 | 0 | } |
1327 | 0 | return false; |
1328 | 0 | } |
1329 | | |
1330 | | |
1331 | | SvxScriptSpaceItem::SvxScriptSpaceItem( bool bOn, const sal_uInt16 nId ) |
1332 | 157k | : SfxBoolItem( nId, bOn ) |
1333 | 157k | { |
1334 | 157k | } |
1335 | | |
1336 | | SvxScriptSpaceItem* SvxScriptSpaceItem::Clone( SfxItemPool * ) const |
1337 | 191k | { |
1338 | 191k | return new SvxScriptSpaceItem( *this ); |
1339 | 191k | } |
1340 | | |
1341 | | bool SvxScriptSpaceItem::GetPresentation( |
1342 | | SfxItemPresentation /*ePres*/, |
1343 | | MapUnit /*eCoreMetric*/, MapUnit /*ePresMetric*/, |
1344 | | OUString &rText, const IntlWrapper& /*rIntl*/ ) const |
1345 | 0 | { |
1346 | 0 | rText = EditResId( !GetValue() |
1347 | 0 | ? RID_SVXITEMS_SCRPTSPC_OFF |
1348 | 0 | : RID_SVXITEMS_SCRPTSPC_ON ); |
1349 | 0 | return true; |
1350 | 0 | } |
1351 | | |
1352 | | |
1353 | | SvxHangingPunctuationItem::SvxHangingPunctuationItem( |
1354 | | bool bOn, const sal_uInt16 nId ) |
1355 | 103k | : SfxBoolItem( nId, bOn ) |
1356 | 103k | { |
1357 | 103k | } |
1358 | | |
1359 | | SvxHangingPunctuationItem* SvxHangingPunctuationItem::Clone( SfxItemPool * ) const |
1360 | 170k | { |
1361 | 170k | return new SvxHangingPunctuationItem( *this ); |
1362 | 170k | } |
1363 | | |
1364 | | bool SvxHangingPunctuationItem::GetPresentation( |
1365 | | SfxItemPresentation /*ePres*/, |
1366 | | MapUnit /*eCoreMetric*/, MapUnit /*ePresMetric*/, |
1367 | | OUString &rText, const IntlWrapper& /*rIntl*/ ) const |
1368 | 0 | { |
1369 | 0 | rText = EditResId( !GetValue() |
1370 | 0 | ? RID_SVXITEMS_HNGPNCT_OFF |
1371 | 0 | : RID_SVXITEMS_HNGPNCT_ON ); |
1372 | 0 | return true; |
1373 | 0 | } |
1374 | | |
1375 | | |
1376 | | SvxForbiddenRuleItem::SvxForbiddenRuleItem( |
1377 | | bool bOn, const sal_uInt16 nId ) |
1378 | 264k | : SfxBoolItem( nId, bOn ) |
1379 | 264k | { |
1380 | 264k | } |
1381 | | |
1382 | | SvxForbiddenRuleItem* SvxForbiddenRuleItem::Clone( SfxItemPool * ) const |
1383 | 174k | { |
1384 | 174k | return new SvxForbiddenRuleItem( *this ); |
1385 | 174k | } |
1386 | | |
1387 | | bool SvxForbiddenRuleItem::GetPresentation( |
1388 | | SfxItemPresentation /*ePres*/, |
1389 | | MapUnit /*eCoreMetric*/, MapUnit /*ePresMetric*/, |
1390 | | OUString &rText, const IntlWrapper& /*rIntl*/ ) const |
1391 | 0 | { |
1392 | 0 | rText = EditResId( !GetValue() |
1393 | 0 | ? RID_SVXITEMS_FORBIDDEN_RULE_OFF |
1394 | 0 | : RID_SVXITEMS_FORBIDDEN_RULE_ON ); |
1395 | 0 | return true; |
1396 | 0 | } |
1397 | | |
1398 | | /************************************************************************* |
1399 | | |* class SvxParaVertAlignItem |
1400 | | *************************************************************************/ |
1401 | | |
1402 | | SvxParaVertAlignItem::SvxParaVertAlignItem( Align nValue, |
1403 | | TypedWhichId<SvxParaVertAlignItem> nW ) |
1404 | 10.6k | : SfxUInt16Item( nW, static_cast<sal_uInt16>(nValue) ) |
1405 | 10.6k | { |
1406 | 10.6k | } |
1407 | | |
1408 | | SvxParaVertAlignItem* SvxParaVertAlignItem::Clone( SfxItemPool* ) const |
1409 | 20.7k | { |
1410 | 20.7k | return new SvxParaVertAlignItem( *this ); |
1411 | 20.7k | } |
1412 | | |
1413 | | bool SvxParaVertAlignItem::GetPresentation( |
1414 | | SfxItemPresentation /*ePres*/, |
1415 | | MapUnit /*eCoreMetric*/, MapUnit /*ePresMetric*/, |
1416 | | OUString &rText, const IntlWrapper& ) const |
1417 | 0 | { |
1418 | 0 | TranslateId pTmp; |
1419 | 0 | switch( GetValue() ) |
1420 | 0 | { |
1421 | 0 | case Align::Automatic: pTmp = RID_SVXITEMS_PARAVERTALIGN_AUTO; break; |
1422 | 0 | case Align::Top: pTmp = RID_SVXITEMS_PARAVERTALIGN_TOP; break; |
1423 | 0 | case Align::Center: pTmp = RID_SVXITEMS_PARAVERTALIGN_CENTER; break; |
1424 | 0 | case Align::Bottom: pTmp = RID_SVXITEMS_PARAVERTALIGN_BOTTOM; break; |
1425 | 0 | default: pTmp = RID_SVXITEMS_PARAVERTALIGN_BASELINE; break; |
1426 | 0 | } |
1427 | 0 | rText = EditResId(pTmp); |
1428 | 0 | return true; |
1429 | 0 | } |
1430 | | |
1431 | | bool SvxParaVertAlignItem::QueryValue( css::uno::Any& rVal, |
1432 | | sal_uInt8 /*nMemberId*/ ) const |
1433 | 0 | { |
1434 | 0 | rVal <<= static_cast<sal_Int16>(GetValue()); |
1435 | 0 | return true; |
1436 | 0 | } |
1437 | | |
1438 | | bool SvxParaVertAlignItem::PutValue( const css::uno::Any& rVal, |
1439 | | sal_uInt8 /*nMemberId*/ ) |
1440 | 449 | { |
1441 | 449 | sal_Int16 nVal = sal_Int16(); |
1442 | 449 | if((rVal >>= nVal) && nVal >=0 && nVal <= sal_uInt16(Align::Bottom) ) |
1443 | 449 | { |
1444 | 449 | SetValue( static_cast<Align>(nVal) ); |
1445 | 449 | return true; |
1446 | 449 | } |
1447 | 0 | else |
1448 | 0 | return false; |
1449 | 449 | } |
1450 | | |
1451 | | SvxParaGridItem::SvxParaGridItem( bool bOn, const sal_uInt16 nId ) |
1452 | 27.8k | : SfxBoolItem( nId, bOn ) |
1453 | 27.8k | { |
1454 | 27.8k | } |
1455 | | |
1456 | | SvxParaGridItem* SvxParaGridItem::Clone( SfxItemPool * ) const |
1457 | 204k | { |
1458 | 204k | return new SvxParaGridItem( *this ); |
1459 | 204k | } |
1460 | | |
1461 | | bool SvxParaGridItem::GetPresentation( |
1462 | | SfxItemPresentation /*ePres*/, |
1463 | | MapUnit /*eCoreMetric*/, MapUnit /*ePresMetric*/, |
1464 | | OUString &rText, const IntlWrapper& /*rIntl*/ ) const |
1465 | 0 | { |
1466 | 0 | rText = GetValue() ? |
1467 | 0 | EditResId( RID_SVXITEMS_PARASNAPTOGRID_ON ) : |
1468 | 0 | EditResId( RID_SVXITEMS_PARASNAPTOGRID_OFF ); |
1469 | |
|
1470 | 0 | return true; |
1471 | 0 | } |
1472 | | |
1473 | | |
1474 | | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |