/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef SC_AUTOFMT_HXX #define SC_AUTOFMT_HXX #ifndef _VIRDEV_HXX //autogen #include #endif #ifndef SV_FIXED_HXX #include #endif #ifndef SV_LSTBOX_HXX #include #endif #ifndef SV_BUTTON_HXX #include #endif #ifndef SV_MOREBTN_HXX #include #endif #ifndef _DIALOG_HXX //autogen #include #endif #include #include #include "scdllapi.h" //------------------------------------------------------------------------ class ScAutoFormat; class ScAutoFormatData; class SvxBoxItem; class SvxLineItem; class ScAutoFmtPreview; // s.u. class SvNumberFormatter; class ScDocument; //------------------------------------------------------------------------ enum AutoFmtLine { TOP_LINE, BOTTOM_LINE, LEFT_LINE, RIGHT_LINE }; //======================================================================== //CHINA001 class ScAutoFormatDlg : public ModalDialog //CHINA001 { //CHINA001 public: //CHINA001 ScAutoFormatDlg( Window* pParent, //CHINA001 ScAutoFormat* pAutoFormat, //CHINA001 const ScAutoFormatData* pSelFormatData, //CHINA001 ScDocument* pDoc ); //CHINA001 ~ScAutoFormatDlg(); //CHINA001 //CHINA001 sal_uInt16 GetIndex() const { return nIndex; } //CHINA001 String GetCurrFormatName(); //CHINA001 //CHINA001 private: //CHINA001 FixedLine aFlFormat; //CHINA001 ListBox aLbFormat; //CHINA001 ScAutoFmtPreview* pWndPreview; //CHINA001 OKButton aBtnOk; //CHINA001 CancelButton aBtnCancel; //CHINA001 HelpButton aBtnHelp; //CHINA001 PushButton aBtnAdd; //CHINA001 PushButton aBtnRemove; //CHINA001 MoreButton aBtnMore; //CHINA001 FixedLine aFlFormatting; //CHINA001 CheckBox aBtnNumFormat; //CHINA001 CheckBox aBtnBorder; //CHINA001 CheckBox aBtnFont; //CHINA001 CheckBox aBtnPattern; //CHINA001 CheckBox aBtnAlignment; //CHINA001 CheckBox aBtnAdjust; //CHINA001 PushButton aBtnRename; //CHINA001 String aStrTitle; //CHINA001 String aStrLabel; //CHINA001 String aStrClose; //CHINA001 String aStrDelTitle; //CHINA001 String aStrDelMsg; //CHINA001 String aStrRename; //CHINA001 //CHINA001 //------------------------ //CHINA001 ScAutoFormat* pFormat; //CHINA001 const ScAutoFormatData* pSelFmtData; //CHINA001 sal_uInt16 nIndex; //CHINA001 sal_Bool bCoreDataChanged; //CHINA001 sal_Bool bFmtInserted; //CHINA001 //CHINA001 void Init (); //CHINA001 void UpdateChecks (); //CHINA001 //------------------------ //CHINA001 DECL_LINK( CheckHdl, Button * ); //CHINA001 DECL_LINK( AddHdl, void * ); //CHINA001 DECL_LINK( RemoveHdl, void * ); //CHINA001 DECL_LINK( SelFmtHdl, void * ); //CHINA001 DECL_LINK( CloseHdl, PushButton * ); //CHINA001 DECL_LINK( DblClkHdl, void * ); //CHINA001 DECL_LINK( RenameHdl, void *); //CHINA001 //CHINA001 }; //CHINA001 //======================================================================== class SC_DLLPUBLIC ScAutoFmtPreview : public Window { public: ScAutoFmtPreview( Window* pParent, const ResId& rRes, ScDocument* pDoc ); ~ScAutoFmtPreview(); void NotifyChange( ScAutoFormatData* pNewData ); protected: virtual void Paint( const Rectangle& rRect ); private: ScAutoFormatData* pCurData; VirtualDevice aVD; SvtScriptedTextHelper aScriptedText; ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > xBreakIter; sal_Bool bFitWidth; svx::frame::Array maArray; /// Implementation to draw the frame borders. bool mbRTL; Size aPrvSize; long mnLabelColWidth; long mnDataColWidth1; long mnDataColWidth2; long mnRowHeight; const String aStrJan; const String aStrFeb; const String aStrMar; const String aStrNorth; const String aStrMid; const String aStrSouth; const String aStrSum; SvNumberFormatter* pNumFmt; //------------------------------------------- SC_DLLPRIVATE void Init (); SC_DLLPRIVATE void DoPaint ( const Rectangle& rRect ); SC_DLLPRIVATE void CalcCellArray ( sal_Bool bFitWidth ); SC_DLLPRIVATE void CalcLineMap (); SC_DLLPRIVATE void PaintCells (); /* Usage of type size_t instead of SCCOL/SCROW is correct here - used in conjunction with class svx::frame::Array (svx/framelinkarray.hxx), which expects size_t coordinates. */ SC_DLLPRIVATE sal_uInt16 GetFormatIndex( size_t nCol, size_t nRow ) const; SC_DLLPRIVATE const SvxBoxItem& GetBoxItem( size_t nCol, size_t nRow ) const; SC_DLLPRIVATE const SvxLineItem& GetDiagItem( size_t nCol, size_t nRow, bool bTLBR ) const; SC_DLLPRIVATE void DrawString( size_t nCol, size_t nRow ); SC_DLLPRIVATE void DrawStrings(); SC_DLLPRIVATE void DrawBackground(); SC_DLLPRIVATE void MakeFonts ( sal_uInt16 nIndex, Font& rFont, Font& rCJKFont, Font& rCTLFont ); SC_DLLPRIVATE String MakeNumberString( String cellString, sal_Bool bAddDec ); SC_DLLPRIVATE void DrawFrameLine ( const SvxBorderLine& rLineD, Point from, Point to, sal_Bool bHorizontal, const SvxBorderLine& rLineLT, const SvxBorderLine& rLineL, const SvxBorderLine& rLineLB, const SvxBorderLine& rLineRT, const SvxBorderLine& rLineR, const SvxBorderLine& rLineRB ); SC_DLLPRIVATE void CheckPriority ( sal_uInt16 nCurLine, AutoFmtLine eLine, SvxBorderLine& rLine ); SC_DLLPRIVATE void GetLines ( sal_uInt16 nIndex, AutoFmtLine eLine, SvxBorderLine& rLineD, SvxBorderLine& rLineLT, SvxBorderLine& rLineL, SvxBorderLine& rLineLB, SvxBorderLine& rLineRT, SvxBorderLine& rLineR, SvxBorderLine& rLineRB ); }; #endif // SC_AUTOFMT_HXX