source: trunk/include/qdatatable.h

Last change on this file was 196, checked in by rudi, 14 years ago

Add SQL module (currently it isn't build by default, however it's needed for QtDesigner)

File size: 9.1 KB
Line 
1/****************************************************************************
2**
3** Definition of QDataTable class
4**
5** Created : 2000-11-03
6**
7** Copyright (C) 2005-2007 Trolltech ASA. All rights reserved.
8**
9** This file is part of the sql module of the Qt GUI Toolkit.
10**
11** This file may be distributed under the terms of the Q Public License
12** as defined by Trolltech ASA of Norway and appearing in the file
13** LICENSE.QPL included in the packaging of this file.
14**
15** This file may be distributed and/or modified under the terms of the
16** GNU General Public License version 2 as published by the Free Software
17** Foundation and appearing in the file LICENSE.GPL included in the
18** packaging of this file.
19**
20** Licensees holding valid Qt Enterprise Edition licenses may use this
21** file in accordance with the Qt Commercial License Agreement provided
22** with the Software.
23**
24** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
25** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
26**
27** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
28** information about Qt Commercial License Agreements.
29** See http://www.trolltech.com/qpl/ for QPL licensing information.
30** See http://www.trolltech.com/gpl/ for GPL licensing information.
31**
32** Contact info@trolltech.com if any conditions of this licensing are
33** not clear to you.
34**
35**********************************************************************/
36
37#ifndef QDATATABLE_H
38#define QDATATABLE_H
39
40#ifndef QT_H
41#include "qstring.h"
42#include "qvariant.h"
43#include "qtable.h"
44#include "qsql.h"
45#include "qsqlcursor.h"
46#include "qsqlindex.h"
47#include "qsqleditorfactory.h"
48#include "qiconset.h"
49#endif // QT_H
50
51#if !defined( QT_MODULE_SQL ) || defined( QT_LICENSE_PROFESSIONAL )
52#define QM_EXPORT_SQL
53#else
54#define QM_EXPORT_SQL Q_EXPORT
55#endif
56
57#ifndef QT_NO_SQL_VIEW_WIDGETS
58
59class QPainter;
60class QSqlField;
61class QSqlPropertyMap;
62class QDataTablePrivate;
63
64class QM_EXPORT_SQL QDataTable : public QTable
65{
66 Q_OBJECT
67
68 Q_PROPERTY( QString nullText READ nullText WRITE setNullText )
69 Q_PROPERTY( QString trueText READ trueText WRITE setTrueText )
70 Q_PROPERTY( QString falseText READ falseText WRITE setFalseText )
71 Q_PROPERTY( DateFormat dateFormat READ dateFormat WRITE setDateFormat )
72 Q_PROPERTY( bool confirmEdits READ confirmEdits WRITE setConfirmEdits )
73 Q_PROPERTY( bool confirmInsert READ confirmInsert WRITE setConfirmInsert )
74 Q_PROPERTY( bool confirmUpdate READ confirmUpdate WRITE setConfirmUpdate )
75 Q_PROPERTY( bool confirmDelete READ confirmDelete WRITE setConfirmDelete )
76 Q_PROPERTY( bool confirmCancels READ confirmCancels WRITE setConfirmCancels )
77 Q_PROPERTY( bool autoEdit READ autoEdit WRITE setAutoEdit )
78 Q_PROPERTY( QString filter READ filter WRITE setFilter )
79 Q_PROPERTY( QStringList sort READ sort WRITE setSort )
80 Q_PROPERTY( int numCols READ numCols )
81 Q_PROPERTY( int numRows READ numRows )
82
83public:
84 QDataTable ( QWidget* parent=0, const char* name=0 );
85 QDataTable ( QSqlCursor* cursor, bool autoPopulate = FALSE, QWidget* parent=0, const char* name=0 );
86 ~QDataTable();
87
88 virtual void addColumn( const QString& fieldName,
89 const QString& label = QString::null,
90 int width = -1,
91 const QIconSet& iconset = QIconSet() );
92 virtual void removeColumn( uint col );
93 virtual void setColumn( uint col, const QString& fieldName,
94 const QString& label = QString::null,
95 int width = -1,
96 const QIconSet& iconset = QIconSet() );
97
98 QString nullText() const;
99 QString trueText() const;
100 QString falseText() const;
101 DateFormat dateFormat() const;
102 bool confirmEdits() const;
103 bool confirmInsert() const;
104 bool confirmUpdate() const;
105 bool confirmDelete() const;
106 bool confirmCancels() const;
107 bool autoDelete() const;
108 bool autoEdit() const;
109 QString filter() const;
110 QStringList sort() const;
111
112 virtual void setSqlCursor( QSqlCursor* cursor = 0,
113 bool autoPopulate = FALSE, bool autoDelete = FALSE );
114 QSqlCursor* sqlCursor() const;
115
116 virtual void setNullText( const QString& nullText );
117 virtual void setTrueText( const QString& trueText );
118 virtual void setFalseText( const QString& falseText );
119 virtual void setDateFormat( const DateFormat f );
120 virtual void setConfirmEdits( bool confirm );
121 virtual void setConfirmInsert( bool confirm );
122 virtual void setConfirmUpdate( bool confirm );
123 virtual void setConfirmDelete( bool confirm );
124 virtual void setConfirmCancels( bool confirm );
125 virtual void setAutoDelete( bool enable );
126 virtual void setAutoEdit( bool autoEdit );
127 virtual void setFilter( const QString& filter );
128 virtual void setSort( const QStringList& sort );
129 virtual void setSort( const QSqlIndex& sort );
130
131 enum Refresh {
132 RefreshData = 1,
133 RefreshColumns = 2,
134 RefreshAll = 3
135 };
136 void refresh( Refresh mode );
137 void sortColumn ( int col, bool ascending = TRUE,
138 bool wholeRows = FALSE );
139 QString text ( int row, int col ) const;
140 QVariant value ( int row, int col ) const;
141 QSqlRecord* currentRecord() const;
142
143 void installEditorFactory( QSqlEditorFactory * f );
144 void installPropertyMap( QSqlPropertyMap* m );
145
146 int numCols() const;
147 int numRows() const;
148 void setNumCols( int c );
149 void setNumRows ( int r );
150 bool findBuffer( const QSqlIndex& idx, int atHint = 0 );
151
152 void hideColumn( int col );
153 void showColumn( int col );
154signals:
155 void currentChanged( QSqlRecord* record );
156 void primeInsert( QSqlRecord* buf );
157 void primeUpdate( QSqlRecord* buf );
158 void primeDelete( QSqlRecord* buf );
159 void beforeInsert( QSqlRecord* buf );
160 void beforeUpdate( QSqlRecord* buf );
161 void beforeDelete( QSqlRecord* buf );
162 void cursorChanged( QSql::Op mode );
163
164public slots:
165 virtual void find( const QString & str, bool caseSensitive,
166 bool backwards );
167 virtual void sortAscending( int col );
168 virtual void sortDescending( int col );
169 virtual void refresh();
170 void setColumnWidth( int col, int w );
171 void adjustColumn( int col );
172 void setColumnStretchable( int col, bool stretch );
173 void swapColumns( int col1, int col2, bool swapHeaders = FALSE );
174
175protected:
176 virtual bool insertCurrent();
177 virtual bool updateCurrent();
178 virtual bool deleteCurrent();
179
180 virtual QSql::Confirm confirmEdit( QSql::Op m );
181 virtual QSql::Confirm confirmCancel( QSql::Op m );
182
183 virtual void handleError( const QSqlError& e );
184
185 virtual bool beginInsert();
186 virtual QWidget* beginUpdate ( int row, int col, bool replace );
187
188 bool eventFilter( QObject *o, QEvent *e );
189 void keyPressEvent( QKeyEvent* );
190 void resizeEvent ( QResizeEvent * );
191 void contentsMousePressEvent( QMouseEvent* e );
192 void contentsContextMenuEvent( QContextMenuEvent* e );
193 void endEdit( int row, int col, bool accept, bool replace );
194 QWidget * createEditor( int row, int col, bool initFromCell ) const;
195 void activateNextCell();
196 int indexOf( uint i ) const; // ### make this public in 4.0
197 void reset();
198 void setSize( QSqlCursor* sql );
199 void repaintCell( int row, int col );
200 void paintCell ( QPainter * p, int row, int col, const QRect & cr,
201 bool selected, const QColorGroup &cg );
202 virtual void paintField( QPainter * p, const QSqlField* field, const QRect & cr,
203 bool selected );
204 void drawContents( QPainter * p, int cx, int cy, int cw, int ch );
205 virtual int fieldAlignment( const QSqlField* field );
206 void columnClicked ( int col );
207 void resizeData ( int len );
208
209 QTableItem * item ( int row, int col ) const;
210 void setItem ( int row, int col, QTableItem * item );
211 void clearCell ( int row, int col ) ;
212 void setPixmap ( int row, int col, const QPixmap & pix );
213 void takeItem ( QTableItem * i );
214
215private slots:
216 void loadNextPage();
217 void setCurrentSelection( int row, int col );
218 void updateCurrentSelection();
219 void sliderPressed();
220 void sliderReleased();
221 void doInsertCurrent();
222 void doUpdateCurrent();
223
224private:
225 QString fieldToString( const QSqlField * field );
226 void init();
227 QWidget* beginEdit ( int row, int col, bool replace );
228 void updateRow( int row );
229 void endInsert();
230 void endUpdate();
231 QDataTablePrivate* d;
232
233#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator=
234 QDataTable( const QDataTable & );
235 QDataTable &operator=( const QDataTable & );
236#endif
237};
238
239#endif
240#endif
Note: See TracBrowser for help on using the repository browser.