summaryrefslogtreecommitdiffstats
path: root/tools/designer/examples/book/book8
diff options
context:
space:
mode:
Diffstat (limited to 'tools/designer/examples/book/book8')
-rw-r--r--tools/designer/examples/book/book8/book.ui189
-rw-r--r--tools/designer/examples/book/book8/book.ui.h33
-rw-r--r--tools/designer/examples/book/book8/book8.pro7
-rw-r--r--tools/designer/examples/book/book8/editbook.ui386
-rw-r--r--tools/designer/examples/book/book8/editbook.ui.h47
-rw-r--r--tools/designer/examples/book/book8/main.cpp27
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>&amp;Edit Books</string>
+ </property>
+ </widget>
+ <widget class="TQPushButton">
+ <property name="name">
+ <cstring>QuitPushButton</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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&lt;TQString,int&gt; 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>&amp;Insert</string>
+ </property>
+ </widget>
+ <widget class="TQPushButton">
+ <property name="name">
+ <cstring>PushButtonUpdate</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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>&amp;Delete</string>
+ </property>
+ </widget>
+ <widget class="TQPushButton">
+ <property name="name">
+ <cstring>PushButtonClose</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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>|&lt; &amp;First</string>
+ </property>
+ </widget>
+ <widget class="TQPushButton">
+ <property name="name">
+ <cstring>PushButtonPrev</cstring>
+ </property>
+ <property name="text">
+ <string>&lt;&lt; &amp;Prev</string>
+ </property>
+ </widget>
+ <widget class="TQPushButton">
+ <property name="name">
+ <cstring>PushButtonNext</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Next &gt;&gt;</string>
+ </property>
+ </widget>
+ <widget class="TQPushButton">
+ <property name="name">
+ <cstring>PushButtonLast</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Last &gt;|</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 &amp; name, int &amp; 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();
+}