Search in sources :

Example 6 with ODKView

use of org.odk.collect.android.formentry.ODKView in project collect by opendatakit.

the class FormEntryActivity method onNumberPickerValueSelected.

@Override
public void onNumberPickerValueSelected(int widgetId, int value) {
    if (currentView != null) {
        for (QuestionWidget qw : ((ODKView) currentView).getWidgets()) {
            if (qw instanceof RangePickerIntegerWidget && widgetId == qw.getId()) {
                ((RangePickerIntegerWidget) qw).setNumberPickerValue(value);
                widgetValueChanged(qw);
                return;
            } else if (qw instanceof RangePickerDecimalWidget && widgetId == qw.getId()) {
                ((RangePickerDecimalWidget) qw).setNumberPickerValue(value);
                widgetValueChanged(qw);
                return;
            }
        }
    }
}
Also used : RangePickerIntegerWidget(org.odk.collect.android.widgets.RangePickerIntegerWidget) ODKView(org.odk.collect.android.formentry.ODKView) RangePickerDecimalWidget(org.odk.collect.android.widgets.RangePickerDecimalWidget) QuestionWidget(org.odk.collect.android.widgets.QuestionWidget)

Example 7 with ODKView

use of org.odk.collect.android.formentry.ODKView in project collect by opendatakit.

the class FormEntryActivity method widgetValueChanged.

@Override
public void widgetValueChanged(QuestionWidget changedWidget) {
    FormController formController = getFormController();
    if (formController == null) {
        // TODO: As usual, no idea if/how this is possible.
        return;
    }
    if (formController.indexIsInFieldList()) {
        // Some widgets may call widgetValueChanged from a non-main thread but odkView can only be modified from the main thread
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                try {
                    updateFieldListQuestions(changedWidget.getFormEntryPrompt().getIndex());
                    odkView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {

                        @Override
                        public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                            if (!odkView.isDisplayed(changedWidget)) {
                                odkView.scrollTo(changedWidget);
                            }
                            odkView.removeOnLayoutChangeListener(this);
                        }
                    });
                } catch (RepeatsInFieldListException e) {
                    createErrorDialog(e.getMessage(), false);
                } catch (Exception | Error e) {
                    Timber.e(e);
                    createErrorDialog(getString(R.string.update_widgets_error), true);
                }
            }
        });
    }
}
Also used : FormController(org.odk.collect.android.javarosawrapper.FormController) RepeatsInFieldListException(org.odk.collect.android.javarosawrapper.RepeatsInFieldListException) ODKView(org.odk.collect.android.formentry.ODKView) FormEndView(org.odk.collect.android.formentry.FormEndView) View(android.view.View) WebView(android.webkit.WebView) AudioControllerView(org.odk.collect.android.audio.AudioControllerView) TextView(android.widget.TextView)

Aggregations

ODKView (org.odk.collect.android.formentry.ODKView)7 QuestionWidget (org.odk.collect.android.widgets.QuestionWidget)4 JavaRosaException (org.odk.collect.android.exception.JavaRosaException)2 FormController (org.odk.collect.android.javarosawrapper.FormController)2 RepeatsInFieldListException (org.odk.collect.android.javarosawrapper.RepeatsInFieldListException)2 MediaPlayer (android.media.MediaPlayer)1 View (android.view.View)1 WebView (android.webkit.WebView)1 TextView (android.widget.TextView)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 FormIndex (org.javarosa.core.model.FormIndex)1 IAnswerData (org.javarosa.core.model.data.IAnswerData)1 NotNull (org.jetbrains.annotations.NotNull)1 AudioControllerView (org.odk.collect.android.audio.AudioControllerView)1 FormEndView (org.odk.collect.android.formentry.FormEndView)1 FailedConstraint (org.odk.collect.android.javarosawrapper.FormController.FailedConstraint)1 RangePickerDecimalWidget (org.odk.collect.android.widgets.RangePickerDecimalWidget)1 RangePickerIntegerWidget (org.odk.collect.android.widgets.RangePickerIntegerWidget)1 WidgetDataReceiver (org.odk.collect.android.widgets.interfaces.WidgetDataReceiver)1