From 0ab50ec723b88610f2fbbe103a92b754a4c9cc71 Mon Sep 17 00:00:00 2001 From: Philippe Date: Fri, 29 Jul 2016 12:13:10 +0200 Subject: [PATCH 1/6] SuppressWarnings("unchecked") --- .../accessibility_test_framework_1_0.xml | 11 ++++++++++ .idea/libraries/android_segmented_1_0_5.xml | 12 ++++++++++ .../animated_vector_drawable_23_3_0.xml | 12 ++++++++++ .idea/libraries/ant_1_8_0.xml | 11 ++++++++++ .idea/libraries/ant_launcher_1_8_0.xml | 9 ++++++++ .idea/libraries/appcompat_v7_23_3_0.xml | 15 +++++++++++++ .idea/libraries/asm_5_0_1.xml | 11 ++++++++++ .idea/libraries/asm_analysis_5_0_1.xml | 11 ++++++++++ .idea/libraries/asm_commons_5_0_1.xml | 11 ++++++++++ .idea/libraries/asm_tree_5_0_1.xml | 11 ++++++++++ .idea/libraries/asm_util_5_0_1.xml | 11 ++++++++++ .idea/libraries/bcprov_jdk16_1_46.xml | 11 ++++++++++ .idea/libraries/hamcrest_core_1_3.xml | 11 ++++++++++ .idea/libraries/icu4j_53_1.xml | 11 ++++++++++ .idea/libraries/junit_4_12.xml | 11 ++++++++++ .idea/libraries/maven_ant_tasks_2_1_3.xml | 11 ++++++++++ .idea/libraries/robolectric_3_0.xml | 11 ++++++++++ .../libraries/robolectric_annotations_3_0.xml | 11 ++++++++++ .idea/libraries/robolectric_resources_3_0.xml | 11 ++++++++++ .idea/libraries/robolectric_utils_3_0.xml | 11 ++++++++++ .idea/libraries/shadows_core_3_0.xml | 11 ++++++++++ .idea/libraries/sqlite4java_0_282.xml | 11 ++++++++++ .../libraries/support_annotations_23_3_0.xml | 11 ++++++++++ .idea/libraries/support_v4_23_3_0.xml | 16 ++++++++++++++ .../support_vector_drawable_23_3_0.xml | 12 ++++++++++ .idea/libraries/vtd_xml_2_11.xml | 11 ++++++++++ lib/QMBForm/build.gradle | 22 +++++++++---------- .../com/quemb/qmbform/CellViewFactory.java | 1 + .../FormDescriptorAnnotationFactory.java | 2 ++ .../qmbform/descriptor/FormDescriptor.java | 1 + .../qmbform/descriptor/RowDescriptor.java | 5 ++++- .../com/quemb/qmbform/view/FormBaseCell.java | 1 + .../quemb/qmbform/view/FormDateFieldCell.java | 1 + .../view/FormPickerDialogFieldCell.java | 1 + ...FormSelectorSegmentedControlFieldCell.java | 1 + .../qmbform/view/FormSpinnerFieldCell.java | 1 + .../view/FormTextPickerDialogFieldCell.java | 1 + .../quemb/qmbform/FormDateFieldCellTest.java | 1 + .../quemb/qmbform/view/FormBaseCellTest.java | 10 ++++----- 39 files changed, 326 insertions(+), 18 deletions(-) create mode 100644 .idea/libraries/accessibility_test_framework_1_0.xml create mode 100644 .idea/libraries/android_segmented_1_0_5.xml create mode 100644 .idea/libraries/animated_vector_drawable_23_3_0.xml create mode 100644 .idea/libraries/ant_1_8_0.xml create mode 100644 .idea/libraries/ant_launcher_1_8_0.xml create mode 100644 .idea/libraries/appcompat_v7_23_3_0.xml create mode 100644 .idea/libraries/asm_5_0_1.xml create mode 100644 .idea/libraries/asm_analysis_5_0_1.xml create mode 100644 .idea/libraries/asm_commons_5_0_1.xml create mode 100644 .idea/libraries/asm_tree_5_0_1.xml create mode 100644 .idea/libraries/asm_util_5_0_1.xml create mode 100644 .idea/libraries/bcprov_jdk16_1_46.xml create mode 100644 .idea/libraries/hamcrest_core_1_3.xml create mode 100644 .idea/libraries/icu4j_53_1.xml create mode 100644 .idea/libraries/junit_4_12.xml create mode 100644 .idea/libraries/maven_ant_tasks_2_1_3.xml create mode 100644 .idea/libraries/robolectric_3_0.xml create mode 100644 .idea/libraries/robolectric_annotations_3_0.xml create mode 100644 .idea/libraries/robolectric_resources_3_0.xml create mode 100644 .idea/libraries/robolectric_utils_3_0.xml create mode 100644 .idea/libraries/shadows_core_3_0.xml create mode 100644 .idea/libraries/sqlite4java_0_282.xml create mode 100644 .idea/libraries/support_annotations_23_3_0.xml create mode 100644 .idea/libraries/support_v4_23_3_0.xml create mode 100644 .idea/libraries/support_vector_drawable_23_3_0.xml create mode 100644 .idea/libraries/vtd_xml_2_11.xml diff --git a/.idea/libraries/accessibility_test_framework_1_0.xml b/.idea/libraries/accessibility_test_framework_1_0.xml new file mode 100644 index 0000000..f1c9d12 --- /dev/null +++ b/.idea/libraries/accessibility_test_framework_1_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/android_segmented_1_0_5.xml b/.idea/libraries/android_segmented_1_0_5.xml new file mode 100644 index 0000000..b0639c9 --- /dev/null +++ b/.idea/libraries/android_segmented_1_0_5.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/animated_vector_drawable_23_3_0.xml b/.idea/libraries/animated_vector_drawable_23_3_0.xml new file mode 100644 index 0000000..1ea9fe0 --- /dev/null +++ b/.idea/libraries/animated_vector_drawable_23_3_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/ant_1_8_0.xml b/.idea/libraries/ant_1_8_0.xml new file mode 100644 index 0000000..07bc404 --- /dev/null +++ b/.idea/libraries/ant_1_8_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/ant_launcher_1_8_0.xml b/.idea/libraries/ant_launcher_1_8_0.xml new file mode 100644 index 0000000..2dce35f --- /dev/null +++ b/.idea/libraries/ant_launcher_1_8_0.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/appcompat_v7_23_3_0.xml b/.idea/libraries/appcompat_v7_23_3_0.xml new file mode 100644 index 0000000..a174fab --- /dev/null +++ b/.idea/libraries/appcompat_v7_23_3_0.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/asm_5_0_1.xml b/.idea/libraries/asm_5_0_1.xml new file mode 100644 index 0000000..283ec5c --- /dev/null +++ b/.idea/libraries/asm_5_0_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/asm_analysis_5_0_1.xml b/.idea/libraries/asm_analysis_5_0_1.xml new file mode 100644 index 0000000..6d8c202 --- /dev/null +++ b/.idea/libraries/asm_analysis_5_0_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/asm_commons_5_0_1.xml b/.idea/libraries/asm_commons_5_0_1.xml new file mode 100644 index 0000000..dc61cb1 --- /dev/null +++ b/.idea/libraries/asm_commons_5_0_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/asm_tree_5_0_1.xml b/.idea/libraries/asm_tree_5_0_1.xml new file mode 100644 index 0000000..cb7a1e8 --- /dev/null +++ b/.idea/libraries/asm_tree_5_0_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/asm_util_5_0_1.xml b/.idea/libraries/asm_util_5_0_1.xml new file mode 100644 index 0000000..e07f4ed --- /dev/null +++ b/.idea/libraries/asm_util_5_0_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/bcprov_jdk16_1_46.xml b/.idea/libraries/bcprov_jdk16_1_46.xml new file mode 100644 index 0000000..2b9e094 --- /dev/null +++ b/.idea/libraries/bcprov_jdk16_1_46.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/hamcrest_core_1_3.xml b/.idea/libraries/hamcrest_core_1_3.xml new file mode 100644 index 0000000..157e3f3 --- /dev/null +++ b/.idea/libraries/hamcrest_core_1_3.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/icu4j_53_1.xml b/.idea/libraries/icu4j_53_1.xml new file mode 100644 index 0000000..1c73fa3 --- /dev/null +++ b/.idea/libraries/icu4j_53_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/junit_4_12.xml b/.idea/libraries/junit_4_12.xml new file mode 100644 index 0000000..305df30 --- /dev/null +++ b/.idea/libraries/junit_4_12.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/maven_ant_tasks_2_1_3.xml b/.idea/libraries/maven_ant_tasks_2_1_3.xml new file mode 100644 index 0000000..22fe762 --- /dev/null +++ b/.idea/libraries/maven_ant_tasks_2_1_3.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/robolectric_3_0.xml b/.idea/libraries/robolectric_3_0.xml new file mode 100644 index 0000000..4610157 --- /dev/null +++ b/.idea/libraries/robolectric_3_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/robolectric_annotations_3_0.xml b/.idea/libraries/robolectric_annotations_3_0.xml new file mode 100644 index 0000000..5dd6f01 --- /dev/null +++ b/.idea/libraries/robolectric_annotations_3_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/robolectric_resources_3_0.xml b/.idea/libraries/robolectric_resources_3_0.xml new file mode 100644 index 0000000..c93e11e --- /dev/null +++ b/.idea/libraries/robolectric_resources_3_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/robolectric_utils_3_0.xml b/.idea/libraries/robolectric_utils_3_0.xml new file mode 100644 index 0000000..0fee901 --- /dev/null +++ b/.idea/libraries/robolectric_utils_3_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/shadows_core_3_0.xml b/.idea/libraries/shadows_core_3_0.xml new file mode 100644 index 0000000..a80cb1e --- /dev/null +++ b/.idea/libraries/shadows_core_3_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/sqlite4java_0_282.xml b/.idea/libraries/sqlite4java_0_282.xml new file mode 100644 index 0000000..8866bc2 --- /dev/null +++ b/.idea/libraries/sqlite4java_0_282.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/support_annotations_23_3_0.xml b/.idea/libraries/support_annotations_23_3_0.xml new file mode 100644 index 0000000..0b9c934 --- /dev/null +++ b/.idea/libraries/support_annotations_23_3_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/support_v4_23_3_0.xml b/.idea/libraries/support_v4_23_3_0.xml new file mode 100644 index 0000000..de7f6b3 --- /dev/null +++ b/.idea/libraries/support_v4_23_3_0.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/support_vector_drawable_23_3_0.xml b/.idea/libraries/support_vector_drawable_23_3_0.xml new file mode 100644 index 0000000..32248c9 --- /dev/null +++ b/.idea/libraries/support_vector_drawable_23_3_0.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/vtd_xml_2_11.xml b/.idea/libraries/vtd_xml_2_11.xml new file mode 100644 index 0000000..fe8507f --- /dev/null +++ b/.idea/libraries/vtd_xml_2_11.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/lib/QMBForm/build.gradle b/lib/QMBForm/build.gradle index 102384c..7f6ac02 100755 --- a/lib/QMBForm/build.gradle +++ b/lib/QMBForm/build.gradle @@ -1,4 +1,3 @@ - plugins { id "org.sonarqube" version "1.0" } @@ -46,16 +45,6 @@ android { } } -dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:23.3.0' - compile 'info.hoang8f:android-segmented:1.0.5' - - testCompile 'junit:junit:4.12' - testCompile 'org.hamcrest:hamcrest-core:1.2.1' - testCompile 'org.robolectric:robolectric:3.0' -} - apply plugin: 'idea' idea { @@ -83,7 +72,6 @@ sonarqube { } } - apply plugin: "jacoco" jacoco { @@ -123,3 +111,13 @@ task jacocoTestReport(type: JacocoReport ) { } } } + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support:appcompat-v7:23.3.0' + compile 'info.hoang8f:android-segmented:1.0.5' + + testCompile 'junit:junit:4.12' + testCompile 'org.hamcrest:hamcrest-core:1.2.1' + testCompile 'org.robolectric:robolectric:3.0' +} diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java index 9df52cf..ab3d0f6 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java @@ -68,6 +68,7 @@ public static CellViewFactory getInstance() { return instance; } + @SuppressWarnings("unchecked") public static void addFormRowDescriptor(String descriptorName, Class descriptorClass) { getInstance().mViewRowTypeMap.put(descriptorName, descriptorClass); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java index 15a4a62..3707ee4 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java @@ -52,6 +52,7 @@ public FormDescriptor createFormDescriptorFromAnnotatedClass(Object object, Hash return createFormDescriptorFromFields(declaredFields, object, cellConfig); } + @SuppressWarnings("unchecked") public FormDescriptor createFormDescriptorFromFields(List fields, Object object, HashMap cellConfig) { FormDescriptor formDescriptor = FormDescriptor.newInstance(); if (cellConfig != null) @@ -180,6 +181,7 @@ public int compare(Field lhs, Field rhs) { } + @SuppressWarnings("unchecked") public void addValidators(RowDescriptor rowDescriptor, FormElement annotation) { for (Class validator : annotation.validatorClasses()) { try { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormDescriptor.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormDescriptor.java index 1672d90..2bb2fe4 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormDescriptor.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormDescriptor.java @@ -123,6 +123,7 @@ public boolean isValid(Context context) { return formValidation.getRowValidationErrors().isEmpty(); } + @SuppressWarnings("unchecked") public FormValidation getFormValidation(Context context) { FormValidation formValidation = new FormValidation(context); for (SectionDescriptor sectionDescriptor : getSections()) { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java index 3627909..2b5d5a5 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java @@ -80,7 +80,7 @@ public class RowDescriptor extends FormItemDescriptor { private Boolean mRequired = false; private Boolean mDisabled = false; - private List mValidators; + @SuppressWarnings("unchecked") private List mValidators; private List mSelectorOptions; @@ -108,6 +108,7 @@ public static RowDescriptor newInstance(String tag, String rowType, String title } + @SuppressWarnings("unchecked") public static RowDescriptor newInstance(String tag, String rowType, String title, Value value) { RowDescriptor descriptor = new RowDescriptor(); @@ -121,6 +122,7 @@ public static RowDescriptor newInstance(String tag, String rowType, String title } + @SuppressWarnings("unchecked") public static RowDescriptor newInstanceFromAnnotatedField(Field field, Value value, Context context) { FormElement annotation = field.getAnnotation(FormElement.class); RowDescriptor rowDescriptor = RowDescriptor.newInstance( @@ -261,6 +263,7 @@ public List getValidationErrors() { return (rowValidationErrors.isEmpty()) ? null : rowValidationErrors; } + @SuppressWarnings("unchecked") public static RowDescriptor newInstance(RowDescriptor rowDescriptor) { Long tsLong = System.currentTimeMillis() / 1000; diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java index 23516ad..9456392 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java @@ -152,6 +152,7 @@ public RowDescriptor getRowDescriptor() { return (RowDescriptor) getFormItemDescriptor(); } + @SuppressWarnings("unchecked") public void onValueChanged(Value newValue) { RowDescriptor row = getRowDescriptor(); Value oldValue = row.getValue(); diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateFieldCell.java index f1ab857..4d7fa17 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateFieldCell.java @@ -31,6 +31,7 @@ protected void init() { mTextView = (TextView) findViewById(R.id.textView); setStyleId(mTextView, CellDescriptor.APPEARANCE_TEXT_LABEL, CellDescriptor.COLOR_LABEL); + mTextView.setEnabled(false); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java index 4ae3bd4..9d3b8e2 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java @@ -34,6 +34,7 @@ protected void update() { } @Override + @SuppressWarnings("unchecked") public void onCellSelected() { super.onCellSelected(); if (getRowDescriptor().getDataSource() == null) { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlFieldCell.java index c4d7d58..3ed5a66 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlFieldCell.java @@ -46,6 +46,7 @@ protected int getResource() { } @Override + @SuppressWarnings("unchecked") protected void update() { mSegmentedGroup.removeAllViews(); diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java index 5ffac58..d53e863 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java @@ -39,6 +39,7 @@ protected int getResource() { } @Override + @SuppressWarnings("unchecked") protected void update() { super.update(); diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java index 8524734..eeb84fc 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java @@ -53,6 +53,7 @@ public void onClick(View v) { } @Override + @SuppressWarnings("unchecked") public void onCellSelected() { super.onCellSelected(); if (getRowDescriptor().getDataSource() == null) { diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java index f8ceea5..079268e 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java @@ -2,6 +2,7 @@ import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; +import com.quemb.qmbform.view.FormDateDialogFieldCell; import com.quemb.qmbform.view.FormTimeDialogFieldCell; import org.junit.After; diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/view/FormBaseCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/view/FormBaseCellTest.java index 4c443c8..892d3e6 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/view/FormBaseCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/view/FormBaseCellTest.java @@ -1,5 +1,8 @@ package com.quemb.qmbform.view; +import android.app.Activity; +import android.os.Build; + import com.quemb.qmbform.BuildConfig; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.SectionDescriptor; @@ -11,15 +14,12 @@ import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; -import android.app.Activity; -import android.inputmethodservice.Keyboard; - -import static org.junit.Assert.*; +import static junit.framework.Assert.assertNotNull; /** * Created by Toni on 25.10.15. */ -@Config(constants = BuildConfig.class) +@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP) @RunWith(RobolectricGradleTestRunner.class) public class FormBaseCellTest { From 75e54e6260717c9e94d7ee8783940d104ad8be84 Mon Sep 17 00:00:00 2001 From: Philippe Date: Fri, 29 Jul 2016 12:37:23 +0200 Subject: [PATCH 2/6] Remove the .idea/libraries/ folder --- .../accessibility_test_framework_1_0.xml | 11 ----------- .idea/libraries/android_segmented_1_0_5.xml | 12 ------------ .../animated_vector_drawable_23_3_0.xml | 12 ------------ .idea/libraries/ant_1_8_0.xml | 11 ----------- .idea/libraries/ant_launcher_1_8_0.xml | 9 --------- .idea/libraries/appcompat_v7_23_3_0.xml | 15 --------------- .idea/libraries/asm_5_0_1.xml | 11 ----------- .idea/libraries/asm_analysis_5_0_1.xml | 11 ----------- .idea/libraries/asm_commons_5_0_1.xml | 11 ----------- .idea/libraries/asm_tree_5_0_1.xml | 11 ----------- .idea/libraries/asm_util_5_0_1.xml | 11 ----------- .idea/libraries/bcprov_jdk16_1_46.xml | 11 ----------- .idea/libraries/hamcrest_core_1_3.xml | 11 ----------- .idea/libraries/icu4j_53_1.xml | 11 ----------- .idea/libraries/junit_4_12.xml | 11 ----------- .idea/libraries/maven_ant_tasks_2_1_3.xml | 11 ----------- .idea/libraries/robolectric_3_0.xml | 11 ----------- .idea/libraries/robolectric_annotations_3_0.xml | 11 ----------- .idea/libraries/robolectric_resources_3_0.xml | 11 ----------- .idea/libraries/robolectric_utils_3_0.xml | 11 ----------- .idea/libraries/shadows_core_3_0.xml | 11 ----------- .idea/libraries/sqlite4java_0_282.xml | 11 ----------- .idea/libraries/support_annotations_23_3_0.xml | 11 ----------- .idea/libraries/support_v4_23_3_0.xml | 16 ---------------- .../libraries/support_vector_drawable_23_3_0.xml | 12 ------------ .idea/libraries/vtd_xml_2_11.xml | 11 ----------- 26 files changed, 296 deletions(-) delete mode 100644 .idea/libraries/accessibility_test_framework_1_0.xml delete mode 100644 .idea/libraries/android_segmented_1_0_5.xml delete mode 100644 .idea/libraries/animated_vector_drawable_23_3_0.xml delete mode 100644 .idea/libraries/ant_1_8_0.xml delete mode 100644 .idea/libraries/ant_launcher_1_8_0.xml delete mode 100644 .idea/libraries/appcompat_v7_23_3_0.xml delete mode 100644 .idea/libraries/asm_5_0_1.xml delete mode 100644 .idea/libraries/asm_analysis_5_0_1.xml delete mode 100644 .idea/libraries/asm_commons_5_0_1.xml delete mode 100644 .idea/libraries/asm_tree_5_0_1.xml delete mode 100644 .idea/libraries/asm_util_5_0_1.xml delete mode 100644 .idea/libraries/bcprov_jdk16_1_46.xml delete mode 100644 .idea/libraries/hamcrest_core_1_3.xml delete mode 100644 .idea/libraries/icu4j_53_1.xml delete mode 100644 .idea/libraries/junit_4_12.xml delete mode 100644 .idea/libraries/maven_ant_tasks_2_1_3.xml delete mode 100644 .idea/libraries/robolectric_3_0.xml delete mode 100644 .idea/libraries/robolectric_annotations_3_0.xml delete mode 100644 .idea/libraries/robolectric_resources_3_0.xml delete mode 100644 .idea/libraries/robolectric_utils_3_0.xml delete mode 100644 .idea/libraries/shadows_core_3_0.xml delete mode 100644 .idea/libraries/sqlite4java_0_282.xml delete mode 100644 .idea/libraries/support_annotations_23_3_0.xml delete mode 100644 .idea/libraries/support_v4_23_3_0.xml delete mode 100644 .idea/libraries/support_vector_drawable_23_3_0.xml delete mode 100644 .idea/libraries/vtd_xml_2_11.xml diff --git a/.idea/libraries/accessibility_test_framework_1_0.xml b/.idea/libraries/accessibility_test_framework_1_0.xml deleted file mode 100644 index f1c9d12..0000000 --- a/.idea/libraries/accessibility_test_framework_1_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/android_segmented_1_0_5.xml b/.idea/libraries/android_segmented_1_0_5.xml deleted file mode 100644 index b0639c9..0000000 --- a/.idea/libraries/android_segmented_1_0_5.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/animated_vector_drawable_23_3_0.xml b/.idea/libraries/animated_vector_drawable_23_3_0.xml deleted file mode 100644 index 1ea9fe0..0000000 --- a/.idea/libraries/animated_vector_drawable_23_3_0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/ant_1_8_0.xml b/.idea/libraries/ant_1_8_0.xml deleted file mode 100644 index 07bc404..0000000 --- a/.idea/libraries/ant_1_8_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/ant_launcher_1_8_0.xml b/.idea/libraries/ant_launcher_1_8_0.xml deleted file mode 100644 index 2dce35f..0000000 --- a/.idea/libraries/ant_launcher_1_8_0.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/appcompat_v7_23_3_0.xml b/.idea/libraries/appcompat_v7_23_3_0.xml deleted file mode 100644 index a174fab..0000000 --- a/.idea/libraries/appcompat_v7_23_3_0.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/asm_5_0_1.xml b/.idea/libraries/asm_5_0_1.xml deleted file mode 100644 index 283ec5c..0000000 --- a/.idea/libraries/asm_5_0_1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/asm_analysis_5_0_1.xml b/.idea/libraries/asm_analysis_5_0_1.xml deleted file mode 100644 index 6d8c202..0000000 --- a/.idea/libraries/asm_analysis_5_0_1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/asm_commons_5_0_1.xml b/.idea/libraries/asm_commons_5_0_1.xml deleted file mode 100644 index dc61cb1..0000000 --- a/.idea/libraries/asm_commons_5_0_1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/asm_tree_5_0_1.xml b/.idea/libraries/asm_tree_5_0_1.xml deleted file mode 100644 index cb7a1e8..0000000 --- a/.idea/libraries/asm_tree_5_0_1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/asm_util_5_0_1.xml b/.idea/libraries/asm_util_5_0_1.xml deleted file mode 100644 index e07f4ed..0000000 --- a/.idea/libraries/asm_util_5_0_1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/bcprov_jdk16_1_46.xml b/.idea/libraries/bcprov_jdk16_1_46.xml deleted file mode 100644 index 2b9e094..0000000 --- a/.idea/libraries/bcprov_jdk16_1_46.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/hamcrest_core_1_3.xml b/.idea/libraries/hamcrest_core_1_3.xml deleted file mode 100644 index 157e3f3..0000000 --- a/.idea/libraries/hamcrest_core_1_3.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/icu4j_53_1.xml b/.idea/libraries/icu4j_53_1.xml deleted file mode 100644 index 1c73fa3..0000000 --- a/.idea/libraries/icu4j_53_1.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/junit_4_12.xml b/.idea/libraries/junit_4_12.xml deleted file mode 100644 index 305df30..0000000 --- a/.idea/libraries/junit_4_12.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/maven_ant_tasks_2_1_3.xml b/.idea/libraries/maven_ant_tasks_2_1_3.xml deleted file mode 100644 index 22fe762..0000000 --- a/.idea/libraries/maven_ant_tasks_2_1_3.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/robolectric_3_0.xml b/.idea/libraries/robolectric_3_0.xml deleted file mode 100644 index 4610157..0000000 --- a/.idea/libraries/robolectric_3_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/robolectric_annotations_3_0.xml b/.idea/libraries/robolectric_annotations_3_0.xml deleted file mode 100644 index 5dd6f01..0000000 --- a/.idea/libraries/robolectric_annotations_3_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/robolectric_resources_3_0.xml b/.idea/libraries/robolectric_resources_3_0.xml deleted file mode 100644 index c93e11e..0000000 --- a/.idea/libraries/robolectric_resources_3_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/robolectric_utils_3_0.xml b/.idea/libraries/robolectric_utils_3_0.xml deleted file mode 100644 index 0fee901..0000000 --- a/.idea/libraries/robolectric_utils_3_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/shadows_core_3_0.xml b/.idea/libraries/shadows_core_3_0.xml deleted file mode 100644 index a80cb1e..0000000 --- a/.idea/libraries/shadows_core_3_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/sqlite4java_0_282.xml b/.idea/libraries/sqlite4java_0_282.xml deleted file mode 100644 index 8866bc2..0000000 --- a/.idea/libraries/sqlite4java_0_282.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/support_annotations_23_3_0.xml b/.idea/libraries/support_annotations_23_3_0.xml deleted file mode 100644 index 0b9c934..0000000 --- a/.idea/libraries/support_annotations_23_3_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/support_v4_23_3_0.xml b/.idea/libraries/support_v4_23_3_0.xml deleted file mode 100644 index de7f6b3..0000000 --- a/.idea/libraries/support_v4_23_3_0.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/support_vector_drawable_23_3_0.xml b/.idea/libraries/support_vector_drawable_23_3_0.xml deleted file mode 100644 index 32248c9..0000000 --- a/.idea/libraries/support_vector_drawable_23_3_0.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/vtd_xml_2_11.xml b/.idea/libraries/vtd_xml_2_11.xml deleted file mode 100644 index fe8507f..0000000 --- a/.idea/libraries/vtd_xml_2_11.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file From 19dd376cf25cfaa95a240f00bee8183701f408a3 Mon Sep 17 00:00:00 2001 From: Philippe Date: Fri, 29 Jul 2016 12:38:09 +0200 Subject: [PATCH 3/6] Remove .idea/libraries/ files --- .../src/main/java/com/quemb/qmbform/CellViewFactory.java | 3 +-- .../qmbform/annotation/FormDescriptorAnnotationFactory.java | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java index ab3d0f6..f7714cf 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java @@ -124,8 +124,7 @@ public Cell createViewForFormItemDescriptor(Context context, FormItemDescriptor if (descriptor instanceof SectionDescriptor) { - SectionCell sectionCell = new SectionCell(context, (SectionDescriptor) descriptor); - rowView = sectionCell; + rowView = new SectionCell(context, (SectionDescriptor) descriptor); } else if (descriptor instanceof RowDescriptor) { RowDescriptor row = (RowDescriptor) descriptor; diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java index 3707ee4..64eaaa6 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java @@ -251,7 +251,6 @@ private class Section { public String tag; public Boolean multiValue; public List fields; - ; public Section(String sectionTitle) { From 639982c1a3fee2c1caaac3839b72d5584001a4e2 Mon Sep 17 00:00:00 2001 From: Philippe Date: Fri, 29 Jul 2016 13:00:57 +0200 Subject: [PATCH 4/6] Use ContextCompat instead of AppCompatDrawableManager to get drawable --- .../quemb/qmbform/sample/controller/SampleFormFragment.java | 2 ++ .../controller/SampleMultivalueSectionFormFragment.java | 2 ++ .../src/main/java/com/quemb/qmbform/view/FormBaseCell.java | 6 +++--- .../qmbform/FormSelectorSegmentedControlFieldCellTest.java | 2 ++ .../test/java/com/quemb/qmbform/view/FormBaseCellTest.java | 6 +++++- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java index 45ed160..52d41d7 100644 --- a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java +++ b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java @@ -70,6 +70,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, } @Override + @SuppressWarnings("unchecked") public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -370,6 +371,7 @@ protected ArrayList doInBackground(DataSourceListener... listeners) { } @Override + @SuppressWarnings("unchecked") protected void onPostExecute(ArrayList strings) { super.onPostExecute(strings); mProgressDialog.dismiss(); diff --git a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleMultivalueSectionFormFragment.java b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleMultivalueSectionFormFragment.java index 73ec7f8..7f1ce7a 100644 --- a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleMultivalueSectionFormFragment.java +++ b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleMultivalueSectionFormFragment.java @@ -69,6 +69,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, } @Override + @SuppressWarnings("unchecked") public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -241,6 +242,7 @@ protected ArrayList doInBackground(DataSourceListener... listeners) { } @Override + @SuppressWarnings("unchecked") protected void onPostExecute(ArrayList strings) { super.onPostExecute(strings); mProgressDialog.dismiss(); diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java index 9456392..46ae91c 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java @@ -11,7 +11,7 @@ import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; -import android.support.v7.widget.AppCompatDrawableManager; +import android.support.v4.content.ContextCompat; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; @@ -74,7 +74,7 @@ protected LinearLayout createMultiValueWrapper() { deleteButton.setFocusableInTouchMode(false); deleteButton.setFocusable(false); - Drawable removeIcon = AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.ic_action_remove); + Drawable removeIcon = ContextCompat.getDrawable(getContext(), R.drawable.ic_action_remove); removeIcon.setColorFilter(0xffff0000, PorterDuff.Mode.MULTIPLY); deleteButton.setImageDrawable(removeIcon); @@ -99,7 +99,7 @@ public void onClick(View v) { addButton.setFocusableInTouchMode(false); addButton.setFocusable(false); - Drawable addIcon = AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.ic_action_new); + Drawable addIcon = ContextCompat.getDrawable(getContext(), R.drawable.ic_action_new); addIcon.setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY); diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormSelectorSegmentedControlFieldCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormSelectorSegmentedControlFieldCellTest.java index f1acb1c..180632d 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormSelectorSegmentedControlFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormSelectorSegmentedControlFieldCellTest.java @@ -29,6 +29,7 @@ public void setUp() { } @Test + @SuppressWarnings("unchecked") public void hasCorrectSegmentSelected() { RowDescriptor rowDescriptor = RowDescriptor.newInstance("segmented", RowDescriptor.FormRowDescriptorTypeSelectorSegmentedControl, @@ -46,6 +47,7 @@ public void hasCorrectSegmentSelected() { // Check that value exists in selector options FormOptionsObject selected = FormOptionsObject.formOptionsObjectFromArrayWithValue( rowDescriptor.getValueData(), selectorOptions); + assertThat(selected.getDisplayText(), is("Test 1")); diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/view/FormBaseCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/view/FormBaseCellTest.java index 892d3e6..d2040b8 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/view/FormBaseCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/view/FormBaseCellTest.java @@ -15,6 +15,9 @@ import org.robolectric.annotation.Config; import static junit.framework.Assert.assertNotNull; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.IsNot.not; +import static org.hamcrest.core.IsNull.nullValue; /** * Created by Toni on 25.10.15. @@ -50,7 +53,8 @@ protected void update() { public void testShouldCreateMultiValueWrapper() { - assertNotNull(cell.createMultiValueWrapper()); + //assertNotNull(cell.createMultiValueWrapper()); + assertThat(cell.createMultiValueWrapper(), not(nullValue())); } From 745f2ea16f20c181f2f7a3222506adbf19f081a5 Mon Sep 17 00:00:00 2001 From: Philippe Date: Wed, 3 Aug 2016 16:17:45 +0200 Subject: [PATCH 5/6] More generics for RowDescriptor, Value, OnValueChangeListener, FormValidator --- .../sample/controller/SampleFormFragment.java | 75 ++++++++------- app/src/main/res/layout/form_sample.xml | 2 +- build.gradle | 2 +- .../com/quemb/qmbform/CellViewFactory.java | 11 +-- .../FormDescriptorAnnotationFactory.java | 65 +++++++++---- .../qmbform/annotation/FormValidator.java | 4 +- .../quemb/qmbform/descriptor/DataSource.java | 2 +- .../qmbform/descriptor/RowDescriptor.java | 39 ++++---- .../com/quemb/qmbform/view/FormBaseCell.java | 42 ++++++--- .../view/FormExternalButtonFieldCell.java | 10 +- .../view/FormPickerDialogFieldCell.java | 86 +++++++++-------- .../view/FormTextPickerDialogFieldCell.java | 94 +++++++++++-------- .../src/main/res/layout/section_cell.xml | 4 +- .../qmbform/FormBooleanFieldCellTest.java | 6 +- .../quemb/qmbform/FormCheckFieldCellTest.java | 6 +- .../quemb/qmbform/FormDateFieldCellTest.java | 7 +- .../quemb/qmbform/FormEditFieldCellTest.java | 6 +- .../qmbform/FormIntegerSliderCellTest.java | 6 +- .../qmbform/FormPickerFieldCellTest.java | 6 +- ...SelectorSegmentedControlFieldCellTest.java | 3 +- 20 files changed, 271 insertions(+), 205 deletions(-) diff --git a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java index 52d41d7..adf2444 100644 --- a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java +++ b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java @@ -79,86 +79,89 @@ public void onViewCreated(View view, Bundle savedInstanceState) { // More styles and colors for cells HashMap cellConfig = new HashMap<>(8); - // TextAppearance for section, label, value and button + // Custom TextAppearance for section, label, value and button cellConfig.put(CellDescriptor.APPEARANCE_SECTION, Integer.valueOf(R.style.TextAppearance_Form_Section)); cellConfig.put(CellDescriptor.APPEARANCE_TEXT_LABEL, Integer.valueOf(R.style.TextAppearance_Form_Label)); cellConfig.put(CellDescriptor.APPEARANCE_TEXT_VALUE, Integer.valueOf(R.style.TextAppearance_Form_Value)); cellConfig.put(CellDescriptor.APPEARANCE_BUTTON, Integer.valueOf(R.style.TextAppearance_Form_Button)); - // Disabled color for label and value + // Custom color for label and value cellConfig.put(CellDescriptor.COLOR_LABEL, Integer.valueOf(0x80C0FFC0)); cellConfig.put(CellDescriptor.COLOR_VALUE, Integer.valueOf(0xC0C0FFC0)); - // Disabled color for label and value + // Custom disabled color for label and value cellConfig.put(CellDescriptor.COLOR_LABEL_DISABLED, Integer.valueOf(0x80FFC0C0)); cellConfig.put(CellDescriptor.COLOR_VALUE_DISABLED, Integer.valueOf(0xC0FFC0C0)); + // Associate the cellConfig to the FormManager, so SectionDescriptors and RowDescriptors + // are also associated to the same cellConfig + FormDescriptor descriptor = FormDescriptor.newInstance(); descriptor.setCellConfig(cellConfig); SectionDescriptor sectionDescriptor = SectionDescriptor.newInstance("section","Text Inputs"); descriptor.addSection(sectionDescriptor); - final RowDescriptor rd1 = + RowDescriptor rd1 = RowDescriptor.newInstance("detail", RowDescriptor.FormRowDescriptorTypeTextInline, "Title", new Value("Detail")); sectionDescriptor.addRow(rd1); - final RowDescriptor rd2 = + RowDescriptor rd2 = RowDescriptor.newInstance("detail", RowDescriptor.FormRowDescriptorTypeText, "Title", new Value("Detail")); sectionDescriptor.addRow(rd2); - final RowDescriptor rd3 = + RowDescriptor rd3 = RowDescriptor.newInstance("text", RowDescriptor.FormRowDescriptorTypeText, "Text", new Value("test")); sectionDescriptor.addRow(rd3); - RowDescriptor textDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeText, "Text Disabled", new Value("test")); + RowDescriptor textDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeText, "Text Disabled", new Value("test")); textDisabled.setDisabled(true); sectionDescriptor.addRow(textDisabled); - final RowDescriptor rd4 = + RowDescriptor rd4 = RowDescriptor.newInstance("text",RowDescriptor.FormRowDescriptorTypeURL, "URL", new Value("http://www.github.com/")); sectionDescriptor.addRow(rd4); - RowDescriptor textUrlDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeURL, "URL Disabled", new Value("http://www.github.com/")); + RowDescriptor textUrlDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeURL, "URL Disabled", new Value("http://www.github.com/")); textUrlDisabled.setDisabled(true); sectionDescriptor.addRow(textUrlDisabled); - final RowDescriptor rd5 = + RowDescriptor rd5 = RowDescriptor.newInstance("text", RowDescriptor.FormRowDescriptorTypeEmail, "Email", new Value("support@github.com")); sectionDescriptor.addRow(rd5); - RowDescriptor textEmailDisabled = RowDescriptor.newInstance("textDisabled",RowDescriptor.FormRowDescriptorTypeEmail, "Email Disabled", new Value("support@github.com")); + RowDescriptor textEmailDisabled = RowDescriptor.newInstance("textDisabled",RowDescriptor.FormRowDescriptorTypeEmail, "Email Disabled", new Value("support@github.com")); textEmailDisabled.setDisabled(true); sectionDescriptor.addRow(textEmailDisabled); - final RowDescriptor rd6 = + RowDescriptor rd6 = RowDescriptor.newInstance("textView", RowDescriptor.FormRowDescriptorTypeTextView, "Text View", new Value("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et ...")); sectionDescriptor.addRow(rd6); - RowDescriptor textViewDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeTextView, "Text View Disabled", new Value("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et ...")); + RowDescriptor textViewDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeTextView, "Text View Disabled", new Value("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et ...")); textViewDisabled.setDisabled(true); sectionDescriptor.addRow(textViewDisabled); - final RowDescriptor rd7 = + RowDescriptor rd7 = RowDescriptor.newInstance("number", RowDescriptor.FormRowDescriptorTypeNumber, "Number", new Value(555.456)); sectionDescriptor.addRow(rd7); - RowDescriptor numberRowDisabled = RowDescriptor.newInstance("numberDisabled",RowDescriptor.FormRowDescriptorTypeNumber, "Number Disabled", new Value(555.456)); + RowDescriptor numberRowDisabled = RowDescriptor.newInstance("numberDisabled",RowDescriptor.FormRowDescriptorTypeNumber, "Number Disabled", new Value(555.456)); numberRowDisabled.setDisabled(true); sectionDescriptor.addRow(numberRowDisabled); - final RowDescriptor integerRow = RowDescriptor.newInstance("integer",RowDescriptor.FormRowDescriptorTypeInteger, "Integer", new Value(55)); + final RowDescriptor integerRow = RowDescriptor.newInstance("integer",RowDescriptor.FormRowDescriptorTypeInteger, "Integer", new Value(55)); sectionDescriptor.addRow(integerRow); - final RowDescriptor integerRowDisabled = RowDescriptor.newInstance("integerDisabled",RowDescriptor.FormRowDescriptorTypeInteger, "Integer Disabled", new Value(55)); + RowDescriptor integerRowDisabled = RowDescriptor.newInstance("integerDisabled",RowDescriptor.FormRowDescriptorTypeInteger, "Integer Disabled", new Value(55)); integerRowDisabled.setDisabled(true); sectionDescriptor.addRow(integerRowDisabled); - final RowDescriptor rd8 = + RowDescriptor rd8 = RowDescriptor.newInstance("integerSlider", RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider", new Value(50)); sectionDescriptor.addRow(rd8); - RowDescriptor integerSliderDisabled = RowDescriptor.newInstance("integerSliderDisabled",RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider Disabled", new Value(50)); + RowDescriptor integerSliderDisabled = RowDescriptor.newInstance("integerSliderDisabled",RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider Disabled", new Value(50)); integerSliderDisabled.setDisabled(true); sectionDescriptor.addRow(integerSliderDisabled); @@ -168,8 +171,8 @@ public void onViewCreated(View view, Bundle savedInstanceState) { descriptor.addSection(sectionDescriptor1); final Activity activity = getActivity(); - RowDescriptor pickerDescriptor = RowDescriptor.newInstance("picker",RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, "Picker", new Value("Item 5")); - pickerDescriptor.setDataSource(new DataSource() + RowDescriptor pickerDescriptor = RowDescriptor.newInstance("picker",RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, "Picker", new Value("Item 5")); + pickerDescriptor.setDataSource(new DataSource() { @Override public void loadData(final DataSourceListener listener) @@ -181,7 +184,7 @@ public void loadData(final DataSourceListener listener) }); sectionDescriptor1.addRow(pickerDescriptor); - RowDescriptor pickerDisabledDescriptor = RowDescriptor.newInstance("pickerDisabled",RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, "Picker Disabled", new Value("Value")); + RowDescriptor pickerDisabledDescriptor = RowDescriptor.newInstance("pickerDisabled",RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, "Picker Disabled", new Value("Value")); pickerDisabledDescriptor.setDisabled(true); sectionDescriptor1.addRow(pickerDisabledDescriptor); @@ -190,26 +193,26 @@ public void loadData(final DataSourceListener listener) SectionDescriptor sectionDescriptor2 = SectionDescriptor.newInstance("sectionTwo","Boolean Inputs"); descriptor.addSection(sectionDescriptor2); - final RowDescriptor rd9 = + RowDescriptor rd9 = RowDescriptor.newInstance("boolean", RowDescriptor.FormRowDescriptorTypeBooleanSwitch, "Boolean Switch", new Value(true)); sectionDescriptor2.addRow(rd9); - RowDescriptor booleanDisabled = RowDescriptor.newInstance("booleanDisabled",RowDescriptor.FormRowDescriptorTypeBooleanSwitch, "Boolean Switch Disabled", new Value(true)); + RowDescriptor booleanDisabled = RowDescriptor.newInstance("booleanDisabled",RowDescriptor.FormRowDescriptorTypeBooleanSwitch, "Boolean Switch Disabled", new Value(true)); booleanDisabled.setDisabled(true); sectionDescriptor2.addRow(booleanDisabled); - final RowDescriptor rd10 = + RowDescriptor rd10 = RowDescriptor.newInstance("check", RowDescriptor.FormRowDescriptorTypeBooleanCheck, "Check", new Value(true)); sectionDescriptor2.addRow(rd10); - RowDescriptor checkDisabled = RowDescriptor.newInstance("checkDisabled",RowDescriptor.FormRowDescriptorTypeBooleanCheck, "Check Disabled", new Value(true)) ; + RowDescriptor checkDisabled = RowDescriptor.newInstance("checkDisabled",RowDescriptor.FormRowDescriptorTypeBooleanCheck, "Check Disabled", new Value(true)) ; checkDisabled.setDisabled(true); sectionDescriptor2.addRow(checkDisabled); SectionDescriptor sectionDescriptor3 = SectionDescriptor.newInstance("sectionThree","Button"); descriptor.addSection(sectionDescriptor3); - final RowDescriptor button = RowDescriptor.newInstance("button",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me"); + RowDescriptor button = RowDescriptor.newInstance("button",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me"); button.setOnFormRowClickListener(new OnFormRowClickListener() { @Override @@ -219,7 +222,7 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) // itemDescriptor.setTitle("New Title"); // mFormManager.updateRows(); - integerRow.getValue().setValue(100); + integerRow.getValue().setValue(Integer.valueOf(100)); integerRow.setDisabled(true); android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(activity); @@ -229,7 +232,7 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) }); sectionDescriptor3.addRow(button); - RowDescriptor buttonDisabled = RowDescriptor.newInstance("buttonDisabled",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me Disabled"); + RowDescriptor buttonDisabled = RowDescriptor.newInstance("buttonDisabled",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me Disabled"); buttonDisabled.setOnFormRowClickListener(new OnFormRowClickListener() { @Override @@ -243,14 +246,14 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) buttonDisabled.setDisabled(true); sectionDescriptor3.addRow(buttonDisabled); - final RowDescriptor rd11 = + RowDescriptor rd11 = RowDescriptor.newInstance("external", RowDescriptor.FormRowDescriptorTypeExternal, "github.com", new Value("http://github.com")); sectionDescriptor3.addRow(rd11); SectionDescriptor sectionDescriptor4 = SectionDescriptor.newInstance("sectionFour","Dates"); descriptor.addSection(sectionDescriptor4); - final RowDescriptor rd12 = + RowDescriptor rd12 = RowDescriptor.newInstance("dateInline", RowDescriptor.FormRowDescriptorTypeDateInline, "Date Inline", new Value(new Date())); sectionDescriptor4.addRow(rd12); @@ -258,7 +261,7 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) dateInlineDisabled.setDisabled(true); sectionDescriptor4.addRow(dateInlineDisabled); - final RowDescriptor rd13 = + RowDescriptor rd13 = RowDescriptor.newInstance("dateDialog", RowDescriptor.FormRowDescriptorTypeDate, "Date Dialog", null); sectionDescriptor4.addRow(rd13); @@ -266,19 +269,19 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) dateDialogDisabled.setDisabled(true); sectionDescriptor4.addRow(dateDialogDisabled); - final RowDescriptor rd14 = + RowDescriptor rd14 = RowDescriptor.newInstance("timeInline", RowDescriptor.FormRowDescriptorTypeTimeInline, "Time Inline", new Value(new Date())); sectionDescriptor4.addRow(rd14); - RowDescriptor timeInlineDisabled = RowDescriptor.newInstance("timeInlineDisabled",RowDescriptor.FormRowDescriptorTypeTimeInline, "Time Inline Disabled", new Value(new Date()) ); + RowDescriptor timeInlineDisabled = RowDescriptor.newInstance("timeInlineDisabled",RowDescriptor.FormRowDescriptorTypeTimeInline, "Time Inline Disabled", new Value(new Date()) ); timeInlineDisabled.setDisabled(true); sectionDescriptor4.addRow(timeInlineDisabled); - final RowDescriptor rd15 = + RowDescriptor rd15 = RowDescriptor.newInstance("timeDialog", RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog", new Value(new Date())); sectionDescriptor4.addRow(rd15); - RowDescriptor timeDialogDisabled = RowDescriptor.newInstance("timeDialogDisabled", RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog Disabled", new Value(new Date()) ); + RowDescriptor timeDialogDisabled = RowDescriptor.newInstance("timeDialogDisabled", RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog Disabled", new Value(new Date()) ); timeDialogDisabled.setDisabled(true); sectionDescriptor4.addRow(timeDialogDisabled); diff --git a/app/src/main/res/layout/form_sample.xml b/app/src/main/res/layout/form_sample.xml index 251a7b9..333a80a 100644 --- a/app/src/main/res/layout/form_sample.xml +++ b/app/src/main/res/layout/form_sample.xml @@ -9,6 +9,6 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="#b5b5b5" - android:descendantFocusability="beforeDescendants" /> + android:descendantFocusability="beforeDescendants"/> diff --git a/build.gradle b/build.gradle index 51241dc..9cf8c8d 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,7 @@ allprojects { } gradle.projectsEvaluated { tasks.withType(JavaCompile) { - options.compilerArgs << "-Xlint:unchecked" + options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java index f7714cf..5190822 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java @@ -1,5 +1,9 @@ package com.quemb.qmbform; +import android.content.Context; +import android.os.Build; +import android.util.Log; + import com.quemb.qmbform.descriptor.FormItemDescriptor; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.SectionDescriptor; @@ -44,10 +48,6 @@ import com.quemb.qmbform.view.SectionCell; import com.quemb.qmbform.view.SeperatorSectionCell; -import android.content.Context; -import android.os.Build; -import android.util.Log; - import java.lang.reflect.InvocationTargetException; import java.util.HashMap; @@ -68,8 +68,7 @@ public static CellViewFactory getInstance() { return instance; } - @SuppressWarnings("unchecked") - public static void addFormRowDescriptor(String descriptorName, Class descriptorClass) { + public static void addFormRowDescriptor(String descriptorName, Class descriptorClass) { getInstance().mViewRowTypeMap.put(descriptorName, descriptorClass); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java index 64eaaa6..3b43515 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java @@ -1,14 +1,14 @@ package com.quemb.qmbform.annotation; +import android.content.Context; +import android.util.Log; + import com.quemb.qmbform.descriptor.FormDescriptor; import com.quemb.qmbform.descriptor.FormOptionsObject; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.SectionDescriptor; import com.quemb.qmbform.descriptor.Value; -import android.content.Context; -import android.util.Log; - import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; @@ -52,7 +52,6 @@ public FormDescriptor createFormDescriptorFromAnnotatedClass(Object object, Hash return createFormDescriptorFromFields(declaredFields, object, cellConfig); } - @SuppressWarnings("unchecked") public FormDescriptor createFormDescriptorFromFields(List fields, Object object, HashMap cellConfig) { FormDescriptor formDescriptor = FormDescriptor.newInstance(); if (cellConfig != null) @@ -134,24 +133,31 @@ public int compare(Field lhs, Field rhs) { if (section.multiValue) { sectionDescriptor.setTag(field.getName()); int index = 0; - if ((value != null ? value.getValue() : null) instanceof ArrayList) { - @SuppressWarnings("unchecked") ArrayList list = (ArrayList) value.getValue(); - for (Object item : list) { - RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName() + index, - annotation.rowDescriptorType()); - rowDescriptor.setValue(new Value(item)); - rowDescriptor.setHint(annotation.hint()); - sectionDescriptor.addRow(rowDescriptor, cellConfig); - index++; - } + +// if ((value != null ? value.getValue() : null) instanceof ArrayList) { +// ArrayList list = (ArrayList) value.getValue(); +// for (Object item : list) { +// RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName() + index, +// annotation.rowDescriptorType()); +// rowDescriptor.setValue(new Value(item)); +// rowDescriptor.setHint(annotation.hint()); +// sectionDescriptor.addRow(rowDescriptor, cellConfig); +// index++; +// } +// } + + if (value != null && value.getValue() instanceof ArrayList) + { + index += setDescriptorValues((ArrayList) value.getValue(), index, annotation, field, sectionDescriptor); } - RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName() + ++index, + + RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName() + ++index, annotation.rowDescriptorType()); rowDescriptor.setHint(annotation.hint()); addValidators(rowDescriptor, annotation); sectionDescriptor.addRow(rowDescriptor, cellConfig); } else { - RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName(), + RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName(), annotation.rowDescriptorType(), getContext().getString(annotation.label()), value); @@ -181,11 +187,32 @@ public int compare(Field lhs, Field rhs) { } - @SuppressWarnings("unchecked") - public void addValidators(RowDescriptor rowDescriptor, FormElement annotation) { + + /** + * Generics: capture the wildcard of ArrayList + */ + private int setDescriptorValues(ArrayList list, int index, FormElement annotation, Field field, SectionDescriptor sectionDescriptor) + { + if (list == null) + return 0; + + int n = 0; + for (T item : list) { + RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName() + index + n, + annotation.rowDescriptorType()); + rowDescriptor.setValue(new Value(item)); + rowDescriptor.setHint(annotation.hint()); + sectionDescriptor.addRow(rowDescriptor); + n++; + } + return n; + } + + public void addValidators(RowDescriptor rowDescriptor, FormElement annotation) { for (Class validator : annotation.validatorClasses()) { try { - rowDescriptor.addValidator((FormValidator) validator.getConstructor().newInstance()); + @SuppressWarnings("unchecked") FormValidator validatorInstance = (FormValidator) validator.getConstructor().newInstance(); + rowDescriptor.addValidator(validatorInstance); } catch (InstantiationException e) { Log.e(TAG, e.getMessage(), e); } catch (IllegalAccessException e) { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormValidator.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormValidator.java index 7b5d2e9..90ebf44 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormValidator.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormValidator.java @@ -6,9 +6,9 @@ /** * Created by pmaccamp on 8/26/2015. */ -public interface FormValidator { +public interface FormValidator { /** * @return {@link RowValidationError} if there is an error else null */ - public RowValidationError validate(RowDescriptor descriptor); + public RowValidationError validate(RowDescriptor descriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSource.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSource.java index 4e379cd..3cca138 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSource.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSource.java @@ -7,5 +7,5 @@ public abstract class DataSource { /** * Call the listener for callback actions */ - public abstract void loadData(DataSourceListener listener); + public abstract void loadData(DataSourceListener listener); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java index 2b5d5a5..cbc323f 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java @@ -1,11 +1,11 @@ package com.quemb.qmbform.descriptor; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.annotation.FormElement; import com.quemb.qmbform.annotation.FormValidator; -import android.content.Context; - import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; @@ -80,7 +80,7 @@ public class RowDescriptor extends FormItemDescriptor { private Boolean mRequired = false; private Boolean mDisabled = false; - @SuppressWarnings("unchecked") private List mValidators; + private List> mValidators; private List mSelectorOptions; @@ -90,42 +90,40 @@ public class RowDescriptor extends FormItemDescriptor { private boolean mLastRowInSection = false; - public static RowDescriptor newInstance(String tag) { + public static RowDescriptor newInstance(String tag) { return RowDescriptor.newInstance(tag, FormRowDescriptorTypeDetailInline); } - public static RowDescriptor newInstance(String tag, String rowType) { + public static RowDescriptor newInstance(String tag, String rowType) { return RowDescriptor.newInstance(tag, rowType, null); } - public static RowDescriptor newInstance(String tag, String rowType, String title) { + public static RowDescriptor newInstance(String tag, String rowType, String title) { return RowDescriptor.newInstance(tag, rowType, title, null); } - @SuppressWarnings("unchecked") - public static RowDescriptor newInstance(String tag, String rowType, String title, Value value) { + public static RowDescriptor newInstance(String tag, String rowType, String title, Value value) { - RowDescriptor descriptor = new RowDescriptor(); + RowDescriptor descriptor = new RowDescriptor(); descriptor.mTitle = title; descriptor.mTag = tag; descriptor.mRowType = rowType; descriptor.setValue(value); - descriptor.mValidators = new ArrayList(); + descriptor.mValidators = new ArrayList>(); return descriptor; } - @SuppressWarnings("unchecked") - public static RowDescriptor newInstanceFromAnnotatedField(Field field, Value value, Context context) { + public static RowDescriptor newInstanceFromAnnotatedField(Field field, Value value, Context context) { FormElement annotation = field.getAnnotation(FormElement.class); - RowDescriptor rowDescriptor = RowDescriptor.newInstance( + RowDescriptor rowDescriptor = RowDescriptor.newInstance( annotation.tag().length() > 0 ? annotation.tag() : field.getName(), annotation.rowDescriptorType(), context.getString(annotation.label()), @@ -150,7 +148,7 @@ public Value getValue() { return mValue; } - public void setValue(@SuppressWarnings("unchecked") Value value) { + public void setValue(Value value) { mValue = value; } @@ -219,7 +217,7 @@ public boolean isValid() { } } if (getValidators() != null && valid) { - for (FormValidator validator : getValidators()) { + for (FormValidator validator : getValidators()) { if (validator.validate(this) != null) { valid = false; break; @@ -252,7 +250,7 @@ public List getValidationErrors() { } if (getValidators() != null) { - for (FormValidator validator : getValidators()) { + for (FormValidator validator : getValidators()) { RowValidationError error = validator.validate(this); if (error != null) { rowValidationErrors.add(error); @@ -263,21 +261,20 @@ public List getValidationErrors() { return (rowValidationErrors.isEmpty()) ? null : rowValidationErrors; } - @SuppressWarnings("unchecked") - public static RowDescriptor newInstance(RowDescriptor rowDescriptor) { + public static RowDescriptor newInstance(RowDescriptor rowDescriptor) { Long tsLong = System.currentTimeMillis() / 1000; String ts = tsLong.toString(); - RowDescriptor newInstance = RowDescriptor.newInstance(rowDescriptor.getTag() + "_" + ts, rowDescriptor.getRowType()); + RowDescriptor newInstance = RowDescriptor.newInstance(rowDescriptor.getTag() + "_" + ts, rowDescriptor.getRowType()); newInstance.setDataSource(rowDescriptor.getDataSource()); return newInstance; } - public List getValidators() { + public List> getValidators() { return mValidators; } - public void addValidator(FormValidator validator) { + public void addValidator(FormValidator validator) { mValidators.add(validator); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java index 46ae91c..9182cca 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java @@ -1,12 +1,5 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.OnFormRowValueChangedListener; -import com.quemb.qmbform.descriptor.OnValueChangeListener; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.SectionDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.content.Context; import android.graphics.Color; import android.graphics.PorterDuff; @@ -17,6 +10,13 @@ import android.widget.ImageButton; import android.widget.LinearLayout; +import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.OnFormRowValueChangedListener; +import com.quemb.qmbform.descriptor.OnValueChangeListener; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.SectionDescriptor; +import com.quemb.qmbform.descriptor.Value; + /** * Created by tonimoeckel on 14.07.14. */ @@ -37,18 +37,32 @@ public FormBaseCell(Context context, RowDescriptor rowDescriptor) { @Override protected void init() { + super.init(); + initOnChange(getRowDescriptor()); - if (getRowDescriptor() != null && getRowDescriptor().getValue() != null) { - getRowDescriptor().getValue().setOnValueChangeListener(new OnValueChangeListener() { + } + + /** + * Generics: capture the wildcard of RowDescriptor + */ + private void initOnChange(RowDescriptor rowDescriptor) + { + if (rowDescriptor == null) + return; + + Value value = rowDescriptor.getValue(); + if (value != null) + { + value.setOnValueChangeListener(new OnValueChangeListener() + { @Override - public void onChange(Object value) { + public void onChange(T value) + { update(); } }); } - - } protected ViewGroup getSuperViewForLayoutInflation() { @@ -148,8 +162,8 @@ public void lastInSection() { } - public RowDescriptor getRowDescriptor() { - return (RowDescriptor) getFormItemDescriptor(); + public RowDescriptor getRowDescriptor() { + return (RowDescriptor) getFormItemDescriptor(); } @SuppressWarnings("unchecked") diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormExternalButtonFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormExternalButtonFieldCell.java index 9061059..9b202d3 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormExternalButtonFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormExternalButtonFieldCell.java @@ -1,12 +1,12 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.content.Context; import android.content.Intent; import android.net.Uri; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; + /** * Created by tonimoeckel on 18.09.14. */ @@ -22,9 +22,9 @@ public FormExternalButtonFieldCell(Context context, public void onCellSelected() { super.onCellSelected(); - @SuppressWarnings("unchecked") Value value = getRowDescriptor().getValue(); + Value value = getRowDescriptor().getValue(); if (value != null && value.getValue() != null) { - Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(value.getValue())); + Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(value.getValue().toString())); getContext().startActivity(i); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java index 9d3b8e2..fe284a9 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java @@ -1,17 +1,16 @@ package com.quemb.qmbform.view; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.widget.ArrayAdapter; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.DataSourceListener; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; import com.quemb.qmbform.exceptions.NoDataSourceException; -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.widget.ArrayAdapter; - -import java.util.ArrayList; import java.util.List; /** @@ -34,46 +33,57 @@ protected void update() { } @Override - @SuppressWarnings("unchecked") public void onCellSelected() { super.onCellSelected(); if (getRowDescriptor().getDataSource() == null) { throw new NoDataSourceException(); } else { - getRowDescriptor().getDataSource().loadData(new DataSourceListener() { - - @Override - public void onDataSourceLoaded(List list) { - - if (list.size() > 0) { - final ArrayAdapter adapter = new ArrayAdapter(getContext(), android.R.layout.simple_selectable_list_item, list); - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - - builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - onValueChanged(new Value(adapter.getItem(which))); - update(); - dialog.dismiss(); - } - }) - .setTitle(getRowDescriptor().getTitle()); - - AlertDialog dialog = builder.create(); - dialog.show(); - } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder.setTitle(R.string.title_no_entries); - builder.setMessage(R.string.msg_no_entries); - AlertDialog dialog = builder.create(); - dialog.show(); - } + loadData(getRowDescriptor()); + } + } + /** + * Generics: capture the wildcard of RowDescriptor + */ + private void loadData(RowDescriptor rowDescriptor) + { + rowDescriptor.getDataSource().loadData(new DataSourceListener() + { + @Override + public void onDataSourceLoaded(List list) + { + if (list.size() > 0) + { + final ArrayAdapter adapter = new ArrayAdapter(getContext(), android.R.layout.simple_selectable_list_item, list); + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + + builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) + { + + onValueChanged(new Value(adapter.getItem(which))); + update(); + dialog.dismiss(); + } + }) + .setTitle(getRowDescriptor().getTitle()); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + else + { + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(R.string.title_no_entries); + builder.setMessage(R.string.msg_no_entries); + AlertDialog dialog = builder.create(); + dialog.show(); } - }); - } + } + }); } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java index eeb84fc..c92394f 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java @@ -1,11 +1,5 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.DataSourceListener; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; -import com.quemb.qmbform.exceptions.NoDataSourceException; - import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; @@ -13,7 +7,12 @@ import android.widget.ArrayAdapter; import android.widget.ImageButton; -import java.util.ArrayList; +import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.DataSourceListener; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; +import com.quemb.qmbform.exceptions.NoDataSourceException; + import java.util.List; /** @@ -42,10 +41,12 @@ protected int getResource() { } public void addListenerOnButton() { - mImageButton.setOnClickListener(new OnClickListener() { + mImageButton.setOnClickListener(new OnClickListener() + { @Override - public void onClick(View v) { + public void onClick(View v) + { onCellSelected(); } }); @@ -55,43 +56,58 @@ public void onClick(View v) { @Override @SuppressWarnings("unchecked") public void onCellSelected() { + super.onCellSelected(); if (getRowDescriptor().getDataSource() == null) { throw new NoDataSourceException(); } else { - getRowDescriptor().getDataSource().loadData(new DataSourceListener() { - @Override - public void onDataSourceLoaded(List list) { - - if (list.size() > 0) { - final ArrayAdapter adapter = new ArrayAdapter(getContext(), android.R.layout.simple_selectable_list_item, list); - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - - builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - - onValueChanged(new Value(adapter.getItem(which))); - update(); - dialog.dismiss(); - } - }) - .setTitle(getRowDescriptor().getTitle()); - - AlertDialog dialog = builder.create(); - dialog.show(); - } else { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder.setTitle(R.string.title_no_entries); - builder.setMessage(R.string.msg_no_entries); - AlertDialog dialog = builder.create(); - dialog.show(); - } + loadData(getRowDescriptor()); + } + } + /** + * Generics: capture the wildcard of RowDescriptor + */ + private void loadData(RowDescriptor rowDescriptor) + { + rowDescriptor.getDataSource().loadData(new DataSourceListener() + { + @Override + public void onDataSourceLoaded(List list) + { + + if (list.size() > 0) + { + final ArrayAdapter adapter = new ArrayAdapter(getContext(), android.R.layout.simple_selectable_list_item, list); + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + + builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) + { + onValueChanged(new Value(adapter.getItem(which))); + update(); + dialog.dismiss(); + } + }) + .setTitle(getRowDescriptor().getTitle()); + + AlertDialog dialog = builder.create(); + dialog.show(); } - }); - } + else + { + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(R.string.title_no_entries); + builder.setMessage(R.string.msg_no_entries); + AlertDialog dialog = builder.create(); + dialog.show(); + } + + } + }); } } diff --git a/lib/QMBForm/src/main/res/layout/section_cell.xml b/lib/QMBForm/src/main/res/layout/section_cell.xml index 0f0e1f3..4e54b8d 100755 --- a/lib/QMBForm/src/main/res/layout/section_cell.xml +++ b/lib/QMBForm/src/main/res/layout/section_cell.xml @@ -10,6 +10,8 @@ + android:id="@+id/textView" + android:focusable="true" + android:focusableInTouchMode="true"/> diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormBooleanFieldCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormBooleanFieldCellTest.java index 92eb5e7..bb9ab03 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormBooleanFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormBooleanFieldCellTest.java @@ -1,5 +1,7 @@ package com.quemb.qmbform; +import android.app.Activity; + import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.view.FormBooleanFieldCell; @@ -11,8 +13,6 @@ import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; -import android.app.Activity; - import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @@ -34,7 +34,7 @@ public void setUp() { @Test public void shouldBeDisabled(){ - RowDescriptor rowDescriptor = RowDescriptor.newInstance("disabled", RowDescriptor.FormRowDescriptorTypeBooleanSwitch); + RowDescriptor rowDescriptor = RowDescriptor.newInstance("disabled", RowDescriptor.FormRowDescriptorTypeBooleanSwitch); rowDescriptor.setDisabled(true); FormBooleanFieldCell testCell = new FormBooleanFieldCell(activity, rowDescriptor); diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormCheckFieldCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormCheckFieldCellTest.java index bf9cc18..2f357d4 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormCheckFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormCheckFieldCellTest.java @@ -1,5 +1,7 @@ package com.quemb.qmbform; +import android.app.Activity; + import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.view.FormCheckFieldCell; @@ -11,8 +13,6 @@ import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; -import android.app.Activity; - import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @@ -34,7 +34,7 @@ public void setUp() { @Test public void shouldBeDisabled(){ - RowDescriptor rowDescriptor = RowDescriptor.newInstance("disabled", RowDescriptor.FormRowDescriptorTypeBooleanCheck); + RowDescriptor rowDescriptor = RowDescriptor.newInstance("disabled", RowDescriptor.FormRowDescriptorTypeBooleanCheck); rowDescriptor.setDisabled(true); FormCheckFieldCell testCell = new FormCheckFieldCell(activity, rowDescriptor); diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java index 079268e..d0345cc 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java @@ -1,8 +1,9 @@ package com.quemb.qmbform; +import android.app.Activity; + import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; -import com.quemb.qmbform.view.FormDateDialogFieldCell; import com.quemb.qmbform.view.FormTimeDialogFieldCell; import org.junit.After; @@ -13,8 +14,6 @@ import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; -import android.app.Activity; - import java.util.Date; import static org.hamcrest.MatcherAssert.assertThat; @@ -37,7 +36,7 @@ public void setUp() { @Test public void shouldBeDisabled(){ - RowDescriptor rowDescriptor = RowDescriptor.newInstance("timeDialog",RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog", new Value(new Date())); + RowDescriptor rowDescriptor = RowDescriptor.newInstance("timeDialog",RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog", new Value(new Date())); rowDescriptor.setDisabled(true); FormTimeDialogFieldCell testCell = new FormTimeDialogFieldCell(activity, rowDescriptor); diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormEditFieldCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormEditFieldCellTest.java index 946bb9d..0dc21ee 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormEditFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormEditFieldCellTest.java @@ -1,5 +1,7 @@ package com.quemb.qmbform; +import android.app.Activity; + import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.view.FormEditIntegerFieldCell; @@ -11,8 +13,6 @@ import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; -import android.app.Activity; - import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @@ -34,7 +34,7 @@ public void setUp() { @Test public void shouldBeDisabled(){ - RowDescriptor rowDescriptor = RowDescriptor.newInstance("disabled", RowDescriptor.FormRowDescriptorTypeInteger); + RowDescriptor rowDescriptor = RowDescriptor.newInstance("disabled", RowDescriptor.FormRowDescriptorTypeInteger); rowDescriptor.setDisabled(true); FormEditIntegerFieldCell testCell = new FormEditIntegerFieldCell(activity, rowDescriptor); diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormIntegerSliderCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormIntegerSliderCellTest.java index 7a48152..1cd313e 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormIntegerSliderCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormIntegerSliderCellTest.java @@ -1,5 +1,7 @@ package com.quemb.qmbform; +import android.app.Activity; + import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; import com.quemb.qmbform.view.FormIntegerSliderFieldCell; @@ -12,8 +14,6 @@ import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; -import android.app.Activity; - import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @@ -35,7 +35,7 @@ public void setUp() { @Test public void shouldBeDisabled(){ - RowDescriptor rowDescriptor = RowDescriptor.newInstance("integerSlider",RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider", new Value(50)); + RowDescriptor rowDescriptor = RowDescriptor.newInstance("integerSlider",RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider", new Value(50)); rowDescriptor.setDisabled(true); FormIntegerSliderFieldCell testCell = new FormIntegerSliderFieldCell(activity, rowDescriptor); diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormPickerFieldCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormPickerFieldCellTest.java index e9d6332..26d9f41 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormPickerFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormPickerFieldCellTest.java @@ -1,5 +1,7 @@ package com.quemb.qmbform; +import android.app.Activity; + import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.view.FormPickerDialogFieldCell; @@ -11,8 +13,6 @@ import org.robolectric.RobolectricGradleTestRunner; import org.robolectric.annotation.Config; -import android.app.Activity; - import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @@ -34,7 +34,7 @@ public void setUp() { @Test public void shouldBeDisabled(){ - RowDescriptor rowDescriptor = RowDescriptor.newInstance("picker",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me"); + RowDescriptor rowDescriptor = RowDescriptor.newInstance("picker",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me"); rowDescriptor.setDisabled(true); FormPickerDialogFieldCell testCell = new FormPickerDialogFieldCell(activity, rowDescriptor); diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormSelectorSegmentedControlFieldCellTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormSelectorSegmentedControlFieldCellTest.java index 180632d..7ac766a 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormSelectorSegmentedControlFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormSelectorSegmentedControlFieldCellTest.java @@ -29,9 +29,8 @@ public void setUp() { } @Test - @SuppressWarnings("unchecked") public void hasCorrectSegmentSelected() { - RowDescriptor rowDescriptor = RowDescriptor.newInstance("segmented", + RowDescriptor rowDescriptor = RowDescriptor.newInstance("segmented", RowDescriptor.FormRowDescriptorTypeSelectorSegmentedControl, "Segmented Control Test", new Value("1")); From 86947b96728ebd1f181ac6c94812231c2633e5d1 Mon Sep 17 00:00:00 2001 From: Philippe Date: Fri, 5 Aug 2016 20:03:37 +0200 Subject: [PATCH 6/6] Improvements: - more generics debugged, - a new DateTime inline cell, - Date and Time inline cells don't fight with ListView for scrolling, - change Value.mValue to Value.mData - and getValue() to getData() to avoid the confusion of getValue().getValue(). --- .../SampleAnnotationFormFragment.java | 25 ++-- .../sample/controller/SampleFormFragment.java | 124 ++++++++++------ .../SampleMultivalueSectionFormFragment.java | 36 ++--- .../com/quemb/qmbform/CellViewFactory.java | 2 + .../com/quemb/qmbform/DatePickerInline.java | 49 +++++++ .../java/com/quemb/qmbform/FormManager.java | 24 +-- .../com/quemb/qmbform/TimePickerInline.java | 48 ++++++ .../quemb/qmbform/adapter/FormAdapter.java | 23 +-- .../FormDescriptorAnnotationFactory.java | 20 +-- .../annotation/FormElementDelegate.java | 2 +- .../validators/BlankStringValidator.java | 12 +- .../annotation/validators/EmailValidator.java | 12 +- .../validators/PositiveNumberValidator.java | 6 +- .../quemb/qmbform/descriptor/DataSource.java | 4 +- .../descriptor/DataSourceListener.java | 4 +- .../qmbform/descriptor/FormDescriptor.java | 4 +- .../descriptor/OnFormRowChangeListener.java | 6 +- .../OnFormRowValueChangedListener.java | 2 +- .../qmbform/descriptor/RowDescriptor.java | 23 +-- .../descriptor/RowValidationError.java | 6 +- .../qmbform/descriptor/SectionDescriptor.java | 32 ++-- .../com/quemb/qmbform/descriptor/Value.java | 44 ++++-- .../java/com/quemb/qmbform/utils/Styling.java | 102 +++++++++++++ .../java/com/quemb/qmbform/view/Cell.java | 41 +++--- .../com/quemb/qmbform/view/FormBaseCell.java | 19 +-- .../qmbform/view/FormBooleanFieldCell.java | 20 +-- .../qmbform/view/FormButtonFieldCell.java | 13 +- .../view/FormButtonInlineFieldCell.java | 6 +- .../qmbform/view/FormCheckFieldCell.java | 14 +- .../qmbform/view/FormDateDialogFieldCell.java | 8 +- .../quemb/qmbform/view/FormDateFieldCell.java | 18 ++- .../qmbform/view/FormDateInlineFieldCell.java | 13 +- .../view/FormDateTimeInlineFieldCell.java | 138 ++++++++++++++++++ .../FormDetailHtmlTextVerticalFieldCell.java | 14 +- .../qmbform/view/FormDetailTextFieldCell.java | 7 +- .../view/FormDetailTextInlineFieldCell.java | 95 ++++-------- .../view/FormDetailTextVerticalFieldCell.java | 6 +- .../view/FormEditCurrencyFieldCell.java | 12 +- .../qmbform/view/FormEditEmailFieldCell.java | 6 +- .../view/FormEditEmailInlineFieldCell.java | 6 +- .../view/FormEditHTMLTextViewFieldCell.java | 12 +- .../view/FormEditIntegerFieldCell.java | 10 +- .../view/FormEditIntegerInlineFieldCell.java | 6 +- .../qmbform/view/FormEditNumberFieldCell.java | 10 +- .../view/FormEditNumberInlineFieldCell.java | 6 +- .../view/FormEditPasswordFieldCell.java | 6 +- .../view/FormEditPasswordInlineFieldCell.java | 6 +- .../qmbform/view/FormEditPhoneFieldCell.java | 6 +- .../qmbform/view/FormEditTextFieldCell.java | 22 +-- .../view/FormEditTextInlineFieldCell.java | 6 +- .../view/FormEditTextViewFieldCell.java | 6 +- .../view/FormEditTextViewInlineFieldCell.java | 6 +- .../qmbform/view/FormEditURLFieldCell.java | 6 +- .../view/FormExternalButtonFieldCell.java | 6 +- .../view/FormIntegerSliderFieldCell.java | 11 +- .../view/FormPickerDialogFieldCell.java | 11 +- .../FormPickerDialogVerticalFieldCell.java | 6 +- ...FormSelectorSegmentedControlFieldCell.java | 14 +- ...lectorSegmentedControlInlineFieldCell.java | 6 +- .../qmbform/view/FormSpinnerFieldCell.java | 14 +- .../view/FormSpinnerInlineFieldCell.java | 6 +- .../view/FormTextPickerDialogFieldCell.java | 6 +- .../qmbform/view/FormTimeDialogFieldCell.java | 6 +- .../quemb/qmbform/view/FormTimeFieldCell.java | 12 +- .../qmbform/view/FormTimeInlineFieldCell.java | 15 +- .../qmbform/view/FormTitleFieldCell.java | 11 +- .../qmbform/view/SeperatorSectionCell.java | 14 +- .../res/layout/date_inline_field_cell.xml | 2 +- .../res/layout/datetime_inline_field_cell.xml | 46 ++++++ .../res/layout/time_inline_field_cell.xml | 3 +- 70 files changed, 873 insertions(+), 470 deletions(-) create mode 100644 lib/QMBForm/src/main/java/com/quemb/qmbform/DatePickerInline.java create mode 100644 lib/QMBForm/src/main/java/com/quemb/qmbform/TimePickerInline.java create mode 100644 lib/QMBForm/src/main/java/com/quemb/qmbform/utils/Styling.java create mode 100644 lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateTimeInlineFieldCell.java create mode 100644 lib/QMBForm/src/main/res/layout/datetime_inline_field_cell.xml diff --git a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleAnnotationFormFragment.java b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleAnnotationFormFragment.java index dda8ebd..161090a 100644 --- a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleAnnotationFormFragment.java +++ b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleAnnotationFormFragment.java @@ -1,17 +1,5 @@ package com.quemb.qmbform.sample.controller; -import com.quemb.qmbform.FormManager; -import com.quemb.qmbform.OnFormRowClickListener; -import com.quemb.qmbform.annotation.FormDescriptorAnnotationFactory; -import com.quemb.qmbform.descriptor.CellDescriptor; -import com.quemb.qmbform.descriptor.FormDescriptor; -import com.quemb.qmbform.descriptor.FormItemDescriptor; -import com.quemb.qmbform.descriptor.OnFormRowValueChangedListener; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; -import com.quemb.qmbform.sample.R; -import com.quemb.qmbform.sample.model.Entry; - import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; @@ -23,6 +11,17 @@ import android.view.ViewGroup; import android.widget.ListView; +import com.quemb.qmbform.FormManager; +import com.quemb.qmbform.OnFormRowClickListener; +import com.quemb.qmbform.annotation.FormDescriptorAnnotationFactory; +import com.quemb.qmbform.descriptor.FormDescriptor; +import com.quemb.qmbform.descriptor.FormItemDescriptor; +import com.quemb.qmbform.descriptor.OnFormRowValueChangedListener; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; +import com.quemb.qmbform.sample.R; +import com.quemb.qmbform.sample.model.Entry; + import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -135,7 +134,7 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) { } @Override - public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue) { + public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue) { Log.d(TAG, "Value Changed: " + rowDescriptor.getTitle()); // Log.d(TAG, "Old Value: "+oldValue); // Log.d(TAG, "New Value: "+newValue); diff --git a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java index adf2444..0d56c4a 100644 --- a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java +++ b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleFormFragment.java @@ -70,75 +70,73 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, } @Override - @SuppressWarnings("unchecked") public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mChangesMap = new HashMap>(); - // More styles and colors for cells - HashMap cellConfig = new HashMap<>(8); - - // Custom TextAppearance for section, label, value and button - cellConfig.put(CellDescriptor.APPEARANCE_SECTION, Integer.valueOf(R.style.TextAppearance_Form_Section)); - cellConfig.put(CellDescriptor.APPEARANCE_TEXT_LABEL, Integer.valueOf(R.style.TextAppearance_Form_Label)); - cellConfig.put(CellDescriptor.APPEARANCE_TEXT_VALUE, Integer.valueOf(R.style.TextAppearance_Form_Value)); - cellConfig.put(CellDescriptor.APPEARANCE_BUTTON, Integer.valueOf(R.style.TextAppearance_Form_Button)); - - // Custom color for label and value - cellConfig.put(CellDescriptor.COLOR_LABEL, Integer.valueOf(0x80C0FFC0)); - cellConfig.put(CellDescriptor.COLOR_VALUE, Integer.valueOf(0xC0C0FFC0)); - - // Custom disabled color for label and value - cellConfig.put(CellDescriptor.COLOR_LABEL_DISABLED, Integer.valueOf(0x80FFC0C0)); - cellConfig.put(CellDescriptor.COLOR_VALUE_DISABLED, Integer.valueOf(0xC0FFC0C0)); - - // Associate the cellConfig to the FormManager, so SectionDescriptors and RowDescriptors - // are also associated to the same cellConfig - FormDescriptor descriptor = FormDescriptor.newInstance(); - descriptor.setCellConfig(cellConfig); - SectionDescriptor sectionDescriptor = SectionDescriptor.newInstance("section","Text Inputs"); + if (false) + { + // More styles and colors for cells + HashMap cellConfig = new HashMap<>(8); + + // Custom TextAppearance for section, label, value and button + cellConfig.put(CellDescriptor.APPEARANCE_SECTION, Integer.valueOf(R.style.TextAppearance_Form_Section)); + cellConfig.put(CellDescriptor.APPEARANCE_TEXT_LABEL, Integer.valueOf(R.style.TextAppearance_Form_Label)); + cellConfig.put(CellDescriptor.APPEARANCE_TEXT_VALUE, Integer.valueOf(R.style.TextAppearance_Form_Value)); + cellConfig.put(CellDescriptor.APPEARANCE_BUTTON, Integer.valueOf(R.style.TextAppearance_Form_Button)); + + // Custom color for label and value + cellConfig.put(CellDescriptor.COLOR_LABEL, Integer.valueOf(0x80C0FFC0)); + cellConfig.put(CellDescriptor.COLOR_VALUE, Integer.valueOf(0xC0C0FFC0)); + + // Custom disabled color for label and value + cellConfig.put(CellDescriptor.COLOR_LABEL_DISABLED, Integer.valueOf(0x80FFC0C0)); + cellConfig.put(CellDescriptor.COLOR_VALUE_DISABLED, Integer.valueOf(0xC0FFC0C0)); + + // Associate the cellConfig to the FormManager, so SectionDescriptors and RowDescriptors + // are also associated to the same cellConfig + descriptor.setCellConfig(cellConfig); + } + + SectionDescriptor sectionDescriptor = SectionDescriptor.newInstance("section","Text Inputs (default theme)"); descriptor.addSection(sectionDescriptor); RowDescriptor rd1 = - RowDescriptor.newInstance("detail", RowDescriptor.FormRowDescriptorTypeTextInline, "Title", new Value("Detail")); + RowDescriptor.newInstance("titleInline", RowDescriptor.FormRowDescriptorTypeTextInline, "Title Inline", new Value("Detail")); sectionDescriptor.addRow(rd1); RowDescriptor rd2 = - RowDescriptor.newInstance("detail", RowDescriptor.FormRowDescriptorTypeText, "Title", new Value("Detail")); + RowDescriptor.newInstance("title", RowDescriptor.FormRowDescriptorTypeText, "Title", new Value("Detail")); sectionDescriptor.addRow(rd2); - RowDescriptor rd3 = - RowDescriptor.newInstance("text", RowDescriptor.FormRowDescriptorTypeText, "Text", new Value("test")); - sectionDescriptor.addRow(rd3); - - RowDescriptor textDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeText, "Text Disabled", new Value("test")); + RowDescriptor textDisabled = RowDescriptor.newInstance("titleDisabled",RowDescriptor.FormRowDescriptorTypeText, "Text Disabled", new Value("test")); textDisabled.setDisabled(true); sectionDescriptor.addRow(textDisabled); RowDescriptor rd4 = - RowDescriptor.newInstance("text",RowDescriptor.FormRowDescriptorTypeURL, "URL", new Value("http://www.github.com/")); + RowDescriptor.newInstance("url",RowDescriptor.FormRowDescriptorTypeURL, "URL", new Value("http://www.github.com/")); sectionDescriptor.addRow(rd4); - RowDescriptor textUrlDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeURL, "URL Disabled", new Value("http://www.github.com/")); + RowDescriptor textUrlDisabled = RowDescriptor.newInstance("urlDisabled",RowDescriptor.FormRowDescriptorTypeURL, "URL Disabled", new Value("http://www.github.com/")); textUrlDisabled.setDisabled(true); sectionDescriptor.addRow(textUrlDisabled); RowDescriptor rd5 = - RowDescriptor.newInstance("text", RowDescriptor.FormRowDescriptorTypeEmail, "Email", new Value("support@github.com")); + RowDescriptor.newInstance("email", RowDescriptor.FormRowDescriptorTypeEmail, "Email", new Value("support@github.com")); sectionDescriptor.addRow(rd5); - RowDescriptor textEmailDisabled = RowDescriptor.newInstance("textDisabled",RowDescriptor.FormRowDescriptorTypeEmail, "Email Disabled", new Value("support@github.com")); + RowDescriptor textEmailDisabled = RowDescriptor.newInstance("emailDisabled",RowDescriptor.FormRowDescriptorTypeEmail, "Email Disabled", new Value("support@github.com")); textEmailDisabled.setDisabled(true); sectionDescriptor.addRow(textEmailDisabled); RowDescriptor rd6 = - RowDescriptor.newInstance("textView", RowDescriptor.FormRowDescriptorTypeTextView, "Text View", new Value("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et ...")); + RowDescriptor.newInstance("text", RowDescriptor.FormRowDescriptorTypeTextView, "Text", new Value("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et ...")); sectionDescriptor.addRow(rd6); - RowDescriptor textViewDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeTextView, "Text View Disabled", new Value("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et ...")); + RowDescriptor textViewDisabled = RowDescriptor.newInstance("textDisabled",RowDescriptor.FormRowDescriptorTypeTextView, "Text Disabled", new Value("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et ...")); textViewDisabled.setDisabled(true); sectionDescriptor.addRow(textViewDisabled); @@ -161,7 +159,7 @@ public void onViewCreated(View view, Bundle savedInstanceState) { RowDescriptor.newInstance("integerSlider", RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider", new Value(50)); sectionDescriptor.addRow(rd8); - RowDescriptor integerSliderDisabled = RowDescriptor.newInstance("integerSliderDisabled",RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider Disabled", new Value(50)); + RowDescriptor integerSliderDisabled = RowDescriptor.newInstance("integerSliderDisabled",RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider Disabled", new Value(50)); integerSliderDisabled.setDisabled(true); sectionDescriptor.addRow(integerSliderDisabled); @@ -171,8 +169,9 @@ public void onViewCreated(View view, Bundle savedInstanceState) { descriptor.addSection(sectionDescriptor1); final Activity activity = getActivity(); + RowDescriptor pickerDescriptor = RowDescriptor.newInstance("picker",RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, "Picker", new Value("Item 5")); - pickerDescriptor.setDataSource(new DataSource() + pickerDescriptor.setDataSource(new DataSource() { @Override public void loadData(final DataSourceListener listener) @@ -209,9 +208,26 @@ public void loadData(final DataSourceListener listener) checkDisabled.setDisabled(true); sectionDescriptor2.addRow(checkDisabled); - SectionDescriptor sectionDescriptor3 = SectionDescriptor.newInstance("sectionThree","Button"); + // --- Buttons --- + + SectionDescriptor sectionDescriptor3 = SectionDescriptor.newInstance("sectionThree","Buttons (custom TextAppearance & Color)"); descriptor.addSection(sectionDescriptor3); + if (true) + { + HashMap cellConfigWithTextAppearance = new HashMap<>(4); + + // TextAppearance for section, label, value and button + + cellConfigWithTextAppearance.put(CellDescriptor.APPEARANCE_SECTION, Integer.valueOf(R.style.TextAppearance_Form_Section)); + //cellConfigWithTextAppearance.put(CellDescriptor.APPEARANCE_TEXT_LABEL, Integer.valueOf(R.style.TextAppearance_Form_Label)); + //cellConfigWithTextAppearance.put(CellDescriptor.APPEARANCE_TEXT_VALUE, Integer.valueOf(R.style.TextAppearance_Form_Value)); + cellConfigWithTextAppearance.put(CellDescriptor.APPEARANCE_BUTTON, Integer.valueOf(R.style.TextAppearance_Form_Button)); + cellConfigWithTextAppearance.put(CellDescriptor.COLOR_VALUE_DISABLED, Integer.valueOf(0xC0FFC0C0)); + + sectionDescriptor3.setCellConfig(cellConfigWithTextAppearance); + } + RowDescriptor button = RowDescriptor.newInstance("button",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me"); button.setOnFormRowClickListener(new OnFormRowClickListener() { @@ -222,7 +238,7 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) // itemDescriptor.setTitle("New Title"); // mFormManager.updateRows(); - integerRow.getValue().setValue(Integer.valueOf(100)); + integerRow.getValue().setData(100); integerRow.setDisabled(true); android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(activity); @@ -250,9 +266,26 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) RowDescriptor.newInstance("external", RowDescriptor.FormRowDescriptorTypeExternal, "github.com", new Value("http://github.com")); sectionDescriptor3.addRow(rd11); - SectionDescriptor sectionDescriptor4 = SectionDescriptor.newInstance("sectionFour","Dates"); + // --- Dates --- + + SectionDescriptor sectionDescriptor4 = SectionDescriptor.newInstance("sectionFour","Dates (custom colors)"); descriptor.addSection(sectionDescriptor4); + if (true) + { + HashMap cellConfigWithColors = new HashMap<>(4); + + // Custom color for label and value + cellConfigWithColors.put(CellDescriptor.COLOR_LABEL, Integer.valueOf(0xFFFDD835)); + cellConfigWithColors.put(CellDescriptor.COLOR_VALUE, Integer.valueOf(0xFFFFB300)); + + // Custom disabled color for label and value + cellConfigWithColors.put(CellDescriptor.COLOR_LABEL_DISABLED, Integer.valueOf(0x80FFC0C0)); + cellConfigWithColors.put(CellDescriptor.COLOR_VALUE_DISABLED, Integer.valueOf(0xC0FFD0D0)); + + sectionDescriptor4.setCellConfig(cellConfigWithColors); + } + RowDescriptor rd12 = RowDescriptor.newInstance("dateInline", RowDescriptor.FormRowDescriptorTypeDateInline, "Date Inline", new Value(new Date())); sectionDescriptor4.addRow(rd12); @@ -285,13 +318,14 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) timeDialogDisabled.setDisabled(true); sectionDescriptor4.addRow(timeDialogDisabled); + RowDescriptor rd17 = + RowDescriptor.newInstance("datetimeInline", RowDescriptor.FormRowDescriptorTypeDateTimeInline, "DateTime Inline", new Value(new Date())); + sectionDescriptor4.addRow(rd17); + mFormManager = new FormManager(); mFormManager.setup(descriptor, mListView, getActivity()); mFormManager.setOnFormRowClickListener(this); mFormManager.setOnFormRowValueChangedListener(this); - - - } @Override @@ -324,7 +358,7 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) { } @Override - public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue) { + public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue) { Log.d(TAG, "Value Changed: " + rowDescriptor.getTitle()); // diff --git a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleMultivalueSectionFormFragment.java b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleMultivalueSectionFormFragment.java index 7f1ce7a..4758723 100644 --- a/app/src/main/java/com/quemb/qmbform/sample/controller/SampleMultivalueSectionFormFragment.java +++ b/app/src/main/java/com/quemb/qmbform/sample/controller/SampleMultivalueSectionFormFragment.java @@ -1,19 +1,5 @@ package com.quemb.qmbform.sample.controller; -import com.quemb.qmbform.descriptor.CellDescriptor; -import com.quemb.qmbform.descriptor.DataSource; -import com.quemb.qmbform.FormManager; -import com.quemb.qmbform.OnFormRowClickListener; -import com.quemb.qmbform.descriptor.DataSourceListener; -import com.quemb.qmbform.descriptor.FormDescriptor; -import com.quemb.qmbform.descriptor.FormItemDescriptor; -import com.quemb.qmbform.descriptor.OnFormRowChangeListener; -import com.quemb.qmbform.descriptor.OnFormRowValueChangedListener; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.SectionDescriptor; -import com.quemb.qmbform.descriptor.Value; -import com.quemb.qmbform.sample.R; - import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; @@ -27,6 +13,20 @@ import android.view.ViewGroup; import android.widget.ListView; +import com.quemb.qmbform.FormManager; +import com.quemb.qmbform.OnFormRowClickListener; +import com.quemb.qmbform.descriptor.CellDescriptor; +import com.quemb.qmbform.descriptor.DataSource; +import com.quemb.qmbform.descriptor.DataSourceListener; +import com.quemb.qmbform.descriptor.FormDescriptor; +import com.quemb.qmbform.descriptor.FormItemDescriptor; +import com.quemb.qmbform.descriptor.OnFormRowChangeListener; +import com.quemb.qmbform.descriptor.OnFormRowValueChangedListener; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.SectionDescriptor; +import com.quemb.qmbform.descriptor.Value; +import com.quemb.qmbform.sample.R; + import java.util.ArrayList; import java.util.HashMap; @@ -185,7 +185,7 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) { } @Override - public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue) { + public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue) { Log.d(TAG, "Value Changed: " + rowDescriptor.getTitle()); // @@ -202,17 +202,17 @@ private void updateSaveItem() { } @Override - public void onRowAdded(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { + public void onRowAdded(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { } @Override - public void onRowRemoved(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { + public void onRowRemoved(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { } @Override - public void onRowChanged(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { + public void onRowChanged(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java index 5190822..aa3c6b8 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java @@ -15,6 +15,7 @@ import com.quemb.qmbform.view.FormCheckFieldCell; import com.quemb.qmbform.view.FormDateDialogFieldCell; import com.quemb.qmbform.view.FormDateInlineFieldCell; +import com.quemb.qmbform.view.FormDateTimeInlineFieldCell; import com.quemb.qmbform.view.FormDetailHtmlTextVerticalFieldCell; import com.quemb.qmbform.view.FormDetailTextFieldCell; import com.quemb.qmbform.view.FormDetailTextInlineFieldCell; @@ -92,6 +93,7 @@ public CellViewFactory() { mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeDateInline, FormDateInlineFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeTime, FormTimeDialogFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeTimeInline, FormTimeInlineFieldCell.class); + mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeDateTimeInline, FormDateTimeInlineFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeNumber, FormEditNumberFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeNumberInline, FormEditNumberInlineFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeCurrency, FormEditCurrencyFieldCell.class); diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/DatePickerInline.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/DatePickerInline.java new file mode 100644 index 0000000..0d6b8a5 --- /dev/null +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/DatePickerInline.java @@ -0,0 +1,49 @@ +package com.quemb.qmbform; + +import android.annotation.TargetApi; +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.ViewParent; +import android.widget.DatePicker; + +/** + * DatePicker to be used inline in a scrolling view (ex: ListView) + * to prevent interaction between view and picker scrolls. + * Created by MTL / PTN on 19/07/16. + */ +public class DatePickerInline extends DatePicker +{ + public DatePickerInline(Context context) { + super(context); + } + + public DatePickerInline(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public DatePickerInline(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public DatePickerInline(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + /** + * Stop ScrollView from getting involved once you interact with the View + */ + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) + { + if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) + { + ViewParent p = getParent(); + if (p != null) + p.requestDisallowInterceptTouchEvent(true); + } + return false; + } +} diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/FormManager.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/FormManager.java index 90a8454..98e009b 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/FormManager.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/FormManager.java @@ -1,5 +1,12 @@ package com.quemb.qmbform; +import android.app.Activity; +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ListView; + import com.quemb.qmbform.adapter.FormAdapter; import com.quemb.qmbform.descriptor.FormDescriptor; import com.quemb.qmbform.descriptor.FormItemDescriptor; @@ -10,13 +17,6 @@ import com.quemb.qmbform.descriptor.Value; import com.quemb.qmbform.view.Cell; -import android.app.Activity; -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ListView; - /** * Created by tonimoeckel on 15.07.14. */ @@ -53,7 +53,7 @@ public void onItemClick(AdapterView parent, View view, int position, long id) Cell cell = itemDescriptor.getCell(); if (cell != null && itemDescriptor instanceof RowDescriptor) { - RowDescriptor rowDescriptor = (RowDescriptor) itemDescriptor; + RowDescriptor rowDescriptor = (RowDescriptor) itemDescriptor; if (!rowDescriptor.getDisabled()) { cell.onCellSelected(); } @@ -98,7 +98,7 @@ public void setOnFormRowChangeListener(OnFormRowChangeListener onFormRowChangeLi } @Override - public void onRowAdded(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { + public void onRowAdded(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { updateRows(); if (mOnFormRowChangeListener != null) { mOnFormRowChangeListener.onRowAdded(rowDescriptor, sectionDescriptor); @@ -106,7 +106,7 @@ public void onRowAdded(RowDescriptor rowDescriptor, SectionDescriptor sectionDes } @Override - public void onRowRemoved(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { + public void onRowRemoved(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { updateRows(); if (mOnFormRowChangeListener != null) { mOnFormRowChangeListener.onRowRemoved(rowDescriptor, sectionDescriptor); @@ -114,7 +114,7 @@ public void onRowRemoved(RowDescriptor rowDescriptor, SectionDescriptor sectionD } @Override - public void onRowChanged(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { + public void onRowChanged(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { updateRows(); if (mOnFormRowChangeListener != null) { mOnFormRowChangeListener.onRowChanged(rowDescriptor, sectionDescriptor); @@ -122,7 +122,7 @@ public void onRowChanged(RowDescriptor rowDescriptor, SectionDescriptor sectionD } @Override - public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue) { + public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue) { if (mOnFormRowValueChangedListener != null) { mOnFormRowValueChangedListener.onValueChanged(rowDescriptor, oldValue, newValue); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/TimePickerInline.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/TimePickerInline.java new file mode 100644 index 0000000..ed25c65 --- /dev/null +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/TimePickerInline.java @@ -0,0 +1,48 @@ +package com.quemb.qmbform; + +import android.annotation.TargetApi; +import android.content.Context; +import android.os.Build; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.ViewParent; +import android.widget.TimePicker; + +/** + * TimePicker that does not fight for scrolling in a ScrollView. + * Created by MTL / PTN on 19/07/16. + */ +public class TimePickerInline extends TimePicker +{ + public TimePickerInline(Context context) { + super(context); + } + + public TimePickerInline(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public TimePickerInline(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public TimePickerInline(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + /** + * Stop ScrollView from getting involved once you interact with the View + */ + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) + { + if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) + { + ViewParent p = getParent(); + if (p != null) + p.requestDisallowInterceptTouchEvent(true); + } + return false; + } +} diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/adapter/FormAdapter.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/adapter/FormAdapter.java index 4299e7e..df0bbc6 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/adapter/FormAdapter.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/adapter/FormAdapter.java @@ -1,16 +1,16 @@ package com.quemb.qmbform.adapter; +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; + import com.quemb.qmbform.CellViewFactory; import com.quemb.qmbform.descriptor.FormDescriptor; import com.quemb.qmbform.descriptor.FormItemDescriptor; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.SectionDescriptor; -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; - import java.util.ArrayList; /** @@ -28,11 +28,13 @@ public static FormAdapter newInstance(FormDescriptor formDescriptor, Context con formAdapter.mFormDescriptor = formDescriptor; formAdapter.mContext = context; formAdapter.setEnableSectionSeperator(true); + formAdapter.setup(); + return formAdapter; } - @Override - public int getCount() { + public void setup() { + mItems = new ArrayList(); int sectionCount = 1; for (SectionDescriptor sectionDescriptor : mFormDescriptor.getSections()) { @@ -53,13 +55,15 @@ public int getCount() { } sectionCount++; } + } + @Override + public int getCount() { return mItems.size(); } @Override public FormItemDescriptor getItem(int position) { - return mItems.get(position); } @@ -70,12 +74,9 @@ public long getItemId(int position) { @Override public View getView(int position, View convertView, ViewGroup parent) { - - return CellViewFactory.getInstance().createViewForFormItemDescriptor(mContext, getItem(position)); } - public Boolean getEnableSectionSeperator() { return mEnableSectionSeperator; } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java index 3b43515..33191d1 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormDescriptorAnnotationFactory.java @@ -54,6 +54,7 @@ public FormDescriptor createFormDescriptorFromAnnotatedClass(Object object, Hash public FormDescriptor createFormDescriptorFromFields(List fields, Object object, HashMap cellConfig) { FormDescriptor formDescriptor = FormDescriptor.newInstance(); + if (cellConfig != null) formDescriptor.setCellConfig(cellConfig); @@ -134,21 +135,10 @@ public int compare(Field lhs, Field rhs) { sectionDescriptor.setTag(field.getName()); int index = 0; -// if ((value != null ? value.getValue() : null) instanceof ArrayList) { -// ArrayList list = (ArrayList) value.getValue(); -// for (Object item : list) { -// RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName() + index, -// annotation.rowDescriptorType()); -// rowDescriptor.setValue(new Value(item)); -// rowDescriptor.setHint(annotation.hint()); -// sectionDescriptor.addRow(rowDescriptor, cellConfig); -// index++; -// } -// } - - if (value != null && value.getValue() instanceof ArrayList) + if (value != null && value.getData() instanceof ArrayList) { - index += setDescriptorValues((ArrayList) value.getValue(), index, annotation, field, sectionDescriptor); + // Wildcard capture and helper method + index += setDescriptorValues((ArrayList) value.getData(), index, annotation, field, sectionDescriptor); } RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName() + ++index, @@ -189,7 +179,7 @@ public int compare(Field lhs, Field rhs) { /** - * Generics: capture the wildcard of ArrayList + * Capture the wildcard of ArrayList */ private int setDescriptorValues(ArrayList list, int index, FormElement annotation, Field field, SectionDescriptor sectionDescriptor) { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormElementDelegate.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormElementDelegate.java index a3f7c92..cfcab23 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormElementDelegate.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormElementDelegate.java @@ -9,6 +9,6 @@ */ public interface FormElementDelegate { - public boolean shouldAddRowDescriptorForField(RowDescriptor rowDescriptor, Field field); + public boolean shouldAddRowDescriptorForField(RowDescriptor rowDescriptor, Field field); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/BlankStringValidator.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/BlankStringValidator.java index d7ddee0..08fbaa0 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/BlankStringValidator.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/BlankStringValidator.java @@ -10,13 +10,13 @@ /** * Created by pmaccamp on 8/26/2015. */ -public class BlankStringValidator implements FormValidator { +public class BlankStringValidator implements FormValidator { @Override - public RowValidationError validate(RowDescriptor descriptor) { - Value value = descriptor.getValue(); - if (value.getValue() != null && - value.getValue() instanceof String) { - String str = (String) value.getValue(); + public RowValidationError validate(RowDescriptor descriptor) { + Value value = descriptor.getValue(); + if (value.getData() != null && + value.getData() instanceof String) { + String str = (String) value.getData(); // if a valid string return null if (str.replace(" ", "").length() > 0) { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/EmailValidator.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/EmailValidator.java index aed5c65..8b51d5a 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/EmailValidator.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/EmailValidator.java @@ -10,21 +10,19 @@ /** * Created by pmaccamp on 8/26/2015. */ - - -public class EmailValidator implements FormValidator { +public class EmailValidator implements FormValidator { private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; @Override - public RowValidationError validate(RowDescriptor descriptor) { + public RowValidationError validate(RowDescriptor descriptor) { RowValidationError result = null; - Value value = descriptor.getValue(); - if (value.getValue() != null && value.getValue() instanceof String) { - String val = (String) value.getValue(); + Value value = descriptor.getValue(); + if (value.getData() != null && value.getData() instanceof String) { + String val = (String) value.getData(); if (!val.matches(EMAIL_PATTERN)){ result = new RowValidationError(descriptor, R.string.validation_invalid_email); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/PositiveNumberValidator.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/PositiveNumberValidator.java index a070282..e19ef7b 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/PositiveNumberValidator.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/validators/PositiveNumberValidator.java @@ -9,10 +9,10 @@ /** * Created by pmaccamp on 8/26/2015. */ -public class PositiveNumberValidator implements FormValidator { +public class PositiveNumberValidator implements FormValidator { @Override - public RowValidationError validate(RowDescriptor descriptor) { - Object valueData = descriptor.getValue().getValue(); + public RowValidationError validate(RowDescriptor descriptor) { + T valueData = descriptor.getValueData(); if (valueData != null) { if (valueData instanceof Number && ((Number) valueData).doubleValue() > 0) { return null; diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSource.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSource.java index 3cca138..a86dde2 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSource.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSource.java @@ -3,9 +3,9 @@ /** * Created by tonimoeckel on 22.07.14. */ -public abstract class DataSource { +public abstract class DataSource { /** * Call the listener for callback actions */ - public abstract void loadData(DataSourceListener listener); + public abstract void loadData(DataSourceListener listener); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSourceListener.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSourceListener.java index 72ba12e..4468daf 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSourceListener.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/DataSourceListener.java @@ -5,8 +5,8 @@ /** * Created by tonimoeckel on 22.07.14. */ -public interface DataSourceListener { +public interface DataSourceListener { - public void onDataSourceLoaded(List list); + public void onDataSourceLoaded(List list); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormDescriptor.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormDescriptor.java index 2bb2fe4..691c418 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormDescriptor.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormDescriptor.java @@ -137,13 +137,13 @@ public FormValidation getFormValidation(Context context) { } - protected void didInsertRow(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { + protected void didInsertRow(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { if (mOnFormRowChangeListener != null) { mOnFormRowChangeListener.onRowAdded(rowDescriptor, sectionDescriptor); } } - protected void didRemoveRow(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { + protected void didRemoveRow(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor) { if (mOnFormRowChangeListener != null) { mOnFormRowChangeListener.onRowRemoved(rowDescriptor, sectionDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/OnFormRowChangeListener.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/OnFormRowChangeListener.java index 650f795..3453a4c 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/OnFormRowChangeListener.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/OnFormRowChangeListener.java @@ -5,10 +5,10 @@ */ public interface OnFormRowChangeListener { - public void onRowAdded(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor); + public void onRowAdded(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor); - public void onRowRemoved(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor); + public void onRowRemoved(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor); - public void onRowChanged(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor); + public void onRowChanged(RowDescriptor rowDescriptor, SectionDescriptor sectionDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/OnFormRowValueChangedListener.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/OnFormRowValueChangedListener.java index b8eb1b6..003351f 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/OnFormRowValueChangedListener.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/OnFormRowValueChangedListener.java @@ -5,6 +5,6 @@ */ public interface OnFormRowValueChangedListener { - public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue); + public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value newValue); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java index cbc323f..c21f8ec 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowDescriptor.java @@ -73,10 +73,11 @@ public class RowDescriptor extends FormItemDescriptor { private String mRowType; private Value mValue; + /** * A list of valid values to pick from (e.g. used for spinners) */ - private DataSource mDataSource; + private DataSource mDataSource; private Boolean mRequired = false; private Boolean mDisabled = false; @@ -152,8 +153,12 @@ public void setValue(Value value) { mValue = value; } - public Object getValueData() { - return mValue.getValue(); + public T getValueData() { + + if (mValue == null) + return null; + return mValue.getData(); + } public Boolean getRequired() { @@ -172,11 +177,11 @@ public boolean hasDataSource() { return mDataSource != null; } - public DataSource getDataSource() { + public DataSource getDataSource() { return mDataSource; } - public void setDataSource(DataSource dataSource) { + public void setDataSource(DataSource dataSource) { mDataSource = dataSource; } @@ -209,11 +214,11 @@ public boolean isValid() { boolean valid = true; if (getRequired()) { - valid = getValue() != null && getValue().getValue() != null; + valid = (getValue() != null && getValueData() != null); if (getSelectorOptions() != null && getSelectorOptions().size() > 0) { valid = valid && - FormOptionsObject.formOptionsObjectFromArrayWithValue(getValue().getValue(), getSelectorOptions()) != null; + (FormOptionsObject.formOptionsObjectFromArrayWithValue(getValueData(), getSelectorOptions()) != null); } } if (getValidators() != null && valid) { @@ -240,10 +245,10 @@ public List getValidationErrors() { List rowValidationErrors = new ArrayList(); if (getRequired()) { - if (!(getValue() != null && getValue().getValue() != null)) { + if (!(getValue() != null && getValueData() != null)) { rowValidationErrors.add(new RowValidationError(this, R.string.validation_is_required)); } else if (getSelectorOptions() != null && getSelectorOptions().size() > 0) { - if (FormOptionsObject.formOptionsObjectFromArrayWithValue(getValue().getValue(), getSelectorOptions()) == null) { + if (FormOptionsObject.formOptionsObjectFromArrayWithValue(getValueData(), getSelectorOptions()) == null) { rowValidationErrors.add(new RowValidationError(this, R.string.validation_is_required)); } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowValidationError.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowValidationError.java index 45c8db7..fbec9db 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowValidationError.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/RowValidationError.java @@ -8,9 +8,9 @@ public class RowValidationError { private int mResourceMessage; - private RowDescriptor mRowDescriptor; + private RowDescriptor mRowDescriptor; - public RowValidationError(RowDescriptor tRowDescriptor, int resourceMessage) { + public RowValidationError(RowDescriptor tRowDescriptor, int resourceMessage) { mResourceMessage = resourceMessage; mRowDescriptor = tRowDescriptor; } @@ -24,7 +24,7 @@ public String getMessage(Context context) { context.getString(getResourceMessage()); } - public RowDescriptor getRowDescriptor() { + public RowDescriptor getRowDescriptor() { return mRowDescriptor; } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/SectionDescriptor.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/SectionDescriptor.java index b3dbe7b..494f3ea 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/SectionDescriptor.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/SectionDescriptor.java @@ -10,7 +10,7 @@ public class SectionDescriptor extends FormItemDescriptor { private FormDescriptor mFormDescriptor; - private ArrayList mRows; + private ArrayList> mRows; private Boolean mMultivalueSection = false; public static SectionDescriptor newInstance(String tag) { @@ -30,7 +30,7 @@ public static SectionDescriptor newInstance(String tag, String title) { public SectionDescriptor() { - mRows = new ArrayList(); + mRows = new ArrayList>(); } @@ -46,11 +46,11 @@ public String getTitle() { return mTitle; } - public void addRow(RowDescriptor row) { + public void addRow(RowDescriptor row) { addRow(row, mRows.size()); } - public void addRow(RowDescriptor row, int index) { + public void addRow(RowDescriptor row, int index) { insertRowAtIndex(row, index); // Propagate the CellConfig from Section to Row @@ -60,14 +60,14 @@ public void addRow(RowDescriptor row, int index) { row.setCellConfig(cellConfig); } - public void addRow(RowDescriptor row, HashMap cellConfig) { + public void addRow(RowDescriptor row, HashMap cellConfig) { addRow(row, mRows.size()); if (cellConfig != null) row.setCellConfig(cellConfig); } - public void removeRow(RowDescriptor row) { + public void removeRow(RowDescriptor row) { int index = mRows.indexOf(row); removeRowAtIndex(index); } @@ -76,11 +76,11 @@ public int getRowCount() { return mRows.size(); } - public List getRows() { + public List> getRows() { return mRows; } - private void insertRowAtIndex(RowDescriptor row, int index) { + private void insertRowAtIndex(RowDescriptor row, int index) { if (mRows.size() >= index) { row.setSectionDescriptor(this); mRows.add(index, row); @@ -92,7 +92,7 @@ private void insertRowAtIndex(RowDescriptor row, int index) { } private void removeRowAtIndex(int index) { - RowDescriptor rowDescriptor = mRows.get(index); + RowDescriptor rowDescriptor = mRows.get(index); mRows.remove(index); if (getFormDescriptor() != null) { getFormDescriptor().didRemoveRow(rowDescriptor, this); @@ -104,10 +104,10 @@ public boolean hasTitle() { return getTitle() != null && getTitle().length() > 0; } - public RowDescriptor findRowDescriptor(String tag) { - RowDescriptor rowDescriptor = null; + public RowDescriptor findRowDescriptor(String tag) { + RowDescriptor rowDescriptor = null; - for (RowDescriptor iRowDescriptor : getRows()) { + for (RowDescriptor iRowDescriptor : getRows()) { if (tag.equals(iRowDescriptor.getTag())) { rowDescriptor = iRowDescriptor; break; @@ -117,7 +117,7 @@ public RowDescriptor findRowDescriptor(String tag) { return rowDescriptor; } - public int getIndexOfRowDescriptor(RowDescriptor rowDescriptor) { + public int getIndexOfRowDescriptor(RowDescriptor rowDescriptor) { return mRows.indexOf(rowDescriptor); } @@ -132,9 +132,9 @@ public void setMultivalueSection(Boolean multivalueSection) { public List getRowValues() { ArrayList values = new ArrayList<>(); - for (RowDescriptor rowDescriptor : mRows) { - if (rowDescriptor.getValue() != null && rowDescriptor.getValue().getValue() != null) { - values.add(rowDescriptor.getValue().getValue()); + for (RowDescriptor rowDescriptor : mRows) { + if (rowDescriptor.getValue() != null && rowDescriptor.getValueData() != null) { + values.add(rowDescriptor.getValueData()); } } return values; diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/Value.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/Value.java index ef57b0e..8fcb33e 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/Value.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/Value.java @@ -1,30 +1,50 @@ package com.quemb.qmbform.descriptor; +import android.util.Pair; + /** * Created by tonimoeckel on 14.07.14. */ public class Value { - private T mValue; - private OnValueChangeListener mOnValueChangeListener; + private T mData; + private OnValueChangeListener mOnValueChangeListener; - public Value(T value) { - mValue = value; + public Value(T data) { + mData = data; } - public T getValue() { - return mValue; + public void setData(T data) { + mData = data; + if (mOnValueChangeListener != null) { + mOnValueChangeListener.onChange(data); + } } - @SuppressWarnings("unchecked") - public void setValue(T value) { - mValue = value; - if (mOnValueChangeListener != null) { - mOnValueChangeListener.onChange(value); + /** + * Return the embedded data. In case of a Pair{T:key, String:label}, return the key part. + */ + public T getData() + { + if (mData != null && mData instanceof Pair) + { + @SuppressWarnings("unchecked") T key = (T) ((Pair)mData).first; + return key; } + return mData; + } + + /** + * In case of a Pair{T:key, String:label}, return the label part. + */ + public String getPairLabel() + { + if (mData != null && mData instanceof Pair) + return (String) ((Pair)mData).second; + return null; } - public void setOnValueChangeListener(OnValueChangeListener listener) { + public void setOnValueChangeListener(OnValueChangeListener listener) { this.mOnValueChangeListener = listener; } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/utils/Styling.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/utils/Styling.java new file mode 100644 index 0000000..ac9f4ef --- /dev/null +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/utils/Styling.java @@ -0,0 +1,102 @@ +package com.quemb.qmbform.utils; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Color; +import android.os.Build; +import android.util.DisplayMetrics; +import android.util.TypedValue; +import android.widget.TextView; + +import com.quemb.qmbform.R; + +/** + * Android style utilities + * Created by MTL / PTN on 04/08/16. + */ +public class Styling +{ + @SuppressWarnings("deprecation") + public static void setTextAppearance(TextView textView, int styleId) + { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + textView.setTextAppearance(styleId); + else + textView.setTextAppearance(textView.getContext(), styleId); + } + + /** + * Apply the standard EditText appearance to the TextView + * (only if no specific style is defined for APPEARANCE_TEXT_VALUE) + */ + public static void applyEditTextStyle(TextView textView) + { + // Get the android:textAppearance item from R.style.Widget_AppCompat_EditText (default EditText style) + int editTextAppearanceId = getStyleItemResourceId(textView.getContext(), + R.style.Widget_AppCompat_EditText, android.R.attr.textAppearance, android.R.attr.textAppearanceMediumInverse); + + // Get the android:textSize item from retrieved textAppearance style + DisplayMetrics displayMetrics = textView.getContext().getResources().getDisplayMetrics(); + float editSize = getStyleItemDimension(textView.getContext(), + editTextAppearanceId, android.R.attr.textSize, 18f * (displayMetrics.densityDpi / 160f)); + + // Set inline text size + textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, editSize); + } + + /** + * Get a item defined as resource ID from an android style + */ + public static int getStyleItemResourceId(Context context, int styleId, int attributeId, int defValue) + { + // attribute to retrieve + int[] attrs = {attributeId}; // {android.R.attr.textColor, android.R.attr.text}; + + // Parse the style, using Context.obtainStyledAttributes() + TypedArray ta = context.obtainStyledAttributes(styleId, attrs); + + // Fetch the resource, color or text defined in your style + int styleItem = ta.getResourceId(0, defValue); // android.R.attr.textAppearanceMediumInverse); + + // Recycle the TypedArray + ta.recycle(); + + return styleItem; + } + + /** + * Get a item defined as dimension from an android style + */ + public static float getStyleItemDimension(Context context, int styleId, int attributeId, float defValue) + { + // attribute to retrieve + int[] attrs = {attributeId}; + + // Parse the style, using Context.obtainStyledAttributes() + TypedArray ta = context.obtainStyledAttributes(styleId, attrs); + + // Fetch the text from your style like this. + float dimensionItem = ta.getDimension(0, defValue); + + // Recycle the TypedArray + ta.recycle(); + + return dimensionItem; + } + + /** + * Get color value from attribute ID + */ + public static int getColorFromAttr(Context context, int attrResId) + { + TypedValue typedValue = new TypedValue(); + + if (context.getTheme().resolveAttribute(attrResId, typedValue, true)) + return typedValue.data; + + TypedArray a = context.obtainStyledAttributes(typedValue.data, new int[]{attrResId}); + int color = a.getColor(0, Color.RED); + a.recycle(); + return color; + } +} diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/Cell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/Cell.java index a2499b0..68dad06 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/Cell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/Cell.java @@ -1,11 +1,7 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.CellDescriptor; -import com.quemb.qmbform.descriptor.FormItemDescriptor; - import android.content.Context; import android.content.res.Resources; -import android.os.Build; import android.support.annotation.StyleRes; import android.util.TypedValue; import android.view.Gravity; @@ -14,6 +10,10 @@ import android.widget.LinearLayout; import android.widget.TextView; +import com.quemb.qmbform.descriptor.CellDescriptor; +import com.quemb.qmbform.descriptor.FormItemDescriptor; +import com.quemb.qmbform.utils.Styling; + import java.util.HashMap; /** @@ -123,7 +123,7 @@ protected void setDividerView(View dividerView) { * Set the style ID for the specified 'styleConfig' parameter if defined in CellDescriptor, * or apply the default Style Id and the default android:textColor. */ - protected boolean setStyleId(final TextView textView, final String styleConfig, final String colorConfig) //, final @StyleRes int defaultStyleId + protected boolean setStyleId(TextView textView, String styleConfig, String colorConfig) { boolean styleFound = false; @@ -134,15 +134,15 @@ protected boolean setStyleId(final TextView textView, final String styleConfig, if (itemDescriptor != null) { cellConfig = itemDescriptor.getCellConfig(); - if (cellConfig != null && cellConfig.containsKey(styleConfig)) + if (cellConfig != null) { Object configId = cellConfig.get(styleConfig); - if (configId instanceof Integer) + if (configId != null && configId instanceof Integer) { - // Apply style if exists + // If exists, apply style and return true - @StyleRes int styleId = ((Integer) configId).intValue(); - setTextAppearance(textView, styleId); + @StyleRes int styleId = (Integer) configId; + Styling.setTextAppearance(textView, styleId); styleFound = true; } @@ -153,11 +153,11 @@ protected boolean setStyleId(final TextView textView, final String styleConfig, // Otherwise, save the default android color (before applying style). int defaultColor; - if (cellConfig != null && colorConfig != null && cellConfig.containsKey(colorConfig)) + if (cellConfig != null && colorConfig != null) { Object configId = cellConfig.get(colorConfig); - if (configId instanceof Integer) - defaultColor = ((Integer) configId).intValue(); + if (configId != null && configId instanceof Integer) + defaultColor = (Integer) configId; else defaultColor = getDefaultColor(colorConfig); } @@ -169,21 +169,12 @@ protected boolean setStyleId(final TextView textView, final String styleConfig, return styleFound; } - @SuppressWarnings("deprecation") - private void setTextAppearance(final TextView textView, final int styleId) - { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) - textView.setTextAppearance(styleId); - else - textView.setTextAppearance(textView.getContext(), styleId); - } - /** * Get the default color for TextView (android:textColor in theme). * Note that default EditText color is android:editTextColor in theme. * Force to default TextView color for CheckBox and Switch views. */ - private int getDefaultColor(final String colorConfig) + private int getDefaultColor(String colorConfig) { if (colorConfig != null && colorConfig.equals(CellDescriptor.COLOR_VALUE)) { @@ -196,7 +187,7 @@ private int getDefaultColor(final String colorConfig) * Set the TextView color from the cellConfig using 'colorConfig' parameter, if defined in CellDescriptor. * Only used for COLOR_XXX_DISABLED colors. */ - protected void setTextColor(final TextView textView, final String colorConfig) + protected boolean setTextColor(TextView textView, String colorConfig) { // Get color from the cellConfig in FormItemDescriptor @@ -210,8 +201,10 @@ protected void setTextColor(final TextView textView, final String colorConfig) if (configColor instanceof Integer) { textView.setTextColor(((Integer) configColor).intValue()); + return true; } } } + return false; } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java index 9182cca..a14c362 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBaseCell.java @@ -29,7 +29,7 @@ public abstract class FormBaseCell extends Cell { private LinearLayout mMultiValueWrapper; - public FormBaseCell(Context context, RowDescriptor rowDescriptor) { + public FormBaseCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); @@ -43,9 +43,7 @@ protected void init() { } - /** - * Generics: capture the wildcard of RowDescriptor - */ + // Capture the wildcard of RowDescriptor private void initOnChange(RowDescriptor rowDescriptor) { if (rowDescriptor == null) @@ -98,7 +96,7 @@ protected LinearLayout createMultiValueWrapper() { @Override public void onClick(View v) { - RowDescriptor rowDescriptor = getRowDescriptor(); + RowDescriptor rowDescriptor = getRowDescriptor(); SectionDescriptor sectionDescriptor = rowDescriptor.getSectionDescriptor(); sectionDescriptor.removeRow(rowDescriptor); @@ -149,7 +147,7 @@ public void onClick(View v) { @Override public boolean shouldAddDivider() { - RowDescriptor rowDescriptor = (RowDescriptor) getFormItemDescriptor(); + RowDescriptor rowDescriptor = (RowDescriptor) getFormItemDescriptor(); if (rowDescriptor.isLastRowInSection()) return false; @@ -166,11 +164,10 @@ public RowDescriptor getRowDescriptor() { return (RowDescriptor) getFormItemDescriptor(); } - @SuppressWarnings("unchecked") - public void onValueChanged(Value newValue) { - RowDescriptor row = getRowDescriptor(); - Value oldValue = row.getValue(); - if (oldValue == null || newValue == null || !newValue.getValue().equals(oldValue.getValue())) { + public void onValueChanged(Value newValue) { + @SuppressWarnings("unchecked") RowDescriptor row = (RowDescriptor) getRowDescriptor(); + Value oldValue = row.getValue(); + if (oldValue == null || newValue == null || !newValue.getData().equals(oldValue.getData())) { OnFormRowValueChangedListener listener = getRowDescriptor().getSectionDescriptor().getFormDescriptor().getOnFormRowValueChangedListener(); row.setValue(newValue); if (listener != null) { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBooleanFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBooleanFieldCell.java index a6a50ce..5b51a5c 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBooleanFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormBooleanFieldCell.java @@ -1,16 +1,17 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.CellDescriptor; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.widget.CompoundButton; import android.widget.Switch; +import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.CellDescriptor; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; +import com.quemb.qmbform.utils.Styling; + /** * Created by tonimoeckel on 15.07.14. */ @@ -19,7 +20,7 @@ public class FormBooleanFieldCell extends FormBaseCell { private Switch mSwitch; public FormBooleanFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -55,14 +56,15 @@ protected void update() { if (getRowDescriptor().getDisabled()) { mSwitch.setEnabled(false); - setTextColor(mSwitch, CellDescriptor.COLOR_LABEL_DISABLED); + if (setTextColor(mSwitch, CellDescriptor.COLOR_LABEL_DISABLED) == false) + mSwitch.setTextColor(Styling.getColorFromAttr(mSwitch.getContext(), android.R.attr.textColor)); } else mSwitch.setEnabled(true); @SuppressWarnings("unchecked") Value value = (Value) getRowDescriptor().getValue(); - if (value != null && value.getValue() != null) { - mSwitch.setChecked(value.getValue()); + if (value != null && value.getData() != null) { + mSwitch.setChecked(value.getData()); } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormButtonFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormButtonFieldCell.java index 69e2f8d..21af8b3 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormButtonFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormButtonFieldCell.java @@ -1,11 +1,12 @@ package com.quemb.qmbform.view; +import android.content.Context; +import android.widget.TextView; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.CellDescriptor; import com.quemb.qmbform.descriptor.RowDescriptor; - -import android.content.Context; -import android.widget.TextView; +import com.quemb.qmbform.utils.Styling; /** * Created by tonimoeckel on 15.07.14. @@ -14,7 +15,7 @@ public class FormButtonFieldCell extends FormTitleFieldCell { public FormButtonFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -33,7 +34,9 @@ protected void update() { if (getRowDescriptor().getDisabled()) { - setTextColor(textView, CellDescriptor.COLOR_VALUE_DISABLED); + if (setTextColor(textView, CellDescriptor.COLOR_VALUE_DISABLED) == false) + textView.setTextColor(Styling.getColorFromAttr(textView.getContext(), android.R.attr.textColor)); + textView.setClickable(false); textView.setEnabled(false); diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormButtonInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormButtonInlineFieldCell.java index d5fea14..c781c18 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormButtonInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormButtonInlineFieldCell.java @@ -1,11 +1,11 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 8/28/2015. */ @@ -13,7 +13,7 @@ public class FormButtonInlineFieldCell extends FormButtonFieldCell { public FormButtonInlineFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormCheckFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormCheckFieldCell.java index fbcdd00..3ee8869 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormCheckFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormCheckFieldCell.java @@ -1,14 +1,14 @@ package com.quemb.qmbform.view; +import android.content.Context; +import android.widget.CheckBox; +import android.widget.CompoundButton; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.CellDescriptor; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; -import android.content.Context; -import android.widget.CheckBox; -import android.widget.CompoundButton; - /** * Created by tonimoeckel on 15.07.14. */ @@ -17,7 +17,7 @@ public class FormCheckFieldCell extends FormBaseCell { private CheckBox mCheckBox; public FormCheckFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -47,8 +47,8 @@ protected int getResource() { protected void update() { String title = getFormItemDescriptor().getTitle(); - mCheckBox.setText(title); + if (getRowDescriptor().getDisabled()) { mCheckBox.setEnabled(false); @@ -59,7 +59,7 @@ protected void update() { @SuppressWarnings("unchecked") Value value = (Value) getRowDescriptor().getValue(); if (value != null) { - mCheckBox.setChecked(value.getValue()); + mCheckBox.setChecked(value.getData()); } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateDialogFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateDialogFieldCell.java index 2e07d91..f81a663 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateDialogFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateDialogFieldCell.java @@ -1,12 +1,12 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.app.DatePickerDialog; import android.content.Context; import android.widget.DatePicker; +import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.RowDescriptor; + import java.util.Calendar; import java.util.Date; @@ -19,7 +19,7 @@ public class FormDateDialogFieldCell extends FormDateFieldCell implements private Calendar mCalendar; public FormDateDialogFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateFieldCell.java index 4d7fa17..a50ba17 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateFieldCell.java @@ -1,12 +1,13 @@ package com.quemb.qmbform.view; +import android.content.Context; +import android.widget.TextView; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.CellDescriptor; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; - -import android.content.Context; -import android.widget.TextView; +import com.quemb.qmbform.utils.Styling; import java.text.DateFormat; import java.util.Calendar; @@ -20,7 +21,7 @@ public class FormDateFieldCell extends FormDetailTextInlineFieldCell { private TextView mTextView; public FormDateFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -48,14 +49,14 @@ protected void update() { mTextView.setVisibility(title == null ? GONE : VISIBLE); @SuppressWarnings("unchecked") Value value = (Value) getRowDescriptor().getValue(); - if (value == null || value.getValue() == null) { + if (value == null || value.getData() == null) { value = new Value(new Date()); } else { - updateDateLabel(value.getValue(), getRowDescriptor().getDisabled()); + updateDateLabel(value.getData(), getRowDescriptor().getDisabled()); } final Calendar calendar = Calendar.getInstance(); - Date date = value.getValue(); + Date date = value.getData(); calendar.setTime(date); initDatePicker(calendar); @@ -97,7 +98,8 @@ protected void updateDateLabel(Date date, boolean disabled) { if (disabled) { editView.setEnabled(false); - setTextColor(editView, CellDescriptor.COLOR_VALUE_DISABLED); + if (setTextColor(editView, CellDescriptor.COLOR_VALUE_DISABLED) == false) + editView.setTextColor(Styling.getColorFromAttr(editView.getContext(), android.R.attr.textColor)); } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateInlineFieldCell.java index 6e5a502..44a6e5d 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateInlineFieldCell.java @@ -1,11 +1,12 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.content.Context; import android.widget.DatePicker; +import com.quemb.qmbform.DatePickerInline; +import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.RowDescriptor; + import java.util.Calendar; import java.util.Date; @@ -15,10 +16,10 @@ public class FormDateInlineFieldCell extends FormDateFieldCell implements DatePicker.OnDateChangedListener { - private DatePicker mDatePicker; + private DatePickerInline mDatePicker; public FormDateInlineFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -26,7 +27,7 @@ public FormDateInlineFieldCell(Context context, protected void init() { super.init(); - mDatePicker = (DatePicker) findViewById(R.id.datePicker); + mDatePicker = (DatePickerInline) findViewById(R.id.datePicker); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateTimeInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateTimeInlineFieldCell.java new file mode 100644 index 0000000..3da8985 --- /dev/null +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDateTimeInlineFieldCell.java @@ -0,0 +1,138 @@ +package com.quemb.qmbform.view; + +import android.content.Context; +import android.os.Build; +import android.text.format.DateFormat; +import android.widget.DatePicker; +import android.widget.TextView; +import android.widget.TimePicker; + +import com.quemb.qmbform.DatePickerInline; +import com.quemb.qmbform.R; +import com.quemb.qmbform.TimePickerInline; +import com.quemb.qmbform.descriptor.CellDescriptor; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.utils.Styling; + +import java.util.Calendar; +import java.util.Date; + +/** + * A cell to select date and time inline. + */ +public class FormDateTimeInlineFieldCell extends FormDateFieldCell implements + DatePicker.OnDateChangedListener, TimePicker.OnTimeChangedListener +{ + private DatePickerInline mDatePicker; + private TimePickerInline mTimePicker; + + public FormDateTimeInlineFieldCell(Context context, + RowDescriptor rowDescriptor) + { + super(context, rowDescriptor); + } + + @Override + protected void init() { + + super.init(); + mDatePicker = (DatePickerInline) findViewById(R.id.datePicker); + mTimePicker = (TimePickerInline) findViewById(R.id.timePicker); + + } + + @Override + protected int getResource() { + return R.layout.datetime_inline_field_cell; + } + + + @Override + @SuppressWarnings("deprecation") + protected void initDatePicker(Calendar calendar) + { + mDatePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), this); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + { + mTimePicker.setHour(calendar.get(Calendar.HOUR_OF_DAY)); + mTimePicker.setMinute(calendar.get(Calendar.MINUTE)); + } + else + { + mTimePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY)); + mTimePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); + } + mTimePicker.setOnTimeChangedListener(this); + + if (DateFormat.is24HourFormat(getContext())) + mTimePicker.setIs24HourView(true); + } + + public TimePicker getTimePicker() { + return mTimePicker; + } + + @Override + public void onCellSelected() + { + super.onCellSelected(); + + boolean visible = (mDatePicker.getVisibility() == VISIBLE); + mDatePicker.setVisibility(visible ? GONE : VISIBLE); + mTimePicker.setVisibility(visible ? GONE : VISIBLE); + + } + + @Override + @SuppressWarnings("deprecation") + public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) + { + int hourOfDay, minute; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + { + hourOfDay = mTimePicker.getHour(); + minute = mTimePicker.getMinute(); + } + else + { + hourOfDay = mTimePicker.getCurrentHour(); + minute = mTimePicker.getCurrentMinute(); + } + + Calendar calendar = Calendar.getInstance(); + calendar.set(year, monthOfYear, dayOfMonth, hourOfDay, minute, 0); + + Date date = new Date(calendar.getTimeInMillis()); + onDateChanged(date); + } + + @Override + public void onTimeChanged(TimePicker view, int hourOfDay, int minute) + { + Calendar calendar = Calendar.getInstance(); + calendar.set(mDatePicker.getYear(), mDatePicker.getMonth(), mDatePicker.getDayOfMonth(), hourOfDay, minute, 0); + + Date date = new Date(calendar.getTimeInMillis()); + onDateChanged(date); + } + + protected void updateDateLabel(Date date, boolean disabled) + { + String sDate = android.text.format.DateFormat.getDateFormat(getContext()).format(date); + String sTime = android.text.format.DateFormat.getTimeFormat(getContext()).format(date); + + TextView editView = getDetailTextView(); + editView.setText(sDate + " " + sTime); + + // Manage the 'disabled' state for value + + if (disabled) + { + editView.setEnabled(false); + if (setTextColor(editView, CellDescriptor.COLOR_VALUE_DISABLED) == false) + editView.setTextColor(Styling.getColorFromAttr(editView.getContext(), android.R.attr.textColor)); + } + } +} diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextVerticalFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextVerticalFieldCell.java index 3aa62f1..07eb5e5 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextVerticalFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextVerticalFieldCell.java @@ -1,18 +1,18 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; -import android.content.Context; - /** * Created by schmidtma on 19.02.15. */ public class FormDetailHtmlTextVerticalFieldCell extends FormDetailTextFieldCell { public FormDetailHtmlTextVerticalFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -26,11 +26,11 @@ protected void update() { } Value value = getRowDescriptor().getValue(); - if (value != null && value.getValue() != null) { - if (value.getValue() instanceof Integer) { - getDetailTextView().setText(String.valueOf(value.getValue())); + if (value != null && value.getData() != null) { + if (value.getData() instanceof Integer) { + getDetailTextView().setText(String.valueOf(value.getData())); } else { - getDetailTextView().setText((CharSequence) value.getValue()); + getDetailTextView().setText((CharSequence) value.getData()); } } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextFieldCell.java index 0cebbc4..ff0d1b3 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextFieldCell.java @@ -1,18 +1,17 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.CellDescriptor; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by tonimoeckel on 15.07.14. */ public class FormDetailTextFieldCell extends FormDetailTextInlineFieldCell { public FormDetailTextFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextInlineFieldCell.java index 69c5941..9555f2e 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextInlineFieldCell.java @@ -1,15 +1,13 @@ package com.quemb.qmbform.view; +import android.content.Context; +import android.widget.TextView; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.CellDescriptor; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; - -import android.content.Context; -import android.content.res.TypedArray; -import android.util.DisplayMetrics; -import android.util.TypedValue; -import android.widget.TextView; +import com.quemb.qmbform.utils.Styling; /** * Created by pmaccamp on 9/4/2015. @@ -19,7 +17,7 @@ public class FormDetailTextInlineFieldCell extends FormTitleFieldCell { private TextView mDetailTextView; public FormDetailTextInlineFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -32,18 +30,7 @@ protected void init() { { // If no specific style is defined for APPEARANCE_TEXT_VALUE, // set inline text size to the default EditText size. - - // Get the android:textAppearance item from R.style.Widget_AppCompat_EditText (default EditText style) - int editTextAppearanceId = getStyleItemResourceId(mDetailTextView.getContext(), - R.style.Widget_AppCompat_EditText, android.R.attr.textAppearance, android.R.attr.textAppearanceMediumInverse); - - // Get the android:textSize item from retrieved textAppearance style - DisplayMetrics displayMetrics = mDetailTextView.getContext().getResources().getDisplayMetrics(); - float editSize = getStyleItemDimension(mDetailTextView.getContext(), - editTextAppearanceId, android.R.attr.textSize, 18f * (displayMetrics.densityDpi / 160f)); - - // Set inline text size - mDetailTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, editSize); + Styling.applyEditTextStyle(mDetailTextView); } } @@ -57,19 +44,17 @@ protected void update() { super.update(); if (getRowDescriptor().getHint(getContext()) != null) { - getDetailTextView().setHint(getRowDescriptor().getHint(getContext())); + mDetailTextView.setHint(getRowDescriptor().getHint(getContext())); } - Value value = getRowDescriptor().getValue(); - if (value != null && value.getValue() != null) { - if (value.getValue() instanceof String) { - getDetailTextView().setText((String) value.getValue()); - } else { - getDetailTextView().setText(String.valueOf(value.getValue())); - - } + if (getRowDescriptor().getDisabled()) + { + if (setTextColor(mDetailTextView, CellDescriptor.COLOR_VALUE_DISABLED) == false) + mDetailTextView.setTextColor(Styling.getColorFromAttr(mDetailTextView.getContext(), android.R.attr.textColor)); } + mDetailTextView.setText(displayedValue(getRowDescriptor().getValue())); + } public TextView getDetailTextView() { @@ -77,44 +62,24 @@ public TextView getDetailTextView() { } /** - * Get a item defined as resource ID from an android style + * Return the String to be displayed */ - private int getStyleItemResourceId(final Context context, final int styleId, final int attributeId, final int defValue) + protected String displayedValue(Value value) { - // attribute to retrieve - int[] attrs = {attributeId}; // {android.R.attr.textColor, android.R.attr.text}; - - // Parse the style, using Context.obtainStyledAttributes() - TypedArray ta = context.obtainStyledAttributes(styleId, attrs); - - // Fetch the resource, color or text defined in your style - int styleItem = ta.getResourceId(0, defValue); // android.R.attr.textAppearanceMediumInverse); - //int textColor = ta.getColor(1, Color.BLACK); - //String text = ta.getString(2); - - // Recycle the TypedArray - ta.recycle(); - - return styleItem; - } - - /** - * Get a item defined as dimension from an android style - */ - private float getStyleItemDimension(final Context context, final int styleId, final int attributeId, final float defValue) - { - // attribute to retrieve - int[] attrs = {attributeId}; - - // Parse the style, using Context.obtainStyledAttributes() - TypedArray ta = context.obtainStyledAttributes(styleId, attrs); - - // Fetch the text from your style like this. - float dimensionItem = ta.getDimension(0, defValue); - - // Recycle the TypedArray - ta.recycle(); - - return dimensionItem; + if (value != null) + { + T data = value.getData(); + + if (data == null) + return null; + else if (data instanceof String) + { + @SuppressWarnings("unchecked") String stringData = (String) data; + return stringData; + } + else + return String.valueOf(data); + } + return null; } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextVerticalFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextVerticalFieldCell.java index 0173d80..13bbbe5 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextVerticalFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextVerticalFieldCell.java @@ -1,17 +1,17 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by tonimoeckel on 15.07.14. */ public class FormDetailTextVerticalFieldCell extends FormDetailTextFieldCell { public FormDetailTextVerticalFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditCurrencyFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditCurrencyFieldCell.java index aea65f0..bd10a5a 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditCurrencyFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditCurrencyFieldCell.java @@ -1,11 +1,11 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.content.Context; import android.util.Log; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; + import java.text.NumberFormat; import java.text.ParseException; @@ -17,7 +17,7 @@ public class FormEditCurrencyFieldCell extends FormEditNumberFieldCell { private static final String TAG = "FormEditCurrencyFieldCell"; public FormEditCurrencyFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -26,9 +26,9 @@ public FormEditCurrencyFieldCell(Context context, protected void updateEditView() { @SuppressWarnings("unchecked") Value value = (Value) getRowDescriptor().getValue(); - if (value != null && value.getValue() != null) { + if (value != null && value.getData() != null) { NumberFormat format = NumberFormat.getCurrencyInstance(); - String valueString = format.format(value.getValue());//String.valueOf(value.getValue()); + String valueString = format.format(value.getData());//String.valueOf(value.getValue()); getEditView().setText(valueString); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditEmailFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditEmailFieldCell.java index 800c4a6..f1e7d4f 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditEmailFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditEmailFieldCell.java @@ -1,18 +1,18 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.content.Context; import android.text.InputType; import android.widget.EditText; +import com.quemb.qmbform.descriptor.RowDescriptor; + /** * Created by tonimoeckel on 15.07.14. */ public class FormEditEmailFieldCell extends FormEditTextFieldCell { public FormEditEmailFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditEmailInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditEmailInlineFieldCell.java index 1a9e4b9..bb05d67 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditEmailInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditEmailInlineFieldCell.java @@ -1,18 +1,18 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 8/28/2015. */ public class FormEditEmailInlineFieldCell extends FormEditEmailFieldCell { public FormEditEmailInlineFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditHTMLTextViewFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditHTMLTextViewFieldCell.java index 76ed0b7..cf14c27 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditHTMLTextViewFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditHTMLTextViewFieldCell.java @@ -1,26 +1,26 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.content.Context; import android.text.Html; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; + /** * Created by tonimoeckel on 15.07.14. */ public class FormEditHTMLTextViewFieldCell extends FormEditTextViewFieldCell { public FormEditHTMLTextViewFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } protected void updateEditView() { @SuppressWarnings("unchecked") Value value = (Value) getRowDescriptor().getValue(); - if (value != null && value.getValue() != null) { - String valueString = value.getValue(); + if (value != null && value.getData() != null) { + String valueString = value.getData(); if (valueString != null) { valueString = Html.fromHtml(valueString).toString(); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditIntegerFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditIntegerFieldCell.java index 157a98a..d0e095a 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditIntegerFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditIntegerFieldCell.java @@ -1,13 +1,13 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.content.Context; import android.text.InputType; import android.util.Log; import android.widget.EditText; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; + /** * Created by tonimoeckel on 15.07.14. */ @@ -18,7 +18,7 @@ public class FormEditIntegerFieldCell extends FormEditTextFieldCell { private EditText mEditView; public FormEditIntegerFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -37,7 +37,7 @@ protected void updateEditView() { @SuppressWarnings("unchecked") Value value = (Value) getRowDescriptor().getValue(); if (value != null) { - String valueString = String.valueOf(value.getValue()); + String valueString = String.valueOf(value.getData()); getEditView().setText(valueString); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditIntegerInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditIntegerInlineFieldCell.java index 180c6f5..a5624e9 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditIntegerInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditIntegerInlineFieldCell.java @@ -1,15 +1,15 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 9/4/2015. */ public class FormEditIntegerInlineFieldCell extends FormEditIntegerFieldCell { - public FormEditIntegerInlineFieldCell(Context context, RowDescriptor rowDescriptor) { + public FormEditIntegerInlineFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditNumberFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditNumberFieldCell.java index eacbe71..3338ea7 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditNumberFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditNumberFieldCell.java @@ -1,13 +1,13 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.content.Context; import android.text.InputType; import android.util.Log; import android.widget.EditText; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; + /** * Created by tonimoeckel on 15.07.14. */ @@ -16,7 +16,7 @@ public class FormEditNumberFieldCell extends FormEditTextFieldCell { private static final String TAG = "FormEditNumberFieldCell"; public FormEditNumberFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -35,7 +35,7 @@ protected void updateEditView() { @SuppressWarnings("unchecked") Value value = (Value) getRowDescriptor().getValue(); if (value != null) { - String valueString = String.valueOf(value.getValue()); + String valueString = String.valueOf(value.getData()); getEditView().setText(valueString); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditNumberInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditNumberInlineFieldCell.java index 2af2166..d1efdfa 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditNumberInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditNumberInlineFieldCell.java @@ -1,15 +1,15 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 9/4/2015. */ public class FormEditNumberInlineFieldCell extends FormEditNumberFieldCell { - public FormEditNumberInlineFieldCell(Context context, RowDescriptor rowDescriptor) { + public FormEditNumberInlineFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPasswordFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPasswordFieldCell.java index c96a14c..118c8ef 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPasswordFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPasswordFieldCell.java @@ -1,19 +1,19 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.content.Context; import android.text.InputType; import android.text.method.PasswordTransformationMethod; import android.widget.EditText; +import com.quemb.qmbform.descriptor.RowDescriptor; + /** * Created by tonimoeckel on 15.07.14. */ public class FormEditPasswordFieldCell extends FormEditTextFieldCell { public FormEditPasswordFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPasswordInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPasswordInlineFieldCell.java index f9ebc20..32b8fea 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPasswordInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPasswordInlineFieldCell.java @@ -1,18 +1,18 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 8/28/2015. */ public class FormEditPasswordInlineFieldCell extends FormEditPasswordFieldCell { public FormEditPasswordInlineFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPhoneFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPhoneFieldCell.java index 3ddc79d..d1dfe65 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPhoneFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditPhoneFieldCell.java @@ -1,18 +1,18 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.content.Context; import android.text.InputType; import android.widget.EditText; +import com.quemb.qmbform.descriptor.RowDescriptor; + /** * Created by tonimoeckel on 15.07.14. */ public class FormEditPhoneFieldCell extends FormEditTextFieldCell { public FormEditPhoneFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextFieldCell.java index b8ae906..983d00e 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextFieldCell.java @@ -1,10 +1,5 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.CellDescriptor; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.content.Context; import android.os.Handler; import android.text.Editable; @@ -12,6 +7,12 @@ import android.text.TextWatcher; import android.widget.EditText; +import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.CellDescriptor; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; +import com.quemb.qmbform.utils.Styling; + /** * Created by tonimoeckel on 15.07.14. */ @@ -20,7 +21,7 @@ public class FormEditTextFieldCell extends FormTitleFieldCell { private EditText mEditView; public FormEditTextFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -44,12 +45,10 @@ protected void afterInit() { mEditView.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { - FormEditTextFieldCell.this.onEditTextChanged(s.toString()); } public void beforeTextChanged(CharSequence s, int start, int count, int after) { - } public void onTextChanged(CharSequence s, int start, int before, int count) { @@ -77,7 +76,8 @@ protected void update() { if (getRowDescriptor().getDisabled()) { mEditView.setEnabled(false); - setTextColor(mEditView, CellDescriptor.COLOR_VALUE_DISABLED); + if (setTextColor(mEditView, CellDescriptor.COLOR_VALUE_DISABLED) == false) + mEditView.setTextColor(Styling.getColorFromAttr(mEditView.getContext(), android.R.attr.textColor)); } else mEditView.setEnabled(true); @@ -92,8 +92,8 @@ protected void updateEditView() { } @SuppressWarnings("unchecked") Value value = (Value) getRowDescriptor().getValue(); - if (value != null && value.getValue() != null) { - String valueString = value.getValue(); + if (value != null && value.getData() != null) { + String valueString = value.getData(); mEditView.setText(valueString); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextInlineFieldCell.java index 8563588..d998995 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextInlineFieldCell.java @@ -1,15 +1,15 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 8/28/2015. */ public class FormEditTextInlineFieldCell extends FormEditTextFieldCell { - public FormEditTextInlineFieldCell(Context context, RowDescriptor rowDescriptor) { + public FormEditTextInlineFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextViewFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextViewFieldCell.java index 3d4cf32..577d86d 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextViewFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextViewFieldCell.java @@ -1,10 +1,10 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by tonimoeckel on 15.07.14. */ @@ -12,7 +12,7 @@ public class FormEditTextViewFieldCell extends FormEditTextFieldCell { public FormEditTextViewFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextViewInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextViewInlineFieldCell.java index 9c29096..143ee90 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextViewInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditTextViewInlineFieldCell.java @@ -1,11 +1,11 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 8/28/2015. */ @@ -13,7 +13,7 @@ public class FormEditTextViewInlineFieldCell extends FormEditTextFieldCell { public FormEditTextViewInlineFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditURLFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditURLFieldCell.java index 7804791..c056a67 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditURLFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormEditURLFieldCell.java @@ -1,18 +1,18 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.content.Context; import android.text.InputType; import android.widget.EditText; +import com.quemb.qmbform.descriptor.RowDescriptor; + /** * Created by tonimoeckel on 15.07.14. */ public class FormEditURLFieldCell extends FormEditTextFieldCell { public FormEditURLFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormExternalButtonFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormExternalButtonFieldCell.java index 9b202d3..432ce15 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormExternalButtonFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormExternalButtonFieldCell.java @@ -14,7 +14,7 @@ public class FormExternalButtonFieldCell extends FormButtonFieldCell { public FormExternalButtonFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -23,8 +23,8 @@ public void onCellSelected() { super.onCellSelected(); Value value = getRowDescriptor().getValue(); - if (value != null && value.getValue() != null) { - Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(value.getValue().toString())); + if (value != null && value.getData() != null) { + Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(value.getData().toString())); getContext().startActivity(i); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormIntegerSliderFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormIntegerSliderFieldCell.java index ad2f405..3646fa1 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormIntegerSliderFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormIntegerSliderFieldCell.java @@ -1,12 +1,12 @@ package com.quemb.qmbform.view; +import android.content.Context; +import android.widget.SeekBar; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; -import android.content.Context; -import android.widget.SeekBar; - import java.util.HashMap; /** @@ -17,7 +17,7 @@ public class FormIntegerSliderFieldCell extends FormDetailTextInlineFieldCell { private SeekBar mSeekBar; public final static String CellConfigMaxKey = "CellConfigMaxKey"; - public FormIntegerSliderFieldCell(Context context, RowDescriptor rowDescriptor) { + public FormIntegerSliderFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -25,6 +25,7 @@ public FormIntegerSliderFieldCell(Context context, RowDescriptor rowDescriptor) protected void init() { super.init(); + mSeekBar = (SeekBar) findViewById(R.id.seekBar); mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @@ -65,7 +66,7 @@ protected void update() { Integer max = config != null && config.containsKey(CellConfigMaxKey) ? (Integer) config.get(CellConfigMaxKey) : 100; mSeekBar.setMax(max); - mSeekBar.setProgress(value.getValue()); + mSeekBar.setProgress(value.getData()); mSeekBar.setEnabled(!getRowDescriptor().getDisabled()); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java index fe284a9..2a6f660 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java @@ -20,7 +20,7 @@ public class FormPickerDialogFieldCell extends FormDetailTextInlineFieldCell { public FormPickerDialogFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -34,6 +34,7 @@ protected void update() { @Override public void onCellSelected() { + super.onCellSelected(); if (getRowDescriptor().getDataSource() == null) { throw new NoDataSourceException(); @@ -43,15 +44,13 @@ public void onCellSelected() { } - /** - * Generics: capture the wildcard of RowDescriptor - */ + // Capture the wildcard of RowDescriptor private void loadData(RowDescriptor rowDescriptor) { - rowDescriptor.getDataSource().loadData(new DataSourceListener() + rowDescriptor.getDataSource().loadData(new DataSourceListener() { @Override - public void onDataSourceLoaded(List list) + public void onDataSourceLoaded(List list) { if (list.size() > 0) { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogVerticalFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogVerticalFieldCell.java index f0cdcc4..fae4120 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogVerticalFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogVerticalFieldCell.java @@ -1,10 +1,10 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by tonimoeckel on 15.07.14. */ @@ -12,7 +12,7 @@ public class FormPickerDialogVerticalFieldCell extends FormPickerDialogFieldCell public FormPickerDialogVerticalFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlFieldCell.java index 3ed5a66..24b7a8f 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlFieldCell.java @@ -1,11 +1,5 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.CellDescriptor; -import com.quemb.qmbform.descriptor.FormOptionsObject; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.content.Context; import android.view.Gravity; import android.view.ViewGroup; @@ -13,6 +7,12 @@ import android.widget.RadioGroup; import android.widget.TextView; +import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.CellDescriptor; +import com.quemb.qmbform.descriptor.FormOptionsObject; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; + import java.util.ArrayList; import java.util.List; @@ -26,7 +26,7 @@ public class FormSelectorSegmentedControlFieldCell extends FormBaseCell { private TextView mTextView; private ArrayList mValues; - public FormSelectorSegmentedControlFieldCell(Context context, RowDescriptor rowDescriptor) { + public FormSelectorSegmentedControlFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlInlineFieldCell.java index 1c9142e..0196413 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSegmentedControlInlineFieldCell.java @@ -1,16 +1,16 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 9/8/2015. */ public class FormSelectorSegmentedControlInlineFieldCell extends FormSelectorSegmentedControlFieldCell { - public FormSelectorSegmentedControlInlineFieldCell(Context context, RowDescriptor rowDescriptor) { + public FormSelectorSegmentedControlInlineFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java index d53e863..417c226 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java @@ -1,17 +1,17 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.adapter.FormOptionsObjectAdapter; -import com.quemb.qmbform.descriptor.FormOptionsObject; -import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.descriptor.Value; - import android.app.AlertDialog; import android.content.Context; import android.view.View; import android.widget.AdapterView; import android.widget.Spinner; +import com.quemb.qmbform.R; +import com.quemb.qmbform.adapter.FormOptionsObjectAdapter; +import com.quemb.qmbform.descriptor.FormOptionsObject; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; + import java.util.ArrayList; import java.util.List; @@ -23,7 +23,7 @@ public class FormSpinnerFieldCell extends FormTitleFieldCell { private ArrayList mValues; public FormSpinnerFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerInlineFieldCell.java index 5806923..a61733c 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerInlineFieldCell.java @@ -1,15 +1,15 @@ package com.quemb.qmbform.view; +import android.content.Context; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; - /** * Created by pmaccamp on 9/4/2015. */ public class FormSpinnerInlineFieldCell extends FormSpinnerFieldCell { - public FormSpinnerInlineFieldCell(Context context, RowDescriptor rowDescriptor) { + public FormSpinnerInlineFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java index c92394f..9e40d90 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java @@ -23,7 +23,7 @@ public class FormTextPickerDialogFieldCell extends FormEditTextFieldCell { private ImageButton mImageButton; public FormTextPickerDialogFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -71,10 +71,10 @@ public void onCellSelected() { */ private void loadData(RowDescriptor rowDescriptor) { - rowDescriptor.getDataSource().loadData(new DataSourceListener() + rowDescriptor.getDataSource().loadData(new DataSourceListener() { @Override - public void onDataSourceLoaded(List list) + public void onDataSourceLoaded(List list) { if (list.size() > 0) diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeDialogFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeDialogFieldCell.java index e4f3a99..7fc9a9d 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeDialogFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeDialogFieldCell.java @@ -1,11 +1,11 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.app.TimePickerDialog; import android.content.Context; import android.widget.TimePicker; +import com.quemb.qmbform.descriptor.RowDescriptor; + import java.util.Calendar; /** @@ -17,7 +17,7 @@ public class FormTimeDialogFieldCell extends FormTimeFieldCell implements private Calendar mCalendar; public FormTimeDialogFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeFieldCell.java index 8476a16..a51fad3 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeFieldCell.java @@ -1,11 +1,12 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.descriptor.CellDescriptor; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.content.Context; import android.widget.TextView; +import com.quemb.qmbform.descriptor.CellDescriptor; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.utils.Styling; + import java.text.DateFormat; import java.util.Date; @@ -15,7 +16,7 @@ public class FormTimeFieldCell extends FormDateFieldCell { public FormTimeFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -32,7 +33,8 @@ protected void updateDateLabel(Date date, boolean disabled) { if (disabled) { editView.setEnabled(false); - setTextColor(editView, CellDescriptor.COLOR_VALUE_DISABLED); + if (setTextColor(editView, CellDescriptor.COLOR_VALUE_DISABLED) == false) + editView.setTextColor(Styling.getColorFromAttr(editView.getContext(), android.R.attr.textColor)); } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeInlineFieldCell.java index bb595a1..e4fab03 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTimeInlineFieldCell.java @@ -1,13 +1,14 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.content.Context; import android.os.Build; import android.text.format.DateFormat; import android.widget.TimePicker; +import com.quemb.qmbform.R; +import com.quemb.qmbform.TimePickerInline; +import com.quemb.qmbform.descriptor.RowDescriptor; + import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; @@ -18,10 +19,10 @@ public class FormTimeInlineFieldCell extends FormTimeFieldCell implements TimePicker.OnTimeChangedListener { - private TimePicker mTimePicker; + private TimePickerInline mTimePicker; public FormTimeInlineFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -30,7 +31,7 @@ public FormTimeInlineFieldCell(Context context, protected void init() { super.init(); - mTimePicker = (TimePicker) findViewById(R.id.timePicker); + mTimePicker = (TimePickerInline) findViewById(R.id.timePicker); } @@ -57,7 +58,7 @@ protected void initDatePicker(Calendar calendar) { mTimePicker.setOnTimeChangedListener(this); if (DateFormat.is24HourFormat(getContext())) - mTimePicker.setIs24HourView(true); + mTimePicker.setIs24HourView(true); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTitleFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTitleFieldCell.java index c13f407..e814759 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTitleFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTitleFieldCell.java @@ -1,12 +1,12 @@ package com.quemb.qmbform.view; +import android.content.Context; +import android.widget.TextView; + import com.quemb.qmbform.R; import com.quemb.qmbform.descriptor.CellDescriptor; import com.quemb.qmbform.descriptor.RowDescriptor; -import android.content.Context; -import android.widget.TextView; - /** * Created by tonimoeckel on 15.07.14. */ @@ -14,15 +14,16 @@ public class FormTitleFieldCell extends FormBaseCell { private TextView mTextView; public FormTitleFieldCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @Override protected void init() { + super.init(); - mTextView = (TextView) findViewById(R.id.textView); + mTextView = (TextView) findViewById(R.id.textView); setStyleId(mTextView, CellDescriptor.APPEARANCE_TEXT_LABEL, CellDescriptor.COLOR_LABEL); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/SeperatorSectionCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/SeperatorSectionCell.java index 9cbc8dc..95bf7e1 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/SeperatorSectionCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/SeperatorSectionCell.java @@ -1,11 +1,12 @@ package com.quemb.qmbform.view; -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.RowDescriptor; - import android.content.Context; +import android.view.View; import android.widget.LinearLayout; +import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.RowDescriptor; + /** * Created by tonimoeckel on 18.02.15. */ @@ -13,7 +14,7 @@ public class SeperatorSectionCell extends FormBaseCell { public SeperatorSectionCell(Context context, - RowDescriptor rowDescriptor) { + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -32,6 +33,11 @@ public boolean shouldAddDivider() { return false; } + @Override + protected View getDividerView() { + return null; + } + @Override protected int getResource() { return R.layout.section_seperator_cell; diff --git a/lib/QMBForm/src/main/res/layout/date_inline_field_cell.xml b/lib/QMBForm/src/main/res/layout/date_inline_field_cell.xml index ca9acf5..e8c063f 100755 --- a/lib/QMBForm/src/main/res/layout/date_inline_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/date_inline_field_cell.xml @@ -27,7 +27,7 @@ - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/time_inline_field_cell.xml b/lib/QMBForm/src/main/res/layout/time_inline_field_cell.xml index 4a11519..0adc7b7 100755 --- a/lib/QMBForm/src/main/res/layout/time_inline_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/time_inline_field_cell.xml @@ -27,12 +27,11 @@ -