package com.hdl.sdk.hdl_sdk.activity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;


import com.hdl.sdk.hdl_core.HDLAppliances.Config.HDLApConfig;
import com.hdl.sdk.hdl_core.HDLDeviceManger.Bean.AppliancesInfo;
import com.hdl.sdk.hdl_core.HDLDeviceManger.Core.HDLCommand;
import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CommonSwitchCtrlBackEvent;
import com.hdl.sdk.hdl_core.HDLDeviceManger.EventBusEvent.CommonSwitchStateBackEvent;
import com.hdl.sdk.hdl_sdk.R;
import com.hdl.sdk.hdl_sdk.base.BaseActivity;

import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

/**
 * 通用开关设备演示
 */
public class CtrlCommonSwitchActivity extends BaseActivity {

    /**Topbar*/
    private RelativeLayout topBarBack;
    private TextView topBarTitle;
    private Button btnOpen,btnClose;
    private TextView switchText;
    private AppliancesInfo appliancesInfo;
    private int switchState = 0;


    /**
     * 复写isRegisterEventBus()  要注册使用EventBus,这里要设置返回true
     *
     * @return true
     */
    @Override
    protected boolean isRegisterEventBus() {
        return true;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ctrl_common_switch);
        initToolbar();
        initcurState();
        initView();
        initOnClick();
        displayStateView();

        //从网络上查询刷新一次设备状态,待调试
//        HDLCommand.getCommonSwitchStateFromNetwork(appliancesInfo);



    }

    /**
     * 初始化Toolbar
     */
    private void initToolbar() {
//        topBarBack = findViewById(R.id.ll_top_b_left);
//        setViewVisible(topBarBack);
//        topBarTitle = findViewById(R.id.tv_top_b_header_title);
//        topBarBack.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                finish();
//            }
//        });
    }

    private void initcurState() {
        appliancesInfo = (AppliancesInfo) getIntent().getSerializableExtra("hdl");
//        String titleStr = appliancesInfo.getRemarks();
//        topBarTitle.setText(titleStr);

    }

    private void initView() {
        btnOpen = findViewById(R.id.btnOpen);

        btnClose = findViewById(R.id.btnClose);
        switchText = findViewById(R.id.switchText);





    }

    private void initOnClick() {

        btnOpen.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //0=å…³ 255=å¼€
                HDLCommand.commonSwitchCtrl(appliancesInfo, 255);
            }
        });

        btnClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                HDLCommand.commonSwitchCtrl(appliancesInfo,0);
            }
        });
    }

    private void displayStateView(){

        switch (appliancesInfo.getDeviceType()) {
            case HDLApConfig.TYPE_COMMON_SWITCH:
                break;
            default:
                finish();//设备类型不对结束页面
                break;
        }
        /**根据需求是否发送一次获取刷新状态请求*/

    }


    /**
     * 通用开关控制回调Event
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onCommonSwitchCtrlEventMain(CommonSwitchCtrlBackEvent event) {
        if (event.getCommonSwitchBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
                && event.getCommonSwitchBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
                && event.getCommonSwitchBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()
        ) {
            if (!event.isSuccess()) {
                showToast("通用开关控制超时,请重新再试");
                return;
            }

            showToast("通用开关控制成功");

            switchState =  event.getCommonSwitchBackInfo().getSwitchState();
            if(switchState>0){
                 switchText.setText("当前状态:开");
            }else{
                switchText.setText("当前状态:关");
            }
        }

    }

    /**
     * 通用开关 回调Event
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onCommonSwitchStateEventMain(CommonSwitchStateBackEvent event) {
        if (event.getCommonSwitchBackInfo().getAppliancesInfo().getDeviceDeviceID() == appliancesInfo.getDeviceDeviceID()
                && event.getCommonSwitchBackInfo().getAppliancesInfo().getDeviceSubnetID() == appliancesInfo.getDeviceSubnetID()
                && event.getCommonSwitchBackInfo().getAppliancesInfo().getChannelNum() == appliancesInfo.getChannelNum()
        ) {
            if (!event.isSuccess()) {
                showToast("通用开关读取状态超时,请重新再试");
                return;
            }

//            showToast("通用开关控制成功");

            switchState =  event.getCommonSwitchBackInfo().getSwitchState();
            if(switchState>0){
                switchText.setText("当前状态:开");
            }else{
                switchText.setText("当前状态:关");
            }
        }

    }

    // 读取指定RCU房间门铃状态
    // HDLCommand.getHotelRoomDoorbellStatus(100,100);



}