Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

qlabdatabase.h

00001 #ifndef QLABDATABASE_H
00002 #define QLABDATABASE_H
00003 
00004 #include <qobject.h>
00005 #include <qvariant.h>
00006 
00007 // forward declarations
00008 class QStringList ;
00009 class QSqlRecord ;
00010 class QlabDatabase ;
00011 class QlabDatabase_priv ;
00012 class QlabDatabaseTableSchema_priv ;
00013 
00014 
00015 // convenient typedef
00016 typedef QMap< QString, QlabDatabase * > Associations ;
00017 
00018 class Q_EXPORT QlabDatabase : public QObject
00019 {
00020         Q_OBJECT ;
00021 
00022         Q_ENUMS( AssociationModes ) ;
00023         Q_ENUMS( OperationModes ) ;
00024         Q_ENUMS( ErrorCodes ) ;
00025 
00026 public :
00027         enum AssociationModes { AssocNone = 0,
00028                                                     AssocMustProvide = 1,
00029                                                         AssocCanProvide = 2,
00030                                                         AssocUnique = 4,
00031                                                         AssocIsList = 8
00032                                                   } ;
00033         enum OperationModes { ReadData,
00034                                                   ModifyData,
00035                                                   CreateNewData,
00036                                                   DeleteData
00037                                                 } ;
00038         enum ErrorCodes { DriverNotInstalled,
00039                                           DuplicateConnectionName,
00040                                           InvalidConnection,
00041                                           InvalidConnectionTableAccess
00042                                         } ;
00043 
00044         QlabDatabase( const QString & driver, const QString & connectionName = QString::null,
00045                                   bool autoconnect = TRUE, QObject *parent, char * name ) ;
00046         QlabDatabase( const QString & tableName, bool autoPopulate,
00047                                   const QString & connectionName = QString::null ) ;
00048         ~QlabDatabase() ;
00049 
00050         static QStringList availableDrivers() const ;
00051         static bool importSchema( const QString & schemaPath ) ;
00052         static bool importExtendedSchema( const QString & schemaPath ) ;
00053         static bool createConnections( const QString & schemaPath = QString::null,
00054                                                                    bool autoconnect = TRUE  ) ;
00055         static bool addConnection( const QString & driver, const QString & connectionName = QString::null,
00056                                                            bool autoconnect = TRUE ) ;
00057         static QStringList connections() const ;
00058 
00059         bool openConnection( const QString & connectionName ) ;
00060         void setConnectionParameters( const QString & connectionName,
00061                                                                   const QString & databaseName, const QString & user,
00062                                                                   const QString & passwd, const QString & host = "localhost",
00063                                                                   int port = -1 ) ;
00064         void setConnectionOptions( const QString & connectionName, const QString & options ) ;
00065 
00066 public slots :
00067         // Global properties
00068 
00069 
00070         // Table Properties
00071         bool addAssociation( const QString & assocName, AssociationModes mode = AssocMustProvide ) ;
00072         QlabDatabase * getAssociate( const QString & assocName ) ;
00073         QSqlRecord * getEntry( uint uoid ) ;
00074         QSqlRecord * createEntry() ;
00075         QSqlRecord * cloneEntry( int uoid = 0 ) ;
00076         QSqlRecord * modifyEntry( int uoid = 0 ) ;
00077         bool deleteEntry( int uoid = 0 ) ;
00078         bool saveChangedData() ;
00079         bool operationAllowed( OperationModes md, const QString & fld = QString::null ) ;
00080         void setFilter( const QString & flt ) ;
00081         QString filter() const ;
00082         void setSortOrder( const QStringList & order ) ;
00083         QStringList sortOrder() const ;
00084 
00085 signals :
00086         error( uint errno, const QString & errDescription ) ;
00087 
00088 protected :
00089 
00090 protected slots :
00091         bool makeDirectSqlQuery( const QString & query ) ;
00092 
00093 private :
00094         const QString connection ;
00095         bool validConnection ;
00096         const QString table ;
00097         Associations associates ;
00098 
00099         QlabDatabase_priv * tableView ;
00100         QSqlRecord * activeRecord ;
00101         QlabDatabaseTableSchema_priv * tableSchema ;
00102 
00103 } ;
00104 
00105 #endif // QLABDATABASE_H

 

L.A.B. Project © 2001-2004 LAB Project & DJ Anubis