diff options
Diffstat (limited to 'tools/designer/examples/book/book8')
-rw-r--r-- | tools/designer/examples/book/book8/book.ui | 189 | ||||
-rw-r--r-- | tools/designer/examples/book/book8/book.ui.h | 33 | ||||
-rw-r--r-- | tools/designer/examples/book/book8/book8.pro | 7 | ||||
-rw-r--r-- | tools/designer/examples/book/book8/editbook.ui | 386 | ||||
-rw-r--r-- | tools/designer/examples/book/book8/editbook.ui.h | 47 | ||||
-rw-r--r-- | tools/designer/examples/book/book8/main.cpp | 27 |
6 files changed, 689 insertions, 0 deletions
diff --git a/tools/designer/examples/book/book8/book.ui b/tools/designer/examples/book/book8/book.ui new file mode 100644 index 000000000..faea95188 --- /dev/null +++ b/tools/designer/examples/book/book8/book.ui @@ -0,0 +1,189 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>BookForm</class> +<include location="global" impldecl="in declaration">qsqlrecord.h</include> +<include location="local" impldecl="in declaration">editbook.h</include> +<include location="global" impldecl="in declaration">qdatabrowser.h</include> +<include location="local" implDecl="in declaration">book.ui.h</include> +<layoutdefaults spacing="6" margin="11"/> +<widget class="TQDialog"> + <property name="name"> + <cstring>BookForm</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>490</width> + <height>504</height> + </rect> + </property> + <property name="caption"> + <string>Book</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="TQSplitter"> + <property name="name"> + <cstring>Splitter1</cstring> + </property> + <property name="frameShape"> + <enum>MShape</enum> + </property> + <property name="frameShadow"> + <enum>MShadow</enum> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <widget class="TQDataTable"> + <column> + <property name="text"> + <string>Surname</string> + </property> + <property name="field"> + <string>surname</string> + </property> + </column> + <column> + <property name="text"> + <string>Forename</string> + </property> + <property name="field"> + <string>forename</string> + </property> + </column> + <property name="name"> + <cstring>AuthorDataTable</cstring> + </property> + <property name="confirmDelete"> + <bool>true</bool> + </property> + <property name="sort"> + <stringlist> + <string>surname ASC</string> + <string>forename ASC</string> + </stringlist> + </property> + <property name="database" stdset="0"> + <stringlist> + <string>(default)</string> + <string>author</string> + </stringlist> + </property> + </widget> + <widget class="TQDataTable"> + <column> + <property name="text"> + <string>Title</string> + </property> + <property name="field"> + <string>title</string> + </property> + </column> + <column> + <property name="text"> + <string>Price</string> + </property> + <property name="field"> + <string>price</string> + </property> + </column> + <column> + <property name="text"> + <string>Notes</string> + </property> + <property name="field"> + <string>notes</string> + </property> + </column> + <property name="name"> + <cstring>BookDataTable</cstring> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + <property name="sort"> + <stringlist> + <string>title ASC</string> + </stringlist> + </property> + <property name="database" stdset="0"> + <stringlist> + <string>(default)</string> + <string>book</string> + </stringlist> + </property> + </widget> + </widget> + <widget class="TQLayoutWidget"> + <property name="name"> + <cstring>Layout5</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="TQPushButton"> + <property name="name"> + <cstring>EditPushButton</cstring> + </property> + <property name="text"> + <string>&Edit Books</string> + </property> + </widget> + <widget class="TQPushButton"> + <property name="name"> + <cstring>QuitPushButton</cstring> + </property> + <property name="text"> + <string>&Quit</string> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<connections> + <connection language="C++"> + <sender>QuitPushButton</sender> + <signal>clicked()</signal> + <receiver>BookForm</receiver> + <slot>accept()</slot> + </connection> + <connection language="C++"> + <sender>EditPushButton</sender> + <signal>clicked()</signal> + <receiver>BookForm</receiver> + <slot>editClicked()</slot> + </connection> + <connection language="C++"> + <sender>AuthorDataTable</sender> + <signal>primeInsert(TQSqlRecord*)</signal> + <receiver>BookForm</receiver> + <slot>primeInsertAuthor(TQSqlRecord*)</slot> + </connection> + <connection language="C++"> + <sender>AuthorDataTable</sender> + <signal>currentChanged(TQSqlRecord*)</signal> + <receiver>BookForm</receiver> + <slot>newCurrentAuthor(TQSqlRecord*)</slot> + </connection> + <slot access="public" specifier="virtual" language="C++" returnType="void">editClicked()</slot> + <slot access="public" specifier="virtual" language="C++" returnType="void">newCurrentAuthor( TQSqlRecord * author )</slot> + <slot access="public" specifier="virtual" language="C++" returnType="void">primeInsertAuthor( TQSqlRecord * buffer )</slot> +</connections> +</UI> diff --git a/tools/designer/examples/book/book8/book.ui.h b/tools/designer/examples/book/book8/book.ui.h new file mode 100644 index 000000000..24bb69c4f --- /dev/null +++ b/tools/designer/examples/book/book8/book.ui.h @@ -0,0 +1,33 @@ +void BookForm::editClicked() +{ + EditBookForm *dialog = new EditBookForm( this, "Edit Book Form", TRUE ); + TQSqlCursor cur( "book" ); + dialog->BookDataBrowser->setSqlCursor( &cur ); + dialog->BookDataBrowser->setFilter( BookDataTable->filter() ); + dialog->BookDataBrowser->setSort(TQSqlIndex::fromStringList( + BookDataTable->sort(), &cur ) ); + dialog->BookDataBrowser->refresh(); + int i = BookDataTable->currentRow(); + if ( i == -1 ) i = 0; // Always use the first row + dialog->BookDataBrowser->seek( i ); + dialog->exec(); + delete dialog; + BookDataTable->refresh(); +} + +void BookForm::newCurrentAuthor( TQSqlRecord *author ) +{ + BookDataTable->setFilter( "authorid=" + author->value( "id" ).toString() ); + BookDataTable->refresh(); +} + +void BookForm::primeInsertAuthor( TQSqlRecord *buffer ) +{ + TQSqlQuery q; + q.exec( "UPDATE sequence SET sequence = sequence + 1 WHERE tablename='author';" ); + q.exec( "SELECT sequence FROM sequence WHERE tablename='author';" ); + if ( q.next() ) { + buffer->setValue( "id", q.value( 0 ) ); + } +} + diff --git a/tools/designer/examples/book/book8/book8.pro b/tools/designer/examples/book/book8/book8.pro new file mode 100644 index 000000000..e4bdf75a6 --- /dev/null +++ b/tools/designer/examples/book/book8/book8.pro @@ -0,0 +1,7 @@ +TEMPLATE = app +LANGUAGE = C++ + +SOURCES += main.cpp ../connection.cpp +FORMS = book.ui editbook.ui +CONFIG += qt warn_on release +DBFILE = book.db diff --git a/tools/designer/examples/book/book8/editbook.ui b/tools/designer/examples/book/book8/editbook.ui new file mode 100644 index 000000000..b16d789d2 --- /dev/null +++ b/tools/designer/examples/book/book8/editbook.ui @@ -0,0 +1,386 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>EditBookForm</class> +<include location="global" impldecl="in declaration">qsqlrecord.h</include> +<include location="local" implDecl="in declaration">editbook.ui.h</include> +<forward>class TQSqlRecord;</forward> +<variable>TQMap<TQString,int> authorMap;</variable> +<layoutdefaults spacing="6" margin="11"/> +<widget class="TQDialog"> + <property name="name"> + <cstring>EditBookForm</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>520</width> + <height>369</height> + </rect> + </property> + <property name="caption"> + <string>Edit Books</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="TQDataBrowser"> + <property name="name"> + <cstring>BookDataBrowser</cstring> + </property> + <property name="sort"> + <stringlist> + <string>title ASC</string> + </stringlist> + </property> + <property name="database" stdset="0"> + <stringlist> + <string>(default)</string> + <string>book</string> + </stringlist> + </property> + <property name="frameworkCode" stdset="0"> + <bool>true</bool> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="TQLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>Layout2</cstring> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="TQLabel" row="1" column="0"> + <property name="name"> + <cstring>labelPrice</cstring> + </property> + <property name="text"> + <string>Price</string> + </property> + </widget> + <widget class="TQLabel" row="0" column="0"> + <property name="name"> + <cstring>labelTitle</cstring> + </property> + <property name="text"> + <string>Title</string> + </property> + </widget> + <widget class="TQLineEdit" row="0" column="1"> + <property name="name"> + <cstring>TQLineEditTitle</cstring> + </property> + <property name="database" stdset="0"> + <stringlist> + <string>(default)</string> + <string>book</string> + <string>title</string> + </stringlist> + </property> + </widget> + <widget class="TQLineEdit" row="1" column="1"> + <property name="name"> + <cstring>TQLineEditPrice</cstring> + </property> + <property name="database" stdset="0"> + <stringlist> + <string>(default)</string> + <string>book</string> + <string>price</string> + </stringlist> + </property> + </widget> + </grid> + </widget> + <widget class="TQLayoutWidget" row="3" column="0"> + <property name="name"> + <cstring>Layout6</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="TQPushButton"> + <property name="name"> + <cstring>PushButtonInsert</cstring> + </property> + <property name="text"> + <string>&Insert</string> + </property> + </widget> + <widget class="TQPushButton"> + <property name="name"> + <cstring>PushButtonUpdate</cstring> + </property> + <property name="text"> + <string>&Update</string> + </property> + <property name="default"> + <bool>true</bool> + </property> + </widget> + <widget class="TQPushButton"> + <property name="name"> + <cstring>PushButtonDelete</cstring> + </property> + <property name="text"> + <string>&Delete</string> + </property> + </widget> + <widget class="TQPushButton"> + <property name="name"> + <cstring>PushButtonClose</cstring> + </property> + <property name="text"> + <string>&Close</string> + </property> + </widget> + </hbox> + </widget> + <widget class="TQLayoutWidget" row="2" column="0"> + <property name="name"> + <cstring>Layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="TQPushButton"> + <property name="name"> + <cstring>PushButtonFirst</cstring> + </property> + <property name="text"> + <string>|< &First</string> + </property> + </widget> + <widget class="TQPushButton"> + <property name="name"> + <cstring>PushButtonPrev</cstring> + </property> + <property name="text"> + <string><< &Prev</string> + </property> + </widget> + <widget class="TQPushButton"> + <property name="name"> + <cstring>PushButtonNext</cstring> + </property> + <property name="text"> + <string>&Next >></string> + </property> + </widget> + <widget class="TQPushButton"> + <property name="name"> + <cstring>PushButtonLast</cstring> + </property> + <property name="text"> + <string>&Last >|</string> + </property> + </widget> + </hbox> + </widget> + <widget class="TQLayoutWidget" row="1" column="0"> + <property name="name"> + <cstring>Layout6</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="TQLabel"> + <property name="name"> + <cstring>TextLabel1</cstring> + </property> + <property name="text"> + <string>Author</string> + </property> + </widget> + <widget class="TQComboBox"> + <property name="name"> + <cstring>ComboBoxAuthor</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="database" stdset="0"> + <stringlist> + <string>(default)</string> + <string>author_view</string> + <string>name</string> + </stringlist> + </property> + </widget> + </hbox> + </widget> + </grid> + </widget> + </vbox> +</widget> +<connections> + <connection language="C++"> + <sender>PushButtonFirst</sender> + <signal>clicked()</signal> + <receiver>BookDataBrowser</receiver> + <slot>first()</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>firstRecordAvailable( bool )</signal> + <receiver>PushButtonFirst</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection language="C++"> + <sender>PushButtonPrev</sender> + <signal>clicked()</signal> + <receiver>BookDataBrowser</receiver> + <slot>prev()</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>prevRecordAvailable( bool )</signal> + <receiver>PushButtonPrev</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection language="C++"> + <sender>PushButtonNext</sender> + <signal>clicked()</signal> + <receiver>BookDataBrowser</receiver> + <slot>next()</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>nextRecordAvailable( bool )</signal> + <receiver>PushButtonNext</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection language="C++"> + <sender>PushButtonLast</sender> + <signal>clicked()</signal> + <receiver>BookDataBrowser</receiver> + <slot>last()</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>lastRecordAvailable( bool )</signal> + <receiver>PushButtonLast</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection language="C++"> + <sender>PushButtonInsert</sender> + <signal>clicked()</signal> + <receiver>BookDataBrowser</receiver> + <slot>insert()</slot> + </connection> + <connection language="C++"> + <sender>PushButtonUpdate</sender> + <signal>clicked()</signal> + <receiver>BookDataBrowser</receiver> + <slot>update()</slot> + </connection> + <connection language="C++"> + <sender>PushButtonDelete</sender> + <signal>clicked()</signal> + <receiver>BookDataBrowser</receiver> + <slot>del()</slot> + </connection> + <connection language="C++"> + <sender>PushButtonClose</sender> + <signal>clicked()</signal> + <receiver>EditBookForm</receiver> + <slot>accept()</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>primeUpdate(TQSqlRecord*)</signal> + <receiver>EditBookForm</receiver> + <slot>primeUpdateBook(TQSqlRecord*)</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>beforeUpdate(TQSqlRecord*)</signal> + <receiver>EditBookForm</receiver> + <slot>beforeUpdateBook(TQSqlRecord*)</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>beforeInsert(TQSqlRecord*)</signal> + <receiver>EditBookForm</receiver> + <slot>beforeUpdateBook(TQSqlRecord*)</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>primeInsert(TQSqlRecord*)</signal> + <receiver>EditBookForm</receiver> + <slot>primeInsertBook(TQSqlRecord*)</slot> + </connection> + <connection language="C++"> + <sender>BookDataBrowser</sender> + <signal>primeInsert(TQSqlRecord*)</signal> + <receiver>EditBookForm</receiver> + <slot>primeInsertBook(TQSqlRecord*)</slot> + </connection> + <slot access="protected" specifier="virtual" language="C++" returnType="void">init()</slot> + <slot access="public" specifier="virtual" language="C++" returnType="void">beforeUpdateBook( TQSqlRecord * buffer )</slot> + <slot access="public" specifier="virtual" language="C++" returnType="void">mapAuthor( const TQString & name, int & id, bool populate )</slot> + <slot access="public" specifier="virtual" language="C++" returnType="void">primeInsertBook( TQSqlRecord * buffer )</slot> + <slot access="public" specifier="virtual" language="C++" returnType="void">primeUpdateBook( TQSqlRecord * buffer )</slot> +</connections> +<tabstops> + <tabstop>TQLineEditTitle</tabstop> + <tabstop>TQLineEditPrice</tabstop> + <tabstop>ComboBoxAuthor</tabstop> + <tabstop>PushButtonFirst</tabstop> + <tabstop>PushButtonPrev</tabstop> + <tabstop>PushButtonNext</tabstop> + <tabstop>PushButtonLast</tabstop> + <tabstop>PushButtonInsert</tabstop> + <tabstop>PushButtonUpdate</tabstop> + <tabstop>PushButtonDelete</tabstop> + <tabstop>PushButtonClose</tabstop> +</tabstops> +</UI> diff --git a/tools/designer/examples/book/book8/editbook.ui.h b/tools/designer/examples/book/book8/editbook.ui.h new file mode 100644 index 000000000..45876fe71 --- /dev/null +++ b/tools/designer/examples/book/book8/editbook.ui.h @@ -0,0 +1,47 @@ +void EditBookForm::init() +{ + TQSqlQuery query( "SELECT surname, id FROM author ORDER BY surname;" ); + while ( query.next() ) { + ComboBoxAuthor->insertItem( query.value( 0 ).toString() ); + int id = query.value( 1 ).toInt(); + mapAuthor( query.value( 0 ).toString(), id, TRUE ); + } +} + +void EditBookForm::beforeUpdateBook( TQSqlRecord * buffer ) +{ + int id; + mapAuthor( ComboBoxAuthor->currentText(), id, FALSE ); + buffer->setValue( "authorid", id ); +} + +void EditBookForm::mapAuthor( const TQString & name, int & id, bool populate ) +{ + if ( populate ) + authorMap[ name ] = id; + else + id = authorMap[ name ]; +} + +void EditBookForm::primeInsertBook( TQSqlRecord * buffer ) +{ + TQSqlQuery q; + 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 EditBookForm::primeUpdateBook( TQSqlRecord * buffer ) +{ + int id = buffer->value( "authorid" ).toInt(); + for ( int i = 0; i < ComboBoxAuthor->count(); i++ ) { + TQString author = ComboBoxAuthor->text( i ); + if ( authorMap.contains( author ) && authorMap[author] == id ) { + ComboBoxAuthor->setCurrentItem( i ) ; + break; + } + } +} + diff --git a/tools/designer/examples/book/book8/main.cpp b/tools/designer/examples/book/book8/main.cpp new file mode 100644 index 000000000..cf3e80fd1 --- /dev/null +++ b/tools/designer/examples/book/book8/main.cpp @@ -0,0 +1,27 @@ +/**************************************************************************** +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for TQt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#include <qapplication.h> +#include <qsqldatabase.h> +#include "book.h" +#include "../connection.h" + +int main( int argc, char *argv[] ) +{ + TQApplication app( argc, argv ); + + if ( ! createConnections() ) + return 1; + + BookForm bookForm; + app.setMainWidget( &bookForm ); + bookForm.show(); + + return app.exec(); +} |