123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352 |
- package com.dbs.mplus.knuh.customView;
- import androidx.annotation.NonNull;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.core.content.ContextCompat;
- import android.app.Dialog;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Color;
- import android.graphics.PorterDuff;
- import android.graphics.drawable.ColorDrawable;
- import android.graphics.drawable.Drawable;
- import android.os.Bundle;
- import android.util.Base64;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.View;
- import android.view.inputmethod.EditorInfo;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.LinearLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.dbs.mplus.knuh.BuildConfig;
- import com.dbs.mplus.knuh.R;
- import com.dbs.mplus.knuh.activity.ConsentActivity;
- import com.dbs.mplus.knuh.httpTask.CallBack;
- import com.dbs.mplus.knuh.httpTask.HttpSoapConnection;
- import com.dbs.mplus.knuh.httpTask.SoapParser;
- import com.dbs.mplus.knuh.model.UserSignDataInfoVO;
- import com.dbs.mplus.knuh.util.ConsentConfig;
- import com.dbs.mplus.knuh.util.Util;
- import com.github.chrisbanes.photoview.PhotoView;
- import com.github.gcacace.signaturepad.views.SignaturePad;
- import org.ksoap2.serialization.SoapObject;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.util.HashMap;
- import java.util.concurrent.ExecutionException;
- public class CustomSignDialog extends Dialog {
- private static final String TAG = "CustomSignDialog";
- private Context mContext;
- private ConsentActivity instance;
- private AppCompatActivity mActivity;
- private UserSignDataInfoVO userSignDataInfoVO;
- private String userId = "";
- private String userNm = "";
- private String loginDeptCd = "";
- private String signImageSeqNo = "";
- private byte[] signImage;
- private Bitmap signPadImg;
- private LinearLayout startSignLayout;
- private TextView tvUserNm;
- private EditText etUserId;
- private Button btnCancel;
- private Button btnConfirm;
- private SignaturePad spSignImage;
- // private PhotoView ivSignImage;
- public CustomSignDialog(@NonNull Context context, AppCompatActivity activity, UserSignDataInfoVO userSignDataInfoVO) {
- super(context);
- mContext = context;
- mActivity = activity;
- this.instance = (ConsentActivity) mContext;
- this.userSignDataInfoVO = userSignDataInfoVO;
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- setCanceledOnTouchOutside(false);
- setContentView(R.layout.activity_custom_sign_dialog);
- init();
- }
- private void init() {
- setLayout();
- setEvent();
- }
- private void setLayout() {
- startSignLayout = (LinearLayout) findViewById(R.id.startSignLayout);
- tvUserNm = (TextView) findViewById(R.id.tvUserNm);
- etUserId = (EditText) findViewById(R.id.etUserId);
- spSignImage = (SignaturePad) findViewById(R.id.spSignImage);
- btnConfirm = (Button) findViewById(R.id.btnConfirm);
- btnCancel = (Button) findViewById(R.id.btnCancel);
- // ivSignImage = (PhotoView) findViewById(R.id.ivSignImage);
- // ivSignImage.setVisibility(View.GONE);
- // spSignImage.setVisibility(View.GONE);
- Drawable btnCancelBackground = (Drawable) btnCancel.getBackground();
- btnCancelBackground.setColorFilter(ContextCompat.getColor(mContext, R.color.alertCancelColor), PorterDuff.Mode.SRC_ATOP);
- setUserSignInfo();
- }
- private void setUserSignInfo() {
- loginDeptCd = Util.getStringPreference(mContext, "userInfo", "deptCd").trim();
- userId = userSignDataInfoVO.getUserId();
- userNm = userSignDataInfoVO.getUserNm();
- signImageSeqNo = userSignDataInfoVO.getSignImageSeqNo();
- signImage = userSignDataInfoVO.getSignData().getBytes();
- byte[] imgbytes = Base64.decode(signImage, Base64.DEFAULT);
- tvUserNm.setText(userNm);
- etUserId.setText(userId);
- if (!signImage.equals("")) {
- Bitmap bitmap = BitmapFactory.decodeByteArray(imgbytes, 0, imgbytes.length);
- spSignImage.setSignatureBitmap(bitmap);
- // ivSignImage.setImageBitmap(bitmap);
- }
- // 보건의료정보팀일 경우 환자조회가 가능하도록
- if (loginDeptCd.equals("3230000000")) {
- etUserId.setEnabled(true);
- }
- }
- private void setEvent() {
- startSignLayout.setOnClickListener(onClickListener);
- btnConfirm.setOnClickListener(onClickListener);
- btnCancel.setOnClickListener(onClickListener);
- etUserId.setOnEditorActionListener(onEditorActionListener);
- }
- private View.OnClickListener onClickListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (v == startSignLayout) {
- CustomSignPad customSignPad = new CustomSignPad(mContext, spSignImage.getSignatureBitmap());
- customSignPad.setDialogListener(new CustomSignPad.CustomSignPadListener() {
- @Override
- public void onConfirmClicked(Bitmap signPadImage) {
- signPadImg = signPadImage;
- // ivSignImage.setImageBitmap(signPadImg);
- spSignImage.setSignatureBitmap(signPadImg);
- }
- @Override
- public void onCancelClicked() { }
- });
- customSignPad.show();
- } else if (v == btnConfirm) {
- setSignImage();
- } else if (v == btnCancel) {
- dismiss();
- }
- }
- };
- private void setSignImage() {
- final CallBack callBack = new CallBack() {
- @Override
- public void result(SoapObject result) {
- instance.dismissProgress();
- Log.e(TAG, "setSignImage -- > " + result);
- if (result == null || result.toString().indexOf("null") > 0 || result.getPropertyCount() == 0) {
- stop();
- } else {
- String rts = result.getProperty("setSignImage").toString().trim();
- int res = Integer.parseInt(rts);
- if (res == 0) {
- stop();
- } else {
- mActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(mContext, mContext.getString(R.string.okSignImgSet), Toast.LENGTH_LONG).show();
- instance.csAlert.dismiss();
- dismiss();
- }
- });
- }
- }
- }
- @Override
- public void stop() {
- mActivity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- instance.showSingButtonDialog(mContext.getString(R.string.setSignImageError));
- }
- });
- }
- @Override
- public void error() {
- }
- };
- instance.csAlert.show();
- instance.csAlert.setContent(mContext.getString(R.string.setSignImage), "");
- instance.csAlert.btnConfirm.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- instance.showProgress();
- Bitmap drawable = spSignImage.getSignatureBitmap();
- ByteArrayOutputStream stream = new ByteArrayOutputStream() ;
- drawable.compress(Bitmap.CompressFormat.JPEG, 80, stream) ;
- byte[] signArr = stream.toByteArray() ;
- String strSignImg = "";
- try {
- // strSignImg = Util.base64Encode(signArr);
- strSignImg = Base64.encodeToString(signArr, Base64.DEFAULT);
- stream.close();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- HashMap<String, String> mData = new HashMap<String, String>();
- mData.put("instCd", BuildConfig.INST_CD);
- mData.put("userId", userId);
- mData.put("signSeq", signImageSeqNo);
- mData.put("inptId", instance.userId);
- mData.put("signImage", strSignImg);
- Util.callHttp(mContext, ConsentConfig.HOST_HOSPITAL, ConsentConfig.SET_SIGN_IMAGE, mData, callBack);
- }
- });
- instance.csAlert.btnCancel.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- instance.csAlert.dismiss();
- }
- });
- }
- private EditText.OnEditorActionListener onEditorActionListener = new EditText.OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if (actionId == EditorInfo.IME_ACTION_DONE || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
- instance.showProgress();
- String userId = etUserId.getText().toString().trim();
- HashMap<String, String> mData = new HashMap<String, String>();
- mData.put("userId", userId);
- mData.put("instCd", BuildConfig.INST_CD);
- userSignDataInfoVO = getUserSignDataInfo(mData);
- if (userSignDataInfoVO == null || userSignDataInfoVO.getUserNm().equals("")) {
- instance.dismissProgress();
- instance.showSingButtonDialog(mContext.getString(R.string.signDataError));
- } else {
- instance.dismissProgress();
- setNewUserSignInfo();
- }
- }
- return false;
- }
- };
- private void setNewUserSignInfo() {
- userId = userSignDataInfoVO.getUserId();
- userNm = userSignDataInfoVO.getUserNm();
- signImageSeqNo = userSignDataInfoVO.getSignImageSeqNo();
- signImage = userSignDataInfoVO.getSignData().getBytes();
- tvUserNm.setText(userNm);
- etUserId.setText(userId);
- if (!signImage.equals("")) {
- Bitmap bitmap = BitmapFactory.decodeByteArray(signImage, 0, signImage.length);
- spSignImage.setSignatureBitmap(bitmap);
- }
- }
- private UserSignDataInfoVO getUserSignDataInfo(HashMap<String, String> mData) {
- UserSignDataInfoVO userSignDataInfoVO = null;
- HttpSoapConnection connection = new HttpSoapConnection(ConsentConfig.HOST_HOSPITAL, ConsentConfig.GET_USER_SIGN_DATA_INFO, mData);
- try {
- SoapObject object = connection.execute().get();
- userSignDataInfoVO = SoapParser.getUserSignDataInfo(object);
- } catch (ExecutionException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- return userSignDataInfoVO;
- }
- /**
- * String 을 Bitmap 으로 변환
- * 2020.12.08
- * jmRyu
- * @param encodedString : 받아올 때, Base64 Encoding Image String 을 받아옴
- * @return
- */
- private Bitmap StringToBitmap(String encodedString) {
- try {
- byte[] encodeByte = Base64.decode(encodedString, Base64.DEFAULT);
- Bitmap bitmap = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
- return bitmap;
- } catch (Exception e) {
- e.getMessage();
- return null;
- }
- }
- @Override
- public void show() {
- super.show();
- }
- @Override
- public void dismiss() {
- super.dismiss();
- }
- @Override
- public void onBackPressed() {
- return;
- }
- }
|