gloox 1.0.28
dataformfield.h
1/*
2 Copyright (c) 2005-2023 by Jakob Schröter <js@camaya.net>
3 This file is part of the gloox library. http://camaya.net/gloox
4
5 This software is distributed under a license. The full license
6 agreement can be found in the file LICENSE in this distribution.
7 This software may not be copied, modified, sold or distributed
8 other than expressed in the named license agreement.
9
10 This software is distributed without any warranty.
11*/
12
13
14#ifndef DATAFORMFIELD_H__
15#define DATAFORMFIELD_H__
16
17#include "gloox.h"
18
19#include <utility>
20#include <string>
21
22namespace gloox
23{
24
25 class Tag;
26
33 class GLOOX_API DataFormField
34 {
35
36 public:
41 {
42 TypeBoolean,
44 TypeFixed,
49 TypeHidden,
51 TypeJidMulti,
53 TypeJidSingle,
55 TypeListMulti,
57 TypeListSingle,
59 TypeTextMulti,
61 TypeTextPrivate,
64 TypeTextSingle,
68 TypeNone,
72 };
73
74 public:
75
80 DataFormField( FieldType type = TypeTextSingle );
81
90 DataFormField( const std::string& name, const std::string& value = EmptyString,
91 const std::string& label = EmptyString, FieldType type = TypeTextSingle );
92
97 DataFormField( const Tag* tag );
98
102 virtual ~DataFormField();
103
108 const StringMultiMap& options() const { return m_options; }
109
116 virtual Tag* tag() const;
117
122 const std::string& name() const { return m_name; }
123
130 void setName( const std::string& name ) { m_name = name; }
131
138 void setOptions( const StringMultiMap& options ) { m_options = options; }
139
146 void addOption( const std::string& label, const std::string& value )
147 { m_options.insert( std::make_pair( label, value ) ); }
148
153 bool required() const { return m_required; }
154
159 void setRequired( bool required ) { m_required = required; }
160
165 const std::string& label() const { return m_label; }
166
171 void setLabel( const std::string& label ) { m_label = label; }
172
177 const std::string& description() const { return m_desc; }
178
183 void setDescription( const std::string& desc ) { m_desc = desc; }
184
189 const std::string& value() const { return ( m_values.size() > 0 ) ? m_values.front() : EmptyString; }
190
195 void setValue( const std::string& value ) { m_values.clear(); addValue( value ); }
196
201 const StringList& values() const { return m_values; }
202
208 void setValues( const StringList& values ) { m_values = values; }
209
214 void addValue( const std::string& value ) { m_values.push_back( value ); }
215
220 FieldType type() const { return m_type; }
221
225 operator bool() const { return m_type != TypeInvalid; }
226
227 private:
228 FieldType m_type;
229
230 StringMultiMap m_options;
231 StringList m_values;
232
233 std::string m_name;
234 std::string m_desc;
235 std::string m_label;
236
237 bool m_required;
238 };
239
240}
241
242#endif // DATAFORMFIELD_H__
An abstraction of a single field in a XEP-0004 Data Form.
void setDescription(const std::string &desc)
const std::string & name() const
FieldType type() const
void setOptions(const StringMultiMap &options)
const StringMultiMap & options() const
void addOption(const std::string &label, const std::string &value)
const std::string & label() const
void addValue(const std::string &value)
const std::string & value() const
void setRequired(bool required)
void setLabel(const std::string &label)
void setName(const std::string &name)
const std::string & description() const
void setValues(const StringList &values)
void setValue(const std::string &value)
const StringList & values() const
This is an abstraction of an XML element.
Definition tag.h:47
The namespace for the gloox library.
Definition adhoc.cpp:28
std::multimap< std::string, std::string > StringMultiMap
Definition gloox.h:1266
std::list< std::string > StringList
Definition gloox.h:1251
const std::string EmptyString
Definition gloox.cpp:124
@ TypeInvalid
Definition dataform.h:44