• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

Database.h

Go to the documentation of this file.
00001 #ifndef DATABASE_H
00002 #define DATABASE_H
00003 
00004 #include <QSqlDatabase>
00005 class QueryThreadCommand;
00006 class QueryThreadConnSpecs;
00007 
00008 QSqlDatabase createConnection(const QueryThreadConnSpecs &specs, const char *connName);
00009 void connectToDatabase(QSqlDatabase db);
00010 
00011 #include <QObject>
00012 #include "querythread.h"
00013 #include "progresswidget.h"
00014 
00021 class Database : public QObject
00022 {
00023     Q_OBJECT
00024 public:
00025     static Database *instance();
00026     static QSqlDatabase staticCon();
00027     static QSqlQuery execStatic(const QString &query = QString());
00028     static QSqlRecord execStaticR(const QString &query);
00029     void execThreaded(const QString &query, const QObject *sender);
00030     void execThreaded(const QueryThreadCommand &cmd);
00031     static ProgressToolBar *progressToolBar();
00032     static bool execPending(const QObject *sender);
00033     static QSqlIndex lastInserted(const QString &tableName);
00034 
00035     static void listenForTableChange(const QString &tableName);
00036     static void notifyTableChange(const QString &tableName);
00037 
00038 private:
00039     void threadSetup(const QString &driver, const QString &dbName, const QString &host,
00040                      const QString &user, const QString &passwd, int port);
00041     void cancelQuery(const QObject *sender);
00042 
00043 public slots:
00044     void slot_queryThreadResult(QueryThreadCommand result);
00045     void pipe_queryResult(QSqlQuery*);
00046 
00047 protected:
00048     Database();
00049     Database(const QString &driver, const QString &dbName, const QString &host,
00050              const QString &user, const QString &passwd, int port);
00051     ~Database();
00052 
00053 protected slots:
00054     void onDriverNotification(const QString & name);
00055 
00056 signals:
00057     void signal_queryQueue_changed(QueryQueue *queue);
00058     void tableChanged(const QString &tableName);
00059 
00060 private:
00061     QueryQueue queryQueue;
00062     QueryThread *thread;
00063     ProgressToolBar *m_progressToolBar;
00064 };
00065 
00069 class SqlHelper
00070 {
00071 public:
00072     void setDependency(const QString &tableName);
00073     void setDependencies(const QStringList &tableNames);
00074     void setRowIdentifierField(const QString &fieldName);
00075     QString rowIdentifierField() const;
00076 
00077     void clearDependencies();
00078     const QStringList &dependencies() const;
00079 
00080 protected:
00081     SqlHelper(){};
00082     virtual void onTableChange(const QString &tableName) = 0; // This function should be connected to on every table change
00083 
00084 private:
00085     QStringList m_dependencies;
00086     QString m_rowIdentifierField;
00087 };
00088 
00089 #include <QSqlQueryModel>
00090 
00094 class SqlQueryModel : public QSqlQueryModel, public SqlHelper
00095 {
00096     Q_OBJECT
00097 public:
00098     SqlQueryModel(QObject *parent = 0);
00099 
00100     bool contains(const QString &value, const int column = 0) const ;
00101     bool contains(const QMap<int, QString> &columnToStringMap) const ;
00102 
00103 public slots:
00104     virtual void clear();
00105 
00106     void reQuery();
00107 
00108 private slots:
00109     virtual void onTableChange(const QString &tableName);
00110 
00111 private:
00112 };
00113 
00114 #include <QSqlRelationalTableModel>
00115 
00119 class SqlTableModel : public QSqlRelationalTableModel, public SqlHelper
00120 {
00121     Q_OBJECT
00122 public:
00123     SqlTableModel(QObject *parent = 0, QSqlDatabase db = QSqlDatabase());
00124     virtual void queryChange();
00125     void setTable(const QString &table);
00126 
00127 private slots:
00128     virtual void onTableChange(const QString &tableName);
00129 
00130 signals:
00131     void queryChanged();
00132 };
00133 
00134 #include <QWidget>
00135 class QTableView;
00136 
00140 class DatabaseAuditLogView : public QWidget
00141 {
00142     Q_OBJECT
00143 public:
00144     DatabaseAuditLogView(QWidget *parent = 0);
00145     static const QString staticWindowTitle();
00146 
00147 public slots:
00148     void pipe_queryResult(QSqlQuery* result);
00149     void updateModel();
00150 
00151 private:
00152     const QString baseQuery;
00153     QTableView *logView;
00154 };
00155 
00156 #endif // DATABASE_H

Generated on Tue Aug 24 2010 15:58:55 for Smartlet by  doxygen 1.7.1