xref: /aoo41x/main/sc/source/ui/inc/preview.hxx (revision 4d7c9de0)
138d50f7bSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
338d50f7bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
438d50f7bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
538d50f7bSAndrew Rist  * distributed with this work for additional information
638d50f7bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
738d50f7bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
838d50f7bSAndrew Rist  * "License"); you may not use this file except in compliance
938d50f7bSAndrew Rist  * with the License.  You may obtain a copy of the License at
1038d50f7bSAndrew Rist  *
1138d50f7bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
1238d50f7bSAndrew Rist  *
1338d50f7bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
1438d50f7bSAndrew Rist  * software distributed under the License is distributed on an
1538d50f7bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1638d50f7bSAndrew Rist  * KIND, either express or implied.  See the License for the
1738d50f7bSAndrew Rist  * specific language governing permissions and limitations
1838d50f7bSAndrew Rist  * under the License.
1938d50f7bSAndrew Rist  *
2038d50f7bSAndrew Rist  *************************************************************/
2138d50f7bSAndrew Rist 
2238d50f7bSAndrew Rist 
23cdf0e10cSrcweir #ifndef SC_PREVIEW_HXX
24cdf0e10cSrcweir #define SC_PREVIEW_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <vcl/window.hxx>
28cdf0e10cSrcweir #include "printfun.hxx"		// ScPrintState
29cdf0e10cSrcweir 
30cdf0e10cSrcweir class ScDocShell;
31cdf0e10cSrcweir class ScPreviewShell;
32cdf0e10cSrcweir class FmFormView;
33cdf0e10cSrcweir 
34cdf0e10cSrcweir class ScPreview : public Window
35cdf0e10cSrcweir {
36cdf0e10cSrcweir private:
37cdf0e10cSrcweir 										// eingestellt:
38cdf0e10cSrcweir 	long			nPageNo;			// Seite im Dokument
39cdf0e10cSrcweir 	sal_uInt16			nZoom;				// eingestellter Zoom
40cdf0e10cSrcweir 	Point			aOffset;			// positiv
41cdf0e10cSrcweir 
42cdf0e10cSrcweir 										// berechnet:
43cdf0e10cSrcweir 	sal_Bool			bValid;				// folgende Werte gueltig
44cdf0e10cSrcweir 	SCTAB			nTabCount;
45cdf0e10cSrcweir 	SCTAB			nTabsTested;		// fuer wieviele Tabellen ist nPages gueltig?
46cdf0e10cSrcweir 	long			nPages[MAXTABCOUNT];
47cdf0e10cSrcweir 	long			nFirstAttr[MAXTABCOUNT];
48cdf0e10cSrcweir 	SCTAB			nTab;				// Tabelle
49cdf0e10cSrcweir 	long			nTabPage;			// Seite von Tabelle
50cdf0e10cSrcweir 	long			nTabStart;			// erste Seite der Tabelle (wirklich)
51cdf0e10cSrcweir 	long			nDisplayStart;		// dito, relativ zum Anfang der Zaehlung
52cdf0e10cSrcweir 	Date			aDate;
53cdf0e10cSrcweir 	Time			aTime;
54cdf0e10cSrcweir 	long			nTotalPages;
55cdf0e10cSrcweir 	Size			aPageSize;			// fuer GetOptimalZoom
56cdf0e10cSrcweir 	sal_Bool			bStateValid;
57cdf0e10cSrcweir 	sal_Bool			bLocationValid;
58cdf0e10cSrcweir 	ScPrintState	aState;
59cdf0e10cSrcweir 	ScPreviewLocationData* pLocationData;	// stores table layout for accessibility API
60cdf0e10cSrcweir 	FmFormView*		pDrawView;
61cdf0e10cSrcweir 
62cdf0e10cSrcweir 										// intern:
63cdf0e10cSrcweir     bool            bInPaint;
64cdf0e10cSrcweir     bool            bInSetZoom;
65cdf0e10cSrcweir 	sal_Bool		bInGetState;
66cdf0e10cSrcweir 	ScDocShell*		pDocShell;
67cdf0e10cSrcweir 	ScPreviewShell*	pViewShell;
68cdf0e10cSrcweir 
69cdf0e10cSrcweir     sal_Bool            bLeftRulerMove;
70cdf0e10cSrcweir     sal_Bool            bRightRulerMove;
71cdf0e10cSrcweir     sal_Bool            bTopRulerMove;
72cdf0e10cSrcweir     sal_Bool            bBottomRulerMove;
73cdf0e10cSrcweir     sal_Bool            bHeaderRulerMove;
74cdf0e10cSrcweir     sal_Bool            bFooterRulerMove;
75cdf0e10cSrcweir 
76cdf0e10cSrcweir     sal_Bool            bLeftRulerChange;
77cdf0e10cSrcweir     sal_Bool            bRightRulerChange;
78cdf0e10cSrcweir     sal_Bool            bTopRulerChange;
79cdf0e10cSrcweir     sal_Bool            bBottomRulerChange;
80cdf0e10cSrcweir     sal_Bool            bHeaderRulerChange;
81cdf0e10cSrcweir     sal_Bool            bFooterRulerChange;
82cdf0e10cSrcweir     sal_Bool            bPageMargin;
83cdf0e10cSrcweir     sal_Bool            bColRulerMove;
84cdf0e10cSrcweir     ScRange         aPageArea;
85cdf0e10cSrcweir     long            nRight[ MAXCOL+1 ];
86cdf0e10cSrcweir     long            nLeftPosition;
87cdf0e10cSrcweir     long            mnScale;
88cdf0e10cSrcweir     SCCOL           nColNumberButttonDown;
89cdf0e10cSrcweir     Point           aButtonDownChangePoint;
90cdf0e10cSrcweir     Point           aButtonDownPt;
91cdf0e10cSrcweir     Point           aButtonUpPt;
92cdf0e10cSrcweir     long            nHeaderHeight;
93cdf0e10cSrcweir     long            nFooterHeight;
94cdf0e10cSrcweir 
95cdf0e10cSrcweir 	void	TestLastPage();
96cdf0e10cSrcweir 	void	CalcPages( SCTAB nToWhichTab );
97cdf0e10cSrcweir 	void	RecalcPages();
98cdf0e10cSrcweir 	void	UpdateDrawView();
99cdf0e10cSrcweir 	void	DoPrint( ScPreviewLocationData* pFillLocation );
100cdf0e10cSrcweir 
101cdf0e10cSrcweir 	void	InvalidateLocationData( sal_uLong nId );
102cdf0e10cSrcweir 
103cdf0e10cSrcweir     using Window::SetZoom;
104cdf0e10cSrcweir 
105cdf0e10cSrcweir protected:
106cdf0e10cSrcweir     virtual void   Paint( const Rectangle& rRect );
107cdf0e10cSrcweir     virtual void   Command( const CommandEvent& rCEvt );
108cdf0e10cSrcweir     virtual void   KeyInput( const KeyEvent& rKEvt );
109cdf0e10cSrcweir     virtual void   MouseMove( const MouseEvent& rMEvt );
110cdf0e10cSrcweir     virtual void   MouseButtonDown( const MouseEvent& rMEvt );
111cdf0e10cSrcweir     virtual void   MouseButtonUp( const MouseEvent& rMEvt );
112cdf0e10cSrcweir 
113cdf0e10cSrcweir     virtual void   GetFocus();
114cdf0e10cSrcweir     virtual void   LoseFocus();
115cdf0e10cSrcweir 
116cdf0e10cSrcweir 	virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
117cdf0e10cSrcweir 
118cdf0e10cSrcweir public:
119cdf0e10cSrcweir 			ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pViewSh );
120cdf0e10cSrcweir 			~ScPreview();
121cdf0e10cSrcweir 
122cdf0e10cSrcweir 	virtual void DataChanged( const DataChangedEvent& rDCEvt );
123cdf0e10cSrcweir 
124cdf0e10cSrcweir 	void	DataChanged(sal_Bool bNewTime = sal_False);				// statt Invalidate rufen
125cdf0e10cSrcweir 	void	DoInvalidate();
126cdf0e10cSrcweir 
127cdf0e10cSrcweir 	void	SetXOffset( long nX );
128cdf0e10cSrcweir 	void	SetYOffset( long nY );
129cdf0e10cSrcweir 	void	SetZoom(sal_uInt16 nNewZoom);
130cdf0e10cSrcweir 	void	SetPageNo( long nPage );
131cdf0e10cSrcweir 
GetPageMargins() const132cdf0e10cSrcweir     sal_Bool    GetPageMargins()const { return bPageMargin; }
SetPageMargins(sal_Bool bVal)133cdf0e10cSrcweir     void    SetPageMargins( sal_Bool bVal )  { bPageMargin = bVal; }
134cdf0e10cSrcweir     void    DrawInvert( long nDragPos, sal_uInt16 nFlags );
135cdf0e10cSrcweir     void    DragMove( long nDragMovePos, sal_uInt16 nFlags );
136cdf0e10cSrcweir 
137cdf0e10cSrcweir 
138cdf0e10cSrcweir 	const ScPreviewLocationData& GetLocationData();
139cdf0e10cSrcweir 
140cdf0e10cSrcweir 	String	GetPosString();
141cdf0e10cSrcweir 
GetPageNo() const142cdf0e10cSrcweir 	long	GetPageNo() const	{ return nPageNo; }
GetZoom() const143cdf0e10cSrcweir 	sal_uInt16	GetZoom() const		{ return nZoom; }
GetOffset() const144cdf0e10cSrcweir 	Point	GetOffset() const	{ return aOffset; }
145cdf0e10cSrcweir 
GetTab()146cdf0e10cSrcweir 	SCTAB	GetTab()			{ if (!bValid) { CalcPages(0); RecalcPages(); } return nTab; }
GetTotalPages()147cdf0e10cSrcweir 	long	GetTotalPages()		{ if (!bValid) { CalcPages(0); RecalcPages(); } return nTotalPages; }
148cdf0e10cSrcweir 
AllTested() const149cdf0e10cSrcweir 	sal_Bool	AllTested() const	{ return bValid && nTabsTested >= nTabCount; }
150cdf0e10cSrcweir 
151cdf0e10cSrcweir 	sal_uInt16	GetOptimalZoom(sal_Bool bWidthOnly);
152cdf0e10cSrcweir 	long	GetFirstPage(SCTAB nTab);
153cdf0e10cSrcweir 
CalcAll()154cdf0e10cSrcweir 	void	CalcAll()			{ CalcPages(MAXTAB); }
SetInGetState(sal_Bool bSet)155cdf0e10cSrcweir 	void	SetInGetState(sal_Bool bSet) { bInGetState = bSet; }
156cdf0e10cSrcweir 
157cdf0e10cSrcweir 	DECL_STATIC_LINK( ScPreview, InvalidateHdl, void* );
158cdf0e10cSrcweir 	static void StaticInvalidate();
159cdf0e10cSrcweir 
GetDrawView()160cdf0e10cSrcweir     FmFormView* GetDrawView() { return pDrawView; }
161*0deba7fbSSteve Yin 	virtual void SwitchView();
162cdf0e10cSrcweir };
163cdf0e10cSrcweir 
164cdf0e10cSrcweir 
165cdf0e10cSrcweir 
166cdf0e10cSrcweir #endif
167