00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef DATAFORMFIELDCONTAINER_H__
00015 #define DATAFORMFIELDCONTAINER_H__
00016
00017 #include "dataformfield.h"
00018
00019 #include <string>
00020 #include <list>
00021
00022 namespace gloox
00023 {
00024
00025 class DataFormField;
00026
00035 class GLOOX_API DataFormFieldContainer
00036 {
00037 public:
00041 DataFormFieldContainer();
00042
00047 DataFormFieldContainer( const DataFormFieldContainer& dffc );
00048
00052 virtual ~DataFormFieldContainer();
00053
00057 typedef std::list<DataFormField*> FieldList;
00058
00064 bool hasField( const std::string& field ) const
00065 { return DataFormFieldContainer::field( field ) != 0; }
00066
00073 DataFormField* field( const std::string& field ) const;
00074
00079 FieldList& fields() { return m_fields; }
00080
00085 const FieldList& fields() const { return m_fields; }
00086
00092 virtual void setFields( FieldList& fields ) { m_fields = fields; }
00093
00099 virtual void addField( DataFormField* field ) { m_fields.push_back( field ); }
00100
00109 DataFormField* addField( DataFormField::FieldType type, const std::string& name,
00110 const std::string& value = EmptyString,
00111 const std::string& label = EmptyString )
00112 {
00113 DataFormField* field = new DataFormField( name, value, label, type );
00114 m_fields.push_back( field );
00115 return field;
00116 }
00117
00118 protected:
00119 FieldList m_fields;
00120
00121 };
00122
00123 }
00124
00125 #endif // DATAFORMFIELDCONTAINER_H__