Change summary
src/main/java/eu/siacs/conversations/entities/Conversation.java | 33 ++
1 file changed, 27 insertions(+), 6 deletions(-)
Detailed changes
@@ -2184,11 +2184,11 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
super(binding);
binding.textinput.addTextChangedListener(this);
}
- protected Element mValue = null;
+ protected Field field = null;
@Override
public void bind(Item item) {
- Field field = (Field) item;
+ field = (Field) item;
binding.textinputLayout.setHint(field.getLabel().or(""));
binding.textinputLayout.setHelperTextEnabled(field.getDesc().isPresent());
@@ -2211,16 +2211,15 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
String prefixLabel = field.el.findChildContent("x", "https://ns.cheogram.com/prefix-label");
binding.textinputLayout.setPrefixText(prefixLabel == null ? "" : prefixLabel);
- mValue = field.getValue();
- binding.textinput.setText(mValue.getContent());
+ binding.textinput.setText(String.join("\n", field.getValues()));
setupInputType(field.el, binding.textinput, binding.textinputLayout);
}
@Override
public void afterTextChanged(Editable s) {
- if (mValue == null) return;
+ if (field == null) return;
- mValue.setContent(s.toString());
+ field.setValues(List.of(s.toString().split("\n")));
}
@Override
@@ -2347,6 +2346,28 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
return value;
}
+ public void setValues(List<String> values) {
+ for(Element child : el.getChildren()) {
+ if ("value".equals(child.getName()) && "jabber:x:data".equals(child.getNamespace())) {
+ el.removeChild(child);
+ }
+ }
+
+ for (String value : values) {
+ el.addChild("value", "jabber:x:data").setContent(value);
+ }
+ }
+
+ public List<String> getValues() {
+ List<String> values = new ArrayList<>();
+ for(Element child : el.getChildren()) {
+ if ("value".equals(child.getName()) && "jabber:x:data".equals(child.getNamespace())) {
+ values.add(child.getContent());
+ }
+ }
+ return values;
+ }
+
public List<Option> getOptions() {
return Option.forField(el);
}