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; | ||||
| 	} | ||||
| 
 | ||||
| 	@Override | ||||
| 	protected void setValues(List<String> values) { | ||||
| 		if (values.size() == 0) { | ||||
| 			checkBox.setChecked(false); | ||||
| 		} else { | ||||
| 			checkBox.setChecked(Boolean.parseBoolean(values.get(0))); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	@Override | ||||
| 	public boolean validates() { | ||||
| 		if (checkBox.isChecked() || !field.isRequired()) { | ||||
|  | @ -63,4 +72,9 @@ public class FormBooleanFieldWrapper extends FormFieldWrapper { | |||
| 	protected int getLayoutResource() { | ||||
| 		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(); | ||||
| 
 | ||||
| 	protected abstract void setValues(List<String> values); | ||||
| 
 | ||||
| 	abstract boolean validates(); | ||||
| 
 | ||||
| 	abstract protected int getLayoutResource(); | ||||
| 
 | ||||
| 	abstract void setReadOnly(boolean readOnly); | ||||
| 
 | ||||
| 	protected SpannableString createSpannableLabelString(String label, boolean required) { | ||||
| 		SpannableString spannableString = new SpannableString(label + (required ? " *" : "")); | ||||
| 		if (required) { | ||||
|  | @ -61,11 +65,8 @@ public abstract class FormFieldWrapper { | |||
| 	} | ||||
| 
 | ||||
| 	protected void invokeOnFormFieldValuesEdited() { | ||||
| 		Log.d(Config.LOGTAG, "invoke on form field values edited"); | ||||
| 		if (this.onFormFieldValuesEditedListener != null) { | ||||
| 			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) { | ||||
| 		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) { | ||||
| 			e.printStackTrace(); | ||||
| 			return null; | ||||
|  |  | |||
|  | @ -3,6 +3,8 @@ package eu.siacs.conversations.ui.forms; | |||
| import android.content.Context; | ||||
| import android.text.InputType; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import eu.siacs.conversations.R; | ||||
| import eu.siacs.conversations.xmpp.forms.Field; | ||||
| import eu.siacs.conversations.xmpp.jid.InvalidJidException; | ||||
|  | @ -30,4 +32,13 @@ public class FormJidSingleFieldWrapper extends FormTextFieldWrapper { | |||
| 		} | ||||
| 		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; | ||||
| 	} | ||||
| 
 | ||||
| 	@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 | ||||
| 	public boolean validates() { | ||||
| 		if (getValue().trim().length() > 0 || !field.isRequired()) { | ||||
|  | @ -77,4 +89,9 @@ public class FormTextFieldWrapper extends FormFieldWrapper { | |||
| 	protected int getLayoutResource() { | ||||
| 		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() { | ||||
| 		boolean edited = false; | ||||
| 		for(FormFieldWrapper fieldWrapper : fieldWrappers) { | ||||
|  |  | |||
|  | @ -53,16 +53,16 @@ public class Data extends Element { | |||
| 
 | ||||
| 	public void submit() { | ||||
| 		this.setAttribute("type","submit"); | ||||
| 		removeNonFieldChildren(); | ||||
| 		removeUnnecessaryChildren(); | ||||
| 		for(Field field : getFields()) { | ||||
| 			field.removeNonValueChildren(); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	private void removeNonFieldChildren() { | ||||
| 	private void removeUnnecessaryChildren() { | ||||
| 		for(Iterator<Element> iterator = this.children.iterator(); iterator.hasNext();) { | ||||
| 			Element element = iterator.next(); | ||||
| 			if (!element.getName().equals("field")) { | ||||
| 			if (!element.getName().equals("field") && !element.getName().equals("title")) { | ||||
| 				iterator.remove(); | ||||
| 			} | ||||
| 		} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Daniel Gultsch
						Daniel Gultsch