1 /**********************************************************************
2 ** $Id: qttableview.h,v 1.2 2002/03/09 03:13:13 jwalz Exp $
3 **
4 ** Definition of QtTableView class
5 **
6 ** Created : 941115
7 **
8 ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
9 **
10 ** This file contains a class moved out of the Qt GUI Toolkit API. It
11 ** may be used, distributed and modified without limitation.
12 **
13 **********************************************************************/
14 
15 #ifndef QTTABLEVIEW_H
16 #define QTTABLEVIEW_H
17 
18 #ifndef QT_H
19 #include <qframe.h>
20 #endif // QT_H
21 
22 #ifndef QT_NO_QTTABLEVIEW
23 
24 class QScrollBar;
25 class QCornerSquare;
26 
27 
28 class QtTableView : public QFrame
29 {
30     Q_OBJECT
31 public:
32     virtual void setBackgroundColor( const QColor & );
33     virtual void setPalette( const QPalette & );
34     void	show();
35 
36     void	repaint( bool erase=TRUE );
37     void	repaint( int x, int y, int w, int h, bool erase=TRUE );
38     void	repaint( const QRect &, bool erase=TRUE );
39 
40 protected:
41     QtTableView( QWidget *parent=0, const char *name=0, WFlags f=0 );
42    ~QtTableView();
43 
44     int		numRows()	const;
45     virtual void setNumRows( int );
46     int		numCols()	const;
47     virtual void setNumCols( int );
48 
49     int		topCell()	const;
50     virtual void setTopCell( int row );
51     int		leftCell()	const;
52     virtual void setLeftCell( int col );
53     virtual void setTopLeftCell( int row, int col );
54 
55     int		xOffset()	const;
56     virtual void setXOffset( int );
57     int		yOffset()	const;
58     virtual void setYOffset( int );
59     virtual void setOffset( int x, int y, bool updateScrBars = TRUE );
60 
61     virtual int cellWidth( int col );
62     virtual int cellHeight( int row );
63     int		cellWidth()	const;
64     int		cellHeight()	const;
65     virtual void setCellWidth( int );
66     virtual void setCellHeight( int );
67 
68     virtual int totalWidth();
69     virtual int totalHeight();
70 
71     uint	tableFlags()	const;
72     bool	testTableFlags( uint f ) const;
73     virtual void setTableFlags( uint f );
74     void	clearTableFlags( uint f = ~0 );
75 
76     bool	autoUpdate()	 const;
77     virtual void setAutoUpdate( bool );
78 
79     void	updateCell( int row, int column, bool erase=TRUE );
80 
81     QRect	cellUpdateRect() const;
82     QRect	viewRect()	 const;
83 
84     int		lastRowVisible() const;
85     int		lastColVisible() const;
86 
87     bool	rowIsVisible( int row ) const;
88     bool	colIsVisible( int col ) const;
89 
90     QScrollBar *verticalScrollBar() const;
91     QScrollBar *horizontalScrollBar() const;
92 
93 private slots:
94     void	horSbValue( int );
95     void	horSbSliding( int );
96     void	horSbSlidingDone();
97     void	verSbValue( int );
98     void	verSbSliding( int );
99     void	verSbSlidingDone();
100 
101 protected:
102     virtual void paintCell( QPainter *, int row, int col ) = 0;
103     virtual void setupPainter( QPainter * );
104 
105     void	paintEvent( QPaintEvent * );
106     void	resizeEvent( QResizeEvent * );
107 
108     int		findRow( int yPos ) const;
109     int		findCol( int xPos ) const;
110 
111     bool	rowYPos( int row, int *yPos ) const;
112     bool	colXPos( int col, int *xPos ) const;
113 
114     int		maxXOffset();
115     int		maxYOffset();
116     int		maxColOffset();
117     int		maxRowOffset();
118 
119     int		minViewX()	const;
120     int		minViewY()	const;
121     int		maxViewX()	const;
122     int		maxViewY()	const;
123     int		viewWidth()	const;
124     int		viewHeight()	const;
125 
126     void	scroll( int xPixels, int yPixels );
127     void	updateScrollBars();
128     void	updateTableSize();
129 
130 private:
131     void	coverCornerSquare( bool );
132     void	snapToGrid( bool horizontal, bool vertical );
133     virtual void	setHorScrollBar( bool on, bool update = TRUE );
134     virtual void	setVerScrollBar( bool on, bool update = TRUE );
135     void	updateView();
136     int		findRawRow( int yPos, int *cellMaxY, int *cellMinY = 0,
137 			    bool goOutsideView = FALSE ) const;
138     int		findRawCol( int xPos, int *cellMaxX, int *cellMinX = 0,
139 			    bool goOutsideView = FALSE ) const;
140     int		maxColsVisible() const;
141 
142     void	updateScrollBars( uint );
143     void	updateFrameSize();
144 
145     void	doAutoScrollBars();
146     void	showOrHideScrollBars();
147 
148     int		nRows;
149     int		nCols;
150     int		xOffs, yOffs;
151     int		xCellOffs, yCellOffs;
152     short	xCellDelta, yCellDelta;
153     short	cellH, cellW;
154 
155     uint	eraseInPaint		: 1;
156     uint	verSliding		: 1;
157     uint	verSnappingOff		: 1;
158     uint	horSliding		: 1;
159     uint	horSnappingOff		: 1;
160     uint	coveringCornerSquare	: 1;
161     uint	sbDirty			: 8;
162     uint	inSbUpdate		: 1;
163 
164     uint	tFlags;
165     QRect	cellUpdateR;
166 
167     QScrollBar *vScrollBar;
168     QScrollBar *hScrollBar;
169     QCornerSquare *cornerSquare;
170 
171 private:	// Disabled copy constructor and operator=
172 #if defined(Q_DISABLE_COPY)
173     QtTableView( const QtTableView & );
174     QtTableView &operator=( const QtTableView & );
175 #endif
176 };
177 
178 
179 const uint Tbl_vScrollBar	= 0x00000001;
180 const uint Tbl_hScrollBar	= 0x00000002;
181 const uint Tbl_autoVScrollBar	= 0x00000004;
182 const uint Tbl_autoHScrollBar	= 0x00000008;
183 const uint Tbl_autoScrollBars	= 0x0000000C;
184 
185 const uint Tbl_clipCellPainting = 0x00000100;
186 const uint Tbl_cutCellsV	= 0x00000200;
187 const uint Tbl_cutCellsH	= 0x00000400;
188 const uint Tbl_cutCells		= 0x00000600;
189 
190 const uint Tbl_scrollLastHCell	= 0x00000800;
191 const uint Tbl_scrollLastVCell	= 0x00001000;
192 const uint Tbl_scrollLastCell	= 0x00001800;
193 
194 const uint Tbl_smoothHScrolling = 0x00002000;
195 const uint Tbl_smoothVScrolling = 0x00004000;
196 const uint Tbl_smoothScrolling	= 0x00006000;
197 
198 const uint Tbl_snapToHGrid	= 0x00008000;
199 const uint Tbl_snapToVGrid	= 0x00010000;
200 const uint Tbl_snapToGrid	= 0x00018000;
201 
202 
numRows()203 inline int QtTableView::numRows() const
204 { return nRows; }
205 
numCols()206 inline int QtTableView::numCols() const
207 { return nCols; }
208 
topCell()209 inline int QtTableView::topCell() const
210 { return yCellOffs; }
211 
leftCell()212 inline int QtTableView::leftCell() const
213 { return xCellOffs; }
214 
xOffset()215 inline int QtTableView::xOffset() const
216 { return xOffs; }
217 
yOffset()218 inline int QtTableView::yOffset() const
219 { return yOffs; }
220 
cellHeight()221 inline int QtTableView::cellHeight() const
222 { return cellH; }
223 
cellWidth()224 inline int QtTableView::cellWidth() const
225 { return cellW; }
226 
tableFlags()227 inline uint QtTableView::tableFlags() const
228 { return tFlags; }
229 
testTableFlags(uint f)230 inline bool QtTableView::testTableFlags( uint f ) const
231 { return (tFlags & f) != 0; }
232 
cellUpdateRect()233 inline QRect QtTableView::cellUpdateRect() const
234 { return cellUpdateR; }
235 
autoUpdate()236 inline bool QtTableView::autoUpdate() const
237 { return isUpdatesEnabled(); }
238 
repaint(bool erase)239 inline void QtTableView::repaint( bool erase )
240 { repaint( 0, 0, width(), height(), erase ); }
241 
repaint(const QRect & r,bool erase)242 inline void QtTableView::repaint( const QRect &r, bool erase )
243 { repaint( r.x(), r.y(), r.width(), r.height(), erase ); }
244 
updateScrollBars()245 inline void QtTableView::updateScrollBars()
246 { updateScrollBars( 0 ); }
247 
248 
249 #endif // QT_NO_QTTABLEVIEW
250 
251 #endif // QTTABLEVIEW_H
252