44 const std::string&
type =
tag->findAttribute(
TYPE );
47 if( !tag->name().empty() )
51 m_type =
static_cast<FieldType>( util::lookup(
type, fieldTypeValues ) );
53 if(
tag->hasAttribute(
"var" ) )
54 m_name =
tag->findAttribute(
"var" );
56 if(
tag->hasAttribute(
"label" ) )
57 m_label =
tag->findAttribute(
"label" );
60 TagList::const_iterator it = l.begin();
61 for( ; it != l.end(); ++it )
63 if( (*it)->name() ==
"desc" )
64 m_desc = (*it)->cdata();
65 else if( (*it)->name() ==
"required" )
67 else if( (*it)->name() ==
"value" )
69 if( m_type == TypeTextMulti || m_type == TypeListMulti || m_type == TypeJidMulti )
70 addValue( (*it)->cdata() );
72 setValue( (*it)->cdata() );
74 else if( (*it)->name() ==
"option" )
76 Tag* v = (*it)->findChild(
"value" );
78 m_options.insert( std::make_pair( (*it)->findAttribute(
"label" ), v->cdata() ) );
93 Tag* field =
new Tag(
"field" );
98 new Tag( field,
"required" );
100 if( !m_desc.empty() )
101 new Tag( field,
"desc", m_desc );
105 StringMultiMap::const_iterator it = m_options.begin();
106 for( ; it != m_options.end(); ++it )
108 Tag* option =
new Tag( field,
"option",
"label", (*it).first );
109 new Tag( option,
"value", (*it).second );
114 if( m_values.size() == 0 || m_values.front() ==
"false" || m_values.front() ==
"0" )
115 new Tag( field,
"value",
"0" );
117 new Tag( field,
"value",
"1" );
122 StringList::const_iterator it = m_values.begin();
123 for( ; it != m_values.end() ; ++it )
124 new Tag( field,
"value", (*it) );
129 new Tag( field,
"value", m_values.front() );