FormWrapper.java

 1package eu.siacs.conversations.ui.forms;
 2
 3import android.content.Context;
 4import android.widget.LinearLayout;
 5
 6import java.util.ArrayList;
 7import java.util.List;
 8
 9import eu.siacs.conversations.xmpp.forms.Data;
10import eu.siacs.conversations.xmpp.forms.Field;
11
12public class FormWrapper {
13
14	private final LinearLayout layout;
15
16	private final Data form;
17
18	private final List<FormFieldWrapper> fieldWrappers = new ArrayList<>();
19
20	private FormWrapper(Context context, LinearLayout linearLayout, Data form) {
21		this.form = form;
22		this.layout = linearLayout;
23		this.layout.removeAllViews();
24		for(Field field : form.getFields()) {
25			FormFieldWrapper fieldWrapper = FormFieldFactory.createFromField(context,field);
26			if (fieldWrapper != null) {
27				layout.addView(fieldWrapper.getView());
28				fieldWrappers.add(fieldWrapper);
29			}
30		}
31	}
32
33	public Data submit() {
34		for(FormFieldWrapper fieldWrapper : fieldWrappers) {
35			fieldWrapper.submit();
36		}
37		this.form.submit();
38		return this.form;
39	}
40
41	public boolean validates() {
42		boolean validates = true;
43		for(FormFieldWrapper fieldWrapper : fieldWrappers) {
44			validates &= fieldWrapper.validates();
45		}
46		return validates;
47	}
48
49	public void setOnFormFieldValuesEditedListener(FormFieldWrapper.OnFormFieldValuesEdited listener) {
50		for(FormFieldWrapper fieldWrapper : fieldWrappers) {
51			fieldWrapper.setOnFormFieldValuesEditedListener(listener);
52		}
53	}
54
55	public void setReadOnly(boolean b) {
56		for(FormFieldWrapper fieldWrapper : fieldWrappers) {
57			fieldWrapper.setReadOnly(b);
58		}
59	}
60
61	public boolean edited() {
62		boolean edited = false;
63		for(FormFieldWrapper fieldWrapper : fieldWrappers) {
64			edited |= fieldWrapper.edited();
65		}
66		return edited;
67	}
68
69	public static FormWrapper createInLayout(Context context, LinearLayout layout, Data form) {
70		return new FormWrapper(context, layout, form);
71	}
72}