package org.openlmis.core.view.holder; import android.app.Activity; import android.support.annotation.NonNull; import android.text.Html; import android.view.View; import android.widget.TextView; import org.openlmis.core.R; import org.openlmis.core.utils.Constants; import org.openlmis.core.utils.DateUtil; import org.openlmis.core.view.activity.BaseActivity; import org.openlmis.core.view.activity.RapidTestReportFormActivity; import org.openlmis.core.view.viewmodel.RapidTestReportViewModel; import org.openlmis.core.view.widget.SingleClickButtonListener; import roboguice.inject.InjectView; public class RapidTestReportViewHolder extends BaseViewHolder { @InjectView(R.id.tv_period) TextView tvPeriod; @InjectView(R.id.tv_report_status) TextView tvReportStatus; @InjectView(R.id.btn_report_entry) TextView btnReportEntry; private RapidTestReportViewModel viewModel; public RapidTestReportViewHolder(View itemView) { super(itemView); } public void populate(final RapidTestReportViewModel rapidTestReportViewModel) { tvPeriod.setText(rapidTestReportViewModel.getPeriod().toString()); viewModel = rapidTestReportViewModel; switch (viewModel.getStatus()) { case MISSING: tvReportStatus.setText(Html.fromHtml(context.getString(R.string.msg_report_missing))); setGrayHeader(); setBlueButton(); btnReportEntry.setText(context.getString(R.string.btn_create_rapid_test_period)); btnReportEntry.setOnClickListener(goToRapidTestReportActivityListener()); break; case INCOMPLETE: setGrayHeader(); tvReportStatus.setText(Html.fromHtml(context.getString(R.string.label_incomplete_requisition, context.getString(R.string.title_rapid_test_reports)))); setWhiteButton(); btnReportEntry.setText(context.getString(R.string.btn_view_incomplete_requisition, context.getString(R.string.title_rapid_test_reports))); btnReportEntry.setOnClickListener(goToRapidTestReportActivityListener()); break; case COMPLETED: String error; error = context.getString(R.string.label_unsynced_requisition, context.getString(R.string.title_rapid_test_reports)); setRedHeader(); tvReportStatus.setText(Html.fromHtml(error)); break; case SYNCED: setWhiteHeader(); tvReportStatus.setText(Html.fromHtml(context.getString(R.string.label_submitted_message, context.getString(R.string.title_rapid_test_reports), DateUtil.formatDate(rapidTestReportViewModel.getSyncedTime())))); setWhiteButton(); btnReportEntry.setText(context.getString(R.string.btn_view_requisition, context.getString(R.string.title_rapid_test_reports))); btnReportEntry.setOnClickListener(goToRapidTestReportActivityListener()); break; default: break; } } public void setWhiteHeader() { tvPeriod.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_done_green, 0, 0, 0); tvPeriod.setBackground(context.getResources().getDrawable(R.drawable.border_bottom)); tvPeriod.setTextColor(context.getResources().getColor(R.color.color_black)); } public void setRedHeader() { tvPeriod.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_error, 0, 0, 0); tvPeriod.setBackgroundResource(R.color.color_red); tvPeriod.setTextColor(context.getResources().getColor(R.color.color_white)); } public void setGrayHeader() { tvPeriod.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_description, 0, 0, 0); tvPeriod.setBackgroundColor(context.getResources().getColor(R.color.color_draft_title)); tvPeriod.setTextColor(context.getResources().getColor(R.color.color_white)); } public void setBlueButton() { btnReportEntry.setBackground(context.getResources().getDrawable(R.drawable.blue_button)); btnReportEntry.setTextColor(context.getResources().getColor(R.color.color_white)); } public void setWhiteButton() { btnReportEntry.setBackgroundColor(context.getResources().getColor(R.color.color_white)); btnReportEntry.setTextColor(context.getResources().getColor(R.color.color_accent)); } @NonNull public SingleClickButtonListener goToRapidTestReportActivityListener() { return new SingleClickButtonListener() { @Override public void onSingleClick(View v) { ((BaseActivity) context).loading(); if (viewModel.getRapidTestForm() == null) { ((Activity) context).startActivityForResult(RapidTestReportFormActivity.getIntentToMe(context, RapidTestReportViewModel.DEFAULT_FORM_ID, viewModel.getPeriod().getBegin()), Constants.REQUEST_CREATE_OR_MODIFY_RAPID_TEST_FORM); } else { ((Activity) context).startActivityForResult(RapidTestReportFormActivity.getIntentToMe(context, viewModel.getRapidTestForm().getId(), viewModel.getPeriod().getBegin()), Constants.REQUEST_CREATE_OR_MODIFY_RAPID_TEST_FORM); } ((BaseActivity) context).loaded(); } }; } }