/* * Copyright (c) 2014. The Trustees of Indiana University. * * This version of the code is licensed under the MPL 2.0 Open Source license with additional * healthcare disclaimer. If the user is an entity intending to commercialize any application * that uses this code in a for-profit venture, please contact the copyright holder. */ package com.muzima.view.forms; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import com.muzima.MuzimaApplication; import com.muzima.R; import com.muzima.adapters.forms.RegistrationFormsAdapter; import com.muzima.api.model.Patient; import com.muzima.controller.FormController; import com.muzima.model.AvailableForm; import com.muzima.model.collections.AvailableForms; import com.muzima.view.BaseActivity; import java.util.UUID; public class RegistrationFormsActivity extends BaseActivity { private ListView list; private RegistrationFormsAdapter registrationFormsAdapter; private String TAG = "RegistrationFormsActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_registration_form_list); FormController formController = ((MuzimaApplication) getApplicationContext()).getFormController(); AvailableForms availableForms = getRegistrationForms(formController); if (isOnlyOneRegistrationForm(availableForms)) { startWebViewActivity(availableForms.get(0)); } else { prepareRegistrationAdapter(formController, availableForms); } } private void prepareRegistrationAdapter(FormController formController, AvailableForms availableForms) { registrationFormsAdapter = new RegistrationFormsAdapter(getApplicationContext(), R.layout.item_forms_list, formController, availableForms); list = (ListView) findViewById(R.id.list); list.setOnItemClickListener(startRegistrationOnClick()); list.setAdapter(registrationFormsAdapter); registrationFormsAdapter.reloadData(); } private boolean isOnlyOneRegistrationForm(AvailableForms availableForms) { return availableForms.size() == 1; } private AdapterView.OnItemClickListener startRegistrationOnClick() { return new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { AvailableForm form = registrationFormsAdapter.getItem(position); startWebViewActivity(form); } }; } private void startWebViewActivity(AvailableForm form) { Patient patient = new Patient(); String uuid = String.valueOf(UUID.randomUUID()); patient.setUuid(uuid); startActivity(new FormViewIntent(this, form, patient)); } private AvailableForms getRegistrationForms(FormController formController) { AvailableForms availableForms = null; try { availableForms = formController.getDownloadedRegistrationForms(); } catch (FormController.FormFetchException e) { Log.e(TAG, "Error while retrieving registration forms from Lucene"); } return availableForms; } }