diff --git a/README.md b/README.md index 5a059d4..4c9f4da 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ Create simple Android forms RowDescriptor customRow = RowDescriptor.newInstance("custom",customType, "title", new Value("value")); HashMap cellConfig = new HashMap(); cellConfig.put("config",configObject); - customRow.setCellConfig(cellConfig); + customRow.setCustomCellConfig(cellConfig); section.addRow(customRow); ``` @@ -159,7 +159,56 @@ Create simple Android forms rowDescriptor.addValidator(new EmailValidator()); ``` - + +## Cell style configuration +The following preset cell configurations are available +```java + public enum CONFIG_TYPE { + PADDING, // Specified as an int[4] in the order {left, top, right, bottom} + TYPEFACE, // Specified as a Typeface enum such as Typeface.BOLD. Only applicable to instances of TextView + INPUT_TYPE, // Specified as an InputType enum such as InputType.TYPE_NUMBER_FLAG_DECIMAL. Only applicable to instances of TextView + IME_OPTIONS, // Specified as an imeOptions enum such as IME_ACTION_DONE. Only applicable to instances of TextView + TEXT_ALIGNMENT, // Specified as an View enum such as TEXT_ALIGNMENT_CENTER (only available on api 17+) + MAX_LINES, // Specified as an int. Only applicable to instances of TextView + MIN_LINES, // Specified as an int. Only applicable to instances of TextView + MINIMUM_HEIGHT, // Specified as an int + MINIMUM_WIDTH, // Specified as an int + BACKGROUND_COLOR, // Specified as color reference id + TEXT_COLOR, // Specified as color reference id. Only applicable to instances of TextView + GRAVITY, // Specified as a Gravity enum such as Gravity.CENTER. Only applicable to instances of TextView + VISIBILITY // Specified as a View enum such as VIEW.GONE or View.INVISIBLE + } +``` +They can be used on any view in a cell that has a public accessor. In this example I modify the styles for the labelTextView and detailTextView of the FormRowDescriptorTypeDetail type cell - +```java +RowDescriptor rowDescriptor = RowDescriptor.newInstance("valid", + RowDescriptor.FormRowDescriptorTypeDetail, + "Test", + new Value("Test")); + +HashMap cellConfig = new HashMap(); +int[] padding = {12, 13, 14, 15}; +CellConfigObject[] config = { + new CellConfigObject(CellConfigObject.CONFIG_TYPE.PADDING, padding), + new CellConfigObject(CellConfigObject.CONFIG_TYPE.TYPEFACE, Typeface.BOLD_ITALIC), + new CellConfigObject(CellConfigObject.CONFIG_TYPE.INPUT_TYPE, InputType.TYPE_NUMBER_FLAG_DECIMAL), + new CellConfigObject(CellConfigObject.CONFIG_TYPE.GRAVITY, Gravity.CENTER), +}; +cellConfig.put("getLabelTextView", config); //getLabelTextView is the function name of the getter for this view +cellConfig.put("getDetailTextView", config); +rowDescriptor.setCellConfig(cellConfig); +``` + +another use case is to hide parts of an form cell such as the label +```java +HashMap cellConfig = new HashMap(); +CellConfigObject[] config = { + new CellConfigObject(CellConfigObject.CONFIG_TYPE.VISIBILITY, View.GONE) +}; +cellConfig.put("getLabelTextView", config); +row.setCellConfig(cellConfig); +``` + ## Installation QMBForm is not available at the maven repository yet. But it's a gradly based android-library project. @@ -182,15 +231,13 @@ QMBForm **has no** dependencies to other third party libs (but compile 'com.andr Most elements have an inline version (label on the same line as the displayed value) and a normal version (label on separate line above displayed value). - Available elements: + ```java - public static final String FormRowDescriptorTypeName = "name"; - public static final String FormRowDescriptorTypeText = "text"; public static final String FormRowDescriptorTypeTextInline = "textInline"; - public static final String FormRowDescriptorTypeDetail = "detail"; + public static final String FormRowDescriptorTypeHTMLText = "htmlText"; public static final String FormRowDescriptorTypeDetailInline = "detailInline"; - public static final String FormRowDescriptorTypeTextView = "textView"; - public static final String FormRowDescriptorTypeTextViewInline = "textViewInline"; + public static final String FormRowDescriptorTypeDetail = "detail"; public static final String FormRowDescriptorTypeURL = "url"; public static final String FormRowDescriptorTypeEmail = "email"; public static final String FormRowDescriptorTypeEmailInline = "emailInline"; @@ -198,34 +245,40 @@ Most elements have an inline version (label on the same line as the displayed va public static final String FormRowDescriptorTypePasswordInline = "passwordInline"; public static final String FormRowDescriptorTypeNumber = "number"; public static final String FormRowDescriptorTypeNumberInline = "numberInline"; + public static final String FormRowDescriptorTypeIntegerSlider = "integerSlider"; public static final String FormRowDescriptorTypeCurrency = "currency"; public static final String FormRowDescriptorTypePhone = "phone"; - public static final String FormRowDescriptorTypeInteger = "integer"; public static final String FormRowDescriptorTypeIntegerInline = "integerInline"; - + public static final String FormRowDescriptorTypeTextView = "textView"; + public static final String FormRowDescriptorTypeTextViewInline = "textViewInline"; + public static final String FormRowDescriptorTypeSelectorSpinner = "selectorSpinner"; public static final String FormRowDescriptorTypeSelectorSpinnerInline = "selectorSpinnerInline"; - public static final String FormRowDescriptorTypeSelectorPickerDialog = "selectorPickerDialog"; + public static final String FormRowDescriptorTypeSelectorTextPickerDialogInline = "textPickerDialog"; + public static final String FormRowDescriptorTypeSelectorPickerDialogInline = "selectorPickerDialog"; + public static final String FormRowDescriptorTypeSelectorPickerDialog = "selectorPickerDialogVertical"; + public static final String FormRowDescriptorTypeSelectorSegmentedControlInline = "selectorSegmentedControlInline"; + public static final String FormRowDescriptorTypeSelectorSegmentedControl = "selectorSegmentedControl"; public static final String FormRowDescriptorTypeDateInline = "dateInline"; public static final String FormRowDescriptorTypeTimeInline = "timeInline"; public static final String FormRowDescriptorTypeDate = "date"; public static final String FormRowDescriptorTypeTime = "time"; + public static final String FormRowDescriptorTypeDatePicker = "datePicker"; public static final String FormRowDescriptorTypeBooleanCheck = "booleanCheck"; public static final String FormRowDescriptorTypeBooleanSwitch = "booleanSwitch"; - public static final String FormRowDescriptorTypeButton = "button"; public static final String FormRowDescriptorTypeButtonInline = "buttonInline"; - - public static final String FormRowDescriptorTypeSelectorSegmentedControl = "selectorSegmentedControl"; - public static final String FormRowDescriptorTypeSelectorSegmentedControlInline = "selectorSegmentedControlInline"; - + public static final String FormRowDescriptorTypeExternal = "external"; + public static final String FormRowDescriptorTypeSectionSeperator = "sectionSeperator"; + public static final String FormRowDescriptorTypeHtml = "html"; ``` + - Coming elements: (Avaiable at XLForm) + ```java - public static final String FormRowDescriptorTypeTwitter = "twitter"; public static final String FormRowDescriptorTypeAccount = "account"; @@ -244,8 +297,8 @@ Most elements have an inline version (label on the same line as the displayed va public static final String FormRowDescriptorTypePicker = "picker"; public static final String FormRowDescriptorTypeImage = "image"; + public static final String FormRowDescriptorTypeWeb = "web"; public static final String FormRowDescriptorTypeStepCounter = "stepCounter"; - ``` ## To do 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 abdbdc0..2454110 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 @@ -1,8 +1,6 @@ package com.quemb.qmbform.sample.controller; import android.app.AlertDialog; -import android.app.ProgressDialog; -import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; @@ -16,10 +14,9 @@ import com.quemb.qmbform.FormManager; import com.quemb.qmbform.OnFormRowClickListener; -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.FormOptionsObject; import com.quemb.qmbform.descriptor.OnFormRowValueChangedListener; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.SectionDescriptor; @@ -34,7 +31,7 @@ * Created by tonimoeckel on 17.07.14. */ public class SampleFormFragment extends Fragment implements OnFormRowValueChangedListener, - OnFormRowClickListener{ + OnFormRowClickListener { private ListView mListView; private HashMap> mChangesMap; @@ -43,8 +40,7 @@ public class SampleFormFragment extends Fragment implements OnFormRowValueChange public static String TAG = "SampleFormFragment"; private FormManager mFormManager; - public static final SampleFormFragment newInstance() - { + public static final SampleFormFragment newInstance() { SampleFormFragment f = new SampleFormFragment(); return f; @@ -59,7 +55,7 @@ public void onCreate(Bundle savedInstanceState) { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + Bundle savedInstanceState) { View v = inflater.inflate(R.layout.form_sample, container, false); @@ -77,78 +73,83 @@ public void onViewCreated(View view, Bundle savedInstanceState) { FormDescriptor descriptor = FormDescriptor.newInstance(); - SectionDescriptor sectionDescriptor = SectionDescriptor.newInstance("section","Text Inputs"); + SectionDescriptor sectionDescriptor = SectionDescriptor.newInstance("section", "Text Inputs"); descriptor.addSection(sectionDescriptor); - sectionDescriptor.addRow( RowDescriptor.newInstance("detail", RowDescriptor.FormRowDescriptorTypeTextInline, "Title",new Value("Detail")) ); - sectionDescriptor.addRow( RowDescriptor.newInstance("detail", RowDescriptor.FormRowDescriptorTypeText, "Title",new Value("Detail")) ); - sectionDescriptor.addRow( RowDescriptor.newInstance("text",RowDescriptor.FormRowDescriptorTypeText, "Text", new Value("test")) ); - RowDescriptor textDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeText, "Text Disabled", new Value("test")); + sectionDescriptor.addRow(RowDescriptor.newInstance("detail", RowDescriptor.FormRowDescriptorTypeTextInline, "Title", new Value("Detail"))); + sectionDescriptor.addRow(RowDescriptor.newInstance("detail", RowDescriptor.FormRowDescriptorTypeText, "Title", new Value("Detail"))); + sectionDescriptor.addRow(RowDescriptor.newInstance("text", RowDescriptor.FormRowDescriptorTypeText, "Text", new Value("test"))); + RowDescriptor textDisabled = RowDescriptor.newInstance("textViewDisabled", RowDescriptor.FormRowDescriptorTypeText, "Text Disabled", new Value("test")); textDisabled.setDisabled(true); - sectionDescriptor.addRow( textDisabled ); - sectionDescriptor.addRow( RowDescriptor.newInstance("text",RowDescriptor.FormRowDescriptorTypeURL, "URL", new Value("http://www.github.com/")) ); - RowDescriptor textUrlDisabled = RowDescriptor.newInstance("textViewDisabled",RowDescriptor.FormRowDescriptorTypeURL, "URL Disabled", new Value("http://www.github.com/")); + sectionDescriptor.addRow(textDisabled); + sectionDescriptor.addRow(RowDescriptor.newInstance("text", RowDescriptor.FormRowDescriptorTypeURL, "URL", 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 ); - sectionDescriptor.addRow( RowDescriptor.newInstance("text",RowDescriptor.FormRowDescriptorTypeEmail, "Email", new Value("support@github.com")) ); - RowDescriptor textEmailDisabled = RowDescriptor.newInstance("textDisabled",RowDescriptor.FormRowDescriptorTypeEmail, "Email Disabled", new Value("support@github.com")); + sectionDescriptor.addRow(textUrlDisabled); + sectionDescriptor.addRow(RowDescriptor.newInstance("text", RowDescriptor.FormRowDescriptorTypeEmail, "Email", 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 ); - sectionDescriptor.addRow( 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 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 ...")); + sectionDescriptor.addRow(textEmailDisabled); + sectionDescriptor.addRow(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 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 ); - sectionDescriptor.addRow( RowDescriptor.newInstance("number",RowDescriptor.FormRowDescriptorTypeNumber, "Number", new Value(555.456)) ); - RowDescriptor numberRowDisabled = RowDescriptor.newInstance("numberDisabled",RowDescriptor.FormRowDescriptorTypeNumber, "Number Disabled", new Value(555.456)); + sectionDescriptor.addRow(textViewDisabled); + sectionDescriptor.addRow(RowDescriptor.newInstance("number", RowDescriptor.FormRowDescriptorTypeNumber, "Number", new Value(555.456))); + RowDescriptor numberRowDisabled = RowDescriptor.newInstance("numberDisabled", RowDescriptor.FormRowDescriptorTypeNumber, "Number Disabled", new Value(555.456)); numberRowDisabled.setDisabled(true); - sectionDescriptor.addRow( numberRowDisabled ); + sectionDescriptor.addRow(numberRowDisabled); - 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)); + 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)); integerRowDisabled.setDisabled(true); - sectionDescriptor.addRow( integerRowDisabled ); + sectionDescriptor.addRow(integerRowDisabled); - sectionDescriptor.addRow( RowDescriptor.newInstance("integerSlider",RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider", new Value(50)) ); - RowDescriptor integerSliderDisabled = RowDescriptor.newInstance("integerSliderDisabled",RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider Disabled", new Value(50)); + sectionDescriptor.addRow(RowDescriptor.newInstance("integerSlider", RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider", new Value(50))); + RowDescriptor integerSliderDisabled = RowDescriptor.newInstance("integerSliderDisabled", RowDescriptor.FormRowDescriptorTypeIntegerSlider, "Integer Slider Disabled", new Value(50)); integerSliderDisabled.setDisabled(true); - sectionDescriptor.addRow( integerSliderDisabled ); - SectionDescriptor sectionDescriptor1 = SectionDescriptor.newInstance("sectionOne","Picker"); + sectionDescriptor.addRow(integerSliderDisabled); + SectionDescriptor sectionDescriptor1 = SectionDescriptor.newInstance("sectionOne", "Picker"); descriptor.addSection(sectionDescriptor1); - RowDescriptor pickerDescriptor = RowDescriptor.newInstance("picker",RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, "Picker", new Value("Item 5")); - pickerDescriptor.setDataSource(new DataSource() { - - @Override - public void loadData(final DataSourceListener listener) { - // Can be async - CustomTask task = new CustomTask(); - task.execute(listener); - - } - }); - sectionDescriptor1.addRow( pickerDescriptor ); - - RowDescriptor pickerDisabledDescriptor = RowDescriptor.newInstance("pickerDisabled",RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, "Picker Disabled", new Value("Value")); + RowDescriptor pickerDescriptor = RowDescriptor.newInstance("picker", + RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, + "Picker", + new Value<>(5)); + ArrayList selectorOptions = new ArrayList<>(); + selectorOptions.add(FormOptionsObject.createFormOptionsObject(1, "Item 1")); + selectorOptions.add(FormOptionsObject.createFormOptionsObject(2, "Item 2")); + selectorOptions.add(FormOptionsObject.createFormOptionsObject(3, "Item 3")); + selectorOptions.add(FormOptionsObject.createFormOptionsObject(4, "Item 4")); + selectorOptions.add(FormOptionsObject.createFormOptionsObject(5, "Item 5")); + pickerDescriptor.setSelectorOptions(selectorOptions); + sectionDescriptor1.addRow(pickerDescriptor); + + RowDescriptor pickerDisabledDescriptor = RowDescriptor.newInstance("pickerDisabled", + RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, "Picker Disabled", new Value("Value")); pickerDisabledDescriptor.setDisabled(true); sectionDescriptor1.addRow(pickerDisabledDescriptor); - SectionDescriptor sectionDescriptor2 = SectionDescriptor.newInstance("sectionTwo","Boolean Inputs"); + SectionDescriptor sectionDescriptor2 = SectionDescriptor.newInstance("sectionTwo", "Boolean Inputs"); descriptor.addSection(sectionDescriptor2); - sectionDescriptor2.addRow( RowDescriptor.newInstance("boolean",RowDescriptor.FormRowDescriptorTypeBooleanSwitch, "Boolean Switch", new Value(true)) ); - RowDescriptor booleanDisabled = RowDescriptor.newInstance("booleanDisabled",RowDescriptor.FormRowDescriptorTypeBooleanSwitch, "Boolean Switch Disabled", new Value(true)); + sectionDescriptor2.addRow(RowDescriptor.newInstance("boolean", + RowDescriptor.FormRowDescriptorTypeBooleanSwitch, "Boolean Switch", new Value(true))); + RowDescriptor booleanDisabled = RowDescriptor.newInstance("booleanDisabled", + RowDescriptor.FormRowDescriptorTypeBooleanSwitch, "Boolean Switch Disabled", new Value(true)); booleanDisabled.setDisabled(true); - sectionDescriptor2.addRow( booleanDisabled ); + sectionDescriptor2.addRow(booleanDisabled); - sectionDescriptor2.addRow( RowDescriptor.newInstance("check",RowDescriptor.FormRowDescriptorTypeBooleanCheck, "Check", new Value(true)) ); - RowDescriptor checkDisabled = RowDescriptor.newInstance("checkDisabled",RowDescriptor.FormRowDescriptorTypeBooleanCheck, "Check Disabled", new Value(true)) ; + sectionDescriptor2.addRow(RowDescriptor.newInstance("check", + RowDescriptor.FormRowDescriptorTypeBooleanCheck, "Check", 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"); + SectionDescriptor sectionDescriptor3 = SectionDescriptor.newInstance("sectionThree", "Button"); descriptor.addSection(sectionDescriptor3); - final RowDescriptor button = RowDescriptor.newInstance("button",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me"); + final RowDescriptor button = RowDescriptor.newInstance("button", RowDescriptor.FormRowDescriptorTypeButton, "Tap Me"); button.setOnFormRowClickListener(new OnFormRowClickListener() { @Override public void onFormRowClick(FormItemDescriptor itemDescriptor) { @@ -165,8 +166,8 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) { builder.show(); } }); - sectionDescriptor3.addRow( button ); - RowDescriptor buttonDisabled = RowDescriptor.newInstance("buttonDisabled",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me Disabled"); + sectionDescriptor3.addRow(button); + RowDescriptor buttonDisabled = RowDescriptor.newInstance("buttonDisabled", RowDescriptor.FormRowDescriptorTypeButton, "Tap Me Disabled"); buttonDisabled.setOnFormRowClickListener(new OnFormRowClickListener() { @Override public void onFormRowClick(FormItemDescriptor itemDescriptor) { @@ -179,25 +180,25 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) { }); buttonDisabled.setDisabled(true); sectionDescriptor3.addRow(buttonDisabled); - sectionDescriptor3.addRow(RowDescriptor.newInstance("external",RowDescriptor.FormRowDescriptorTypeExternal, "github.com", new Value("http://github.com"))); + sectionDescriptor3.addRow(RowDescriptor.newInstance("external", RowDescriptor.FormRowDescriptorTypeExternal, "github.com", new Value("http://github.com"))); - SectionDescriptor sectionDescriptor4 = SectionDescriptor.newInstance("sectionFour","Dates"); + SectionDescriptor sectionDescriptor4 = SectionDescriptor.newInstance("sectionFour", "Dates"); descriptor.addSection(sectionDescriptor4); - sectionDescriptor4.addRow( RowDescriptor.newInstance("dateInline",RowDescriptor.FormRowDescriptorTypeDateInline, "Date Inline", new Value(new Date()) )); - RowDescriptor dateInlineDisabled = RowDescriptor.newInstance("dateInlineDisabled",RowDescriptor.FormRowDescriptorTypeDateInline, "Date Inline Disabled", new Value(new Date()) ); + sectionDescriptor4.addRow(RowDescriptor.newInstance("dateInline", RowDescriptor.FormRowDescriptorTypeDateInline, "Date Inline", new Value(new Date()))); + RowDescriptor dateInlineDisabled = RowDescriptor.newInstance("dateInlineDisabled", RowDescriptor.FormRowDescriptorTypeDateInline, "Date Inline Disabled", new Value(new Date())); dateInlineDisabled.setDisabled(true); sectionDescriptor4.addRow(dateInlineDisabled); - sectionDescriptor4.addRow( RowDescriptor.newInstance("dateDialog",RowDescriptor.FormRowDescriptorTypeDate, "Date Dialog") ); - RowDescriptor dateDialogDisabled = RowDescriptor.newInstance("dateDialogDisabled",RowDescriptor.FormRowDescriptorTypeDate, "Date Dialog Disabled" ); + sectionDescriptor4.addRow(RowDescriptor.newInstance("dateDialog", RowDescriptor.FormRowDescriptorTypeDate, "Date Dialog")); + RowDescriptor dateDialogDisabled = RowDescriptor.newInstance("dateDialogDisabled", RowDescriptor.FormRowDescriptorTypeDate, "Date Dialog Disabled"); dateDialogDisabled.setDisabled(true); sectionDescriptor4.addRow(dateDialogDisabled); - sectionDescriptor4.addRow( RowDescriptor.newInstance("timeInline",RowDescriptor.FormRowDescriptorTypeTimeInline, "Time Inline" , new Value(new Date())) ); - RowDescriptor timeInlineDisabled = RowDescriptor.newInstance("timeInlineDisabled",RowDescriptor.FormRowDescriptorTypeTimeInline, "Time Inline Disabled", new Value(new Date()) ); + sectionDescriptor4.addRow(RowDescriptor.newInstance("timeInline", RowDescriptor.FormRowDescriptorTypeTimeInline, "Time Inline", new Value(new Date()))); + RowDescriptor timeInlineDisabled = RowDescriptor.newInstance("timeInlineDisabled", RowDescriptor.FormRowDescriptorTypeTimeInline, "Time Inline Disabled", new Value(new Date())); timeInlineDisabled.setDisabled(true); sectionDescriptor4.addRow(timeInlineDisabled); - sectionDescriptor4.addRow( RowDescriptor.newInstance("timeDialog",RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog", new Value(new Date())) ); - RowDescriptor timeDialogDisabled = RowDescriptor.newInstance("timeDialogDisabled",RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog Disabled", new Value(new Date()) ); + sectionDescriptor4.addRow(RowDescriptor.newInstance("timeDialog", RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog", new Value(new Date()))); + RowDescriptor timeDialogDisabled = RowDescriptor.newInstance("timeDialogDisabled", RowDescriptor.FormRowDescriptorTypeTime, "Time Dialog Disabled", new Value(new Date())); timeDialogDisabled.setDisabled(true); sectionDescriptor4.addRow(timeDialogDisabled); @@ -207,7 +208,6 @@ public void onFormRowClick(FormItemDescriptor itemDescriptor) { mFormManager.setOnFormRowValueChangedListener(this); - } @Override @@ -219,7 +219,6 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { } - @Override public void onPrepareOptionsMenu(Menu menu) { updateSaveItem(); @@ -227,7 +226,7 @@ public void onPrepareOptionsMenu(Menu menu) { @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item == mSaveMenuItem){ + if (item == mSaveMenuItem) { mChangesMap.clear(); updateSaveItem(); } @@ -251,49 +250,8 @@ public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value } private void updateSaveItem() { - if (mSaveMenuItem != null){ - mSaveMenuItem.setVisible(mChangesMap.size()>0); - } - } - - private class CustomTask extends AsyncTask> { - - private DataSourceListener mListener; - private ProgressDialog mProgressDialog; - - @Override - protected void onPreExecute() { - super.onPreExecute(); - mProgressDialog = ProgressDialog.show(getActivity(), "Loading", - "Do some work", true); - } - - protected ArrayList doInBackground(DataSourceListener... listeners) { - - mListener = (DataSourceListener)listeners[0]; - - ArrayList items = new ArrayList(); - for (Integer i=0;i<10;i++){ - doFakeWork(); - items.add("Item "+String.valueOf(i)); - } - - return items; - } - - @Override - protected void onPostExecute(ArrayList strings) { - super.onPostExecute(strings); - mProgressDialog.dismiss(); - mListener.onDataSourceLoaded(strings); - } - - private void doFakeWork() { - try { - Thread.sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } + if (mSaveMenuItem != null) { + mSaveMenuItem.setVisible(mChangesMap.size() > 0); } } } 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 92ca6d3..7ffb8d3 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,20 +1,5 @@ package com.quemb.qmbform.sample.controller; -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; import android.support.v4.app.Fragment; import android.util.Log; @@ -26,6 +11,18 @@ import android.view.ViewGroup; import android.widget.ListView; +import com.quemb.qmbform.FormManager; +import com.quemb.qmbform.OnFormRowClickListener; +import com.quemb.qmbform.descriptor.FormDescriptor; +import com.quemb.qmbform.descriptor.FormItemDescriptor; +import com.quemb.qmbform.descriptor.FormOptionsObject; +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; @@ -42,8 +39,7 @@ public class SampleMultivalueSectionFormFragment extends Fragment implements OnF public static String TAG = "SampleFormFragment"; private FormManager mFormManager; - public static final SampleMultivalueSectionFormFragment newInstance() - { + public static final SampleMultivalueSectionFormFragment newInstance() { SampleMultivalueSectionFormFragment f = new SampleMultivalueSectionFormFragment(); return f; @@ -58,7 +54,7 @@ public void onCreate(Bundle savedInstanceState) { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { + Bundle savedInstanceState) { View v = inflater.inflate(R.layout.form_sample, container, false); @@ -80,48 +76,46 @@ public void onViewCreated(View view, Bundle savedInstanceState) { values.add("blue"); values.add("green"); - SectionDescriptor sectionDescriptor = SectionDescriptor.newInstance("colors","Colors"); + SectionDescriptor sectionDescriptor = SectionDescriptor.newInstance("colors", "Colors"); sectionDescriptor.setMultivalueSection(true); descriptor.addSection(sectionDescriptor); - - for (String item : values){ - sectionDescriptor.addRow(RowDescriptor.newInstance("colors-"+item, RowDescriptor.FormRowDescriptorTypeText,null,new Value(item))); + for (String item : values) { + sectionDescriptor.addRow(RowDescriptor.newInstance("colors-" + item, RowDescriptor.FormRowDescriptorTypeText, null, new Value(item))); } sectionDescriptor.addRow(RowDescriptor.newInstance("new", RowDescriptor.FormRowDescriptorTypeText)); - SectionDescriptor sectionDescriptor2 = SectionDescriptor.newInstance("multiPicker","Pick a color"); + SectionDescriptor sectionDescriptor2 = SectionDescriptor.newInstance("multiPicker", "Pick a color"); sectionDescriptor2.setMultivalueSection(true); descriptor.addSection(sectionDescriptor2); - RowDescriptor pickerDescriptor2 = RowDescriptor.newInstance("picker2",RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog); - pickerDescriptor2.setDataSource(new DataSource() { - - @Override - public void loadData(final DataSourceListener listener) { + RowDescriptor pickerDescriptor2 = RowDescriptor.newInstance("picker2", + RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog); - listener.onDataSourceLoaded(values); + ArrayList selectorOptions = new ArrayList<>(); + selectorOptions.add(FormOptionsObject.createFormOptionsObject("red", "Red")); + selectorOptions.add(FormOptionsObject.createFormOptionsObject("blue", "Blue")); + selectorOptions.add(FormOptionsObject.createFormOptionsObject("green", "Green")); - } - }); - sectionDescriptor2.addRow( pickerDescriptor2 ); + pickerDescriptor2.setSelectorOptions(selectorOptions); + sectionDescriptor2.addRow(pickerDescriptor2); - SectionDescriptor sectionDescriptor3 = SectionDescriptor.newInstance("multiPicker","Pick a color"); + SectionDescriptor sectionDescriptor3 = SectionDescriptor.newInstance("multiPicker", "Pick a color"); sectionDescriptor3.setMultivalueSection(true); descriptor.addSection(sectionDescriptor3); - RowDescriptor pickerDescriptor3 = RowDescriptor.newInstance("picker3",RowDescriptor.FormRowDescriptorTypeTextPickerDialog); - pickerDescriptor3.setDataSource(new DataSource() { + RowDescriptor pickerDescriptor3 = RowDescriptor.newInstance("picker3", + RowDescriptor.FormRowDescriptorTypeSelectorTextPickerDialogInline); - @Override - public void loadData(final DataSourceListener listener) { + selectorOptions = new ArrayList<>(); + selectorOptions.add(FormOptionsObject.createFormOptionsObject("red", "Red")); + selectorOptions.add(FormOptionsObject.createFormOptionsObject("blue", "Blue")); + selectorOptions.add(FormOptionsObject.createFormOptionsObject("green", "Green")); - listener.onDataSourceLoaded(values); - - } - }); - sectionDescriptor3.addRow( pickerDescriptor3 ); + pickerDescriptor3.setSelectorOptions(selectorOptions); + pickerDescriptor3.setDisabled(false); + sectionDescriptor3.addRow(pickerDescriptor3); mFormManager = new FormManager(); @@ -131,7 +125,6 @@ public void loadData(final DataSourceListener listener) { mFormManager.setOnFormRowValueChangedListener(this); - } @Override @@ -143,7 +136,6 @@ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { } - @Override public void onPrepareOptionsMenu(Menu menu) { updateSaveItem(); @@ -151,7 +143,7 @@ public void onPrepareOptionsMenu(Menu menu) { @Override public boolean onOptionsItemSelected(MenuItem item) { - if (item == mSaveMenuItem){ + if (item == mSaveMenuItem) { mChangesMap.clear(); updateSaveItem(); } @@ -170,13 +162,12 @@ public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value // mChangesMap.put(rowDescriptor.getTag(), newValue); updateSaveItem(); - - + mFormManager.updateRows(); } private void updateSaveItem() { - if (mSaveMenuItem != null){ - mSaveMenuItem.setVisible(mChangesMap.size()>0); + if (mSaveMenuItem != null) { + mSaveMenuItem.setVisible(mChangesMap.size() > 0); } } @@ -195,44 +186,4 @@ public void onRowChanged(RowDescriptor rowDescriptor, SectionDescriptor sectionD } - private class CustomTask extends AsyncTask> { - - private DataSourceListener mListener; - private ProgressDialog mProgressDialog; - - @Override - protected void onPreExecute() { - super.onPreExecute(); - mProgressDialog = ProgressDialog.show(getActivity(), "Loading", - "Do some work", true); - } - - protected ArrayList doInBackground(DataSourceListener... listeners) { - - mListener = (DataSourceListener)listeners[0]; - - ArrayList items = new ArrayList(); - for (Integer i=0;i<10;i++){ - doFakeWork(); - items.add("Item "+String.valueOf(i)); - } - - return items; - } - - @Override - protected void onPostExecute(ArrayList strings) { - super.onPostExecute(strings); - mProgressDialog.dismiss(); - mListener.onDataSourceLoaded(strings); - } - - private void doFakeWork() { - try { - Thread.sleep(200); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } } diff --git a/lib/QMBForm/src/main/AndroidManifest.xml b/lib/QMBForm/src/main/AndroidManifest.xml index 3005edf..27dcc95 100755 --- a/lib/QMBForm/src/main/AndroidManifest.xml +++ b/lib/QMBForm/src/main/AndroidManifest.xml @@ -1,10 +1,10 @@ - + + android:label="@string/app_name"> 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 60d1ebb..0e0f211 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/CellViewFactory.java @@ -14,7 +14,7 @@ import com.quemb.qmbform.view.FormCheckFieldCell; import com.quemb.qmbform.view.FormDateDialogFieldCell; import com.quemb.qmbform.view.FormDateInlineFieldCell; -import com.quemb.qmbform.view.FormDetailHtmlTextVerticalFieldCell; +import com.quemb.qmbform.view.FormDetailHtmlTextFieldCell; import com.quemb.qmbform.view.FormDetailTextFieldCell; import com.quemb.qmbform.view.FormDetailTextInlineFieldCell; import com.quemb.qmbform.view.FormEditCurrencyFieldCell; @@ -35,13 +35,13 @@ import com.quemb.qmbform.view.FormEditURLFieldCell; import com.quemb.qmbform.view.FormExternalButtonFieldCell; import com.quemb.qmbform.view.FormIntegerSliderFieldCell; -import com.quemb.qmbform.view.FormPickerDialogFieldCell; -import com.quemb.qmbform.view.FormPickerDialogVerticalFieldCell; +import com.quemb.qmbform.view.FormSelectorPickerDialogFieldCell; +import com.quemb.qmbform.view.FormSelectorPickerDialogInlineFieldCell; import com.quemb.qmbform.view.FormSelectorSegmentedControlFieldCell; import com.quemb.qmbform.view.FormSelectorSegmentedControlInlineFieldCell; -import com.quemb.qmbform.view.FormSpinnerFieldCell; -import com.quemb.qmbform.view.FormSpinnerInlineFieldCell; -import com.quemb.qmbform.view.FormTextPickerDialogFieldCell; +import com.quemb.qmbform.view.FormSelectorSpinnerFieldCell; +import com.quemb.qmbform.view.FormSelectorSpinnerInlineFieldCell; +import com.quemb.qmbform.view.FormTextPickerDialogInlineFieldCell; import com.quemb.qmbform.view.FormTimeDialogFieldCell; import com.quemb.qmbform.view.FormTimeInlineFieldCell; import com.quemb.qmbform.view.SectionCell; @@ -58,17 +58,6 @@ public class CellViewFactory { private static CellViewFactory instance = null; private HashMap> mViewRowTypeMap; - public static CellViewFactory getInstance() { - if (instance == null) { - instance = new CellViewFactory(); - } - return instance; - } - - public static void addFormRowDescriptor(String descriptorName, Class descriptorClass) { - getInstance().mViewRowTypeMap.put(descriptorName, descriptorClass); - } - public CellViewFactory() { int currentapiVersion = Build.VERSION.SDK_INT; @@ -100,18 +89,29 @@ public CellViewFactory() { mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypePasswordInline, FormEditPasswordInlineFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeEmail, FormEditEmailFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeEmailInline, FormEditEmailInlineFieldCell.class); - mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeTextPickerDialog, FormTextPickerDialogFieldCell.class); + mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorTextPickerDialogInline, FormTextPickerDialogInlineFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorSegmentedControlInline, FormSelectorSegmentedControlInlineFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorSegmentedControl, FormSelectorSegmentedControlFieldCell.class); - mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorSpinner, FormSpinnerFieldCell.class); - mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorSpinnerInline, FormSpinnerInlineFieldCell.class); - mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, FormPickerDialogFieldCell.class); - mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorPickerDialogVertical, FormPickerDialogVerticalFieldCell.class); + mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorSpinner, FormSelectorSpinnerFieldCell.class); + mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorSpinnerInline, FormSelectorSpinnerInlineFieldCell.class); + mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorPickerDialogInline, FormSelectorPickerDialogInlineFieldCell.class); + mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSelectorPickerDialog, FormSelectorPickerDialogFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeIntegerSlider, FormIntegerSliderFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeExternal, FormExternalButtonFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeHTMLText, FormEditHTMLTextViewFieldCell.class); mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeSectionSeperator, SeperatorSectionCell.class); - mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeHtmlVertical, FormDetailHtmlTextVerticalFieldCell.class); + mViewRowTypeMap.put(RowDescriptor.FormRowDescriptorTypeHtml, FormDetailHtmlTextFieldCell.class); + } + + public static CellViewFactory getInstance() { + if (instance == null) { + instance = new CellViewFactory(); + } + return instance; + } + + public static void addFormRowDescriptor(String descriptorName, Class descriptorClass) { + getInstance().mViewRowTypeMap.put(descriptorName, descriptorClass); } public Cell createViewForFormItemDescriptor(Context context, FormItemDescriptor descriptor) { @@ -129,7 +129,7 @@ public Cell createViewForFormItemDescriptor(Context context, FormItemDescriptor FormBaseCell formBaseCell; formBaseCell = mViewRowTypeMap.get(row.getRowType()).getConstructor(Context.class, RowDescriptor.class).newInstance( - context, row); + context, row); rowView = formBaseCell; } catch (InstantiationException e) { e.printStackTrace(); 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 25ef442..a969ff8 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/FormManager.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/FormManager.java @@ -22,9 +22,9 @@ */ public class FormManager implements OnFormRowChangeListener, OnFormRowValueChangedListener { - private FormDescriptor mFormDescriptor; protected ListView mListView; protected OnFormRowClickListener mOnFormRowClickListener; + private FormDescriptor mFormDescriptor; private OnFormRowChangeListener mOnFormRowChangeListener; private OnFormRowValueChangedListener mOnFormRowValueChangedListener; @@ -129,7 +129,7 @@ public void onValueChanged(RowDescriptor rowDescriptor, Value oldValue, Value } public void setOnFormRowValueChangedListener( - OnFormRowValueChangedListener onFormRowValueChangedListener) { + OnFormRowValueChangedListener onFormRowValueChangedListener) { mOnFormRowValueChangedListener = onFormRowValueChangedListener; } } 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 041b148..b7750d1 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 @@ -65,8 +65,6 @@ public long getItemId(int position) { @Override public View getView(int position, View convertView, ViewGroup parent) { - - return CellViewFactory.getInstance().createViewForFormItemDescriptor(mContext, getItem(position)); } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/adapter/FormOptionsObjectAdapter.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/adapter/FormOptionsObjectAdapter.java index a85d4ca..d139ab8 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/adapter/FormOptionsObjectAdapter.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/adapter/FormOptionsObjectAdapter.java @@ -24,6 +24,12 @@ public FormOptionsObjectAdapter(Context context, int resource) { this.mResource = resource; } + public FormOptionsObjectAdapter(Context context, int resource, ArrayList options) { + super(context, resource); + this.mOptions = options; + this.mResource = resource; + } + public FormOptionsObjectAdapter(Context context, int resource, int dropDownResource, ArrayList options) { super(context, resource); this.mOptions = options; @@ -56,6 +62,7 @@ public View inflateView(int position, View convertView, ViewGroup parent, int re textView = (TextView) convertView; } textView.setText(mOptions.get(position).getDisplayText()); + textView.setPadding(10, 10, 10, 10); return textView; } 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 3fe07ef..6e1ea59 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 @@ -118,6 +118,9 @@ public int compare(Field lhs, Field rhs) { if (section.multiValue) { sectionDescriptor.setTag(field.getName()); + ArrayList selectorOptions = convertFormOptionsAnnotation( + annotation.selectorOptions()); + int index = 0; if ((value != null ? value.getValue() : null) instanceof ArrayList) { ArrayList list = (ArrayList) value.getValue(); @@ -126,6 +129,7 @@ public int compare(Field lhs, Field rhs) { annotation.rowDescriptorType()); rowDescriptor.setValue(new Value(item)); rowDescriptor.setHint(annotation.hint()); + rowDescriptor.setSelectorOptions(selectorOptions); sectionDescriptor.addRow(rowDescriptor); index++; } @@ -133,6 +137,7 @@ public int compare(Field lhs, Field rhs) { RowDescriptor rowDescriptor = RowDescriptor.newInstance(annotation.tag().length() > 0 ? annotation.tag() : field.getName() + ++index, annotation.rowDescriptorType()); rowDescriptor.setHint(annotation.hint()); + rowDescriptor.setSelectorOptions(selectorOptions); addValidators(rowDescriptor, annotation); sectionDescriptor.addRow(rowDescriptor); } else { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormOptionsObjectElement.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormOptionsObjectElement.java index 079d68a..398238e 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormOptionsObjectElement.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/annotation/FormOptionsObjectElement.java @@ -12,13 +12,13 @@ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface FormOptionsObjectElement { - enum ValueTypes { - INT, DOUBLE, STRING - } - public String value() default ""; public ValueTypes valueType() default ValueTypes.STRING; public String displayText(); + + enum ValueTypes { + INT, DOUBLE, STRING + } } 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..9ac4443 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 @@ -15,7 +15,7 @@ public class BlankStringValidator implements FormValidator { public RowValidationError validate(RowDescriptor descriptor) { Value value = descriptor.getValue(); if (value.getValue() != null && - value.getValue() instanceof String) { + value.getValue() instanceof String) { String str = (String) value.getValue(); // if a valid string return null 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 d617ac5..0d143fb 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 @@ -12,8 +12,8 @@ */ 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,})$"; + "^[_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) { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/CellConfigObject.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/CellConfigObject.java new file mode 100644 index 0000000..4421ff1 --- /dev/null +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/CellConfigObject.java @@ -0,0 +1,30 @@ +package com.quemb.qmbform.descriptor; + +/** + * Created by pmaccamp on 9/24/2015. + */ +public class CellConfigObject { + public enum CONFIG_TYPE { + PADDING, // Specified as an int[4] in the order {left, top, right, bottom} + TYPEFACE, // Specified as a Typeface enum such as Typeface.BOLD. Only applicable to instances of TextView + INPUT_TYPE, // Specified as an InputType enum such as InputType.TYPE_NUMBER_FLAG_DECIMAL. Only applicable to instances of TextView + IME_OPTIONS, // Specified as an imeOptions enum such as IME_ACTION_DONE. Only applicable to instances of TextView + TEXT_ALIGNMENT, // Specified as an View enum such as TEXT_ALIGNMENT_CENTER (only available on api 17+) + MAX_LINES, // Specified as an int. Only applicable to instances of TextView + MIN_LINES, // Specified as an int. Only applicable to instances of TextView + MINIMUM_HEIGHT, // Specified as an int + MINIMUM_WIDTH, // Specified as an int + BACKGROUND_COLOR, // Specified as color reference id + TEXT_COLOR, // Specified as color reference id. Only applicable to instances of TextView + GRAVITY, // Specified as a Gravity enum such as Gravity.CENTER. Only applicable to instances of TextView + VISIBILITY // Specified as a View enum such as VIEW.GONE or View.INVISIBLE + } + + public CONFIG_TYPE configType; + public Object configValue; + + public CellConfigObject(CONFIG_TYPE configType, Object configValue) { + this.configType = configType; + this.configValue = configValue; + } +} 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 4ee33be..fa4005e 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 @@ -15,6 +15,10 @@ public class FormDescriptor { private OnFormRowValueChangedListener mOnFormRowValueChangedListener; private OnFormRowChangeListener mOnFormRowChangeListener; + public FormDescriptor() { + mSections = new ArrayList(); + } + public static FormDescriptor newInstance() { return FormDescriptor.newInstance(null); } @@ -27,10 +31,6 @@ public static FormDescriptor newInstance(String title) { } - public FormDescriptor() { - mSections = new ArrayList(); - } - public void addSection(SectionDescriptor sectionDescriptor) { insertSectionAtIndex(sectionDescriptor, mSections.size()); } @@ -75,18 +75,23 @@ private void removeSectionAtIndex(int index) { mSections.remove(index); } - public void setTitle(String title) { - mTitle = title; - } - public String getTitle() { return mTitle; } + public void setTitle(String title) { + mTitle = title; + } + public OnFormRowValueChangedListener getOnFormRowValueChangedListener() { return mOnFormRowValueChangedListener; } + public void setOnFormRowValueChangedListener( + OnFormRowValueChangedListener onFormRowValueChangedListener) { + mOnFormRowValueChangedListener = onFormRowValueChangedListener; + } + public RowDescriptor findRowDescriptor(String tag) { RowDescriptor rowDescriptor = null; @@ -98,11 +103,6 @@ public RowDescriptor findRowDescriptor(String tag) { return rowDescriptor; } - public void setOnFormRowValueChangedListener( - OnFormRowValueChangedListener onFormRowValueChangedListener) { - mOnFormRowValueChangedListener = onFormRowValueChangedListener; - } - public boolean isValid(Context context) { FormValidation formValidation = getFormValidation(context); diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormItemDescriptor.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormItemDescriptor.java index a6332fa..32a1ec9 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormItemDescriptor.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormItemDescriptor.java @@ -17,8 +17,8 @@ public class FormItemDescriptor { protected String mTitle; private OnFormRowClickListener mOnFormRowClickListener; - private HashMap mCellConfig; - + private HashMap mCellConfig; + private HashMap mCustomCellConfig; public String getTitle() { return mTitle; @@ -44,7 +44,6 @@ public void setCell(Cell cell) { mCell = cell; } - public OnFormRowClickListener getOnFormRowClickListener() { return mOnFormRowClickListener; } @@ -53,11 +52,19 @@ public void setOnFormRowClickListener(OnFormRowClickListener onFormRowClickListe mOnFormRowClickListener = onFormRowClickListener; } - public HashMap getCellConfig() { + public HashMap getCellConfig() { return mCellConfig; } - public void setCellConfig(HashMap cellConfig) { + public void setCellConfig(HashMap cellConfig) { mCellConfig = cellConfig; } + + public HashMap getCustomCellConfig() { + return mCustomCellConfig; + } + + public void setCustomCellConfig(HashMap customCellConfig) { + mCustomCellConfig = customCellConfig; + } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormOptionsObject.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormOptionsObject.java index 97e9810..723ac12 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormOptionsObject.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/descriptor/FormOptionsObject.java @@ -19,9 +19,11 @@ public static FormOptionsObject createFormOptionsObject(Object value, String dis } public static FormOptionsObject formOptionsObjectFromArrayWithValue(Object searchValue, ArrayList options) { - for (FormOptionsObject option : options) { - if (option.mValue.equals(searchValue)) { - return option; + if (options != null) { + for (FormOptionsObject option : options) { + if (option.mValue.equals(searchValue)) { + return option; + } } } return null; @@ -29,11 +31,13 @@ public static FormOptionsObject formOptionsObjectFromArrayWithValue(Object searc public static int indexOfFormOptionsObjectFromArrayWithValue(Object searchValue, ArrayList options) { int counter = 0; - for (FormOptionsObject option : options) { - if (option.mValue.equals(searchValue)) { - return counter; + if (options != null) { + for (FormOptionsObject option : options) { + if (option.mValue.equals(searchValue)) { + return counter; + } + counter++; } - counter++; } return -1; } 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 27684d8..0541792 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 @@ -44,9 +44,9 @@ public class RowDescriptor extends FormItemDescriptor { public static final String FormRowDescriptorTypeSelectorPickerViewInline = "selectorPickerViewInline"; public static final String FormRowDescriptorTypeSelectorSpinner = "selectorSpinner"; public static final String FormRowDescriptorTypeSelectorSpinnerInline = "selectorSpinnerInline"; - public static final String FormRowDescriptorTypeTextPickerDialog = "textPickerDialog"; - public static final String FormRowDescriptorTypeSelectorPickerDialog = "selectorPickerDialog"; - public static final String FormRowDescriptorTypeSelectorPickerDialogVertical = "selectorPickerDialogVertical"; + public static final String FormRowDescriptorTypeSelectorTextPickerDialogInline = "textPickerDialog"; + public static final String FormRowDescriptorTypeSelectorPickerDialogInline = "selectorPickerDialog"; + public static final String FormRowDescriptorTypeSelectorPickerDialog = "selectorPickerDialogVertical"; public static final String FormRowDescriptorTypeMultipleSelector = "multipleSelector"; public static final String FormRowDescriptorTypeSelectorLeftRight = "selectorLeftRight"; public static final String FormRowDescriptorTypeSelectorSegmentedControlInline = "selectorSegmentedControlInline"; @@ -68,14 +68,13 @@ public class RowDescriptor extends FormItemDescriptor { public static final String FormRowDescriptorTypeExternal = "external"; public static final String FormRowDescriptorTypeStepCounter = "stepCounter"; public static final String FormRowDescriptorTypeSectionSeperator = "sectionSeperator"; - public static final String FormRowDescriptorTypeHtmlVertical = "htmlVertical"; + public static final String FormRowDescriptorTypeHtml = "html"; private String mRowType; private Value mValue; /** * A list of valid values to pick from (e.g. used for spinners) */ - private DataSource mDataSource; private Boolean mRequired = false; private Boolean mDisabled = false; @@ -118,6 +117,21 @@ public static RowDescriptor newInstance(String tag, String rowType, String title } + public static RowDescriptor newInstance(String tag, String rowType, String title, + ArrayList selectorOptions, Value value) { + + RowDescriptor descriptor = new RowDescriptor(); + descriptor.mTitle = title; + descriptor.mTag = tag; + descriptor.mRowType = rowType; + descriptor.mSelectorOptions = selectorOptions; + descriptor.setValue(value); + descriptor.mValidators = new ArrayList(); + + return descriptor; + + } + public static RowDescriptor newInstanceFromAnnotatedField(Field field, Value value, Context context) { FormElement annotation = field.getAnnotation(FormElement.class); RowDescriptor rowDescriptor = RowDescriptor.newInstance( @@ -150,7 +164,7 @@ public void setValue(Value value) { } public Object getValueData() { - return mValue.getValue(); + return (mValue == null) ? null : mValue.getValue(); } public Boolean getRequired() { @@ -165,18 +179,6 @@ public String getRowType() { return mRowType; } - public boolean hasDataSource() { - return mDataSource != null; - } - - public DataSource getDataSource() { - return mDataSource; - } - - public void setDataSource(DataSource dataSource) { - mDataSource = dataSource; - } - public Boolean getDisabled() { return mDisabled; } @@ -185,14 +187,14 @@ public void setDisabled(Boolean disabled) { mDisabled = disabled; } - public void setHint(int hint) { - mHint = hint; - } - public int getHint() { return mHint; } + public void setHint(int hint) { + mHint = hint; + } + public String getHint(Context context) { if (mHint == android.R.string.untitled) { @@ -259,11 +261,11 @@ public ArrayList getValidationErrors() { } public static RowDescriptor newInstance(RowDescriptor rowDescriptor) { - Long tsLong = System.currentTimeMillis() / 1000; String ts = tsLong.toString(); RowDescriptor newInstance = RowDescriptor.newInstance(rowDescriptor.getTag() + "_" + ts, rowDescriptor.getRowType()); - newInstance.setDataSource(rowDescriptor.getDataSource()); + newInstance.setSelectorOptions(rowDescriptor.getSelectorOptions()); + newInstance.setValue(new Value(rowDescriptor.getValueData())); return newInstance; } 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..9e1bf52 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 @@ -21,7 +21,7 @@ public int getResourceMessage() { public String getMessage(Context context) { return getRowDescriptor().getTitle() + " " + - context.getString(getResourceMessage()); + context.getString(getResourceMessage()); } public RowDescriptor getRowDescriptor() { diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/exceptions/NoDataSourceException.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/exceptions/NoDataSourceException.java deleted file mode 100755 index b02a558..0000000 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/exceptions/NoDataSourceException.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.quemb.qmbform.exceptions; - -/** - * Created by tonimoeckel on 01.08.14. - */ -public class NoDataSourceException extends RuntimeException { - - public NoDataSourceException() { - super("No Data Source Defined"); - } - -} diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/exceptions/NoSelectorOptionsException.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/exceptions/NoSelectorOptionsException.java new file mode 100644 index 0000000..02d0617 --- /dev/null +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/exceptions/NoSelectorOptionsException.java @@ -0,0 +1,10 @@ +package com.quemb.qmbform.exceptions; + +/** + * Created by pmaccamp on 9/23/2015. + */ +public class NoSelectorOptionsException extends RuntimeException { + public NoSelectorOptionsException() { + super("No Data Source Defined"); + } +} 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 6762ef1..38afa3c 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 @@ -80,11 +80,15 @@ protected View getDividerView() { return mDividerView; } + protected void setDividerView(View dividerView) { + mDividerView = dividerView; + } + private void configDivider(View dividerView) { dividerView.setLayoutParams(new LayoutParams( - LayoutParams.MATCH_PARENT, - 1 + LayoutParams.MATCH_PARENT, + 1 )); dividerView.setBackgroundColor(getThemeValue(android.R.attr.listDivider)); @@ -107,8 +111,4 @@ public void lastInSection() { } - protected void setDividerView(View dividerView) { - mDividerView = dividerView; - } - } 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 4f079d7..507faf6 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 @@ -3,19 +3,25 @@ import android.content.Context; import android.graphics.Color; import android.graphics.PorterDuff; +import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.LinearLayout; +import android.widget.TextView; import com.quemb.qmbform.R; +import com.quemb.qmbform.descriptor.CellConfigObject; 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 java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + /** * Created by tonimoeckel on 14.07.14. */ @@ -29,9 +35,7 @@ public abstract class FormBaseCell extends Cell { private LinearLayout mMultiValueWrapper; public FormBaseCell(Context context, RowDescriptor rowDescriptor) { - super(context, rowDescriptor); - } @Override @@ -46,8 +50,126 @@ public void onChange(Object value) { } }); } + } + + @Override + protected void afterInit() { + super.afterInit(); + + // Update elements using cell config + if (getFormItemDescriptor().getCellConfig() != null) { + for (String functionName : getFormItemDescriptor().getCellConfig().keySet()) { + try { + Method method = findMethodWithName(getClass(), functionName); + if (method != null) { + View view = (View) method.invoke(this); + + CellConfigObject[] configs = getFormItemDescriptor().getCellConfig().get(functionName); + + for (CellConfigObject config : configs) { + applyConfig(view, config); + } + } + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } + private Method findMethodWithName(Class clazz, String methodName) { + try { + Method method = clazz.getDeclaredMethod(methodName); + return method; + } catch (NoSuchMethodException e) { + if (clazz.getSuperclass() != null) { + return findMethodWithName(clazz.getSuperclass(), methodName); + } + } + return null; + } + private void applyConfig(View view, CellConfigObject config) { + switch (config.configType) { + case PADDING: + int[] padding = (int[]) config.configValue; + view.setPadding(padding[0], padding[1], padding[2], padding[3]); + break; + case TYPEFACE: + if (view instanceof TextView) { + if (config.configValue instanceof Typeface) { + Typeface typeface = (Typeface) config.configValue; + + ((TextView) view).setTypeface(typeface); + } else { + int typeface = (int) config.configValue; + + ((TextView) view).setTypeface(null, typeface); + } + } + break; + case INPUT_TYPE: + int inputType = (int) config.configValue; + if (view instanceof TextView) { + ((TextView) view).setInputType(inputType); + } + break; + case IME_OPTIONS: + int imeOptions = (int) config.configValue; + if (view instanceof TextView) { + ((TextView) view).setImeOptions(imeOptions); + } + break; + case TEXT_ALIGNMENT: + int textAlignment = (int) config.configValue; + // Only supported on api 17 and higher + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) { + view.setTextAlignment(textAlignment); + } + break; + case MAX_LINES: + int maxLines = (int) config.configValue; + if (view instanceof TextView) { + ((TextView) view).setMaxLines(maxLines); + } + break; + case MIN_LINES: + int minLines = (int) config.configValue; + if (view instanceof TextView) { + ((TextView) view).setMinLines(minLines); + } + break; + case MINIMUM_HEIGHT: + int minHeight = (int) config.configValue; + view.setMinimumHeight(minHeight); + break; + case MINIMUM_WIDTH: + int minWidth = (int) config.configValue; + view.setMinimumWidth(minWidth); + break; + case BACKGROUND_COLOR: + int color = (int) config.configValue; + view.setBackgroundColor(color); + break; + case TEXT_COLOR: + int textColor = (int) config.configValue; + if (view instanceof TextView) { + ((TextView) view).setTextColor(textColor); + } + break; + case GRAVITY: + int gravity = (int) config.configValue; + if (view instanceof TextView) { + ((TextView) view).setGravity(gravity); + } + break; + case VISIBILITY: + int visibility = (int) config.configValue; + view.setVisibility(visibility); + break; + } } protected ViewGroup getSuperViewForLayoutInflation() { @@ -105,10 +227,8 @@ public void onClick(View v) { addButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - SectionDescriptor sectionDescriptor = getRowDescriptor().getSectionDescriptor(); sectionDescriptor.addRow(RowDescriptor.newInstance(getRowDescriptor())); - } }); linearLayout.addView(addButton); 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 ee15546..6713f1f 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 @@ -26,7 +26,7 @@ protected int getResource() { protected void update() { super.update(); - getTextView().setTextAppearance(getContext(), R.style.TextAppearance_AppCompat_Body2); + getLabelTextView().setTextAppearance(getContext(), R.style.TextAppearance_AppCompat_Body2); } @Override 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 1e8e0ab..e1e60d5 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 @@ -14,7 +14,7 @@ * Created by tonimoeckel on 15.07.14. */ public class FormDateDialogFieldCell extends FormDateFieldCell implements - DatePickerDialog.OnDateSetListener { + DatePickerDialog.OnDateSetListener { private Calendar mCalendar; 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 839096a..63dd20a 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 @@ -16,7 +16,7 @@ */ public class FormDateFieldCell extends FormDetailTextInlineFieldCell { - private TextView mTextView; + private TextView mLabelTextView; public FormDateFieldCell(Context context, RowDescriptor rowDescriptor) { @@ -27,7 +27,7 @@ public FormDateFieldCell(Context context, protected void init() { super.init(); - mTextView = (TextView) findViewById(R.id.textView); + mLabelTextView = (TextView) findViewById(R.id.labelTextView); } @@ -40,8 +40,8 @@ protected int getResource() { protected void update() { String title = getFormItemDescriptor().getTitle(); - mTextView.setText(title); - mTextView.setVisibility(title == null ? GONE : VISIBLE); + mLabelTextView.setText(title); + mLabelTextView.setVisibility(title == null ? GONE : VISIBLE); Value value = (Value) getRowDescriptor().getValue(); if (value == null || value.getValue() == null) { @@ -56,9 +56,9 @@ protected void update() { initDatePicker(calendar); - mTextView.setEnabled(!getRowDescriptor().getDisabled()); + mLabelTextView.setEnabled(!getRowDescriptor().getDisabled()); if (getRowDescriptor().getDisabled()) { - mTextView.setTextColor(getResources().getColor(R.color.form_cell_disabled)); + mLabelTextView.setTextColor(getResources().getColor(R.color.form_cell_disabled)); } @@ -95,7 +95,7 @@ public void onCellSelected() { } - public TextView getTextView() { - return mTextView; + public TextView getLabelTextView() { + return mLabelTextView; } } 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 6d0d310..684a128 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 @@ -13,7 +13,7 @@ * Created by pmaccamp on 9/4/2015. */ public class FormDateInlineFieldCell extends FormDateFieldCell implements - DatePicker.OnDateChangedListener { + DatePicker.OnDateChangedListener { private DatePicker mDatePicker; diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextVerticalFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextFieldCell.java similarity index 76% rename from lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextVerticalFieldCell.java rename to lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextFieldCell.java index a401ffc..ed55747 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextVerticalFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailHtmlTextFieldCell.java @@ -9,10 +9,10 @@ /** * Created by schmidtma on 19.02.15. */ -public class FormDetailHtmlTextVerticalFieldCell extends FormDetailTextFieldCell { +public class FormDetailHtmlTextFieldCell extends FormDetailTextFieldCell { - public FormDetailHtmlTextVerticalFieldCell(Context context, - RowDescriptor rowDescriptor) { + public FormDetailHtmlTextFieldCell(Context context, + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -37,6 +37,6 @@ protected void update() { @Override protected int getResource() { - return R.layout.detail_html_text_vertical_field_cell; + return R.layout.detail_html_text_field_cell; } } \ No newline at end of file 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 b687d46..72074f4 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 @@ -32,10 +32,7 @@ protected int getResource() { return R.layout.detail_text_inline_field_cell; } - @Override - protected void update() { - super.update(); - + protected void updateDetail(){ if (getRowDescriptor().getHint(getContext()) != null) { getDetailTextView().setHint(getRowDescriptor().getHint(getContext())); } @@ -49,7 +46,13 @@ protected void update() { } } + } + + @Override + protected void update() { + super.update(); + updateDetail(); } public TextView getDetailTextView() { 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 deleted file mode 100755 index 55349d6..0000000 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormDetailTextVerticalFieldCell.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.quemb.qmbform.view; - -import android.content.Context; - -import com.quemb.qmbform.R; -import com.quemb.qmbform.descriptor.RowDescriptor; - -/** - * Created by tonimoeckel on 15.07.14. - */ -public class FormDetailTextVerticalFieldCell extends FormDetailTextFieldCell { - - public FormDetailTextVerticalFieldCell(Context context, - RowDescriptor rowDescriptor) { - super(context, rowDescriptor); - } - - @Override - protected int getResource() { - return R.layout.detail_text_vertical_field_cell; - } -} 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 16c4ab6..ee21b34 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 @@ -14,8 +14,8 @@ */ public class FormIntegerSliderFieldCell extends FormDetailTextInlineFieldCell { - private SeekBar mSeekBar; public final static String CellConfigMaxKey = "CellConfigMaxKey"; + private SeekBar mSeekBar; public FormIntegerSliderFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); @@ -61,7 +61,7 @@ protected void update() { Value value = (Value) getRowDescriptor().getValue(); - HashMap config = getRowDescriptor().getCellConfig(); + HashMap config = getRowDescriptor().getCustomCellConfig(); Integer max = config != null && config.containsKey(CellConfigMaxKey) ? (Integer) config.get(CellConfigMaxKey) : 100; mSeekBar.setMax(max); 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 deleted file mode 100755 index 07799dc..0000000 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogFieldCell.java +++ /dev/null @@ -1,69 +0,0 @@ -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 java.util.ArrayList; - -/** - * Created by tonimoeckel on 15.07.14. - */ -public class FormPickerDialogFieldCell extends FormDetailTextInlineFieldCell { - - - public FormPickerDialogFieldCell(Context context, - RowDescriptor rowDescriptor) { - super(context, rowDescriptor); - } - - - @Override - public void onCellSelected() { - super.onCellSelected(); - if (getRowDescriptor().getDataSource() == null) { - throw new NoDataSourceException(); - } else { - getRowDescriptor().getDataSource().loadData(new DataSourceListener() { - @Override - public void onDataSourceLoaded(ArrayList 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/FormPickerDialogVerticalFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorPickerDialogFieldCell.java old mode 100755 new mode 100644 similarity index 63% rename from lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogVerticalFieldCell.java rename to lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorPickerDialogFieldCell.java index 84de4d9..88901f1 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormPickerDialogVerticalFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorPickerDialogFieldCell.java @@ -8,16 +8,16 @@ /** * Created by tonimoeckel on 15.07.14. */ -public class FormPickerDialogVerticalFieldCell extends FormPickerDialogFieldCell { +public class FormSelectorPickerDialogFieldCell extends FormSelectorPickerDialogInlineFieldCell { - public FormPickerDialogVerticalFieldCell(Context context, + public FormSelectorPickerDialogFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @Override protected int getResource() { - return R.layout.detail_text_field_cell; + return R.layout.selector_picker_dialog_field_cell; } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorPickerDialogInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorPickerDialogInlineFieldCell.java new file mode 100644 index 0000000..ce5c33e --- /dev/null +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorPickerDialogInlineFieldCell.java @@ -0,0 +1,86 @@ +package com.quemb.qmbform.view; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; + +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 com.quemb.qmbform.exceptions.NoSelectorOptionsException; + +import java.util.ArrayList; + +/** + * Created by tonimoeckel on 15.07.14. + */ +public class FormSelectorPickerDialogInlineFieldCell extends FormDetailTextInlineFieldCell { + + + public FormSelectorPickerDialogInlineFieldCell(Context context, + RowDescriptor rowDescriptor) { + super(context, rowDescriptor); + } + + @Override + protected void update() { + updateTitle(); + + if (getRowDescriptor().getHint(getContext()) != null) { + getDetailTextView().setHint(getRowDescriptor().getHint(getContext())); + } + + Value value = getRowDescriptor().getValue(); + if (value != null && value.getValue() != null) { + FormOptionsObject optionsObject = + FormOptionsObject.formOptionsObjectFromArrayWithValue(value.getValue(), getRowDescriptor().getSelectorOptions()); + if (optionsObject != null) { + getDetailTextView().setText(optionsObject.getDisplayText()); + } + } + + } + + @Override + protected int getResource() { + return R.layout.selector_picker_dialog_inline_field_cell; + } + + @Override + public void onCellSelected() { + super.onCellSelected(); + + ArrayList selectorOptions = getRowDescriptor().getSelectorOptions(); + + if (selectorOptions == null || selectorOptions.size() <= 0) { + if(isEnabled()) { + throw new NoSelectorOptionsException(); + } + } else { + final FormOptionsObjectAdapter adapter = new FormOptionsObjectAdapter(getContext(), + android.R.layout.simple_spinner_item, + android.R.layout.simple_spinner_dropdown_item, + selectorOptions); + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + + builder.setSingleChoiceItems(adapter, + FormOptionsObject.indexOfFormOptionsObjectFromArrayWithValue(getRowDescriptor().getValueData(), + selectorOptions), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + FormOptionsObject selectedOption = (FormOptionsObject) adapter.getItem(which); + onValueChanged(new Value<>(selectedOption.getValue())); + update(); + dialog.dismiss(); + } + }) + .setTitle(getRowDescriptor().getTitle()); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + } +} 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 3410643..4d736e8 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 @@ -21,7 +21,7 @@ */ public class FormSelectorSegmentedControlFieldCell extends FormBaseCell { private SegmentedGroup mSegmentedGroup; - private TextView mTextView; + private TextView mLabelTextView; private ArrayList mValues; public FormSelectorSegmentedControlFieldCell(Context context, RowDescriptor rowDescriptor) { @@ -33,9 +33,9 @@ protected void init() { super.init(); mValues = new ArrayList(); mSegmentedGroup = (SegmentedGroup) findViewById(R.id.segmentedGroup); - mTextView = (TextView) findViewById(R.id.textView); - mTextView.setTextColor(R.attr.editTextColor); - mTextView.setTextAppearance(getContext(), R.style.Base_TextAppearance_AppCompat_Body2); + mLabelTextView = (TextView) findViewById(R.id.labelTextView); + mLabelTextView.setTextColor(R.attr.editTextColor); + mLabelTextView.setTextAppearance(getContext(), R.style.Base_TextAppearance_AppCompat_Body2); } @Override @@ -47,13 +47,13 @@ protected int getResource() { protected void update() { mSegmentedGroup.removeAllViews(); - mTextView.setText(getFormItemDescriptor().getTitle()); + mLabelTextView.setText(getFormItemDescriptor().getTitle()); ArrayList selectorOptions = getRowDescriptor().getSelectorOptions(); for (FormOptionsObject option : selectorOptions) { addButton(mSegmentedGroup, - mValues.size(), - option.getDisplayText(), - option.getValue().equals(getRowDescriptor().getValueData())); + mValues.size(), + option.getDisplayText(), + option.getValue().equals(getRowDescriptor().getValueData())); mValues.add(option.getValue()); } @@ -70,8 +70,8 @@ public void onCheckedChanged(RadioGroup group, int checkedId) { private void addButton(SegmentedGroup group, int id, String displayText, boolean checked) { RadioButton radioButton = new RadioButton(getContext(), null, R.style.RadioButton); radioButton.setLayoutParams(new SegmentedGroup.LayoutParams(0, - ViewGroup.LayoutParams.MATCH_PARENT, - 1)); + ViewGroup.LayoutParams.MATCH_PARENT, + 1)); radioButton.setText(displayText); radioButton.setId(id); radioButton.setGravity(Gravity.CENTER_HORIZONTAL); @@ -82,4 +82,8 @@ private void addButton(SegmentedGroup group, int id, String displayText, boolean group.addView(radioButton); group.updateBackground(); } + + public TextView getLabelTextView() { + return mLabelTextView; + } } \ No newline at end of file diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSpinnerFieldCell.java old mode 100755 new mode 100644 similarity index 51% rename from lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java rename to lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSpinnerFieldCell.java index 35cc03b..61e154b --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSpinnerFieldCell.java @@ -1,6 +1,5 @@ package com.quemb.qmbform.view; -import android.app.AlertDialog; import android.content.Context; import android.view.View; import android.widget.AdapterView; @@ -11,18 +10,19 @@ import com.quemb.qmbform.descriptor.FormOptionsObject; import com.quemb.qmbform.descriptor.RowDescriptor; import com.quemb.qmbform.descriptor.Value; +import com.quemb.qmbform.exceptions.NoSelectorOptionsException; import java.util.ArrayList; /** * Created by tonimoeckel on 15.07.14. */ -public class FormSpinnerFieldCell extends FormTitleFieldCell { +public class FormSelectorSpinnerFieldCell extends FormTitleFieldCell { private Spinner mSpinner; private ArrayList mValues; - public FormSpinnerFieldCell(Context context, - RowDescriptor rowDescriptor) { + public FormSelectorSpinnerFieldCell(Context context, + RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @@ -34,7 +34,7 @@ protected void init() { @Override protected int getResource() { - return R.layout.spinner_field_cell; + return R.layout.selector_spinner_field_cell; } @Override @@ -43,11 +43,15 @@ protected void update() { ArrayList selectorOptions = getRowDescriptor().getSelectorOptions(); - if (selectorOptions.size() > 0) { + if (selectorOptions == null || selectorOptions.size() <= 0) { + if(isEnabled()) { + throw new NoSelectorOptionsException(); + } + } else { FormOptionsObjectAdapter adapter = new FormOptionsObjectAdapter(getContext(), - android.R.layout.simple_spinner_item, - android.R.layout.simple_spinner_dropdown_item, - selectorOptions); + android.R.layout.simple_spinner_item, + android.R.layout.simple_spinner_dropdown_item, + selectorOptions); mSpinner.setAdapter(adapter); Object value = getRowDescriptor().getValueData(); if (value != null) { @@ -55,26 +59,21 @@ protected void update() { } else { mSpinner.setSelection(-1); } - } 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(); - } - mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, - long id) { - FormOptionsObject selectedOption = (FormOptionsObject) mSpinner.getAdapter().getItem(position); - onValueChanged(new Value(selectedOption.getValue())); - } - @Override - public void onNothingSelected(AdapterView parent) { + mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, + long id) { + FormOptionsObject selectedOption = (FormOptionsObject) mSpinner.getAdapter().getItem(position); + onValueChanged(new Value(selectedOption.getValue())); + } - } - }); + @Override + public void onNothingSelected(AdapterView parent) { + + } + }); + } } @Override diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSpinnerInlineFieldCell.java similarity index 54% rename from lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerInlineFieldCell.java rename to lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSpinnerInlineFieldCell.java index 7c8a250..7dac5ec 100644 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSpinnerInlineFieldCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormSelectorSpinnerInlineFieldCell.java @@ -8,14 +8,14 @@ /** * Created by pmaccamp on 9/4/2015. */ -public class FormSpinnerInlineFieldCell extends FormSpinnerFieldCell { - public FormSpinnerInlineFieldCell(Context context, RowDescriptor rowDescriptor) { +public class FormSelectorSpinnerInlineFieldCell extends FormSelectorSpinnerFieldCell { + public FormSelectorSpinnerInlineFieldCell(Context context, RowDescriptor rowDescriptor) { super(context, rowDescriptor); } @Override protected int getResource() { - return R.layout.spinner_inline_field_cell; + return R.layout.selector_spinner_inline_field_cell; } } 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 deleted file mode 100755 index 5d5a049..0000000 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogFieldCell.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.quemb.qmbform.view; - -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.view.View; -import android.widget.ArrayAdapter; -import android.widget.ImageButton; - -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.ArrayList; - -/** - * Created by tonimoeckel on 15.07.14. - */ -public class FormTextPickerDialogFieldCell extends FormEditTextFieldCell { - - private ImageButton mImageButton; - - public FormTextPickerDialogFieldCell(Context context, - RowDescriptor rowDescriptor) { - super(context, rowDescriptor); - } - - @Override - protected void init() { - - super.init(); - mImageButton = (ImageButton) findViewById(R.id.imageButton); - addListenerOnButton(); - } - - @Override - protected int getResource() { - return R.layout.text_picker_field_cell; - } - - public void addListenerOnButton() { - mImageButton.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - onCellSelected(); - } - }); - - } - - @Override - public void onCellSelected() { - super.onCellSelected(); - if (getRowDescriptor().getDataSource() == null) { - throw new NoDataSourceException(); - } else { - getRowDescriptor().getDataSource().loadData(new DataSourceListener() { - @Override - public void onDataSourceLoaded(ArrayList 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/FormTextPickerDialogInlineFieldCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogInlineFieldCell.java new file mode 100644 index 0000000..278e223 --- /dev/null +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/FormTextPickerDialogInlineFieldCell.java @@ -0,0 +1,104 @@ +package com.quemb.qmbform.view; + +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.view.View; +import android.widget.ImageButton; + +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 com.quemb.qmbform.exceptions.NoSelectorOptionsException; + +import java.util.ArrayList; + +/** + * Created by tonimoeckel on 15.07.14. + */ +public class FormTextPickerDialogInlineFieldCell extends FormEditTextFieldCell { + + private ImageButton mImageButton; + + public FormTextPickerDialogInlineFieldCell(Context context, + RowDescriptor rowDescriptor) { + super(context, rowDescriptor); + } + + @Override + protected void init() { + + super.init(); + mImageButton = (ImageButton) findViewById(R.id.imageButton); + addListenerOnButton(); + } + + @Override + protected int getResource() { + return R.layout.selector_text_picker_dialog_field_cell; + } + + public void addListenerOnButton() { + mImageButton.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + onCellSelected(); + } + }); + + } + + @Override + protected void update() { + updateTitle(); + + if (getRowDescriptor().getHint(getContext()) != null) { + getEditView().setHint(getRowDescriptor().getHint(getContext())); + } + + Value value = getRowDescriptor().getValue(); + if (value != null && value.getValue() != null) { + FormOptionsObject optionsObject = + FormOptionsObject.formOptionsObjectFromArrayWithValue(value.getValue(), getRowDescriptor().getSelectorOptions()); + if (optionsObject != null){ + getEditView().setText(optionsObject.getDisplayText()); + } + } + + } + + @Override + public void onCellSelected() { + super.onCellSelected(); + ArrayList selectorOptions = getRowDescriptor().getSelectorOptions(); + + if (selectorOptions == null || selectorOptions.size() <= 0) { + if(isEnabled()) { + throw new NoSelectorOptionsException(); + } + } else { + final FormOptionsObjectAdapter adapter = new FormOptionsObjectAdapter(getContext(), + android.R.layout.simple_selectable_list_item, + selectorOptions); + + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + + builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + FormOptionsObject selectedOption = (FormOptionsObject) adapter.getItem(which); + onValueChanged(new Value<>(selectedOption.getValue())); + update(); + dialog.dismiss(); + } + }) + .setTitle(getRowDescriptor().getTitle()); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + } +} \ No newline at end of file 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 04cec5f..260108f 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 @@ -12,7 +12,7 @@ * Created by tonimoeckel on 15.07.14. */ public class FormTimeDialogFieldCell extends FormTimeFieldCell implements - TimePickerDialog.OnTimeSetListener { + TimePickerDialog.OnTimeSetListener { private Calendar mCalendar; 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 b8b74e0..2e129ee 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 @@ -14,7 +14,7 @@ * Created by tonimoeckel on 15.07.14. */ public class FormTimeInlineFieldCell extends FormTimeFieldCell implements - TimePicker.OnTimeChangedListener { + TimePicker.OnTimeChangedListener { private TimePicker mTimePicker; 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 6b2b6ed..7e17b43 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 @@ -10,7 +10,7 @@ * Created by tonimoeckel on 15.07.14. */ public class FormTitleFieldCell extends FormBaseCell { - private TextView mTextView; + private TextView mLabelTextView; public FormTitleFieldCell(Context context, RowDescriptor rowDescriptor) { @@ -20,9 +20,9 @@ public FormTitleFieldCell(Context context, @Override protected void init() { super.init(); - mTextView = (TextView) findViewById(R.id.textView); - mTextView.setTextColor(R.attr.editTextColor); - mTextView.setTextAppearance(getContext(), R.style.Base_TextAppearance_AppCompat_Body2); + mLabelTextView = (TextView) findViewById(R.id.labelTextView); + mLabelTextView.setTextColor(R.attr.editTextColor); + mLabelTextView.setTextAppearance(getContext(), R.style.TextAppearance_AppCompat_Body2); } @Override @@ -30,20 +30,24 @@ protected int getResource() { return R.layout.text_field_cell; } - @Override - protected void update() { + protected void updateTitle() { String title = getFormItemDescriptor().getTitle(); - mTextView.setText(title); - mTextView.setVisibility(title == null ? GONE : VISIBLE); + mLabelTextView.setText(title); + mLabelTextView.setVisibility(title == null ? GONE : VISIBLE); if (getRowDescriptor().getDisabled()) { getRowDescriptor().setOnFormRowClickListener(null); - mTextView.setTextColor(getResources().getColor(R.color.form_cell_disabled)); + mLabelTextView.setTextColor(getResources().getColor(R.color.form_cell_disabled)); } } - public TextView getTextView() { - return mTextView; + @Override + protected void update() { + updateTitle(); + } + + public TextView getLabelTextView() { + return mLabelTextView; } } diff --git a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/SectionCell.java b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/SectionCell.java index 89c41ec..434560e 100755 --- a/lib/QMBForm/src/main/java/com/quemb/qmbform/view/SectionCell.java +++ b/lib/QMBForm/src/main/java/com/quemb/qmbform/view/SectionCell.java @@ -13,7 +13,7 @@ public class SectionCell extends Cell { private SectionDescriptor mSectionDescriptor; - private TextView mTextView; + private TextView mLabelTextView; public SectionCell(Context context, SectionDescriptor sectionDescriptor) { @@ -28,8 +28,8 @@ protected void init() { setClickable(false); - mTextView = (TextView) findViewById(R.id.textView); - mTextView.setTextColor(getThemeValue(R.attr.colorAccent)); + mLabelTextView = (TextView) findViewById(R.id.labelTextView); + mLabelTextView.setTextColor(getThemeValue(R.attr.colorAccent)); } @@ -40,10 +40,8 @@ protected int getResource() { @Override protected void update() { - String title = getFormItemDescriptor().getTitle(); - mTextView.setText(title); - + mLabelTextView.setText(title.toUpperCase()); } @Override diff --git a/lib/QMBForm/src/main/res/drawable/section_seperator_background.xml b/lib/QMBForm/src/main/res/drawable/section_seperator_background.xml index 442dc58..640dff2 100755 --- a/lib/QMBForm/src/main/res/drawable/section_seperator_background.xml +++ b/lib/QMBForm/src/main/res/drawable/section_seperator_background.xml @@ -2,13 +2,7 @@ - + \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/button_field_cell.xml b/lib/QMBForm/src/main/res/layout/button_field_cell.xml index 65ae164..9d84f0a 100755 --- a/lib/QMBForm/src/main/res/layout/button_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/button_field_cell.xml @@ -11,8 +11,7 @@ + android:id="@+id/labelTextView"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/button_inline_field_cell.xml b/lib/QMBForm/src/main/res/layout/button_inline_field_cell.xml index 46a80b3..2e6a6c7 100644 --- a/lib/QMBForm/src/main/res/layout/button_inline_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/button_inline_field_cell.xml @@ -11,8 +11,7 @@ + android:id="@+id/labelTextView"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/date_field_cell.xml b/lib/QMBForm/src/main/res/layout/date_field_cell.xml index 49e0d73..c45791e 100755 --- a/lib/QMBForm/src/main/res/layout/date_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/date_field_cell.xml @@ -16,7 +16,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:id="@+id/textView"/> + android:id="@+id/labelTextView"/> + android:id="@+id/labelTextView"/> + android:id="@+id/labelTextView"/> + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="@dimen/cell_padding"> + android:layout_weight="1"/> + android:gravity="left"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/detail_text_inline_field_cell.xml b/lib/QMBForm/src/main/res/layout/detail_text_inline_field_cell.xml index 5e8e2b0..383f58d 100644 --- a/lib/QMBForm/src/main/res/layout/detail_text_inline_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/detail_text_inline_field_cell.xml @@ -1,25 +1,25 @@ + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="@dimen/cell_padding"> + android:layout_weight="3"/> + android:gravity="right"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/detail_text_vertical_field_cell.xml b/lib/QMBForm/src/main/res/layout/detail_text_vertical_field_cell.xml deleted file mode 100755 index c68e020..0000000 --- a/lib/QMBForm/src/main/res/layout/detail_text_vertical_field_cell.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/edit_text_field_cell.xml b/lib/QMBForm/src/main/res/layout/edit_text_field_cell.xml index 09e6ab8..be8bb50 100755 --- a/lib/QMBForm/src/main/res/layout/edit_text_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/edit_text_field_cell.xml @@ -1,21 +1,21 @@ + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="@dimen/cell_padding"> + android:layout_height="wrap_content"/> + android:layout_weight="3" + android:paddingRight="10dp"/> + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="@dimen/cell_padding"> + android:layout_height="wrap_content"/> + android:ellipsize="end" + android:ems="10" + android:gravity="right"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/edit_text_view_inline_field_cell.xml b/lib/QMBForm/src/main/res/layout/edit_text_view_inline_field_cell.xml index bb3ca13..5535ea7 100644 --- a/lib/QMBForm/src/main/res/layout/edit_text_view_inline_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/edit_text_view_inline_field_cell.xml @@ -8,7 +8,7 @@ + android:ems="10" + android:gravity="right"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/height_picker_dialog_metric.xml b/lib/QMBForm/src/main/res/layout/height_picker_dialog_metric.xml deleted file mode 100644 index 5c31f3e..0000000 --- a/lib/QMBForm/src/main/res/layout/height_picker_dialog_metric.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/integer_slider_field_cell.xml b/lib/QMBForm/src/main/res/layout/integer_slider_field_cell.xml index b5ea519..34f505e 100755 --- a/lib/QMBForm/src/main/res/layout/integer_slider_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/integer_slider_field_cell.xml @@ -16,7 +16,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:id="@+id/textView"/> + android:id="@+id/labelTextView"/> + android:id="@+id/labelTextView"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/selector_picker_dialog_field_cell.xml b/lib/QMBForm/src/main/res/layout/selector_picker_dialog_field_cell.xml new file mode 100644 index 0000000..845ff54 --- /dev/null +++ b/lib/QMBForm/src/main/res/layout/selector_picker_dialog_field_cell.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/selector_picker_dialog_inline_field_cell.xml b/lib/QMBForm/src/main/res/layout/selector_picker_dialog_inline_field_cell.xml new file mode 100644 index 0000000..b56588a --- /dev/null +++ b/lib/QMBForm/src/main/res/layout/selector_picker_dialog_inline_field_cell.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/selector_segmented_control_field_cell.xml b/lib/QMBForm/src/main/res/layout/selector_segmented_control_field_cell.xml index bd39e37..267a567 100644 --- a/lib/QMBForm/src/main/res/layout/selector_segmented_control_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/selector_segmented_control_field_cell.xml @@ -5,20 +5,20 @@ android:padding="@dimen/cell_padding"> + segmentedgroup:sc_tint_color="@android:color/secondary_text_dark"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/selector_segmented_control_inline_field_cell.xml b/lib/QMBForm/src/main/res/layout/selector_segmented_control_inline_field_cell.xml index 72b22b1..f13d377 100644 --- a/lib/QMBForm/src/main/res/layout/selector_segmented_control_inline_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/selector_segmented_control_inline_field_cell.xml @@ -5,23 +5,23 @@ android:padding="@dimen/cell_padding"> + segmentedgroup:sc_tint_color="@android:color/secondary_text_dark"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/spinner_field_cell.xml b/lib/QMBForm/src/main/res/layout/selector_spinner_field_cell.xml old mode 100755 new mode 100644 similarity index 60% rename from lib/QMBForm/src/main/res/layout/spinner_field_cell.xml rename to lib/QMBForm/src/main/res/layout/selector_spinner_field_cell.xml index ec23903..4ed632e --- a/lib/QMBForm/src/main/res/layout/spinner_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/selector_spinner_field_cell.xml @@ -1,21 +1,20 @@ + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="@dimen/cell_padding"> + android:paddingBottom="@dimen/cell_padding"/> + android:layout_width="match_parent" + android:layout_height="wrap_content"/> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/spinner_inline_field_cell.xml b/lib/QMBForm/src/main/res/layout/selector_spinner_inline_field_cell.xml similarity index 94% rename from lib/QMBForm/src/main/res/layout/spinner_inline_field_cell.xml rename to lib/QMBForm/src/main/res/layout/selector_spinner_inline_field_cell.xml index 0def9bf..c63c401 100644 --- a/lib/QMBForm/src/main/res/layout/spinner_inline_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/selector_spinner_inline_field_cell.xml @@ -8,7 +8,7 @@ + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="@dimen/cell_padding"> + android:id="@+id/labelTextView" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content"/> - + android:layout_height="wrap_content" + android:background="@null" + android:src="@drawable/ic_action_about"> \ No newline at end of file diff --git a/lib/QMBForm/src/main/res/layout/text_field_cell.xml b/lib/QMBForm/src/main/res/layout/text_field_cell.xml index 20a5f4f..1128d4d 100755 --- a/lib/QMBForm/src/main/res/layout/text_field_cell.xml +++ b/lib/QMBForm/src/main/res/layout/text_field_cell.xml @@ -10,7 +10,7 @@ + android:id="@+id/labelTextView"/> \ 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 4331371..92664b3 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 @@ -17,7 +17,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:id="@+id/textView"/> + android:id="@+id/labelTextView"/> QMBForm No entries No entries are made - is required - is not a valid email + is required. + is not a valid email. Please check your entries - is a required field + is a required field. Cancel Done Select your height @@ -13,5 +13,6 @@ inches cm - must be greater than zero + must be greater than zero. + diff --git a/lib/QMBForm/src/test/java/com/quemb/qmbform/CellConfigTest.java b/lib/QMBForm/src/test/java/com/quemb/qmbform/CellConfigTest.java new file mode 100644 index 0000000..a3e3b7b --- /dev/null +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/CellConfigTest.java @@ -0,0 +1,86 @@ +package com.quemb.qmbform; + +import android.app.Activity; +import android.graphics.Typeface; +import android.text.InputType; +import android.view.Gravity; +import android.widget.TextView; + +import com.quemb.qmbform.descriptor.CellConfigObject; +import com.quemb.qmbform.descriptor.RowDescriptor; +import com.quemb.qmbform.descriptor.Value; +import com.quemb.qmbform.view.FormDetailTextFieldCell; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricGradleTestRunner; +import org.robolectric.annotation.Config; + +import java.util.HashMap; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; + +/** + * Created by pmaccamp on 9/24/2015. + */ + +@Config(constants = BuildConfig.class) +@RunWith(RobolectricGradleTestRunner.class) +public class CellConfigTest { + private Activity activity; + + @Before + public void setUp() { + activity = Robolectric.buildActivity(Activity.class).create().get(); + } + + @Test + public void canAddCellConfigs() { + RowDescriptor rowDescriptor = RowDescriptor.newInstance("valid", + RowDescriptor.FormRowDescriptorTypeDetail, + "Test", + new Value("Test")); + + HashMap cellConfig = new HashMap(); + int[] padding = {12, 13, 14, 15}; + CellConfigObject[] config = { + new CellConfigObject(CellConfigObject.CONFIG_TYPE.PADDING, padding), + new CellConfigObject(CellConfigObject.CONFIG_TYPE.TYPEFACE, Typeface.BOLD_ITALIC), + new CellConfigObject(CellConfigObject.CONFIG_TYPE.INPUT_TYPE, InputType.TYPE_NUMBER_FLAG_DECIMAL), + new CellConfigObject(CellConfigObject.CONFIG_TYPE.GRAVITY, Gravity.CENTER), + }; + cellConfig.put("getLabelTextView", config); + cellConfig.put("getDetailTextView", config); + rowDescriptor.setCellConfig(cellConfig); + + FormDetailTextFieldCell detailTextFieldCell = new FormDetailTextFieldCell(activity, rowDescriptor); + + TextView view = detailTextFieldCell.getLabelTextView(); + assertThat(view.getPaddingLeft(), is(padding[0])); + assertThat(view.getPaddingTop(), is(padding[1])); + assertThat(view.getPaddingRight(), is(padding[2])); + assertThat(view.getPaddingBottom(), is(padding[3])); + assertThat(view.getTypeface().getStyle(), is(Typeface.BOLD_ITALIC)); + assertThat(view.getInputType(), is(InputType.TYPE_NUMBER_FLAG_DECIMAL)); + assertThat(view.getGravity(), is(Gravity.CENTER)); + + view = detailTextFieldCell.getDetailTextView(); + assertThat(view.getPaddingLeft(), is(padding[0])); + assertThat(view.getPaddingTop(), is(padding[1])); + assertThat(view.getPaddingRight(), is(padding[2])); + assertThat(view.getPaddingBottom(), is(padding[3])); + assertThat(view.getTypeface().getStyle(), is(Typeface.BOLD_ITALIC)); + assertThat(view.getInputType(), is(InputType.TYPE_NUMBER_FLAG_DECIMAL)); + assertThat(view.getGravity(), is(Gravity.CENTER)); + } + + @After + public void tearDown() { + + } + +} 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 09d449c..8d0ef8b 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormDateFieldCellTest.java @@ -25,8 +25,6 @@ @Config(constants = BuildConfig.class) @RunWith(RobolectricGradleTestRunner.class) public class FormDateFieldCellTest { - - private Activity activity; @Before @@ -41,7 +39,7 @@ public void shouldBeDisabled(){ FormTimeDialogFieldCell testCell = new FormTimeDialogFieldCell(activity, rowDescriptor); - assertThat(testCell.getTextView().isEnabled(), is(false)); + assertThat(testCell.getLabelTextView().isEnabled(), is(false)); } 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 960a77b..1a86068 100644 --- a/lib/QMBForm/src/test/java/com/quemb/qmbform/FormPickerFieldCellTest.java +++ b/lib/QMBForm/src/test/java/com/quemb/qmbform/FormPickerFieldCellTest.java @@ -3,7 +3,7 @@ import android.app.Activity; import com.quemb.qmbform.descriptor.RowDescriptor; -import com.quemb.qmbform.view.FormPickerDialogFieldCell; +import com.quemb.qmbform.view.FormSelectorPickerDialogFieldCell; import org.junit.After; import org.junit.Before; @@ -37,9 +37,9 @@ public void shouldBeDisabled(){ RowDescriptor rowDescriptor = RowDescriptor.newInstance("picker",RowDescriptor.FormRowDescriptorTypeButton, "Tap Me"); rowDescriptor.setDisabled(true); - FormPickerDialogFieldCell testCell = new FormPickerDialogFieldCell(activity, rowDescriptor); + FormSelectorPickerDialogFieldCell testCell = new FormSelectorPickerDialogFieldCell(activity, rowDescriptor); - assertThat( testCell.getTextView().isClickable(), is(false)); + assertThat( testCell.getLabelTextView().isClickable(), is(false)); }