show values in formfieldwrappers and allow form to be set to read only
This commit is contained in:
		
							parent
							
								
									edc6ce4ff2
								
							
						
					
					
						commit
						d2c5a939ed
					
				|  | @ -39,6 +39,15 @@ public class FormBooleanFieldWrapper extends FormFieldWrapper { | ||||||
| 		return values; | 		return values; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	@Override | ||||||
|  | 	protected void setValues(List<String> values) { | ||||||
|  | 		if (values.size() == 0) { | ||||||
|  | 			checkBox.setChecked(false); | ||||||
|  | 		} else { | ||||||
|  | 			checkBox.setChecked(Boolean.parseBoolean(values.get(0))); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public boolean validates() { | 	public boolean validates() { | ||||||
| 		if (checkBox.isChecked() || !field.isRequired()) { | 		if (checkBox.isChecked() || !field.isRequired()) { | ||||||
|  | @ -63,4 +72,9 @@ public class FormBooleanFieldWrapper extends FormFieldWrapper { | ||||||
| 	protected int getLayoutResource() { | 	protected int getLayoutResource() { | ||||||
| 		return R.layout.form_boolean; | 		return R.layout.form_boolean; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	void setReadOnly(boolean readOnly) { | ||||||
|  | 		checkBox.setEnabled(!readOnly); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -45,10 +45,14 @@ public abstract class FormFieldWrapper { | ||||||
| 
 | 
 | ||||||
| 	abstract List<String> getValues(); | 	abstract List<String> getValues(); | ||||||
| 
 | 
 | ||||||
|  | 	protected abstract void setValues(List<String> values); | ||||||
|  | 
 | ||||||
| 	abstract boolean validates(); | 	abstract boolean validates(); | ||||||
| 
 | 
 | ||||||
| 	abstract protected int getLayoutResource(); | 	abstract protected int getLayoutResource(); | ||||||
| 
 | 
 | ||||||
|  | 	abstract void setReadOnly(boolean readOnly); | ||||||
|  | 
 | ||||||
| 	protected SpannableString createSpannableLabelString(String label, boolean required) { | 	protected SpannableString createSpannableLabelString(String label, boolean required) { | ||||||
| 		SpannableString spannableString = new SpannableString(label + (required ? " *" : "")); | 		SpannableString spannableString = new SpannableString(label + (required ? " *" : "")); | ||||||
| 		if (required) { | 		if (required) { | ||||||
|  | @ -61,11 +65,8 @@ public abstract class FormFieldWrapper { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	protected void invokeOnFormFieldValuesEdited() { | 	protected void invokeOnFormFieldValuesEdited() { | ||||||
| 		Log.d(Config.LOGTAG, "invoke on form field values edited"); |  | ||||||
| 		if (this.onFormFieldValuesEditedListener != null) { | 		if (this.onFormFieldValuesEditedListener != null) { | ||||||
| 			this.onFormFieldValuesEditedListener.onFormFieldValuesEdited(); | 			this.onFormFieldValuesEditedListener.onFormFieldValuesEdited(); | ||||||
| 		} else { |  | ||||||
| 			Log.d(Config.LOGTAG,"listener is null"); |  | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -79,7 +80,9 @@ public abstract class FormFieldWrapper { | ||||||
| 
 | 
 | ||||||
| 	protected static <F extends FormFieldWrapper> FormFieldWrapper createFromField(Class<F> c, Context context, Field field) { | 	protected static <F extends FormFieldWrapper> FormFieldWrapper createFromField(Class<F> c, Context context, Field field) { | ||||||
| 		try { | 		try { | ||||||
| 			return c.getDeclaredConstructor(Context.class, Field.class).newInstance(context,field); | 			F fieldWrapper = c.getDeclaredConstructor(Context.class, Field.class).newInstance(context,field); | ||||||
|  | 			fieldWrapper.setValues(field.getValues()); | ||||||
|  | 			return fieldWrapper; | ||||||
| 		} catch (Exception e) { | 		} catch (Exception e) { | ||||||
| 			e.printStackTrace(); | 			e.printStackTrace(); | ||||||
| 			return null; | 			return null; | ||||||
|  |  | ||||||
|  | @ -3,6 +3,8 @@ package eu.siacs.conversations.ui.forms; | ||||||
| import android.content.Context; | import android.content.Context; | ||||||
| import android.text.InputType; | import android.text.InputType; | ||||||
| 
 | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
| import eu.siacs.conversations.R; | import eu.siacs.conversations.R; | ||||||
| import eu.siacs.conversations.xmpp.forms.Field; | import eu.siacs.conversations.xmpp.forms.Field; | ||||||
| import eu.siacs.conversations.xmpp.jid.InvalidJidException; | import eu.siacs.conversations.xmpp.jid.InvalidJidException; | ||||||
|  | @ -30,4 +32,13 @@ public class FormJidSingleFieldWrapper extends FormTextFieldWrapper { | ||||||
| 		} | 		} | ||||||
| 		return super.validates(); | 		return super.validates(); | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	protected void setValues(List<String> values) { | ||||||
|  | 		StringBuilder builder = new StringBuilder(""); | ||||||
|  | 		for(String value : values) { | ||||||
|  | 			builder.append(value); | ||||||
|  | 		} | ||||||
|  | 		editText.setText(builder.toString()); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -62,6 +62,18 @@ public class FormTextFieldWrapper extends FormFieldWrapper { | ||||||
| 		return values; | 		return values; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	@Override | ||||||
|  | 	protected void setValues(List<String> values) { | ||||||
|  | 		StringBuilder builder = new StringBuilder(""); | ||||||
|  | 		for(int i = 0; i < values.size(); ++i) { | ||||||
|  | 			builder.append(values.get(i)); | ||||||
|  | 			if (i < values.size() - 1 && "text-multi".equals(field.getType())) { | ||||||
|  | 				builder.append("\n"); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		editText.setText(builder.toString()); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public boolean validates() { | 	public boolean validates() { | ||||||
| 		if (getValue().trim().length() > 0 || !field.isRequired()) { | 		if (getValue().trim().length() > 0 || !field.isRequired()) { | ||||||
|  | @ -77,4 +89,9 @@ public class FormTextFieldWrapper extends FormFieldWrapper { | ||||||
| 	protected int getLayoutResource() { | 	protected int getLayoutResource() { | ||||||
| 		return R.layout.form_text; | 		return R.layout.form_text; | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	@Override | ||||||
|  | 	void setReadOnly(boolean readOnly) { | ||||||
|  | 		editText.setEnabled(!readOnly); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -52,6 +52,12 @@ public class FormWrapper { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	public void setReadOnly(boolean b) { | ||||||
|  | 		for(FormFieldWrapper fieldWrapper : fieldWrappers) { | ||||||
|  | 			fieldWrapper.setReadOnly(b); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	public boolean edited() { | 	public boolean edited() { | ||||||
| 		boolean edited = false; | 		boolean edited = false; | ||||||
| 		for(FormFieldWrapper fieldWrapper : fieldWrappers) { | 		for(FormFieldWrapper fieldWrapper : fieldWrappers) { | ||||||
|  |  | ||||||
|  | @ -53,16 +53,16 @@ public class Data extends Element { | ||||||
| 
 | 
 | ||||||
| 	public void submit() { | 	public void submit() { | ||||||
| 		this.setAttribute("type","submit"); | 		this.setAttribute("type","submit"); | ||||||
| 		removeNonFieldChildren(); | 		removeUnnecessaryChildren(); | ||||||
| 		for(Field field : getFields()) { | 		for(Field field : getFields()) { | ||||||
| 			field.removeNonValueChildren(); | 			field.removeNonValueChildren(); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private void removeNonFieldChildren() { | 	private void removeUnnecessaryChildren() { | ||||||
| 		for(Iterator<Element> iterator = this.children.iterator(); iterator.hasNext();) { | 		for(Iterator<Element> iterator = this.children.iterator(); iterator.hasNext();) { | ||||||
| 			Element element = iterator.next(); | 			Element element = iterator.next(); | ||||||
| 			if (!element.getName().equals("field")) { | 			if (!element.getName().equals("field") && !element.getName().equals("title")) { | ||||||
| 				iterator.remove(); | 				iterator.remove(); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Daniel Gultsch
						Daniel Gultsch