summaryrefslogtreecommitdiffstats
path: root/kode/kwsdl/kung/inputfield.h
diff options
context:
space:
mode:
Diffstat (limited to 'kode/kwsdl/kung/inputfield.h')
-rw-r--r--kode/kwsdl/kung/inputfield.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/kode/kwsdl/kung/inputfield.h b/kode/kwsdl/kung/inputfield.h
new file mode 100644
index 00000000..71030bda
--- /dev/null
+++ b/kode/kwsdl/kung/inputfield.h
@@ -0,0 +1,146 @@
+/*
+ This file is part of Kung.
+
+ Copyright (c) 2005 Tobias Koenig <tokoe@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef INPUTFIELD_H
+#define INPUTFIELD_H
+
+#include <qdom.h>
+#include <qobject.h>
+#include <qstring.h>
+#include <qvaluelist.h>
+
+class QWidget;
+
+namespace Schema {
+class SimpleType;
+class ComplexType;
+}
+
+/**
+ Abstract base class for all kinds of input fields.
+ */
+class InputField : public QObject
+{
+ Q_OBJECT
+
+ public:
+ typedef QValueList<InputField*> List;
+
+ /**
+ Constructs a input field.
+ */
+ InputField( const QString &name );
+
+ /**
+ Destructor.
+ */
+ virtual ~InputField();
+
+ /**
+ Returns the name of the field.
+ */
+ QString name() const;
+
+ /**
+ Sets the xml data of this field.
+ */
+ virtual void setXMLData( const QDomElement &element ) = 0;
+
+ /**
+ Returns the xml value of this field.
+ */
+ virtual void xmlData( QDomDocument &document, QDomElement &parent ) = 0;
+
+ /**
+ Sets the plain data of this field as string.
+ */
+ virtual void setData( const QString &data ) = 0;
+
+ /**
+ Returns the data of this field as string.
+ */
+ virtual QString data() const = 0;
+
+ /**
+ Returns a pointer to a new created input widget which can be used to
+ to modify the value.
+ */
+ virtual QWidget *createWidget( QWidget *parent ) = 0;
+
+ /**
+ Add a child field.
+ */
+ virtual void appendChild( InputField *field );
+
+ /**
+ Removes a child field.
+ */
+ virtual void removeChild( InputField *field );
+
+ /**
+ Returns a field with the given name or 0 when no field with this name
+ exists.
+ */
+ virtual InputField *childField( const QString &name ) const;
+
+ /**
+ Returns a list of all child fields.
+ */
+ virtual InputField::List childFields() const;
+
+ signals:
+ /**
+ This signal is emitted whenever the value is changed by the user.
+ */
+ void modified();
+
+ protected:
+ QString mName;
+ InputField::List mFields;
+};
+
+/**
+ Abstract base class for simple input fields like text or number input.
+ */
+class SimpleInputField : public InputField
+{
+ public:
+ SimpleInputField( const QString &name, const Schema::SimpleType *type );
+ ~SimpleInputField();
+
+ protected:
+ Schema::SimpleType *mType;
+};
+
+/**
+ Abstract base class for complex input fields like pages, lists or tables.
+ */
+class ComplexInputField : public InputField
+{
+ public:
+ ComplexInputField( const QString &name, const Schema::ComplexType *type );
+ ~ComplexInputField();
+
+ protected:
+ Schema::ComplexType *mType;
+};
+
+#endif