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
00086 virtual void setFields( FieldList& fields ) { m_fields = fields; }
00087
00093 virtual void addField( DataFormField* field ) { m_fields.push_back( field ); }
00094
00103 DataFormField* addField( DataFormField::FieldType type, const std::string& name,
00104 const std::string& value = EmptyString,
00105 const std::string& label = EmptyString )
00106 {
00107 DataFormField* field = new DataFormField( name, value, label, type );
00108 m_fields.push_back( field );
00109 return field;
00110 }
00111
00112 protected:
00113 FieldList m_fields;
00114
00115 };
00116
00117 }
00118
00119 #endif // DATAFORMFIELDCONTAINER_H__