kexi

kexidbfieldlist.cpp
1/***************************************************************************
2 * kexidbfieldlist.cpp
3 * This file is part of the KDE project
4 * copyright (C)2004-2005 by Sebastian Sauer (mail@dipe.org)
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
14 * You should have received a copy of the GNU Library General Public License
15 * along with this program; see the file COPYING. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18 ***************************************************************************/
19
20#include "kexidbfieldlist.h"
21#include "kexidbfield.h"
22
23#include <api/variant.h>
24#include <api/exception.h>
25
26#include <kdebug.h>
27
28using namespace Kross::KexiDB;
29
30KexiDBFieldList::KexiDBFieldList(::KexiDB::FieldList* fieldlist)
31 : Kross::Api::Class<KexiDBFieldList>("KexiDBFieldList")
32 , m_fieldlist(fieldlist)
33{
34 this->addFunction0< Kross::Api::Variant >("fieldCount", this, &KexiDBFieldList::fieldCount);
35 this->addFunction1< KexiDBField, Kross::Api::Variant >("field", this, &KexiDBFieldList::field);
36 this->addFunction1< KexiDBField, Kross::Api::Variant >("fieldByName", this, &KexiDBFieldList::fieldByName);
37
38 this->addFunction0< Kross::Api::List >("fields", this, &KexiDBFieldList::fields);
39
40 this->addFunction1< Kross::Api::Variant, KexiDBField >("hasField", this, &KexiDBFieldList::hasField);
41 this->addFunction0< Kross::Api::Variant >("names", this, &KexiDBFieldList::names);
42
43 this->addFunction1< void, KexiDBField >("addField", this, &KexiDBFieldList::addField);
44 this->addFunction2< void, Kross::Api::Variant, KexiDBField >("insertField", this, &KexiDBFieldList::insertField);
45 this->addFunction1< void, KexiDBField >("removeField", this, &KexiDBFieldList::removeField);
46 this->addFunction0< void >("clear", this, &KexiDBFieldList::clear);
47 this->addFunction1< void, KexiDBFieldList >("setFields", this, &KexiDBFieldList::setFields);
48
49 this->addFunction1< KexiDBFieldList, Kross::Api::Variant >("subList", this, &KexiDBFieldList::subList);
50}
51
52KexiDBFieldList::~KexiDBFieldList()
53{
54}
55
56const TQString KexiDBFieldList::getClassName() const
57{
58 return "Kross::KexiDB::KexiDBFieldList";
59}
60
61uint KexiDBFieldList::fieldCount() {
62 return m_fieldlist->fieldCount();
63}
64
65KexiDBField* KexiDBFieldList::field(uint index) {
66 ::KexiDB::Field* field = m_fieldlist->field(index);
67 return field ? new KexiDBField(field) : 0;
68}
69
70KexiDBField* KexiDBFieldList::fieldByName(const TQString& name) {
71 ::KexiDB::Field* field = m_fieldlist->field(name);
72 return field ? new KexiDBField(field) : 0;
73}
74
75Kross::Api::List* KexiDBFieldList::fields() {
76 return new Kross::Api::ListT<KexiDBField>( *m_fieldlist->fields() );
77}
78
79bool KexiDBFieldList::hasField(KexiDBField* field) { return m_fieldlist->hasField( field->field() ); }
80const TQStringList KexiDBFieldList::names() const { return m_fieldlist->names(); }
81void KexiDBFieldList::addField(KexiDBField* field) { m_fieldlist->addField( field->field() ); }
82void KexiDBFieldList::insertField(uint index, KexiDBField* field) { m_fieldlist->insertField(index, field->field()); }
83void KexiDBFieldList::removeField(KexiDBField* field) { m_fieldlist->removeField( field->field() ); }
84void KexiDBFieldList::clear() { m_fieldlist->clear(); }
85
86void KexiDBFieldList::setFields(KexiDBFieldList* fieldlist) {
87 m_fieldlist->clear();
88 ::KexiDB::FieldList* fl = fieldlist->fieldlist();
89 for(::KexiDB::Field::ListIterator it = *fl->fields(); it.current(); ++it)
90 m_fieldlist->addField( it.current() );
91}
92
93KexiDBFieldList* KexiDBFieldList::subList(TQValueList<TQVariant> list) {
94 TQValueList<TQVariant>::ConstIterator it( list.constBegin() ), end( list.constEnd() );
95 TQStringList sl;
96 for(; it != end; ++it) sl.append( (*it).toString() );
97 ::KexiDB::FieldList* fl = m_fieldlist->subList(sl);
98 return fl ? new Kross::KexiDB::KexiDBFieldList(fl) : 0;
99}
100
FieldList * subList(const TQString &n1, const TQString &n2=TQString(), const TQString &n3=TQString(), const TQString &n4=TQString(), const TQString &n5=TQString(), const TQString &n6=TQString(), const TQString &n7=TQString(), const TQString &n8=TQString(), const TQString &n9=TQString(), const TQString &n10=TQString(), const TQString &n11=TQString(), const TQString &n12=TQString(), const TQString &n13=TQString(), const TQString &n14=TQString(), const TQString &n15=TQString(), const TQString &n16=TQString(), const TQString &n17=TQString(), const TQString &n18=TQString())
TQPtrListIterator< Field > ListIterator
iterator for list of fields
Definition field.h:77
A field in a record.
Definition kexidbfield.h:38
KrossKexiDB provides access to the KexiDB database functionality.