1efeef26fSAndrew Rist /**************************************************************
2*7114c7e9Smseidel *
3efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file
5efeef26fSAndrew Rist * distributed with this work for additional information
6efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file
7efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the
8efeef26fSAndrew Rist * "License"); you may not use this file except in compliance
9efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at
10*7114c7e9Smseidel *
11efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12*7114c7e9Smseidel *
13efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing,
14efeef26fSAndrew Rist * software distributed under the License is distributed on an
15efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16efeef26fSAndrew Rist * KIND, either express or implied. See the License for the
17efeef26fSAndrew Rist * specific language governing permissions and limitations
18efeef26fSAndrew Rist * under the License.
19*7114c7e9Smseidel *
20efeef26fSAndrew Rist *************************************************************/
21efeef26fSAndrew Rist
22efeef26fSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir
28cdf0e10cSrcweir #include <tools/resid.hxx>
29cdf0e10cSrcweir #include <tools/stream.hxx>
30cdf0e10cSrcweir #include <tools/shl.hxx>
31cdf0e10cSrcweir #include <vcl/svapp.hxx>
32cdf0e10cSrcweir #include <sfx2/docfile.hxx>
33cdf0e10cSrcweir #include <svl/urihelper.hxx>
34cdf0e10cSrcweir #include <svl/zforlist.hxx>
35cdf0e10cSrcweir #include <svl/zformat.hxx>
36cdf0e10cSrcweir #include <unotools/pathoptions.hxx>
37cdf0e10cSrcweir #include <sfx2/app.hxx>
38cdf0e10cSrcweir #include <svx/dialmgr.hxx>
39cdf0e10cSrcweir #ifndef _SVX_DIALOGS_HRC
40cdf0e10cSrcweir #include <svx/dialogs.hrc>
41cdf0e10cSrcweir #endif
42cdf0e10cSrcweir
43cdf0e10cSrcweir #define READ_OLDVERS // erstmal noch alte Versionen lesen
44cdf0e10cSrcweir #include <swtypes.hxx>
45cdf0e10cSrcweir #include <doc.hxx>
46cdf0e10cSrcweir #include <poolfmt.hxx>
47cdf0e10cSrcweir #include <tblafmt.hxx>
48cdf0e10cSrcweir #include <cellatr.hxx>
49cdf0e10cSrcweir #include <SwStyleNameMapper.hxx>
50cdf0e10cSrcweir
51cdf0e10cSrcweir // bis SO5PF
52cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_X = 9501;
53cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_358 = 9601;
54cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_X = 9502;
55cdf0e10cSrcweir
56cdf0e10cSrcweir // ab SO5
57cdf0e10cSrcweir //! in nachfolgenden Versionen muss der Betrag dieser IDs groesser sein
58cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_504 = 9801;
59cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_504 = 9802;
60cdf0e10cSrcweir
61cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_552 = 9901;
62cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_552 = 9902;
63cdf0e10cSrcweir
64cdf0e10cSrcweir // --- from 641 on: CJK and CTL font settings
65cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_641 = 10001;
66cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_641 = 10002;
67cdf0e10cSrcweir
68cdf0e10cSrcweir // --- from 680/dr14 on: diagonal frame lines
69cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_680DR14 = 10011;
70cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_680DR14 = 10012;
71cdf0e10cSrcweir
72cdf0e10cSrcweir // --- from 680/dr25 on: #21549# store strings as UTF-8
73cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_680DR25 = 10021;
74cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_680DR25 = 10022;
75cdf0e10cSrcweir
76cdf0e10cSrcweir // --- from DEV300/overline2 on: #5991# overline
77cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_300OVRLN = 10031;
78cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_300OVRLN = 10032;
79cdf0e10cSrcweir
80cdf0e10cSrcweir // current version
81cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID = AUTOFORMAT_ID_300OVRLN;
82cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID = AUTOFORMAT_DATA_ID_300OVRLN;
83cdf0e10cSrcweir
84cdf0e10cSrcweir
85cdf0e10cSrcweir #ifdef READ_OLDVERS
86cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_OLD_ID = 8201;
87cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_OLD_ID1 = 8301;
88cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_OLD_DATA_ID = 8202;
89cdf0e10cSrcweir #endif
90cdf0e10cSrcweir
91cdf0e10cSrcweir
92cdf0e10cSrcweir SwBoxAutoFmt* SwTableAutoFmt::pDfltBoxAutoFmt = 0;
93cdf0e10cSrcweir
94cdf0e10cSrcweir #define sAutoTblFmtName "autotbl.fmt"
95cdf0e10cSrcweir
96cdf0e10cSrcweir // SwTable Auto-Format-Tabelle
97cdf0e10cSrcweir SV_IMPL_PTRARR( _SwTableAutoFmtTbl, SwTableAutoFmt* )
98cdf0e10cSrcweir
99cdf0e10cSrcweir
100cdf0e10cSrcweir // Struct mit Versionsnummern der Items
101cdf0e10cSrcweir
102cdf0e10cSrcweir struct SwAfVersions
103cdf0e10cSrcweir {
104cdf0e10cSrcweir public:
105cdf0e10cSrcweir sal_uInt16 nFontVersion;
106cdf0e10cSrcweir sal_uInt16 nFontHeightVersion;
107cdf0e10cSrcweir sal_uInt16 nWeightVersion;
108cdf0e10cSrcweir sal_uInt16 nPostureVersion;
109cdf0e10cSrcweir sal_uInt16 nUnderlineVersion;
110cdf0e10cSrcweir sal_uInt16 nOverlineVersion;
111cdf0e10cSrcweir sal_uInt16 nCrossedOutVersion;
112cdf0e10cSrcweir sal_uInt16 nContourVersion;
113cdf0e10cSrcweir sal_uInt16 nShadowedVersion;
114cdf0e10cSrcweir sal_uInt16 nColorVersion;
115cdf0e10cSrcweir sal_uInt16 nBoxVersion;
116*7114c7e9Smseidel sal_uInt16 nLineVersion;
117cdf0e10cSrcweir sal_uInt16 nBrushVersion;
118cdf0e10cSrcweir
119cdf0e10cSrcweir sal_uInt16 nAdjustVersion;
120cdf0e10cSrcweir
121cdf0e10cSrcweir sal_uInt16 nHorJustifyVersion;
122cdf0e10cSrcweir sal_uInt16 nVerJustifyVersion;
123cdf0e10cSrcweir sal_uInt16 nOrientationVersion;
124cdf0e10cSrcweir sal_uInt16 nMarginVersion;
125cdf0e10cSrcweir sal_uInt16 nBoolVersion;
126cdf0e10cSrcweir sal_uInt16 nInt32Version;
127cdf0e10cSrcweir sal_uInt16 nRotateModeVersion;
128cdf0e10cSrcweir
129cdf0e10cSrcweir sal_uInt16 nNumFmtVersion;
130cdf0e10cSrcweir
131cdf0e10cSrcweir SwAfVersions();
132cdf0e10cSrcweir void Load( SvStream& rStream, sal_uInt16 nVer );
133cdf0e10cSrcweir };
134cdf0e10cSrcweir
SwAfVersions()135cdf0e10cSrcweir SwAfVersions::SwAfVersions() :
136cdf0e10cSrcweir nFontVersion(0),
137cdf0e10cSrcweir nFontHeightVersion(0),
138cdf0e10cSrcweir nWeightVersion(0),
139cdf0e10cSrcweir nPostureVersion(0),
140cdf0e10cSrcweir nUnderlineVersion(0),
141cdf0e10cSrcweir nOverlineVersion(0),
142cdf0e10cSrcweir nCrossedOutVersion(0),
143cdf0e10cSrcweir nContourVersion(0),
144cdf0e10cSrcweir nShadowedVersion(0),
145cdf0e10cSrcweir nColorVersion(0),
146cdf0e10cSrcweir nBoxVersion(0),
147*7114c7e9Smseidel nLineVersion(0),
148cdf0e10cSrcweir nBrushVersion(0),
149cdf0e10cSrcweir nAdjustVersion(0),
150cdf0e10cSrcweir nHorJustifyVersion(0),
151cdf0e10cSrcweir nVerJustifyVersion(0),
152cdf0e10cSrcweir nOrientationVersion(0),
153cdf0e10cSrcweir nMarginVersion(0),
154cdf0e10cSrcweir nBoolVersion(0),
155cdf0e10cSrcweir nInt32Version(0),
156cdf0e10cSrcweir nRotateModeVersion(0),
157cdf0e10cSrcweir nNumFmtVersion(0)
158cdf0e10cSrcweir {
159cdf0e10cSrcweir }
160cdf0e10cSrcweir
Load(SvStream & rStream,sal_uInt16 nVer)161cdf0e10cSrcweir void SwAfVersions::Load( SvStream& rStream, sal_uInt16 nVer )
162cdf0e10cSrcweir {
163cdf0e10cSrcweir rStream >> nFontVersion;
164cdf0e10cSrcweir rStream >> nFontHeightVersion;
165cdf0e10cSrcweir rStream >> nWeightVersion;
166cdf0e10cSrcweir rStream >> nPostureVersion;
167cdf0e10cSrcweir rStream >> nUnderlineVersion;
168*7114c7e9Smseidel if ( nVer >= AUTOFORMAT_ID_300OVRLN )
169*7114c7e9Smseidel rStream >> nOverlineVersion;
170cdf0e10cSrcweir rStream >> nCrossedOutVersion;
171cdf0e10cSrcweir rStream >> nContourVersion;
172cdf0e10cSrcweir rStream >> nShadowedVersion;
173cdf0e10cSrcweir rStream >> nColorVersion;
174cdf0e10cSrcweir rStream >> nBoxVersion;
175*7114c7e9Smseidel if ( nVer >= AUTOFORMAT_ID_680DR14 )
176*7114c7e9Smseidel rStream >> nLineVersion;
177cdf0e10cSrcweir rStream >> nBrushVersion;
178cdf0e10cSrcweir rStream >> nAdjustVersion;
179cdf0e10cSrcweir rStream >> nHorJustifyVersion;
180cdf0e10cSrcweir rStream >> nVerJustifyVersion;
181cdf0e10cSrcweir rStream >> nOrientationVersion;
182cdf0e10cSrcweir rStream >> nMarginVersion;
183cdf0e10cSrcweir rStream >> nBoolVersion;
184cdf0e10cSrcweir if ( nVer >= AUTOFORMAT_ID_504 )
185cdf0e10cSrcweir {
186cdf0e10cSrcweir rStream >> nInt32Version;
187cdf0e10cSrcweir rStream >> nRotateModeVersion;
188cdf0e10cSrcweir }
189cdf0e10cSrcweir rStream >> nNumFmtVersion;
190cdf0e10cSrcweir }
191cdf0e10cSrcweir
192cdf0e10cSrcweir // ---------------------------------------------------------------------------
193cdf0e10cSrcweir
SwBoxAutoFmt()194cdf0e10cSrcweir SwBoxAutoFmt::SwBoxAutoFmt()
195cdf0e10cSrcweir : aFont( *(SvxFontItem*)GetDfltAttr( RES_CHRATR_FONT ) ),
196*7114c7e9Smseidel aHeight( 240, 100, RES_CHRATR_FONTSIZE ),
197*7114c7e9Smseidel aWeight( WEIGHT_NORMAL, RES_CHRATR_WEIGHT ),
198*7114c7e9Smseidel aPosture( ITALIC_NONE, RES_CHRATR_POSTURE ),
199*7114c7e9Smseidel
200*7114c7e9Smseidel aCJKFont( *(SvxFontItem*)GetDfltAttr( RES_CHRATR_CJK_FONT ) ),
201*7114c7e9Smseidel aCJKHeight( 240, 100, RES_CHRATR_CJK_FONTSIZE ),
202*7114c7e9Smseidel aCJKWeight( WEIGHT_NORMAL, RES_CHRATR_CJK_WEIGHT ),
203*7114c7e9Smseidel aCJKPosture( ITALIC_NONE, RES_CHRATR_CJK_POSTURE ),
204*7114c7e9Smseidel
205*7114c7e9Smseidel aCTLFont( *(SvxFontItem*)GetDfltAttr( RES_CHRATR_CTL_FONT ) ),
206*7114c7e9Smseidel aCTLHeight( 240, 100, RES_CHRATR_CTL_FONTSIZE ),
207*7114c7e9Smseidel aCTLWeight( WEIGHT_NORMAL, RES_CHRATR_CTL_WEIGHT ),
208*7114c7e9Smseidel aCTLPosture( ITALIC_NONE, RES_CHRATR_CTL_POSTURE ),
209*7114c7e9Smseidel
210*7114c7e9Smseidel aUnderline( UNDERLINE_NONE, RES_CHRATR_UNDERLINE ),
211*7114c7e9Smseidel aOverline( UNDERLINE_NONE, RES_CHRATR_OVERLINE ),
212*7114c7e9Smseidel aCrossedOut( STRIKEOUT_NONE, RES_CHRATR_CROSSEDOUT ),
213*7114c7e9Smseidel aContour( sal_False, RES_CHRATR_CONTOUR ),
214*7114c7e9Smseidel aShadowed( sal_False, RES_CHRATR_SHADOWED ),
215*7114c7e9Smseidel aColor( RES_CHRATR_COLOR ),
216*7114c7e9Smseidel aBox( RES_BOX ),
217*7114c7e9Smseidel aTLBR( 0 ),
218*7114c7e9Smseidel aBLTR( 0 ),
219*7114c7e9Smseidel aBackground( RES_BACKGROUND ),
220*7114c7e9Smseidel aAdjust( SVX_ADJUST_LEFT, RES_PARATR_ADJUST ),
221*7114c7e9Smseidel aHorJustify( SVX_HOR_JUSTIFY_STANDARD, 0),
222*7114c7e9Smseidel aVerJustify( SVX_VER_JUSTIFY_STANDARD, 0),
223*7114c7e9Smseidel aStacked( 0 ),
224*7114c7e9Smseidel aMargin( 0 ),
225*7114c7e9Smseidel aLinebreak( 0 ),
226*7114c7e9Smseidel aRotateAngle( 0 ),
227cdf0e10cSrcweir
228cdf0e10cSrcweir // FIXME - add attribute IDs for the diagonal line items
229cdf0e10cSrcweir // aTLBR( RES_... ),
230cdf0e10cSrcweir // aBLTR( RES_... ),
231cdf0e10cSrcweir aRotateMode( SVX_ROTATE_MODE_STANDARD, 0 )
232cdf0e10cSrcweir {
233cdf0e10cSrcweir eSysLanguage = eNumFmtLanguage = static_cast<LanguageType>(::GetAppLanguage());
234cdf0e10cSrcweir aBox.SetDistance( 55 );
235cdf0e10cSrcweir }
236cdf0e10cSrcweir
237cdf0e10cSrcweir
SwBoxAutoFmt(const SwBoxAutoFmt & rNew)238cdf0e10cSrcweir SwBoxAutoFmt::SwBoxAutoFmt( const SwBoxAutoFmt& rNew )
239cdf0e10cSrcweir : aFont( rNew.aFont ),
240cdf0e10cSrcweir aHeight( rNew.aHeight ),
241cdf0e10cSrcweir aWeight( rNew.aWeight ),
242cdf0e10cSrcweir aPosture( rNew.aPosture ),
243*7114c7e9Smseidel aCJKFont( rNew.aCJKFont ),
244*7114c7e9Smseidel aCJKHeight( rNew.aCJKHeight ),
245*7114c7e9Smseidel aCJKWeight( rNew.aCJKWeight ),
246*7114c7e9Smseidel aCJKPosture( rNew.aCJKPosture ),
247*7114c7e9Smseidel aCTLFont( rNew.aCTLFont ),
248*7114c7e9Smseidel aCTLHeight( rNew.aCTLHeight ),
249*7114c7e9Smseidel aCTLWeight( rNew.aCTLWeight ),
250*7114c7e9Smseidel aCTLPosture( rNew.aCTLPosture ),
251cdf0e10cSrcweir aUnderline( rNew.aUnderline ),
252cdf0e10cSrcweir aOverline( rNew.aOverline ),
253cdf0e10cSrcweir aCrossedOut( rNew.aCrossedOut ),
254cdf0e10cSrcweir aContour( rNew.aContour ),
255cdf0e10cSrcweir aShadowed( rNew.aShadowed ),
256cdf0e10cSrcweir aColor( rNew.aColor ),
257cdf0e10cSrcweir aBox( rNew.aBox ),
258*7114c7e9Smseidel aTLBR( rNew.aTLBR ),
259*7114c7e9Smseidel aBLTR( rNew.aBLTR ),
260cdf0e10cSrcweir aBackground( rNew.aBackground ),
261cdf0e10cSrcweir aAdjust( rNew.aAdjust ),
262cdf0e10cSrcweir aHorJustify( rNew.aHorJustify ),
263cdf0e10cSrcweir aVerJustify( rNew.aVerJustify ),
264*7114c7e9Smseidel aStacked( rNew.aStacked ),
265cdf0e10cSrcweir aMargin( rNew.aMargin ),
266cdf0e10cSrcweir aLinebreak( rNew.aLinebreak ),
267cdf0e10cSrcweir aRotateAngle( rNew.aRotateAngle ),
268cdf0e10cSrcweir aRotateMode( rNew.aRotateMode ),
269cdf0e10cSrcweir sNumFmtString( rNew.sNumFmtString ),
270cdf0e10cSrcweir eSysLanguage( rNew.eSysLanguage ),
271cdf0e10cSrcweir eNumFmtLanguage( rNew.eNumFmtLanguage )
272cdf0e10cSrcweir {
273cdf0e10cSrcweir }
274cdf0e10cSrcweir
275cdf0e10cSrcweir
~SwBoxAutoFmt()276cdf0e10cSrcweir SwBoxAutoFmt::~SwBoxAutoFmt()
277cdf0e10cSrcweir {
278cdf0e10cSrcweir }
279cdf0e10cSrcweir
operator =(const SwBoxAutoFmt & rNew)280cdf0e10cSrcweir SwBoxAutoFmt& SwBoxAutoFmt::operator=( const SwBoxAutoFmt& rNew )
281cdf0e10cSrcweir {
282cdf0e10cSrcweir aFont = rNew.aFont;
283cdf0e10cSrcweir aHeight = rNew.aHeight;
284cdf0e10cSrcweir aWeight = rNew.aWeight;
285cdf0e10cSrcweir aPosture = rNew.aPosture;
286*7114c7e9Smseidel aCJKFont = rNew.aCJKFont;
287*7114c7e9Smseidel aCJKHeight = rNew.aCJKHeight;
288*7114c7e9Smseidel aCJKWeight = rNew.aCJKWeight;
289*7114c7e9Smseidel aCJKPosture = rNew.aCJKPosture;
290*7114c7e9Smseidel aCTLFont = rNew.aCTLFont;
291*7114c7e9Smseidel aCTLHeight = rNew.aCTLHeight;
292*7114c7e9Smseidel aCTLWeight = rNew.aCTLWeight;
293*7114c7e9Smseidel aCTLPosture = rNew.aCTLPosture;
294cdf0e10cSrcweir aUnderline = rNew.aUnderline;
295cdf0e10cSrcweir aOverline = rNew.aOverline;
296cdf0e10cSrcweir aCrossedOut = rNew.aCrossedOut;
297cdf0e10cSrcweir aContour = rNew.aContour;
298cdf0e10cSrcweir aShadowed = rNew.aShadowed;
299cdf0e10cSrcweir aColor = rNew.aColor;
300cdf0e10cSrcweir SetAdjust( rNew.aAdjust );
301cdf0e10cSrcweir aBox = rNew.aBox;
302*7114c7e9Smseidel aTLBR = rNew.aTLBR;
303*7114c7e9Smseidel aBLTR = rNew.aBLTR;
304cdf0e10cSrcweir aBackground = rNew.aBackground;
305cdf0e10cSrcweir
306cdf0e10cSrcweir aHorJustify = rNew.aHorJustify;
307cdf0e10cSrcweir aVerJustify = rNew.aVerJustify;
308*7114c7e9Smseidel aStacked.SetValue( rNew.aStacked.GetValue() );
309cdf0e10cSrcweir aMargin = rNew.aMargin;
310cdf0e10cSrcweir aLinebreak.SetValue( rNew.aLinebreak.GetValue() );
311cdf0e10cSrcweir aRotateAngle.SetValue( rNew.aRotateAngle.GetValue() );
312cdf0e10cSrcweir aRotateMode.SetValue( rNew.aRotateMode.GetValue() );
313cdf0e10cSrcweir
314cdf0e10cSrcweir sNumFmtString = rNew.sNumFmtString;
315cdf0e10cSrcweir eSysLanguage = rNew.eSysLanguage;
316cdf0e10cSrcweir eNumFmtLanguage = rNew.eNumFmtLanguage;
317cdf0e10cSrcweir
318cdf0e10cSrcweir return *this;
319cdf0e10cSrcweir }
320cdf0e10cSrcweir
321cdf0e10cSrcweir
322cdf0e10cSrcweir #define READ( aItem, aItemType, nVers )\
323cdf0e10cSrcweir pNew = aItem.Create(rStream, nVers ); \
324cdf0e10cSrcweir aItem = *(aItemType*)pNew; \
325cdf0e10cSrcweir delete pNew;
326cdf0e10cSrcweir
Load(SvStream & rStream,const SwAfVersions & rVersions,sal_uInt16 nVer)327cdf0e10cSrcweir sal_Bool SwBoxAutoFmt::Load( SvStream& rStream, const SwAfVersions& rVersions, sal_uInt16 nVer )
328cdf0e10cSrcweir {
329cdf0e10cSrcweir SfxPoolItem* pNew;
330cdf0e10cSrcweir SvxOrientationItem aOrientation( SVX_ORIENTATION_STANDARD, 0);
331cdf0e10cSrcweir
332cdf0e10cSrcweir READ( aFont, SvxFontItem , rVersions.nFontVersion)
333cdf0e10cSrcweir
334cdf0e10cSrcweir if( rStream.GetStreamCharSet() == aFont.GetCharSet() )
335cdf0e10cSrcweir aFont.SetCharSet(::gsl_getSystemTextEncoding());
336cdf0e10cSrcweir
337cdf0e10cSrcweir READ( aHeight, SvxFontHeightItem , rVersions.nFontHeightVersion)
338cdf0e10cSrcweir READ( aWeight, SvxWeightItem , rVersions.nWeightVersion)
339cdf0e10cSrcweir READ( aPosture, SvxPostureItem , rVersions.nPostureVersion)
340cdf0e10cSrcweir // --- from 641 on: CJK and CTL font settings
341cdf0e10cSrcweir if( AUTOFORMAT_DATA_ID_641 <= nVer )
342cdf0e10cSrcweir {
343cdf0e10cSrcweir READ( aCJKFont, SvxFontItem , rVersions.nFontVersion)
344cdf0e10cSrcweir READ( aCJKHeight, SvxFontHeightItem , rVersions.nFontHeightVersion)
345cdf0e10cSrcweir READ( aCJKWeight, SvxWeightItem , rVersions.nWeightVersion)
346cdf0e10cSrcweir READ( aCJKPosture, SvxPostureItem , rVersions.nPostureVersion)
347cdf0e10cSrcweir READ( aCTLFont, SvxFontItem , rVersions.nFontVersion)
348cdf0e10cSrcweir READ( aCTLHeight, SvxFontHeightItem , rVersions.nFontHeightVersion)
349cdf0e10cSrcweir READ( aCTLWeight, SvxWeightItem , rVersions.nWeightVersion)
350cdf0e10cSrcweir READ( aCTLPosture, SvxPostureItem , rVersions.nPostureVersion)
351cdf0e10cSrcweir }
352cdf0e10cSrcweir READ( aUnderline, SvxUnderlineItem , rVersions.nUnderlineVersion)
353cdf0e10cSrcweir if( nVer >= AUTOFORMAT_DATA_ID_300OVRLN )
354cdf0e10cSrcweir {
355cdf0e10cSrcweir READ( aOverline, SvxOverlineItem , rVersions.nOverlineVersion)
356cdf0e10cSrcweir }
357cdf0e10cSrcweir READ( aCrossedOut, SvxCrossedOutItem , rVersions.nCrossedOutVersion)
358cdf0e10cSrcweir READ( aContour, SvxContourItem , rVersions.nContourVersion)
359cdf0e10cSrcweir READ( aShadowed, SvxShadowedItem , rVersions.nShadowedVersion)
360cdf0e10cSrcweir READ( aColor, SvxColorItem , rVersions.nColorVersion)
361cdf0e10cSrcweir
362cdf0e10cSrcweir READ( aBox, SvxBoxItem , rVersions.nBoxVersion)
363cdf0e10cSrcweir
364cdf0e10cSrcweir // --- from 680/dr14 on: diagonal frame lines
365cdf0e10cSrcweir if( nVer >= AUTOFORMAT_DATA_ID_680DR14 )
366cdf0e10cSrcweir {
367cdf0e10cSrcweir READ( aTLBR, SvxLineItem, rVersions.nLineVersion)
368cdf0e10cSrcweir READ( aBLTR, SvxLineItem, rVersions.nLineVersion)
369cdf0e10cSrcweir }
370cdf0e10cSrcweir
371cdf0e10cSrcweir READ( aBackground, SvxBrushItem , rVersions.nBrushVersion)
372cdf0e10cSrcweir
373cdf0e10cSrcweir pNew = aAdjust.Create(rStream, rVersions.nAdjustVersion );
374cdf0e10cSrcweir SetAdjust( *(SvxAdjustItem*)pNew );
375cdf0e10cSrcweir delete pNew;
376cdf0e10cSrcweir
377cdf0e10cSrcweir READ( aHorJustify, SvxHorJustifyItem , rVersions.nHorJustifyVersion)
378cdf0e10cSrcweir READ( aVerJustify, SvxVerJustifyItem , rVersions.nVerJustifyVersion)
379cdf0e10cSrcweir READ( aOrientation, SvxOrientationItem , rVersions.nOrientationVersion)
380cdf0e10cSrcweir READ( aMargin, SvxMarginItem , rVersions.nMarginVersion)
381cdf0e10cSrcweir
382cdf0e10cSrcweir pNew = aLinebreak.Create(rStream, rVersions.nBoolVersion );
383cdf0e10cSrcweir aLinebreak.SetValue( ((SfxBoolItem*)pNew)->GetValue() );
384cdf0e10cSrcweir delete pNew;
385cdf0e10cSrcweir
386cdf0e10cSrcweir if ( nVer >= AUTOFORMAT_DATA_ID_504 )
387cdf0e10cSrcweir {
388cdf0e10cSrcweir pNew = aRotateAngle.Create( rStream, rVersions.nInt32Version );
389cdf0e10cSrcweir aRotateAngle.SetValue( ((SfxInt32Item*)pNew)->GetValue() );
390cdf0e10cSrcweir delete pNew;
391cdf0e10cSrcweir pNew = aRotateMode.Create( rStream, rVersions.nRotateModeVersion );
392cdf0e10cSrcweir aRotateMode.SetValue( ((SvxRotateModeItem*)pNew)->GetValue() );
393cdf0e10cSrcweir delete pNew;
394cdf0e10cSrcweir }
395cdf0e10cSrcweir
396cdf0e10cSrcweir if( 0 == rVersions.nNumFmtVersion )
397cdf0e10cSrcweir {
398cdf0e10cSrcweir sal_uInt16 eSys, eLge;
399cdf0e10cSrcweir // --- from 680/dr25 on: #21549# store strings as UTF-8
400cdf0e10cSrcweir CharSet eCharSet = (nVer >= AUTOFORMAT_ID_680DR25) ? RTL_TEXTENCODING_UTF8 : rStream.GetStreamCharSet();
401cdf0e10cSrcweir rStream.ReadByteString( sNumFmtString, eCharSet )
402cdf0e10cSrcweir >> eSys >> eLge;
403cdf0e10cSrcweir eSysLanguage = (LanguageType) eSys;
404cdf0e10cSrcweir eNumFmtLanguage = (LanguageType) eLge;
405cdf0e10cSrcweir if ( eSysLanguage == LANGUAGE_SYSTEM ) // von alten Versionen (Calc)
406cdf0e10cSrcweir eSysLanguage = static_cast<LanguageType>(::GetAppLanguage());
407cdf0e10cSrcweir }
408cdf0e10cSrcweir
409cdf0e10cSrcweir aStacked.SetValue( aOrientation.IsStacked() );
410cdf0e10cSrcweir aRotateAngle.SetValue( aOrientation.GetRotation( aRotateAngle.GetValue() ) );
411cdf0e10cSrcweir
412cdf0e10cSrcweir return 0 == rStream.GetError();
413cdf0e10cSrcweir }
414cdf0e10cSrcweir
415cdf0e10cSrcweir #ifdef READ_OLDVERS
416cdf0e10cSrcweir
LoadOld(SvStream & rStream,sal_uInt16 aLoadVer[])417cdf0e10cSrcweir sal_Bool SwBoxAutoFmt::LoadOld( SvStream& rStream, sal_uInt16 aLoadVer[] )
418cdf0e10cSrcweir {
419cdf0e10cSrcweir SfxPoolItem* pNew;
420cdf0e10cSrcweir READ( aFont, SvxFontItem , 0)
421cdf0e10cSrcweir
422cdf0e10cSrcweir if( rStream.GetStreamCharSet() == aFont.GetCharSet() )
423cdf0e10cSrcweir aFont.SetCharSet(::gsl_getSystemTextEncoding());
424cdf0e10cSrcweir
425cdf0e10cSrcweir READ( aHeight, SvxFontHeightItem , 1)
426cdf0e10cSrcweir READ( aWeight, SvxWeightItem , 2)
427cdf0e10cSrcweir READ( aPosture, SvxPostureItem , 3)
428cdf0e10cSrcweir READ( aUnderline, SvxUnderlineItem , 4)
429cdf0e10cSrcweir READ( aCrossedOut, SvxCrossedOutItem , 5)
430cdf0e10cSrcweir READ( aContour, SvxContourItem , 6)
431cdf0e10cSrcweir READ( aShadowed, SvxShadowedItem , 7)
432cdf0e10cSrcweir READ( aColor, SvxColorItem , 8)
433cdf0e10cSrcweir
434cdf0e10cSrcweir pNew = aAdjust.Create(rStream, aLoadVer[ 9 ] );
435cdf0e10cSrcweir SetAdjust( *(SvxAdjustItem*)pNew );
436cdf0e10cSrcweir delete pNew;
437cdf0e10cSrcweir
438cdf0e10cSrcweir READ( aBox, SvxBoxItem , 10)
439cdf0e10cSrcweir READ( aBackground, SvxBrushItem , 11)
440cdf0e10cSrcweir
441cdf0e10cSrcweir return 0 == rStream.GetError();
442cdf0e10cSrcweir }
443cdf0e10cSrcweir
444cdf0e10cSrcweir #endif
445cdf0e10cSrcweir
446cdf0e10cSrcweir
Save(SvStream & rStream) const447cdf0e10cSrcweir sal_Bool SwBoxAutoFmt::Save( SvStream& rStream ) const
448cdf0e10cSrcweir {
449cdf0e10cSrcweir SvxOrientationItem aOrientation( aRotateAngle.GetValue(), aStacked.GetValue(), 0 );
450cdf0e10cSrcweir
451cdf0e10cSrcweir aFont.Store( rStream, aFont.GetVersion(SOFFICE_FILEFORMAT_40) );
452cdf0e10cSrcweir aHeight.Store( rStream, aHeight.GetVersion(SOFFICE_FILEFORMAT_40) );
453cdf0e10cSrcweir aWeight.Store( rStream, aWeight.GetVersion(SOFFICE_FILEFORMAT_40) );
454cdf0e10cSrcweir aPosture.Store( rStream, aPosture.GetVersion(SOFFICE_FILEFORMAT_40) );
455cdf0e10cSrcweir aCJKFont.Store( rStream, aCJKFont.GetVersion(SOFFICE_FILEFORMAT_40) );
456cdf0e10cSrcweir aCJKHeight.Store( rStream, aCJKHeight.GetVersion(SOFFICE_FILEFORMAT_40) );
457cdf0e10cSrcweir aCJKWeight.Store( rStream, aCJKWeight.GetVersion(SOFFICE_FILEFORMAT_40) );
458cdf0e10cSrcweir aCJKPosture.Store( rStream, aCJKPosture.GetVersion(SOFFICE_FILEFORMAT_40) );
459cdf0e10cSrcweir aCTLFont.Store( rStream, aCTLFont.GetVersion(SOFFICE_FILEFORMAT_40) );
460cdf0e10cSrcweir aCTLHeight.Store( rStream, aCTLHeight.GetVersion(SOFFICE_FILEFORMAT_40) );
461cdf0e10cSrcweir aCTLWeight.Store( rStream, aCTLWeight.GetVersion(SOFFICE_FILEFORMAT_40) );
462cdf0e10cSrcweir aCTLPosture.Store( rStream, aCTLPosture.GetVersion(SOFFICE_FILEFORMAT_40) );
463cdf0e10cSrcweir aUnderline.Store( rStream, aUnderline.GetVersion(SOFFICE_FILEFORMAT_40) );
464cdf0e10cSrcweir aOverline.Store( rStream, aOverline.GetVersion(SOFFICE_FILEFORMAT_40) );
465cdf0e10cSrcweir aCrossedOut.Store( rStream, aCrossedOut.GetVersion(SOFFICE_FILEFORMAT_40) );
466cdf0e10cSrcweir aContour.Store( rStream, aContour.GetVersion(SOFFICE_FILEFORMAT_40) );
467cdf0e10cSrcweir aShadowed.Store( rStream, aShadowed.GetVersion(SOFFICE_FILEFORMAT_40) );
468cdf0e10cSrcweir aColor.Store( rStream, aColor.GetVersion(SOFFICE_FILEFORMAT_40) );
469cdf0e10cSrcweir aBox.Store( rStream, aBox.GetVersion(SOFFICE_FILEFORMAT_40) );
470cdf0e10cSrcweir aTLBR.Store( rStream, aTLBR.GetVersion(SOFFICE_FILEFORMAT_40) );
471cdf0e10cSrcweir aBLTR.Store( rStream, aBLTR.GetVersion(SOFFICE_FILEFORMAT_40) );
472cdf0e10cSrcweir aBackground.Store( rStream, aBackground.GetVersion(SOFFICE_FILEFORMAT_40) );
473cdf0e10cSrcweir
474cdf0e10cSrcweir aAdjust.Store( rStream, aAdjust.GetVersion(SOFFICE_FILEFORMAT_40) );
475cdf0e10cSrcweir
476cdf0e10cSrcweir aHorJustify.Store( rStream, aHorJustify.GetVersion(SOFFICE_FILEFORMAT_40) );
477cdf0e10cSrcweir aVerJustify.Store( rStream, aVerJustify.GetVersion(SOFFICE_FILEFORMAT_40) );
478cdf0e10cSrcweir aOrientation.Store( rStream, aOrientation.GetVersion(SOFFICE_FILEFORMAT_40) );
479cdf0e10cSrcweir aMargin.Store( rStream, aMargin.GetVersion(SOFFICE_FILEFORMAT_40) );
480cdf0e10cSrcweir aLinebreak.Store( rStream, aLinebreak.GetVersion(SOFFICE_FILEFORMAT_40) );
481cdf0e10cSrcweir // Calc Rotation ab SO5
482cdf0e10cSrcweir aRotateAngle.Store( rStream, aRotateAngle.GetVersion(SOFFICE_FILEFORMAT_40) );
483cdf0e10cSrcweir aRotateMode.Store( rStream, aRotateMode.GetVersion(SOFFICE_FILEFORMAT_40) );
484cdf0e10cSrcweir
485cdf0e10cSrcweir // --- from 680/dr25 on: #21549# store strings as UTF-8
486cdf0e10cSrcweir rStream.WriteByteString( sNumFmtString, RTL_TEXTENCODING_UTF8 )
487cdf0e10cSrcweir << (sal_uInt16)eSysLanguage << (sal_uInt16)eNumFmtLanguage;
488cdf0e10cSrcweir
489cdf0e10cSrcweir return 0 == rStream.GetError();
490cdf0e10cSrcweir }
491cdf0e10cSrcweir
492cdf0e10cSrcweir
SaveVersionNo(SvStream & rStream) const493*7114c7e9Smseidel sal_Bool SwBoxAutoFmt::SaveVersionNo( SvStream& rStream ) const
494cdf0e10cSrcweir {
495cdf0e10cSrcweir rStream << aFont.GetVersion( SOFFICE_FILEFORMAT_40 );
496cdf0e10cSrcweir rStream << aHeight.GetVersion( SOFFICE_FILEFORMAT_40 );
497cdf0e10cSrcweir rStream << aWeight.GetVersion( SOFFICE_FILEFORMAT_40 );
498cdf0e10cSrcweir rStream << aPosture.GetVersion( SOFFICE_FILEFORMAT_40 );
499cdf0e10cSrcweir rStream << aUnderline.GetVersion( SOFFICE_FILEFORMAT_40 );
500cdf0e10cSrcweir rStream << aOverline.GetVersion( SOFFICE_FILEFORMAT_40 );
501cdf0e10cSrcweir rStream << aCrossedOut.GetVersion( SOFFICE_FILEFORMAT_40 );
502cdf0e10cSrcweir rStream << aContour.GetVersion( SOFFICE_FILEFORMAT_40 );
503cdf0e10cSrcweir rStream << aShadowed.GetVersion( SOFFICE_FILEFORMAT_40 );
504cdf0e10cSrcweir rStream << aColor.GetVersion( SOFFICE_FILEFORMAT_40 );
505cdf0e10cSrcweir rStream << aBox.GetVersion( SOFFICE_FILEFORMAT_40 );
506cdf0e10cSrcweir rStream << aTLBR.GetVersion( SOFFICE_FILEFORMAT_40 );
507cdf0e10cSrcweir rStream << aBackground.GetVersion( SOFFICE_FILEFORMAT_40 );
508cdf0e10cSrcweir
509cdf0e10cSrcweir rStream << aAdjust.GetVersion( SOFFICE_FILEFORMAT_40 );
510cdf0e10cSrcweir
511cdf0e10cSrcweir rStream << aHorJustify.GetVersion( SOFFICE_FILEFORMAT_40 );
512cdf0e10cSrcweir rStream << aVerJustify.GetVersion( SOFFICE_FILEFORMAT_40 );
513cdf0e10cSrcweir rStream << SvxOrientationItem(SVX_ORIENTATION_STANDARD, 0).GetVersion( SOFFICE_FILEFORMAT_40 );
514cdf0e10cSrcweir rStream << aMargin.GetVersion( SOFFICE_FILEFORMAT_40 );
515cdf0e10cSrcweir rStream << aLinebreak.GetVersion( SOFFICE_FILEFORMAT_40 );
516cdf0e10cSrcweir rStream << aRotateAngle.GetVersion( SOFFICE_FILEFORMAT_40 );
517cdf0e10cSrcweir rStream << aRotateMode.GetVersion( SOFFICE_FILEFORMAT_40 );
518cdf0e10cSrcweir
519cdf0e10cSrcweir rStream << (sal_uInt16)0; // NumberFormat
520cdf0e10cSrcweir
521cdf0e10cSrcweir return 0 == rStream.GetError();
522cdf0e10cSrcweir }
523cdf0e10cSrcweir
524cdf0e10cSrcweir
SwTableAutoFmt(const String & rName)525cdf0e10cSrcweir SwTableAutoFmt::SwTableAutoFmt( const String& rName )
526cdf0e10cSrcweir : aName( rName ), nStrResId( USHRT_MAX )
527cdf0e10cSrcweir {
528cdf0e10cSrcweir bInclFont = sal_True;
529cdf0e10cSrcweir bInclJustify = sal_True;
530cdf0e10cSrcweir bInclFrame = sal_True;
531cdf0e10cSrcweir bInclBackground = sal_True;
532cdf0e10cSrcweir bInclValueFormat = sal_True;
533cdf0e10cSrcweir bInclWidthHeight = sal_True;
534cdf0e10cSrcweir
535cdf0e10cSrcweir memset( aBoxAutoFmt, 0, sizeof( aBoxAutoFmt ) );
536cdf0e10cSrcweir }
537cdf0e10cSrcweir
538cdf0e10cSrcweir
SwTableAutoFmt(const SwTableAutoFmt & rNew)539cdf0e10cSrcweir SwTableAutoFmt::SwTableAutoFmt( const SwTableAutoFmt& rNew )
540cdf0e10cSrcweir {
541cdf0e10cSrcweir for( sal_uInt8 n = 0; n < 16; ++n )
542cdf0e10cSrcweir aBoxAutoFmt[ n ] = 0;
543cdf0e10cSrcweir *this = rNew;
544cdf0e10cSrcweir }
545cdf0e10cSrcweir
operator =(const SwTableAutoFmt & rNew)546cdf0e10cSrcweir SwTableAutoFmt& SwTableAutoFmt::operator=( const SwTableAutoFmt& rNew )
547cdf0e10cSrcweir {
548cdf0e10cSrcweir for( sal_uInt8 n = 0; n < 16; ++n )
549cdf0e10cSrcweir {
550cdf0e10cSrcweir if( aBoxAutoFmt[ n ] )
551cdf0e10cSrcweir delete aBoxAutoFmt[ n ];
552cdf0e10cSrcweir
553cdf0e10cSrcweir SwBoxAutoFmt* pFmt = rNew.aBoxAutoFmt[ n ];
554cdf0e10cSrcweir if( pFmt ) // ist gesetzt -> kopieren
555cdf0e10cSrcweir aBoxAutoFmt[ n ] = new SwBoxAutoFmt( *pFmt );
556cdf0e10cSrcweir else // sonst default
557cdf0e10cSrcweir aBoxAutoFmt[ n ] = 0;
558cdf0e10cSrcweir }
559cdf0e10cSrcweir
560cdf0e10cSrcweir aName = rNew.aName;
561cdf0e10cSrcweir nStrResId = rNew.nStrResId;
562cdf0e10cSrcweir bInclFont = rNew.bInclFont;
563cdf0e10cSrcweir bInclJustify = rNew.bInclJustify;
564cdf0e10cSrcweir bInclFrame = rNew.bInclFrame;
565cdf0e10cSrcweir bInclBackground = rNew.bInclBackground;
566cdf0e10cSrcweir bInclValueFormat = rNew.bInclValueFormat;
567cdf0e10cSrcweir bInclWidthHeight = rNew.bInclWidthHeight;
568cdf0e10cSrcweir
569cdf0e10cSrcweir return *this;
570cdf0e10cSrcweir }
571cdf0e10cSrcweir
572cdf0e10cSrcweir
~SwTableAutoFmt()573cdf0e10cSrcweir SwTableAutoFmt::~SwTableAutoFmt()
574cdf0e10cSrcweir {
575cdf0e10cSrcweir SwBoxAutoFmt** ppFmt = aBoxAutoFmt;
576cdf0e10cSrcweir for( sal_uInt8 n = 0; n < 16; ++n, ++ppFmt )
577cdf0e10cSrcweir if( *ppFmt )
578cdf0e10cSrcweir delete *ppFmt;
579cdf0e10cSrcweir }
580cdf0e10cSrcweir
581cdf0e10cSrcweir
SetBoxFmt(const SwBoxAutoFmt & rNew,sal_uInt8 nPos)582cdf0e10cSrcweir void SwTableAutoFmt::SetBoxFmt( const SwBoxAutoFmt& rNew, sal_uInt8 nPos )
583cdf0e10cSrcweir {
584cdf0e10cSrcweir ASSERT( nPos < 16, "falscher Bereich" );
585cdf0e10cSrcweir
586cdf0e10cSrcweir SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
587cdf0e10cSrcweir if( pFmt ) // ist gesetzt -> kopieren
588cdf0e10cSrcweir *aBoxAutoFmt[ nPos ] = rNew;
589cdf0e10cSrcweir else // sonst neu setzen
590cdf0e10cSrcweir aBoxAutoFmt[ nPos ] = new SwBoxAutoFmt( rNew );
591cdf0e10cSrcweir }
592cdf0e10cSrcweir
593cdf0e10cSrcweir
GetBoxFmt(sal_uInt8 nPos) const594cdf0e10cSrcweir const SwBoxAutoFmt& SwTableAutoFmt::GetBoxFmt( sal_uInt8 nPos ) const
595cdf0e10cSrcweir {
596cdf0e10cSrcweir ASSERT( nPos < 16, "falscher Bereich" );
597cdf0e10cSrcweir
598cdf0e10cSrcweir SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
599cdf0e10cSrcweir if( pFmt ) // ist gesetzt -> kopieren
600cdf0e10cSrcweir return *pFmt;
601cdf0e10cSrcweir else // sonst den default returnen
602cdf0e10cSrcweir {
603cdf0e10cSrcweir // falls noch nicht vorhanden:
604cdf0e10cSrcweir if( !pDfltBoxAutoFmt )
605cdf0e10cSrcweir pDfltBoxAutoFmt = new SwBoxAutoFmt;
606cdf0e10cSrcweir return *pDfltBoxAutoFmt;
607cdf0e10cSrcweir }
608cdf0e10cSrcweir }
609cdf0e10cSrcweir
610cdf0e10cSrcweir
611cdf0e10cSrcweir
UpdateFromSet(sal_uInt8 nPos,const SfxItemSet & rSet,UpdateFlags eFlags,SvNumberFormatter * pNFmtr)612cdf0e10cSrcweir SwBoxAutoFmt& SwTableAutoFmt::UpdateFromSet( sal_uInt8 nPos,
613cdf0e10cSrcweir const SfxItemSet& rSet,
614cdf0e10cSrcweir UpdateFlags eFlags,
615cdf0e10cSrcweir SvNumberFormatter* pNFmtr )
616cdf0e10cSrcweir {
617cdf0e10cSrcweir ASSERT( nPos < 16, "falscher Bereich" );
618cdf0e10cSrcweir
619cdf0e10cSrcweir SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
620cdf0e10cSrcweir if( !pFmt ) // ist gesetzt -> kopieren
621cdf0e10cSrcweir {
622cdf0e10cSrcweir pFmt = new SwBoxAutoFmt;
623cdf0e10cSrcweir aBoxAutoFmt[ nPos ] = pFmt;
624cdf0e10cSrcweir }
625cdf0e10cSrcweir
626cdf0e10cSrcweir if( UPDATE_CHAR & eFlags )
627cdf0e10cSrcweir {
628cdf0e10cSrcweir pFmt->SetFont( (SvxFontItem&)rSet.Get( RES_CHRATR_FONT ) );
629cdf0e10cSrcweir pFmt->SetHeight( (SvxFontHeightItem&)rSet.Get( RES_CHRATR_FONTSIZE ) );
630cdf0e10cSrcweir pFmt->SetWeight( (SvxWeightItem&)rSet.Get( RES_CHRATR_WEIGHT ) );
631cdf0e10cSrcweir pFmt->SetPosture( (SvxPostureItem&)rSet.Get( RES_CHRATR_POSTURE ) );
632cdf0e10cSrcweir pFmt->SetCJKFont( (SvxFontItem&)rSet.Get( RES_CHRATR_CJK_FONT ) );
633cdf0e10cSrcweir pFmt->SetCJKHeight( (SvxFontHeightItem&)rSet.Get( RES_CHRATR_CJK_FONTSIZE ) );
634cdf0e10cSrcweir pFmt->SetCJKWeight( (SvxWeightItem&)rSet.Get( RES_CHRATR_CJK_WEIGHT ) );
635cdf0e10cSrcweir pFmt->SetCJKPosture( (SvxPostureItem&)rSet.Get( RES_CHRATR_CJK_POSTURE ) );
636cdf0e10cSrcweir pFmt->SetCTLFont( (SvxFontItem&)rSet.Get( RES_CHRATR_CTL_FONT ) );
637cdf0e10cSrcweir pFmt->SetCTLHeight( (SvxFontHeightItem&)rSet.Get( RES_CHRATR_CTL_FONTSIZE ) );
638cdf0e10cSrcweir pFmt->SetCTLWeight( (SvxWeightItem&)rSet.Get( RES_CHRATR_CTL_WEIGHT ) );
639cdf0e10cSrcweir pFmt->SetCTLPosture( (SvxPostureItem&)rSet.Get( RES_CHRATR_CTL_POSTURE ) );
640cdf0e10cSrcweir pFmt->SetUnderline( (SvxUnderlineItem&)rSet.Get( RES_CHRATR_UNDERLINE ) );
641cdf0e10cSrcweir pFmt->SetOverline( (SvxOverlineItem&)rSet.Get( RES_CHRATR_OVERLINE ) );
642cdf0e10cSrcweir pFmt->SetCrossedOut( (SvxCrossedOutItem&)rSet.Get( RES_CHRATR_CROSSEDOUT ) );
643cdf0e10cSrcweir pFmt->SetContour( (SvxContourItem&)rSet.Get( RES_CHRATR_CONTOUR ) );
644cdf0e10cSrcweir pFmt->SetShadowed( (SvxShadowedItem&)rSet.Get( RES_CHRATR_SHADOWED ) );
645cdf0e10cSrcweir pFmt->SetColor( (SvxColorItem&)rSet.Get( RES_CHRATR_COLOR ) );
646cdf0e10cSrcweir pFmt->SetAdjust( (SvxAdjustItem&)rSet.Get( RES_PARATR_ADJUST ) );
647cdf0e10cSrcweir }
648cdf0e10cSrcweir if( UPDATE_BOX & eFlags )
649cdf0e10cSrcweir {
650cdf0e10cSrcweir pFmt->SetBox( (SvxBoxItem&)rSet.Get( RES_BOX ) );
651cdf0e10cSrcweir // FIXME - add attribute IDs for the diagonal line items
652cdf0e10cSrcweir // pFmt->SetTLBR( (SvxLineItem&)rSet.Get( RES_... ) );
653cdf0e10cSrcweir // pFmt->SetBLTR( (SvxLineItem&)rSet.Get( RES_... ) );
654cdf0e10cSrcweir pFmt->SetBackground( (SvxBrushItem&)rSet.Get( RES_BACKGROUND ) );
655cdf0e10cSrcweir
656cdf0e10cSrcweir const SwTblBoxNumFormat* pNumFmtItem;
657cdf0e10cSrcweir const SvNumberformat* pNumFormat = 0;
658cdf0e10cSrcweir if( SFX_ITEM_SET == rSet.GetItemState( RES_BOXATR_FORMAT, sal_True,
659cdf0e10cSrcweir (const SfxPoolItem**)&pNumFmtItem ) && pNFmtr &&
660cdf0e10cSrcweir 0 != (pNumFormat = pNFmtr->GetEntry( pNumFmtItem->GetValue() )) )
661cdf0e10cSrcweir pFmt->SetValueFormat( ((SvNumberformat*)pNumFormat)->GetFormatstring(),
662cdf0e10cSrcweir pNumFormat->GetLanguage(),
663cdf0e10cSrcweir static_cast<LanguageType>(::GetAppLanguage()));
664cdf0e10cSrcweir else
665cdf0e10cSrcweir {
666cdf0e10cSrcweir // defaulten
667cdf0e10cSrcweir pFmt->SetValueFormat( aEmptyStr, LANGUAGE_SYSTEM,
668cdf0e10cSrcweir static_cast<LanguageType>(::GetAppLanguage() ));
669cdf0e10cSrcweir }
670cdf0e10cSrcweir }
671*7114c7e9Smseidel // den Rest koennen wir nicht, Calc spezifisch
672cdf0e10cSrcweir
673cdf0e10cSrcweir return *pFmt;
674cdf0e10cSrcweir }
675cdf0e10cSrcweir
676cdf0e10cSrcweir
UpdateToSet(sal_uInt8 nPos,SfxItemSet & rSet,UpdateFlags eFlags,SvNumberFormatter * pNFmtr) const677cdf0e10cSrcweir void SwTableAutoFmt::UpdateToSet( sal_uInt8 nPos, SfxItemSet& rSet,
678cdf0e10cSrcweir UpdateFlags eFlags, SvNumberFormatter* pNFmtr ) const
679cdf0e10cSrcweir {
680cdf0e10cSrcweir const SwBoxAutoFmt& rChg = GetBoxFmt( nPos );
681cdf0e10cSrcweir
682cdf0e10cSrcweir if( UPDATE_CHAR & eFlags )
683cdf0e10cSrcweir {
684cdf0e10cSrcweir if( IsFont() )
685cdf0e10cSrcweir {
686cdf0e10cSrcweir rSet.Put( rChg.GetFont() );
687cdf0e10cSrcweir rSet.Put( rChg.GetHeight() );
688cdf0e10cSrcweir rSet.Put( rChg.GetWeight() );
689cdf0e10cSrcweir rSet.Put( rChg.GetPosture() );
690cdf0e10cSrcweir // #103065# do not insert empty CJK font
691cdf0e10cSrcweir const SvxFontItem& rCJKFont = rChg.GetCJKFont();
692cdf0e10cSrcweir if( rCJKFont.GetStyleName().Len() )
693cdf0e10cSrcweir {
694cdf0e10cSrcweir rSet.Put( rChg.GetCJKFont() );
695cdf0e10cSrcweir rSet.Put( rChg.GetCJKHeight() );
696cdf0e10cSrcweir rSet.Put( rChg.GetCJKWeight() );
697cdf0e10cSrcweir rSet.Put( rChg.GetCJKPosture() );
698cdf0e10cSrcweir }
699cdf0e10cSrcweir else
700cdf0e10cSrcweir {
701cdf0e10cSrcweir rSet.Put( rChg.GetHeight(), RES_CHRATR_CJK_FONTSIZE );
702cdf0e10cSrcweir rSet.Put( rChg.GetWeight(), RES_CHRATR_CJK_WEIGHT );
703cdf0e10cSrcweir rSet.Put( rChg.GetPosture(), RES_CHRATR_CJK_POSTURE );
704cdf0e10cSrcweir }
705cdf0e10cSrcweir // #103065# do not insert empty CTL font
706cdf0e10cSrcweir const SvxFontItem& rCTLFont = rChg.GetCTLFont();
707cdf0e10cSrcweir if( rCTLFont.GetStyleName().Len() )
708cdf0e10cSrcweir {
709cdf0e10cSrcweir rSet.Put( rChg.GetCTLFont() );
710cdf0e10cSrcweir rSet.Put( rChg.GetCTLHeight() );
711cdf0e10cSrcweir rSet.Put( rChg.GetCTLWeight() );
712cdf0e10cSrcweir rSet.Put( rChg.GetCTLPosture() );
713cdf0e10cSrcweir }
714cdf0e10cSrcweir else
715cdf0e10cSrcweir {
716cdf0e10cSrcweir rSet.Put( rChg.GetHeight(), RES_CHRATR_CTL_FONTSIZE );
717cdf0e10cSrcweir rSet.Put( rChg.GetWeight(), RES_CHRATR_CTL_WEIGHT );
718cdf0e10cSrcweir rSet.Put( rChg.GetPosture(), RES_CHRATR_CTL_POSTURE );
719cdf0e10cSrcweir }
720cdf0e10cSrcweir rSet.Put( rChg.GetUnderline() );
721cdf0e10cSrcweir rSet.Put( rChg.GetOverline() );
722cdf0e10cSrcweir rSet.Put( rChg.GetCrossedOut() );
723cdf0e10cSrcweir rSet.Put( rChg.GetContour() );
724cdf0e10cSrcweir rSet.Put( rChg.GetShadowed() );
725cdf0e10cSrcweir rSet.Put( rChg.GetColor() );
726cdf0e10cSrcweir }
727cdf0e10cSrcweir if( IsJustify() )
728cdf0e10cSrcweir rSet.Put( rChg.GetAdjust() );
729cdf0e10cSrcweir }
730cdf0e10cSrcweir
731cdf0e10cSrcweir if( UPDATE_BOX & eFlags )
732cdf0e10cSrcweir {
733cdf0e10cSrcweir if( IsFrame() )
734cdf0e10cSrcweir {
735cdf0e10cSrcweir rSet.Put( rChg.GetBox() );
736cdf0e10cSrcweir // FIXME - uncomment the lines to put the diagonal line items
737cdf0e10cSrcweir // rSet.Put( rChg.GetTLBR() );
738cdf0e10cSrcweir // rSet.Put( rChg.GetBLTR() );
739cdf0e10cSrcweir }
740cdf0e10cSrcweir if( IsBackground() )
741cdf0e10cSrcweir rSet.Put( rChg.GetBackground() );
742cdf0e10cSrcweir
743cdf0e10cSrcweir if( IsValueFormat() && pNFmtr )
744cdf0e10cSrcweir {
745cdf0e10cSrcweir String sFmt; LanguageType eLng, eSys;
746cdf0e10cSrcweir rChg.GetValueFormat( sFmt, eLng, eSys );
747cdf0e10cSrcweir if( sFmt.Len() )
748cdf0e10cSrcweir {
749cdf0e10cSrcweir short nType;
750cdf0e10cSrcweir sal_Bool bNew;
751cdf0e10cSrcweir xub_StrLen nCheckPos;
752cdf0e10cSrcweir sal_uInt32 nKey = pNFmtr->GetIndexPuttingAndConverting( sFmt, eLng,
753cdf0e10cSrcweir eSys, nType, bNew, nCheckPos);
754cdf0e10cSrcweir rSet.Put( SwTblBoxNumFormat( nKey ));
755cdf0e10cSrcweir }
756cdf0e10cSrcweir else
757cdf0e10cSrcweir rSet.ClearItem( RES_BOXATR_FORMAT );
758cdf0e10cSrcweir }
759cdf0e10cSrcweir }
760cdf0e10cSrcweir
761*7114c7e9Smseidel // den Rest koennen wir nicht, Calc spezifisch
762cdf0e10cSrcweir }
763cdf0e10cSrcweir
764cdf0e10cSrcweir
Load(SvStream & rStream,const SwAfVersions & rVersions)765cdf0e10cSrcweir sal_Bool SwTableAutoFmt::Load( SvStream& rStream, const SwAfVersions& rVersions )
766cdf0e10cSrcweir {
767cdf0e10cSrcweir sal_Bool bRet = sal_True;
768cdf0e10cSrcweir sal_uInt16 nVal = 0;
769cdf0e10cSrcweir rStream >> nVal;
770cdf0e10cSrcweir bRet = 0 == rStream.GetError();
771cdf0e10cSrcweir
772cdf0e10cSrcweir if( bRet && (nVal == AUTOFORMAT_DATA_ID_X ||
773cdf0e10cSrcweir (AUTOFORMAT_DATA_ID_504 <= nVal && nVal <= AUTOFORMAT_DATA_ID)) )
774cdf0e10cSrcweir {
775cdf0e10cSrcweir sal_Bool b;
776cdf0e10cSrcweir // --- from 680/dr25 on: #21549# store strings as UTF-8
777cdf0e10cSrcweir CharSet eCharSet = (nVal >= AUTOFORMAT_ID_680DR25) ? RTL_TEXTENCODING_UTF8 : rStream.GetStreamCharSet();
778cdf0e10cSrcweir rStream.ReadByteString( aName, eCharSet );
779cdf0e10cSrcweir if( AUTOFORMAT_DATA_ID_552 <= nVal )
780cdf0e10cSrcweir {
781cdf0e10cSrcweir rStream >> nStrResId;
782cdf0e10cSrcweir sal_uInt16 nId = RID_SVXSTR_TBLAFMT_BEGIN + nStrResId;
783cdf0e10cSrcweir if( RID_SVXSTR_TBLAFMT_BEGIN <= nId &&
784cdf0e10cSrcweir nId < RID_SVXSTR_TBLAFMT_END )
785cdf0e10cSrcweir {
786cdf0e10cSrcweir aName = SVX_RESSTR( nId );
787cdf0e10cSrcweir }
788cdf0e10cSrcweir else
789cdf0e10cSrcweir nStrResId = USHRT_MAX;
790cdf0e10cSrcweir }
791cdf0e10cSrcweir rStream >> b; bInclFont = b;
792cdf0e10cSrcweir rStream >> b; bInclJustify = b;
793cdf0e10cSrcweir rStream >> b; bInclFrame = b;
794cdf0e10cSrcweir rStream >> b; bInclBackground = b;
795cdf0e10cSrcweir rStream >> b; bInclValueFormat = b;
796cdf0e10cSrcweir rStream >> b; bInclWidthHeight = b;
797cdf0e10cSrcweir
798cdf0e10cSrcweir bRet = 0 == rStream.GetError();
799cdf0e10cSrcweir
800cdf0e10cSrcweir for( sal_uInt8 i = 0; i < 16; ++i )
801cdf0e10cSrcweir {
802cdf0e10cSrcweir SwBoxAutoFmt* pFmt = new SwBoxAutoFmt;
803cdf0e10cSrcweir bRet = pFmt->Load( rStream, rVersions, nVal );
804cdf0e10cSrcweir if( bRet )
805cdf0e10cSrcweir aBoxAutoFmt[ i ] = pFmt;
806cdf0e10cSrcweir else
807cdf0e10cSrcweir {
808cdf0e10cSrcweir delete pFmt;
809cdf0e10cSrcweir break;
810cdf0e10cSrcweir }
811cdf0e10cSrcweir }
812cdf0e10cSrcweir }
813cdf0e10cSrcweir return bRet;
814cdf0e10cSrcweir }
815cdf0e10cSrcweir
816cdf0e10cSrcweir #ifdef READ_OLDVERS
817cdf0e10cSrcweir
LoadOld(SvStream & rStream,sal_uInt16 aLoadVer[])818cdf0e10cSrcweir sal_Bool SwTableAutoFmt::LoadOld( SvStream& rStream, sal_uInt16 aLoadVer[] )
819cdf0e10cSrcweir {
820cdf0e10cSrcweir sal_Bool bRet = sal_True;
821cdf0e10cSrcweir sal_uInt16 nVal = 0;
822cdf0e10cSrcweir rStream >> nVal;
823cdf0e10cSrcweir bRet = 0 == rStream.GetError();
824cdf0e10cSrcweir
825cdf0e10cSrcweir if( bRet && ( AUTOFORMAT_OLD_DATA_ID == nVal ))
826cdf0e10cSrcweir {
827cdf0e10cSrcweir sal_Bool b;
828cdf0e10cSrcweir rStream.ReadByteString( aName, rStream.GetStreamCharSet() );
829cdf0e10cSrcweir rStream >> b; bInclFont = b;
830cdf0e10cSrcweir rStream >> b; bInclJustify = b;
831cdf0e10cSrcweir rStream >> b; bInclFrame = b;
832cdf0e10cSrcweir rStream >> b; bInclBackground = b;
833cdf0e10cSrcweir bRet = (rStream.GetError() == 0);
834cdf0e10cSrcweir
835cdf0e10cSrcweir for( int i = 0; i < 16; i++)
836cdf0e10cSrcweir {
837cdf0e10cSrcweir SwBoxAutoFmt* pFmt = new SwBoxAutoFmt;
838cdf0e10cSrcweir bRet = pFmt->LoadOld( rStream, aLoadVer );
839cdf0e10cSrcweir if( bRet )
840cdf0e10cSrcweir aBoxAutoFmt[ i ] = pFmt;
841cdf0e10cSrcweir else
842cdf0e10cSrcweir {
843cdf0e10cSrcweir delete pFmt;
844cdf0e10cSrcweir break;
845cdf0e10cSrcweir }
846cdf0e10cSrcweir }
847cdf0e10cSrcweir }
848cdf0e10cSrcweir return bRet;
849cdf0e10cSrcweir }
850cdf0e10cSrcweir #endif
851cdf0e10cSrcweir
852cdf0e10cSrcweir
Save(SvStream & rStream) const853cdf0e10cSrcweir sal_Bool SwTableAutoFmt::Save( SvStream& rStream ) const
854cdf0e10cSrcweir {
855cdf0e10cSrcweir sal_uInt16 nVal = AUTOFORMAT_DATA_ID;
856cdf0e10cSrcweir sal_Bool b;
857cdf0e10cSrcweir rStream << nVal;
858cdf0e10cSrcweir // --- from 680/dr25 on: #21549# store strings as UTF-8
859cdf0e10cSrcweir rStream.WriteByteString( aName, RTL_TEXTENCODING_UTF8 );
860cdf0e10cSrcweir rStream << nStrResId;
861cdf0e10cSrcweir rStream << ( b = bInclFont );
862cdf0e10cSrcweir rStream << ( b = bInclJustify );
863cdf0e10cSrcweir rStream << ( b = bInclFrame );
864cdf0e10cSrcweir rStream << ( b = bInclBackground );
865cdf0e10cSrcweir rStream << ( b = bInclValueFormat );
866cdf0e10cSrcweir rStream << ( b = bInclWidthHeight );
867cdf0e10cSrcweir
868cdf0e10cSrcweir sal_Bool bRet = 0 == rStream.GetError();
869cdf0e10cSrcweir
870cdf0e10cSrcweir for( int i = 0; bRet && i < 16; ++i )
871cdf0e10cSrcweir {
872cdf0e10cSrcweir SwBoxAutoFmt* pFmt = aBoxAutoFmt[ i ];
873cdf0e10cSrcweir if( !pFmt ) // nicht gesetzt -> default schreiben
874cdf0e10cSrcweir {
875cdf0e10cSrcweir // falls noch nicht vorhanden:
876cdf0e10cSrcweir if( !pDfltBoxAutoFmt )
877cdf0e10cSrcweir pDfltBoxAutoFmt = new SwBoxAutoFmt;
878cdf0e10cSrcweir pFmt = pDfltBoxAutoFmt;
879cdf0e10cSrcweir }
880cdf0e10cSrcweir bRet = pFmt->Save( rStream );
881cdf0e10cSrcweir }
882cdf0e10cSrcweir return bRet;
883cdf0e10cSrcweir }
884cdf0e10cSrcweir
885cdf0e10cSrcweir
SwTableAutoFmtTbl()886cdf0e10cSrcweir SwTableAutoFmtTbl::SwTableAutoFmtTbl()
887cdf0e10cSrcweir {
888cdf0e10cSrcweir String sNm;
889cdf0e10cSrcweir SwTableAutoFmt* pNew = new SwTableAutoFmt(
890cdf0e10cSrcweir SwStyleNameMapper::GetUIName( RES_POOLCOLL_STANDARD, sNm ) );
891cdf0e10cSrcweir
892cdf0e10cSrcweir SwBoxAutoFmt aNew;
893cdf0e10cSrcweir
894cdf0e10cSrcweir sal_uInt8 i;
895cdf0e10cSrcweir
896cdf0e10cSrcweir Color aColor( COL_BLUE );
897cdf0e10cSrcweir SvxBrushItem aBrushItem( aColor, RES_BACKGROUND );
898cdf0e10cSrcweir aNew.SetBackground( aBrushItem );
899cdf0e10cSrcweir aNew.SetColor( SvxColorItem(Color( COL_WHITE ), RES_CHRATR_COLOR) );
900cdf0e10cSrcweir
901cdf0e10cSrcweir for( i = 0; i < 4; ++i )
902cdf0e10cSrcweir pNew->SetBoxFmt( aNew, i );
903cdf0e10cSrcweir
904cdf0e10cSrcweir // 70% Grau
905cdf0e10cSrcweir aBrushItem.SetColor( RGB_COLORDATA( 0x4d, 0x4d, 0x4d ) );
906cdf0e10cSrcweir aNew.SetBackground( aBrushItem );
907cdf0e10cSrcweir for( i = 4; i <= 12; i += 4 )
908cdf0e10cSrcweir pNew->SetBoxFmt( aNew, i );
909cdf0e10cSrcweir
910cdf0e10cSrcweir // 20% Grau
911cdf0e10cSrcweir aBrushItem.SetColor( RGB_COLORDATA( 0xcc, 0xcc, 0xcc ) );
912cdf0e10cSrcweir aNew.SetBackground( aBrushItem );
913cdf0e10cSrcweir aColor.SetColor( COL_BLACK );
914cdf0e10cSrcweir aNew.SetColor( SvxColorItem( aColor, RES_CHRATR_COLOR) );
915cdf0e10cSrcweir for( i = 7; i <= 15; i += 4 )
916cdf0e10cSrcweir pNew->SetBoxFmt( aNew, i );
917cdf0e10cSrcweir for( i = 13; i <= 14; ++i )
918cdf0e10cSrcweir pNew->SetBoxFmt( aNew, i );
919cdf0e10cSrcweir
920cdf0e10cSrcweir aBrushItem.SetColor( Color( COL_WHITE ) );
921cdf0e10cSrcweir aNew.SetBackground( aBrushItem );
922cdf0e10cSrcweir for( i = 5; i <= 6; ++i )
923cdf0e10cSrcweir pNew->SetBoxFmt( aNew, i );
924cdf0e10cSrcweir for( i = 9; i <= 10; ++i )
925cdf0e10cSrcweir pNew->SetBoxFmt( aNew, i );
926cdf0e10cSrcweir
927cdf0e10cSrcweir
928cdf0e10cSrcweir SvxBoxItem aBox( RES_BOX );
929cdf0e10cSrcweir aBox.SetDistance( 55 );
930cdf0e10cSrcweir SvxBorderLine aLn( &aColor, DEF_LINE_WIDTH_0 );
931cdf0e10cSrcweir aBox.SetLine( &aLn, BOX_LINE_LEFT );
932cdf0e10cSrcweir aBox.SetLine( &aLn, BOX_LINE_BOTTOM );
933cdf0e10cSrcweir
934cdf0e10cSrcweir for( i = 0; i <= 15; ++i )
935cdf0e10cSrcweir {
936cdf0e10cSrcweir aBox.SetLine( i <= 3 ? &aLn : 0, BOX_LINE_TOP );
937cdf0e10cSrcweir aBox.SetLine( (3 == ( i & 3 )) ? &aLn : 0, BOX_LINE_RIGHT );
938cdf0e10cSrcweir ((SwBoxAutoFmt&)pNew->GetBoxFmt( i )).SetBox( aBox );
939cdf0e10cSrcweir }
940cdf0e10cSrcweir
941cdf0e10cSrcweir Insert( pNew, Count() );
942cdf0e10cSrcweir }
943cdf0e10cSrcweir
Load()944cdf0e10cSrcweir sal_Bool SwTableAutoFmtTbl::Load()
945cdf0e10cSrcweir {
946cdf0e10cSrcweir sal_Bool bRet = sal_False;
947cdf0e10cSrcweir String sNm( String::CreateFromAscii(
948cdf0e10cSrcweir RTL_CONSTASCII_STRINGPARAM( sAutoTblFmtName )));
949cdf0e10cSrcweir SvtPathOptions aOpt;
950cdf0e10cSrcweir if( aOpt.SearchFile( sNm, SvtPathOptions::PATH_USERCONFIG ))
951cdf0e10cSrcweir {
952cdf0e10cSrcweir SfxMedium aStream( sNm, STREAM_STD_READ, sal_True );
953cdf0e10cSrcweir bRet = Load( *aStream.GetInStream() );
954cdf0e10cSrcweir }
955cdf0e10cSrcweir else
956cdf0e10cSrcweir bRet = sal_False;
957cdf0e10cSrcweir return bRet;
958cdf0e10cSrcweir }
959cdf0e10cSrcweir
Save() const960cdf0e10cSrcweir sal_Bool SwTableAutoFmtTbl::Save() const
961cdf0e10cSrcweir {
962cdf0e10cSrcweir SvtPathOptions aPathOpt;
963cdf0e10cSrcweir String sNm( aPathOpt.GetUserConfigPath() );
964cdf0e10cSrcweir sNm += INET_PATH_TOKEN;
965cdf0e10cSrcweir sNm.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sAutoTblFmtName ));
966cdf0e10cSrcweir SfxMedium aStream(sNm, STREAM_STD_WRITE, sal_True );
967cdf0e10cSrcweir return Save( *aStream.GetOutStream() ) && aStream.Commit();
968cdf0e10cSrcweir }
969cdf0e10cSrcweir
Load(SvStream & rStream)970cdf0e10cSrcweir sal_Bool SwTableAutoFmtTbl::Load( SvStream& rStream )
971cdf0e10cSrcweir {
972cdf0e10cSrcweir sal_Bool bRet = 0 == rStream.GetError();
973cdf0e10cSrcweir if (bRet)
974cdf0e10cSrcweir {
975cdf0e10cSrcweir // Achtung hier muss ein allgemeiner Header gelesen werden
976cdf0e10cSrcweir sal_uInt16 nVal = 0;
977cdf0e10cSrcweir rStream >> nVal;
978cdf0e10cSrcweir bRet = 0 == rStream.GetError();
979cdf0e10cSrcweir
980cdf0e10cSrcweir if( bRet )
981cdf0e10cSrcweir {
982cdf0e10cSrcweir SwAfVersions aVersions;
983cdf0e10cSrcweir
984cdf0e10cSrcweir if( nVal == AUTOFORMAT_ID_358 ||
985cdf0e10cSrcweir (AUTOFORMAT_ID_504 <= nVal && nVal <= AUTOFORMAT_ID) )
986cdf0e10cSrcweir {
987cdf0e10cSrcweir sal_uInt16 nFileVers = SOFFICE_FILEFORMAT_40;
988cdf0e10cSrcweir sal_uInt8 nChrSet, nCnt;
989cdf0e10cSrcweir long nPos = rStream.Tell();
990cdf0e10cSrcweir rStream >> nCnt >> nChrSet;
991cdf0e10cSrcweir // if( 4 <= nCnt )
992cdf0e10cSrcweir // rStream >> nFileVers;
993cdf0e10cSrcweir if( rStream.Tell() != sal_uLong(nPos + nCnt) )
994cdf0e10cSrcweir {
995870262e3SDon Lewis ASSERT( sal_False, "The header contains more / newer data" );
996cdf0e10cSrcweir rStream.Seek( nPos + nCnt );
997cdf0e10cSrcweir }
998cdf0e10cSrcweir rStream.SetStreamCharSet( (CharSet)nChrSet );
999cdf0e10cSrcweir rStream.SetVersion( nFileVers );
1000cdf0e10cSrcweir }
1001cdf0e10cSrcweir
1002cdf0e10cSrcweir if( nVal == AUTOFORMAT_ID_358 || nVal == AUTOFORMAT_ID_X ||
1003cdf0e10cSrcweir (AUTOFORMAT_ID_504 <= nVal && nVal <= AUTOFORMAT_ID) )
1004cdf0e10cSrcweir {
1005cdf0e10cSrcweir aVersions.Load( rStream, nVal ); // Item-Versionen
1006cdf0e10cSrcweir
1007cdf0e10cSrcweir SwTableAutoFmt* pNew;
1008cdf0e10cSrcweir sal_uInt16 nAnz = 0;
1009cdf0e10cSrcweir rStream >> nAnz;
1010cdf0e10cSrcweir
1011cdf0e10cSrcweir bRet = 0 == rStream.GetError();
1012cdf0e10cSrcweir
1013cdf0e10cSrcweir for( sal_uInt16 i = 0; i < nAnz; ++i )
1014cdf0e10cSrcweir {
1015cdf0e10cSrcweir pNew = new SwTableAutoFmt( aEmptyStr );
1016cdf0e10cSrcweir bRet = pNew->Load( rStream, aVersions );
1017cdf0e10cSrcweir if( bRet )
1018cdf0e10cSrcweir {
1019cdf0e10cSrcweir Insert( pNew, Count() );
1020cdf0e10cSrcweir }
1021cdf0e10cSrcweir else
1022cdf0e10cSrcweir {
1023cdf0e10cSrcweir delete pNew;
1024cdf0e10cSrcweir break;
1025cdf0e10cSrcweir }
1026cdf0e10cSrcweir }
1027cdf0e10cSrcweir }
1028cdf0e10cSrcweir #ifdef READ_OLDVERS
1029cdf0e10cSrcweir else if( AUTOFORMAT_OLD_ID == nVal || AUTOFORMAT_OLD_ID1 == nVal )
1030cdf0e10cSrcweir {
1031cdf0e10cSrcweir SwTableAutoFmt* pNew;
1032cdf0e10cSrcweir sal_uInt16 nAnz = 0;
1033cdf0e10cSrcweir rStream >> nAnz;
1034cdf0e10cSrcweir
1035cdf0e10cSrcweir sal_uInt16 aArr[ 12 ];
1036cdf0e10cSrcweir memset( aArr, 0, 12 * sizeof( sal_uInt16 ) );
1037cdf0e10cSrcweir if( AUTOFORMAT_OLD_ID1 == nVal )
1038cdf0e10cSrcweir for( sal_uInt16 n = 0; n < 12; ++n )
1039cdf0e10cSrcweir rStream >> aArr[ n ];
1040cdf0e10cSrcweir
1041cdf0e10cSrcweir bRet = 0 == rStream.GetError();
1042cdf0e10cSrcweir
1043cdf0e10cSrcweir for( sal_uInt16 i = 0; i < nAnz; ++i )
1044cdf0e10cSrcweir {
1045cdf0e10cSrcweir pNew = new SwTableAutoFmt( aEmptyStr );
1046cdf0e10cSrcweir bRet = pNew->LoadOld( rStream, aArr );
1047cdf0e10cSrcweir if( bRet )
1048cdf0e10cSrcweir {
1049cdf0e10cSrcweir Insert( pNew, Count() );
1050cdf0e10cSrcweir }
1051cdf0e10cSrcweir else
1052cdf0e10cSrcweir {
1053cdf0e10cSrcweir delete pNew;
1054cdf0e10cSrcweir break;
1055cdf0e10cSrcweir }
1056cdf0e10cSrcweir }
1057cdf0e10cSrcweir }
1058cdf0e10cSrcweir #endif
1059cdf0e10cSrcweir }
1060cdf0e10cSrcweir }
1061cdf0e10cSrcweir return bRet;
1062cdf0e10cSrcweir }
1063cdf0e10cSrcweir
1064cdf0e10cSrcweir
Save(SvStream & rStream) const1065cdf0e10cSrcweir sal_Bool SwTableAutoFmtTbl::Save( SvStream& rStream ) const
1066cdf0e10cSrcweir {
1067cdf0e10cSrcweir sal_Bool bRet = 0 == rStream.GetError();
1068cdf0e10cSrcweir if (bRet)
1069cdf0e10cSrcweir {
1070cdf0e10cSrcweir rStream.SetVersion( SOFFICE_FILEFORMAT_40 );
1071cdf0e10cSrcweir
1072cdf0e10cSrcweir // Achtung hier muss ein allgemeiner Header gespeichert werden
1073cdf0e10cSrcweir sal_uInt16 nVal = AUTOFORMAT_ID;
1074cdf0e10cSrcweir rStream << nVal
1075cdf0e10cSrcweir << (sal_uInt8)2 // Anzahl von Zeichen des Headers incl. diesem
1076cdf0e10cSrcweir << (sal_uInt8)GetStoreCharSet( ::gsl_getSystemTextEncoding() );
1077cdf0e10cSrcweir // << (sal_uInt8)4 // Anzahl von Zeichen des Headers incl. diesem
1078cdf0e10cSrcweir // << (sal_uInt8)::GetSystemCharSet()
1079cdf0e10cSrcweir // << (UNIT16)SOFFICE_FILEFORMAT_NOW;
1080cdf0e10cSrcweir bRet = 0 == rStream.GetError();
1081cdf0e10cSrcweir
1082cdf0e10cSrcweir //-----------------------------------------------------------
1083cdf0e10cSrcweir // die VersionsNummer fuer alle Attribute schreiben
1084*7114c7e9Smseidel (*this)[ 0 ]->GetBoxFmt( 0 ).SaveVersionNo( rStream );
1085cdf0e10cSrcweir
1086cdf0e10cSrcweir rStream << (sal_uInt16)(Count() - 1);
1087cdf0e10cSrcweir bRet = 0 == rStream.GetError();
1088cdf0e10cSrcweir
1089cdf0e10cSrcweir for( sal_uInt16 i = 1; bRet && i < Count(); ++i )
1090cdf0e10cSrcweir {
1091cdf0e10cSrcweir SwTableAutoFmt* pFmt = (*this)[ i ];
1092cdf0e10cSrcweir bRet = pFmt->Save( rStream );
1093cdf0e10cSrcweir }
1094cdf0e10cSrcweir }
1095cdf0e10cSrcweir rStream.Flush();
1096cdf0e10cSrcweir return bRet;
1097cdf0e10cSrcweir }
1098