FormBooleanFieldWrapper.java

 1package eu.siacs.conversations.ui.forms;
 2
 3import android.content.Context;
 4import android.widget.CheckBox;
 5import android.widget.CompoundButton;
 6
 7import java.util.ArrayList;
 8import java.util.List;
 9
10import eu.siacs.conversations.R;
11import eu.siacs.conversations.xmpp.forms.Field;
12
13public class FormBooleanFieldWrapper extends FormFieldWrapper {
14
15	protected CheckBox checkBox;
16
17	protected FormBooleanFieldWrapper(Context context, Field field) {
18		super(context, field);
19		checkBox = (CheckBox) view.findViewById(R.id.field);
20		checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
21			@Override
22			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
23				checkBox.setError(null);
24				invokeOnFormFieldValuesEdited();
25			}
26		});
27	}
28
29	@Override
30	protected void setLabel(String label, boolean required) {
31		CheckBox checkBox = (CheckBox) view.findViewById(R.id.field);
32		checkBox.setText(createSpannableLabelString(label, required));
33	}
34
35	@Override
36	public List<String> getValues() {
37		List<String> values = new ArrayList<>();
38		values.add(Boolean.toString(checkBox.isChecked()));
39		return values;
40	}
41
42	@Override
43	public boolean validates() {
44		if (checkBox.isChecked() || !field.isRequired()) {
45			return true;
46		} else {
47			checkBox.setError(context.getString(R.string.this_field_is_required));
48			checkBox.requestFocus();
49			return false;
50		}
51	}
52
53	@Override
54	public boolean edited() {
55		if (field.getValues().size() == 0) {
56			return checkBox.isChecked();
57		} else {
58			return super.edited();
59		}
60	}
61
62	@Override
63	protected int getLayoutResource() {
64		return R.layout.form_boolean;
65	}
66}