xref: /aoo4110/main/sc/source/ui/miscdlgs/autofmt.cxx (revision b1cdbd2c)
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