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 24class QScrollBar; 25class QCornerSquare; 26 27 28class QtTableView : public QFrame 29{ 30 Q_OBJECT 31public: 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 40protected: 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 93private slots: 94 void horSbValue( int ); 95 void horSbSliding( int ); 96 void horSbSlidingDone(); 97 void verSbValue( int ); 98 void verSbSliding( int ); 99 void verSbSlidingDone(); 100 101protected: 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 130private: 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 171private: // 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 179const uint Tbl_vScrollBar = 0x00000001; 180const uint Tbl_hScrollBar = 0x00000002; 181const uint Tbl_autoVScrollBar = 0x00000004; 182const uint Tbl_autoHScrollBar = 0x00000008; 183const uint Tbl_autoScrollBars = 0x0000000C; 184 185const uint Tbl_clipCellPainting = 0x00000100; 186const uint Tbl_cutCellsV = 0x00000200; 187const uint Tbl_cutCellsH = 0x00000400; 188const uint Tbl_cutCells = 0x00000600; 189 190const uint Tbl_scrollLastHCell = 0x00000800; 191const uint Tbl_scrollLastVCell = 0x00001000; 192const uint Tbl_scrollLastCell = 0x00001800; 193 194const uint Tbl_smoothHScrolling = 0x00002000; 195const uint Tbl_smoothVScrolling = 0x00004000; 196const uint Tbl_smoothScrolling = 0x00006000; 197 198const uint Tbl_snapToHGrid = 0x00008000; 199const uint Tbl_snapToVGrid = 0x00010000; 200const uint Tbl_snapToGrid = 0x00018000; 201 202 203inline int QtTableView::numRows() const 204{ return nRows; } 205 206inline int QtTableView::numCols() const 207{ return nCols; } 208 209inline int QtTableView::topCell() const 210{ return yCellOffs; } 211 212inline int QtTableView::leftCell() const 213{ return xCellOffs; } 214 215inline int QtTableView::xOffset() const 216{ return xOffs; } 217 218inline int QtTableView::yOffset() const 219{ return yOffs; } 220 221inline int QtTableView::cellHeight() const 222{ return cellH; } 223 224inline int QtTableView::cellWidth() const 225{ return cellW; } 226 227inline uint QtTableView::tableFlags() const 228{ return tFlags; } 229 230inline bool QtTableView::testTableFlags( uint f ) const 231{ return (tFlags & f) != 0; } 232 233inline QRect QtTableView::cellUpdateRect() const 234{ return cellUpdateR; } 235 236inline bool QtTableView::autoUpdate() const 237{ return isUpdatesEnabled(); } 238 239inline void QtTableView::repaint( bool erase ) 240{ repaint( 0, 0, width(), height(), erase ); } 241 242inline void QtTableView::repaint( const QRect &r, bool erase ) 243{ repaint( r.x(), r.y(), r.width(), r.height(), erase ); } 244 245inline void QtTableView::updateScrollBars() 246{ updateScrollBars( 0 ); } 247 248 249#endif // QT_NO_QTTABLEVIEW 250 251#endif // QTTABLEVIEW_H 252