summaryrefslogtreecommitdiffstats
path: root/tools/designer/plugins/wizards/sqlformwizardimpl.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:24:15 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:24:15 -0500
commitbd0f3345a938b35ce6a12f6150373b0955b8dd12 (patch)
tree7a520322212d48ebcb9fbe1087e7fca28b76185c /tools/designer/plugins/wizards/sqlformwizardimpl.cpp
downloadqt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.tar.gz
qt3-bd0f3345a938b35ce6a12f6150373b0955b8dd12.zip
Add Qt3 development HEAD version
Diffstat (limited to 'tools/designer/plugins/wizards/sqlformwizardimpl.cpp')
-rw-r--r--tools/designer/plugins/wizards/sqlformwizardimpl.cpp624
1 files changed, 624 insertions, 0 deletions
diff --git a/tools/designer/plugins/wizards/sqlformwizardimpl.cpp b/tools/designer/plugins/wizards/sqlformwizardimpl.cpp
new file mode 100644
index 0000000..7519877
--- /dev/null
+++ b/tools/designer/plugins/wizards/sqlformwizardimpl.cpp
@@ -0,0 +1,624 @@
+ /**********************************************************************
+** Copyright (C) 2005-2008 Trolltech ASA. All rights reserved.
+**
+** This file is part of Qt Designer.
+**
+** This file may be used under the terms of the GNU General
+** Public License versions 2.0 or 3.0 as published by the Free
+** Software Foundation and appearing in the files LICENSE.GPL2
+** and LICENSE.GPL3 included in the packaging of this file.
+** Alternatively you may (at your option) use any later version
+** of the GNU General Public License if such license has been
+** publicly approved by Trolltech ASA (or its successors, if any)
+** and the KDE Free Qt Foundation.
+**
+** Please review the following information to ensure GNU General
+** Public Licensing requirements will be met:
+** http://trolltech.com/products/qt/licenses/licensing/opensource/.
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://trolltech.com/products/qt/licenses/licensing/licensingoverview
+** or contact the sales department at sales@trolltech.com.
+**
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with
+** the Software.
+**
+** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
+** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted
+** herein.
+**
+**********************************************************************/
+
+#include "sqlformwizardimpl.h"
+
+#include <qlistbox.h>
+#include <qwidget.h>
+#include <qcheckbox.h>
+#include <qlineedit.h>
+
+#include <qlabel.h>
+#include <qgroupbox.h>
+#include <qlayout.h>
+#include <qregexp.h>
+#include <qpushbutton.h>
+#include <qmultilineedit.h>
+#include <qlistview.h>
+#include <qfeatures.h>
+#include <qradiobutton.h>
+#include <qspinbox.h>
+#include <limits.h>
+
+#ifndef QT_NO_SQL
+#include <qdatatable.h>
+#include <qdatabrowser.h>
+#include <qdataview.h>
+#include <qsqleditorfactory.h>
+#include <qsqlindex.h>
+#include <qsqlcursor.h>
+#endif
+
+SqlFormWizard::SqlFormWizard( QUnknownInterface *aIface, QWidget *w,
+ QWidget* parent, DesignerFormWindow *fw, const char* name, bool modal, WFlags fl )
+ : SqlFormWizardBase( parent, name, modal, fl ), widget( w ), appIface( aIface ),
+ mode( None )
+{
+ appIface->addRef();
+ formWindow = fw;
+ setFinishEnabled( finishPage, TRUE );
+
+ /* set mode of operation */
+ if ( ::qt_cast<QDataTable*>(widget) ) {
+ setCaption( "Data Table Wizard" );
+ mode = Table;
+ setAppropriate( navigPage, FALSE );
+ setAppropriate( layoutPage, FALSE );
+ checkBoxAutoEdit->setChecked( FALSE );
+ } else if ( ::qt_cast<QDataBrowser*>(widget) ) {
+ setCaption( "Data Browser Wizard" );
+ setAppropriate( tablePropertiesPage, FALSE );
+ mode = Browser;
+ checkBoxAutoEdit->setChecked( TRUE );
+ } else if ( ::qt_cast<QDataView*>(widget) ) {
+ setCaption( "Data View Wizard" );
+ setAppropriate( tablePropertiesPage, FALSE );
+ setAppropriate( navigPage, FALSE );
+ setAppropriate( sqlPage, FALSE);
+ checkCreateFieldLayout->hide();
+ checkCreateButtonLayout->hide();
+ checkBoxAutoEdit->hide();
+ mode = View;
+ }
+
+ connect( nextButton(), SIGNAL(clicked()), SLOT(nextPageClicked()) );
+ setupPage1();
+}
+
+
+SqlFormWizard::~SqlFormWizard()
+{
+ appIface->release();
+}
+
+void SqlFormWizard::nextPageClicked()
+{
+ if ( currentPage() == populatePage ) {
+ autoPopulate( TRUE );
+ }
+}
+
+void SqlFormWizard::connectionSelected( const QString &c )
+{
+ if ( !appIface )
+ return;
+
+ DesignerProject *proIface = (DesignerProject*)( (DesignerInterface*)appIface )->currentProject();
+ if ( !proIface )
+ return;
+
+ listBoxTable->clear();
+ QPtrList<DesignerDatabase> databases = proIface->databaseConnections();
+ for ( DesignerDatabase *d = databases.first(); d; d = databases.next() ) {
+ if ( d->name() == c || ( d->name() == "(default)" || d->name().isEmpty() ) && c == "(default)")
+ listBoxTable->insertStringList( d->tables() );
+ }
+ setNextEnabled( databasePage, ( listBoxTable->currentItem() >= 0 ) );
+}
+
+void SqlFormWizard::tableSelected( const QString & )
+{
+ if ( listBoxTable->currentItem() >= 0 ) {
+ setNextEnabled( databasePage, TRUE );
+ } else {
+ setNextEnabled( databasePage, FALSE );
+ }
+
+}
+
+void SqlFormWizard::autoPopulate( bool populate )
+{
+ DesignerProject *proIface = (DesignerProject*)( (DesignerInterface*)appIface )->currentProject();
+ if ( !proIface )
+ return;
+ QPtrList<DesignerDatabase> databases = proIface->databaseConnections();
+ listBoxField->clear();
+ listBoxSortField->clear();
+ listBoxSelectedField->clear();
+ if ( populate ) {
+ for ( DesignerDatabase *d = databases.first(); d; d = databases.next() ) {
+ if ( d->name() == listBoxConnection->currentText() ||
+ ( ( d->name() == "(default)" || d->name().isEmpty() ) &&
+ listBoxConnection->currentText() == "(default)" ) ) {
+ QStringList lst = *d->fields().find( listBoxTable->currentText() );
+ // remove primary index fields, if any
+ listBoxSortField->insertStringList( lst );
+ d->open( FALSE );
+#ifndef QT_NO_SQL
+ QSqlCursor tab( listBoxTable->currentText(), TRUE, d->connection() );
+ QSqlIndex pIdx = tab.primaryIndex();
+ for ( uint i = 0; i < pIdx.count(); i++ ) {
+ listBoxField->insertItem( pIdx.field( i )->name() );
+ lst.remove( pIdx.field( i )->name() );
+ }
+#endif
+ d->close();
+ listBoxSelectedField->insertStringList( lst );
+ }
+ }
+ }
+}
+
+void SqlFormWizard::fieldDown()
+{
+ if ( listBoxSelectedField->currentItem() == -1 ||
+ listBoxSelectedField->currentItem() == (int)listBoxSelectedField->count() - 1 ||
+ listBoxSelectedField->count() < 2 )
+ return;
+ int index = listBoxSelectedField->currentItem() + 1;
+ QListBoxItem *i = listBoxSelectedField->item( listBoxSelectedField->currentItem() );
+ listBoxSelectedField->takeItem( i );
+ listBoxSelectedField->insertItem( i, index );
+ listBoxSelectedField->setCurrentItem( i );
+}
+
+void SqlFormWizard::fieldUp()
+{
+ if ( listBoxSelectedField->currentItem() <= 0 ||
+ listBoxSelectedField->count() < 2 )
+ return;
+ int index = listBoxSelectedField->currentItem() - 1;
+ QListBoxItem *i = listBoxSelectedField->item( listBoxSelectedField->currentItem() );
+ listBoxSelectedField->takeItem( i );
+ listBoxSelectedField->insertItem( i, index );
+ listBoxSelectedField->setCurrentItem( i );
+}
+
+void SqlFormWizard::removeField()
+{
+ int i = listBoxSelectedField->currentItem();
+ if ( i != -1 ) {
+ listBoxField->insertItem( listBoxSelectedField->currentText() );
+ listBoxSelectedField->removeItem( i );
+ }
+}
+
+void SqlFormWizard::addField()
+{
+ int i = listBoxField->currentItem();
+ if ( i == -1 )
+ return;
+ QString f = listBoxField->currentText();
+ if ( !f.isEmpty() )
+ listBoxSelectedField->insertItem( f );
+ listBoxField->removeItem( i );
+}
+
+void SqlFormWizard::addSortField()
+{
+ int i = listBoxSortField->currentItem();
+ if ( i == -1 )
+ return;
+ QString f = listBoxSortField->currentText();
+ if ( !f.isEmpty() )
+ listBoxSortedField->insertItem( f + " ASC" );
+}
+
+void SqlFormWizard::reSortSortField()
+{
+ int i = listBoxSortedField->currentItem();
+ if ( i != -1 ) {
+ QString text = listBoxSortedField->currentText();
+ if ( text.mid( text.length() - 3 ) == "ASC" )
+ text = text.mid( 0, text.length() - 3 ) + "DESC";
+ else if ( text.mid( text.length() - 4 ) == "DESC" )
+ text = text.mid( 0, text.length() - 4 ) + "ASC";
+ listBoxSortedField->removeItem( i );
+ listBoxSortedField->insertItem( text, i );
+ listBoxSortedField->setCurrentItem( i );
+ }
+}
+
+void SqlFormWizard::removeSortField()
+{
+ int i = listBoxSortedField->currentItem();
+ if ( i != -1 ) {
+ listBoxSortedField->removeItem( i );
+ }
+}
+
+void SqlFormWizard::sortFieldUp()
+{
+ if ( listBoxSortedField->currentItem() <= 0 ||
+ listBoxSortedField->count() < 2 )
+ return;
+ int index = listBoxSortedField->currentItem() - 1;
+ QListBoxItem *i = listBoxSortedField->item( listBoxSortedField->currentItem() );
+ listBoxSortedField->takeItem( i );
+ listBoxSortedField->insertItem( i, index );
+ listBoxSortedField->setCurrentItem( i );
+}
+
+void SqlFormWizard::sortFieldDown()
+{
+ if ( listBoxSortedField->currentItem() == -1 ||
+ listBoxSortedField->currentItem() == (int)listBoxSortedField->count() - 1 ||
+ listBoxSortedField->count() < 2 )
+ return;
+ int index = listBoxSortedField->currentItem() + 1;
+ QListBoxItem *i = listBoxSortedField->item( listBoxSortedField->currentItem() );
+ listBoxSortedField->takeItem( i );
+ listBoxSortedField->insertItem( i, index );
+ listBoxSortedField->setCurrentItem( i );
+}
+
+void SqlFormWizard::setupDatabaseConnections()
+{
+ if ( !appIface )
+ return;
+
+ DesignerProject *proIface = (DesignerProject*)( (DesignerInterface*)appIface )->currentProject();
+ if ( !proIface )
+ return;
+ proIface->setupDatabases();
+ raise();
+ setupPage1();
+}
+
+void SqlFormWizard::setupPage1()
+{
+ if ( !appIface )
+ return;
+
+ DesignerProject *proIface = (DesignerProject*)( (DesignerInterface*)appIface )->currentProject();
+ if ( !proIface )
+ return;
+
+ listBoxTable->clear();
+ listBoxConnection->clear();
+ QPtrList<DesignerDatabase> databases = proIface->databaseConnections();
+ QStringList lst;
+ for ( DesignerDatabase *d = databases.first(); d; d = databases.next() )
+ lst << d->name();
+ listBoxConnection->insertStringList( lst );
+ if ( lst.count() )
+ listBoxConnection->setCurrentItem( 0 );
+
+ setNextEnabled( databasePage, FALSE );
+}
+
+static QPushButton *create_widget( QWidget *parent, const char *name,
+ const QString &txt, const QRect &r, DesignerFormWindow *fw )
+{
+ QPushButton *pb = (QPushButton*)fw->create( "QPushButton", parent, name );
+ pb->setText( txt );
+ pb->setGeometry( r );
+ fw->setPropertyChanged( pb, "text", TRUE );
+ fw->setPropertyChanged( pb, "geometry", TRUE );
+ return pb;
+}
+
+void SqlFormWizard::accept()
+{
+ if ( !appIface || mode == None )
+ return;
+
+#ifndef QT_NO_SQL
+ DesignerProject *proIface = (DesignerProject*)( (DesignerInterface*)appIface )->currentProject();
+ if ( !widget || !proIface ) {
+ SqlFormWizardBase::accept();
+ return;
+ }
+
+ QString conn = listBoxConnection->currentText();
+ QString table = listBoxTable->currentText();
+ QStringList lst;
+ lst << conn << table;
+
+ if ( !conn.isEmpty() && !table.isEmpty() ) {
+ formWindow->setProperty( widget, "database", lst );
+ formWindow->setPropertyChanged( widget, "database", TRUE );
+ }
+
+ if ( !editFilter->text().isEmpty() ) {
+ widget->setProperty( "filter", editFilter->text() );
+ formWindow->setPropertyChanged( widget, "filter", TRUE );
+ }
+
+ if ( listBoxSortedField->count() ) {
+ QStringList lst;
+ for ( uint i = 0; i < listBoxSortedField->count(); ++i )
+ lst << listBoxSortedField->text( i );
+ widget->setProperty( "sort", lst );
+ formWindow->setPropertyChanged( widget, "sort", TRUE );
+ }
+
+ QPtrList<DesignerDatabase> databases = proIface->databaseConnections();
+ DesignerDatabase *database = 0;
+ for ( DesignerDatabase *d = databases.first(); d; d = databases.next() ) {
+ if ( d->name() == listBoxConnection->currentText() || ( d->name() == "(default)" || d->name().isEmpty() ) && listBoxConnection->currentText() == "(default)" ) {
+ database = d;
+ d->open( FALSE );
+ break;
+ }
+ }
+
+ if (!database) {
+ return;
+ }
+ QSqlCursor tab( listBoxTable->currentText(), TRUE, database->connection() );
+ int columns = 2;
+
+ QSqlEditorFactory * f = QSqlEditorFactory::defaultFactory();
+
+ QWidget * editorDummy;
+ QWidget * editor;
+ QLabel * label;
+
+ int visibleFields = listBoxSelectedField->count();
+ int numPerColumn = visibleFields / columns;
+ if( (visibleFields % columns) > 0)
+ numPerColumn++;
+
+ int row = 0;
+ const int SPACING = 25;
+ const int COL_SPACING = SPACING*9;
+
+ uint j;
+ switch ( mode ) {
+ case None:
+ break;
+ case View:
+ case Browser: {
+
+ if ( mode == Browser && !checkBoxAutoEdit->isChecked() ) {
+ ((QDataBrowser*)widget)->setAutoEdit( FALSE );
+ formWindow->setPropertyChanged( widget, "autoEdit", TRUE );
+ }
+
+ formWindow->clearSelection();
+ bool createFieldLayout = checkCreateFieldLayout->isChecked();
+ bool createButtonLayout = checkCreateButtonLayout->isChecked();
+ bool createLayouts = checkCreateLayouts->isChecked();
+ bool labelAbove = radioLabelsTop->isOn();
+ uint numCols = spinNumberOfColumns->text().toInt();
+ uint currentCol = 0;
+ uint fieldsPerCol = listBoxSelectedField->count();
+ uint fieldsInCol = 0;
+ if ( listBoxSelectedField->count() )
+ fieldsPerCol = listBoxSelectedField->count() / numCols;
+ /* labels and data field editors */
+ for( j = 0; j < listBoxSelectedField->count(); j++ ){
+
+ QSqlField* field = tab.field( listBoxSelectedField->text( j ) );
+ if ( !field )
+ continue;
+
+ /* label */
+ QString labelName = field->name();
+ labelName = labelName.mid(0,1).upper() + labelName.mid(1);
+ label = (QLabel*)formWindow->create( "QLabel", widget,
+ QString( "label" + labelName ) );
+ label->setText( labelName );
+ label->setGeometry( SPACING + currentCol*COL_SPACING, row+SPACING,
+ SPACING*3, SPACING );
+
+ formWindow->setPropertyChanged( label, "geometry", TRUE );
+ formWindow->setPropertyChanged( label, "text", TRUE );
+
+ /* editor */
+ editorDummy = f->createEditor( widget, field );
+ editor = formWindow->create( editorDummy->className(), widget,
+ QString( QString( editorDummy->className() )
+ + labelName) );
+ delete editorDummy;
+ if ( labelAbove ) {
+ row += SPACING;
+ editor->setGeometry(SPACING + currentCol*COL_SPACING, row+SPACING,
+ SPACING*3, SPACING );
+ } else {
+ editor->setGeometry(SPACING * 5 + currentCol*COL_SPACING, row+SPACING,
+ SPACING*3, SPACING );
+ }
+ formWindow->setPropertyChanged( editor, "geometry", TRUE );
+ if ( QString(editor->className()) == "QLineEdit" &&
+ (field->type() == QVariant::Double ||
+ field->type() == QVariant::Int ||
+ field->type() == QVariant::UInt ) ) {
+ /* default right-align numerics */
+ //##
+ ((QLineEdit*)editor)->setAlignment( Qt::AlignRight );
+ formWindow->setPropertyChanged( editor, "alignment", TRUE );
+ }
+ if ( ::qt_cast<QSpinBox*>(editor) ) {
+ ( (QSpinBox*)editor )->setMaxValue( INT_MAX );
+ formWindow->setPropertyChanged( editor, "maxValue", TRUE );
+ }
+ QStringList lst;
+ lst << conn << table << field->name();
+ formWindow->setProperty( editor, "database", lst );
+ formWindow->setPropertyChanged( editor, "database", TRUE );
+
+ /* geometry */
+ if ( createFieldLayout ) {
+ formWindow->selectWidget( label );
+ formWindow->selectWidget( editor );
+ }
+
+ row += SPACING + 5;
+ fieldsInCol++;
+ if ( ( fieldsInCol >= fieldsPerCol ) && ( currentCol < numCols-1 ) ) {
+ currentCol++;
+ fieldsInCol = 0;
+ row = 0;
+ }
+ }
+
+ if ( listBoxSelectedField->count() ) {
+ if ( createFieldLayout )
+ formWindow->layoutG();
+ row += SPACING;
+ }
+
+ if ( mode == Browser ) {
+ if ( checkBoxNavig->isChecked() ) {
+ formWindow->clearSelection();
+ currentCol = 0;
+ if ( checkBoxFirst->isChecked() ) {
+ QPushButton *pb = create_widget( widget, "PushButtonFirst",
+ "|< &First",
+ QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ),
+ formWindow );
+ formWindow->addConnection( pb, "clicked()", widget, "first()" );
+ formWindow->addConnection( widget, "firstRecordAvailable( bool )",
+ pb, "setEnabled( bool )" );
+ currentCol++;
+ formWindow->selectWidget( pb );
+ }
+ if ( checkBoxPrev->isChecked() ) {
+ QPushButton *pb = create_widget( widget, "PushButtonPrev",
+ "<< &Prev",
+ QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ),
+ formWindow );
+ formWindow->addConnection( pb, "clicked()", widget, "prev()" );
+ formWindow->addConnection( widget, "prevRecordAvailable( bool )",
+ pb, "setEnabled( bool )" );
+ currentCol++;
+ formWindow->selectWidget( pb );
+ }
+ if ( checkBoxNext->isChecked() ) {
+ QPushButton *pb = create_widget( widget, "PushButtonNext",
+ "&Next >>",
+ QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ),
+ formWindow );
+ formWindow->addConnection( pb, "clicked()", widget, "next()" );
+ formWindow->addConnection( widget, "nextRecordAvailable( bool )", pb,
+ "setEnabled( bool )" );
+ currentCol++;
+ formWindow->selectWidget( pb );
+ }
+ if ( checkBoxLast->isChecked() ) {
+ QPushButton *pb = create_widget( widget, "PushButtonLast", "&Last >|",
+ QRect( 3 * SPACING * currentCol, row+SPACING, SPACING*3, SPACING ), formWindow );
+ formWindow->addConnection( pb, "clicked()", widget, "last()" );
+ formWindow->addConnection( widget, "lastRecordAvailable( bool )", pb,
+ "setEnabled( bool )" );
+ currentCol++;
+ formWindow->selectWidget( pb );
+ }
+ if ( createButtonLayout )
+ formWindow->layoutH();
+ }
+ if ( checkBoxEdit->isChecked() ) {
+ formWindow->clearSelection();
+ row += SPACING;
+ currentCol = 0;
+ if ( checkBoxInsert->isChecked() ) {
+ QPushButton *pb = create_widget( widget, "PushButtonInsert", "&Insert",
+ QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow );
+ formWindow->addConnection( pb, "clicked()", widget, "insert()" );
+ currentCol++;
+ formWindow->selectWidget( pb );
+ }
+ if ( checkBoxUpdate->isChecked() ) {
+ QPushButton *pb = create_widget( widget, "PushButtonUpdate", "&Update",
+ QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow );
+ formWindow->addConnection( pb, "clicked()", widget, "update()" );
+ currentCol++;
+ formWindow->selectWidget( pb );
+ }
+ if ( checkBoxDelete->isChecked() ) {
+ QPushButton *pb = create_widget( widget, "PushButtonDelete", "&Delete",
+ QRect( 3 * SPACING * currentCol, row+SPACING, SPACING * 3, SPACING ), formWindow );
+ formWindow->addConnection( pb, "clicked()", widget, "del()" );
+ currentCol++;
+ formWindow->selectWidget( pb );
+ }
+ if ( createButtonLayout )
+ formWindow->layoutH();
+ }
+ }
+ if ( createLayouts )
+ formWindow->layoutGContainer( widget );
+ formWindow->clearSelection();
+ break;
+ }
+ case Table:
+ {
+ QDataTable* sqlTable = ((QDataTable*)widget);
+ if ( checkBoxAutoEdit->isChecked() ) {
+ sqlTable->setAutoEdit( TRUE );
+ formWindow->setPropertyChanged( sqlTable, "autoEdit", TRUE );
+ }
+
+ if ( checkBoxReadOnly->isChecked() ) {
+ sqlTable->setReadOnly( TRUE );
+ formWindow->setPropertyChanged( sqlTable, "readOnly", TRUE );
+ } else {
+ if ( checkBoxConfirmInserts->isChecked() ) {
+ sqlTable->setConfirmInsert( TRUE );
+ formWindow->setPropertyChanged( sqlTable, "confirmInsert", TRUE );
+ }
+ if ( checkBoxConfirmUpdates->isChecked() ) {
+ sqlTable->setConfirmUpdate( TRUE );
+ formWindow->setPropertyChanged( sqlTable, "confirmUpdate", TRUE );
+ }
+ if ( checkBoxConfirmDeletes->isChecked() ) {
+ sqlTable->setConfirmDelete( TRUE );
+ formWindow->setPropertyChanged( sqlTable, "confirmDelete", TRUE );
+ }
+ if ( checkBoxConfirmCancels->isChecked() ) {
+ sqlTable->setConfirmCancels( TRUE );
+ formWindow->setPropertyChanged( sqlTable, "confirmCancels", TRUE );
+ }
+ }
+ if ( checkBoxSorting->isChecked() ) {
+ sqlTable->setSorting( TRUE );
+ formWindow->setPropertyChanged( sqlTable, "sorting", TRUE );
+ }
+
+ QMap<QString, QString> columnFields;
+ sqlTable->setNumCols( listBoxSelectedField->count() ); // no need to change property through mdbIface here, since QDataTable doesn't offer that through Designer
+ for( j = 0; j < listBoxSelectedField->count(); j++ ){
+
+ QSqlField* field = tab.field( listBoxSelectedField->text( j ) );
+ if ( !field )
+ continue;
+
+ QString labelName = field->name();
+ labelName = labelName.mid(0,1).upper() + labelName.mid(1);
+
+ ((QTable*)widget)->horizontalHeader()->setLabel( j, labelName );
+
+ columnFields.insert( labelName, field->name() );
+ }
+ formWindow->setColumnFields( widget, columnFields );
+ break;
+ }
+ }
+
+ database->close();
+#endif
+
+ SqlFormWizardBase::accept();
+}