Initial datatype helpers for text fields

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/entities/Conversation.java | 30 +++
1 file changed, 30 insertions(+)

Detailed changes

src/main/java/eu/siacs/conversations/entities/Conversation.java 🔗

@@ -4,6 +4,7 @@ import android.content.ContentValues;
 import android.database.Cursor;
 import android.net.Uri;
 import android.text.Editable;
+import android.text.InputType;
 import android.text.TextUtils;
 import android.text.TextWatcher;
 import android.view.LayoutInflater;
@@ -1400,6 +1401,35 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
                         mValue = field.addChild("value", "jabber:x:data");
                     }
                     binding.textinput.setText(mValue.getContent());
+
+                    binding.textinput.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT);
+                    Element validate = field.findChild("validate", "http://jabber.org/protocol/xdata-validate");
+                    if (validate == null) return;
+                    String datatype = validate.getAttribute("datatype");
+
+                    if (datatype.equals("xs:integer") || datatype.equals("xs:int") || datatype.equals("xs:long") || datatype.equals("xs:short") || datatype.equals("xs:byte")) {
+                        binding.textinput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED);
+                    }
+
+                    if (datatype.equals("xs:decimal") || datatype.equals("xs:double")) {
+                        binding.textinput.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED | InputType.TYPE_NUMBER_FLAG_DECIMAL);
+                    }
+
+                    if (datatype.equals("xs:date")) {
+                        binding.textinput.setInputType(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE);
+                    }
+
+                    if (datatype.equals("xs:dateTime")) {
+                        binding.textinput.setInputType(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_NORMAL);
+                    }
+
+                    if (datatype.equals("xs:time")) {
+                        binding.textinput.setInputType(InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME);
+                    }
+
+                    if (datatype.equals("xs:anyURI")) {
+                        binding.textinput.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI);
+                    }
                 }
 
                 @Override