ServicePresent.java 11.2 KB
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<SingerUploadPkg> 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);
    }
}