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

import android.annotation.SuppressLint;
import android.content.Context;
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.manager.SpManager;
import com.sw.laryngoscope.utils.Logger;

import butterknife.BindView;

@SuppressLint("NonConstantResourceId")
public class DetailCopyInfoPopWindow extends BasePopWindow implements RadioGroup.OnCheckedChangeListener {

    @BindView(R.id.lay_copy_info)
    RelativeLayout lay_copy_info;

    @BindView(R.id.rg_format)
    RadioGroup rg_format;
    @BindView(R.id.rb_dicom)
    RadioButton rb_dicom;
    @BindView(R.id.rb_basic)
    RadioButton rb_basic;
    @BindView(R.id.ed_patient_id)
    EditText ed_patient_id;
    @BindView(R.id.ed_name)
    EditText ed_name;
    @BindView(R.id.ed_age)
    EditText ed_age;

    @BindView(R.id.rg_sex)
    RadioGroup rg_sex;
    @BindView(R.id.rb_male)
    RadioButton rb_male;
    @BindView(R.id.rb_female)
    RadioButton rb_female;

    @BindView(R.id.img_export_close)
    ImageView img_export_close;
    @BindView(R.id.img_export)
    ImageView img_export;

    @BindView(R.id.lay_copying)
    RelativeLayout lay_copying;
    @BindView(R.id.txt_tip_3)
    TextView txt_tip_3;
    @BindView(R.id.txt_ok)
    TextView txt_ok;

    @BindView(R.id.lay_2)
    RelativeLayout lay_2;
    @BindView(R.id.lay_3)
    RelativeLayout lay_3;
    @BindView(R.id.lay_4)
    RelativeLayout lay_4;
    @BindView(R.id.lay_5)
    RelativeLayout lay_5;
    @BindView(R.id.lay_6)
    RelativeLayout lay_6;

    /**
     * 是否为公制
     */
    private boolean isMetric = false;
    private InputMethodManager imm;

    private final HomeActivity homeActivity;

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

    @Override
    public int getPopLayoutId() {
        return R.layout.layout_detail_copy_info_dialog;
    }

    @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 ) {
            rb_dicom.setChecked(true);
            setLayDicomShow(View.VISIBLE);
        } else if ( SpManager.get_copy_file_type() == 1 ) {
            rb_basic.setChecked(true);
            setLayDicomShow(View.GONE);
        }
        rb_male.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) {
        lay_2.setVisibility(visibility);
        lay_3.setVisibility(visibility);
        lay_4.setVisibility(visibility);
        lay_5.setVisibility(visibility);
        lay_6.setVisibility(visibility == View.VISIBLE ? View.GONE : View.VISIBLE);
    }

    @Override
    public void setListener() {
        img_export_close.setOnClickListener(this);
        img_export.setOnClickListener(this);
        txt_ok.setOnClickListener(this);

        rg_format.setOnCheckedChangeListener(this);
        rg_sex.setOnCheckedChangeListener(this);

        ed_patient_id.setOnClickListener(this);
        ed_name.setOnClickListener(this);
        ed_age.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 ) {
                    lay_copy_info.setVisibility(View.GONE);
                    lay_copying.setVisibility(View.VISIBLE);
                    mCopyCallback.startCopy(SpManager.get_copy_file_type(), ed_name.getText().toString().trim(),
                            rb_male.isChecked() ? "M" : "F",
                            ed_patient_id.getText().toString().trim(),
                            ed_age.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);
        lay_copy_info.setVisibility(View.VISIBLE);
        lay_copying.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(ed_patient_id,
                    InputMethodManager.SHOW_IMPLICIT);
            Logger.d("======showInput========");
        //}
    }

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

    private final Runnable immMission = new Runnable() {
        @Override
        public void run() {
            ed_patient_id.requestFocus();
            ed_patient_id.performClick();
            imm.showSoftInput(ed_patient_id,
                    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 (rg_format.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 (rg_sex.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) {
        txt_tip_3.setText( homeActivity.getString(R.string.string_copy_tip, cpNum,
                checkNum) );
    }

}