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_sw.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski #ifdef SW_DLLIMPLEMENTATION
28*b1cdbd2cSJim Jagielski #undef SW_DLLIMPLEMENTATION
29*b1cdbd2cSJim Jagielski #endif
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski #ifndef _EDIT_HXX //autogen
35*b1cdbd2cSJim Jagielski #include <vcl/edit.hxx>
36*b1cdbd2cSJim Jagielski #endif
37*b1cdbd2cSJim Jagielski #ifndef _MSGBOX_HXX //autogen
38*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
39*b1cdbd2cSJim Jagielski #endif
40*b1cdbd2cSJim Jagielski #include <vcl/svapp.hxx>
41*b1cdbd2cSJim Jagielski #include <svl/zforlist.hxx>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/i18n/XBreakIterator.hpp>
44*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
45*b1cdbd2cSJim Jagielski #include <svtools/scriptedtext.hxx>
46*b1cdbd2cSJim Jagielski #include <svtools/accessibilityoptions.hxx>
47*b1cdbd2cSJim Jagielski #include <svx/framelinkarray.hxx>
48*b1cdbd2cSJim Jagielski #include "swmodule.hxx"
49*b1cdbd2cSJim Jagielski #include "swtypes.hxx"
50*b1cdbd2cSJim Jagielski #ifndef _VIEW_HXX
51*b1cdbd2cSJim Jagielski #include "view.hxx"
52*b1cdbd2cSJim Jagielski #endif
53*b1cdbd2cSJim Jagielski #include "wrtsh.hxx"
54*b1cdbd2cSJim Jagielski #include "tblafmt.hxx"
55*b1cdbd2cSJim Jagielski #ifndef _TAUTOFMT_HXX
56*b1cdbd2cSJim Jagielski #include "tautofmt.hxx"
57*b1cdbd2cSJim Jagielski #endif
58*b1cdbd2cSJim Jagielski #include "shellres.hxx"
59*b1cdbd2cSJim Jagielski #ifndef _TAUTOFMT_HRC
60*b1cdbd2cSJim Jagielski #include "tautofmt.hrc"
61*b1cdbd2cSJim Jagielski #endif
62*b1cdbd2cSJim Jagielski
63*b1cdbd2cSJim Jagielski using namespace com::sun::star;
64*b1cdbd2cSJim Jagielski
65*b1cdbd2cSJim Jagielski #define FRAME_OFFSET 4
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski //========================================================================
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski class AutoFmtPreview : public Window
70*b1cdbd2cSJim Jagielski {
71*b1cdbd2cSJim Jagielski public:
72*b1cdbd2cSJim Jagielski AutoFmtPreview( Window* pParent, const ResId& rRes, SwWrtShell* pWrtShell );
73*b1cdbd2cSJim Jagielski ~AutoFmtPreview();
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski void NotifyChange( const SwTableAutoFmt& rNewData );
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski protected:
78*b1cdbd2cSJim Jagielski virtual void Paint( const Rectangle& rRect );
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielski private:
81*b1cdbd2cSJim Jagielski SwTableAutoFmt aCurData;
82*b1cdbd2cSJim Jagielski VirtualDevice aVD;
83*b1cdbd2cSJim Jagielski SvtScriptedTextHelper aScriptedText;
84*b1cdbd2cSJim Jagielski svx::frame::Array maArray; /// Implementation to draw the frame borders.
85*b1cdbd2cSJim Jagielski sal_Bool bFitWidth;
86*b1cdbd2cSJim Jagielski bool mbRTL;
87*b1cdbd2cSJim Jagielski Size aPrvSize;
88*b1cdbd2cSJim Jagielski long nLabelColWidth;
89*b1cdbd2cSJim Jagielski long nDataColWidth1;
90*b1cdbd2cSJim Jagielski long nDataColWidth2;
91*b1cdbd2cSJim Jagielski long nRowHeight;
92*b1cdbd2cSJim Jagielski const String aStrJan;
93*b1cdbd2cSJim Jagielski const String aStrFeb;
94*b1cdbd2cSJim Jagielski const String aStrMar;
95*b1cdbd2cSJim Jagielski const String aStrNorth;
96*b1cdbd2cSJim Jagielski const String aStrMid;
97*b1cdbd2cSJim Jagielski const String aStrSouth;
98*b1cdbd2cSJim Jagielski const String aStrSum;
99*b1cdbd2cSJim Jagielski SvNumberFormatter* pNumFmt;
100*b1cdbd2cSJim Jagielski
101*b1cdbd2cSJim Jagielski uno::Reference< lang::XMultiServiceFactory > m_xMSF;
102*b1cdbd2cSJim Jagielski uno::Reference< i18n::XBreakIterator > m_xBreak;
103*b1cdbd2cSJim Jagielski
104*b1cdbd2cSJim Jagielski //-------------------------------------------
105*b1cdbd2cSJim Jagielski void Init ();
106*b1cdbd2cSJim Jagielski void DoPaint ( const Rectangle& rRect );
107*b1cdbd2cSJim Jagielski void CalcCellArray ( sal_Bool bFitWidth );
108*b1cdbd2cSJim Jagielski void CalcLineMap ();
109*b1cdbd2cSJim Jagielski void PaintCells ();
110*b1cdbd2cSJim Jagielski
111*b1cdbd2cSJim Jagielski sal_uInt8 GetFormatIndex( size_t nCol, size_t nRow ) const;
112*b1cdbd2cSJim Jagielski const SvxBoxItem& GetBoxItem( size_t nCol, size_t nRow ) const;
113*b1cdbd2cSJim Jagielski
114*b1cdbd2cSJim Jagielski void DrawString( size_t nCol, size_t nRow );
115*b1cdbd2cSJim Jagielski void DrawStrings();
116*b1cdbd2cSJim Jagielski void DrawBackground();
117*b1cdbd2cSJim Jagielski
118*b1cdbd2cSJim Jagielski void MakeFonts ( sal_uInt8 nIndex, Font& rFont, Font& rCJKFont, Font& rCTLFont );
119*b1cdbd2cSJim Jagielski String MakeNumberString( String cellString, sal_Bool bAddDec );
120*b1cdbd2cSJim Jagielski };
121*b1cdbd2cSJim Jagielski
122*b1cdbd2cSJim Jagielski //========================================================================
123*b1cdbd2cSJim Jagielski
124*b1cdbd2cSJim Jagielski class SwStringInputDlg : public ModalDialog
125*b1cdbd2cSJim Jagielski {
126*b1cdbd2cSJim Jagielski public:
127*b1cdbd2cSJim Jagielski SwStringInputDlg( Window* pParent,
128*b1cdbd2cSJim Jagielski const String& rTitle,
129*b1cdbd2cSJim Jagielski const String& rEditTitle,
130*b1cdbd2cSJim Jagielski const String& rDefault );
131*b1cdbd2cSJim Jagielski ~SwStringInputDlg();
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski void GetInputString( String& rString ) const;
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski private:
136*b1cdbd2cSJim Jagielski Edit aEdInput; // Edit erhaelt so den Focus
137*b1cdbd2cSJim Jagielski FixedText aFtEditTitle;
138*b1cdbd2cSJim Jagielski OKButton aBtnOk;
139*b1cdbd2cSJim Jagielski CancelButton aBtnCancel;
140*b1cdbd2cSJim Jagielski };
141*b1cdbd2cSJim Jagielski
142*b1cdbd2cSJim Jagielski
SwStringInputDlg(Window * pParent,const String & rTitle,const String & rEditTitle,const String & rDefault)143*b1cdbd2cSJim Jagielski SwStringInputDlg::SwStringInputDlg( Window* pParent,
144*b1cdbd2cSJim Jagielski const String& rTitle,
145*b1cdbd2cSJim Jagielski const String& rEditTitle,
146*b1cdbd2cSJim Jagielski const String& rDefault ) :
147*b1cdbd2cSJim Jagielski ModalDialog ( pParent, SW_RES( DLG_SWDLG_STRINPUT ) ),
148*b1cdbd2cSJim Jagielski //
149*b1cdbd2cSJim Jagielski aEdInput ( this, SW_RES( ED_INPUT ) ),
150*b1cdbd2cSJim Jagielski aFtEditTitle ( this, SW_RES( FT_LABEL ) ),
151*b1cdbd2cSJim Jagielski aBtnOk ( this, SW_RES( BTN_OK ) ),
152*b1cdbd2cSJim Jagielski aBtnCancel ( this, SW_RES( BTN_CANCEL ) )
153*b1cdbd2cSJim Jagielski {
154*b1cdbd2cSJim Jagielski SetText( rTitle );
155*b1cdbd2cSJim Jagielski aFtEditTitle.SetText( rEditTitle );
156*b1cdbd2cSJim Jagielski aEdInput.SetText( rDefault );
157*b1cdbd2cSJim Jagielski //-------------
158*b1cdbd2cSJim Jagielski FreeResource();
159*b1cdbd2cSJim Jagielski }
160*b1cdbd2cSJim Jagielski
161*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
162*b1cdbd2cSJim Jagielski
GetInputString(String & rString) const163*b1cdbd2cSJim Jagielski void SwStringInputDlg::GetInputString( String& rString ) const
164*b1cdbd2cSJim Jagielski {
165*b1cdbd2cSJim Jagielski rString = aEdInput.GetText();
166*b1cdbd2cSJim Jagielski }
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski
~SwStringInputDlg()169*b1cdbd2cSJim Jagielski __EXPORT SwStringInputDlg::~SwStringInputDlg()
170*b1cdbd2cSJim Jagielski {
171*b1cdbd2cSJim Jagielski }
172*b1cdbd2cSJim Jagielski
173*b1cdbd2cSJim Jagielski //========================================================================
174*b1cdbd2cSJim Jagielski // AutoFormat-Dialog:
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski
SwAutoFormatDlg(Window * pParent,SwWrtShell * pWrtShell,sal_Bool bSetAutoFormat,const SwTableAutoFmt * pSelFmt)177*b1cdbd2cSJim Jagielski SwAutoFormatDlg::SwAutoFormatDlg( Window* pParent, SwWrtShell* pWrtShell,
178*b1cdbd2cSJim Jagielski sal_Bool bSetAutoFormat, const SwTableAutoFmt* pSelFmt )
179*b1cdbd2cSJim Jagielski : SfxModalDialog( pParent, SW_RES( DLG_AUTOFMT_TABLE ) ),
180*b1cdbd2cSJim Jagielski //
181*b1cdbd2cSJim Jagielski aFlFormat ( this, SW_RES( FL_FORMAT ) ),
182*b1cdbd2cSJim Jagielski aLbFormat ( this, SW_RES( LB_FORMAT ) ),
183*b1cdbd2cSJim Jagielski aFlFormats ( this, SW_RES( FL_FORMATS ) ),
184*b1cdbd2cSJim Jagielski
185*b1cdbd2cSJim Jagielski aBtnNumFormat ( this, SW_RES( BTN_NUMFORMAT ) ),
186*b1cdbd2cSJim Jagielski aBtnBorder ( this, SW_RES( BTN_BORDER ) ),
187*b1cdbd2cSJim Jagielski aBtnFont ( this, SW_RES( BTN_FONT ) ),
188*b1cdbd2cSJim Jagielski aBtnPattern ( this, SW_RES( BTN_PATTERN ) ),
189*b1cdbd2cSJim Jagielski aBtnAlignment ( this, SW_RES( BTN_ALIGNMENT ) ),
190*b1cdbd2cSJim Jagielski aBtnOk ( this, SW_RES( BTN_OK ) ),
191*b1cdbd2cSJim Jagielski aBtnCancel ( this, SW_RES( BTN_CANCEL ) ),
192*b1cdbd2cSJim Jagielski aBtnHelp ( this, SW_RES( BTN_HELP ) ),
193*b1cdbd2cSJim Jagielski aBtnAdd ( this, SW_RES( BTN_ADD ) ),
194*b1cdbd2cSJim Jagielski aBtnRemove ( this, SW_RES( BTN_REMOVE ) ),
195*b1cdbd2cSJim Jagielski aBtnRename ( this, SW_RES( BTN_RENAME ) ),
196*b1cdbd2cSJim Jagielski aBtnMore ( this, SW_RES( BTN_MORE ) ),
197*b1cdbd2cSJim Jagielski aStrTitle ( SW_RES( STR_ADD_TITLE ) ),
198*b1cdbd2cSJim Jagielski aStrLabel ( SW_RES( STR_ADD_LABEL ) ),
199*b1cdbd2cSJim Jagielski aStrClose ( SW_RES( STR_BTN_CLOSE ) ),
200*b1cdbd2cSJim Jagielski aStrDelTitle ( SW_RES( STR_DEL_TITLE ) ),
201*b1cdbd2cSJim Jagielski aStrDelMsg ( SW_RES( STR_DEL_MSG ) ),
202*b1cdbd2cSJim Jagielski aStrRenameTitle ( SW_RES( STR_RENAME_TITLE ) ),
203*b1cdbd2cSJim Jagielski aStrInvalidFmt ( SW_RES( STR_INVALID_AFNAME )),
204*b1cdbd2cSJim Jagielski pWndPreview ( new AutoFmtPreview( this, SW_RES( WND_PREVIEW ), pWrtShell )),
205*b1cdbd2cSJim Jagielski //
206*b1cdbd2cSJim Jagielski pShell ( pWrtShell ),
207*b1cdbd2cSJim Jagielski nIndex ( 0 ),
208*b1cdbd2cSJim Jagielski nDfltStylePos ( 0 ),
209*b1cdbd2cSJim Jagielski bCoreDataChanged( sal_False ),
210*b1cdbd2cSJim Jagielski bSetAutoFmt ( bSetAutoFormat )
211*b1cdbd2cSJim Jagielski {
212*b1cdbd2cSJim Jagielski pTableTbl = new SwTableAutoFmtTbl;
213*b1cdbd2cSJim Jagielski pTableTbl->Load();
214*b1cdbd2cSJim Jagielski
215*b1cdbd2cSJim Jagielski Init( pSelFmt );
216*b1cdbd2cSJim Jagielski //------------- >
217*b1cdbd2cSJim Jagielski FreeResource();
218*b1cdbd2cSJim Jagielski }
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielski
~SwAutoFormatDlg()223*b1cdbd2cSJim Jagielski __EXPORT SwAutoFormatDlg::~SwAutoFormatDlg()
224*b1cdbd2cSJim Jagielski {
225*b1cdbd2cSJim Jagielski delete pWndPreview;
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielski if( bCoreDataChanged )
228*b1cdbd2cSJim Jagielski pTableTbl->Save();
229*b1cdbd2cSJim Jagielski delete pTableTbl;
230*b1cdbd2cSJim Jagielski }
231*b1cdbd2cSJim Jagielski
232*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
233*b1cdbd2cSJim Jagielski
234*b1cdbd2cSJim Jagielski
Init(const SwTableAutoFmt * pSelFmt)235*b1cdbd2cSJim Jagielski void SwAutoFormatDlg::Init( const SwTableAutoFmt* pSelFmt )
236*b1cdbd2cSJim Jagielski {
237*b1cdbd2cSJim Jagielski Link aLk( LINK( this, SwAutoFormatDlg, CheckHdl ) );
238*b1cdbd2cSJim Jagielski aBtnBorder.SetClickHdl( aLk );
239*b1cdbd2cSJim Jagielski aBtnFont.SetClickHdl( aLk );
240*b1cdbd2cSJim Jagielski aBtnPattern.SetClickHdl( aLk );
241*b1cdbd2cSJim Jagielski aBtnAlignment.SetClickHdl( aLk );
242*b1cdbd2cSJim Jagielski aBtnNumFormat.SetClickHdl( aLk );
243*b1cdbd2cSJim Jagielski
244*b1cdbd2cSJim Jagielski aBtnAdd.SetClickHdl ( LINK( this, SwAutoFormatDlg, AddHdl ) );
245*b1cdbd2cSJim Jagielski aBtnRemove.SetClickHdl ( LINK( this, SwAutoFormatDlg, RemoveHdl ) );
246*b1cdbd2cSJim Jagielski aBtnRename.SetClickHdl ( LINK( this, SwAutoFormatDlg, RenameHdl ) );
247*b1cdbd2cSJim Jagielski aBtnOk.SetClickHdl ( LINK( this, SwAutoFormatDlg, OkHdl ) );
248*b1cdbd2cSJim Jagielski aLbFormat.SetSelectHdl( LINK( this, SwAutoFormatDlg, SelFmtHdl ) );
249*b1cdbd2cSJim Jagielski
250*b1cdbd2cSJim Jagielski aBtnMore.AddWindow( &aBtnNumFormat );
251*b1cdbd2cSJim Jagielski aBtnMore.AddWindow( &aBtnBorder );
252*b1cdbd2cSJim Jagielski aBtnMore.AddWindow( &aBtnFont );
253*b1cdbd2cSJim Jagielski aBtnMore.AddWindow( &aBtnPattern );
254*b1cdbd2cSJim Jagielski aBtnMore.AddWindow( &aBtnAlignment );
255*b1cdbd2cSJim Jagielski aBtnMore.AddWindow( &aFlFormats );
256*b1cdbd2cSJim Jagielski aBtnMore.AddWindow( &aBtnRename );
257*b1cdbd2cSJim Jagielski
258*b1cdbd2cSJim Jagielski aBtnAdd.Enable( bSetAutoFmt );
259*b1cdbd2cSJim Jagielski
260*b1cdbd2cSJim Jagielski nIndex = 0;
261*b1cdbd2cSJim Jagielski if( !bSetAutoFmt )
262*b1cdbd2cSJim Jagielski {
263*b1cdbd2cSJim Jagielski // dann muss die Liste um den Eintrag <Keins> erweitert werden.
264*b1cdbd2cSJim Jagielski aLbFormat.InsertEntry( ViewShell::GetShellRes()->aStrNone );
265*b1cdbd2cSJim Jagielski nDfltStylePos = 1;
266*b1cdbd2cSJim Jagielski nIndex = 255;
267*b1cdbd2cSJim Jagielski }
268*b1cdbd2cSJim Jagielski
269*b1cdbd2cSJim Jagielski for( sal_uInt8 i = 0, nCount = (sal_uInt8)pTableTbl->Count(); i < nCount; i++ )
270*b1cdbd2cSJim Jagielski {
271*b1cdbd2cSJim Jagielski SwTableAutoFmt* pFmt = (*pTableTbl)[ i ];
272*b1cdbd2cSJim Jagielski aLbFormat.InsertEntry( pFmt->GetName() );
273*b1cdbd2cSJim Jagielski if( pSelFmt && pFmt->GetName() == pSelFmt->GetName() )
274*b1cdbd2cSJim Jagielski nIndex = i;
275*b1cdbd2cSJim Jagielski }
276*b1cdbd2cSJim Jagielski
277*b1cdbd2cSJim Jagielski aLbFormat.SelectEntryPos( 255 != nIndex ? (nDfltStylePos + nIndex) : 0 );
278*b1cdbd2cSJim Jagielski SelFmtHdl( 0 );
279*b1cdbd2cSJim Jagielski }
280*b1cdbd2cSJim Jagielski
281*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
282*b1cdbd2cSJim Jagielski
283*b1cdbd2cSJim Jagielski
UpdateChecks(const SwTableAutoFmt & rFmt,sal_Bool bEnable)284*b1cdbd2cSJim Jagielski void SwAutoFormatDlg::UpdateChecks( const SwTableAutoFmt& rFmt, sal_Bool bEnable )
285*b1cdbd2cSJim Jagielski {
286*b1cdbd2cSJim Jagielski aBtnNumFormat.Enable( bEnable );
287*b1cdbd2cSJim Jagielski aBtnNumFormat.Check( rFmt.IsValueFormat() );
288*b1cdbd2cSJim Jagielski
289*b1cdbd2cSJim Jagielski aBtnBorder.Enable( bEnable );
290*b1cdbd2cSJim Jagielski aBtnBorder.Check( rFmt.IsFrame() );
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim Jagielski aBtnFont.Enable( bEnable );
293*b1cdbd2cSJim Jagielski aBtnFont.Check( rFmt.IsFont() );
294*b1cdbd2cSJim Jagielski
295*b1cdbd2cSJim Jagielski aBtnPattern.Enable( bEnable );
296*b1cdbd2cSJim Jagielski aBtnPattern.Check( rFmt.IsBackground() );
297*b1cdbd2cSJim Jagielski
298*b1cdbd2cSJim Jagielski aBtnAlignment.Enable( bEnable );
299*b1cdbd2cSJim Jagielski aBtnAlignment.Check( rFmt.IsJustify() );
300*b1cdbd2cSJim Jagielski }
301*b1cdbd2cSJim Jagielski
FillAutoFmtOfIndex(SwTableAutoFmt * & rToFill) const302*b1cdbd2cSJim Jagielski void SwAutoFormatDlg::FillAutoFmtOfIndex( SwTableAutoFmt*& rToFill ) const
303*b1cdbd2cSJim Jagielski {
304*b1cdbd2cSJim Jagielski if( 255 != nIndex )
305*b1cdbd2cSJim Jagielski {
306*b1cdbd2cSJim Jagielski if( rToFill )
307*b1cdbd2cSJim Jagielski *rToFill = *(*pTableTbl)[ nIndex ];
308*b1cdbd2cSJim Jagielski else
309*b1cdbd2cSJim Jagielski rToFill = new SwTableAutoFmt( *(*pTableTbl)[ nIndex ] );
310*b1cdbd2cSJim Jagielski }
311*b1cdbd2cSJim Jagielski else if( rToFill )
312*b1cdbd2cSJim Jagielski delete rToFill, rToFill = 0;
313*b1cdbd2cSJim Jagielski }
314*b1cdbd2cSJim Jagielski
315*b1cdbd2cSJim Jagielski
316*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------
317*b1cdbd2cSJim Jagielski Handler:
318*b1cdbd2cSJim Jagielski ---------*/
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski
IMPL_LINK(SwAutoFormatDlg,CheckHdl,Button *,pBtn)321*b1cdbd2cSJim Jagielski IMPL_LINK( SwAutoFormatDlg, CheckHdl, Button *, pBtn )
322*b1cdbd2cSJim Jagielski {
323*b1cdbd2cSJim Jagielski SwTableAutoFmtPtr pData = (*pTableTbl)[nIndex];
324*b1cdbd2cSJim Jagielski sal_Bool bCheck = ((CheckBox*)pBtn)->IsChecked(), bDataChgd = sal_True;
325*b1cdbd2cSJim Jagielski
326*b1cdbd2cSJim Jagielski if( pBtn == &aBtnNumFormat )
327*b1cdbd2cSJim Jagielski pData->SetValueFormat( bCheck );
328*b1cdbd2cSJim Jagielski else if ( pBtn == &aBtnBorder )
329*b1cdbd2cSJim Jagielski pData->SetFrame( bCheck );
330*b1cdbd2cSJim Jagielski else if ( pBtn == &aBtnFont )
331*b1cdbd2cSJim Jagielski pData->SetFont( bCheck );
332*b1cdbd2cSJim Jagielski else if ( pBtn == &aBtnPattern )
333*b1cdbd2cSJim Jagielski pData->SetBackground( bCheck );
334*b1cdbd2cSJim Jagielski else if ( pBtn == &aBtnAlignment )
335*b1cdbd2cSJim Jagielski pData->SetJustify( bCheck );
336*b1cdbd2cSJim Jagielski // else if ( pBtn == &aBtnAdjust )
337*b1cdbd2cSJim Jagielski // pData->SetIncludeWidthHeight( bCheck );
338*b1cdbd2cSJim Jagielski else
339*b1cdbd2cSJim Jagielski bDataChgd = sal_False;
340*b1cdbd2cSJim Jagielski
341*b1cdbd2cSJim Jagielski if( bDataChgd )
342*b1cdbd2cSJim Jagielski {
343*b1cdbd2cSJim Jagielski if( !bCoreDataChanged )
344*b1cdbd2cSJim Jagielski {
345*b1cdbd2cSJim Jagielski aBtnCancel.SetText( aStrClose );
346*b1cdbd2cSJim Jagielski bCoreDataChanged = sal_True;
347*b1cdbd2cSJim Jagielski }
348*b1cdbd2cSJim Jagielski
349*b1cdbd2cSJim Jagielski pWndPreview->NotifyChange( *pData );
350*b1cdbd2cSJim Jagielski }
351*b1cdbd2cSJim Jagielski return 0;
352*b1cdbd2cSJim Jagielski }
353*b1cdbd2cSJim Jagielski
354*b1cdbd2cSJim Jagielski /*------------------------------------------------------------------------*/
355*b1cdbd2cSJim Jagielski
356*b1cdbd2cSJim Jagielski
IMPL_LINK(SwAutoFormatDlg,AddHdl,void *,EMPTYARG)357*b1cdbd2cSJim Jagielski IMPL_LINK( SwAutoFormatDlg, AddHdl, void *, EMPTYARG )
358*b1cdbd2cSJim Jagielski {
359*b1cdbd2cSJim Jagielski sal_Bool bOk = sal_False, bFmtInserted = sal_False;
360*b1cdbd2cSJim Jagielski while( !bOk )
361*b1cdbd2cSJim Jagielski {
362*b1cdbd2cSJim Jagielski SwStringInputDlg* pDlg = new SwStringInputDlg( this,
363*b1cdbd2cSJim Jagielski aStrTitle,
364*b1cdbd2cSJim Jagielski aStrLabel,
365*b1cdbd2cSJim Jagielski aEmptyStr );
366*b1cdbd2cSJim Jagielski if( RET_OK == pDlg->Execute() )
367*b1cdbd2cSJim Jagielski {
368*b1cdbd2cSJim Jagielski String aFormatName;
369*b1cdbd2cSJim Jagielski pDlg->GetInputString( aFormatName );
370*b1cdbd2cSJim Jagielski
371*b1cdbd2cSJim Jagielski if( aFormatName.Len() > 0 )
372*b1cdbd2cSJim Jagielski {
373*b1cdbd2cSJim Jagielski sal_uInt16 n;
374*b1cdbd2cSJim Jagielski for( n = 0; n < pTableTbl->Count(); ++n )
375*b1cdbd2cSJim Jagielski if( (*pTableTbl)[n]->GetName() == aFormatName )
376*b1cdbd2cSJim Jagielski break;
377*b1cdbd2cSJim Jagielski
378*b1cdbd2cSJim Jagielski if( n >= pTableTbl->Count() )
379*b1cdbd2cSJim Jagielski {
380*b1cdbd2cSJim Jagielski // Format mit dem Namen noch nicht vorhanden, also
381*b1cdbd2cSJim Jagielski // aufnehmen
382*b1cdbd2cSJim Jagielski SwTableAutoFmtPtr pNewData = new
383*b1cdbd2cSJim Jagielski SwTableAutoFmt( aFormatName );
384*b1cdbd2cSJim Jagielski pShell->GetTableAutoFmt( *pNewData );
385*b1cdbd2cSJim Jagielski
386*b1cdbd2cSJim Jagielski // Sortiert einfuegen!!
387*b1cdbd2cSJim Jagielski for( n = 1; n < pTableTbl->Count(); ++n )
388*b1cdbd2cSJim Jagielski if( (*pTableTbl)[ n ]->GetName() > aFormatName )
389*b1cdbd2cSJim Jagielski break;
390*b1cdbd2cSJim Jagielski
391*b1cdbd2cSJim Jagielski pTableTbl->Insert( pNewData, n );
392*b1cdbd2cSJim Jagielski aLbFormat.InsertEntry( aFormatName, nDfltStylePos + n );
393*b1cdbd2cSJim Jagielski aLbFormat.SelectEntryPos( nDfltStylePos + n );
394*b1cdbd2cSJim Jagielski bFmtInserted = sal_True;
395*b1cdbd2cSJim Jagielski aBtnAdd.Enable( sal_False );
396*b1cdbd2cSJim Jagielski if ( !bCoreDataChanged )
397*b1cdbd2cSJim Jagielski {
398*b1cdbd2cSJim Jagielski aBtnCancel.SetText( aStrClose );
399*b1cdbd2cSJim Jagielski bCoreDataChanged = sal_True;
400*b1cdbd2cSJim Jagielski }
401*b1cdbd2cSJim Jagielski
402*b1cdbd2cSJim Jagielski SelFmtHdl( 0 );
403*b1cdbd2cSJim Jagielski bOk = sal_True;
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski }
406*b1cdbd2cSJim Jagielski
407*b1cdbd2cSJim Jagielski if( !bFmtInserted )
408*b1cdbd2cSJim Jagielski {
409*b1cdbd2cSJim Jagielski bOk = RET_CANCEL == ErrorBox( this,
410*b1cdbd2cSJim Jagielski WinBits( WB_OK_CANCEL | WB_DEF_OK),
411*b1cdbd2cSJim Jagielski aStrInvalidFmt
412*b1cdbd2cSJim Jagielski ).Execute();
413*b1cdbd2cSJim Jagielski }
414*b1cdbd2cSJim Jagielski }
415*b1cdbd2cSJim Jagielski else
416*b1cdbd2cSJim Jagielski bOk = sal_True;
417*b1cdbd2cSJim Jagielski delete pDlg;
418*b1cdbd2cSJim Jagielski }
419*b1cdbd2cSJim Jagielski return 0;
420*b1cdbd2cSJim Jagielski }
421*b1cdbd2cSJim Jagielski
422*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
423*b1cdbd2cSJim Jagielski
IMPL_LINK(SwAutoFormatDlg,RemoveHdl,void *,EMPTYARG)424*b1cdbd2cSJim Jagielski IMPL_LINK( SwAutoFormatDlg, RemoveHdl, void *, EMPTYARG )
425*b1cdbd2cSJim Jagielski {
426*b1cdbd2cSJim Jagielski String aMessage = aStrDelMsg ;
427*b1cdbd2cSJim Jagielski aMessage.AppendAscii("\n\n");
428*b1cdbd2cSJim Jagielski aMessage += aLbFormat.GetSelectEntry() ;
429*b1cdbd2cSJim Jagielski aMessage += '\n';
430*b1cdbd2cSJim Jagielski
431*b1cdbd2cSJim Jagielski MessBox* pBox = new MessBox( this, WinBits( WB_OK_CANCEL ),
432*b1cdbd2cSJim Jagielski aStrDelTitle, aMessage);
433*b1cdbd2cSJim Jagielski
434*b1cdbd2cSJim Jagielski if ( pBox->Execute() == RET_OK )
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski aLbFormat.RemoveEntry( nDfltStylePos + nIndex );
437*b1cdbd2cSJim Jagielski aLbFormat.SelectEntryPos( nDfltStylePos + nIndex-1 );
438*b1cdbd2cSJim Jagielski
439*b1cdbd2cSJim Jagielski pTableTbl->DeleteAndDestroy( nIndex );
440*b1cdbd2cSJim Jagielski nIndex--;
441*b1cdbd2cSJim Jagielski
442*b1cdbd2cSJim Jagielski if( !nIndex )
443*b1cdbd2cSJim Jagielski {
444*b1cdbd2cSJim Jagielski aBtnRemove.Enable(sal_False);
445*b1cdbd2cSJim Jagielski aBtnRename.Enable(sal_False);
446*b1cdbd2cSJim Jagielski }
447*b1cdbd2cSJim Jagielski
448*b1cdbd2cSJim Jagielski if( !bCoreDataChanged )
449*b1cdbd2cSJim Jagielski {
450*b1cdbd2cSJim Jagielski aBtnCancel.SetText( aStrClose );
451*b1cdbd2cSJim Jagielski bCoreDataChanged = sal_True;
452*b1cdbd2cSJim Jagielski }
453*b1cdbd2cSJim Jagielski }
454*b1cdbd2cSJim Jagielski delete pBox;
455*b1cdbd2cSJim Jagielski
456*b1cdbd2cSJim Jagielski SelFmtHdl( 0 );
457*b1cdbd2cSJim Jagielski
458*b1cdbd2cSJim Jagielski return 0;
459*b1cdbd2cSJim Jagielski }
460*b1cdbd2cSJim Jagielski
IMPL_LINK(SwAutoFormatDlg,RenameHdl,void *,EMPTYARG)461*b1cdbd2cSJim Jagielski IMPL_LINK( SwAutoFormatDlg, RenameHdl, void *, EMPTYARG )
462*b1cdbd2cSJim Jagielski {
463*b1cdbd2cSJim Jagielski sal_Bool bOk = sal_False;
464*b1cdbd2cSJim Jagielski while( !bOk )
465*b1cdbd2cSJim Jagielski {
466*b1cdbd2cSJim Jagielski SwStringInputDlg* pDlg = new SwStringInputDlg( this,
467*b1cdbd2cSJim Jagielski aStrRenameTitle, aLbFormat.GetSelectEntry(),
468*b1cdbd2cSJim Jagielski aEmptyStr );
469*b1cdbd2cSJim Jagielski if( pDlg->Execute() == RET_OK )
470*b1cdbd2cSJim Jagielski {
471*b1cdbd2cSJim Jagielski sal_Bool bFmtRenamed = sal_False;
472*b1cdbd2cSJim Jagielski String aFormatName;
473*b1cdbd2cSJim Jagielski pDlg->GetInputString( aFormatName );
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski if ( aFormatName.Len() > 0 )
476*b1cdbd2cSJim Jagielski {
477*b1cdbd2cSJim Jagielski sal_uInt16 n;
478*b1cdbd2cSJim Jagielski for( n = 0; n < pTableTbl->Count(); ++n )
479*b1cdbd2cSJim Jagielski if ((*pTableTbl)[n]->GetName() == aFormatName)
480*b1cdbd2cSJim Jagielski break;
481*b1cdbd2cSJim Jagielski
482*b1cdbd2cSJim Jagielski if( n >= pTableTbl->Count() )
483*b1cdbd2cSJim Jagielski {
484*b1cdbd2cSJim Jagielski // Format mit dem Namen noch nicht vorhanden, also
485*b1cdbd2cSJim Jagielski // umbenennen
486*b1cdbd2cSJim Jagielski
487*b1cdbd2cSJim Jagielski aLbFormat.RemoveEntry( nDfltStylePos + nIndex );
488*b1cdbd2cSJim Jagielski SwTableAutoFmtPtr p = (*pTableTbl)[ nIndex ];
489*b1cdbd2cSJim Jagielski pTableTbl->Remove( nIndex );
490*b1cdbd2cSJim Jagielski
491*b1cdbd2cSJim Jagielski p->SetName( aFormatName );
492*b1cdbd2cSJim Jagielski
493*b1cdbd2cSJim Jagielski // Sortiert einfuegen!!
494*b1cdbd2cSJim Jagielski for( n = 1; n < pTableTbl->Count(); ++n )
495*b1cdbd2cSJim Jagielski if( (*pTableTbl)[ n ]->GetName() > aFormatName )
496*b1cdbd2cSJim Jagielski break;
497*b1cdbd2cSJim Jagielski
498*b1cdbd2cSJim Jagielski pTableTbl->Insert( p, n );
499*b1cdbd2cSJim Jagielski aLbFormat.InsertEntry( aFormatName, nDfltStylePos + n );
500*b1cdbd2cSJim Jagielski aLbFormat.SelectEntryPos( nDfltStylePos + n );
501*b1cdbd2cSJim Jagielski
502*b1cdbd2cSJim Jagielski if ( !bCoreDataChanged )
503*b1cdbd2cSJim Jagielski {
504*b1cdbd2cSJim Jagielski aBtnCancel.SetText( aStrClose );
505*b1cdbd2cSJim Jagielski bCoreDataChanged = sal_True;
506*b1cdbd2cSJim Jagielski }
507*b1cdbd2cSJim Jagielski
508*b1cdbd2cSJim Jagielski SelFmtHdl( 0 );
509*b1cdbd2cSJim Jagielski bOk = sal_True;
510*b1cdbd2cSJim Jagielski bFmtRenamed = sal_True;
511*b1cdbd2cSJim Jagielski }
512*b1cdbd2cSJim Jagielski }
513*b1cdbd2cSJim Jagielski
514*b1cdbd2cSJim Jagielski if( !bFmtRenamed )
515*b1cdbd2cSJim Jagielski {
516*b1cdbd2cSJim Jagielski bOk = RET_CANCEL == ErrorBox( this,
517*b1cdbd2cSJim Jagielski WinBits( WB_OK_CANCEL | WB_DEF_OK),
518*b1cdbd2cSJim Jagielski aStrInvalidFmt
519*b1cdbd2cSJim Jagielski ).Execute();
520*b1cdbd2cSJim Jagielski }
521*b1cdbd2cSJim Jagielski }
522*b1cdbd2cSJim Jagielski else
523*b1cdbd2cSJim Jagielski bOk = sal_True;
524*b1cdbd2cSJim Jagielski delete pDlg;
525*b1cdbd2cSJim Jagielski }
526*b1cdbd2cSJim Jagielski return 0;
527*b1cdbd2cSJim Jagielski }
528*b1cdbd2cSJim Jagielski
529*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
530*b1cdbd2cSJim Jagielski
IMPL_LINK(SwAutoFormatDlg,SelFmtHdl,void *,EMPTYARG)531*b1cdbd2cSJim Jagielski IMPL_LINK( SwAutoFormatDlg, SelFmtHdl, void *, EMPTYARG )
532*b1cdbd2cSJim Jagielski {
533*b1cdbd2cSJim Jagielski sal_Bool bBtnEnable = sal_False;
534*b1cdbd2cSJim Jagielski sal_uInt8 nSelPos = (sal_uInt8) aLbFormat.GetSelectEntryPos(), nOldIdx = nIndex;
535*b1cdbd2cSJim Jagielski if( nSelPos >= nDfltStylePos )
536*b1cdbd2cSJim Jagielski {
537*b1cdbd2cSJim Jagielski nIndex = nSelPos - nDfltStylePos;
538*b1cdbd2cSJim Jagielski pWndPreview->NotifyChange( *(*pTableTbl)[nIndex] );
539*b1cdbd2cSJim Jagielski bBtnEnable = 0 != nIndex;
540*b1cdbd2cSJim Jagielski UpdateChecks( *(*pTableTbl)[nIndex], sal_True );
541*b1cdbd2cSJim Jagielski }
542*b1cdbd2cSJim Jagielski else
543*b1cdbd2cSJim Jagielski {
544*b1cdbd2cSJim Jagielski nIndex = 255;
545*b1cdbd2cSJim Jagielski
546*b1cdbd2cSJim Jagielski SwTableAutoFmt aTmp( ViewShell::GetShellRes()->aStrNone );
547*b1cdbd2cSJim Jagielski aTmp.SetFont( sal_False );
548*b1cdbd2cSJim Jagielski aTmp.SetJustify( sal_False );
549*b1cdbd2cSJim Jagielski aTmp.SetFrame( sal_False );
550*b1cdbd2cSJim Jagielski aTmp.SetBackground( sal_False );
551*b1cdbd2cSJim Jagielski aTmp.SetValueFormat( sal_False );
552*b1cdbd2cSJim Jagielski aTmp.SetWidthHeight( sal_False );
553*b1cdbd2cSJim Jagielski
554*b1cdbd2cSJim Jagielski if( nOldIdx != nIndex )
555*b1cdbd2cSJim Jagielski pWndPreview->NotifyChange( aTmp );
556*b1cdbd2cSJim Jagielski UpdateChecks( aTmp, sal_False );
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski
559*b1cdbd2cSJim Jagielski aBtnRemove.Enable( bBtnEnable );
560*b1cdbd2cSJim Jagielski aBtnRename.Enable( bBtnEnable );
561*b1cdbd2cSJim Jagielski
562*b1cdbd2cSJim Jagielski return 0;
563*b1cdbd2cSJim Jagielski }
564*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
565*b1cdbd2cSJim Jagielski
IMPL_LINK_INLINE_START(SwAutoFormatDlg,OkHdl,Button *,EMPTYARG)566*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_START( SwAutoFormatDlg, OkHdl, Button *, EMPTYARG )
567*b1cdbd2cSJim Jagielski {
568*b1cdbd2cSJim Jagielski if( bSetAutoFmt )
569*b1cdbd2cSJim Jagielski pShell->SetTableAutoFmt( *(*pTableTbl)[ nIndex ] );
570*b1cdbd2cSJim Jagielski EndDialog( RET_OK );
571*b1cdbd2cSJim Jagielski return sal_True;
572*b1cdbd2cSJim Jagielski }
IMPL_LINK_INLINE_END(SwAutoFormatDlg,OkHdl,Button *,EMPTYARG)573*b1cdbd2cSJim Jagielski IMPL_LINK_INLINE_END( SwAutoFormatDlg, OkHdl, Button *, EMPTYARG )
574*b1cdbd2cSJim Jagielski
575*b1cdbd2cSJim Jagielski //========================================================================
576*b1cdbd2cSJim Jagielski // AutoFmtPreview
577*b1cdbd2cSJim Jagielski
578*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
579*b1cdbd2cSJim Jagielski
580*b1cdbd2cSJim Jagielski AutoFmtPreview::AutoFmtPreview( Window* pParent, const ResId& rRes, SwWrtShell* pWrtShell ) :
581*b1cdbd2cSJim Jagielski Window ( pParent, rRes ),
582*b1cdbd2cSJim Jagielski
583*b1cdbd2cSJim Jagielski aCurData ( aEmptyStr ),
584*b1cdbd2cSJim Jagielski aVD ( *this ),
585*b1cdbd2cSJim Jagielski aScriptedText ( aVD ),
586*b1cdbd2cSJim Jagielski bFitWidth ( sal_False ),
587*b1cdbd2cSJim Jagielski mbRTL ( false ),
588*b1cdbd2cSJim Jagielski aPrvSize ( GetSizePixel().Width() - 6, GetSizePixel().Height() - 30 ),
589*b1cdbd2cSJim Jagielski nLabelColWidth ( (aPrvSize.Width() - 4) / 4 - 12 ),
590*b1cdbd2cSJim Jagielski nDataColWidth1 ( (aPrvSize.Width() - 4 - 2 * nLabelColWidth) / 3 ),
591*b1cdbd2cSJim Jagielski nDataColWidth2 ( (aPrvSize.Width() - 4 - 2 * nLabelColWidth) / 4 ),
592*b1cdbd2cSJim Jagielski nRowHeight ( (aPrvSize.Height() - 4) / 5 ),
593*b1cdbd2cSJim Jagielski aStrJan ( SW_RES( STR_JAN ) ),
594*b1cdbd2cSJim Jagielski aStrFeb ( SW_RES( STR_FEB ) ),
595*b1cdbd2cSJim Jagielski aStrMar ( SW_RES( STR_MAR ) ),
596*b1cdbd2cSJim Jagielski aStrNorth ( SW_RES( STR_NORTH ) ),
597*b1cdbd2cSJim Jagielski aStrMid ( SW_RES( STR_MID ) ),
598*b1cdbd2cSJim Jagielski aStrSouth ( SW_RES( STR_SOUTH ) ),
599*b1cdbd2cSJim Jagielski aStrSum ( SW_RES( STR_SUM ) ),
600*b1cdbd2cSJim Jagielski m_xMSF ( comphelper::getProcessServiceFactory() )
601*b1cdbd2cSJim Jagielski {
602*b1cdbd2cSJim Jagielski if (!pWrtShell->IsCrsrInTbl()) // We haven't created the table yet
603*b1cdbd2cSJim Jagielski mbRTL = Application::GetSettings().GetLayoutRTL();
604*b1cdbd2cSJim Jagielski else
605*b1cdbd2cSJim Jagielski mbRTL = pWrtShell->IsTableRightToLeft();
606*b1cdbd2cSJim Jagielski
607*b1cdbd2cSJim Jagielski DBG_ASSERT( m_xMSF.is(), "AutoFmtPreview: no MultiServiceFactory");
608*b1cdbd2cSJim Jagielski if ( m_xMSF.is() )
609*b1cdbd2cSJim Jagielski {
610*b1cdbd2cSJim Jagielski m_xBreak = uno::Reference< i18n::XBreakIterator >(
611*b1cdbd2cSJim Jagielski m_xMSF->createInstance (
612*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii( "com.sun.star.i18n.BreakIterator" ) ),
613*b1cdbd2cSJim Jagielski uno::UNO_QUERY);
614*b1cdbd2cSJim Jagielski }
615*b1cdbd2cSJim Jagielski pNumFmt = new SvNumberFormatter( m_xMSF, LANGUAGE_SYSTEM );
616*b1cdbd2cSJim Jagielski
617*b1cdbd2cSJim Jagielski Init();
618*b1cdbd2cSJim Jagielski }
619*b1cdbd2cSJim Jagielski
620*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
621*b1cdbd2cSJim Jagielski
~AutoFmtPreview()622*b1cdbd2cSJim Jagielski __EXPORT AutoFmtPreview::~AutoFmtPreview()
623*b1cdbd2cSJim Jagielski {
624*b1cdbd2cSJim Jagielski delete pNumFmt;
625*b1cdbd2cSJim Jagielski }
626*b1cdbd2cSJim Jagielski
627*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
628*b1cdbd2cSJim Jagielski
lcl_SetFontProperties(Font & rFont,const SvxFontItem & rFontItem,const SvxWeightItem & rWeightItem,const SvxPostureItem & rPostureItem)629*b1cdbd2cSJim Jagielski static void lcl_SetFontProperties(
630*b1cdbd2cSJim Jagielski Font& rFont,
631*b1cdbd2cSJim Jagielski const SvxFontItem& rFontItem,
632*b1cdbd2cSJim Jagielski const SvxWeightItem& rWeightItem,
633*b1cdbd2cSJim Jagielski const SvxPostureItem& rPostureItem )
634*b1cdbd2cSJim Jagielski {
635*b1cdbd2cSJim Jagielski rFont.SetFamily ( rFontItem.GetFamily() );
636*b1cdbd2cSJim Jagielski rFont.SetName ( rFontItem.GetFamilyName() );
637*b1cdbd2cSJim Jagielski rFont.SetStyleName ( rFontItem.GetStyleName() );
638*b1cdbd2cSJim Jagielski rFont.SetCharSet ( rFontItem.GetCharSet() );
639*b1cdbd2cSJim Jagielski rFont.SetPitch ( rFontItem.GetPitch() );
640*b1cdbd2cSJim Jagielski rFont.SetWeight ( (FontWeight)rWeightItem.GetValue() );
641*b1cdbd2cSJim Jagielski rFont.SetItalic ( (FontItalic)rPostureItem.GetValue() );
642*b1cdbd2cSJim Jagielski }
643*b1cdbd2cSJim Jagielski
644*b1cdbd2cSJim Jagielski #define SETONALLFONTS( MethodName, Value ) \
645*b1cdbd2cSJim Jagielski rFont.MethodName( Value ); \
646*b1cdbd2cSJim Jagielski rCJKFont.MethodName( Value ); \
647*b1cdbd2cSJim Jagielski rCTLFont.MethodName( Value );
648*b1cdbd2cSJim Jagielski
MakeFonts(sal_uInt8 nIndex,Font & rFont,Font & rCJKFont,Font & rCTLFont)649*b1cdbd2cSJim Jagielski void AutoFmtPreview::MakeFonts( sal_uInt8 nIndex, Font& rFont, Font& rCJKFont, Font& rCTLFont )
650*b1cdbd2cSJim Jagielski {
651*b1cdbd2cSJim Jagielski const SwBoxAutoFmt& rBoxFmt = aCurData.GetBoxFmt( nIndex );
652*b1cdbd2cSJim Jagielski
653*b1cdbd2cSJim Jagielski rFont = rCJKFont = rCTLFont = GetFont();
654*b1cdbd2cSJim Jagielski Size aFontSize( rFont.GetSize().Width(), 10 );
655*b1cdbd2cSJim Jagielski
656*b1cdbd2cSJim Jagielski lcl_SetFontProperties( rFont, rBoxFmt.GetFont(), rBoxFmt.GetWeight(), rBoxFmt.GetPosture() );
657*b1cdbd2cSJim Jagielski lcl_SetFontProperties( rCJKFont, rBoxFmt.GetCJKFont(), rBoxFmt.GetCJKWeight(), rBoxFmt.GetCJKPosture() );
658*b1cdbd2cSJim Jagielski lcl_SetFontProperties( rCTLFont, rBoxFmt.GetCTLFont(), rBoxFmt.GetCTLWeight(), rBoxFmt.GetCTLPosture() );
659*b1cdbd2cSJim Jagielski
660*b1cdbd2cSJim Jagielski SETONALLFONTS( SetUnderline, (FontUnderline)rBoxFmt.GetUnderline().GetValue() );
661*b1cdbd2cSJim Jagielski SETONALLFONTS( SetOverline, (FontUnderline)rBoxFmt.GetOverline().GetValue() );
662*b1cdbd2cSJim Jagielski SETONALLFONTS( SetStrikeout, (FontStrikeout)rBoxFmt.GetCrossedOut().GetValue() );
663*b1cdbd2cSJim Jagielski SETONALLFONTS( SetOutline, rBoxFmt.GetContour().GetValue() );
664*b1cdbd2cSJim Jagielski SETONALLFONTS( SetShadow, rBoxFmt.GetShadowed().GetValue() );
665*b1cdbd2cSJim Jagielski SETONALLFONTS( SetColor, rBoxFmt.GetColor().GetValue() );
666*b1cdbd2cSJim Jagielski SETONALLFONTS( SetSize, aFontSize );
667*b1cdbd2cSJim Jagielski SETONALLFONTS( SetTransparent, sal_True );
668*b1cdbd2cSJim Jagielski }
669*b1cdbd2cSJim Jagielski
670*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
671*b1cdbd2cSJim Jagielski
GetFormatIndex(size_t nCol,size_t nRow) const672*b1cdbd2cSJim Jagielski sal_uInt8 AutoFmtPreview::GetFormatIndex( size_t nCol, size_t nRow ) const
673*b1cdbd2cSJim Jagielski {
674*b1cdbd2cSJim Jagielski static const sal_uInt8 pnFmtMap[] =
675*b1cdbd2cSJim Jagielski {
676*b1cdbd2cSJim Jagielski 0, 1, 2, 1, 3,
677*b1cdbd2cSJim Jagielski 4, 5, 6, 5, 7,
678*b1cdbd2cSJim Jagielski 8, 9, 10, 9, 11,
679*b1cdbd2cSJim Jagielski 4, 5, 6, 5, 7,
680*b1cdbd2cSJim Jagielski 12, 13, 14, 13, 15
681*b1cdbd2cSJim Jagielski };
682*b1cdbd2cSJim Jagielski return pnFmtMap[ maArray.GetCellIndex( nCol, nRow, mbRTL ) ];
683*b1cdbd2cSJim Jagielski }
684*b1cdbd2cSJim Jagielski
GetBoxItem(size_t nCol,size_t nRow) const685*b1cdbd2cSJim Jagielski const SvxBoxItem& AutoFmtPreview::GetBoxItem( size_t nCol, size_t nRow ) const
686*b1cdbd2cSJim Jagielski {
687*b1cdbd2cSJim Jagielski return aCurData.GetBoxFmt( GetFormatIndex( nCol, nRow ) ).GetBox();
688*b1cdbd2cSJim Jagielski }
689*b1cdbd2cSJim Jagielski
690*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
691*b1cdbd2cSJim Jagielski
DrawString(size_t nCol,size_t nRow)692*b1cdbd2cSJim Jagielski void AutoFmtPreview::DrawString( size_t nCol, size_t nRow )
693*b1cdbd2cSJim Jagielski {
694*b1cdbd2cSJim Jagielski //------------------------
695*b1cdbd2cSJim Jagielski // Ausgabe des Zelltextes:
696*b1cdbd2cSJim Jagielski //------------------------
697*b1cdbd2cSJim Jagielski sal_uLong nNum;
698*b1cdbd2cSJim Jagielski double nVal;
699*b1cdbd2cSJim Jagielski String cellString;
700*b1cdbd2cSJim Jagielski sal_uInt8 nIndex = static_cast< sal_uInt8 >( maArray.GetCellIndex( nCol, nRow, mbRTL ) );
701*b1cdbd2cSJim Jagielski
702*b1cdbd2cSJim Jagielski switch( nIndex )
703*b1cdbd2cSJim Jagielski {
704*b1cdbd2cSJim Jagielski case 1: cellString = aStrJan; break;
705*b1cdbd2cSJim Jagielski case 2: cellString = aStrFeb; break;
706*b1cdbd2cSJim Jagielski case 3: cellString = aStrMar; break;
707*b1cdbd2cSJim Jagielski case 5: cellString = aStrNorth; break;
708*b1cdbd2cSJim Jagielski case 10: cellString = aStrMid; break;
709*b1cdbd2cSJim Jagielski case 15: cellString = aStrSouth; break;
710*b1cdbd2cSJim Jagielski case 4:
711*b1cdbd2cSJim Jagielski case 20: cellString = aStrSum; break;
712*b1cdbd2cSJim Jagielski
713*b1cdbd2cSJim Jagielski case 6:
714*b1cdbd2cSJim Jagielski case 8:
715*b1cdbd2cSJim Jagielski case 16:
716*b1cdbd2cSJim Jagielski case 18: nVal = nIndex;
717*b1cdbd2cSJim Jagielski nNum = 5;
718*b1cdbd2cSJim Jagielski goto MAKENUMSTR;
719*b1cdbd2cSJim Jagielski case 17:
720*b1cdbd2cSJim Jagielski case 7: nVal = nIndex;
721*b1cdbd2cSJim Jagielski nNum = 6;
722*b1cdbd2cSJim Jagielski goto MAKENUMSTR;
723*b1cdbd2cSJim Jagielski case 11:
724*b1cdbd2cSJim Jagielski case 12:
725*b1cdbd2cSJim Jagielski case 13: nVal = nIndex;
726*b1cdbd2cSJim Jagielski nNum = 12 == nIndex ? 10 : 9;
727*b1cdbd2cSJim Jagielski goto MAKENUMSTR;
728*b1cdbd2cSJim Jagielski
729*b1cdbd2cSJim Jagielski case 9: nVal = 21; nNum = 7; goto MAKENUMSTR;
730*b1cdbd2cSJim Jagielski case 14: nVal = 36; nNum = 11; goto MAKENUMSTR;
731*b1cdbd2cSJim Jagielski case 19: nVal = 51; nNum = 7; goto MAKENUMSTR;
732*b1cdbd2cSJim Jagielski case 21: nVal = 33; nNum = 13; goto MAKENUMSTR;
733*b1cdbd2cSJim Jagielski case 22: nVal = 36; nNum = 14; goto MAKENUMSTR;
734*b1cdbd2cSJim Jagielski case 23: nVal = 39; nNum = 13; goto MAKENUMSTR;
735*b1cdbd2cSJim Jagielski case 24: nVal = 108; nNum = 15; goto MAKENUMSTR;
736*b1cdbd2cSJim Jagielski MAKENUMSTR:
737*b1cdbd2cSJim Jagielski if( aCurData.IsValueFormat() )
738*b1cdbd2cSJim Jagielski {
739*b1cdbd2cSJim Jagielski String sFmt; LanguageType eLng, eSys;
740*b1cdbd2cSJim Jagielski aCurData.GetBoxFmt( (sal_uInt8)nNum ).GetValueFormat( sFmt, eLng, eSys );
741*b1cdbd2cSJim Jagielski
742*b1cdbd2cSJim Jagielski short nType;
743*b1cdbd2cSJim Jagielski sal_Bool bNew;
744*b1cdbd2cSJim Jagielski xub_StrLen nCheckPos;
745*b1cdbd2cSJim Jagielski sal_uInt32 nKey = pNumFmt->GetIndexPuttingAndConverting( sFmt, eLng,
746*b1cdbd2cSJim Jagielski eSys, nType, bNew, nCheckPos);
747*b1cdbd2cSJim Jagielski Color* pDummy;
748*b1cdbd2cSJim Jagielski pNumFmt->GetOutputString( nVal, nKey, cellString, &pDummy );
749*b1cdbd2cSJim Jagielski }
750*b1cdbd2cSJim Jagielski else
751*b1cdbd2cSJim Jagielski cellString = String::CreateFromInt32((sal_Int32)nVal);
752*b1cdbd2cSJim Jagielski break;
753*b1cdbd2cSJim Jagielski
754*b1cdbd2cSJim Jagielski }
755*b1cdbd2cSJim Jagielski
756*b1cdbd2cSJim Jagielski if( cellString.Len() )
757*b1cdbd2cSJim Jagielski {
758*b1cdbd2cSJim Jagielski Size aStrSize;
759*b1cdbd2cSJim Jagielski sal_uInt8 nFmtIndex = GetFormatIndex( nCol, nRow );
760*b1cdbd2cSJim Jagielski Rectangle cellRect = maArray.GetCellRect( nCol, nRow );
761*b1cdbd2cSJim Jagielski Point aPos = cellRect.TopLeft();
762*b1cdbd2cSJim Jagielski sal_uInt16 nRightX = 0;
763*b1cdbd2cSJim Jagielski // sal_Bool bJustify = aCurData.IsJustify();
764*b1cdbd2cSJim Jagielski // ScHorJustifyAttr aHorJustifyItem;
765*b1cdbd2cSJim Jagielski // CellHorJustify eJustification;
766*b1cdbd2cSJim Jagielski
767*b1cdbd2cSJim Jagielski Size theMaxStrSize( cellRect.GetWidth() - FRAME_OFFSET,
768*b1cdbd2cSJim Jagielski cellRect.GetHeight() - FRAME_OFFSET );
769*b1cdbd2cSJim Jagielski if( aCurData.IsFont() )
770*b1cdbd2cSJim Jagielski {
771*b1cdbd2cSJim Jagielski Font aFont, aCJKFont, aCTLFont;
772*b1cdbd2cSJim Jagielski MakeFonts( nFmtIndex, aFont, aCJKFont, aCTLFont );
773*b1cdbd2cSJim Jagielski aScriptedText.SetFonts( &aFont, &aCJKFont, &aCTLFont );
774*b1cdbd2cSJim Jagielski }
775*b1cdbd2cSJim Jagielski else
776*b1cdbd2cSJim Jagielski aScriptedText.SetDefaultFont();
777*b1cdbd2cSJim Jagielski
778*b1cdbd2cSJim Jagielski aScriptedText.SetText( cellString, m_xBreak );
779*b1cdbd2cSJim Jagielski aStrSize = aScriptedText.GetTextSize();
780*b1cdbd2cSJim Jagielski
781*b1cdbd2cSJim Jagielski if( aCurData.IsFont() &&
782*b1cdbd2cSJim Jagielski theMaxStrSize.Height() < aStrSize.Height() )
783*b1cdbd2cSJim Jagielski {
784*b1cdbd2cSJim Jagielski // wenn der String in diesem Font nicht
785*b1cdbd2cSJim Jagielski // in die Zelle passt, wird wieder der
786*b1cdbd2cSJim Jagielski // Standard-Font genommen:
787*b1cdbd2cSJim Jagielski aScriptedText.SetDefaultFont();
788*b1cdbd2cSJim Jagielski aStrSize = aScriptedText.GetTextSize();
789*b1cdbd2cSJim Jagielski }
790*b1cdbd2cSJim Jagielski
791*b1cdbd2cSJim Jagielski while( theMaxStrSize.Width() <= aStrSize.Width() &&
792*b1cdbd2cSJim Jagielski cellString.Len() > 1 )
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski // if( eJustification == SVX_HOR_JUSTIFY_RIGHT )
795*b1cdbd2cSJim Jagielski // cellString.Erase( 0, 1 );
796*b1cdbd2cSJim Jagielski // else
797*b1cdbd2cSJim Jagielski cellString.Erase( cellString.Len() - 1 );
798*b1cdbd2cSJim Jagielski aScriptedText.SetText( cellString, m_xBreak );
799*b1cdbd2cSJim Jagielski aStrSize = aScriptedText.GetTextSize();
800*b1cdbd2cSJim Jagielski }
801*b1cdbd2cSJim Jagielski
802*b1cdbd2cSJim Jagielski nRightX = (sal_uInt16)( cellRect.GetWidth()
803*b1cdbd2cSJim Jagielski - aStrSize.Width()
804*b1cdbd2cSJim Jagielski - FRAME_OFFSET );
805*b1cdbd2cSJim Jagielski //-------------
806*b1cdbd2cSJim Jagielski // Ausrichtung:
807*b1cdbd2cSJim Jagielski //-------------
808*b1cdbd2cSJim Jagielski /* if ( bJustify )
809*b1cdbd2cSJim Jagielski {
810*b1cdbd2cSJim Jagielski aCurData.GetHorJustify( nFmtIndex, aHorJustifyItem );
811*b1cdbd2cSJim Jagielski eJustification = (CellHorJustify)aHorJustifyItem.GetValue();
812*b1cdbd2cSJim Jagielski }
813*b1cdbd2cSJim Jagielski else
814*b1cdbd2cSJim Jagielski {
815*b1cdbd2cSJim Jagielski eJustification = SC_HOR_JUSTIFY_STANDARD;
816*b1cdbd2cSJim Jagielski }*/
817*b1cdbd2cSJim Jagielski
818*b1cdbd2cSJim Jagielski //-----------------------------
819*b1cdbd2cSJim Jagielski // vertikal (immer zentrieren):
820*b1cdbd2cSJim Jagielski //-----------------------------
821*b1cdbd2cSJim Jagielski aPos.Y() += (nRowHeight - (sal_uInt16)aStrSize.Height()) / 2;
822*b1cdbd2cSJim Jagielski
823*b1cdbd2cSJim Jagielski //-----------
824*b1cdbd2cSJim Jagielski // horizontal
825*b1cdbd2cSJim Jagielski //-----------
826*b1cdbd2cSJim Jagielski /* if ( eJustification != SC_HOR_JUSTIFY_STANDARD )*/
827*b1cdbd2cSJim Jagielski if( mbRTL )
828*b1cdbd2cSJim Jagielski aPos.X() += nRightX;
829*b1cdbd2cSJim Jagielski else if (aCurData.IsJustify())
830*b1cdbd2cSJim Jagielski {
831*b1cdbd2cSJim Jagielski sal_uInt16 nHorPos = (sal_uInt16)
832*b1cdbd2cSJim Jagielski ((cellRect.GetWidth()-aStrSize.Width())/2);
833*b1cdbd2cSJim Jagielski const SvxAdjustItem& rAdj = aCurData.GetBoxFmt(nFmtIndex).GetAdjust();
834*b1cdbd2cSJim Jagielski switch ( rAdj.GetAdjust() )
835*b1cdbd2cSJim Jagielski {
836*b1cdbd2cSJim Jagielski case SVX_ADJUST_LEFT:
837*b1cdbd2cSJim Jagielski aPos.X() += FRAME_OFFSET;
838*b1cdbd2cSJim Jagielski break;
839*b1cdbd2cSJim Jagielski case SVX_ADJUST_RIGHT:
840*b1cdbd2cSJim Jagielski aPos.X() += nRightX;
841*b1cdbd2cSJim Jagielski break;
842*b1cdbd2cSJim Jagielski default:
843*b1cdbd2cSJim Jagielski aPos.X() += nHorPos;
844*b1cdbd2cSJim Jagielski break;
845*b1cdbd2cSJim Jagielski }
846*b1cdbd2cSJim Jagielski }
847*b1cdbd2cSJim Jagielski else
848*b1cdbd2cSJim Jagielski {
849*b1cdbd2cSJim Jagielski //---------------------
850*b1cdbd2cSJim Jagielski // Standardausrichtung:
851*b1cdbd2cSJim Jagielski //---------------------
852*b1cdbd2cSJim Jagielski if ( (nCol == 0) || (nIndex == 4) )
853*b1cdbd2cSJim Jagielski {
854*b1cdbd2cSJim Jagielski // Text-Label links oder Summe linksbuendig
855*b1cdbd2cSJim Jagielski aPos.X() += FRAME_OFFSET;
856*b1cdbd2cSJim Jagielski }
857*b1cdbd2cSJim Jagielski else
858*b1cdbd2cSJim Jagielski {
859*b1cdbd2cSJim Jagielski // Zahlen/Datum rechtsbuendig
860*b1cdbd2cSJim Jagielski aPos.X() += nRightX;
861*b1cdbd2cSJim Jagielski }
862*b1cdbd2cSJim Jagielski }
863*b1cdbd2cSJim Jagielski
864*b1cdbd2cSJim Jagielski //-------------------------------
865*b1cdbd2cSJim Jagielski aScriptedText.DrawText( aPos );
866*b1cdbd2cSJim Jagielski //-------------------------------
867*b1cdbd2cSJim Jagielski }
868*b1cdbd2cSJim Jagielski }
869*b1cdbd2cSJim Jagielski
870*b1cdbd2cSJim Jagielski #undef FRAME_OFFSET
871*b1cdbd2cSJim Jagielski
872*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
873*b1cdbd2cSJim Jagielski
DrawStrings()874*b1cdbd2cSJim Jagielski void AutoFmtPreview::DrawStrings()
875*b1cdbd2cSJim Jagielski {
876*b1cdbd2cSJim Jagielski for( size_t nRow = 0; nRow < 5; ++nRow )
877*b1cdbd2cSJim Jagielski for( size_t nCol = 0; nCol < 5; ++nCol )
878*b1cdbd2cSJim Jagielski DrawString( nCol, nRow );
879*b1cdbd2cSJim Jagielski }
880*b1cdbd2cSJim Jagielski
881*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
882*b1cdbd2cSJim Jagielski
883*b1cdbd2cSJim Jagielski
DrawBackground()884*b1cdbd2cSJim Jagielski void AutoFmtPreview::DrawBackground()
885*b1cdbd2cSJim Jagielski {
886*b1cdbd2cSJim Jagielski for( size_t nRow = 0; nRow < 5; ++nRow )
887*b1cdbd2cSJim Jagielski {
888*b1cdbd2cSJim Jagielski for( size_t nCol = 0; nCol < 5; ++nCol )
889*b1cdbd2cSJim Jagielski {
890*b1cdbd2cSJim Jagielski SvxBrushItem aBrushItem( aCurData.GetBoxFmt( GetFormatIndex( nCol, nRow ) ).GetBackground() );
891*b1cdbd2cSJim Jagielski
892*b1cdbd2cSJim Jagielski aVD.Push( PUSH_LINECOLOR | PUSH_FILLCOLOR );
893*b1cdbd2cSJim Jagielski aVD.SetLineColor();
894*b1cdbd2cSJim Jagielski aVD.SetFillColor( aBrushItem.GetColor() );
895*b1cdbd2cSJim Jagielski aVD.DrawRect( maArray.GetCellRect( nCol, nRow ) );
896*b1cdbd2cSJim Jagielski aVD.Pop();
897*b1cdbd2cSJim Jagielski }
898*b1cdbd2cSJim Jagielski }
899*b1cdbd2cSJim Jagielski }
900*b1cdbd2cSJim Jagielski
901*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
902*b1cdbd2cSJim Jagielski
903*b1cdbd2cSJim Jagielski
PaintCells()904*b1cdbd2cSJim Jagielski void AutoFmtPreview::PaintCells()
905*b1cdbd2cSJim Jagielski {
906*b1cdbd2cSJim Jagielski // 1) background
907*b1cdbd2cSJim Jagielski if ( aCurData.IsBackground() )
908*b1cdbd2cSJim Jagielski DrawBackground();
909*b1cdbd2cSJim Jagielski
910*b1cdbd2cSJim Jagielski // 2) values
911*b1cdbd2cSJim Jagielski DrawStrings();
912*b1cdbd2cSJim Jagielski
913*b1cdbd2cSJim Jagielski // 3) border
914*b1cdbd2cSJim Jagielski if ( aCurData.IsFrame() )
915*b1cdbd2cSJim Jagielski maArray.DrawArray( aVD );
916*b1cdbd2cSJim Jagielski }
917*b1cdbd2cSJim Jagielski
918*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
919*b1cdbd2cSJim Jagielski
920*b1cdbd2cSJim Jagielski
Init()921*b1cdbd2cSJim Jagielski void __EXPORT AutoFmtPreview::Init()
922*b1cdbd2cSJim Jagielski {
923*b1cdbd2cSJim Jagielski SetBorderStyle( GetBorderStyle() | WINDOW_BORDER_MONO );
924*b1cdbd2cSJim Jagielski maArray.Initialize( 5, 5 );
925*b1cdbd2cSJim Jagielski maArray.SetUseDiagDoubleClipping( false );
926*b1cdbd2cSJim Jagielski CalcCellArray( sal_False );
927*b1cdbd2cSJim Jagielski CalcLineMap();
928*b1cdbd2cSJim Jagielski }
929*b1cdbd2cSJim Jagielski
930*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
931*b1cdbd2cSJim Jagielski
932*b1cdbd2cSJim Jagielski
CalcCellArray(sal_Bool _bFitWidth)933*b1cdbd2cSJim Jagielski void AutoFmtPreview::CalcCellArray( sal_Bool _bFitWidth )
934*b1cdbd2cSJim Jagielski {
935*b1cdbd2cSJim Jagielski maArray.SetXOffset( 2 );
936*b1cdbd2cSJim Jagielski maArray.SetAllColWidths( _bFitWidth ? nDataColWidth2 : nDataColWidth1 );
937*b1cdbd2cSJim Jagielski maArray.SetColWidth( 0, nLabelColWidth );
938*b1cdbd2cSJim Jagielski maArray.SetColWidth( 4, nLabelColWidth );
939*b1cdbd2cSJim Jagielski
940*b1cdbd2cSJim Jagielski maArray.SetYOffset( 2 );
941*b1cdbd2cSJim Jagielski maArray.SetAllRowHeights( nRowHeight );
942*b1cdbd2cSJim Jagielski
943*b1cdbd2cSJim Jagielski aPrvSize.Width() = maArray.GetWidth() + 4;
944*b1cdbd2cSJim Jagielski aPrvSize.Height() = maArray.GetHeight() + 4;
945*b1cdbd2cSJim Jagielski }
946*b1cdbd2cSJim Jagielski
947*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
948*b1cdbd2cSJim Jagielski
lclSetStyleFromBorder(svx::frame::Style & rStyle,const SvxBorderLine * pBorder)949*b1cdbd2cSJim Jagielski inline void lclSetStyleFromBorder( svx::frame::Style& rStyle, const SvxBorderLine* pBorder )
950*b1cdbd2cSJim Jagielski {
951*b1cdbd2cSJim Jagielski rStyle.Set( pBorder, 0.05, 5 );
952*b1cdbd2cSJim Jagielski }
953*b1cdbd2cSJim Jagielski
CalcLineMap()954*b1cdbd2cSJim Jagielski void AutoFmtPreview::CalcLineMap()
955*b1cdbd2cSJim Jagielski {
956*b1cdbd2cSJim Jagielski for( size_t nRow = 0; nRow < 5; ++nRow )
957*b1cdbd2cSJim Jagielski {
958*b1cdbd2cSJim Jagielski for( size_t nCol = 0; nCol < 5; ++nCol )
959*b1cdbd2cSJim Jagielski {
960*b1cdbd2cSJim Jagielski svx::frame::Style aStyle;
961*b1cdbd2cSJim Jagielski
962*b1cdbd2cSJim Jagielski const SvxBoxItem& rItem = GetBoxItem( nCol, nRow );
963*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, rItem.GetLeft() );
964*b1cdbd2cSJim Jagielski maArray.SetCellStyleLeft( nCol, nRow, aStyle );
965*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, rItem.GetRight() );
966*b1cdbd2cSJim Jagielski maArray.SetCellStyleRight( nCol, nRow, aStyle );
967*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, rItem.GetTop() );
968*b1cdbd2cSJim Jagielski maArray.SetCellStyleTop( nCol, nRow, aStyle );
969*b1cdbd2cSJim Jagielski lclSetStyleFromBorder( aStyle, rItem.GetBottom() );
970*b1cdbd2cSJim Jagielski maArray.SetCellStyleBottom( nCol, nRow, aStyle );
971*b1cdbd2cSJim Jagielski
972*b1cdbd2cSJim Jagielski // FIXME - uncomment to draw diagonal borders
973*b1cdbd2cSJim Jagielski // lclSetStyleFromBorder( aStyle, GetDiagItem( nCol, nRow, true ).GetLine() );
974*b1cdbd2cSJim Jagielski // maArray.SetCellStyleTLBR( nCol, nRow, aStyle );
975*b1cdbd2cSJim Jagielski // lclSetStyleFromBorder( aStyle, GetDiagItem( nCol, nRow, false ).GetLine() );
976*b1cdbd2cSJim Jagielski // maArray.SetCellStyleBLTR( nCol, nRow, aStyle );
977*b1cdbd2cSJim Jagielski }
978*b1cdbd2cSJim Jagielski }
979*b1cdbd2cSJim Jagielski }
980*b1cdbd2cSJim Jagielski
981*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
982*b1cdbd2cSJim Jagielski
983*b1cdbd2cSJim Jagielski
NotifyChange(const SwTableAutoFmt & rNewData)984*b1cdbd2cSJim Jagielski void AutoFmtPreview::NotifyChange( const SwTableAutoFmt& rNewData )
985*b1cdbd2cSJim Jagielski {
986*b1cdbd2cSJim Jagielski aCurData = rNewData;
987*b1cdbd2cSJim Jagielski bFitWidth = aCurData.IsJustify();//sal_True; //???
988*b1cdbd2cSJim Jagielski CalcCellArray( bFitWidth );
989*b1cdbd2cSJim Jagielski CalcLineMap();
990*b1cdbd2cSJim Jagielski DoPaint( Rectangle( Point(0,0), GetSizePixel() ) );
991*b1cdbd2cSJim Jagielski }
992*b1cdbd2cSJim Jagielski
993*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
994*b1cdbd2cSJim Jagielski
995*b1cdbd2cSJim Jagielski
DoPaint(const Rectangle &)996*b1cdbd2cSJim Jagielski void AutoFmtPreview::DoPaint( const Rectangle& /*rRect*/ )
997*b1cdbd2cSJim Jagielski {
998*b1cdbd2cSJim Jagielski sal_uInt32 nOldDrawMode = aVD.GetDrawMode();
999*b1cdbd2cSJim Jagielski if( GetSettings().GetStyleSettings().GetHighContrastMode() &&
1000*b1cdbd2cSJim Jagielski SW_MOD()->GetAccessibilityOptions().GetIsForBorders() )
1001*b1cdbd2cSJim Jagielski aVD.SetDrawMode( DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT );
1002*b1cdbd2cSJim Jagielski
1003*b1cdbd2cSJim Jagielski Bitmap thePreview;
1004*b1cdbd2cSJim Jagielski Point aCenterPos;
1005*b1cdbd2cSJim Jagielski Size theWndSize = GetSizePixel();
1006*b1cdbd2cSJim Jagielski Size thePrevSize;
1007*b1cdbd2cSJim Jagielski Color oldColor;
1008*b1cdbd2cSJim Jagielski Font aFont;
1009*b1cdbd2cSJim Jagielski
1010*b1cdbd2cSJim Jagielski aFont = aVD.GetFont();
1011*b1cdbd2cSJim Jagielski aFont.SetTransparent( sal_True );
1012*b1cdbd2cSJim Jagielski
1013*b1cdbd2cSJim Jagielski aVD.SetFont ( aFont );
1014*b1cdbd2cSJim Jagielski aVD.SetLineColor ();
1015*b1cdbd2cSJim Jagielski const Color& rWinColor = GetSettings().GetStyleSettings().GetWindowColor();
1016*b1cdbd2cSJim Jagielski aVD.SetBackground ( Wallpaper(rWinColor) );
1017*b1cdbd2cSJim Jagielski aVD.SetFillColor ( rWinColor );
1018*b1cdbd2cSJim Jagielski aVD.SetOutputSizePixel ( aPrvSize );
1019*b1cdbd2cSJim Jagielski
1020*b1cdbd2cSJim Jagielski //--------------------------------
1021*b1cdbd2cSJim Jagielski // Zellen auf virtual Device malen
1022*b1cdbd2cSJim Jagielski // und Ergebnis sichern
1023*b1cdbd2cSJim Jagielski //--------------------------------
1024*b1cdbd2cSJim Jagielski PaintCells();
1025*b1cdbd2cSJim Jagielski thePreview = aVD.GetBitmap( Point(0,0), aPrvSize );
1026*b1cdbd2cSJim Jagielski
1027*b1cdbd2cSJim Jagielski //--------------------------------------
1028*b1cdbd2cSJim Jagielski // Rahmen malen und Vorschau zentrieren:
1029*b1cdbd2cSJim Jagielski // (virtual Device fuer Fensterausgabe)
1030*b1cdbd2cSJim Jagielski //--------------------------------------
1031*b1cdbd2cSJim Jagielski aVD.SetOutputSizePixel( theWndSize );
1032*b1cdbd2cSJim Jagielski oldColor = aVD.GetLineColor();
1033*b1cdbd2cSJim Jagielski aVD.SetLineColor();
1034*b1cdbd2cSJim Jagielski aVD.DrawRect( Rectangle( Point(0,0), theWndSize ) );
1035*b1cdbd2cSJim Jagielski SetLineColor( oldColor );
1036*b1cdbd2cSJim Jagielski aCenterPos = Point( (theWndSize.Width() - aPrvSize.Width() ) / 2,
1037*b1cdbd2cSJim Jagielski (theWndSize.Height() - aPrvSize.Height()) / 2 );
1038*b1cdbd2cSJim Jagielski aVD.DrawBitmap( aCenterPos, thePreview );
1039*b1cdbd2cSJim Jagielski
1040*b1cdbd2cSJim Jagielski //----------------------------
1041*b1cdbd2cSJim Jagielski // Ausgabe im Vorschaufenster:
1042*b1cdbd2cSJim Jagielski //----------------------------
1043*b1cdbd2cSJim Jagielski DrawBitmap( Point(0,0), aVD.GetBitmap( Point(0,0), theWndSize ) );
1044*b1cdbd2cSJim Jagielski
1045*b1cdbd2cSJim Jagielski aVD.SetDrawMode( nOldDrawMode );
1046*b1cdbd2cSJim Jagielski }
1047*b1cdbd2cSJim Jagielski
1048*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
1049*b1cdbd2cSJim Jagielski
Paint(const Rectangle & rRect)1050*b1cdbd2cSJim Jagielski void __EXPORT AutoFmtPreview::Paint( const Rectangle& rRect )
1051*b1cdbd2cSJim Jagielski {
1052*b1cdbd2cSJim Jagielski DoPaint( rRect );
1053*b1cdbd2cSJim Jagielski }
1054