From a32db865c13126df9dc676425f0f7b7a3fe5dea9 Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Sun, 24 Apr 2011 21:51:51 +0100
Subject: Set untyped fields to Text-Single.

XEP-0004 gives a default field type of Text-Single where none is specified.

diff --git a/Swift/QtUI/QtFormWidget.cpp b/Swift/QtUI/QtFormWidget.cpp
index 659fb25..050ff27 100644
--- a/Swift/QtUI/QtFormWidget.cpp
+++ b/Swift/QtUI/QtFormWidget.cpp
@@ -129,9 +129,6 @@ QWidget* QtFormWidget::createWidget(FormField::ref field) {
 	if (listMultiField) {
 		widget = createList(field);
 	}
-	boost::shared_ptr<UntypedFormField> untypedField = boost::dynamic_pointer_cast<UntypedFormField>(field);
-	if (untypedField) {
-	}
 	boost::shared_ptr<HiddenFormField> hiddenField = boost::dynamic_pointer_cast<HiddenFormField>(field);
 	if (hiddenField) {
 	}
@@ -232,9 +229,6 @@ Form::ref QtFormWidget::getCompletedForm() {
 			}
 			resultField = FormField::ref(ListMultiFormField::create(values));
 		}
-		boost::shared_ptr<UntypedFormField> untypedField = boost::dynamic_pointer_cast<UntypedFormField>(field);
-		if (untypedField) {
-		}
 		boost::shared_ptr<HiddenFormField> hiddenField = boost::dynamic_pointer_cast<HiddenFormField>(field);
 		if (hiddenField) {
 			resultField = FormField::ref(HiddenFormField::create(hiddenField->getValue()));
diff --git a/Swiften/Elements/FormField.h b/Swiften/Elements/FormField.h
index 35e05ac..2438bb3 100644
--- a/Swiften/Elements/FormField.h
+++ b/Swiften/Elements/FormField.h
@@ -111,5 +111,4 @@ namespace Swift {
 	SWIFTEN_DECLARE_FORM_FIELD(JIDSingle, JID);
 	SWIFTEN_DECLARE_FORM_FIELD(JIDMulti, std::vector<JID>);
 	SWIFTEN_DECLARE_FORM_FIELD(ListMulti, std::vector<std::string>);
-	SWIFTEN_DECLARE_FORM_FIELD(Untyped, std::vector<std::string>);
 }
diff --git a/Swiften/Parser/PayloadParsers/FormParser.cpp b/Swiften/Parser/PayloadParsers/FormParser.cpp
index f8e02a4..72449b8 100644
--- a/Swiften/Parser/PayloadParsers/FormParser.cpp
+++ b/Swiften/Parser/PayloadParsers/FormParser.cpp
@@ -63,12 +63,9 @@ void FormParser::handleStartElement(const std::string& element, const std::strin
 			else if (type == "text-private") {
 				currentFieldParseHelper_ = TextPrivateFormFieldParseHelper::create();
 			}
-			else if (type == "text-single") {
+			else /*if (type == "text-single") || undefined */ {
 				currentFieldParseHelper_ = TextSingleFormFieldParseHelper::create();
 			}
-			else {
-				currentFieldParseHelper_ = UntypedFormFieldParseHelper::create();
-			}
 			if (currentFieldParseHelper_) {
 				currentFieldParseHelper_->getField()->setName(attributes.getAttribute("var"));
 				currentFieldParseHelper_->getField()->setLabel(attributes.getAttribute("label"));
diff --git a/Swiften/Parser/PayloadParsers/FormParser.h b/Swiften/Parser/PayloadParsers/FormParser.h
index 90a3550..e6e6ec0 100644
--- a/Swiften/Parser/PayloadParsers/FormParser.h
+++ b/Swiften/Parser/PayloadParsers/FormParser.h
@@ -96,7 +96,6 @@ namespace Swift {
 			SWIFTEN_DECLARE_FORM_FIELD_PARSE_HELPER(JIDSingle, JID);
 			SWIFTEN_DECLARE_FORM_FIELD_PARSE_HELPER(JIDMulti, JIDList);
 			SWIFTEN_DECLARE_FORM_FIELD_PARSE_HELPER(ListMulti, StringList);
-			SWIFTEN_DECLARE_FORM_FIELD_PARSE_HELPER(Untyped, StringList);
 
 			enum Level { 
 				TopLevel = 0, 
diff --git a/Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp b/Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp
index 6ec825b..7feada1 100644
--- a/Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp
+++ b/Swiften/Parser/PayloadParsers/UnitTest/FormParserTest.cpp
@@ -77,7 +77,6 @@ class FormParserTest : public CppUnit::TestFixture {
 						"</field>"
 						"<field var=\"untyped\">"
 							"<value>foo</value>"
-							"<value>baz</value>"
 						"</field>"
 					"</x>"));
 
@@ -114,8 +113,7 @@ class FormParserTest : public CppUnit::TestFixture {
 			CPPUNIT_ASSERT_EQUAL(JID("baz@fum.org"), boost::dynamic_pointer_cast<JIDMultiFormField>(payload->getFields()[8])->getValue()[1]);
 			CPPUNIT_ASSERT_EQUAL(std::string("Tell all your friends about your new bot!"), payload->getFields()[8]->getDescription());
 
-			CPPUNIT_ASSERT_EQUAL(std::string("foo"), boost::dynamic_pointer_cast<UntypedFormField>(payload->getFields()[9])->getValue()[0]);
-			CPPUNIT_ASSERT_EQUAL(std::string("baz"), boost::dynamic_pointer_cast<UntypedFormField>(payload->getFields()[9])->getValue()[1]);
+			CPPUNIT_ASSERT_EQUAL(std::string("foo"), boost::dynamic_pointer_cast<TextSingleFormField>(payload->getFields()[9])->getValue());
 		}
 };
 
diff --git a/Swiften/Serializer/PayloadSerializers/FormSerializer.cpp b/Swiften/Serializer/PayloadSerializers/FormSerializer.cpp
index 53b4241..51cb90f 100644
--- a/Swiften/Serializer/PayloadSerializers/FormSerializer.cpp
+++ b/Swiften/Serializer/PayloadSerializers/FormSerializer.cpp
@@ -129,14 +129,6 @@ boost::shared_ptr<XMLElement> FormSerializer::fieldToXML(boost::shared_ptr<FormF
 		fieldType = "text-multi";
 		multiLineify(boost::dynamic_pointer_cast<TextMultiFormField>(field)->getValue(), "value", fieldElement);
 	}
-	else if (boost::dynamic_pointer_cast<UntypedFormField>(field)) {
-		std::vector<std::string> lines = boost::dynamic_pointer_cast<UntypedFormField>(field)->getValue();
-		foreach(const std::string& line, lines) {
-			boost::shared_ptr<XMLElement> valueElement(new XMLElement("value"));
-			valueElement->addNode(XMLTextNode::create(line));
-			fieldElement->addNode(valueElement);
-		}
-	}
 	else {
 		assert(false);
 	}
diff --git a/Swiften/Serializer/PayloadSerializers/UnitTest/FormSerializerTest.cpp b/Swiften/Serializer/PayloadSerializers/UnitTest/FormSerializerTest.cpp
index e4a6661..5b52c0a 100644
--- a/Swiften/Serializer/PayloadSerializers/UnitTest/FormSerializerTest.cpp
+++ b/Swiften/Serializer/PayloadSerializers/UnitTest/FormSerializerTest.cpp
@@ -96,13 +96,6 @@ class FormSerializerTest : public CppUnit::TestFixture {
 			field->setDescription("Tell all your friends about your new bot!");
 			form->addField(field);
 
-			std::vector<std::string> values2;
-			values2.push_back("foo");
-			values2.push_back("bar");
-			field = UntypedFormField::create(values2);
-			field->setName("fum");
-			form->addField(field);
-
 			CPPUNIT_ASSERT_EQUAL(std::string(
 				"<x type=\"form\" xmlns=\"jabber:x:data\">"
 						"<field type=\"hidden\" var=\"FORM_TYPE\">"
@@ -139,10 +132,6 @@ class FormSerializerTest : public CppUnit::TestFixture {
 							"<value>foo@bar.com</value>"
 							"<value>baz@fum.org</value>"
 						"</field>"
-						"<field var=\"fum\">"
-							"<value>foo</value>"
-							"<value>bar</value>"
-						"</field>"
 					"</x>"), testling.serialize(form));
 		}
 };
-- 
cgit v0.10.2-6-g49f6