diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 760a0d8b..68179c10 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -861,8 +861,8 @@ void mainForm::executeQuery() QString query = db.GetEncodedQString(sqlTextEdit->text()); if (query.isEmpty()) { - QMessageBox::information( this, applicationName, "Query string is empty" ); - return; + QMessageBox::information( this, applicationName, "Query string is empty" ); + return; } //log the query db.logSQL(query, kLogMsg_User); @@ -870,64 +870,61 @@ void mainForm::executeQuery() const char *tail=NULL; int ncol; int err=0; - QString lastErrorMessage = QString("No error"); - //Accept multi-line queries, by looping until the tail is empty - while (1) { - if (tail!=NULL) { - query = QString(tail); - } - queryResultListView->clear(); - queryResultListView->setSorting (-1, FALSE); - while (queryResultListView->columns()>0) - { - queryResultListView->removeColumn(0); - } - - err=sqlite3_prepare(db._db,query,query.length(), - &vm, &tail); - if (err == SQLITE_OK){ - db.setDirty(true); - int rownum = 0; - Q3ListViewItem * lasttbitem = 0; - bool mustCreateColumns = true; - while ( sqlite3_step(vm) == SQLITE_ROW ){ - ncol = sqlite3_data_count(vm); - Q3ListViewItem * tbitem = new Q3ListViewItem( queryResultListView, lasttbitem); - //setup num of cols here for display grid - if (mustCreateColumns) - { - for (int e=0; eaddColumn(sqlite3_column_name(vm, e)); - mustCreateColumns = false; - } - for (int e=0; eMAX_DISPLAY_LENGTH) - { - firstline.truncate(MAX_DISPLAY_LENGTH); - firstline.append("..."); - } - tbitem->setText( e, firstline); - lasttbitem = tbitem; - rownum++; - } - } - sqlite3_finalize(vm); - }else{ - lastErrorMessage = QString (sqlite3_errmsg(db._db)); + QString lastErrorMessage = QString("No error"); + //Accept multi-line queries, by looping until the tail is empty + while (1) { + if (tail!=NULL) { + query = QString(tail); } - queryErrorLineEdit->setText(lastErrorMessage); - queryResultListView->setResizeMode(Q3ListView::AllColumns); + queryResultListModel->removeRows(0, queryResultListModel->rowCount()); + queryResultListModel->setHorizontalHeaderLabels(QStringList()); + queryResultListModel->setVerticalHeaderLabels(QStringList()); - if ((!tail)||(*tail==0)) break; - if(err!=SQLITE_OK) break; - } + err=sqlite3_prepare(db._db,query,query.length(), + &vm, &tail); + if (err == SQLITE_OK){ + db.setDirty(true); + int rownum = 0; + bool mustCreateColumns = true; + while ( sqlite3_step(vm) == SQLITE_ROW ){ + ncol = sqlite3_data_count(vm); + //setup num of cols here for display grid + if (mustCreateColumns) + { + QStringList headerList; + for (int e=0; esetHorizontalHeaderLabels(headerList); + mustCreateColumns = false; + } + for (int e=0; eMAX_DISPLAY_LENGTH) + { + firstline.truncate(MAX_DISPLAY_LENGTH); + firstline.append("..."); + } + queryResultListModel->setItem(rownum, e, new QStandardItem(QString(firstline))); + } + queryResultListModel->setVerticalHeaderItem(rownum, new QStandardItem(QString::number(rownum + 1))); + rownum++; + } + sqlite3_finalize(vm); + }else{ + lastErrorMessage = QString (sqlite3_errmsg(db._db)); + } + queryErrorLineEdit->setText(lastErrorMessage); + queryResultTableView->resizeColumnsToContents(); + + if ((!tail)||(*tail==0)) break; + if(err!=SQLITE_OK) break; + } } diff --git a/src/mainwindow.h b/src/mainwindow.h index 31a2e1b8..91248e55 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -13,7 +13,8 @@ #endif #include -#include +#include +#include #include #include #include @@ -126,7 +127,8 @@ public: QLabel *textLabel2; QLineEdit *queryErrorLineEdit; QLabel *textLabel3; - Q3ListView *queryResultListView; + QTableView *queryResultTableView; + QStandardItemModel *queryResultListModel; QToolBar *Toolbar; QMenuBar *menubar; QMenu *fileMenu; @@ -525,13 +527,14 @@ public: vboxLayout3->addWidget(textLabel3); - queryResultListView = new Q3ListView(query); - queryResultListView->setObjectName(QString::fromUtf8("queryResultListView")); - queryResultListView->setResizePolicy(Q3ScrollView::Manual); - queryResultListView->setSelectionMode(Q3ListView::NoSelection); - queryResultListView->setResizeMode(Q3ListView::AllColumns); + queryResultListModel = new QStandardItemModel(query); - vboxLayout3->addWidget(queryResultListView); + queryResultTableView = new QTableView(query); + queryResultTableView->setObjectName(QString::fromUtf8("queryResultTableView")); + queryResultTableView->setSelectionMode(QTreeView::NoSelection); + queryResultTableView->setModel(queryResultListModel); + + vboxLayout3->addWidget(queryResultTableView); mainTab->addTab(query, QString()); @@ -940,10 +943,10 @@ public: #endif // QT_NO_WHATSTHIS textLabel3->setText(QApplication::translate("mainForm", "Data returned:", 0, QApplication::UnicodeUTF8)); #ifndef QT_NO_TOOLTIP - queryResultListView->setProperty("toolTip", QVariant(QApplication::translate("mainForm", "Query generated data", 0, QApplication::UnicodeUTF8))); + queryResultTableView->setProperty("toolTip", QVariant(QApplication::translate("mainForm", "Query generated data", 0, QApplication::UnicodeUTF8))); #endif // QT_NO_TOOLTIP #ifndef QT_NO_WHATSTHIS - queryResultListView->setProperty("whatsThis", QVariant(QApplication::translate("mainForm", "This table displays data returned from the database engine as a result of the SQL query. You can not modify data directly on this view, only consult it.", 0, QApplication::UnicodeUTF8))); + queryResultTableView->setProperty("whatsThis", QVariant(QApplication::translate("mainForm", "This table displays data returned from the database engine as a result of the SQL query. You can not modify data directly on this view, only consult it.", 0, QApplication::UnicodeUTF8))); #endif // QT_NO_WHATSTHIS mainTab->setTabText(mainTab->indexOf(query), QApplication::translate("mainForm", "Execute SQL", 0, QApplication::UnicodeUTF8)); Toolbar->setLabel(QApplication::translate("mainForm", "Toolbar", 0, QApplication::UnicodeUTF8));