From 1f1d0d93139df17cd3b07c1db39b0f6a4792cca2 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Tue, 7 Jun 2022 19:02:27 -0500 Subject: [PATCH] Initial datatype helpers for text fields --- .../conversations/entities/Conversation.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index 67f3ccf70ebdcc640e853c77023fc44230b88762..c79685df5806334eb560ba658aaafef971f0800b 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/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