1package eu.siacs.conversations.ui.forms;
2
3import android.content.Context;
4import android.text.Editable;
5import android.text.InputType;
6import android.text.TextWatcher;
7import android.widget.EditText;
8import android.widget.TextView;
9
10import java.util.ArrayList;
11import java.util.List;
12
13import eu.siacs.conversations.R;
14import eu.siacs.conversations.xmpp.forms.Field;
15
16public class FormTextFieldWrapper extends FormFieldWrapper {
17
18 protected EditText editText;
19
20 protected FormTextFieldWrapper(Context context, Field field) {
21 super(context, field);
22 editText = (EditText) view.findViewById(R.id.field);
23 editText.setSingleLine(!"text-multi".equals(field.getType()));
24 if ("text-private".equals(field.getType())) {
25 editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
26 }
27 editText.addTextChangedListener(new TextWatcher() {
28 @Override
29 public void beforeTextChanged(CharSequence s, int start, int count, int after) {
30 }
31
32 @Override
33 public void onTextChanged(CharSequence s, int start, int before, int count) {
34 editText.setError(null);
35 invokeOnFormFieldValuesEdited();
36 }
37
38 @Override
39 public void afterTextChanged(Editable s) {
40 }
41 });
42 }
43
44 @Override
45 protected void setLabel(String label, boolean required) {
46 TextView textView = (TextView) view.findViewById(R.id.label);
47 textView.setText(createSpannableLabelString(label, required));
48 }
49
50 protected String getValue() {
51 return editText.getText().toString();
52 }
53
54 @Override
55 public List<String> getValues() {
56 List<String> values = new ArrayList<>();
57 for (String line : getValue().split("\\n")) {
58 if (line.length() > 0) {
59 values.add(line);
60 }
61 }
62 return values;
63 }
64
65 @Override
66 public boolean validates() {
67 if (getValue().trim().length() > 0 || !field.isRequired()) {
68 return true;
69 } else {
70 editText.setError(context.getString(R.string.this_field_is_required));
71 editText.requestFocus();
72 return false;
73 }
74 }
75
76 @Override
77 protected int getLayoutResource() {
78 return R.layout.form_text;
79 }
80}