diff options
Diffstat (limited to 'tqtinterface/qt4/src/sql/tqsqlpropertymap.cpp')
-rw-r--r-- | tqtinterface/qt4/src/sql/tqsqlpropertymap.cpp | 304 |
1 files changed, 0 insertions, 304 deletions
diff --git a/tqtinterface/qt4/src/sql/tqsqlpropertymap.cpp b/tqtinterface/qt4/src/sql/tqsqlpropertymap.cpp deleted file mode 100644 index d1498d9..0000000 --- a/tqtinterface/qt4/src/sql/tqsqlpropertymap.cpp +++ /dev/null @@ -1,304 +0,0 @@ -/**************************************************************************** -** -** Definition of TQSqlPropertyMap class -** -** Created : 2000-11-20 -** -** Copyright (C) 2005-2008 Trolltech ASA. All rights reserved. -** -** This file is part of the sql module of the TQt GUI Toolkit. -** -** 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 TQt 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. -** -** This file may be used under the terms of the Q Public License as -** defined by Trolltech ASA and appearing in the file LICENSE.TQPL -** included in the packaging of this file. Licensees holding valid TQt -** Commercial licenses may use this file in accordance with the TQt -** 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 "tqsqlpropertymap.h" - -#ifndef TQT_NO_STQL_FORM - -#include "tqwidget.h" -#include "tqcleanuphandler.h" -#include "tqmetaobject.h" -#include "tqmap.h" - -class TQSqlPropertyMapPrivate -{ -public: - TQSqlPropertyMapPrivate() {} - TQMap< TQString, TQString > propertyMap; -}; - -/*! - \class TQSqlPropertyMap tqsqlpropertymap.h - \brief The TQSqlPropertyMap class is used to map widgets to SQL fields. - - \ingroup database - \module sql - - The SQL module uses TQt \link properties.html object - properties\endlink to insert and extract values from editor - widgets. - - This class is used to map editors to SQL fields. This works by - associating SQL editor class names to the properties used to - insert and extract values to/from the editor. - - For example, a TQLineEdit can be used to edit text strings and - other data types in TQDataTables or TQSqlForms. Several properties - are defined in TQLineEdit, but only the \e text property is used to - insert and extract text from a TQLineEdit. Both TQDataTable and - TQSqlForm use the global TQSqlPropertyMap for inserting and - extracting values to and from an editor widget. The global - property map defines several common widgets and properties that - are suitable for many applications. You can add and remove widget - properties to suit your specific needs. - - If you want to use custom editors with your TQDataTable or - TQSqlForm, you must install your own TQSqlPropertyMap for that table - or form. Example: - - \code - TQSqlPropertyMap *myMap = new TQSqlPropertyMap(); - TQSqlForm *myForm = new TQSqlForm( this ); - MyEditor myEditor( this ); - - // Set the TQSqlForm's record buffer to the update buffer of - // a pre-existing TQSqlCursor called 'cur'. - myForm->setRecord( cur->primeUpdate() ); - - // Install the customized map - myMap->insert( "MyEditor", "content" ); - myForm->installPropertyMap( myMap ); // myForm now owns myMap - ... - // Insert a field into the form that uses a myEditor to edit the - // field 'somefield' - myForm->insert( &myEditor, "somefield" ); - - // Update myEditor with the value from the mapped database field - myForm->readFields(); - ... - // Let the user edit the form - ... - // Update the database fields with the values in the form - myForm->writeFields(); - ... - \endcode - - You can also replace the global TQSqlPropertyMap that is used by - default. (Bear in mind that TQSqlPropertyMap takes ownership of the - new default map.) - - \code - TQSqlPropertyMap *myMap = new TQSqlPropertyMap; - - myMap->insert( "MyEditor", "content" ); - TQSqlPropertyMap::installDefaultMap( myMap ); - ... - \endcode - - \sa TQDataTable, TQSqlForm, TQSqlEditorFactory -*/ - -/*! - -Constructs a TQSqlPropertyMap. - -The default property mappings used by TQt widgets are: -\table -\header \i Widgets \i Property -\row \i \l TQCheckBox, - \l TQRadioButton - \i checked -\row \i \l TQComboBox, - \l TQListBox - \i currentItem -\row \i \l TQDateEdit - \i date -\row \i \l TQDateTimeEdit - \i dateTime -\row \i \l TQTextBrowser - \i source -\row \i \l TQButton, - \l TQDial, - \l TQLabel, - \l TQLineEdit, - \l TQMultiLineEdit, - \l TQPushButton, - \l TQTextEdit, - \i text -\row \i \l TQTimeEdit - \i time -\row \i \l TQLCDNumber, - \l TQScrollBar - \l TQSlider, - \l TQSpinBox - \i value -\endtable -*/ - -TQSqlPropertyMap::TQSqlPropertyMap() -{ - d = new TQSqlPropertyMapPrivate(); - const struct MapData { - const char *classname; - const char *property; - } mapData[] = { - { "TQButton", "text" }, - { "TQCheckBox", "checked" }, - { "TQRadioButton", "checked" }, - { "TQComboBox", "currentItem" }, - { "TQDateEdit", "date" }, - { "TQDateTimeEdit", "dateTime" }, - { "TQDial", "value" }, - { "TQLabel", "text" }, - { "TQLCDNumber", "value" }, - { "TQLineEdit", "text" }, - { "TQListBox", "currentItem" }, - { "TQMultiLineEdit", "text" }, - { "TQPushButton", "text" }, - { "TQScrollBar", "value" }, - { "TQSlider", "value" }, - { "TQSpinBox", "value" }, - { "TQTextBrowser", "source" }, - { "TQTextEdit", "text" }, - { "TQTextView", "text" }, - { "TQTimeEdit", "time" } - }; - - const MapData *m = mapData; - for ( uint i = 0; i < sizeof(mapData)/sizeof(MapData); i++, m++ ) - d->propertyMap.insert( m->classname, m->property ); -} - -/*! - Destroys the TQSqlPropertyMap. - - Note that if the TQSqlPropertyMap is installed with - installPropertyMap() the object it was installed into, e.g. the - TQSqlForm, takes ownership and will delete the TQSqlPropertyMap when - necessary. -*/ -TQSqlPropertyMap::~TQSqlPropertyMap() -{ - delete d; -} - -/*! - Returns the mapped property of \a widget as a TQVariant. -*/ -TQVariant TQSqlPropertyMap::property( TQWidget * widget ) -{ - if( !widget ) return TQVariant(); - const QMetaObject* mo = widget->metaObject(); - while ( mo && !d->propertyMap.contains( TQString( mo->className() ) ) ) - mo = mo->superClass(); - - if ( !mo ) { -#ifdef TQT_CHECK_RANGE - qWarning("TQSqlPropertyMap::property: %s does not exist", widget->metaObject()->className() ); -#endif - return TQVariant(); - } - return TQT_TQVARIANT_OBJECT(widget->property( d->propertyMap[ mo->className() ] )); -} - -/*! - Sets the property of \a widget to \a value. -*/ -void TQSqlPropertyMap::setProperty( TQWidget * widget, const TQVariant & value ) -{ - if( !widget ) return; - - QMetaObject* mo = const_cast<QMetaObject*>(widget->metaObject()); - while ( mo && !d->propertyMap.contains( TQString( mo->className() ) ) ) - mo = const_cast<QMetaObject*>(mo->superClass()); - if ( !mo ) { -#ifdef TQT_CHECK_RANGE - qWarning("TQSqlPropertyMap::setProperty: %s not handled by TQSqlPropertyMap", widget->metaObject()->className() ); -#endif - return; - } - - widget->setProperty( d->propertyMap[ mo->className() ], value ); -} - -/*! - Insert a new classname/property pair, which is used for custom SQL - field editors. There \e must be a \c Q_PROPERTY clause in the \a - classname class declaration for the \a property. -*/ -void TQSqlPropertyMap::insert( const TQString & classname, - const TQString & property ) -{ - d->propertyMap[ classname ] = property; -} - -/*! - Removes \a classname from the map. -*/ -void TQSqlPropertyMap::remove( const TQString & classname ) -{ - d->propertyMap.remove( classname ); -} - -static TQSqlPropertyMap * defaultmap = 0; -static TQCleanupHandler< TQSqlPropertyMap > qsql_cleanup_property_map; - -/*! - Returns the application global TQSqlPropertyMap. -*/ -TQSqlPropertyMap * TQSqlPropertyMap::defaultMap() -{ - if( defaultmap == 0 ){ - defaultmap = new TQSqlPropertyMap(); - qsql_cleanup_property_map.add( &defaultmap ); - } - return defaultmap; -} - -/*! - Replaces the global default property map with \a map. All - TQDataTable and TQSqlForm instantiations will use this new map for - inserting and extracting values to and from editors. - \e{TQSqlPropertyMap takes ownership of \a map, and destroys it - when it is no longer needed.} -*/ -void TQSqlPropertyMap::installDefaultMap( TQSqlPropertyMap * map ) -{ - if( map == 0 ) return; - - if( defaultmap != 0 ){ - qsql_cleanup_property_map.remove( &defaultmap ); - delete defaultmap; - } - defaultmap = map; - qsql_cleanup_property_map.add( &defaultmap ); -} - -#endif // TQT_NO_STQL_FORM |