From 71cc9678340456f09b7acaee4f36bfeb9bc369d8 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Wed, 22 Jun 2022 14:04:36 -0500 Subject: [PATCH] DRY up common patterns for fields --- .../conversations/entities/Conversation.java | 171 ++++++++---------- 1 file changed, 71 insertions(+), 100 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index 22027a0da..1a6c23664 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -50,6 +50,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.ListIterator; +import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import eu.siacs.conversations.Config; @@ -1343,6 +1344,15 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl abstract public void bind(Item el); + protected void setTextOrHide(TextView v, Optional s) { + if (s == null || !s.isPresent()) { + v.setVisibility(View.GONE); + } else { + v.setVisibility(View.VISIBLE); + v.setText(s.get()); + } + } + protected void setupInputType(Element field, TextView textinput, TextInputLayout layout) { int flags = 0; if (layout != null) layout.setEndIconMode(TextInputLayout.END_ICON_NONE); @@ -1440,23 +1450,10 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl public ResultFieldViewHolder(CommandResultFieldBinding binding) { super(binding); } @Override - public void bind(Item field) { - String label = field.el.getAttribute("label"); - if (label == null) label = field.el.getAttribute("var"); - if (label == null) { - binding.label.setVisibility(View.GONE); - } else { - binding.label.setVisibility(View.VISIBLE); - binding.label.setText(label); - } - - String desc = field.el.findChildContent("desc", "jabber:x:data"); - if (desc == null) { - binding.desc.setVisibility(View.GONE); - } else { - binding.desc.setVisibility(View.VISIBLE); - binding.desc.setText(desc); - } + public void bind(Item item) { + Field field = (Field) item; + setTextOrHide(binding.label, field.getLabel()); + setTextOrHide(binding.desc, field.getDesc()); ArrayAdapter values = new ArrayAdapter(binding.getRoot().getContext(), R.layout.simple_list_item); for (Element el : field.el.getChildren()) { @@ -1480,8 +1477,8 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl public ResultCellViewHolder(CommandResultCellBinding binding) { super(binding); } @Override - public void bind(Item field) { - Cell cell = (Cell) field; + public void bind(Item item) { + Cell cell = (Cell) item; if (cell.el == null) { binding.text.setTextAppearance(binding.getRoot().getContext(), R.style.TextAppearance_Conversations_Subhead); @@ -1504,25 +1501,11 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl protected Element mValue = null; @Override - public void bind(Item field) { - String label = field.el.getAttribute("label"); - if (label == null) label = field.el.getAttribute("var"); - if (label == null) label = ""; - binding.label.setText(label); - - String desc = field.el.findChildContent("desc", "jabber:x:data"); - if (desc == null) { - binding.desc.setVisibility(View.GONE); - } else { - binding.desc.setVisibility(View.VISIBLE); - binding.desc.setText(desc); - } - - mValue = field.el.findChild("value", "jabber:x:data"); - if (mValue == null) { - mValue = field.el.addChild("value", "jabber:x:data"); - } - + public void bind(Item item) { + Field field = (Field) item; + binding.label.setText(field.getLabel().orElse("")); + setTextOrHide(binding.desc, field.getDesc()); + mValue = field.getValue(); binding.checkbox.setChecked(mValue.getContent() != null && (mValue.getContent().equals("true") || mValue.getContent().equals("1"))); } @@ -1553,28 +1536,12 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl protected ArrayAdapter