Search in sources :

Example 1 with ODKView

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

the class FormEntryActivity method onDataChanged.

private void onDataChanged(Object data) {
    ODKView odkView = getCurrentViewIfODKView();
    if (odkView != null) {
        QuestionWidget widgetGettingNewValue = getWidgetWaitingForBinaryData();
        setWidgetData(data);
        widgetValueChanged(widgetGettingNewValue);
    }
}
Also used : ODKView(org.odk.collect.android.formentry.ODKView) QuestionWidget(org.odk.collect.android.widgets.QuestionWidget)

Example 2 with ODKView

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

the class FormEntryActivity method setWidgetData.

public void setWidgetData(Object data) {
    ODKView currentViewIfODKView = getCurrentViewIfODKView();
    if (currentViewIfODKView != null) {
        boolean set = false;
        for (QuestionWidget widget : currentViewIfODKView.getWidgets()) {
            if (widget instanceof WidgetDataReceiver) {
                if (waitingForDataRegistry.isWaitingForData(widget.getFormEntryPrompt().getIndex())) {
                    try {
                        ((WidgetDataReceiver) widget).setData(data);
                        waitingForDataRegistry.cancelWaitingForData();
                    } catch (Exception e) {
                        Timber.e(e);
                        ToastUtils.showLongToast(this, currentViewIfODKView.getContext().getString(R.string.error_attaching_binary_file, e.getMessage()));
                    }
                    set = true;
                    break;
                }
            }
        }
        if (!set) {
            Timber.e("Attempting to return data to a widget or set of widgets not looking for data");
        }
    }
}
Also used : ODKView(org.odk.collect.android.formentry.ODKView) WidgetDataReceiver(org.odk.collect.android.widgets.interfaces.WidgetDataReceiver) QuestionWidget(org.odk.collect.android.widgets.QuestionWidget) RepeatsInFieldListException(org.odk.collect.android.javarosawrapper.RepeatsInFieldListException) JavaRosaException(org.odk.collect.android.exception.JavaRosaException)

Example 3 with ODKView

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

the class FormEntryActivity method createODKView.

@NotNull
private ODKView createODKView(boolean advancingPage, FormEntryPrompt[] prompts, FormEntryCaption[] groups) {
    odkViewLifecycle.start();
    AudioClipViewModel.Factory factory = new AudioClipViewModel.Factory(MediaPlayer::new, scheduler);
    ViewModelAudioPlayer viewModelAudioPlayer = new ViewModelAudioPlayer(ViewModelProviders.of(this, factory).get(AudioClipViewModel.class), odkViewLifecycle);
    return new ODKView(this, prompts, groups, advancingPage, formSaveViewModel, waitingForDataRegistry, viewModelAudioPlayer, audioRecorder, formEntryViewModel, internalRecordingRequester, externalAppRecordingRequester);
}
Also used : ODKView(org.odk.collect.android.formentry.ODKView) AudioClipViewModel(org.odk.collect.audioclips.AudioClipViewModel) ViewModelAudioPlayer(org.odk.collect.android.widgets.utilities.ViewModelAudioPlayer) MediaPlayer(android.media.MediaPlayer) NotNull(org.jetbrains.annotations.NotNull)

Example 4 with ODKView

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

the class FormEntryActivity method saveAnswersForCurrentScreen.

// The method saves questions one by one in order to support calculations in field-list groups
private void saveAnswersForCurrentScreen(FormEntryPrompt[] mutableQuestionsBeforeSave, List<ImmutableDisplayableQuestion> immutableQuestionsBeforeSave) {
    FormController formController = getFormController();
    ODKView currentView = getCurrentViewIfODKView();
    if (formController == null || currentView == null) {
        return;
    }
    int index = 0;
    for (Map.Entry<FormIndex, IAnswerData> answer : currentView.getAnswers().entrySet()) {
        // Questions with calculates will have their answers updated as the questions they depend on are saved
        if (!isQuestionRecalculated(mutableQuestionsBeforeSave[index], immutableQuestionsBeforeSave.get(index))) {
            try {
                formController.saveOneScreenAnswer(answer.getKey(), answer.getValue(), false);
            } catch (JavaRosaException e) {
                Timber.e(e);
            }
        }
        index++;
    }
}
Also used : FormController(org.odk.collect.android.javarosawrapper.FormController) IAnswerData(org.javarosa.core.model.data.IAnswerData) ODKView(org.odk.collect.android.formentry.ODKView) FormIndex(org.javarosa.core.model.FormIndex) Map(java.util.Map) HashMap(java.util.HashMap) FailedConstraint(org.odk.collect.android.javarosawrapper.FormController.FailedConstraint) JavaRosaException(org.odk.collect.android.exception.JavaRosaException)

Example 5 with ODKView

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

the class FormEntryActivity method updateSelectedItems.

/*
     *TODO: this is not an ideal way to solve communication between a dialog created by a widget and the widget.
     * Instead we should use viewmodels: https://github.com/getodk/collect/pull/3964#issuecomment-670155433
     */
@Override
public void updateSelectedItems(List<Selection> items) {
    ODKView odkView = getCurrentViewIfODKView();
    if (odkView != null) {
        QuestionWidget widgetGettingNewValue = getWidgetWaitingForBinaryData();
        setWidgetData(items);
        widgetValueChanged(widgetGettingNewValue);
    }
}
Also used : ODKView(org.odk.collect.android.formentry.ODKView) QuestionWidget(org.odk.collect.android.widgets.QuestionWidget)

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