2011-06-24 11:05:56 +00:00
# include "tableform.h"
# include "ui_tableform.h"
2011-10-27 12:08:05 +00:00
# include <QtSql>
2011-06-24 11:05:56 +00:00
# include <QTableWidgetItem>
# include <QMainWindow>
# include <QStatusBar>
# include <Qsci/qscilexersql.h>
TableForm : : TableForm ( QWidget * parent ) :
QWidget ( parent ) ,
ui ( new Ui : : TableForm )
{
QsciLexerSQL * lexer = new QsciLexerSQL ( ) ;
lexer - > setDefaultPaper ( QColor ( 255 , 255 , 255 ) ) ;
lexer - > setDefaultColor ( QColor ( 0 , 0 , 0 ) ) ;
lexer - > setDefaultFont ( QFont ( " monospace " ) ) ;
for ( int i = - 1 ; i < 23 ; i + + )
{
lexer - > setPaper ( QColor ( 255 , 255 , 255 ) , i ) ;
//lexer->setDefaultColor(QColor(0, 0, 0));
lexer - > setFont ( QFont ( " monospace " ) , i ) ;
}
ui - > setupUi ( this ) ;
ui - > QueryTextEdit - > setLexer ( lexer ) ;
m_QueryModel = 0 ;
}
TableForm : : ~ TableForm ( )
{
delete m_QueryModel ;
delete m_DataModel ;
delete ui ;
}
void TableForm : : changeEvent ( QEvent * e )
{
QWidget : : changeEvent ( e ) ;
switch ( e - > type ( ) ) {
case QEvent : : LanguageChange :
ui - > retranslateUi ( this ) ;
break ;
default :
break ;
}
}
2011-10-27 12:08:05 +00:00
void TableForm : : setColumns ( )
2011-06-24 11:05:56 +00:00
{
2011-10-27 12:08:05 +00:00
QSqlQuery query ;
if ( m_Database . driverName ( ) = = " QPSQL " )
{
query = QSqlQuery ( " SELECT * FROM \" " + m_TableName + " \" LIMIT 1 " , m_Database ) ;
// SELECT column_name, column_default, is_nullable, data_type, character_maximum_length FROM information_schema.columns WHERE table_name = "" ORDER BY ordinal_position
}
else if ( m_Database . driverName ( ) = = " MYSQL " )
{
query = QSqlQuery ( " SELECT * FROM ` " + m_TableName + " ` LIMIT 1 " , m_Database ) ;
// SELECT COLUMN_NAME AS column_name, COLUMN_DEFAULT AS column_default, IS_NULLABLE AS is_nullable, DATA_TYPE AS data_type, CHARACTER_MAXIMUM_LENGTH AS character_maximum_length FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = "" ORDER BY ordinal_position
}
else if ( m_Database . driverName ( ) = = " SQLITE " )
{
query = QSqlQuery ( " SELECT * FROM ' " + m_TableName + " '' LIMIT 1 " , m_Database ) ;
// SELECT
}
QSqlRecord record = query . record ( ) ;
2011-06-24 11:05:56 +00:00
ui - > StructureTableWidget - > setRowCount ( record . count ( ) ) ;
for ( int i = 0 ; i < record . count ( ) ; i + + )
{
QSqlField field = record . field ( i ) ;
QTableWidgetItem * nameItem = new QTableWidgetItem ( field . name ( ) ) ;
2011-10-27 12:08:05 +00:00
QString typeName = QVariant : : typeToName ( field . type ( ) ) ;
QTableWidgetItem * typeItem = new QTableWidgetItem ( typeName + " - " + QString : : number ( field . type ( ) ) ) ;
2011-06-24 11:05:56 +00:00
QTableWidgetItem * sizeItem ;
if ( field . length ( ) > = 0 )
{
2011-10-27 12:08:05 +00:00
sizeItem = new QTableWidgetItem ( QString : : number ( field . length ( ) ) ) ;
2011-06-24 11:05:56 +00:00
}
else if ( field . precision ( ) > = 0 )
{
2011-10-27 12:08:05 +00:00
sizeItem = new QTableWidgetItem ( QString : : number ( field . precision ( ) ) ) ;
2011-06-24 11:05:56 +00:00
}
else
{
sizeItem = new QTableWidgetItem ( " " ) ;
}
QTableWidgetItem * nullItem ;
2011-10-27 12:08:05 +00:00
if ( field . requiredStatus ( ) = = 1 )
2011-06-24 11:05:56 +00:00
{
nullItem = new QTableWidgetItem ( " not null " ) ;
}
2011-10-27 12:08:05 +00:00
else if ( field . requiredStatus ( ) = = 0 )
2011-06-24 11:05:56 +00:00
{
nullItem = new QTableWidgetItem ( " nullable " ) ;
}
2011-10-27 12:08:05 +00:00
else
{
nullItem = new QTableWidgetItem ( " unknown " ) ;
}
2011-06-24 11:05:56 +00:00
ui - > StructureTableWidget - > setItem ( i , 0 , nameItem ) ;
ui - > StructureTableWidget - > setItem ( i , 1 , typeItem ) ;
ui - > StructureTableWidget - > setItem ( i , 2 , sizeItem ) ;
ui - > StructureTableWidget - > setItem ( i , 3 , nullItem ) ;
}
ui - > StructureTableWidget - > resizeColumnsToContents ( ) ;
2011-10-27 12:08:05 +00:00
}
void TableForm : : setTable ( const QString connectionName , const QString tableName )
{
QMainWindow * mainWindow = qobject_cast < QMainWindow * > ( window ( ) ) ;
if ( mainWindow )
{
mainWindow - > statusBar ( ) - > showMessage ( " Opening table \" " + tableName + " \" ... " ) ;
}
QCoreApplication : : processEvents ( ) ;
m_ConnectionName = connectionName ;
m_TableName = tableName ;
m_Database = QSqlDatabase : : database ( m_ConnectionName ) ;
this - > setColumns ( ) ;
m_DataModel = new QSqlTableModel ( this , m_Database ) ;
m_DataModel - > setTable ( m_TableName ) ;
ui - > DataTableView - > setModel ( m_DataModel ) ;
2011-06-24 11:05:56 +00:00
if ( mainWindow )
2011-10-27 12:08:05 +00:00
{
2011-06-24 11:05:56 +00:00
mainWindow - > statusBar ( ) - > clearMessage ( ) ;
2011-10-27 12:08:05 +00:00
}
2011-06-24 11:05:56 +00:00
}
void TableForm : : on_DataCommitAction_triggered ( )
{
if ( m_DataModel )
{
m_DataModel - > database ( ) . commit ( ) ;
}
ui - > DataCommitAction - > setEnabled ( false ) ;
ui - > DataRollbackAction - > setEnabled ( false ) ;
}
void TableForm : : on_DataRefreshAction_triggered ( )
{
2011-10-27 12:08:05 +00:00
QMainWindow * mainWindow = qobject_cast < QMainWindow * > ( window ( ) ) ;
if ( mainWindow )
{
mainWindow - > statusBar ( ) - > showMessage ( " Fetching results from \" " + m_TableName + " \" ... " ) ;
}
2011-06-24 11:05:56 +00:00
m_DataModel - > select ( ) ;
ui - > DataTableView - > resizeColumnsToContents ( ) ;
2011-10-27 12:08:05 +00:00
if ( mainWindow )
{
mainWindow - > statusBar ( ) - > clearMessage ( ) ;
}
2011-06-24 11:05:56 +00:00
}
void TableForm : : on_QueryRunAction_triggered ( )
{
QMainWindow * mainWindow = qobject_cast < QMainWindow * > ( window ( ) ) ;
if ( mainWindow )
2011-10-27 12:08:05 +00:00
{
2011-06-24 11:05:56 +00:00
mainWindow - > statusBar ( ) - > showMessage ( " Running query... " ) ;
2011-10-27 12:08:05 +00:00
}
2011-06-24 11:05:56 +00:00
QApplication : : setOverrideCursor ( QCursor ( Qt : : WaitCursor ) ) ;
QCoreApplication : : processEvents ( ) ;
QString query = " " ;
if ( m_QueryModel = = 0 )
{
m_QueryModel = new QSqlQueryModel ;
}
if ( ui - > QueryTextEdit - > hasSelectedText ( ) )
{
query = ui - > QueryTextEdit - > selectedText ( ) ;
}
else
{
query = ui - > QueryTextEdit - > text ( ) ;
}
m_QueryModel - > setQuery ( query , m_Database ) ;
ui - > ResultsTableView - > setModel ( m_QueryModel ) ;
ui - > ResultsTableView - > resizeColumnsToContents ( ) ;
QApplication : : restoreOverrideCursor ( ) ;
if ( mainWindow )
2011-10-27 12:08:05 +00:00
{
2011-06-24 11:05:56 +00:00
mainWindow - > statusBar ( ) - > clearMessage ( ) ;
2011-10-27 12:08:05 +00:00
}
2011-06-24 11:05:56 +00:00
}