package com.sunvote.xpadapp.presenter; import android.content.Context; import android.content.DialogInterface; import android.os.Looper; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import com.sunvote.cmd.BaseCmd; import com.sunvote.cmd.ICmd; import com.sunvote.cmd.state.GetPkgStateResponse; import com.sunvote.cmd.upload.SingerUploadPkg; import com.sunvote.cmd.upload.TransferResult; import com.sunvote.protocal.Protocol; import com.sunvote.udptransfer.UDPModule; import com.sunvote.udptransfer.work.BaseStationProcessWork; import com.sunvote.udptransfer.work.SDKProcessWork; import com.sunvote.xpadapp.MainActivity; import com.sunvote.xpadapp.R; import com.sunvote.xpadcomm.XPadApi; import java.util.logging.Handler; /** * Created by XXW on 2017/11/7. */ public class ServicePresent implements View.OnClickListener{ private Context context; private View paper_linear; private View pen_linear; private View microphone_linear; private View tea_linear; private View water_linear; private View calc_linear; private View clean_linear; private View technology_linear; private View admin_button; private ImageView paper_img; private ImageView pen_img; private ImageView microphone_img; private ImageView tea_img; private ImageView water_img; private ImageView calc_img; private ImageView clean_img; private ImageView technology_img; private boolean paper; private boolean pen; private boolean microphone; private boolean tea; private boolean water; private boolean calc; private boolean clean; private boolean technology; private static byte reqpos = 1 ; private DialogInterface.OnDismissListener dismissListener; private View submit ; private int clickCount = 0 ; private long lastClick ; public void setDismissListener(DialogInterface.OnDismissListener dismissListener) { this.dismissListener = dismissListener; } public ServicePresent(Context context) { this.context = context; rootView = LayoutInflater.from(context).inflate(R.layout.dialog_service,null); init(); } public ServicePresent(Context context,View rootView) { this.context = context; this.rootView = rootView; init(); } private View rootView; public View getRootView() { return rootView; } public void init() { paper_linear = rootView.findViewById(R.id.paper_linear); pen_linear = rootView.findViewById(R.id.pen_linear); microphone_linear = rootView.findViewById(R.id.microphone_linear); tea_linear = rootView.findViewById(R.id.tea_linear); water_linear = rootView.findViewById(R.id.water_linear); calc_linear = rootView.findViewById(R.id.calc_linear); clean_linear = rootView.findViewById(R.id.clean_linear); technology_linear = rootView.findViewById(R.id.technology_linear); admin_button = rootView.findViewById(R.id.admin_button); submit = rootView.findViewById(R.id.submit); paper_img = rootView.findViewById(R.id.paper_img); pen_img = rootView.findViewById(R.id.pen_img); microphone_img = rootView.findViewById(R.id.microphone_img); tea_img = rootView.findViewById(R.id.tea_img); water_img = rootView.findViewById(R.id.water_img); calc_img = rootView.findViewById(R.id.calc_img); clean_img = rootView.findViewById(R.id.clean_img); technology_img = rootView.findViewById(R.id.technology_img); paper = false; pen = false; microphone = false; tea = false; water = false; calc = false; clean = false; technology = false; paper_img.setImageResource(R.drawable.service_paper_unchoose); pen_img.setImageResource(R.drawable.service_pen_unchoose); microphone_img.setImageResource(R.drawable.service_microphone_unchoose); tea_img.setImageResource(R.drawable.service_tea_unchoose); water_img.setImageResource(R.drawable.service_water_unchoose); calc_img.setImageResource(R.drawable.service_calc_unchoose); clean_img.setImageResource(R.drawable.service_clean_unchoose); technology_img.setImageResource(R.drawable.service_technology_unchoose); paper_linear.setOnClickListener(this); pen_linear.setOnClickListener(this); microphone_linear.setOnClickListener(this); tea_linear.setOnClickListener(this); water_linear.setOnClickListener(this); calc_linear.setOnClickListener(this); clean_linear.setOnClickListener(this); technology_linear.setOnClickListener(this); submit.setOnClickListener(this); initAdmin(); SDKProcessWork.getInstance().registerOnReceiveCmdListener(receiveCmdListener); } private void initAdmin(){ admin_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(System.currentTimeMillis() - lastClick > 1000){ clickCount = 0 ; } lastClick = System.currentTimeMillis(); clickCount ++ ; if(clickCount >= 5){ clickCount = 0 ; if(context instanceof MainActivity){ ((MainActivity)context).showAdmin(); } } } }); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.paper_linear: if(!paper){ sendServiceCmd((byte) 1); }else{ sendServiceCmd((byte) 101); } break; case R.id.pen_linear: if(!pen){ sendServiceCmd((byte) 2); }else{ sendServiceCmd((byte) 102); } break; case R.id.calc_linear: if(!calc){ sendServiceCmd((byte) 3); }else{ sendServiceCmd((byte) 103); } break; case R.id.tea_linear: if(!tea){ sendServiceCmd((byte) 4); }else{ sendServiceCmd((byte) 104); } break; case R.id.water_linear: if(!water){ sendServiceCmd((byte) 5); }else{ sendServiceCmd((byte) 105); } break; case R.id.clean_linear: if(!clean){ sendServiceCmd((byte) 6); }else { sendServiceCmd((byte) 106); } break; case R.id.microphone_linear: if(!microphone){ sendServiceCmd((byte) 7); }else{ sendServiceCmd((byte) 107); } break; case R.id.technology_linear: if(!technology){ sendServiceCmd((byte) 8); }else{ sendServiceCmd((byte) 108); } break; case R.id.submit: if(dismissListener != null){ dismissListener.onDismiss(null); } break; } } public void refreash(byte type){ switch (type){ case 1: paper = true ; paper_img.setImageResource(R.drawable.service_paper_choose);break; case 2: pen = true; pen_img.setImageResource(R.drawable.service_pen_choose);break; case 3: calc = true; calc_img.setImageResource(R.drawable.service_calc_choose);break; case 4: tea = true; tea_img.setImageResource(R.drawable.service_tea_choose);break; case 5: water = true; water_img.setImageResource(R.drawable.service_water_choose);break; case 6: clean = true; clean_img.setImageResource(R.drawable.service_clean_choose);break; case 7: microphone = true; microphone_img.setImageResource(R.drawable.service_microphone_choose);break; case 8: technology = true; technology_img.setImageResource(R.drawable.service_technology_choose);break; case 101: paper = false ; paper_img.setImageResource(R.drawable.service_paper_unchoose);break; case 102: pen = false; pen_img.setImageResource(R.drawable.service_pen_unchoose);break; case 103: calc = false; calc_img.setImageResource(R.drawable.service_calc_unchoose);break; case 104: tea = false; tea_img.setImageResource(R.drawable.service_tea_unchoose);break; case 105: water = false; water_img.setImageResource(R.drawable.service_water_unchoose);break; case 106: clean = false; clean_img.setImageResource(R.drawable.service_clean_unchoose);break; case 107: microphone = false; microphone_img.setImageResource(R.drawable.service_microphone_unchoose);break; case 108: technology = false; technology_img.setImageResource(R.drawable.service_technology_unchoose);break; } } public void show(){ rootView.setVisibility(View.VISIBLE); } public void dismiss(){ rootView.setVisibility(View.GONE); destroy(); } public void sendServiceCmd(final byte type){ SingerUploadPkg singerUploadPkg = new SingerUploadPkg(); singerUploadPkg.setKeyid(BaseStationProcessWork.getInstance().getBaseStationInfo().getKeyId()); singerUploadPkg.setAnstype((byte)33); singerUploadPkg.getAnsdata()[0] = 4; singerUploadPkg.getAnsdata()[1] = type; singerUploadPkg.getAnsdata()[2] = ++reqpos; final Protocol protocal = new Protocol(); protocal.setEnableMatchCode(false); protocal.setCmd(singerUploadPkg); receiveCmdListener.type = type; SDKProcessWork.getInstance().execute(protocal); } class ReceiveCmdListener implements SDKProcessWork.OnReceiveCmdListener{ public byte type ; @Override public void onReceiver(Protocol protocol1) { ICmd cmd = protocol1.getCmd(); if(cmd instanceof GetPkgStateResponse || cmd instanceof TransferResult){ new android.os.Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { refreash(type); } }); } } } private ReceiveCmdListener receiveCmdListener = new ReceiveCmdListener(); public void destroy(){ SDKProcessWork.getInstance().unregisterOnReceiveCmdListener(receiveCmdListener); } }