package org.openlmis.core.view.fragment;
import android.os.Bundle;
import org.openlmis.core.R;
import org.openlmis.core.presenter.BaseReportPresenter;
import org.openlmis.core.presenter.Presenter;
import org.openlmis.core.view.widget.ActionPanelView;
import org.openlmis.core.view.widget.SignatureDialog;
import roboguice.inject.InjectView;
import rx.Subscription;
import rx.functions.Action1;
public abstract class BaseReportFragment extends BaseFragment {
@InjectView(R.id.action_panel)
ActionPanelView actionPanelView;
BaseReportPresenter presenter;
protected abstract BaseReportPresenter injectPresenter();
@Override
public Presenter initPresenter() {
return presenter;
}
@Override
public void onCreate(Bundle savedInstanceState) {
presenter = injectPresenter();
super.onCreate(savedInstanceState);
}
protected void finish() {
getActivity().finish();
}
public void onBackPressed() {
if (presenter.isDraft()) {
showConfirmDialog();
} else {
finish();
}
}
private void showConfirmDialog() {
SimpleDialogFragment dialogFragment = SimpleDialogFragment.newInstance(
null,
getString(R.string.msg_back_confirm),
getString(R.string.btn_positive),
getString(R.string.btn_negative),
"back_confirm_dialog");
dialogFragment.show(getActivity().getFragmentManager(), "back_confirm_dialog");
dialogFragment.setCallBackListener(new SimpleDialogFragment.MsgDialogCallBack() {
@Override
public void positiveClick(String tag) {
presenter.deleteDraft();
finish();
}
@Override
public void negativeClick(String tag) {
}
});
}
public void showSignDialog() {
SignatureDialog signatureDialog = new SignatureDialog();
String signatureDialogTitle = getSignatureDialogTitle();
signatureDialog.setArguments(SignatureDialog.getBundleToMe(signatureDialogTitle));
signatureDialog.setDelegate(signatureDialogDelegate);
signatureDialog.show(this.getFragmentManager());
}
protected abstract String getSignatureDialogTitle();
protected SignatureDialog.DialogDelegate signatureDialogDelegate = new SignatureDialog.DialogDelegate() {
public void onSign(String sign) {
Subscription subscription = presenter.getOnSignObservable(sign).subscribe(getOnSignedAction());
subscriptions.add(subscription);
}
};
protected abstract Action1<? super Void> getOnSignedAction();
public void showMessageNotifyDialog() {
SimpleDialogFragment notifyDialog = SimpleDialogFragment.newInstance(null,
getNotifyDialogMsg(), null, getString(R.string.btn_continue), "showMessageNotifyDialog");
notifyDialog.show(getActivity().getFragmentManager(), "showMessageNotifyDialog");
}
protected abstract String getNotifyDialogMsg();
}