LibreOffice Module sw (master)  1
vbalisthelper.cxx
Go to the documentation of this file.
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 #include "vbalisthelper.hxx"
20 #include <vbahelper/vbahelper.hxx>
21 #include <sal/log.hxx>
22 #include <ooo/vba/word/WdListGalleryType.hpp>
23 #include <com/sun/star/beans/XPropertySet.hpp>
24 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
25 #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
26 #include <com/sun/star/style/NumberingType.hpp>
27 #include <com/sun/star/container/XIndexReplace.hpp>
28 
29 using namespace ::ooo::vba;
30 using namespace ::com::sun::star;
31 
32 const sal_Int32 LIST_LEVEL_COUNT = 9;
33 
34 const char UNO_NAME_PARENT_NUMBERING[] = "ParentNumbering";
35 const char UNO_NAME_PREFIX[] = "Prefix";
36 const char UNO_NAME_SUFFIX[] = "Suffix";
37 const char UNO_NAME_CHAR_STYLE_NAME[] = "CharStyleName";
38 const char UNO_NAME_NUMBERING_TYPE[] = "NumberingType";
39 const char UNO_NAME_BULLET_CHAR[] = "BulletChar";
40 
41 const sal_Unicode CHAR_CLOSED_DOT[] = u"\u2022";
42 const char CHAR_EMPTY_DOT[] = "o";
43 const sal_Unicode CHAR_SQUARE[] = u"\u2540";
44 const sal_Unicode CHAR_STAR_SYMBOL[] = u"\u272A";
45 const sal_Unicode CHAR_FOUR_DIAMONDS[] = u"\u2756";
46 const sal_Unicode CHAR_DIAMOND[] = u"\u2726";
47 const sal_Unicode CHAR_ARROW[] = u"\u27A2";
48 const sal_Unicode CHAR_CHECK_MARK[] = u"\u2713";
49 
50 SwVbaListHelper::SwVbaListHelper( const css::uno::Reference< css::text::XTextDocument >& xTextDoc, sal_Int32 nGalleryType, sal_Int32 nTemplateType ) : mxTextDocument( xTextDoc ), mnGalleryType( nGalleryType ), mnTemplateType( nTemplateType )
51 {
52  Init();
53 }
54 
56 {
57  // set the numbering style name
58  switch( mnGalleryType )
59  {
60  case word::WdListGalleryType::wdBulletGallery:
61  {
62  msStyleName = "WdBullet";
63  break;
64  }
65  case word::WdListGalleryType::wdNumberGallery:
66  {
67  msStyleName = "WdNumber";
68  break;
69  }
70  case word::WdListGalleryType::wdOutlineNumberGallery:
71  {
72  msStyleName = "WdOutlineNumber";
73  break;
74  }
75  default:
76  {
77  throw uno::RuntimeException();
78  }
79  }
80  msStyleName += OUString::number( mnTemplateType );
81 
82  // get the numbering style
83  uno::Reference< style::XStyleFamiliesSupplier > xStyleSupplier( mxTextDocument, uno::UNO_QUERY_THROW );
84  mxStyleFamily.set( xStyleSupplier->getStyleFamilies()->getByName("NumberingStyles"), uno::UNO_QUERY_THROW );
85  SAL_INFO("sw.vba", "numbering style name: " << msStyleName );
86  if( mxStyleFamily->hasByName( msStyleName ) )
87  {
88  mxStyleProps.set( mxStyleFamily->getByName( msStyleName ), uno::UNO_QUERY_THROW );
89  mxNumberingRules.set( mxStyleProps->getPropertyValue("NumberingRules"), uno::UNO_QUERY_THROW );
90  }
91  else
92  {
93  // create new numbering style
94  uno::Reference< lang::XMultiServiceFactory > xDocMSF( mxTextDocument, uno::UNO_QUERY_THROW );
95  mxStyleProps.set( xDocMSF->createInstance("com.sun.star.style.NumberingStyle"), uno::UNO_QUERY_THROW );
96  // insert this style into style family, or the property NumberingRules doesn't exist.
97  mxStyleFamily->insertByName( msStyleName, uno::makeAny( mxStyleProps ) );
98  mxStyleProps->getPropertyValue("NumberingRules") >>= mxNumberingRules;
99 
101 
102  mxStyleProps->setPropertyValue("NumberingRules", uno::makeAny( mxNumberingRules ) );
103  }
104 }
105 
107 {
108  switch( mnGalleryType )
109  {
110  case word::WdListGalleryType::wdBulletGallery:
111  {
113  break;
114  }
115  case word::WdListGalleryType::wdNumberGallery:
116  {
118  break;
119  }
120  case word::WdListGalleryType::wdOutlineNumberGallery:
121  {
123  break;
124  }
125  default:
126  {
127  throw uno::RuntimeException();
128  }
129  }
130 }
131 
133 {
134  // there is only 1 level for each bullet list in MSWord
135  sal_Int32 nLevel = 0;
136  uno::Sequence< beans::PropertyValue > aPropertyValues;
137  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
138  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_CHAR_STYLE_NAME, uno::makeAny( OUString( "Bullet Symbols" ) ) );
139  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( sal_Int16(style::NumberingType::CHAR_SPECIAL) ) );
140 
141  OUString aBulletChar;
142  switch( mnTemplateType )
143  {
144  case 1:
145  {
146  aBulletChar = CHAR_CLOSED_DOT;
147  break;
148  }
149  case 2:
150  {
151  aBulletChar = CHAR_EMPTY_DOT;
152  break;
153  }
154  case 3:
155  {
156  aBulletChar = CHAR_SQUARE;
157  break;
158  }
159  case 4:
160  {
161  aBulletChar = CHAR_STAR_SYMBOL;
162  break;
163  }
164  case 5:
165  {
166  aBulletChar = CHAR_FOUR_DIAMONDS;
167  break;
168  }
169  case 6:
170  {
171  aBulletChar = CHAR_ARROW;
172  break;
173  }
174  case 7:
175  {
176  aBulletChar = CHAR_CHECK_MARK;
177  break;
178  }
179  default:
180  {
181  // we only support 7 types template now
182  throw css::uno::RuntimeException();
183  }
184  }
185  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_BULLET_CHAR, uno::makeAny( aBulletChar ) );
186 
187  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
188 }
189 
191 {
192  // there is only 1 level for each bullet list in MSWord
193  sal_Int32 nLevel = 0;
194  uno::Sequence< beans::PropertyValue > aPropertyValues;
195  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
196 
197  sal_Int16 nNumberingType = 0;
198  OUString sSuffix;
199  switch( mnTemplateType )
200  {
201  case 1:
202  {
203  nNumberingType = style::NumberingType::ARABIC;
204  sSuffix = ".";
205  break;
206  }
207  case 2:
208  {
209  nNumberingType = style::NumberingType::ARABIC;
210  sSuffix = ")";
211  break;
212  }
213  case 3:
214  {
215  nNumberingType = style::NumberingType::ROMAN_UPPER;
216  sSuffix = ".";
217  break;
218  }
219  case 4:
220  {
221  nNumberingType = style::NumberingType::CHARS_UPPER_LETTER;
222  sSuffix = ".";
223  break;
224  }
225  case 5:
226  {
227  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
228  sSuffix = ")";
229  break;
230  }
231  case 6:
232  {
233  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
234  sSuffix = ".";
235  break;
236  }
237  case 7:
238  {
239  nNumberingType = style::NumberingType::ROMAN_LOWER;
240  sSuffix = ".";
241  break;
242  }
243  default:
244  {
245  // we only support 7 types template now
246  throw css::uno::RuntimeException();
247  }
248  }
249  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( nNumberingType ) );
250  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_SUFFIX, uno::makeAny( sSuffix ) );
251 
252  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
253 }
254 
256 {
257  switch( mnTemplateType )
258  {
259  case 1:
260  {
262  break;
263  }
264  case 2:
265  {
267  break;
268  }
269  case 3:
270  {
272  break;
273  }
274  case 4:
275  {
277  break;
278  }
279  case 5:
280  {
282  break;
283  }
284  case 6:
285  {
287  break;
288  }
289  case 7:
290  {
292  break;
293  }
294  default:
295  {
296  // we only support 7 types template now
297  throw css::uno::RuntimeException();
298  }
299  }
300 }
301 
303 {
304  sal_Int16 nNumberingType = 0;
305  OUString sPrefix;
306  OUString sSuffix;
307  uno::Sequence< beans::PropertyValue > aPropertyValues;
308 
309  for( sal_Int32 nLevel = 0; nLevel < LIST_LEVEL_COUNT; nLevel++ )
310  {
311  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
312  switch( nLevel )
313  {
314  case 0:
315  case 1:
316  {
317  nNumberingType = style::NumberingType::ARABIC;
318  sPrefix.clear();
319  sSuffix = ")";
320  break;
321  }
322  case 2:
323  {
324  nNumberingType = style::NumberingType::ROMAN_LOWER;
325  sPrefix.clear();
326  sSuffix = ")";
327  break;
328  }
329  case 3:
330  {
331  nNumberingType = style::NumberingType::ARABIC;
332  sPrefix = "(";
333  sSuffix = ")";
334  break;
335  }
336  case 4:
337  {
338  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
339  sPrefix = "(";
340  sSuffix = ")";
341  break;
342  }
343  case 5:
344  {
345  nNumberingType = style::NumberingType::ROMAN_LOWER;
346  sPrefix = "(";
347  sSuffix = ")";
348  break;
349  }
350  case 6:
351  {
352  nNumberingType = style::NumberingType::ARABIC;
353  sPrefix.clear();
354  sSuffix = ".";
355  break;
356  }
357  case 7:
358  {
359  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
360  sPrefix.clear();
361  sSuffix = ".";
362  break;
363  }
364  case 8:
365  {
366  nNumberingType = style::NumberingType::ROMAN_LOWER;
367  sPrefix.clear();
368  sSuffix = ".";
369  break;
370  }
371  }
372  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( nNumberingType ) );
373  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_PREFIX, uno::makeAny( sPrefix ) );
374  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_SUFFIX, uno::makeAny( sSuffix ) );
375  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
376  }
377 }
378 
380 {
381  sal_Int16 nParentNumbering = 0;
382  OUString sSuffix( '.' );
383  uno::Sequence< beans::PropertyValue > aPropertyValues;
384 
385  for( sal_Int32 nLevel = 0; nLevel < LIST_LEVEL_COUNT; nLevel++ )
386  {
387  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
388  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( sal_Int16(style::NumberingType::ARABIC) ) );
389  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_SUFFIX, uno::makeAny( sSuffix ) );
390  if( nLevel != 0 )
391  {
392  nParentNumbering = sal_Int16( nLevel - 1 );
393  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_PARENT_NUMBERING, uno::makeAny( nParentNumbering ) );
394  }
395  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
396  }
397 }
398 
400 {
401  OUString aBulletChar;
402  uno::Sequence< beans::PropertyValue > aPropertyValues;
403 
404  for( sal_Int32 nLevel = 0; nLevel < LIST_LEVEL_COUNT; nLevel++ )
405  {
406  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
407  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( sal_Int16(style::NumberingType::CHAR_SPECIAL) ) );
408  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_CHAR_STYLE_NAME, uno::makeAny( OUString("Bullet Symbols") ) );
409  switch( nLevel )
410  {
411  case 0:
412  {
413  aBulletChar = CHAR_FOUR_DIAMONDS;
414  break;
415  }
416  case 1:
417  case 5:
418  {
419  aBulletChar = CHAR_ARROW;
420  break;
421  }
422  case 2:
423  case 6:
424  {
425  aBulletChar = CHAR_SQUARE;
426  break;
427  }
428  case 3:
429  case 7:
430  {
431  aBulletChar = CHAR_CLOSED_DOT;
432  break;
433  }
434  case 4:
435  case 8:
436  {
437  aBulletChar = CHAR_DIAMOND;
438  break;
439  }
440  }
441  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_BULLET_CHAR, uno::makeAny( aBulletChar ) );
442  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
443  }
444 }
445 
447 {
448  sal_Int16 nNumberingType = 0;
449  OUString sPrefix;
450  OUString sSuffix;
451  uno::Sequence< beans::PropertyValue > aPropertyValues;
452 
453  for( sal_Int32 nLevel = 0; nLevel < LIST_LEVEL_COUNT; nLevel++ )
454  {
455  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
456  switch( nLevel )
457  {
458  case 0:
459  {
460  nNumberingType = style::NumberingType::ROMAN_UPPER;
461  sPrefix.clear();
462  sSuffix = ".";
463  break;
464  }
465  case 1:
466  {
467  nNumberingType = style::NumberingType::ARABIC;
468  sPrefix.clear();
469  sSuffix = ".";
470  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_PARENT_NUMBERING, uno::makeAny( sal_Int16(0) ) );
471  break;
472  }
473  case 2:
474  {
475  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
476  sPrefix = "(";
477  sSuffix = ")";
478  break;
479  }
480  case 3:
481  {
482  nNumberingType = style::NumberingType::ROMAN_LOWER;
483  sPrefix = "(";
484  sSuffix = ")";
485  break;
486  }
487  case 4:
488  {
489  nNumberingType = style::NumberingType::ARABIC;
490  sPrefix.clear();
491  sSuffix = ")";
492  break;
493  }
494  case 5:
495  {
496  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
497  sPrefix.clear();
498  sSuffix = ")";
499  break;
500  }
501  case 6:
502  {
503  nNumberingType = style::NumberingType::ROMAN_LOWER;
504  sPrefix.clear();
505  sSuffix = ")";
506  break;
507  }
508  case 7:
509  {
510  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
511  sPrefix.clear();
512  sSuffix = ".";
513  break;
514  }
515  case 8:
516  {
517  nNumberingType = style::NumberingType::ROMAN_LOWER;
518  sPrefix.clear();
519  sSuffix = ".";
520  break;
521  }
522  }
523  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( nNumberingType ) );
524  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_PREFIX, uno::makeAny( sPrefix ) );
525  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_SUFFIX, uno::makeAny( sSuffix ) );
526  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
527  }
528 }
529 
531 {
532  sal_Int16 nParentNumbering = 0;
533  uno::Sequence< beans::PropertyValue > aPropertyValues;
534 
535  for( sal_Int32 nLevel = 0; nLevel < LIST_LEVEL_COUNT; nLevel++ )
536  {
537  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
538  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( sal_Int16(style::NumberingType::ARABIC) ) );
539  if( nLevel != 0 )
540  {
541  nParentNumbering = sal_Int16( nLevel - 1 );
542  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_PARENT_NUMBERING, uno::makeAny( nParentNumbering ) );
543  }
544  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
545  }
546 }
547 
549 {
550  sal_Int16 nNumberingType = 0;
551  OUString sPrefix;
552  OUString sSuffix;
553  uno::Sequence< beans::PropertyValue > aPropertyValues;
554 
555  for( sal_Int32 nLevel = 0; nLevel < LIST_LEVEL_COUNT; nLevel++ )
556  {
557  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
558  switch( nLevel )
559  {
560  case 0:
561  {
562  nNumberingType = style::NumberingType::ROMAN_UPPER;
563  sPrefix.clear();
564  sSuffix = ".";
565  break;
566  }
567  case 1:
568  {
569  nNumberingType = style::NumberingType::CHARS_UPPER_LETTER;
570  sPrefix.clear();
571  sSuffix = ".";
572  break;
573  }
574  case 2:
575  {
576  nNumberingType = style::NumberingType::ARABIC;
577  sPrefix.clear();
578  sSuffix = ")";
579  break;
580  }
581  case 3:
582  {
583  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
584  sPrefix.clear();
585  sSuffix = ")";
586  break;
587  }
588  case 4:
589  {
590  nNumberingType = style::NumberingType::ARABIC;
591  sPrefix = "(";
592  sSuffix = ")";
593  break;
594  }
595  case 5:
596  {
597  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
598  sPrefix = "(";
599  sSuffix = ")";
600  break;
601  }
602  case 6:
603  {
604  nNumberingType = style::NumberingType::ROMAN_LOWER;
605  sPrefix = "(";
606  sSuffix = ")";
607  break;
608  }
609  case 7:
610  {
611  nNumberingType = style::NumberingType::CHARS_LOWER_LETTER;
612  sPrefix = "(";
613  sSuffix = ".";
614  break;
615  }
616  case 8:
617  {
618  nNumberingType = style::NumberingType::ROMAN_LOWER;
619  sPrefix = "(";
620  sSuffix = ".";
621  break;
622  }
623  }
624  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( nNumberingType ) );
625  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_PREFIX, uno::makeAny( sPrefix ) );
626  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_SUFFIX, uno::makeAny( sSuffix ) );
627  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
628  }
629 }
630 
632 {
633  uno::Sequence< beans::PropertyValue > aPropertyValues;
634 
635  for( sal_Int32 nLevel = 0; nLevel < LIST_LEVEL_COUNT; nLevel++ )
636  {
637  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
638  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_NUMBERING_TYPE, uno::makeAny( sal_Int16(style::NumberingType::ARABIC) ) );
639  setOrAppendPropertyValue( aPropertyValues, UNO_NAME_PREFIX, uno::makeAny( OUString("Chapter ") ) );
640  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
641  }
642 }
643 
644 uno::Any SwVbaListHelper::getPropertyValueWithNameAndLevel( sal_Int32 nLevel, const OUString& sName )
645 {
646  uno::Sequence< beans::PropertyValue > aPropertyValues;
647  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
648  return getPropertyValue( aPropertyValues, sName );
649 }
650 
651 void SwVbaListHelper::setPropertyValueWithNameAndLevel( sal_Int32 nLevel, const OUString& sName, const css::uno::Any& aValue )
652 {
653  uno::Sequence< beans::PropertyValue > aPropertyValues;
654  mxNumberingRules->getByIndex( nLevel ) >>= aPropertyValues;
655  setOrAppendPropertyValue( aPropertyValues, sName, aValue );
656  mxNumberingRules->replaceByIndex( nLevel, uno::makeAny( aPropertyValues ) );
657  mxStyleProps->setPropertyValue("NumberingRules", uno::makeAny( mxNumberingRules ) );
658 }
659 
660 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void CreateBulletListTemplate()
void CreateOutlineNumberForType6()
const sal_Int32 LIST_LEVEL_COUNT
SwVbaListHelper(const css::uno::Reference< css::text::XTextDocument > &xTextDoc, sal_Int32 nGalleryType, sal_Int32 nTemplateType)
const sal_Unicode CHAR_CLOSED_DOT[]
void CreateOutlineNumberListTemplate()
const sal_Unicode CHAR_ARROW[]
void CreateNumberListTemplate()
const char UNO_NAME_BULLET_CHAR[]
css::uno::Reference< css::container::XIndexReplace > mxNumberingRules
sal_uInt16 sal_Unicode
OUString sSuffix
bool getPropertyValue(ValueType &rValue, css::uno::Reference< css::beans::XPropertySet > const &xPropSet, OUString const &propName)
void CreateOutlineNumberForType2()
const sal_Unicode CHAR_SQUARE[]
const char CHAR_EMPTY_DOT[]
const char UNO_NAME_NUMBERING_TYPE[]
sal_Int32 mnTemplateType
const char UNO_NAME_SUFFIX[]
css::uno::Reference< css::text::XTextDocument > mxTextDocument
const char UNO_NAME_PREFIX[]
const sal_Unicode CHAR_CHECK_MARK[]
void CreateOutlineNumberForType5()
css::uno::Any getPropertyValueWithNameAndLevel(sal_Int32 nLevel, const OUString &sName)
float u
PropertyValueVector_t aPropertyValues
OUString sPrefix
css::uno::Reference< css::beans::XPropertySet > mxStyleProps
void CreateOutlineNumberForType7()
const sal_Unicode CHAR_STAR_SYMBOL[]
const sal_Unicode CHAR_FOUR_DIAMONDS[]
void setPropertyValueWithNameAndLevel(sal_Int32 nLevel, const OUString &sName, const css::uno::Any &aValue)
void CreateOutlineNumberForType1()
const char UNO_NAME_CHAR_STYLE_NAME[]
const char UNO_NAME_PARENT_NUMBERING[]
#define SAL_INFO(area, stream)
void CreateOutlineNumberForType4()
sal_Int32 mnGalleryType
OUString msStyleName
const sal_Unicode CHAR_DIAMOND[]
void setOrAppendPropertyValue(uno::Sequence< beans::PropertyValue > &aProp, const OUString &aName, const uno::Any &aValue)
void CreateOutlineNumberForType3()
css::uno::Reference< css::container::XNameContainer > mxStyleFamily
sal_Int16 nParentNumbering