1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef SC_AUTOFMT_HXX 29 #define SC_AUTOFMT_HXX 30 31 #ifndef _VIRDEV_HXX //autogen 32 #include <vcl/virdev.hxx> 33 #endif 34 #ifndef SV_FIXED_HXX 35 #include <vcl/fixed.hxx> 36 #endif 37 #ifndef SV_LSTBOX_HXX 38 #include <vcl/lstbox.hxx> 39 #endif 40 #ifndef SV_BUTTON_HXX 41 #include <vcl/button.hxx> 42 #endif 43 #ifndef SV_MOREBTN_HXX 44 #include <vcl/morebtn.hxx> 45 #endif 46 #ifndef _DIALOG_HXX //autogen 47 #include <vcl/dialog.hxx> 48 #endif 49 #include <svtools/scriptedtext.hxx> 50 #include <svx/framelinkarray.hxx> 51 #include "scdllapi.h" 52 53 //------------------------------------------------------------------------ 54 55 class ScAutoFormat; 56 class ScAutoFormatData; 57 class SvxBoxItem; 58 class SvxLineItem; 59 class ScAutoFmtPreview; // s.u. 60 class SvNumberFormatter; 61 class ScDocument; 62 63 //------------------------------------------------------------------------ 64 65 enum AutoFmtLine { TOP_LINE, BOTTOM_LINE, LEFT_LINE, RIGHT_LINE }; 66 67 //======================================================================== 68 69 //CHINA001 class ScAutoFormatDlg : public ModalDialog 70 //CHINA001 { 71 //CHINA001 public: 72 //CHINA001 ScAutoFormatDlg( Window* pParent, 73 //CHINA001 ScAutoFormat* pAutoFormat, 74 //CHINA001 const ScAutoFormatData* pSelFormatData, 75 //CHINA001 ScDocument* pDoc ); 76 //CHINA001 ~ScAutoFormatDlg(); 77 //CHINA001 78 //CHINA001 sal_uInt16 GetIndex() const { return nIndex; } 79 //CHINA001 String GetCurrFormatName(); 80 //CHINA001 81 //CHINA001 private: 82 //CHINA001 FixedLine aFlFormat; 83 //CHINA001 ListBox aLbFormat; 84 //CHINA001 ScAutoFmtPreview* pWndPreview; 85 //CHINA001 OKButton aBtnOk; 86 //CHINA001 CancelButton aBtnCancel; 87 //CHINA001 HelpButton aBtnHelp; 88 //CHINA001 PushButton aBtnAdd; 89 //CHINA001 PushButton aBtnRemove; 90 //CHINA001 MoreButton aBtnMore; 91 //CHINA001 FixedLine aFlFormatting; 92 //CHINA001 CheckBox aBtnNumFormat; 93 //CHINA001 CheckBox aBtnBorder; 94 //CHINA001 CheckBox aBtnFont; 95 //CHINA001 CheckBox aBtnPattern; 96 //CHINA001 CheckBox aBtnAlignment; 97 //CHINA001 CheckBox aBtnAdjust; 98 //CHINA001 PushButton aBtnRename; 99 //CHINA001 String aStrTitle; 100 //CHINA001 String aStrLabel; 101 //CHINA001 String aStrClose; 102 //CHINA001 String aStrDelTitle; 103 //CHINA001 String aStrDelMsg; 104 //CHINA001 String aStrRename; 105 //CHINA001 106 //CHINA001 //------------------------ 107 //CHINA001 ScAutoFormat* pFormat; 108 //CHINA001 const ScAutoFormatData* pSelFmtData; 109 //CHINA001 sal_uInt16 nIndex; 110 //CHINA001 sal_Bool bCoreDataChanged; 111 //CHINA001 sal_Bool bFmtInserted; 112 //CHINA001 113 //CHINA001 void Init (); 114 //CHINA001 void UpdateChecks (); 115 //CHINA001 //------------------------ 116 //CHINA001 DECL_LINK( CheckHdl, Button * ); 117 //CHINA001 DECL_LINK( AddHdl, void * ); 118 //CHINA001 DECL_LINK( RemoveHdl, void * ); 119 //CHINA001 DECL_LINK( SelFmtHdl, void * ); 120 //CHINA001 DECL_LINK( CloseHdl, PushButton * ); 121 //CHINA001 DECL_LINK( DblClkHdl, void * ); 122 //CHINA001 DECL_LINK( RenameHdl, void *); 123 //CHINA001 124 //CHINA001 }; 125 //CHINA001 126 //======================================================================== 127 128 class SC_DLLPUBLIC ScAutoFmtPreview : public Window 129 { 130 public: 131 ScAutoFmtPreview( Window* pParent, const ResId& rRes, ScDocument* pDoc ); 132 ~ScAutoFmtPreview(); 133 134 void NotifyChange( ScAutoFormatData* pNewData ); 135 136 protected: 137 virtual void Paint( const Rectangle& rRect ); 138 139 private: 140 ScAutoFormatData* pCurData; 141 VirtualDevice aVD; 142 SvtScriptedTextHelper aScriptedText; 143 ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > xBreakIter; 144 sal_Bool bFitWidth; 145 svx::frame::Array maArray; /// Implementation to draw the frame borders. 146 bool mbRTL; 147 Size aPrvSize; 148 long mnLabelColWidth; 149 long mnDataColWidth1; 150 long mnDataColWidth2; 151 long mnRowHeight; 152 const String aStrJan; 153 const String aStrFeb; 154 const String aStrMar; 155 const String aStrNorth; 156 const String aStrMid; 157 const String aStrSouth; 158 const String aStrSum; 159 SvNumberFormatter* pNumFmt; 160 //------------------------------------------- 161 SC_DLLPRIVATE void Init (); 162 SC_DLLPRIVATE void DoPaint ( const Rectangle& rRect ); 163 SC_DLLPRIVATE void CalcCellArray ( sal_Bool bFitWidth ); 164 SC_DLLPRIVATE void CalcLineMap (); 165 SC_DLLPRIVATE void PaintCells (); 166 167 /* Usage of type size_t instead of SCCOL/SCROW is correct here - used in 168 conjunction with class svx::frame::Array (svx/framelinkarray.hxx), which 169 expects size_t coordinates. */ 170 171 SC_DLLPRIVATE sal_uInt16 GetFormatIndex( size_t nCol, size_t nRow ) const; 172 SC_DLLPRIVATE const SvxBoxItem& GetBoxItem( size_t nCol, size_t nRow ) const; 173 SC_DLLPRIVATE const SvxLineItem& GetDiagItem( size_t nCol, size_t nRow, bool bTLBR ) const; 174 175 SC_DLLPRIVATE void DrawString( size_t nCol, size_t nRow ); 176 SC_DLLPRIVATE void DrawStrings(); 177 SC_DLLPRIVATE void DrawBackground(); 178 179 SC_DLLPRIVATE void MakeFonts ( sal_uInt16 nIndex, 180 Font& rFont, 181 Font& rCJKFont, 182 Font& rCTLFont ); 183 184 SC_DLLPRIVATE String MakeNumberString( String cellString, sal_Bool bAddDec ); 185 SC_DLLPRIVATE void DrawFrameLine ( const SvxBorderLine& rLineD, 186 Point from, 187 Point to, 188 sal_Bool bHorizontal, 189 const SvxBorderLine& rLineLT, 190 const SvxBorderLine& rLineL, 191 const SvxBorderLine& rLineLB, 192 const SvxBorderLine& rLineRT, 193 const SvxBorderLine& rLineR, 194 const SvxBorderLine& rLineRB ); 195 SC_DLLPRIVATE void CheckPriority ( sal_uInt16 nCurLine, 196 AutoFmtLine eLine, 197 SvxBorderLine& rLine ); 198 SC_DLLPRIVATE void GetLines ( sal_uInt16 nIndex, AutoFmtLine eLine, 199 SvxBorderLine& rLineD, 200 SvxBorderLine& rLineLT, 201 SvxBorderLine& rLineL, 202 SvxBorderLine& rLineLB, 203 SvxBorderLine& rLineRT, 204 SvxBorderLine& rLineR, 205 SvxBorderLine& rLineRB ); 206 }; 207 208 #endif // SC_AUTOFMT_HXX 209 210 211