1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_xmloff.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/style/NumberingType.hpp>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/style/XStyle.hpp>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameContainer.hpp>
31*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XIndexReplace.hpp>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/XBitmap.hpp>
33*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontDescriptor.hpp>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/text/HoriOrientation.hpp>
35*b1cdbd2cSJim Jagielski #include <com/sun/star/text/VertOrientation.hpp>
36*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XChapterNumberingSupplier.hpp>
37*b1cdbd2cSJim Jagielski // --> OD 2008-01-16 #newlistlevelattrs#
38*b1cdbd2cSJim Jagielski #include <com/sun/star/text/PositionAndSpaceMode.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/text/LabelFollow.hpp>
40*b1cdbd2cSJim Jagielski // <--
41*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyValue.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
47*b1cdbd2cSJim Jagielski
48*b1cdbd2cSJim Jagielski #include <xmloff/nmspmap.hxx>
49*b1cdbd2cSJim Jagielski #include "xmloff/xmlnmspe.hxx"
50*b1cdbd2cSJim Jagielski #include <xmloff/xmltoken.hxx>
51*b1cdbd2cSJim Jagielski #include <xmloff/xmluconv.hxx>
52*b1cdbd2cSJim Jagielski #include "fonthdl.hxx"
53*b1cdbd2cSJim Jagielski #include "xmloff/XMLTextListAutoStylePool.hxx"
54*b1cdbd2cSJim Jagielski #include <xmloff/xmlnume.hxx>
55*b1cdbd2cSJim Jagielski #include <xmloff/xmlexp.hxx>
56*b1cdbd2cSJim Jagielski #include <tools/fontenum.hxx>
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski using ::rtl::OUString;
60*b1cdbd2cSJim Jagielski using ::rtl::OUStringBuffer;
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
63*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
64*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::style;
65*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::text;
66*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
67*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
68*b1cdbd2cSJim Jagielski using namespace ::xmloff::token;
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_SYMBOL_TEXT_DISTANCE[] = "SymbolTextDistance";
71*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_PARENT_NUMBERING[] = "ParentNumbering";
72*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_CHAR_STYLE_NAME[] = "CharStyleName";
73*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_BULLET_CHAR[] = "BulletChar";
74*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_BULLET_RELSIZE[] = "BulletRelSize";
75*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_BULLET_COLOR[] = "BulletColor";
76*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_GRAPHIC_BITMAP[] = "GraphicBitmap";
77*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_GRAPHIC_SIZE[] = "GraphicSize";
78*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_VERT_ORIENT[] = "VertOrient";
79*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_NUMBERINGTYPE[] = "NumberingType";
80*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_HEADING_STYLE_NAME[] = "HeadingStyleName";
81*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_PREFIX[] = "Prefix";
82*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_SUFFIX[] = "Suffix";
83*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_ADJUST[] = "Adjust";
84*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_LEFT_MARGIN[] = "LeftMargin";
85*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_FIRST_LINE_OFFSET[] = "FirstLineOffset";
86*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_BULLET_FONT[] = "BulletFont";
87*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_GRAPHICURL[] = "GraphicURL";
88*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_START_WITH[] = "StartWith";
89*b1cdbd2cSJim Jagielski // --> OD 2008-01-15 #newlistlevelattrs#
90*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_POSITION_AND_SPACE_MODE[] = "PositionAndSpaceMode";
91*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_LABEL_FOLLOWED_BY[] = "LabelFollowedBy";
92*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_LISTTAB_STOP_POSITION[] = "ListtabStopPosition";
93*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_FIRST_LINE_INDENT[] = "FirstLineIndent";
94*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA XML_UNO_NAME_NRULE_INDENT_AT[] = "IndentAt";
95*b1cdbd2cSJim Jagielski // <--
96*b1cdbd2cSJim Jagielski
exportLevelStyles(const uno::Reference<::com::sun::star::container::XIndexReplace> & xNumRule,sal_Bool bOutline)97*b1cdbd2cSJim Jagielski void SvxXMLNumRuleExport::exportLevelStyles( const uno::Reference< ::com::sun::star::container::XIndexReplace > & xNumRule,
98*b1cdbd2cSJim Jagielski sal_Bool bOutline )
99*b1cdbd2cSJim Jagielski {
100*b1cdbd2cSJim Jagielski sal_Int32 nCount = xNumRule ->getCount();
101*b1cdbd2cSJim Jagielski for( sal_Int32 i=0; i<nCount; i++ )
102*b1cdbd2cSJim Jagielski {
103*b1cdbd2cSJim Jagielski uno::Any aEntry( xNumRule->getByIndex( i ) );
104*b1cdbd2cSJim Jagielski uno::Sequence<beans::PropertyValue> aSeq;
105*b1cdbd2cSJim Jagielski if( aEntry >>= aSeq )
106*b1cdbd2cSJim Jagielski {
107*b1cdbd2cSJim Jagielski exportLevelStyle( i, aSeq, bOutline );
108*b1cdbd2cSJim Jagielski }
109*b1cdbd2cSJim Jagielski }
110*b1cdbd2cSJim Jagielski }
111*b1cdbd2cSJim Jagielski
exportLevelStyle(sal_Int32 nLevel,const uno::Sequence<beans::PropertyValue> & rProps,sal_Bool bOutline)112*b1cdbd2cSJim Jagielski void SvxXMLNumRuleExport::exportLevelStyle( sal_Int32 nLevel,
113*b1cdbd2cSJim Jagielski const uno::Sequence<beans::PropertyValue>& rProps,
114*b1cdbd2cSJim Jagielski sal_Bool bOutline )
115*b1cdbd2cSJim Jagielski {
116*b1cdbd2cSJim Jagielski sal_Int16 eType = NumberingType::CHAR_SPECIAL;
117*b1cdbd2cSJim Jagielski
118*b1cdbd2cSJim Jagielski sal_Int16 eAdjust = HoriOrientation::LEFT;
119*b1cdbd2cSJim Jagielski OUString sPrefix, sSuffix;
120*b1cdbd2cSJim Jagielski OUString sTextStyleName;
121*b1cdbd2cSJim Jagielski sal_Bool bHasColor = sal_False;
122*b1cdbd2cSJim Jagielski sal_Int32 nColor = 0;
123*b1cdbd2cSJim Jagielski sal_Int32 nSpaceBefore = 0, nMinLabelWidth = 0, nMinLabelDist = 0;
124*b1cdbd2cSJim Jagielski
125*b1cdbd2cSJim Jagielski sal_Int16 nStartValue = 1, nDisplayLevels = 1, nBullRelSize = 0;
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski sal_Unicode cBullet = 0xf095;
128*b1cdbd2cSJim Jagielski OUString sBulletFontName, sBulletFontStyleName ;
129*b1cdbd2cSJim Jagielski sal_Int16 eBulletFontFamily = FAMILY_DONTKNOW;
130*b1cdbd2cSJim Jagielski sal_Int16 eBulletFontPitch = PITCH_DONTKNOW;
131*b1cdbd2cSJim Jagielski rtl_TextEncoding eBulletFontEncoding = RTL_TEXTENCODING_DONTKNOW;
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski OUString sImageURL;
134*b1cdbd2cSJim Jagielski uno::Reference< ::com::sun::star::awt::XBitmap > xBitmap;
135*b1cdbd2cSJim Jagielski sal_Int32 nImageWidth = 0, nImageHeight = 0;
136*b1cdbd2cSJim Jagielski sal_Int16 eImageVertOrient = VertOrientation::LINE_CENTER;
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski // --> OD 2008-01-15 #newlistlevelattrs#
139*b1cdbd2cSJim Jagielski sal_Int16 ePosAndSpaceMode = PositionAndSpaceMode::LABEL_WIDTH_AND_POSITION;
140*b1cdbd2cSJim Jagielski sal_Int16 eLabelFollowedBy = LabelFollow::LISTTAB;
141*b1cdbd2cSJim Jagielski sal_Int32 nListtabStopPosition( 0 );
142*b1cdbd2cSJim Jagielski sal_Int32 nFirstLineIndent( 0 );
143*b1cdbd2cSJim Jagielski sal_Int32 nIndentAt( 0 );
144*b1cdbd2cSJim Jagielski // <--
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski const sal_Int32 nCount = rProps.getLength();
147*b1cdbd2cSJim Jagielski const beans::PropertyValue* pPropArray = rProps.getConstArray();
148*b1cdbd2cSJim Jagielski for( sal_Int32 i=0; i<nCount; i++ )
149*b1cdbd2cSJim Jagielski {
150*b1cdbd2cSJim Jagielski const beans::PropertyValue& rProp = pPropArray[i];
151*b1cdbd2cSJim Jagielski
152*b1cdbd2cSJim Jagielski if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_NUMBERINGTYPE, sizeof(XML_UNO_NAME_NRULE_NUMBERINGTYPE)-1 ) )
153*b1cdbd2cSJim Jagielski {
154*b1cdbd2cSJim Jagielski rProp.Value >>= eType;
155*b1cdbd2cSJim Jagielski }
156*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_PREFIX, sizeof(XML_UNO_NAME_NRULE_PREFIX)-1 ) )
157*b1cdbd2cSJim Jagielski {
158*b1cdbd2cSJim Jagielski rProp.Value >>= sPrefix;
159*b1cdbd2cSJim Jagielski }
160*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_SUFFIX, sizeof(XML_UNO_NAME_NRULE_SUFFIX)-1 ) )
161*b1cdbd2cSJim Jagielski {
162*b1cdbd2cSJim Jagielski rProp.Value >>= sSuffix;
163*b1cdbd2cSJim Jagielski }
164*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_BULLET_CHAR, sizeof(XML_UNO_NAME_NRULE_BULLET_CHAR)-1 ) )
165*b1cdbd2cSJim Jagielski {
166*b1cdbd2cSJim Jagielski OUString sValue;
167*b1cdbd2cSJim Jagielski rProp.Value >>= sValue;
168*b1cdbd2cSJim Jagielski if( sValue.getLength() > 0 )
169*b1cdbd2cSJim Jagielski {
170*b1cdbd2cSJim Jagielski cBullet = (sal_Unicode)sValue[0];
171*b1cdbd2cSJim Jagielski }
172*b1cdbd2cSJim Jagielski }
173*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_BULLET_RELSIZE, sizeof(XML_UNO_NAME_NRULE_BULLET_RELSIZE)-1 ) )
174*b1cdbd2cSJim Jagielski {
175*b1cdbd2cSJim Jagielski rProp.Value >>= nBullRelSize;
176*b1cdbd2cSJim Jagielski }
177*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_ADJUST, sizeof(XML_UNO_NAME_NRULE_ADJUST)-1 ) )
178*b1cdbd2cSJim Jagielski {
179*b1cdbd2cSJim Jagielski sal_Int16 nValue = 0;
180*b1cdbd2cSJim Jagielski rProp.Value >>= nValue;
181*b1cdbd2cSJim Jagielski eAdjust = nValue;
182*b1cdbd2cSJim Jagielski }
183*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_BULLET_FONT, sizeof(XML_UNO_NAME_NRULE_BULLET_FONT)-1 ) )
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski awt::FontDescriptor rFDesc;
186*b1cdbd2cSJim Jagielski if( rProp.Value >>= rFDesc )
187*b1cdbd2cSJim Jagielski {
188*b1cdbd2cSJim Jagielski sBulletFontName = rFDesc.Name;
189*b1cdbd2cSJim Jagielski sBulletFontStyleName = rFDesc.StyleName;
190*b1cdbd2cSJim Jagielski eBulletFontFamily = (sal_Int16)rFDesc.Family;
191*b1cdbd2cSJim Jagielski eBulletFontPitch = (sal_Int16)rFDesc.Pitch;
192*b1cdbd2cSJim Jagielski eBulletFontEncoding = (rtl_TextEncoding)rFDesc.CharSet;
193*b1cdbd2cSJim Jagielski }
194*b1cdbd2cSJim Jagielski }
195*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_GRAPHICURL, sizeof(XML_UNO_NAME_NRULE_GRAPHICURL)-1 ) )
196*b1cdbd2cSJim Jagielski {
197*b1cdbd2cSJim Jagielski rProp.Value >>= sImageURL;
198*b1cdbd2cSJim Jagielski }
199*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_GRAPHIC_BITMAP, sizeof(XML_UNO_NAME_NRULE_GRAPHIC_BITMAP)-1 ) )
200*b1cdbd2cSJim Jagielski {
201*b1cdbd2cSJim Jagielski rProp.Value >>= xBitmap;
202*b1cdbd2cSJim Jagielski }
203*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_BULLET_COLOR, sizeof(XML_UNO_NAME_NRULE_BULLET_COLOR)-1 ) )
204*b1cdbd2cSJim Jagielski {
205*b1cdbd2cSJim Jagielski rProp.Value >>= nColor;
206*b1cdbd2cSJim Jagielski bHasColor = sal_True;
207*b1cdbd2cSJim Jagielski }
208*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_START_WITH, sizeof(XML_UNO_NAME_NRULE_START_WITH)-1 ) )
209*b1cdbd2cSJim Jagielski {
210*b1cdbd2cSJim Jagielski rProp.Value >>= nStartValue;
211*b1cdbd2cSJim Jagielski }
212*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_LEFT_MARGIN, sizeof(XML_UNO_NAME_NRULE_LEFT_MARGIN)-1 ) )
213*b1cdbd2cSJim Jagielski {
214*b1cdbd2cSJim Jagielski rProp.Value >>= nSpaceBefore;
215*b1cdbd2cSJim Jagielski }
216*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_FIRST_LINE_OFFSET, sizeof(XML_UNO_NAME_NRULE_FIRST_LINE_OFFSET)-1 ) )
217*b1cdbd2cSJim Jagielski {
218*b1cdbd2cSJim Jagielski rProp.Value >>= nMinLabelWidth;
219*b1cdbd2cSJim Jagielski }
220*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_SYMBOL_TEXT_DISTANCE, sizeof(XML_UNO_NAME_NRULE_SYMBOL_TEXT_DISTANCE)-1 ) )
221*b1cdbd2cSJim Jagielski {
222*b1cdbd2cSJim Jagielski rProp.Value >>= nMinLabelDist;
223*b1cdbd2cSJim Jagielski }
224*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_PARENT_NUMBERING, sizeof(XML_UNO_NAME_NRULE_PARENT_NUMBERING)-1 ) )
225*b1cdbd2cSJim Jagielski {
226*b1cdbd2cSJim Jagielski rProp.Value >>= nDisplayLevels;
227*b1cdbd2cSJim Jagielski if( nDisplayLevels > nLevel+1 )
228*b1cdbd2cSJim Jagielski nDisplayLevels = static_cast<sal_Int16>( nLevel )+1;
229*b1cdbd2cSJim Jagielski }
230*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_CHAR_STYLE_NAME, sizeof(XML_UNO_NAME_NRULE_CHAR_STYLE_NAME)-1 ) )
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski rProp.Value >>= sTextStyleName;
233*b1cdbd2cSJim Jagielski }
234*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_GRAPHIC_SIZE, sizeof(XML_UNO_NAME_NRULE_GRAPHIC_SIZE)-1 ) )
235*b1cdbd2cSJim Jagielski {
236*b1cdbd2cSJim Jagielski awt::Size aSize;
237*b1cdbd2cSJim Jagielski if( rProp.Value >>= aSize )
238*b1cdbd2cSJim Jagielski {
239*b1cdbd2cSJim Jagielski nImageWidth = aSize.Width;
240*b1cdbd2cSJim Jagielski nImageHeight = aSize.Height;
241*b1cdbd2cSJim Jagielski }
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_VERT_ORIENT, sizeof(XML_UNO_NAME_NRULE_VERT_ORIENT)-1 ) )
244*b1cdbd2cSJim Jagielski {
245*b1cdbd2cSJim Jagielski sal_Int16 nValue = 0;
246*b1cdbd2cSJim Jagielski rProp.Value >>= nValue;
247*b1cdbd2cSJim Jagielski eImageVertOrient = nValue;
248*b1cdbd2cSJim Jagielski }
249*b1cdbd2cSJim Jagielski // --> OD 2008-01-16 #newlistlevelattrs#
250*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_POSITION_AND_SPACE_MODE,
251*b1cdbd2cSJim Jagielski sizeof(XML_UNO_NAME_NRULE_POSITION_AND_SPACE_MODE)-1 ) )
252*b1cdbd2cSJim Jagielski {
253*b1cdbd2cSJim Jagielski sal_Int16 nValue = 0;
254*b1cdbd2cSJim Jagielski rProp.Value >>= nValue;
255*b1cdbd2cSJim Jagielski ePosAndSpaceMode = nValue;
256*b1cdbd2cSJim Jagielski }
257*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_LABEL_FOLLOWED_BY,
258*b1cdbd2cSJim Jagielski sizeof(XML_UNO_NAME_NRULE_LABEL_FOLLOWED_BY)-1 ) )
259*b1cdbd2cSJim Jagielski {
260*b1cdbd2cSJim Jagielski sal_Int16 nValue = 0;
261*b1cdbd2cSJim Jagielski rProp.Value >>= nValue;
262*b1cdbd2cSJim Jagielski eLabelFollowedBy = nValue;
263*b1cdbd2cSJim Jagielski }
264*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_LISTTAB_STOP_POSITION,
265*b1cdbd2cSJim Jagielski sizeof(XML_UNO_NAME_NRULE_LISTTAB_STOP_POSITION)-1 ) )
266*b1cdbd2cSJim Jagielski {
267*b1cdbd2cSJim Jagielski rProp.Value >>= nListtabStopPosition;
268*b1cdbd2cSJim Jagielski }
269*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_FIRST_LINE_INDENT,
270*b1cdbd2cSJim Jagielski sizeof(XML_UNO_NAME_NRULE_FIRST_LINE_INDENT)-1 ) )
271*b1cdbd2cSJim Jagielski {
272*b1cdbd2cSJim Jagielski rProp.Value >>= nFirstLineIndent;
273*b1cdbd2cSJim Jagielski }
274*b1cdbd2cSJim Jagielski else if( rProp.Name.equalsAsciiL( XML_UNO_NAME_NRULE_INDENT_AT,
275*b1cdbd2cSJim Jagielski sizeof(XML_UNO_NAME_NRULE_INDENT_AT)-1 ) )
276*b1cdbd2cSJim Jagielski {
277*b1cdbd2cSJim Jagielski rProp.Value >>= nIndentAt;
278*b1cdbd2cSJim Jagielski }
279*b1cdbd2cSJim Jagielski // <--
280*b1cdbd2cSJim Jagielski }
281*b1cdbd2cSJim Jagielski
282*b1cdbd2cSJim Jagielski if( bOutline && (NumberingType::CHAR_SPECIAL == eType ||
283*b1cdbd2cSJim Jagielski NumberingType::BITMAP == eType) )
284*b1cdbd2cSJim Jagielski {
285*b1cdbd2cSJim Jagielski DBG_ASSERT( !bOutline,
286*b1cdbd2cSJim Jagielski "SvxXMLNumRuleExport::exportLevelStyle: invalid style for outline" );
287*b1cdbd2cSJim Jagielski return;
288*b1cdbd2cSJim Jagielski }
289*b1cdbd2cSJim Jagielski
290*b1cdbd2cSJim Jagielski GetExport().CheckAttrList();
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim Jagielski // text:level
293*b1cdbd2cSJim Jagielski OUStringBuffer sTmp;
294*b1cdbd2cSJim Jagielski sTmp.append( nLevel + 1 );
295*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_LEVEL, sTmp.makeStringAndClear() );
296*b1cdbd2cSJim Jagielski // #i110694#: no style-name on list-level-style-image
297*b1cdbd2cSJim Jagielski // #i116149#: neither prefix/suffix
298*b1cdbd2cSJim Jagielski if (NumberingType::BITMAP != eType)
299*b1cdbd2cSJim Jagielski {
300*b1cdbd2cSJim Jagielski if (sTextStyleName.getLength() > 0)
301*b1cdbd2cSJim Jagielski {
302*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_STYLE_NAME,
303*b1cdbd2cSJim Jagielski GetExport().EncodeStyleName( sTextStyleName ) );
304*b1cdbd2cSJim Jagielski }
305*b1cdbd2cSJim Jagielski if (sPrefix.getLength() > 0)
306*b1cdbd2cSJim Jagielski {
307*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_NUM_PREFIX,
308*b1cdbd2cSJim Jagielski sPrefix );
309*b1cdbd2cSJim Jagielski }
310*b1cdbd2cSJim Jagielski if (sSuffix.getLength() > 0)
311*b1cdbd2cSJim Jagielski {
312*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_NUM_SUFFIX,
313*b1cdbd2cSJim Jagielski sSuffix );
314*b1cdbd2cSJim Jagielski }
315*b1cdbd2cSJim Jagielski }
316*b1cdbd2cSJim Jagielski
317*b1cdbd2cSJim Jagielski enum XMLTokenEnum eElem = XML_LIST_LEVEL_STYLE_NUMBER;
318*b1cdbd2cSJim Jagielski if( NumberingType::CHAR_SPECIAL == eType )
319*b1cdbd2cSJim Jagielski {
320*b1cdbd2cSJim Jagielski // <text:list-level-style-bullet>
321*b1cdbd2cSJim Jagielski eElem = XML_LIST_LEVEL_STYLE_BULLET;
322*b1cdbd2cSJim Jagielski
323*b1cdbd2cSJim Jagielski if( cBullet )
324*b1cdbd2cSJim Jagielski {
325*b1cdbd2cSJim Jagielski if( cBullet < ' ' )
326*b1cdbd2cSJim Jagielski {
327*b1cdbd2cSJim Jagielski cBullet = 0xF000 + 149;
328*b1cdbd2cSJim Jagielski }
329*b1cdbd2cSJim Jagielski // text:bullet-char="..."
330*b1cdbd2cSJim Jagielski sTmp.append( cBullet );
331*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_BULLET_CHAR,
332*b1cdbd2cSJim Jagielski sTmp.makeStringAndClear() );
333*b1cdbd2cSJim Jagielski }
334*b1cdbd2cSJim Jagielski
335*b1cdbd2cSJim Jagielski }
336*b1cdbd2cSJim Jagielski else if( NumberingType::BITMAP == eType )
337*b1cdbd2cSJim Jagielski {
338*b1cdbd2cSJim Jagielski // <text:list-level-style-image>
339*b1cdbd2cSJim Jagielski
340*b1cdbd2cSJim Jagielski eElem = XML_LIST_LEVEL_STYLE_IMAGE;
341*b1cdbd2cSJim Jagielski
342*b1cdbd2cSJim Jagielski
343*b1cdbd2cSJim Jagielski if( sImageURL.getLength() )
344*b1cdbd2cSJim Jagielski {
345*b1cdbd2cSJim Jagielski OUString sURL( GetExport().AddEmbeddedGraphicObject( sImageURL ) );
346*b1cdbd2cSJim Jagielski if( sURL.getLength() )
347*b1cdbd2cSJim Jagielski {
348*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sURL );
349*b1cdbd2cSJim Jagielski
350*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE );
351*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED );
352*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD );
353*b1cdbd2cSJim Jagielski }
354*b1cdbd2cSJim Jagielski }
355*b1cdbd2cSJim Jagielski else
356*b1cdbd2cSJim Jagielski {
357*b1cdbd2cSJim Jagielski DBG_ASSERT( !xBitmap.is(),
358*b1cdbd2cSJim Jagielski "embedded images are not supported by now" );
359*b1cdbd2cSJim Jagielski }
360*b1cdbd2cSJim Jagielski }
361*b1cdbd2cSJim Jagielski else
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski // <text:list-level-style-number> or <text:outline-level-style>
364*b1cdbd2cSJim Jagielski if( bOutline )
365*b1cdbd2cSJim Jagielski eElem = XML_OUTLINE_LEVEL_STYLE;
366*b1cdbd2cSJim Jagielski else
367*b1cdbd2cSJim Jagielski eElem = XML_LIST_LEVEL_STYLE_NUMBER;
368*b1cdbd2cSJim Jagielski
369*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertNumFormat( sTmp, eType );
370*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_NUM_FORMAT,
371*b1cdbd2cSJim Jagielski sTmp.makeStringAndClear() );
372*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertNumLetterSync( sTmp, eType );
373*b1cdbd2cSJim Jagielski if( sTmp.getLength() )
374*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE,
375*b1cdbd2cSJim Jagielski XML_NUM_LETTER_SYNC,
376*b1cdbd2cSJim Jagielski sTmp.makeStringAndClear() );
377*b1cdbd2cSJim Jagielski
378*b1cdbd2cSJim Jagielski if( nStartValue != 1 )
379*b1cdbd2cSJim Jagielski {
380*b1cdbd2cSJim Jagielski sTmp.append( (sal_Int32)nStartValue );
381*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_START_VALUE,
382*b1cdbd2cSJim Jagielski sTmp.makeStringAndClear() );
383*b1cdbd2cSJim Jagielski }
384*b1cdbd2cSJim Jagielski if( nDisplayLevels > 1 && NumberingType::NUMBER_NONE != eType )
385*b1cdbd2cSJim Jagielski {
386*b1cdbd2cSJim Jagielski sTmp.append( (sal_Int32)nDisplayLevels );
387*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_DISPLAY_LEVELS,
388*b1cdbd2cSJim Jagielski sTmp.makeStringAndClear() );
389*b1cdbd2cSJim Jagielski }
390*b1cdbd2cSJim Jagielski }
391*b1cdbd2cSJim Jagielski
392*b1cdbd2cSJim Jagielski {
393*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_TEXT, eElem,
394*b1cdbd2cSJim Jagielski sal_True, sal_True );
395*b1cdbd2cSJim Jagielski
396*b1cdbd2cSJim Jagielski // --> OD 2008-01-16 #newlistlevelattrs#
397*b1cdbd2cSJim Jagielski OUStringBuffer sBuffer;
398*b1cdbd2cSJim Jagielski if ( ePosAndSpaceMode == PositionAndSpaceMode::LABEL_WIDTH_AND_POSITION )
399*b1cdbd2cSJim Jagielski {
400*b1cdbd2cSJim Jagielski // --> OD 2008-06-05 #i89178#
401*b1cdbd2cSJim Jagielski // optimization of XML stream size:
402*b1cdbd2cSJim Jagielski // suppress export of property list-level-position-and-space-mode,
403*b1cdbd2cSJim Jagielski // if its value is "label-width-and-position" - its the default value
404*b1cdbd2cSJim Jagielski // GetExport().AddAttribute( XML_NAMESPACE_TEXT,
405*b1cdbd2cSJim Jagielski // XML_LIST_LEVEL_POSITION_AND_SPACE_MODE,
406*b1cdbd2cSJim Jagielski // XML_LABEL_WIDTH_AND_POSITION );
407*b1cdbd2cSJim Jagielski // <--
408*b1cdbd2cSJim Jagielski
409*b1cdbd2cSJim Jagielski nSpaceBefore += nMinLabelWidth;
410*b1cdbd2cSJim Jagielski nMinLabelWidth = -nMinLabelWidth;
411*b1cdbd2cSJim Jagielski if( nSpaceBefore != 0 )
412*b1cdbd2cSJim Jagielski {
413*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertMeasure( sBuffer, nSpaceBefore );
414*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_SPACE_BEFORE,
415*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
416*b1cdbd2cSJim Jagielski }
417*b1cdbd2cSJim Jagielski if( nMinLabelWidth != 0 )
418*b1cdbd2cSJim Jagielski {
419*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertMeasure( sBuffer, nMinLabelWidth );
420*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_MIN_LABEL_WIDTH,
421*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
422*b1cdbd2cSJim Jagielski }
423*b1cdbd2cSJim Jagielski if( nMinLabelDist > 0 )
424*b1cdbd2cSJim Jagielski {
425*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertMeasure( sBuffer, nMinLabelDist );
426*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_MIN_LABEL_DISTANCE,
427*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
428*b1cdbd2cSJim Jagielski }
429*b1cdbd2cSJim Jagielski }
430*b1cdbd2cSJim Jagielski // --> OD 2008-06-06 #i89178#
431*b1cdbd2cSJim Jagielski // check, if properties for position-and-space-mode LABEL_ALIGNMENT
432*b1cdbd2cSJim Jagielski // are allowed to be exported.
433*b1cdbd2cSJim Jagielski else if ( ePosAndSpaceMode == PositionAndSpaceMode::LABEL_ALIGNMENT &&
434*b1cdbd2cSJim Jagielski mbExportPositionAndSpaceModeLabelAlignment )
435*b1cdbd2cSJim Jagielski // <--
436*b1cdbd2cSJim Jagielski {
437*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT,
438*b1cdbd2cSJim Jagielski XML_LIST_LEVEL_POSITION_AND_SPACE_MODE,
439*b1cdbd2cSJim Jagielski XML_LABEL_ALIGNMENT );
440*b1cdbd2cSJim Jagielski }
441*b1cdbd2cSJim Jagielski // <--
442*b1cdbd2cSJim Jagielski if( HoriOrientation::LEFT != eAdjust )
443*b1cdbd2cSJim Jagielski {
444*b1cdbd2cSJim Jagielski enum XMLTokenEnum eValue = XML_TOKEN_INVALID;
445*b1cdbd2cSJim Jagielski switch( eAdjust )
446*b1cdbd2cSJim Jagielski {
447*b1cdbd2cSJim Jagielski case HoriOrientation::RIGHT: eValue = XML_END; break;
448*b1cdbd2cSJim Jagielski case HoriOrientation::CENTER: eValue = XML_CENTER; break;
449*b1cdbd2cSJim Jagielski }
450*b1cdbd2cSJim Jagielski if( eValue != XML_TOKEN_INVALID )
451*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_FO, XML_TEXT_ALIGN, eValue );
452*b1cdbd2cSJim Jagielski }
453*b1cdbd2cSJim Jagielski
454*b1cdbd2cSJim Jagielski if( NumberingType::BITMAP == eType )
455*b1cdbd2cSJim Jagielski {
456*b1cdbd2cSJim Jagielski enum XMLTokenEnum eValue = XML_TOKEN_INVALID;
457*b1cdbd2cSJim Jagielski switch( eImageVertOrient )
458*b1cdbd2cSJim Jagielski {
459*b1cdbd2cSJim Jagielski case VertOrientation::BOTTOM: // yes, its OK: BOTTOM means that the baseline
460*b1cdbd2cSJim Jagielski // hits the frame at its topmost position
461*b1cdbd2cSJim Jagielski case VertOrientation::LINE_TOP:
462*b1cdbd2cSJim Jagielski case VertOrientation::CHAR_TOP:
463*b1cdbd2cSJim Jagielski eValue = XML_TOP;
464*b1cdbd2cSJim Jagielski break;
465*b1cdbd2cSJim Jagielski case VertOrientation::CENTER:
466*b1cdbd2cSJim Jagielski case VertOrientation::LINE_CENTER:
467*b1cdbd2cSJim Jagielski case VertOrientation::CHAR_CENTER:
468*b1cdbd2cSJim Jagielski eValue = XML_MIDDLE;
469*b1cdbd2cSJim Jagielski break;
470*b1cdbd2cSJim Jagielski case VertOrientation::TOP: // yes, its OK: TOP means that the baseline
471*b1cdbd2cSJim Jagielski // hits the frame at its bottommost position
472*b1cdbd2cSJim Jagielski case VertOrientation::LINE_BOTTOM:
473*b1cdbd2cSJim Jagielski case VertOrientation::CHAR_BOTTOM:
474*b1cdbd2cSJim Jagielski eValue = XML_BOTTOM;
475*b1cdbd2cSJim Jagielski break;
476*b1cdbd2cSJim Jagielski }
477*b1cdbd2cSJim Jagielski if( eValue != XML_TOKEN_INVALID )
478*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_VERTICAL_POS, eValue );
479*b1cdbd2cSJim Jagielski
480*b1cdbd2cSJim Jagielski eValue = XML_TOKEN_INVALID;
481*b1cdbd2cSJim Jagielski switch( eImageVertOrient )
482*b1cdbd2cSJim Jagielski {
483*b1cdbd2cSJim Jagielski case VertOrientation::TOP:
484*b1cdbd2cSJim Jagielski case VertOrientation::CENTER:
485*b1cdbd2cSJim Jagielski case VertOrientation::BOTTOM:
486*b1cdbd2cSJim Jagielski eValue = XML_BASELINE;
487*b1cdbd2cSJim Jagielski break;
488*b1cdbd2cSJim Jagielski case VertOrientation::LINE_TOP:
489*b1cdbd2cSJim Jagielski case VertOrientation::LINE_CENTER:
490*b1cdbd2cSJim Jagielski case VertOrientation::LINE_BOTTOM:
491*b1cdbd2cSJim Jagielski eValue = XML_LINE;
492*b1cdbd2cSJim Jagielski break;
493*b1cdbd2cSJim Jagielski case VertOrientation::CHAR_TOP:
494*b1cdbd2cSJim Jagielski case VertOrientation::CHAR_CENTER:
495*b1cdbd2cSJim Jagielski case VertOrientation::CHAR_BOTTOM:
496*b1cdbd2cSJim Jagielski eValue = XML_CHAR;
497*b1cdbd2cSJim Jagielski break;
498*b1cdbd2cSJim Jagielski }
499*b1cdbd2cSJim Jagielski if( eValue != XML_TOKEN_INVALID )
500*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_VERTICAL_REL, eValue );
501*b1cdbd2cSJim Jagielski
502*b1cdbd2cSJim Jagielski if( nImageWidth > 0 )
503*b1cdbd2cSJim Jagielski {
504*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertMeasure( sBuffer, nImageWidth );
505*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_FO, XML_WIDTH,
506*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski
509*b1cdbd2cSJim Jagielski if( nImageHeight > 0 )
510*b1cdbd2cSJim Jagielski {
511*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertMeasure( sBuffer, nImageHeight );
512*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_FO, XML_HEIGHT,
513*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
514*b1cdbd2cSJim Jagielski }
515*b1cdbd2cSJim Jagielski }
516*b1cdbd2cSJim Jagielski
517*b1cdbd2cSJim Jagielski // --> OD 2008-01-16 #newlistlevelattrs#
518*b1cdbd2cSJim Jagielski // if( GetExport().GetAttrList().getLength() > 0 )
519*b1cdbd2cSJim Jagielski {
520*b1cdbd2cSJim Jagielski SvXMLElementExport aElement( GetExport(), XML_NAMESPACE_STYLE,
521*b1cdbd2cSJim Jagielski XML_LIST_LEVEL_PROPERTIES, sal_True, sal_True );
522*b1cdbd2cSJim Jagielski
523*b1cdbd2cSJim Jagielski // --> OD 2008-06-06 #i89178#
524*b1cdbd2cSJim Jagielski // check, if properties for position-and-space-mode LABEL_ALIGNMENT
525*b1cdbd2cSJim Jagielski // are allowed to be exported.
526*b1cdbd2cSJim Jagielski if ( ePosAndSpaceMode == PositionAndSpaceMode::LABEL_ALIGNMENT &&
527*b1cdbd2cSJim Jagielski mbExportPositionAndSpaceModeLabelAlignment )
528*b1cdbd2cSJim Jagielski // <--
529*b1cdbd2cSJim Jagielski {
530*b1cdbd2cSJim Jagielski enum XMLTokenEnum eValue = XML_LISTTAB;
531*b1cdbd2cSJim Jagielski if ( eLabelFollowedBy == LabelFollow::SPACE )
532*b1cdbd2cSJim Jagielski {
533*b1cdbd2cSJim Jagielski eValue = XML_SPACE;
534*b1cdbd2cSJim Jagielski }
535*b1cdbd2cSJim Jagielski else if ( eLabelFollowedBy == LabelFollow::NOTHING )
536*b1cdbd2cSJim Jagielski {
537*b1cdbd2cSJim Jagielski eValue = XML_NOTHING;
538*b1cdbd2cSJim Jagielski }
539*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT,
540*b1cdbd2cSJim Jagielski XML_LABEL_FOLLOWED_BY, eValue );
541*b1cdbd2cSJim Jagielski
542*b1cdbd2cSJim Jagielski if ( eLabelFollowedBy == LabelFollow::LISTTAB &&
543*b1cdbd2cSJim Jagielski nListtabStopPosition > 0 )
544*b1cdbd2cSJim Jagielski {
545*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertMeasure( sBuffer, nListtabStopPosition );
546*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT,
547*b1cdbd2cSJim Jagielski XML_LIST_TAB_STOP_POSITION,
548*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
549*b1cdbd2cSJim Jagielski }
550*b1cdbd2cSJim Jagielski
551*b1cdbd2cSJim Jagielski if ( nFirstLineIndent != 0 )
552*b1cdbd2cSJim Jagielski {
553*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertMeasure( sBuffer, nFirstLineIndent );
554*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_FO,
555*b1cdbd2cSJim Jagielski XML_TEXT_INDENT,
556*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski
559*b1cdbd2cSJim Jagielski if ( nIndentAt != 0 )
560*b1cdbd2cSJim Jagielski {
561*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertMeasure( sBuffer, nIndentAt );
562*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_FO,
563*b1cdbd2cSJim Jagielski XML_MARGIN_LEFT,
564*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
565*b1cdbd2cSJim Jagielski }
566*b1cdbd2cSJim Jagielski
567*b1cdbd2cSJim Jagielski SvXMLElementExport aLabelAlignmentElement( GetExport(), XML_NAMESPACE_STYLE,
568*b1cdbd2cSJim Jagielski XML_LIST_LEVEL_LABEL_ALIGNMENT,
569*b1cdbd2cSJim Jagielski sal_True, sal_True );
570*b1cdbd2cSJim Jagielski }
571*b1cdbd2cSJim Jagielski }
572*b1cdbd2cSJim Jagielski // <--
573*b1cdbd2cSJim Jagielski
574*b1cdbd2cSJim Jagielski if( NumberingType::CHAR_SPECIAL == eType )
575*b1cdbd2cSJim Jagielski {
576*b1cdbd2cSJim Jagielski if( sBulletFontName.getLength() )
577*b1cdbd2cSJim Jagielski {
578*b1cdbd2cSJim Jagielski OUString sStyleName =
579*b1cdbd2cSJim Jagielski GetExport().GetFontAutoStylePool()->Find(
580*b1cdbd2cSJim Jagielski sBulletFontName, sBulletFontStyleName,
581*b1cdbd2cSJim Jagielski eBulletFontFamily, eBulletFontPitch,
582*b1cdbd2cSJim Jagielski eBulletFontEncoding );
583*b1cdbd2cSJim Jagielski
584*b1cdbd2cSJim Jagielski if( sStyleName.getLength() )
585*b1cdbd2cSJim Jagielski {
586*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE,
587*b1cdbd2cSJim Jagielski XML_FONT_NAME,
588*b1cdbd2cSJim Jagielski sStyleName );
589*b1cdbd2cSJim Jagielski }
590*b1cdbd2cSJim Jagielski else
591*b1cdbd2cSJim Jagielski {
592*b1cdbd2cSJim Jagielski Any aAny;
593*b1cdbd2cSJim Jagielski OUString sTemp;
594*b1cdbd2cSJim Jagielski
595*b1cdbd2cSJim Jagielski const SvXMLUnitConverter& rUnitConv =
596*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter();
597*b1cdbd2cSJim Jagielski XMLFontFamilyNamePropHdl aFamilyNameHdl;
598*b1cdbd2cSJim Jagielski aAny <<= sBulletFontName;
599*b1cdbd2cSJim Jagielski if( aFamilyNameHdl.exportXML( sTemp, aAny, rUnitConv ) )
600*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_FO,
601*b1cdbd2cSJim Jagielski XML_FONT_FAMILY, sTemp );
602*b1cdbd2cSJim Jagielski
603*b1cdbd2cSJim Jagielski if( sBulletFontStyleName.getLength() )
604*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE,
605*b1cdbd2cSJim Jagielski XML_FONT_STYLE_NAME,
606*b1cdbd2cSJim Jagielski sBulletFontStyleName );
607*b1cdbd2cSJim Jagielski
608*b1cdbd2cSJim Jagielski XMLFontFamilyPropHdl aFamilyHdl;
609*b1cdbd2cSJim Jagielski aAny <<= (sal_Int16)eBulletFontFamily;
610*b1cdbd2cSJim Jagielski if( aFamilyHdl.exportXML( sTemp, aAny, rUnitConv ) )
611*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE,
612*b1cdbd2cSJim Jagielski XML_FONT_FAMILY_GENERIC,
613*b1cdbd2cSJim Jagielski sTemp );
614*b1cdbd2cSJim Jagielski
615*b1cdbd2cSJim Jagielski XMLFontPitchPropHdl aPitchHdl;
616*b1cdbd2cSJim Jagielski aAny <<= (sal_Int16)eBulletFontPitch;
617*b1cdbd2cSJim Jagielski if( aPitchHdl.exportXML( sTemp, aAny, rUnitConv ) )
618*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE,
619*b1cdbd2cSJim Jagielski XML_FONT_PITCH, sTemp );
620*b1cdbd2cSJim Jagielski
621*b1cdbd2cSJim Jagielski XMLFontEncodingPropHdl aEncHdl;
622*b1cdbd2cSJim Jagielski aAny <<= (sal_Int16)eBulletFontEncoding;
623*b1cdbd2cSJim Jagielski if( aEncHdl.exportXML( sTemp, aAny, rUnitConv ) )
624*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE,
625*b1cdbd2cSJim Jagielski XML_FONT_CHARSET, sTemp );
626*b1cdbd2cSJim Jagielski }
627*b1cdbd2cSJim Jagielski }
628*b1cdbd2cSJim Jagielski }
629*b1cdbd2cSJim Jagielski if( NumberingType::BITMAP != eType )
630*b1cdbd2cSJim Jagielski {
631*b1cdbd2cSJim Jagielski // fo:color = "#..."
632*b1cdbd2cSJim Jagielski if( bHasColor )
633*b1cdbd2cSJim Jagielski {
634*b1cdbd2cSJim Jagielski const Color aColor( nColor );
635*b1cdbd2cSJim Jagielski if( aColor.GetColor() == 0xffffffff )
636*b1cdbd2cSJim Jagielski {
637*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_USE_WINDOW_FONT_COLOR, XML_TRUE );
638*b1cdbd2cSJim Jagielski }
639*b1cdbd2cSJim Jagielski else
640*b1cdbd2cSJim Jagielski {
641*b1cdbd2cSJim Jagielski SvXMLUnitConverter::convertColor( sBuffer, aColor );
642*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_FO, XML_COLOR,
643*b1cdbd2cSJim Jagielski sBuffer.makeStringAndClear() );
644*b1cdbd2cSJim Jagielski }
645*b1cdbd2cSJim Jagielski }
646*b1cdbd2cSJim Jagielski // fo:height="...%"
647*b1cdbd2cSJim Jagielski if( nBullRelSize )
648*b1cdbd2cSJim Jagielski {
649*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertPercent( sTmp, nBullRelSize );
650*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_FO, XML_FONT_SIZE,
651*b1cdbd2cSJim Jagielski sTmp.makeStringAndClear() );
652*b1cdbd2cSJim Jagielski }
653*b1cdbd2cSJim Jagielski }
654*b1cdbd2cSJim Jagielski if( GetExport().GetAttrList().getLength() > 0 )
655*b1cdbd2cSJim Jagielski {
656*b1cdbd2cSJim Jagielski SvXMLElementExport aElement( GetExport(), XML_NAMESPACE_STYLE,
657*b1cdbd2cSJim Jagielski XML_TEXT_PROPERTIES, sal_True, sal_True );
658*b1cdbd2cSJim Jagielski }
659*b1cdbd2cSJim Jagielski if( NumberingType::BITMAP == eType && sImageURL.getLength() )
660*b1cdbd2cSJim Jagielski {
661*b1cdbd2cSJim Jagielski // optional office:binary-data
662*b1cdbd2cSJim Jagielski GetExport().AddEmbeddedGraphicObjectAsBase64( sImageURL );
663*b1cdbd2cSJim Jagielski }
664*b1cdbd2cSJim Jagielski }
665*b1cdbd2cSJim Jagielski }
666*b1cdbd2cSJim Jagielski
667*b1cdbd2cSJim Jagielski
GetUNONumRule() const668*b1cdbd2cSJim Jagielski uno::Reference< ::com::sun::star::container::XIndexReplace > SvxXMLNumRuleExport::GetUNONumRule() const
669*b1cdbd2cSJim Jagielski {
670*b1cdbd2cSJim Jagielski return uno::Reference< ::com::sun::star::container::XIndexReplace > ();
671*b1cdbd2cSJim Jagielski }
672*b1cdbd2cSJim Jagielski
AddListStyleAttributes()673*b1cdbd2cSJim Jagielski void SvxXMLNumRuleExport::AddListStyleAttributes()
674*b1cdbd2cSJim Jagielski {
675*b1cdbd2cSJim Jagielski }
676*b1cdbd2cSJim Jagielski
677*b1cdbd2cSJim Jagielski
SvxXMLNumRuleExport(SvXMLExport & rExp)678*b1cdbd2cSJim Jagielski SvxXMLNumRuleExport::SvxXMLNumRuleExport( SvXMLExport& rExp ) :
679*b1cdbd2cSJim Jagielski rExport( rExp ),
680*b1cdbd2cSJim Jagielski sNumberingRules( RTL_CONSTASCII_USTRINGPARAM( "NumberingRules" ) ),
681*b1cdbd2cSJim Jagielski sIsPhysical( RTL_CONSTASCII_USTRINGPARAM( "IsPhysical" ) ),
682*b1cdbd2cSJim Jagielski sIsContinuousNumbering( RTL_CONSTASCII_USTRINGPARAM( "IsContinuousNumbering" ) ),
683*b1cdbd2cSJim Jagielski // --> OD 2008-06-06 #i89178#
684*b1cdbd2cSJim Jagielski mbExportPositionAndSpaceModeLabelAlignment( true )
685*b1cdbd2cSJim Jagielski // <--
686*b1cdbd2cSJim Jagielski {
687*b1cdbd2cSJim Jagielski switch ( GetExport().getDefaultVersion() )
688*b1cdbd2cSJim Jagielski {
689*b1cdbd2cSJim Jagielski case SvtSaveOptions::ODFVER_010:
690*b1cdbd2cSJim Jagielski case SvtSaveOptions::ODFVER_011:
691*b1cdbd2cSJim Jagielski {
692*b1cdbd2cSJim Jagielski mbExportPositionAndSpaceModeLabelAlignment = false;
693*b1cdbd2cSJim Jagielski }
694*b1cdbd2cSJim Jagielski break;
695*b1cdbd2cSJim Jagielski default: // ODFVER_UNKNOWN or ODFVER_012
696*b1cdbd2cSJim Jagielski {
697*b1cdbd2cSJim Jagielski mbExportPositionAndSpaceModeLabelAlignment = true;
698*b1cdbd2cSJim Jagielski }
699*b1cdbd2cSJim Jagielski }
700*b1cdbd2cSJim Jagielski }
701*b1cdbd2cSJim Jagielski
~SvxXMLNumRuleExport()702*b1cdbd2cSJim Jagielski SvxXMLNumRuleExport::~SvxXMLNumRuleExport()
703*b1cdbd2cSJim Jagielski {
704*b1cdbd2cSJim Jagielski }
705*b1cdbd2cSJim Jagielski
706*b1cdbd2cSJim Jagielski // --> OD 2008-06-17 #i90780#
707*b1cdbd2cSJim Jagielski // refactoring: removing unused methods
708*b1cdbd2cSJim Jagielski //void SvxXMLNumRuleExport::Export( const OUString& rName,
709*b1cdbd2cSJim Jagielski // sal_Bool bContNumbering )
710*b1cdbd2cSJim Jagielski //{
711*b1cdbd2cSJim Jagielski // GetExport().CheckAttrList();
712*b1cdbd2cSJim Jagielski
713*b1cdbd2cSJim Jagielski // // style:name="..."
714*b1cdbd2cSJim Jagielski // if( rName.getLength() )
715*b1cdbd2cSJim Jagielski // {
716*b1cdbd2cSJim Jagielski // sal_Bool bEncoded = sal_False;
717*b1cdbd2cSJim Jagielski // GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_NAME,
718*b1cdbd2cSJim Jagielski // GetExport().EncodeStyleName( rName, &bEncoded ) );
719*b1cdbd2cSJim Jagielski // if( bEncoded )
720*b1cdbd2cSJim Jagielski // GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_DISPLAY_NAME,
721*b1cdbd2cSJim Jagielski // rName);
722*b1cdbd2cSJim Jagielski // }
723*b1cdbd2cSJim Jagielski
724*b1cdbd2cSJim Jagielski // // text:consecutive-numbering="..."
725*b1cdbd2cSJim Jagielski // if( bContNumbering )
726*b1cdbd2cSJim Jagielski // GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_CONSECUTIVE_NUMBERING,
727*b1cdbd2cSJim Jagielski // XML_TRUE );
728*b1cdbd2cSJim Jagielski
729*b1cdbd2cSJim Jagielski // // other application specific attributes
730*b1cdbd2cSJim Jagielski // AddListStyleAttributes();
731*b1cdbd2cSJim Jagielski
732*b1cdbd2cSJim Jagielski // OUString sElem = GetExport().GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TEXT,
733*b1cdbd2cSJim Jagielski // GetXMLToken(XML_LIST_STYLE) );
734*b1cdbd2cSJim Jagielski // GetExport().IgnorableWhitespace();
735*b1cdbd2cSJim Jagielski // GetExport().StartElement( XML_NAMESPACE_TEXT, XML_LIST_STYLE, sal_False );
736*b1cdbd2cSJim Jagielski
737*b1cdbd2cSJim Jagielski // uno::Reference< ::com::sun::star::container::XIndexReplace > xNumRule = GetUNONumRule();
738*b1cdbd2cSJim Jagielski // if( xNumRule.is() )
739*b1cdbd2cSJim Jagielski // exportLevelStyles( xNumRule );
740*b1cdbd2cSJim Jagielski
741*b1cdbd2cSJim Jagielski // GetExport().EndElement( XML_NAMESPACE_TEXT, XML_LIST_STYLE, sal_True );
742*b1cdbd2cSJim Jagielski //}
743*b1cdbd2cSJim Jagielski
744*b1cdbd2cSJim Jagielski //void SvxXMLNumRuleExport::ExportOutline()
745*b1cdbd2cSJim Jagielski //{
746*b1cdbd2cSJim Jagielski // GetExport().IgnorableWhitespace( );
747*b1cdbd2cSJim Jagielski // GetExport().StartElement( XML_NAMESPACE_TEXT, XML_OUTLINE_STYLE, sal_False );
748*b1cdbd2cSJim Jagielski
749*b1cdbd2cSJim Jagielski // uno::Reference< ::com::sun::star::container::XIndexReplace > xNumRule = GetUNONumRule();
750*b1cdbd2cSJim Jagielski // if( xNumRule.is() )
751*b1cdbd2cSJim Jagielski // exportLevelStyles( xNumRule, sal_True );
752*b1cdbd2cSJim Jagielski
753*b1cdbd2cSJim Jagielski // GetExport().EndElement( XML_NAMESPACE_TEXT, XML_OUTLINE_STYLE, sal_True );
754*b1cdbd2cSJim Jagielski //}
755*b1cdbd2cSJim Jagielski // <--
756*b1cdbd2cSJim Jagielski
exportNumberingRule(const OUString & rName,const Reference<XIndexReplace> & rNumRule)757*b1cdbd2cSJim Jagielski void SvxXMLNumRuleExport::exportNumberingRule(
758*b1cdbd2cSJim Jagielski const OUString& rName,
759*b1cdbd2cSJim Jagielski const Reference< XIndexReplace >& rNumRule )
760*b1cdbd2cSJim Jagielski {
761*b1cdbd2cSJim Jagielski Reference< XPropertySet > xPropSet( rNumRule, UNO_QUERY );
762*b1cdbd2cSJim Jagielski Reference< XPropertySetInfo > xPropSetInfo;
763*b1cdbd2cSJim Jagielski if( xPropSet.is() )
764*b1cdbd2cSJim Jagielski xPropSetInfo = xPropSet->getPropertySetInfo();
765*b1cdbd2cSJim Jagielski
766*b1cdbd2cSJim Jagielski GetExport().CheckAttrList();
767*b1cdbd2cSJim Jagielski
768*b1cdbd2cSJim Jagielski // style:name="..."
769*b1cdbd2cSJim Jagielski if( rName.getLength() )
770*b1cdbd2cSJim Jagielski {
771*b1cdbd2cSJim Jagielski sal_Bool bEncoded = sal_False;
772*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_NAME,
773*b1cdbd2cSJim Jagielski GetExport().EncodeStyleName( rName, &bEncoded ) );
774*b1cdbd2cSJim Jagielski if( bEncoded )
775*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_DISPLAY_NAME,
776*b1cdbd2cSJim Jagielski rName);
777*b1cdbd2cSJim Jagielski }
778*b1cdbd2cSJim Jagielski
779*b1cdbd2cSJim Jagielski // text:consecutive-numbering="..."
780*b1cdbd2cSJim Jagielski sal_Bool bContNumbering = sal_False;
781*b1cdbd2cSJim Jagielski if( xPropSetInfo.is() &&
782*b1cdbd2cSJim Jagielski xPropSetInfo->hasPropertyByName( sIsContinuousNumbering ) )
783*b1cdbd2cSJim Jagielski {
784*b1cdbd2cSJim Jagielski Any aAny( xPropSet->getPropertyValue( sIsContinuousNumbering ) );
785*b1cdbd2cSJim Jagielski bContNumbering = *(sal_Bool *)aAny.getValue();
786*b1cdbd2cSJim Jagielski }
787*b1cdbd2cSJim Jagielski if( bContNumbering )
788*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT,
789*b1cdbd2cSJim Jagielski XML_CONSECUTIVE_NUMBERING, XML_TRUE );
790*b1cdbd2cSJim Jagielski
791*b1cdbd2cSJim Jagielski // other application specific attributes
792*b1cdbd2cSJim Jagielski AddListStyleAttributes();
793*b1cdbd2cSJim Jagielski
794*b1cdbd2cSJim Jagielski {
795*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_TEXT, XML_LIST_STYLE ,
796*b1cdbd2cSJim Jagielski sal_True, sal_True );
797*b1cdbd2cSJim Jagielski exportLevelStyles( rNumRule );
798*b1cdbd2cSJim Jagielski }
799*b1cdbd2cSJim Jagielski }
800*b1cdbd2cSJim Jagielski
exportStyle(const Reference<XStyle> & rStyle)801*b1cdbd2cSJim Jagielski sal_Bool SvxXMLNumRuleExport::exportStyle( const Reference< XStyle >& rStyle )
802*b1cdbd2cSJim Jagielski {
803*b1cdbd2cSJim Jagielski Reference< XPropertySet > xPropSet( rStyle, UNO_QUERY );
804*b1cdbd2cSJim Jagielski Reference< XPropertySetInfo > xPropSetInfo = xPropSet->getPropertySetInfo();
805*b1cdbd2cSJim Jagielski
806*b1cdbd2cSJim Jagielski Any aAny;
807*b1cdbd2cSJim Jagielski
808*b1cdbd2cSJim Jagielski // Don't export styles that aren't existing really. This may be the
809*b1cdbd2cSJim Jagielski // case for StarOffice Writer's pool styles.
810*b1cdbd2cSJim Jagielski if( xPropSetInfo->hasPropertyByName( sIsPhysical ) )
811*b1cdbd2cSJim Jagielski {
812*b1cdbd2cSJim Jagielski aAny = xPropSet->getPropertyValue( sIsPhysical );
813*b1cdbd2cSJim Jagielski if( !*(sal_Bool *)aAny.getValue() )
814*b1cdbd2cSJim Jagielski return sal_False;
815*b1cdbd2cSJim Jagielski }
816*b1cdbd2cSJim Jagielski
817*b1cdbd2cSJim Jagielski aAny = xPropSet->getPropertyValue( sNumberingRules );
818*b1cdbd2cSJim Jagielski Reference<XIndexReplace> xNumRule;
819*b1cdbd2cSJim Jagielski aAny >>= xNumRule;
820*b1cdbd2cSJim Jagielski
821*b1cdbd2cSJim Jagielski OUString sName = rStyle->getName();
822*b1cdbd2cSJim Jagielski
823*b1cdbd2cSJim Jagielski exportNumberingRule( sName, xNumRule );
824*b1cdbd2cSJim Jagielski
825*b1cdbd2cSJim Jagielski return sal_True;
826*b1cdbd2cSJim Jagielski }
827*b1cdbd2cSJim Jagielski
exportOutline()828*b1cdbd2cSJim Jagielski void SvxXMLNumRuleExport::exportOutline()
829*b1cdbd2cSJim Jagielski {
830*b1cdbd2cSJim Jagielski Reference< XChapterNumberingSupplier > xCNSupplier( GetExport().GetModel(),
831*b1cdbd2cSJim Jagielski UNO_QUERY );
832*b1cdbd2cSJim Jagielski DBG_ASSERT( xCNSupplier.is(), "no chapter numbering supplier" );
833*b1cdbd2cSJim Jagielski
834*b1cdbd2cSJim Jagielski if( xCNSupplier.is() )
835*b1cdbd2cSJim Jagielski {
836*b1cdbd2cSJim Jagielski Reference< XIndexReplace > xNumRule( xCNSupplier->getChapterNumberingRules() );
837*b1cdbd2cSJim Jagielski DBG_ASSERT( xNumRule.is(), "no chapter numbering rules" );
838*b1cdbd2cSJim Jagielski
839*b1cdbd2cSJim Jagielski if( xNumRule.is() )
840*b1cdbd2cSJim Jagielski {
841*b1cdbd2cSJim Jagielski // --> OD 2008-06-17 #i90780#
842*b1cdbd2cSJim Jagielski // Outline style has property style:name since ODF 1.2
843*b1cdbd2cSJim Jagielski // Thus, export this property and adjust fix for issue #i69627#
844*b1cdbd2cSJim Jagielski OUString sOutlineStyleName;
845*b1cdbd2cSJim Jagielski {
846*b1cdbd2cSJim Jagielski Reference<XPropertySet> xNumRulePropSet(
847*b1cdbd2cSJim Jagielski xCNSupplier->getChapterNumberingRules(), UNO_QUERY );
848*b1cdbd2cSJim Jagielski if (xNumRulePropSet.is())
849*b1cdbd2cSJim Jagielski {
850*b1cdbd2cSJim Jagielski const OUString sName( RTL_CONSTASCII_USTRINGPARAM("Name") );
851*b1cdbd2cSJim Jagielski xNumRulePropSet->getPropertyValue( sName ) >>= sOutlineStyleName;
852*b1cdbd2cSJim Jagielski }
853*b1cdbd2cSJim Jagielski }
854*b1cdbd2cSJim Jagielski const SvtSaveOptions::ODFDefaultVersion nODFVersion =
855*b1cdbd2cSJim Jagielski GetExport().getDefaultVersion();
856*b1cdbd2cSJim Jagielski if ( ( nODFVersion == SvtSaveOptions::ODFVER_010 ||
857*b1cdbd2cSJim Jagielski nODFVersion == SvtSaveOptions::ODFVER_011 ) &&
858*b1cdbd2cSJim Jagielski GetExport().writeOutlineStyleAsNormalListStyle() )
859*b1cdbd2cSJim Jagielski {
860*b1cdbd2cSJim Jagielski exportNumberingRule( sOutlineStyleName, xNumRule );
861*b1cdbd2cSJim Jagielski }
862*b1cdbd2cSJim Jagielski else
863*b1cdbd2cSJim Jagielski {
864*b1cdbd2cSJim Jagielski if ( nODFVersion != SvtSaveOptions::ODFVER_010 &&
865*b1cdbd2cSJim Jagielski nODFVersion != SvtSaveOptions::ODFVER_011 )
866*b1cdbd2cSJim Jagielski {
867*b1cdbd2cSJim Jagielski // style:name="..."
868*b1cdbd2cSJim Jagielski GetExport().CheckAttrList();
869*b1cdbd2cSJim Jagielski if ( sOutlineStyleName.getLength() > 0 )
870*b1cdbd2cSJim Jagielski {
871*b1cdbd2cSJim Jagielski sal_Bool bEncoded = sal_False;
872*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE, XML_NAME,
873*b1cdbd2cSJim Jagielski GetExport().EncodeStyleName( sOutlineStyleName,
874*b1cdbd2cSJim Jagielski &bEncoded ) );
875*b1cdbd2cSJim Jagielski if( bEncoded )
876*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE,
877*b1cdbd2cSJim Jagielski XML_DISPLAY_NAME,
878*b1cdbd2cSJim Jagielski sOutlineStyleName );
879*b1cdbd2cSJim Jagielski }
880*b1cdbd2cSJim Jagielski }
881*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_TEXT,
882*b1cdbd2cSJim Jagielski XML_OUTLINE_STYLE, sal_True, sal_True );
883*b1cdbd2cSJim Jagielski exportLevelStyles( xNumRule, sal_True );
884*b1cdbd2cSJim Jagielski }
885*b1cdbd2cSJim Jagielski }
886*b1cdbd2cSJim Jagielski }
887*b1cdbd2cSJim Jagielski }
888*b1cdbd2cSJim Jagielski
exportStyles(sal_Bool bUsed,XMLTextListAutoStylePool * pPool,sal_Bool bExportChapterNumbering)889*b1cdbd2cSJim Jagielski void SvxXMLNumRuleExport::exportStyles( sal_Bool bUsed,
890*b1cdbd2cSJim Jagielski XMLTextListAutoStylePool *pPool,
891*b1cdbd2cSJim Jagielski sal_Bool bExportChapterNumbering )
892*b1cdbd2cSJim Jagielski {
893*b1cdbd2cSJim Jagielski if( bExportChapterNumbering )
894*b1cdbd2cSJim Jagielski exportOutline();
895*b1cdbd2cSJim Jagielski
896*b1cdbd2cSJim Jagielski Reference< XStyleFamiliesSupplier > xFamiliesSupp( GetExport().GetModel(), UNO_QUERY );
897*b1cdbd2cSJim Jagielski DBG_ASSERT( xFamiliesSupp.is(), "No XStyleFamiliesSupplier from XModel for export!" );
898*b1cdbd2cSJim Jagielski if( xFamiliesSupp.is() )
899*b1cdbd2cSJim Jagielski {
900*b1cdbd2cSJim Jagielski Reference< XNameAccess > xFamilies( xFamiliesSupp->getStyleFamilies() );
901*b1cdbd2cSJim Jagielski DBG_ASSERT( xFamiliesSupp.is(), "getStyleFamilies() from XModel failed for export!" );
902*b1cdbd2cSJim Jagielski
903*b1cdbd2cSJim Jagielski if( xFamilies.is() )
904*b1cdbd2cSJim Jagielski {
905*b1cdbd2cSJim Jagielski const OUString aNumberStyleName( RTL_CONSTASCII_USTRINGPARAM( "NumberingStyles" ));
906*b1cdbd2cSJim Jagielski
907*b1cdbd2cSJim Jagielski Reference< XIndexAccess > xStyles;
908*b1cdbd2cSJim Jagielski if( xFamilies->hasByName( aNumberStyleName ) )
909*b1cdbd2cSJim Jagielski {
910*b1cdbd2cSJim Jagielski xFamilies->getByName( aNumberStyleName ) >>= xStyles;
911*b1cdbd2cSJim Jagielski
912*b1cdbd2cSJim Jagielski DBG_ASSERT( xStyles.is(), "Style not found for export!" );
913*b1cdbd2cSJim Jagielski
914*b1cdbd2cSJim Jagielski if( xStyles.is() )
915*b1cdbd2cSJim Jagielski {
916*b1cdbd2cSJim Jagielski const sal_Int32 nStyles = xStyles->getCount();
917*b1cdbd2cSJim Jagielski
918*b1cdbd2cSJim Jagielski for( sal_Int32 i=0; i < nStyles; i++ )
919*b1cdbd2cSJim Jagielski {
920*b1cdbd2cSJim Jagielski Reference< XStyle > xStyle;
921*b1cdbd2cSJim Jagielski xStyles->getByIndex( i ) >>= xStyle;
922*b1cdbd2cSJim Jagielski
923*b1cdbd2cSJim Jagielski if( !bUsed || xStyle->isInUse() )
924*b1cdbd2cSJim Jagielski {
925*b1cdbd2cSJim Jagielski exportStyle( xStyle );
926*b1cdbd2cSJim Jagielski if( pPool )
927*b1cdbd2cSJim Jagielski pPool->RegisterName( xStyle->getName() );
928*b1cdbd2cSJim Jagielski }
929*b1cdbd2cSJim Jagielski }
930*b1cdbd2cSJim Jagielski }
931*b1cdbd2cSJim Jagielski }
932*b1cdbd2cSJim Jagielski }
933*b1cdbd2cSJim Jagielski }
934*b1cdbd2cSJim Jagielski }
935*b1cdbd2cSJim Jagielski
GetOutlineStyles(XMLStringVector & rStyleNames,const::com::sun::star::uno::Reference<::com::sun::star::frame::XModel> & rModel)936*b1cdbd2cSJim Jagielski sal_Bool SvxXMLNumRuleExport::GetOutlineStyles( XMLStringVector& rStyleNames,
937*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference<
938*b1cdbd2cSJim Jagielski ::com::sun::star::frame::XModel > & rModel )
939*b1cdbd2cSJim Jagielski {
940*b1cdbd2cSJim Jagielski Reference< XChapterNumberingSupplier > xCNSupplier( rModel,
941*b1cdbd2cSJim Jagielski UNO_QUERY );
942*b1cdbd2cSJim Jagielski sal_Int32 nLevels = 0;
943*b1cdbd2cSJim Jagielski Reference< XIndexReplace > xNumRule;
944*b1cdbd2cSJim Jagielski if( xCNSupplier.is() )
945*b1cdbd2cSJim Jagielski {
946*b1cdbd2cSJim Jagielski xNumRule = xCNSupplier->getChapterNumberingRules();
947*b1cdbd2cSJim Jagielski if( xNumRule.is() )
948*b1cdbd2cSJim Jagielski nLevels = xNumRule->getCount();
949*b1cdbd2cSJim Jagielski }
950*b1cdbd2cSJim Jagielski
951*b1cdbd2cSJim Jagielski rStyleNames.resize( nLevels );
952*b1cdbd2cSJim Jagielski for( sal_Int32 i=0; i<nLevels; i++ )
953*b1cdbd2cSJim Jagielski {
954*b1cdbd2cSJim Jagielski uno::Any aEntry( xNumRule->getByIndex( i ) );
955*b1cdbd2cSJim Jagielski uno::Sequence<beans::PropertyValue> aSeq;
956*b1cdbd2cSJim Jagielski if( aEntry >>= aSeq )
957*b1cdbd2cSJim Jagielski {
958*b1cdbd2cSJim Jagielski const sal_Int32 nCount = aSeq.getLength();
959*b1cdbd2cSJim Jagielski const beans::PropertyValue* pPropArray = aSeq.getConstArray();
960*b1cdbd2cSJim Jagielski for( sal_Int32 j=0; j<nCount; j++ )
961*b1cdbd2cSJim Jagielski {
962*b1cdbd2cSJim Jagielski const beans::PropertyValue& rProp = pPropArray[j];
963*b1cdbd2cSJim Jagielski
964*b1cdbd2cSJim Jagielski if( rProp.Name.equalsAsciiL(
965*b1cdbd2cSJim Jagielski XML_UNO_NAME_NRULE_HEADING_STYLE_NAME,
966*b1cdbd2cSJim Jagielski sizeof(XML_UNO_NAME_NRULE_HEADING_STYLE_NAME)-1 ) )
967*b1cdbd2cSJim Jagielski {
968*b1cdbd2cSJim Jagielski rProp.Value >>= rStyleNames[i];
969*b1cdbd2cSJim Jagielski break;
970*b1cdbd2cSJim Jagielski }
971*b1cdbd2cSJim Jagielski }
972*b1cdbd2cSJim Jagielski }
973*b1cdbd2cSJim Jagielski }
974*b1cdbd2cSJim Jagielski
975*b1cdbd2cSJim Jagielski return nLevels != 0;
976*b1cdbd2cSJim Jagielski }
977