diff options
Diffstat (limited to 'qtjava/javalib/examples/demo/sql/EditBookForm.java')
-rw-r--r-- | qtjava/javalib/examples/demo/sql/EditBookForm.java | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/qtjava/javalib/examples/demo/sql/EditBookForm.java b/qtjava/javalib/examples/demo/sql/EditBookForm.java new file mode 100644 index 00000000..6c07176f --- /dev/null +++ b/qtjava/javalib/examples/demo/sql/EditBookForm.java @@ -0,0 +1,267 @@ +/**************************************************************************** +** Form implementation generated from reading ui file 'editbook.ui' +** +** Created: Wed Aug 8 03:37:45 2001 +** by: The User Interface Compiler (uic) +** +** WARNING! All changes made in this file will be lost! +****************************************************************************/ +import org.kde.qt.*; +import java.util.HashMap; + +public class EditBookForm extends QDialog { + QDataBrowser BookDataBrowser; + QLabel labelPrice; + QLabel labelTitle; + QLineEdit QLineEditTitle; + QLineEdit QLineEditPrice; + QPushButton PushButtonInsert; + QPushButton PushButtonUpdate; + QPushButton PushButtonDelete; + QPushButton PushButtonClose; + QPushButton PushButtonFirst; + QPushButton PushButtonPrev; + QPushButton PushButtonNext; + QPushButton PushButtonLast; + QLabel TextLabel1; + QComboBox ComboBoxAuthor; + + QVBoxLayout EditBookFormLayout; + QGridLayout BookDataBrowserLayout; + QGridLayout Layout2; + QHBoxLayout Layout6; + QHBoxLayout Layout3; + QHBoxLayout Layout6_2; + + HashMap authorMap; + QSizePolicy policy_1; + QSqlForm BookDataBrowserForm; + +/* + * Constructs a EditBookForm which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' + * + * The dialog will by default be modeless, unless you set 'modal' to + * true to construct a modal dialog. + */ +EditBookForm( QWidget parent, String name, boolean modal, int fl ) +{ + super( parent, name, modal, fl ); + if ( name == null ) + setName( "EditBookForm" ); + resize( 524, 371 ); + setCaption( trUtf8( "Edit Books" ) ); + EditBookFormLayout = new QVBoxLayout( this ); + EditBookFormLayout.setSpacing( 6 ); + EditBookFormLayout.setMargin( 11 ); + + BookDataBrowser = new QDataBrowser( this, "BookDataBrowser" ); + BookDataBrowserLayout = new QGridLayout( BookDataBrowser ); + BookDataBrowser.setSort( new String[] { "title ASC" } ); + BookDataBrowserLayout.setSpacing( 6 ); + BookDataBrowserLayout.setMargin( 11 ); + + Layout2 = new QGridLayout(); + Layout2.setSpacing( 6 ); + Layout2.setMargin( 0 ); + + labelPrice = new QLabel( BookDataBrowser, "labelPrice" ); + labelPrice.setText( trUtf8( "Price" ) ); + + Layout2.addWidget( labelPrice, 1, 0 ); + + labelTitle = new QLabel( BookDataBrowser, "labelTitle" ); + labelTitle.setText( trUtf8( "Title" ) ); + + Layout2.addWidget( labelTitle, 0, 0 ); + + QLineEditTitle = new QLineEdit( BookDataBrowser, "QLineEditTitle" ); + + Layout2.addWidget( QLineEditTitle, 0, 1 ); + + QLineEditPrice = new QLineEdit( BookDataBrowser, "QLineEditPrice" ); + + Layout2.addWidget( QLineEditPrice, 1, 1 ); + + BookDataBrowserLayout.addLayout( Layout2, 0, 0 ); + + Layout6 = new QHBoxLayout(); + Layout6.setSpacing( 6 ); + Layout6.setMargin( 0 ); + + PushButtonInsert = new QPushButton( BookDataBrowser, "PushButtonInsert" ); + PushButtonInsert.setText( trUtf8( "&Insert" ) ); + Layout6.addWidget( PushButtonInsert ); + + PushButtonUpdate = new QPushButton( BookDataBrowser, "PushButtonUpdate" ); + PushButtonUpdate.setText( trUtf8( "&Update" ) ); + PushButtonUpdate.setDefault( true ); + Layout6.addWidget( PushButtonUpdate ); + + PushButtonDelete = new QPushButton( BookDataBrowser, "PushButtonDelete" ); + PushButtonDelete.setText( trUtf8( "&Delete" ) ); + Layout6.addWidget( PushButtonDelete ); + + PushButtonClose = new QPushButton( BookDataBrowser, "PushButtonClose" ); + PushButtonClose.setText( trUtf8( "&Close" ) ); + Layout6.addWidget( PushButtonClose ); + + BookDataBrowserLayout.addLayout( Layout6, 3, 0 ); + + Layout3 = new QHBoxLayout(); + Layout3.setSpacing( 6 ); + Layout3.setMargin( 0 ); + + PushButtonFirst = new QPushButton( BookDataBrowser, "PushButtonFirst" ); + PushButtonFirst.setText( trUtf8( "|< &First" ) ); + Layout3.addWidget( PushButtonFirst ); + + PushButtonPrev = new QPushButton( BookDataBrowser, "PushButtonPrev" ); + PushButtonPrev.setText( trUtf8( "<< &Prev" ) ); + Layout3.addWidget( PushButtonPrev ); + + PushButtonNext = new QPushButton( BookDataBrowser, "PushButtonNext" ); + PushButtonNext.setText( trUtf8( "&Next >>" ) ); + Layout3.addWidget( PushButtonNext ); + + PushButtonLast = new QPushButton( BookDataBrowser, "PushButtonLast" ); + PushButtonLast.setText( trUtf8( "&Last >|" ) ); + Layout3.addWidget( PushButtonLast ); + + BookDataBrowserLayout.addLayout( Layout3, 2, 0 ); + + Layout6_2 = new QHBoxLayout(); + Layout6_2.setSpacing( 6 ); + Layout6_2.setMargin( 0 ); + + TextLabel1 = new QLabel( BookDataBrowser, "TextLabel1" ); + TextLabel1.setText( trUtf8( "Author" ) ); + Layout6_2.addWidget( TextLabel1 ); + + ComboBoxAuthor = new QComboBox( false, BookDataBrowser, "ComboBoxAuthor" ); + policy_1 = new QSizePolicy( (int)7, (int)0, ComboBoxAuthor.sizePolicy().hasHeightForWidth() ); + ComboBoxAuthor.setSizePolicy( policy_1 ); + Layout6_2.addWidget( ComboBoxAuthor ); + + BookDataBrowserLayout.addLayout( Layout6_2, 1, 0 ); + EditBookFormLayout.addWidget( BookDataBrowser ); + + // database support + BookDataBrowserForm = new QSqlForm( this, "BookDataBrowserForm" ); + BookDataBrowserForm.insert( QLineEditTitle, "title" ); + BookDataBrowserForm.insert( QLineEditPrice, "price" ); + BookDataBrowser.setForm( BookDataBrowserForm ); + + + + + + // signals and slots connections + connect( PushButtonFirst, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "first()" ) ); + connect( BookDataBrowser, SIGNAL( "firstRecordAvailable( boolean )" ), PushButtonFirst, SLOT( "setEnabled(boolean)" ) ); + connect( PushButtonPrev, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "prev()" ) ); + connect( BookDataBrowser, SIGNAL( "prevRecordAvailable( boolean )" ), PushButtonPrev, SLOT( "setEnabled(boolean)" ) ); + connect( PushButtonNext, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "next()" ) ); + connect( BookDataBrowser, SIGNAL( "nextRecordAvailable( boolean )" ), PushButtonNext, SLOT( "setEnabled(boolean)" ) ); + connect( PushButtonLast, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "last()" ) ); + connect( BookDataBrowser, SIGNAL( "lastRecordAvailable( boolean )" ), PushButtonLast, SLOT( "setEnabled(boolean)" ) ); + connect( PushButtonInsert, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "insert()" ) ); + connect( PushButtonUpdate, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "update()" ) ); + connect( PushButtonDelete, SIGNAL( "clicked()" ), BookDataBrowser, SLOT( "del()" ) ); + connect( PushButtonClose, SIGNAL( "clicked()" ), this, SLOT( "accept()" ) ); + connect( BookDataBrowser, SIGNAL( "primeUpdate(QSqlRecord)" ), this, SLOT( "primeUpdateBook(QSqlRecord)" ) ); + connect( BookDataBrowser, SIGNAL( "beforeUpdate(QSqlRecord)" ), this, SLOT( "beforeUpdateBook(QSqlRecord)" ) ); + connect( BookDataBrowser, SIGNAL( "beforeInsert(QSqlRecord)" ), this, SLOT( "beforeUpdateBook(QSqlRecord)" ) ); + connect( BookDataBrowser, SIGNAL( "primeInsert(QSqlRecord)" ), this, SLOT( "primeInsertBook(QSqlRecord)" ) ); + connect( BookDataBrowser, SIGNAL( "primeInsert(QSqlRecord)" ), this, SLOT( "primeInsertBook(QSqlRecord)" ) ); + + // tab order + setTabOrder( QLineEditTitle, QLineEditPrice ); + setTabOrder( QLineEditPrice, ComboBoxAuthor ); + setTabOrder( ComboBoxAuthor, PushButtonFirst ); + setTabOrder( PushButtonFirst, PushButtonPrev ); + setTabOrder( PushButtonPrev, PushButtonNext ); + setTabOrder( PushButtonNext, PushButtonLast ); + setTabOrder( PushButtonLast, PushButtonInsert ); + setTabOrder( PushButtonInsert, PushButtonUpdate ); + setTabOrder( PushButtonUpdate, PushButtonDelete ); + setTabOrder( PushButtonDelete, PushButtonClose ); + init(); +} + +/* + * Widget polish. Reimplemented to handle + * default data browser initialization + */ +public void polish() +{ + if ( BookDataBrowser != null ) { + if ( BookDataBrowser.sqlCursor() == null ) { + QSqlCursor cursor = new QSqlCursor( "book" ); + BookDataBrowser.setSqlCursor( cursor, true ); + BookDataBrowser.refresh(); + BookDataBrowser.first(); + } + } + super.polish(); +} + +void beforeUpdateBook(QSqlRecord buffer) +{ + int[] id = { 0 }; + mapAuthor( ComboBoxAuthor.currentText(), id, false ); + buffer.setValue( "authorid", new QVariant(id[0]) ); +} + +void mapAuthor(String name, int[] id, boolean populate) +{ +// if ( populate ) +// authorMap[ name ] = id; +// else +// id[0] = authorMap[ name ]; +} + +void primeInsertBook(QSqlRecord buffer) +{ + QSqlQuery q = new QSqlQuery(); + q.exec( "UPDATE sequence SET sequence = sequence + 1 WHERE tablename='book';" ); + q.exec( "SELECT sequence FROM sequence WHERE tablename='book';" ); + if ( q.next() ) { + buffer.setValue( "id", q.value( 0 ) ); + } +} + +void primeUpdateBook(QSqlRecord buffer) +{ + // Who is this book's author? + QSqlQuery query = new QSqlQuery( "SELECT surname FROM author WHERE id=" + + buffer.value( "authorid" ).toString() + ";" ); + String author = ""; + if ( query.next() ) + author = query.value( 0 ).toString(); + // Set the ComboBox to the right author + for ( int i = 0; i < ComboBoxAuthor.count(); i++ ) { + if ( ComboBoxAuthor.text( i ) == author ) { + ComboBoxAuthor.setCurrentItem( i ) ; + break; + } + } +} + +void init() +{ + authorMap = new HashMap(); + QSqlQuery query = new QSqlQuery( "SELECT surname, id FROM author ORDER BY surname;" ); + while ( query.next() ) { + ComboBoxAuthor.insertItem( query.value( 0 ).toString() ); + int[] id = new int[1]; + id[0] = query.value( 1 ).toInt(); + mapAuthor( query.value( 0 ).toString(), id, true ); + } +} + +public void destroy() +{ +} + +} |