package org.openlmis.core.view.holder; import android.app.Activity; import android.content.Context; import android.view.View; import android.widget.TextView; import org.openlmis.core.R; import org.openlmis.core.model.RnRForm; import org.openlmis.core.model.RnrFormItem; import org.openlmis.core.presenter.VIARequisitionPresenter; import org.openlmis.core.utils.ToastUtil; import org.openlmis.core.view.fragment.SimpleDialogFragment; import org.openlmis.core.view.viewmodel.RequisitionFormItemViewModel; import org.openlmis.core.view.widget.SingleClickButtonListener; import roboguice.inject.InjectView; import rx.Subscriber; public class RequisitionProductViewHolder extends BaseViewHolder { @InjectView(R.id.tx_FNM) TextView productCode; @InjectView(R.id.tx_product_name) TextView productName; @InjectView(R.id.iv_del) View ivDelete; private VIARequisitionPresenter presenter; private Context context; public RequisitionProductViewHolder(View itemView) { super(itemView); } public void populate(final RequisitionFormItemViewModel entry, VIARequisitionPresenter presenter, Context context) { this.presenter = presenter; this.context = context; productCode.setText(entry.getFmn()); productName.setText(entry.getProductName()); setDeleteIconForNewAddedProducts(entry); } private void setDeleteIconForNewAddedProducts(final RequisitionFormItemViewModel entry) { if (!hideDeleteIconInVIAPage() && isNewAddedProduct(entry)) { ivDelete.setVisibility(View.VISIBLE); ivDelete.setOnClickListener(new SingleClickButtonListener() { @Override public void onSingleClick(View v) { showDelConfirmDialog(entry.getItem()); } }); } else { ivDelete.setVisibility(View.INVISIBLE); } } private boolean isNewAddedProduct(RequisitionFormItemViewModel entry) { return entry.getItem().isManualAdd(); } public Boolean hideDeleteIconInVIAPage() { return !presenter.getRnrFormStatus().equals(RnRForm.STATUS.DRAFT) || (presenter.getRnRForm() != null && presenter.getRnRForm().isEmergency()); } protected void showDelConfirmDialog(final RnrFormItem item) { SimpleDialogFragment dialogFragment = SimpleDialogFragment.newInstance( context.getString(R.string.label_to_comfirm_delete_product)); dialogFragment.show(((Activity) context).getFragmentManager(), "del_confirm_dialog"); dialogFragment.setCallBackListener(new SimpleDialogFragment.MsgDialogCallBack() { @Override public void positiveClick(String tag) { presenter.removeRnrItem(item).subscribe(new Subscriber<Void>() { @Override public void onCompleted() { presenter.deleteRnRItemFromViewModel(item); } @Override public void onError(Throwable e) { ToastUtil.show(e.getMessage()); } @Override public void onNext(Void aVoid) { } }); } @Override public void negativeClick(String tag) { } }); } }