DetailCopyInfoPopWindow.java 8.04 KB
package com.sw.laryngoscope.popWindow;

import android.annotation.SuppressLint;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.sw.laryngoscope.R;
import com.sw.laryngoscope.activity.HomeActivity;
import com.sw.laryngoscope.databinding.LayoutDetailCopyInfoDialogBinding;
import com.sw.laryngoscope.manager.SpManager;
import com.sw.laryngoscope.utils.Logger;


@SuppressLint("NonConstantResourceId")
public class DetailCopyInfoPopWindow extends BasePopWindow<LayoutDetailCopyInfoDialogBinding>
        implements RadioGroup.OnCheckedChangeListener {
    private boolean isMetric = false;
    private InputMethodManager imm;
    private final HomeActivity homeActivity;

    public DetailCopyInfoPopWindow(HomeActivity activity, Context context) {
        super(context);
        homeActivity = activity;
    }

    @Override
    protected LayoutDetailCopyInfoDialogBinding getViewBinding(LayoutInflater inflater) {
        return LayoutDetailCopyInfoDialogBinding.inflate(inflater);
    }

    @Override
    public void init() {
        setFocusable(true);
        imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);

//        ActionModeCallbackInterceptor interceptor = new ActionModeCallbackInterceptor();
        //edit_login_new_account_name.setCustomSelectionActionModeCallback(interceptor);
        //edit_login_new_account_name.setCustomInsertionActionModeCallback(interceptor);
        setOutsideTouchable(false);
        //setFocusable(false);
        setTouchable(true);

        setWidth(mContext.getResources()
                .getDimensionPixelSize(R.dimen.dp_x_1019));
        setHeight(mContext.getResources()
                .getDimensionPixelSize(R.dimen.dp_y_755));

        if ( SpManager.get_copy_file_type() == 0 ) {
            binding.rbDicom.setChecked(true);
            setLayDicomShow(View.VISIBLE);
        } else if ( SpManager.get_copy_file_type() == 1 ) {
            binding.rbBasic.setChecked(true);
            setLayDicomShow(View.GONE);
        }
        binding.rbMale.setChecked(true);

        /*setTouchInterceptor(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if ( event.getY() >= 0 ) {//PopupWindow内部的事件
                    return false;
                }
                if ( mCopyCallback != null ) {
                    mCopyCallback.cancelCopy();
                }
                return true;
            }
        });*/
    }

    void setLayDicomShow(int visibility) {
        binding.lay2.setVisibility(visibility);
        binding.lay3.setVisibility(visibility);
        binding.lay4.setVisibility(visibility);
        binding.lay5.setVisibility(visibility);
        binding.lay6.setVisibility(visibility == View.VISIBLE ? View.GONE : View.VISIBLE);
    }

    @Override
    public void setListener() {
        binding.imgExportClose.setOnClickListener(this);
        binding.imgExport.setOnClickListener(this);
        binding.txtOk.setOnClickListener(this);

        binding.rgFormat.setOnCheckedChangeListener(this);
        binding.rgSex.setOnCheckedChangeListener(this);

        binding.edPatientId.setOnClickListener(this);
        binding.edName.setOnClickListener(this);
        binding.edAge.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.ed_patient_id://拉起软键盘
                showInput();
                break;
            case R.id.ed_name://拉起软键盘
                showInput();
                break;
            case R.id.ed_age://拉起软键盘
                showInput();
                break;
            case R.id.img_export_close:
                dismiss();
                break;
            case R.id.img_export:
                if ( mCopyCallback != null ) {
                    binding.layCopyInfo.setVisibility(View.GONE);
                    binding.layCopying.setVisibility(View.VISIBLE);
                    mCopyCallback.startCopy(SpManager.get_copy_file_type(), binding.edName.getText().toString().trim(),
                            binding.rbMale.isChecked() ? "M" : "F",
                            binding.edPatientId.getText().toString().trim(),
                            binding.edAge.getText().toString().trim());
                }
                break;
            case R.id.txt_ok:
                if ( mCopyCallback != null ) {
                    mCopyCallback.cancelCopy();
                }
                break;
            default:
                break;
        }
    }

    @SuppressLint("ClickableViewAccessibility")
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return false;
    }

    @Override
    public void showAtLocation(View parent, int gravity, int x, int y) {
        super.showAtLocation(parent, gravity, x, y);
        binding.layCopyInfo.setVisibility(View.VISIBLE);
        binding.layCopying.setVisibility(View.GONE);
        setOnDismissListener(dismissListener);
    }

    @Override
    public void showAsDropDown(View parent, int x, int y) {
        super.showAsDropDown(parent, x, y);
        setOnDismissListener(dismissListener);
    }

    @Override
    protected void onCloseClick() {
        hideInput();
        super.onCloseClick();
        if ( mCopyCallback != null ) {
            mCopyCallback.cancelCopy();
        }
    }

    private void showInput() {
        //if (!imm.isActive()) {
            imm.showSoftInput(binding.edPatientId,
                    InputMethodManager.SHOW_IMPLICIT);
            Logger.d("======showInput========");
        //}
    }

    private void hideInput() {
        if (imm.isActive()) {
            imm.hideSoftInputFromWindow(
                    binding.edPatientId.getWindowToken(), 0);
        }
    }

    private final Runnable immMission = new Runnable() {
        @Override
        public void run() {
            binding.edPatientId.requestFocus();
            binding.edPatientId.performClick();
            imm.showSoftInput(binding.edPatientId,
                    InputMethodManager.SHOW_IMPLICIT);
        }
    };

    private OnDismissListener dismissListener = new OnDismissListener() {
        @Override
        public void onDismiss() {
            if ( mCopyCallback != null ) {
                hideInput();
                onCloseClick();
            }
        }
    };

    public copyCallback mCopyCallback;

    public void setCopyCallback(copyCallback copyCallback) {
        this.mCopyCallback = copyCallback;
    }

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        switch (binding.rgFormat.getCheckedRadioButtonId()) {
            case R.id.rb_dicom:
                SpManager.set_copy_file_type(0);
                Logger.d(TAG, "============rb_dicom");
                setLayDicomShow(View.VISIBLE);
                break;
            case R.id.rb_basic:
                SpManager.set_copy_file_type(1);
                Logger.d(TAG, "============rb_basic");
                setLayDicomShow(View.GONE);
                break;
            default:
                break;
        }
        switch (binding.rgSex.getCheckedRadioButtonId()) {
            case R.id.rb_male:
                Logger.d(TAG, "============rb_male");
                break;
            case R.id.rb_female:
                Logger.d(TAG, "============rb_female");
                break;
            default:
                break;
        }
    }

    public interface copyCallback {
        void startCopy(int type, String name, String sex, String id,
                       String age);
        void cancelCopy();
    }

    public void setCopyInfo(String cpNum, String checkNum) {
        binding.txtTip3.setText( homeActivity.getString(R.string.string_copy_tip, cpNum,
                checkNum) );
    }

}