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_sc.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielski //------------------------------------------------------------------
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski #include "scitems.hxx"
32*b1cdbd2cSJim Jagielski #include <svx/algitem.hxx>
33*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
34*b1cdbd2cSJim Jagielski #include <editeng/brshitem.hxx>
35*b1cdbd2cSJim Jagielski #include <editeng/cntritem.hxx>
36*b1cdbd2cSJim Jagielski #include <editeng/colritem.hxx>
37*b1cdbd2cSJim Jagielski #include <editeng/crsditem.hxx>
38*b1cdbd2cSJim Jagielski #include <editeng/fontitem.hxx>
39*b1cdbd2cSJim Jagielski #include <editeng/postitem.hxx>
40*b1cdbd2cSJim Jagielski #include <editeng/shdditem.hxx>
41*b1cdbd2cSJim Jagielski #include <editeng/udlnitem.hxx>
42*b1cdbd2cSJim Jagielski #include <editeng/wghtitem.hxx>
43*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
44*b1cdbd2cSJim Jagielski #include <svl/zforlist.hxx>
45*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
46*b1cdbd2cSJim Jagielski #include <sfx2/viewfrm.hxx>
47*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski #include "sc.hrc"
50*b1cdbd2cSJim Jagielski #include "scmod.hxx"
51*b1cdbd2cSJim Jagielski #include "attrib.hxx"
52*b1cdbd2cSJim Jagielski #include "zforauto.hxx"
53*b1cdbd2cSJim Jagielski #include "scitems.hxx"
54*b1cdbd2cSJim Jagielski #include "global.hxx"
55*b1cdbd2cSJim Jagielski #include "globstr.hrc"
56*b1cdbd2cSJim Jagielski #include "autoform.hxx"
57*b1cdbd2cSJim Jagielski //CHINA001 #include "strindlg.hxx"
58*b1cdbd2cSJim Jagielski #include "miscdlgs.hrc"
59*b1cdbd2cSJim Jagielski #include "autofmt.hxx"
60*b1cdbd2cSJim Jagielski #include "scresid.hxx"
61*b1cdbd2cSJim Jagielski #include "document.hxx"
62*b1cdbd2cSJim Jagielski #include "docsh.hxx"
63*b1cdbd2cSJim Jagielski #include "tabvwsh.hxx"
64*b1cdbd2cSJim Jagielski
65*b1cdbd2cSJim Jagielski #define FRAME_OFFSET 4
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski //CHINA001 //========================================================================
69*b1cdbd2cSJim Jagielski //CHINA001 // AutoFormat-Dialog:
70*b1cdbd2cSJim Jagielski //CHINA001
71*b1cdbd2cSJim Jagielski //CHINA001 ScAutoFormatDlg::ScAutoFormatDlg( Window* pParent,
72*b1cdbd2cSJim Jagielski //CHINA001 ScAutoFormat* pAutoFormat,
73*b1cdbd2cSJim Jagielski //CHINA001 const ScAutoFormatData* pSelFormatData,
74*b1cdbd2cSJim Jagielski //CHINA001 ScDocument* pDoc ) :
75*b1cdbd2cSJim Jagielski //CHINA001
76*b1cdbd2cSJim Jagielski //CHINA001 ModalDialog ( pParent, ScResId( RID_SCDLG_AUTOFORMAT ) ),
77*b1cdbd2cSJim Jagielski //CHINA001 //
78*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat ( this, ScResId( LB_FORMAT ) ),
79*b1cdbd2cSJim Jagielski //CHINA001 aFlFormat ( this, ScResId( FL_FORMAT ) ),
80*b1cdbd2cSJim Jagielski //CHINA001 pWndPreview ( new ScAutoFmtPreview( this, ScResId( WND_PREVIEW ), pDoc ) ),
81*b1cdbd2cSJim Jagielski //CHINA001 aBtnNumFormat ( this, ScResId( BTN_NUMFORMAT ) ),
82*b1cdbd2cSJim Jagielski //CHINA001 aBtnBorder ( this, ScResId( BTN_BORDER ) ),
83*b1cdbd2cSJim Jagielski //CHINA001 aBtnFont ( this, ScResId( BTN_FONT ) ),
84*b1cdbd2cSJim Jagielski //CHINA001 aBtnPattern ( this, ScResId( BTN_PATTERN ) ),
85*b1cdbd2cSJim Jagielski //CHINA001 aBtnAlignment ( this, ScResId( BTN_ALIGNMENT ) ),
86*b1cdbd2cSJim Jagielski //CHINA001 aBtnAdjust ( this, ScResId( BTN_ADJUST ) ),
87*b1cdbd2cSJim Jagielski //CHINA001 aFlFormatting ( this, ScResId( FL_FORMATTING ) ),
88*b1cdbd2cSJim Jagielski //CHINA001 aBtnOk ( this, ScResId( BTN_OK ) ),
89*b1cdbd2cSJim Jagielski //CHINA001 aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
90*b1cdbd2cSJim Jagielski //CHINA001 aBtnHelp ( this, ScResId( BTN_HELP ) ),
91*b1cdbd2cSJim Jagielski //CHINA001 aBtnAdd ( this, ScResId( BTN_ADD ) ),
92*b1cdbd2cSJim Jagielski //CHINA001 aBtnRemove ( this, ScResId( BTN_REMOVE ) ),
93*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore ( this, ScResId( BTN_MORE ) ),
94*b1cdbd2cSJim Jagielski //CHINA001 aBtnRename ( this, ScResId( BTN_RENAME ) ),
95*b1cdbd2cSJim Jagielski //CHINA001 aStrTitle ( ScResId( STR_ADD_TITLE ) ),
96*b1cdbd2cSJim Jagielski //CHINA001 aStrLabel ( ScResId( STR_ADD_LABEL ) ),
97*b1cdbd2cSJim Jagielski //CHINA001 aStrRename ( ScResId( STR_RENAME_TITLE ) ),
98*b1cdbd2cSJim Jagielski //CHINA001 aStrClose ( ScResId( STR_BTN_CLOSE ) ),
99*b1cdbd2cSJim Jagielski //CHINA001 aStrDelTitle ( ScResId( STR_DEL_TITLE ) ),
100*b1cdbd2cSJim Jagielski //CHINA001 aStrDelMsg ( ScResId( STR_DEL_MSG ) ) ,
101*b1cdbd2cSJim Jagielski //CHINA001 //
102*b1cdbd2cSJim Jagielski //CHINA001 nIndex ( 0 ),
103*b1cdbd2cSJim Jagielski //CHINA001 bFmtInserted ( sal_False ),
104*b1cdbd2cSJim Jagielski //CHINA001 bCoreDataChanged( sal_False ),
105*b1cdbd2cSJim Jagielski //CHINA001 pFormat ( pAutoFormat ),
106*b1cdbd2cSJim Jagielski //CHINA001 pSelFmtData ( pSelFormatData )
107*b1cdbd2cSJim Jagielski //CHINA001 {
108*b1cdbd2cSJim Jagielski //CHINA001 Init();
109*b1cdbd2cSJim Jagielski //CHINA001 pWndPreview->NotifyChange( (*pFormat)[0] );
110*b1cdbd2cSJim Jagielski //CHINA001 FreeResource();
111*b1cdbd2cSJim Jagielski //CHINA001 }
112*b1cdbd2cSJim Jagielski //CHINA001
113*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
114*b1cdbd2cSJim Jagielski //CHINA001
115*b1cdbd2cSJim Jagielski //CHINA001 ScAutoFormatDlg::~ScAutoFormatDlg()
116*b1cdbd2cSJim Jagielski //CHINA001 {
117*b1cdbd2cSJim Jagielski //CHINA001 delete pWndPreview;
118*b1cdbd2cSJim Jagielski //CHINA001 }
119*b1cdbd2cSJim Jagielski //CHINA001
120*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
121*b1cdbd2cSJim Jagielski //CHINA001
122*b1cdbd2cSJim Jagielski //CHINA001 void ScAutoFormatDlg::Init()
123*b1cdbd2cSJim Jagielski //CHINA001 {
124*b1cdbd2cSJim Jagielski //CHINA001 sal_uInt16 nCount;
125*b1cdbd2cSJim Jagielski //CHINA001 String aEntry;
126*b1cdbd2cSJim Jagielski //CHINA001
127*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat .SetSelectHdl( LINK( this, ScAutoFormatDlg, SelFmtHdl ) );
128*b1cdbd2cSJim Jagielski //CHINA001 aBtnNumFormat.SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
129*b1cdbd2cSJim Jagielski //CHINA001 aBtnBorder .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
130*b1cdbd2cSJim Jagielski //CHINA001 aBtnFont .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
131*b1cdbd2cSJim Jagielski //CHINA001 aBtnPattern .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
132*b1cdbd2cSJim Jagielski //CHINA001 aBtnAlignment.SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
133*b1cdbd2cSJim Jagielski //CHINA001 aBtnAdjust .SetClickHdl ( LINK( this, ScAutoFormatDlg, CheckHdl ) );
134*b1cdbd2cSJim Jagielski //CHINA001 aBtnAdd .SetClickHdl ( LINK( this, ScAutoFormatDlg, AddHdl ) );
135*b1cdbd2cSJim Jagielski //CHINA001 aBtnRemove .SetClickHdl ( LINK( this, ScAutoFormatDlg, RemoveHdl ) );
136*b1cdbd2cSJim Jagielski //CHINA001 aBtnOk .SetClickHdl ( LINK( this, ScAutoFormatDlg, CloseHdl ) );
137*b1cdbd2cSJim Jagielski //CHINA001 aBtnCancel .SetClickHdl ( LINK( this, ScAutoFormatDlg, CloseHdl ) );
138*b1cdbd2cSJim Jagielski //CHINA001 aBtnRename .SetClickHdl ( LINK( this, ScAutoFormatDlg, RenameHdl ) );
139*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat .SetDoubleClickHdl( LINK( this, ScAutoFormatDlg, DblClkHdl ) );
140*b1cdbd2cSJim Jagielski //CHINA001
141*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore.AddWindow( &aBtnRename );
142*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore.AddWindow( &aBtnNumFormat );
143*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore.AddWindow( &aBtnBorder );
144*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore.AddWindow( &aBtnFont );
145*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore.AddWindow( &aBtnPattern );
146*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore.AddWindow( &aBtnAlignment );
147*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore.AddWindow( &aBtnAdjust );
148*b1cdbd2cSJim Jagielski //CHINA001 aBtnMore.AddWindow( &aFlFormatting );
149*b1cdbd2cSJim Jagielski //CHINA001
150*b1cdbd2cSJim Jagielski //CHINA001 nCount = pFormat->GetCount();
151*b1cdbd2cSJim Jagielski //CHINA001
152*b1cdbd2cSJim Jagielski //CHINA001 for ( sal_uInt16 i = 0; i < nCount; i++ )
153*b1cdbd2cSJim Jagielski //CHINA001 {
154*b1cdbd2cSJim Jagielski //CHINA001 ((*pFormat)[i])->GetName( aEntry );
155*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.InsertEntry( aEntry );
156*b1cdbd2cSJim Jagielski //CHINA001 }
157*b1cdbd2cSJim Jagielski //CHINA001
158*b1cdbd2cSJim Jagielski //CHINA001 if ( nCount == 1 )
159*b1cdbd2cSJim Jagielski //CHINA001 aBtnRemove.Disable();
160*b1cdbd2cSJim Jagielski //CHINA001
161*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.SelectEntryPos( 0 );
162*b1cdbd2cSJim Jagielski //CHINA001 aBtnRename.Disable();
163*b1cdbd2cSJim Jagielski //CHINA001 aBtnRemove.Disable();
164*b1cdbd2cSJim Jagielski //CHINA001
165*b1cdbd2cSJim Jagielski //CHINA001 nIndex = 0;
166*b1cdbd2cSJim Jagielski //CHINA001 UpdateChecks();
167*b1cdbd2cSJim Jagielski //CHINA001
168*b1cdbd2cSJim Jagielski //CHINA001 if ( !pSelFmtData )
169*b1cdbd2cSJim Jagielski //CHINA001 {
170*b1cdbd2cSJim Jagielski //CHINA001 aBtnAdd.Disable();
171*b1cdbd2cSJim Jagielski //CHINA001 aBtnRemove.Disable();
172*b1cdbd2cSJim Jagielski //CHINA001 bFmtInserted = sal_True;
173*b1cdbd2cSJim Jagielski //CHINA001 }
174*b1cdbd2cSJim Jagielski //CHINA001 }
175*b1cdbd2cSJim Jagielski //CHINA001
176*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
177*b1cdbd2cSJim Jagielski //CHINA001
178*b1cdbd2cSJim Jagielski //CHINA001 void ScAutoFormatDlg::UpdateChecks()
179*b1cdbd2cSJim Jagielski //CHINA001 {
180*b1cdbd2cSJim Jagielski //CHINA001 ScAutoFormatData* pData = (*pFormat)[nIndex];
181*b1cdbd2cSJim Jagielski //CHINA001
182*b1cdbd2cSJim Jagielski //CHINA001 aBtnNumFormat.Check( pData->GetIncludeValueFormat() );
183*b1cdbd2cSJim Jagielski //CHINA001 aBtnBorder .Check( pData->GetIncludeFrame() );
184*b1cdbd2cSJim Jagielski //CHINA001 aBtnFont .Check( pData->GetIncludeFont() );
185*b1cdbd2cSJim Jagielski //CHINA001 aBtnPattern .Check( pData->GetIncludeBackground() );
186*b1cdbd2cSJim Jagielski //CHINA001 aBtnAlignment.Check( pData->GetIncludeJustify() );
187*b1cdbd2cSJim Jagielski //CHINA001 aBtnAdjust .Check( pData->GetIncludeWidthHeight() );
188*b1cdbd2cSJim Jagielski //CHINA001 }
189*b1cdbd2cSJim Jagielski //CHINA001
190*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
191*b1cdbd2cSJim Jagielski //CHINA001 // Handler:
192*b1cdbd2cSJim Jagielski //CHINA001 //---------
193*b1cdbd2cSJim Jagielski //CHINA001
194*b1cdbd2cSJim Jagielski //CHINA001 IMPL_LINK( ScAutoFormatDlg, CloseHdl, PushButton *, pBtn )
195*b1cdbd2cSJim Jagielski //CHINA001 {
196*b1cdbd2cSJim Jagielski //CHINA001 if ( pBtn == &aBtnOk || pBtn == &aBtnCancel )
197*b1cdbd2cSJim Jagielski //CHINA001 {
198*b1cdbd2cSJim Jagielski //CHINA001 if ( bCoreDataChanged )
199*b1cdbd2cSJim Jagielski //CHINA001 ScGlobal::GetAutoFormat()->Save();
200*b1cdbd2cSJim Jagielski //CHINA001
201*b1cdbd2cSJim Jagielski //CHINA001 EndDialog( (pBtn == &aBtnOk) ? RET_OK : RET_CANCEL );
202*b1cdbd2cSJim Jagielski //CHINA001 }
203*b1cdbd2cSJim Jagielski //CHINA001 return 0;
204*b1cdbd2cSJim Jagielski //CHINA001 }
205*b1cdbd2cSJim Jagielski //CHINA001
206*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
207*b1cdbd2cSJim Jagielski //CHINA001
208*b1cdbd2cSJim Jagielski //CHINA001 IMPL_LINK_INLINE_START( ScAutoFormatDlg, DblClkHdl, void *, EMPTYARG )
209*b1cdbd2cSJim Jagielski //CHINA001 {
210*b1cdbd2cSJim Jagielski //CHINA001 if ( bCoreDataChanged )
211*b1cdbd2cSJim Jagielski //CHINA001 ScGlobal::GetAutoFormat()->Save();
212*b1cdbd2cSJim Jagielski //CHINA001
213*b1cdbd2cSJim Jagielski //CHINA001 EndDialog( RET_OK );
214*b1cdbd2cSJim Jagielski //CHINA001 return 0;
215*b1cdbd2cSJim Jagielski //CHINA001 }
216*b1cdbd2cSJim Jagielski //CHINA001 IMPL_LINK_INLINE_END( ScAutoFormatDlg, DblClkHdl, void *, EMPTYARG )
217*b1cdbd2cSJim Jagielski //CHINA001
218*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
219*b1cdbd2cSJim Jagielski //CHINA001
220*b1cdbd2cSJim Jagielski //CHINA001 IMPL_LINK( ScAutoFormatDlg, CheckHdl, Button *, pBtn )
221*b1cdbd2cSJim Jagielski //CHINA001 {
222*b1cdbd2cSJim Jagielski //CHINA001 ScAutoFormatData* pData = (*pFormat)[nIndex];
223*b1cdbd2cSJim Jagielski //CHINA001 sal_Bool bCheck = ((CheckBox*)pBtn)->IsChecked();
224*b1cdbd2cSJim Jagielski //CHINA001
225*b1cdbd2cSJim Jagielski //CHINA001 if ( pBtn == &aBtnNumFormat )
226*b1cdbd2cSJim Jagielski //CHINA001 pData->SetIncludeValueFormat( bCheck );
227*b1cdbd2cSJim Jagielski //CHINA001 else if ( pBtn == &aBtnBorder )
228*b1cdbd2cSJim Jagielski //CHINA001 pData->SetIncludeFrame( bCheck );
229*b1cdbd2cSJim Jagielski //CHINA001 else if ( pBtn == &aBtnFont )
230*b1cdbd2cSJim Jagielski //CHINA001 pData->SetIncludeFont( bCheck );
231*b1cdbd2cSJim Jagielski //CHINA001 else if ( pBtn == &aBtnPattern )
232*b1cdbd2cSJim Jagielski //CHINA001 pData->SetIncludeBackground( bCheck );
233*b1cdbd2cSJim Jagielski //CHINA001 else if ( pBtn == &aBtnAlignment )
234*b1cdbd2cSJim Jagielski //CHINA001 pData->SetIncludeJustify( bCheck );
235*b1cdbd2cSJim Jagielski //CHINA001 else if ( pBtn == &aBtnAdjust )
236*b1cdbd2cSJim Jagielski //CHINA001 pData->SetIncludeWidthHeight( bCheck );
237*b1cdbd2cSJim Jagielski //CHINA001
238*b1cdbd2cSJim Jagielski //CHINA001 if ( !bCoreDataChanged )
239*b1cdbd2cSJim Jagielski //CHINA001 {
240*b1cdbd2cSJim Jagielski //CHINA001 aBtnCancel.SetText( aStrClose );
241*b1cdbd2cSJim Jagielski //CHINA001 bCoreDataChanged = sal_True;
242*b1cdbd2cSJim Jagielski //CHINA001 }
243*b1cdbd2cSJim Jagielski //CHINA001
244*b1cdbd2cSJim Jagielski //CHINA001 pWndPreview->NotifyChange( pData );
245*b1cdbd2cSJim Jagielski //CHINA001
246*b1cdbd2cSJim Jagielski //CHINA001 return 0;
247*b1cdbd2cSJim Jagielski //CHINA001 }
248*b1cdbd2cSJim Jagielski //CHINA001
249*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
250*b1cdbd2cSJim Jagielski //CHINA001
251*b1cdbd2cSJim Jagielski //CHINA001 IMPL_LINK( ScAutoFormatDlg, AddHdl, void *, EMPTYARG )
252*b1cdbd2cSJim Jagielski //CHINA001 {
253*b1cdbd2cSJim Jagielski //CHINA001 if ( !bFmtInserted && pSelFmtData )
254*b1cdbd2cSJim Jagielski //CHINA001 {
255*b1cdbd2cSJim Jagielski //CHINA001 String aStrStandard( ScResId(STR_STANDARD) );
256*b1cdbd2cSJim Jagielski //CHINA001 String aFormatName;
257*b1cdbd2cSJim Jagielski //CHINA001 ScStringInputDlg* pDlg;
258*b1cdbd2cSJim Jagielski //CHINA001 sal_Bool bOk = sal_False;
259*b1cdbd2cSJim Jagielski //CHINA001
260*b1cdbd2cSJim Jagielski //CHINA001 while ( !bOk )
261*b1cdbd2cSJim Jagielski //CHINA001 {
262*b1cdbd2cSJim Jagielski //CHINA001 pDlg = new ScStringInputDlg( this,
263*b1cdbd2cSJim Jagielski //CHINA001 aStrTitle,
264*b1cdbd2cSJim Jagielski //CHINA001 aStrLabel,
265*b1cdbd2cSJim Jagielski //CHINA001 aFormatName,
266*b1cdbd2cSJim Jagielski //CHINA001 HID_SC_ADD_AUTOFMT );
267*b1cdbd2cSJim Jagielski //CHINA001
268*b1cdbd2cSJim Jagielski //CHINA001 if ( pDlg->Execute() == RET_OK )
269*b1cdbd2cSJim Jagielski //CHINA001 {
270*b1cdbd2cSJim Jagielski //CHINA001 pDlg->GetInputString( aFormatName );
271*b1cdbd2cSJim Jagielski //CHINA001
272*b1cdbd2cSJim Jagielski //CHINA001 if ( (aFormatName.Len() > 0) && (aFormatName != aStrStandard) )
273*b1cdbd2cSJim Jagielski //CHINA001 {
274*b1cdbd2cSJim Jagielski //CHINA001 ScAutoFormatData* pNewData
275*b1cdbd2cSJim Jagielski //CHINA001 = new ScAutoFormatData( *pSelFmtData );
276*b1cdbd2cSJim Jagielski //CHINA001
277*b1cdbd2cSJim Jagielski //CHINA001 pNewData->SetName( aFormatName );
278*b1cdbd2cSJim Jagielski //CHINA001 bFmtInserted = pFormat->Insert( pNewData );
279*b1cdbd2cSJim Jagielski //CHINA001
280*b1cdbd2cSJim Jagielski //CHINA001 if ( bFmtInserted )
281*b1cdbd2cSJim Jagielski //CHINA001 {
282*b1cdbd2cSJim Jagielski //CHINA001 sal_uInt16 nAt = pFormat->IndexOf( pNewData );
283*b1cdbd2cSJim Jagielski //CHINA001
284*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.InsertEntry( aFormatName, nAt );
285*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.SelectEntry( aFormatName );
286*b1cdbd2cSJim Jagielski //CHINA001 aBtnAdd.Disable();
287*b1cdbd2cSJim Jagielski //CHINA001
288*b1cdbd2cSJim Jagielski //CHINA001 if ( !bCoreDataChanged )
289*b1cdbd2cSJim Jagielski //CHINA001 {
290*b1cdbd2cSJim Jagielski //CHINA001 aBtnCancel.SetText( aStrClose );
291*b1cdbd2cSJim Jagielski //CHINA001 bCoreDataChanged = sal_True;
292*b1cdbd2cSJim Jagielski //CHINA001 }
293*b1cdbd2cSJim Jagielski //CHINA001
294*b1cdbd2cSJim Jagielski //CHINA001 SelFmtHdl( 0 );
295*b1cdbd2cSJim Jagielski //CHINA001 bOk = sal_True;
296*b1cdbd2cSJim Jagielski //CHINA001 }
297*b1cdbd2cSJim Jagielski //CHINA001 else
298*b1cdbd2cSJim Jagielski //CHINA001 delete pNewData;
299*b1cdbd2cSJim Jagielski //CHINA001
300*b1cdbd2cSJim Jagielski //CHINA001 }
301*b1cdbd2cSJim Jagielski //CHINA001
302*b1cdbd2cSJim Jagielski //CHINA001 if ( !bFmtInserted )
303*b1cdbd2cSJim Jagielski //CHINA001 {
304*b1cdbd2cSJim Jagielski //CHINA001 sal_uInt16 nRet = ErrorBox( this,
305*b1cdbd2cSJim Jagielski //CHINA001 WinBits( WB_OK_CANCEL | WB_DEF_OK),
306*b1cdbd2cSJim Jagielski //CHINA001 ScGlobal::GetRscString(STR_INVALID_AFNAME)
307*b1cdbd2cSJim Jagielski //CHINA001 ).Execute();
308*b1cdbd2cSJim Jagielski //CHINA001
309*b1cdbd2cSJim Jagielski //CHINA001 bOk = ( nRet == RET_CANCEL );
310*b1cdbd2cSJim Jagielski //CHINA001 }
311*b1cdbd2cSJim Jagielski //CHINA001 }
312*b1cdbd2cSJim Jagielski //CHINA001 else
313*b1cdbd2cSJim Jagielski //CHINA001 bOk = sal_True;
314*b1cdbd2cSJim Jagielski //CHINA001
315*b1cdbd2cSJim Jagielski //CHINA001 delete pDlg;
316*b1cdbd2cSJim Jagielski //CHINA001 }
317*b1cdbd2cSJim Jagielski //CHINA001 }
318*b1cdbd2cSJim Jagielski //CHINA001
319*b1cdbd2cSJim Jagielski //CHINA001 return 0;
320*b1cdbd2cSJim Jagielski //CHINA001 }
321*b1cdbd2cSJim Jagielski //CHINA001
322*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
323*b1cdbd2cSJim Jagielski //CHINA001
324*b1cdbd2cSJim Jagielski //CHINA001 IMPL_LINK( ScAutoFormatDlg, RemoveHdl, void *, EMPTYARG )
325*b1cdbd2cSJim Jagielski //CHINA001 {
326*b1cdbd2cSJim Jagielski //CHINA001 if ( (nIndex > 0) && (aLbFormat.GetEntryCount() > 0) )
327*b1cdbd2cSJim Jagielski //CHINA001 {
328*b1cdbd2cSJim Jagielski //CHINA001 String aMsg( aStrDelMsg.GetToken( 0, '#' ) );
329*b1cdbd2cSJim Jagielski //CHINA001
330*b1cdbd2cSJim Jagielski //CHINA001 aMsg += aLbFormat.GetSelectEntry();
331*b1cdbd2cSJim Jagielski //CHINA001 aMsg += aStrDelMsg.GetToken( 1, '#' );
332*b1cdbd2cSJim Jagielski //CHINA001
333*b1cdbd2cSJim Jagielski //CHINA001 if ( RET_YES ==
334*b1cdbd2cSJim Jagielski //CHINA001 QueryBox( this, WinBits( WB_YES_NO | WB_DEF_YES ), aMsg ).Execute() )
335*b1cdbd2cSJim Jagielski //CHINA001 {
336*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.RemoveEntry( nIndex );
337*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.SelectEntryPos( nIndex-1 );
338*b1cdbd2cSJim Jagielski //CHINA001
339*b1cdbd2cSJim Jagielski //CHINA001 if ( nIndex-1 == 0 )
340*b1cdbd2cSJim Jagielski //CHINA001 aBtnRemove.Disable();
341*b1cdbd2cSJim Jagielski //CHINA001
342*b1cdbd2cSJim Jagielski //CHINA001 if ( !bCoreDataChanged )
343*b1cdbd2cSJim Jagielski //CHINA001 {
344*b1cdbd2cSJim Jagielski //CHINA001 aBtnCancel.SetText( aStrClose );
345*b1cdbd2cSJim Jagielski //CHINA001 bCoreDataChanged = sal_True;
346*b1cdbd2cSJim Jagielski //CHINA001 }
347*b1cdbd2cSJim Jagielski //CHINA001
348*b1cdbd2cSJim Jagielski //CHINA001 pFormat->AtFree( nIndex ); // in der Core loeschen
349*b1cdbd2cSJim Jagielski //CHINA001 nIndex--;
350*b1cdbd2cSJim Jagielski //CHINA001
351*b1cdbd2cSJim Jagielski //CHINA001 SelFmtHdl( 0 );
352*b1cdbd2cSJim Jagielski //CHINA001 }
353*b1cdbd2cSJim Jagielski //CHINA001 }
354*b1cdbd2cSJim Jagielski //CHINA001
355*b1cdbd2cSJim Jagielski //CHINA001 SelFmtHdl( 0 );
356*b1cdbd2cSJim Jagielski //CHINA001
357*b1cdbd2cSJim Jagielski //CHINA001 return 0;
358*b1cdbd2cSJim Jagielski //CHINA001 }
359*b1cdbd2cSJim Jagielski //CHINA001
360*b1cdbd2cSJim Jagielski //CHINA001 IMPL_LINK( ScAutoFormatDlg, RenameHdl, void *, pBtn)
361*b1cdbd2cSJim Jagielski //CHINA001 {
362*b1cdbd2cSJim Jagielski //CHINA001 sal_Bool bOk = sal_False;
363*b1cdbd2cSJim Jagielski //CHINA001 while( !bOk )
364*b1cdbd2cSJim Jagielski //CHINA001 {
365*b1cdbd2cSJim Jagielski //CHINA001
366*b1cdbd2cSJim Jagielski //CHINA001 String aFormatName=aLbFormat.GetSelectEntry();
367*b1cdbd2cSJim Jagielski //CHINA001 String aEntry;
368*b1cdbd2cSJim Jagielski //CHINA001
369*b1cdbd2cSJim Jagielski //CHINA001 ScStringInputDlg* pDlg = new ScStringInputDlg( this,
370*b1cdbd2cSJim Jagielski //CHINA001 aStrRename,
371*b1cdbd2cSJim Jagielski //CHINA001 aStrLabel,
372*b1cdbd2cSJim Jagielski //CHINA001 aFormatName,
373*b1cdbd2cSJim Jagielski //CHINA001 HID_SC_RENAME_AUTOFMT );
374*b1cdbd2cSJim Jagielski //CHINA001 if( pDlg->Execute() == RET_OK )
375*b1cdbd2cSJim Jagielski //CHINA001 {
376*b1cdbd2cSJim Jagielski //CHINA001 sal_Bool bFmtRenamed = sal_False;
377*b1cdbd2cSJim Jagielski //CHINA001 pDlg->GetInputString( aFormatName );
378*b1cdbd2cSJim Jagielski //CHINA001 sal_uInt16 n;
379*b1cdbd2cSJim Jagielski //CHINA001
380*b1cdbd2cSJim Jagielski //CHINA001 if ( aFormatName.Len() > 0 )
381*b1cdbd2cSJim Jagielski //CHINA001 {
382*b1cdbd2cSJim Jagielski //CHINA001 for( n = 0; n < pFormat->GetCount(); ++n )
383*b1cdbd2cSJim Jagielski //CHINA001 {
384*b1cdbd2cSJim Jagielski //CHINA001 (*pFormat)[n]->GetName(aEntry);
385*b1cdbd2cSJim Jagielski //CHINA001 if ( aEntry== aFormatName)
386*b1cdbd2cSJim Jagielski //CHINA001 break;
387*b1cdbd2cSJim Jagielski //CHINA001 }
388*b1cdbd2cSJim Jagielski //CHINA001 if( n >= pFormat->GetCount() )
389*b1cdbd2cSJim Jagielski //CHINA001 {
390*b1cdbd2cSJim Jagielski //CHINA001 // Format mit dem Namen noch nicht vorhanden, also
391*b1cdbd2cSJim Jagielski //CHINA001 // umbenennen
392*b1cdbd2cSJim Jagielski //CHINA001
393*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.RemoveEntry(nIndex );
394*b1cdbd2cSJim Jagielski //CHINA001 ScAutoFormatData* p=(*pFormat)[ nIndex ];
395*b1cdbd2cSJim Jagielski //CHINA001 ScAutoFormatData* pNewData
396*b1cdbd2cSJim Jagielski //CHINA001 = new ScAutoFormatData(*p);
397*b1cdbd2cSJim Jagielski //CHINA001
398*b1cdbd2cSJim Jagielski //CHINA001 pFormat->AtFree( nIndex );
399*b1cdbd2cSJim Jagielski //CHINA001
400*b1cdbd2cSJim Jagielski //CHINA001 pNewData->SetName( aFormatName );
401*b1cdbd2cSJim Jagielski //CHINA001
402*b1cdbd2cSJim Jagielski //CHINA001 pFormat->Insert( pNewData);
403*b1cdbd2cSJim Jagielski //CHINA001
404*b1cdbd2cSJim Jagielski //CHINA001 sal_uInt16 nCount = pFormat->GetCount();
405*b1cdbd2cSJim Jagielski //CHINA001
406*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.SetUpdateMode(sal_False);
407*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.Clear();
408*b1cdbd2cSJim Jagielski //CHINA001 for ( sal_uInt16 i = 0; i < nCount; i++ )
409*b1cdbd2cSJim Jagielski //CHINA001 {
410*b1cdbd2cSJim Jagielski //CHINA001 ((*pFormat)[i])->GetName( aEntry );
411*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.InsertEntry( aEntry );
412*b1cdbd2cSJim Jagielski //CHINA001 }
413*b1cdbd2cSJim Jagielski //CHINA001
414*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.SetUpdateMode( sal_True);
415*b1cdbd2cSJim Jagielski //CHINA001 aLbFormat.SelectEntry( aFormatName);
416*b1cdbd2cSJim Jagielski //CHINA001
417*b1cdbd2cSJim Jagielski //CHINA001 if ( !bCoreDataChanged )
418*b1cdbd2cSJim Jagielski //CHINA001 {
419*b1cdbd2cSJim Jagielski //CHINA001 aBtnCancel.SetText( aStrClose );
420*b1cdbd2cSJim Jagielski //CHINA001 bCoreDataChanged = sal_True;
421*b1cdbd2cSJim Jagielski //CHINA001 }
422*b1cdbd2cSJim Jagielski //CHINA001
423*b1cdbd2cSJim Jagielski //CHINA001
424*b1cdbd2cSJim Jagielski //CHINA001 SelFmtHdl( 0 );
425*b1cdbd2cSJim Jagielski //CHINA001 bOk = sal_True;
426*b1cdbd2cSJim Jagielski //CHINA001 bFmtRenamed = sal_True;
427*b1cdbd2cSJim Jagielski //CHINA001 }
428*b1cdbd2cSJim Jagielski //CHINA001 }
429*b1cdbd2cSJim Jagielski //CHINA001 if( !bFmtRenamed )
430*b1cdbd2cSJim Jagielski //CHINA001 {
431*b1cdbd2cSJim Jagielski //CHINA001 bOk = RET_CANCEL == ErrorBox( this,
432*b1cdbd2cSJim Jagielski //CHINA001 WinBits( WB_OK_CANCEL | WB_DEF_OK),
433*b1cdbd2cSJim Jagielski //CHINA001 ScGlobal::GetRscString(STR_INVALID_AFNAME)
434*b1cdbd2cSJim Jagielski //CHINA001 ).Execute();
435*b1cdbd2cSJim Jagielski //CHINA001 }
436*b1cdbd2cSJim Jagielski //CHINA001 }
437*b1cdbd2cSJim Jagielski //CHINA001 else
438*b1cdbd2cSJim Jagielski //CHINA001 bOk = sal_True;
439*b1cdbd2cSJim Jagielski //CHINA001 delete pDlg;
440*b1cdbd2cSJim Jagielski //CHINA001 }
441*b1cdbd2cSJim Jagielski //CHINA001
442*b1cdbd2cSJim Jagielski //CHINA001 return 0;
443*b1cdbd2cSJim Jagielski //CHINA001 }
444*b1cdbd2cSJim Jagielski //CHINA001
445*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
446*b1cdbd2cSJim Jagielski //CHINA001
447*b1cdbd2cSJim Jagielski //CHINA001 IMPL_LINK( ScAutoFormatDlg, SelFmtHdl, void *, EMPTYARG )
448*b1cdbd2cSJim Jagielski //CHINA001 {
449*b1cdbd2cSJim Jagielski //CHINA001 nIndex = aLbFormat.GetSelectEntryPos();
450*b1cdbd2cSJim Jagielski //CHINA001 UpdateChecks();
451*b1cdbd2cSJim Jagielski //CHINA001
452*b1cdbd2cSJim Jagielski //CHINA001 if ( nIndex == 0 )
453*b1cdbd2cSJim Jagielski //CHINA001 {
454*b1cdbd2cSJim Jagielski //CHINA001 aBtnRename.Disable();
455*b1cdbd2cSJim Jagielski //CHINA001 aBtnRemove.Disable();
456*b1cdbd2cSJim Jagielski //CHINA001 }
457*b1cdbd2cSJim Jagielski //CHINA001 else
458*b1cdbd2cSJim Jagielski //CHINA001 {
459*b1cdbd2cSJim Jagielski //CHINA001 aBtnRename.Enable();
460*b1cdbd2cSJim Jagielski //CHINA001 aBtnRemove.Enable();
461*b1cdbd2cSJim Jagielski //CHINA001 }
462*b1cdbd2cSJim Jagielski //CHINA001
463*b1cdbd2cSJim Jagielski //CHINA001 pWndPreview->NotifyChange( (*pFormat)[nIndex] );
464*b1cdbd2cSJim Jagielski //CHINA001
465*b1cdbd2cSJim Jagielski //CHINA001 return 0;
466*b1cdbd2cSJim Jagielski //CHINA001 }
467*b1cdbd2cSJim Jagielski //CHINA001
468*b1cdbd2cSJim Jagielski //CHINA001 //------------------------------------------------------------------------
469*b1cdbd2cSJim Jagielski //CHINA001
470*b1cdbd2cSJim Jagielski //CHINA001 String ScAutoFormatDlg::GetCurrFormatName()
471*b1cdbd2cSJim Jagielski //CHINA001 {
472*b1cdbd2cSJim Jagielski //CHINA001 String aResult;
473*b1cdbd2cSJim Jagielski //CHINA001
474*b1cdbd2cSJim Jagielski //CHINA001 ((*pFormat)[nIndex])->GetName( aResult );
475*b1cdbd2cSJim Jagielski //CHINA001
476*b1cdbd2cSJim Jagielski //CHINA001 return aResult;
477*b1cdbd2cSJim Jagielski //CHINA001 }
478*b1cdbd2cSJim Jagielski //CHINA001
479*b1cdbd2cSJim Jagielski //========================================================================
480*b1cdbd2cSJim Jagielski // ScAutoFmtPreview
481*b1cdbd2cSJim Jagielski
ScAutoFmtPreview(Window * pParent,const ResId & rRes,ScDocument * pDoc)482*b1cdbd2cSJim Jagielski ScAutoFmtPreview::ScAutoFmtPreview( Window* pParent, const ResId& rRes, ScDocument* pDoc ) :
483*b1cdbd2cSJim Jagielski Window ( pParent, rRes ),
484*b1cdbd2cSJim Jagielski pCurData ( NULL ),
485*b1cdbd2cSJim Jagielski aVD ( *this ),
486*b1cdbd2cSJim Jagielski aScriptedText ( aVD ),
487*b1cdbd2cSJim Jagielski xBreakIter ( pDoc->GetBreakIterator() ),
488*b1cdbd2cSJim Jagielski bFitWidth ( sal_False ),
489*b1cdbd2cSJim Jagielski mbRTL ( false ),
490*b1cdbd2cSJim Jagielski aPrvSize ( GetSizePixel().Width() - 6, GetSizePixel().Height() - 30 ),
491*b1cdbd2cSJim Jagielski mnLabelColWidth ( (aPrvSize.Width() - 4) / 4 - 12 ),
492*b1cdbd2cSJim Jagielski mnDataColWidth1 ( (aPrvSize.Width() - 4 - 2 * mnLabelColWidth) / 3 ),
493*b1cdbd2cSJim Jagielski mnDataColWidth2 ( (aPrvSize.Width() - 4 - 2 * mnLabelColWidth) / 4 ),
494*b1cdbd2cSJim Jagielski mnRowHeight ( (aPrvSize.Height() - 4) / 5 ),
495*b1cdbd2cSJim Jagielski aStrJan ( ScResId( STR_JAN ) ),
496*b1cdbd2cSJim Jagielski aStrFeb ( ScResId( STR_FEB ) ),
497*b1cdbd2cSJim Jagielski aStrMar ( ScResId( STR_MAR ) ),
498*b1cdbd2cSJim Jagielski aStrNorth ( ScResId( STR_NORTH ) ),
499*b1cdbd2cSJim Jagielski aStrMid ( ScResId( STR_MID ) ),
500*b1cdbd2cSJim Jagielski aStrSouth ( ScResId( STR_SOUTH ) ),
501*b1cdbd2cSJim Jagielski aStrSum ( ScResId( STR_SUM ) ),
502*b1cdbd2cSJim Jagielski pNumFmt ( new SvNumberFormatter( ::comphelper::getProcessServiceFactory(), ScGlobal::eLnge ) )
503*b1cdbd2cSJim Jagielski {
504*b1cdbd2cSJim Jagielski Init();
505*b1cdbd2cSJim Jagielski }
506*b1cdbd2cSJim Jagielski
507*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
508*b1cdbd2cSJim Jagielski
~ScAutoFmtPreview()509*b1cdbd2cSJim Jagielski ScAutoFmtPreview::~ScAutoFmtPreview()
510*b1cdbd2cSJim Jagielski {
511*b1cdbd2cSJim Jagielski delete pNumFmt;
512*b1cdbd2cSJim Jagielski }
513*b1cdbd2cSJim Jagielski
514*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
515*b1cdbd2cSJim Jagielski
lcl_SetFontProperties(Font & rFont,const SvxFontItem & rFontItem,const SvxWeightItem & rWeightItem,const SvxPostureItem & rPostureItem)516*b1cdbd2cSJim Jagielski void lcl_SetFontProperties(
517*b1cdbd2cSJim Jagielski Font& rFont,
518*b1cdbd2cSJim Jagielski const SvxFontItem& rFontItem,
519*b1cdbd2cSJim Jagielski const SvxWeightItem& rWeightItem,
520*b1cdbd2cSJim Jagielski const SvxPostureItem& rPostureItem )
521*b1cdbd2cSJim Jagielski {
522*b1cdbd2cSJim Jagielski rFont.SetFamily ( rFontItem.GetFamily() );
523*b1cdbd2cSJim Jagielski rFont.SetName ( rFontItem.GetFamilyName() );
524*b1cdbd2cSJim Jagielski rFont.SetStyleName ( rFontItem.GetStyleName() );
525*b1cdbd2cSJim Jagielski rFont.SetCharSet ( rFontItem.GetCharSet() );
526*b1cdbd2cSJim Jagielski rFont.SetPitch ( rFontItem.GetPitch() );
527*b1cdbd2cSJim Jagielski rFont.SetWeight ( (FontWeight)rWeightItem.GetValue() );
528*b1cdbd2cSJim Jagielski rFont.SetItalic ( (FontItalic)rPostureItem.GetValue() );
529*b1cdbd2cSJim Jagielski }
530*b1cdbd2cSJim Jagielski
MakeFonts(sal_uInt16 nIndex,Font & rFont,Font & rCJKFont,Font & rCTLFont)531*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::MakeFonts( sal_uInt16 nIndex, Font& rFont, Font& rCJKFont, Font& rCTLFont )
532*b1cdbd2cSJim Jagielski {
533*b1cdbd2cSJim Jagielski if ( pCurData )
534*b1cdbd2cSJim Jagielski {
535*b1cdbd2cSJim Jagielski rFont = rCJKFont = rCTLFont = GetFont();
536*b1cdbd2cSJim Jagielski Size aFontSize( rFont.GetSize().Width(), 10 );
537*b1cdbd2cSJim Jagielski
538*b1cdbd2cSJim Jagielski const SvxFontItem* pFontItem = (const SvxFontItem*) pCurData->GetItem( nIndex, ATTR_FONT );
539*b1cdbd2cSJim Jagielski const SvxWeightItem* pWeightItem = (const SvxWeightItem*) pCurData->GetItem( nIndex, ATTR_FONT_WEIGHT );
540*b1cdbd2cSJim Jagielski const SvxPostureItem* pPostureItem = (const SvxPostureItem*) pCurData->GetItem( nIndex, ATTR_FONT_POSTURE );
541*b1cdbd2cSJim Jagielski const SvxFontItem* pCJKFontItem = (const SvxFontItem*) pCurData->GetItem( nIndex, ATTR_CJK_FONT );
542*b1cdbd2cSJim Jagielski const SvxWeightItem* pCJKWeightItem = (const SvxWeightItem*) pCurData->GetItem( nIndex, ATTR_CJK_FONT_WEIGHT );
543*b1cdbd2cSJim Jagielski const SvxPostureItem* pCJKPostureItem = (const SvxPostureItem*) pCurData->GetItem( nIndex, ATTR_CJK_FONT_POSTURE );
544*b1cdbd2cSJim Jagielski const SvxFontItem* pCTLFontItem = (const SvxFontItem*) pCurData->GetItem( nIndex, ATTR_CTL_FONT );
545*b1cdbd2cSJim Jagielski const SvxWeightItem* pCTLWeightItem = (const SvxWeightItem*) pCurData->GetItem( nIndex, ATTR_CTL_FONT_WEIGHT );
546*b1cdbd2cSJim Jagielski const SvxPostureItem* pCTLPostureItem = (const SvxPostureItem*) pCurData->GetItem( nIndex, ATTR_CTL_FONT_POSTURE );
547*b1cdbd2cSJim Jagielski const SvxUnderlineItem* pUnderlineItem = (const SvxUnderlineItem*) pCurData->GetItem( nIndex, ATTR_FONT_UNDERLINE );
548*b1cdbd2cSJim Jagielski const SvxOverlineItem* pOverlineItem = (const SvxOverlineItem*) pCurData->GetItem( nIndex, ATTR_FONT_OVERLINE );
549*b1cdbd2cSJim Jagielski const SvxCrossedOutItem* pCrossedOutItem = (const SvxCrossedOutItem*)pCurData->GetItem( nIndex, ATTR_FONT_CROSSEDOUT );
550*b1cdbd2cSJim Jagielski const SvxContourItem* pContourItem = (const SvxContourItem*) pCurData->GetItem( nIndex, ATTR_FONT_CONTOUR );
551*b1cdbd2cSJim Jagielski const SvxShadowedItem* pShadowedItem = (const SvxShadowedItem*) pCurData->GetItem( nIndex, ATTR_FONT_SHADOWED );
552*b1cdbd2cSJim Jagielski const SvxColorItem* pColorItem = (const SvxColorItem*) pCurData->GetItem( nIndex, ATTR_FONT_COLOR );
553*b1cdbd2cSJim Jagielski
554*b1cdbd2cSJim Jagielski lcl_SetFontProperties( rFont, *pFontItem, *pWeightItem, *pPostureItem );
555*b1cdbd2cSJim Jagielski lcl_SetFontProperties( rCJKFont, *pCJKFontItem, *pCJKWeightItem, *pCJKPostureItem );
556*b1cdbd2cSJim Jagielski lcl_SetFontProperties( rCTLFont, *pCTLFontItem, *pCTLWeightItem, *pCTLPostureItem );
557*b1cdbd2cSJim Jagielski
558*b1cdbd2cSJim Jagielski Color aColor( pColorItem->GetValue() );
559*b1cdbd2cSJim Jagielski if( aColor.GetColor() == COL_TRANSPARENT )
560*b1cdbd2cSJim Jagielski aColor = GetSettings().GetStyleSettings().GetWindowTextColor();
561*b1cdbd2cSJim Jagielski
562*b1cdbd2cSJim Jagielski #define SETONALLFONTS( MethodName, Value ) \
563*b1cdbd2cSJim Jagielski rFont.MethodName( Value ); rCJKFont.MethodName( Value ); rCTLFont.MethodName( Value );
564*b1cdbd2cSJim Jagielski
565*b1cdbd2cSJim Jagielski SETONALLFONTS( SetUnderline, (FontUnderline)pUnderlineItem->GetValue() )
566*b1cdbd2cSJim Jagielski SETONALLFONTS( SetOverline, (FontUnderline)pOverlineItem->GetValue() )
567*b1cdbd2cSJim Jagielski SETONALLFONTS( SetStrikeout, (FontStrikeout)pCrossedOutItem->GetValue() )
568*b1cdbd2cSJim Jagielski SETONALLFONTS( SetOutline, pContourItem->GetValue() )
569*b1cdbd2cSJim Jagielski SETONALLFONTS( SetShadow, pShadowedItem->GetValue() )
570*b1cdbd2cSJim Jagielski SETONALLFONTS( SetColor, aColor )
571*b1cdbd2cSJim Jagielski SETONALLFONTS( SetSize, aFontSize )
572*b1cdbd2cSJim Jagielski SETONALLFONTS( SetTransparent, sal_True )
573*b1cdbd2cSJim Jagielski
574*b1cdbd2cSJim Jagielski #undef SETONALLFONTS
575*b1cdbd2cSJim Jagielski }
576*b1cdbd2cSJim Jagielski }
577*b1cdbd2cSJim Jagielski
578*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
579*b1cdbd2cSJim Jagielski
GetFormatIndex(size_t nCol,size_t nRow) const580*b1cdbd2cSJim Jagielski sal_uInt16 ScAutoFmtPreview::GetFormatIndex( size_t nCol, size_t nRow ) const
581*b1cdbd2cSJim Jagielski {
582*b1cdbd2cSJim Jagielski static const sal_uInt16 pnFmtMap[] =
583*b1cdbd2cSJim Jagielski {
584*b1cdbd2cSJim Jagielski 0, 1, 2, 1, 3,
585*b1cdbd2cSJim Jagielski 4, 5, 6, 5, 7,
586*b1cdbd2cSJim Jagielski 8, 9, 10, 9, 11,
587*b1cdbd2cSJim Jagielski 4, 5, 6, 5, 7,
588*b1cdbd2cSJim Jagielski 12, 13, 14, 13, 15
589*b1cdbd2cSJim Jagielski };
590*b1cdbd2cSJim Jagielski return pnFmtMap[ maArray.GetCellIndex( nCol, nRow, mbRTL ) ];
591*b1cdbd2cSJim Jagielski }
592*b1cdbd2cSJim Jagielski
GetBoxItem(size_t nCol,size_t nRow) const593*b1cdbd2cSJim Jagielski const SvxBoxItem& ScAutoFmtPreview::GetBoxItem( size_t nCol, size_t nRow ) const
594*b1cdbd2cSJim Jagielski {
595*b1cdbd2cSJim Jagielski DBG_ASSERT( pCurData, "ScAutoFmtPreview::GetBoxItem - no format data found" );
596*b1cdbd2cSJim Jagielski return *static_cast< const SvxBoxItem* >( pCurData->GetItem( GetFormatIndex( nCol, nRow ), ATTR_BORDER ) );
597*b1cdbd2cSJim Jagielski }
598*b1cdbd2cSJim Jagielski
GetDiagItem(size_t nCol,size_t nRow,bool bTLBR) const599*b1cdbd2cSJim Jagielski const SvxLineItem& ScAutoFmtPreview::GetDiagItem( size_t nCol, size_t nRow, bool bTLBR ) const
600*b1cdbd2cSJim Jagielski {
601*b1cdbd2cSJim Jagielski DBG_ASSERT( pCurData, "ScAutoFmtPreview::GetDiagItem - no format data found" );
602*b1cdbd2cSJim Jagielski return *static_cast< const SvxLineItem* >( pCurData->GetItem( GetFormatIndex( nCol, nRow ), bTLBR ? ATTR_BORDER_TLBR : ATTR_BORDER_BLTR ) );
603*b1cdbd2cSJim Jagielski }
604*b1cdbd2cSJim Jagielski
605*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
606*b1cdbd2cSJim Jagielski
DrawString(size_t nCol,size_t nRow)607*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::DrawString( size_t nCol, size_t nRow )
608*b1cdbd2cSJim Jagielski {
609*b1cdbd2cSJim Jagielski if ( pCurData )
610*b1cdbd2cSJim Jagielski {
611*b1cdbd2cSJim Jagielski //------------------------
612*b1cdbd2cSJim Jagielski // Ausgabe des Zelltextes:
613*b1cdbd2cSJim Jagielski //------------------------
614*b1cdbd2cSJim Jagielski
615*b1cdbd2cSJim Jagielski String cellString;
616*b1cdbd2cSJim Jagielski sal_Bool bNumFormat = pCurData->GetIncludeValueFormat();
617*b1cdbd2cSJim Jagielski sal_uLong nNum;
618*b1cdbd2cSJim Jagielski double nVal;
619*b1cdbd2cSJim Jagielski Color* pDummy = NULL;
620*b1cdbd2cSJim Jagielski sal_uInt16 nIndex = static_cast< sal_uInt16 >( maArray.GetCellIndex( nCol, nRow, mbRTL ) );
621*b1cdbd2cSJim Jagielski
622*b1cdbd2cSJim Jagielski switch( nIndex )
623*b1cdbd2cSJim Jagielski {
624*b1cdbd2cSJim Jagielski case 1: cellString = aStrJan; break;
625*b1cdbd2cSJim Jagielski case 2: cellString = aStrFeb; break;
626*b1cdbd2cSJim Jagielski case 3: cellString = aStrMar; break;
627*b1cdbd2cSJim Jagielski case 5: cellString = aStrNorth; break;
628*b1cdbd2cSJim Jagielski case 10: cellString = aStrMid; break;
629*b1cdbd2cSJim Jagielski case 15: cellString = aStrSouth; break;
630*b1cdbd2cSJim Jagielski case 4:
631*b1cdbd2cSJim Jagielski case 20: cellString = aStrSum; break;
632*b1cdbd2cSJim Jagielski
633*b1cdbd2cSJim Jagielski case 6:
634*b1cdbd2cSJim Jagielski case 8:
635*b1cdbd2cSJim Jagielski case 16:
636*b1cdbd2cSJim Jagielski case 18: nVal = nIndex;
637*b1cdbd2cSJim Jagielski nNum = 5;
638*b1cdbd2cSJim Jagielski goto mknum;
639*b1cdbd2cSJim Jagielski case 17:
640*b1cdbd2cSJim Jagielski case 7: nVal = nIndex;
641*b1cdbd2cSJim Jagielski nNum = 6;
642*b1cdbd2cSJim Jagielski goto mknum;
643*b1cdbd2cSJim Jagielski case 11:
644*b1cdbd2cSJim Jagielski case 12:
645*b1cdbd2cSJim Jagielski case 13: nVal = nIndex;
646*b1cdbd2cSJim Jagielski nNum = 12 == nIndex ? 10 : 9;
647*b1cdbd2cSJim Jagielski goto mknum;
648*b1cdbd2cSJim Jagielski
649*b1cdbd2cSJim Jagielski case 9: nVal = 21; nNum = 7; goto mknum;
650*b1cdbd2cSJim Jagielski case 14: nVal = 36; nNum = 11; goto mknum;
651*b1cdbd2cSJim Jagielski case 19: nVal = 51; nNum = 7; goto mknum;
652*b1cdbd2cSJim Jagielski case 21: nVal = 33; nNum = 13; goto mknum;
653*b1cdbd2cSJim Jagielski case 22: nVal = 36; nNum = 14; goto mknum;
654*b1cdbd2cSJim Jagielski case 23: nVal = 39; nNum = 13; goto mknum;
655*b1cdbd2cSJim Jagielski case 24: nVal = 108; nNum = 15;
656*b1cdbd2cSJim Jagielski mknum:
657*b1cdbd2cSJim Jagielski if( bNumFormat )
658*b1cdbd2cSJim Jagielski {
659*b1cdbd2cSJim Jagielski ScNumFormatAbbrev& rNumFormat = (ScNumFormatAbbrev&)pCurData->GetNumFormat( (sal_uInt16) nNum );
660*b1cdbd2cSJim Jagielski nNum = rNumFormat.GetFormatIndex( *pNumFmt );
661*b1cdbd2cSJim Jagielski }
662*b1cdbd2cSJim Jagielski else
663*b1cdbd2cSJim Jagielski nNum = 0;
664*b1cdbd2cSJim Jagielski pNumFmt->GetOutputString( nVal, nNum, cellString, &pDummy );
665*b1cdbd2cSJim Jagielski break;
666*b1cdbd2cSJim Jagielski }
667*b1cdbd2cSJim Jagielski
668*b1cdbd2cSJim Jagielski if ( cellString.Len() > 0 )
669*b1cdbd2cSJim Jagielski {
670*b1cdbd2cSJim Jagielski Size aStrSize;
671*b1cdbd2cSJim Jagielski sal_uInt16 nFmtIndex = GetFormatIndex( nCol, nRow );
672*b1cdbd2cSJim Jagielski Rectangle cellRect = maArray.GetCellRect( nCol, nRow );
673*b1cdbd2cSJim Jagielski Point aPos = cellRect.TopLeft();
674*b1cdbd2cSJim Jagielski sal_uInt16 nRightX = 0;
675*b1cdbd2cSJim Jagielski sal_Bool bJustify = pCurData->GetIncludeJustify();
676*b1cdbd2cSJim Jagielski SvxHorJustifyItem aHorJustifyItem( SVX_HOR_JUSTIFY_STANDARD, ATTR_HOR_JUSTIFY );
677*b1cdbd2cSJim Jagielski SvxCellHorJustify eJustification;
678*b1cdbd2cSJim Jagielski
679*b1cdbd2cSJim Jagielski //-------------
680*b1cdbd2cSJim Jagielski // Ausrichtung:
681*b1cdbd2cSJim Jagielski //-------------
682*b1cdbd2cSJim Jagielski eJustification = mbRTL ? SVX_HOR_JUSTIFY_RIGHT : bJustify ?
683*b1cdbd2cSJim Jagielski (SvxCellHorJustify)(((const SvxHorJustifyItem*)pCurData->GetItem( nFmtIndex, ATTR_HOR_JUSTIFY ))->GetValue()) :
684*b1cdbd2cSJim Jagielski SVX_HOR_JUSTIFY_STANDARD;
685*b1cdbd2cSJim Jagielski
686*b1cdbd2cSJim Jagielski if ( pCurData->GetIncludeFont() )
687*b1cdbd2cSJim Jagielski {
688*b1cdbd2cSJim Jagielski Font aFont, aCJKFont, aCTLFont;
689*b1cdbd2cSJim Jagielski Size theMaxStrSize;
690*b1cdbd2cSJim Jagielski
691*b1cdbd2cSJim Jagielski MakeFonts( nFmtIndex, aFont, aCJKFont, aCTLFont );
692*b1cdbd2cSJim Jagielski
693*b1cdbd2cSJim Jagielski theMaxStrSize = cellRect.GetSize();
694*b1cdbd2cSJim Jagielski theMaxStrSize.Width() -= FRAME_OFFSET;
695*b1cdbd2cSJim Jagielski theMaxStrSize.Height() -= FRAME_OFFSET;
696*b1cdbd2cSJim Jagielski
697*b1cdbd2cSJim Jagielski aScriptedText.SetFonts( &aFont, &aCJKFont, &aCTLFont );
698*b1cdbd2cSJim Jagielski aScriptedText.SetText( cellString, xBreakIter );
699*b1cdbd2cSJim Jagielski aStrSize = aScriptedText.GetTextSize();
700*b1cdbd2cSJim Jagielski
701*b1cdbd2cSJim Jagielski if ( theMaxStrSize.Height() < aStrSize.Height() )
702*b1cdbd2cSJim Jagielski {
703*b1cdbd2cSJim Jagielski // wenn der String in diesem Font nicht
704*b1cdbd2cSJim Jagielski // in die Zelle passt, wird wieder der
705*b1cdbd2cSJim Jagielski // Standard-Font genommen:
706*b1cdbd2cSJim Jagielski aScriptedText.SetDefaultFont();
707*b1cdbd2cSJim Jagielski aStrSize = aScriptedText.GetTextSize();
708*b1cdbd2cSJim Jagielski }
709*b1cdbd2cSJim Jagielski while ( ( theMaxStrSize.Width() <= aStrSize.Width() )
710*b1cdbd2cSJim Jagielski && ( cellString.Len() > 1 ) )
711*b1cdbd2cSJim Jagielski {
712*b1cdbd2cSJim Jagielski if( eJustification == SVX_HOR_JUSTIFY_RIGHT )
713*b1cdbd2cSJim Jagielski cellString.Erase( 0, 1 );
714*b1cdbd2cSJim Jagielski else
715*b1cdbd2cSJim Jagielski cellString.Erase( cellString.Len() - 1 );
716*b1cdbd2cSJim Jagielski
717*b1cdbd2cSJim Jagielski aScriptedText.SetText( cellString, xBreakIter );
718*b1cdbd2cSJim Jagielski aStrSize = aScriptedText.GetTextSize();
719*b1cdbd2cSJim Jagielski }
720*b1cdbd2cSJim Jagielski }
721*b1cdbd2cSJim Jagielski else
722*b1cdbd2cSJim Jagielski {
723*b1cdbd2cSJim Jagielski aScriptedText.SetDefaultFont();
724*b1cdbd2cSJim Jagielski aScriptedText.SetText( cellString, xBreakIter );
725*b1cdbd2cSJim Jagielski aStrSize = aScriptedText.GetTextSize();
726*b1cdbd2cSJim Jagielski }
727*b1cdbd2cSJim Jagielski
728*b1cdbd2cSJim Jagielski nRightX = (sal_uInt16)( cellRect.GetWidth()
729*b1cdbd2cSJim Jagielski - aStrSize.Width()
730*b1cdbd2cSJim Jagielski - FRAME_OFFSET );
731*b1cdbd2cSJim Jagielski
732*b1cdbd2cSJim Jagielski //-----------------------------
733*b1cdbd2cSJim Jagielski // vertikal (immer zentrieren):
734*b1cdbd2cSJim Jagielski //-----------------------------
735*b1cdbd2cSJim Jagielski aPos.Y() += (mnRowHeight - (sal_uInt16)aStrSize.Height()) / 2;
736*b1cdbd2cSJim Jagielski
737*b1cdbd2cSJim Jagielski //-----------
738*b1cdbd2cSJim Jagielski // horizontal
739*b1cdbd2cSJim Jagielski //-----------
740*b1cdbd2cSJim Jagielski if ( eJustification != SVX_HOR_JUSTIFY_STANDARD )
741*b1cdbd2cSJim Jagielski {
742*b1cdbd2cSJim Jagielski sal_uInt16 nHorPos = (sal_uInt16)
743*b1cdbd2cSJim Jagielski ((cellRect.GetWidth()-aStrSize.Width())/2);
744*b1cdbd2cSJim Jagielski
745*b1cdbd2cSJim Jagielski switch ( eJustification )
746*b1cdbd2cSJim Jagielski {
747*b1cdbd2cSJim Jagielski case SVX_HOR_JUSTIFY_LEFT:
748*b1cdbd2cSJim Jagielski aPos.X() += FRAME_OFFSET;
749*b1cdbd2cSJim Jagielski break;
750*b1cdbd2cSJim Jagielski case SVX_HOR_JUSTIFY_RIGHT:
751*b1cdbd2cSJim Jagielski aPos.X() += nRightX;
752*b1cdbd2cSJim Jagielski break;
753*b1cdbd2cSJim Jagielski case SVX_HOR_JUSTIFY_BLOCK:
754*b1cdbd2cSJim Jagielski case SVX_HOR_JUSTIFY_REPEAT:
755*b1cdbd2cSJim Jagielski case SVX_HOR_JUSTIFY_CENTER:
756*b1cdbd2cSJim Jagielski aPos.X() += nHorPos;
757*b1cdbd2cSJim Jagielski break;
758*b1cdbd2cSJim Jagielski case SVX_HOR_JUSTIFY_STANDARD:
759*b1cdbd2cSJim Jagielski default:
760*b1cdbd2cSJim Jagielski // Standard wird hier nicht behandelt
761*b1cdbd2cSJim Jagielski break;
762*b1cdbd2cSJim Jagielski }
763*b1cdbd2cSJim Jagielski }
764*b1cdbd2cSJim Jagielski else
765*b1cdbd2cSJim Jagielski {
766*b1cdbd2cSJim Jagielski //---------------------
767*b1cdbd2cSJim Jagielski // Standardausrichtung:
768*b1cdbd2cSJim Jagielski //---------------------
769*b1cdbd2cSJim Jagielski if ( (nCol == 0) || (nRow == 0) )
770*b1cdbd2cSJim Jagielski {
771*b1cdbd2cSJim Jagielski // Text-Label links oder Summe linksbuendig
772*b1cdbd2cSJim Jagielski aPos.X() += FRAME_OFFSET;
773*b1cdbd2cSJim Jagielski }
774*b1cdbd2cSJim Jagielski else
775*b1cdbd2cSJim Jagielski {
776*b1cdbd2cSJim Jagielski // Zahlen/Datum rechtsbuendig
777*b1cdbd2cSJim Jagielski aPos.X() += nRightX;
778*b1cdbd2cSJim Jagielski }
779*b1cdbd2cSJim Jagielski }
780*b1cdbd2cSJim Jagielski
781*b1cdbd2cSJim Jagielski //-------------------------------
782*b1cdbd2cSJim Jagielski aScriptedText.DrawText( aPos );
783*b1cdbd2cSJim Jagielski //-------------------------------
784*b1cdbd2cSJim Jagielski }
785*b1cdbd2cSJim Jagielski }
786*b1cdbd2cSJim Jagielski }
787*b1cdbd2cSJim Jagielski
788*b1cdbd2cSJim Jagielski #undef FRAME_OFFSET
789*b1cdbd2cSJim Jagielski
790*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
791*b1cdbd2cSJim Jagielski
DrawStrings()792*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::DrawStrings()
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski for( size_t nRow = 0; nRow < 5; ++nRow )
795*b1cdbd2cSJim Jagielski for( size_t nCol = 0; nCol < 5; ++nCol )
796*b1cdbd2cSJim Jagielski DrawString( nCol, nRow );
797*b1cdbd2cSJim Jagielski }
798*b1cdbd2cSJim Jagielski
799*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
800*b1cdbd2cSJim Jagielski
DrawBackground()801*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::DrawBackground()
802*b1cdbd2cSJim Jagielski {
803*b1cdbd2cSJim Jagielski if( pCurData )
804*b1cdbd2cSJim Jagielski {
805*b1cdbd2cSJim Jagielski for( size_t nRow = 0; nRow < 5; ++nRow )
806*b1cdbd2cSJim Jagielski {
807*b1cdbd2cSJim Jagielski for( size_t nCol = 0; nCol < 5; ++nCol )
808*b1cdbd2cSJim Jagielski {
809*b1cdbd2cSJim Jagielski const SvxBrushItem* pItem = static_cast< const SvxBrushItem* >(
810*b1cdbd2cSJim Jagielski pCurData->GetItem( GetFormatIndex( nCol, nRow ), ATTR_BACKGROUND ) );
811*b1cdbd2cSJim Jagielski
812*b1cdbd2cSJim Jagielski aVD.Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
813*b1cdbd2cSJim Jagielski aVD.SetLineColor();
814*b1cdbd2cSJim Jagielski aVD.SetFillColor( pItem->GetColor() );
815*b1cdbd2cSJim Jagielski aVD.DrawRect( maArray.GetCellRect( nCol, nRow ) );
816*b1cdbd2cSJim Jagielski aVD.Pop();
817*b1cdbd2cSJim Jagielski }
818*b1cdbd2cSJim Jagielski }
819*b1cdbd2cSJim Jagielski }
820*b1cdbd2cSJim Jagielski }
821*b1cdbd2cSJim Jagielski
822*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
823*b1cdbd2cSJim Jagielski
PaintCells()824*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::PaintCells()
825*b1cdbd2cSJim Jagielski {
826*b1cdbd2cSJim Jagielski if ( pCurData )
827*b1cdbd2cSJim Jagielski {
828*b1cdbd2cSJim Jagielski // 1) background
829*b1cdbd2cSJim Jagielski if ( pCurData->GetIncludeBackground() )
830*b1cdbd2cSJim Jagielski DrawBackground();
831*b1cdbd2cSJim Jagielski
832*b1cdbd2cSJim Jagielski // 2) values
833*b1cdbd2cSJim Jagielski DrawStrings();
834*b1cdbd2cSJim Jagielski
835*b1cdbd2cSJim Jagielski // 3) border
836*b1cdbd2cSJim Jagielski if ( pCurData->GetIncludeFrame() )
837*b1cdbd2cSJim Jagielski maArray.DrawArray( aVD );
838*b1cdbd2cSJim Jagielski }
839*b1cdbd2cSJim Jagielski }
840*b1cdbd2cSJim Jagielski
841*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
842*b1cdbd2cSJim Jagielski
Init()843*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::Init()
844*b1cdbd2cSJim Jagielski {
845*b1cdbd2cSJim Jagielski SetBorderStyle( WINDOW_BORDER_MONO );
846*b1cdbd2cSJim Jagielski maArray.Initialize( 5, 5 );
847*b1cdbd2cSJim Jagielski maArray.SetUseDiagDoubleClipping( false );
848*b1cdbd2cSJim Jagielski CalcCellArray( sal_False );
849*b1cdbd2cSJim Jagielski CalcLineMap();
850*b1cdbd2cSJim Jagielski
851*b1cdbd2cSJim Jagielski TypeId aType(TYPE(ScDocShell));
852*b1cdbd2cSJim Jagielski ScDocShell* pDocShell = (ScDocShell*)SfxObjectShell::GetFirst(&aType);
853*b1cdbd2cSJim Jagielski SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocShell );
854*b1cdbd2cSJim Jagielski SfxViewShell* p = pFrame->GetViewShell();
855*b1cdbd2cSJim Jagielski ScTabViewShell* pViewSh = dynamic_cast< ScTabViewShell* >( p );
856*b1cdbd2cSJim Jagielski ScViewData* pViewData = pViewSh->GetViewData();
857*b1cdbd2cSJim Jagielski SCTAB nCurrentTab = pViewData->GetTabNo();
858*b1cdbd2cSJim Jagielski ScDocument* pDoc = pViewData->GetDocument();
859*b1cdbd2cSJim Jagielski mbRTL = pDoc->IsLayoutRTL( nCurrentTab );
860*b1cdbd2cSJim Jagielski }
861*b1cdbd2cSJim Jagielski
862*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
863*b1cdbd2cSJim Jagielski
CalcCellArray(sal_Bool bFitWidthP)864*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::CalcCellArray( sal_Bool bFitWidthP )
865*b1cdbd2cSJim Jagielski {
866*b1cdbd2cSJim Jagielski maArray.SetXOffset( 2 );
867*b1cdbd2cSJim Jagielski maArray.SetAllColWidths( bFitWidthP ? mnDataColWidth2 : mnDataColWidth1 );
868*b1cdbd2cSJim Jagielski maArray.SetColWidth( 0, mnLabelColWidth );
869*b1cdbd2cSJim Jagielski maArray.SetColWidth( 4, mnLabelColWidth );
870*b1cdbd2cSJim Jagielski
871*b1cdbd2cSJim Jagielski maArray.SetYOffset( 2 );
872*b1cdbd2cSJim Jagielski maArray.SetAllRowHeights( mnRowHeight );
873*b1cdbd2cSJim Jagielski
874*b1cdbd2cSJim Jagielski aPrvSize.Width() = maArray.GetWidth() + 4;
875*b1cdbd2cSJim Jagielski aPrvSize.Height() = maArray.GetHeight() + 4;
876*b1cdbd2cSJim Jagielski }
877*b1cdbd2cSJim Jagielski
878*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
879*b1cdbd2cSJim Jagielski
lclSetStyleFromBorder(svx::frame::Style & rStyle,const SvxBorderLine * pBorder)880*b1cdbd2cSJim Jagielski inline void lclSetStyleFromBorder( svx::frame::Style& rStyle, const SvxBorderLine* pBorder )
881*b1cdbd2cSJim Jagielski {
882*b1cdbd2cSJim Jagielski rStyle.Set( pBorder, 1.0 / TWIPS_PER_POINT, 5 );
883*b1cdbd2cSJim Jagielski }
884*b1cdbd2cSJim Jagielski
CalcLineMap()885*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::CalcLineMap()
886*b1cdbd2cSJim Jagielski {
887*b1cdbd2cSJim Jagielski if ( pCurData )
888*b1cdbd2cSJim Jagielski {
889*b1cdbd2cSJim Jagielski for( size_t nRow = 0; nRow < 5; ++nRow )
890*b1cdbd2cSJim Jagielski {
891*b1cdbd2cSJim Jagielski for( size_t nCol = 0; nCol < 5; ++nCol )
892*b1cdbd2cSJim Jagielski {
893*b1cdbd2cSJim Jagielski svx::frame::Style aStyle;
894*b1cdbd2cSJim Jagielski
895*b1cdbd2cSJim Jagielski const SvxBoxItem& rItem = GetBoxItem( nCol, nRow );
896*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, rItem.GetLeft() );
897*b1cdbd2cSJim Jagielski maArray.SetCellStyleLeft( nCol, nRow, aStyle );
898*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, rItem.GetRight() );
899*b1cdbd2cSJim Jagielski maArray.SetCellStyleRight( nCol, nRow, aStyle );
900*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, rItem.GetTop() );
901*b1cdbd2cSJim Jagielski maArray.SetCellStyleTop( nCol, nRow, aStyle );
902*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, rItem.GetBottom() );
903*b1cdbd2cSJim Jagielski maArray.SetCellStyleBottom( nCol, nRow, aStyle );
904*b1cdbd2cSJim Jagielski
905*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, GetDiagItem( nCol, nRow, true ).GetLine() );
906*b1cdbd2cSJim Jagielski maArray.SetCellStyleTLBR( nCol, nRow, aStyle );
907*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, GetDiagItem( nCol, nRow, false ).GetLine() );
908*b1cdbd2cSJim Jagielski maArray.SetCellStyleBLTR( nCol, nRow, aStyle );
909*b1cdbd2cSJim Jagielski }
910*b1cdbd2cSJim Jagielski }
911*b1cdbd2cSJim Jagielski }
912*b1cdbd2cSJim Jagielski }
913*b1cdbd2cSJim Jagielski
914*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
915*b1cdbd2cSJim Jagielski
NotifyChange(ScAutoFormatData * pNewData)916*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::NotifyChange( ScAutoFormatData* pNewData )
917*b1cdbd2cSJim Jagielski {
918*b1cdbd2cSJim Jagielski if ( pNewData != pCurData )
919*b1cdbd2cSJim Jagielski {
920*b1cdbd2cSJim Jagielski pCurData = pNewData;
921*b1cdbd2cSJim Jagielski bFitWidth = pNewData->GetIncludeWidthHeight();
922*b1cdbd2cSJim Jagielski CalcCellArray( bFitWidth );
923*b1cdbd2cSJim Jagielski CalcLineMap();
924*b1cdbd2cSJim Jagielski }
925*b1cdbd2cSJim Jagielski else if ( bFitWidth != pNewData->GetIncludeWidthHeight() )
926*b1cdbd2cSJim Jagielski {
927*b1cdbd2cSJim Jagielski bFitWidth = !bFitWidth;
928*b1cdbd2cSJim Jagielski CalcCellArray( bFitWidth );
929*b1cdbd2cSJim Jagielski }
930*b1cdbd2cSJim Jagielski
931*b1cdbd2cSJim Jagielski DoPaint( Rectangle( Point(0,0), GetSizePixel() ) );
932*b1cdbd2cSJim Jagielski }
933*b1cdbd2cSJim Jagielski
934*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
935*b1cdbd2cSJim Jagielski
DoPaint(const Rectangle &)936*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::DoPaint( const Rectangle& /* rRect */ )
937*b1cdbd2cSJim Jagielski {
938*b1cdbd2cSJim Jagielski sal_uInt32 nOldDrawMode = aVD.GetDrawMode();
939*b1cdbd2cSJim Jagielski // #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed sal_True)
940*b1cdbd2cSJim Jagielski if( GetSettings().GetStyleSettings().GetHighContrastMode() )
941*b1cdbd2cSJim Jagielski aVD.SetDrawMode( DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT );
942*b1cdbd2cSJim Jagielski
943*b1cdbd2cSJim Jagielski Size aWndSize( GetSizePixel() );
944*b1cdbd2cSJim Jagielski Font aFont( aVD.GetFont() );
945*b1cdbd2cSJim Jagielski Color aBackCol( GetSettings().GetStyleSettings().GetWindowColor() );
946*b1cdbd2cSJim Jagielski Point aTmpPoint;
947*b1cdbd2cSJim Jagielski Rectangle aRect( aTmpPoint, aWndSize );
948*b1cdbd2cSJim Jagielski
949*b1cdbd2cSJim Jagielski aFont.SetTransparent( sal_True );
950*b1cdbd2cSJim Jagielski aVD.SetFont( aFont );
951*b1cdbd2cSJim Jagielski aVD.SetLineColor();
952*b1cdbd2cSJim Jagielski aVD.SetFillColor( aBackCol );
953*b1cdbd2cSJim Jagielski aVD.SetOutputSize( aWndSize );
954*b1cdbd2cSJim Jagielski aVD.DrawRect( aRect );
955*b1cdbd2cSJim Jagielski
956*b1cdbd2cSJim Jagielski PaintCells();
957*b1cdbd2cSJim Jagielski SetLineColor();
958*b1cdbd2cSJim Jagielski SetFillColor( aBackCol );
959*b1cdbd2cSJim Jagielski DrawRect( aRect );
960*b1cdbd2cSJim Jagielski
961*b1cdbd2cSJim Jagielski Point aPos( (aWndSize.Width() - aPrvSize.Width()) / 2, (aWndSize.Height() - aPrvSize.Height()) / 2 );
962*b1cdbd2cSJim Jagielski if (Application::GetSettings().GetLayoutRTL())
963*b1cdbd2cSJim Jagielski aPos.X() = -aPos.X();
964*b1cdbd2cSJim Jagielski DrawOutDev( aPos, aWndSize, Point(), aWndSize, aVD );
965*b1cdbd2cSJim Jagielski
966*b1cdbd2cSJim Jagielski aVD.SetDrawMode( nOldDrawMode );
967*b1cdbd2cSJim Jagielski }
968*b1cdbd2cSJim Jagielski
969*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
970*b1cdbd2cSJim Jagielski
Paint(const Rectangle & rRect)971*b1cdbd2cSJim Jagielski void ScAutoFmtPreview::Paint( const Rectangle& rRect )
972*b1cdbd2cSJim Jagielski {
973*b1cdbd2cSJim Jagielski DoPaint( rRect );
974*b1cdbd2cSJim Jagielski }
975*b1cdbd2cSJim Jagielski
976