package com.example.bpa.view.fragment;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.bpa.R;
import com.example.bpa.config.ConfigName;
import com.example.bpa.config.DataBus;
import com.example.bpa.helper.MessageLog;
import com.example.bpa.helper.WrapContentLinearLayoutManager;
import com.example.bpa.service.DeviceData;
import com.example.bpa.view.adapter.devstatus_adapter;
import com.example.bpa.view.adapter.maingoods_adapter;
import com.example.bpa.view.adapter.makegood_adapter;
import com.example.bpa.view.control.MyLayoutManager;
import com.example.bpa.view.fragment.setting.mqttparameter;
import com.example.bpa.view.fragment.setting.ovarparameter;
import com.example.bpa.view.fragment.setting.systemparameter;
import com.example.bpa.view.from.lsjy_activity;
import com.example.bpa.view.mode.StatusMode;

import java.util.ArrayList;

public class SsjkFragment extends Fragment implements View.OnClickListener {

    Activity activity=null;
    View view;
    RecyclerView recyclerView;

    devstatus_adapter adapter;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_ssjk, container,false);
        Initdata();
        Init();
        initEvent();
        return view;
    }

    private void Init() {
        recyclerView = view.findViewById(R.id.recycler_view);

        MyLayoutManager layout = new MyLayoutManager();
        layout.setAutoMeasureEnabled(true);
        recyclerView.setLayoutManager(layout);
        adapter = new devstatus_adapter(getContext());
        recyclerView.setAdapter(adapter);

        activity=findActivity(view.getContext());
    }

    private void initEvent() {
        //

    }
    /**
     * 初始化数据加载
     */
    public void Initdata()
    {
        try{
            DataBus.getInstance().statusModes=new ArrayList<>();
            DataBus.getInstance().statusModes.add(new StatusMode("杯子检测",R.mipmap.gd1,R.mipmap.gd2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("电机传感器(左)",R.mipmap.djcgq1,R.mipmap.djcgq2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("电机传感器(右)",R.mipmap.djcgq1,R.mipmap.djcgq2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("清洗池浮球",R.mipmap.fq1,R.mipmap.fq2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("果糖液位检测(左)",R.mipmap.fq1,R.mipmap.fq2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("果糖液位检测(右)",R.mipmap.fq1,R.mipmap.fq2,false));
            //16
            DataBus.getInstance().statusModes.add(new StatusMode("蠕动泵(一)",R.mipmap.rdl1,R.mipmap.rdl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("蠕动泵(二)",R.mipmap.rdl1,R.mipmap.rdl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("蠕动泵(三)",R.mipmap.rdl1,R.mipmap.rdl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("蠕动泵(四)",R.mipmap.rdl1,R.mipmap.rdl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("蠕动泵(五)",R.mipmap.rdl1,R.mipmap.rdl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("离心泵(一)",R.mipmap.lxl1,R.mipmap.lxl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("离心泵(二)",R.mipmap.lxl1,R.mipmap.lxl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("离心泵(三)",R.mipmap.lxl1,R.mipmap.lxl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("离心泵(四)",R.mipmap.lxl1,R.mipmap.lxl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("离心泵(五)",R.mipmap.lxl1,R.mipmap.lxl2,false));

            DataBus.getInstance().statusModes.add(new StatusMode("出水阀",R.mipmap.csf1,R.mipmap.csf2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("进水阀",R.mipmap.jsf1,R.mipmap.jsf2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("清洗剂泵",R.mipmap.lxl1,R.mipmap.lxl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("果糖泵(左)",R.mipmap.rdl1,R.mipmap.rdl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("果糖泵(右)",R.mipmap.rdl1,R.mipmap.rdl2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("加热启停(左)",R.mipmap.yx1,R.mipmap.yx2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("加热启停(右)",R.mipmap.yx1,R.mipmap.yx2,false));
            DataBus.getInstance().statusModes.add(new StatusMode("清洗加热",R.mipmap.yx1,R.mipmap.yx2,false));

            Run();

        }catch(Exception e){

        }
    }

    /**
     * 设置状态显示
     * @param i
     * @param bool
     */
    public void SetStatus(int i,boolean bool)
    {
        if(DataBus.getInstance().statusModes.size()>=i)
        {
            StatusMode mode= DataBus.getInstance().statusModes.get(i);
            mode.Status=bool;
            DataBus.getInstance().statusModes.set(i,mode);
        }
    }
    @Override
    public void onClick(View v) {

    }
    private Activity findActivity(@NonNull Context context) {
        if (context instanceof Activity) {
            return (Activity) context;
        } else if (context instanceof ContextWrapper) {
            return findActivity(((ContextWrapper) context).getBaseContext());
        } else {
            return null;
        }
    }
    /**
     * 实时显示线程
     */
    public void Run() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (DataBus.getInstance().PlcIsConnect) {
                    try {
                        if(activity!=null)
                        {
                            activity.runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    try {
                                        SetStatus(0,DeviceData.Get().getConcurrentHash(0));
                                        SetStatus(1,DeviceData.Get().getConcurrentHash(1));
                                        SetStatus(2,DeviceData.Get().getConcurrentHash(2));
                                        SetStatus(3,DeviceData.Get().getConcurrentHash(3));
                                        SetStatus(4,DeviceData.Get().getConcurrentHash(4));
                                        SetStatus(5,DeviceData.Get().getConcurrentHash(5));

                                        SetStatus(6,DeviceData.Get().getConcurrentHash(16));
                                        SetStatus(7,DeviceData.Get().getConcurrentHash(17));
                                        SetStatus(8,DeviceData.Get().getConcurrentHash(18));
                                        SetStatus(9,DeviceData.Get().getConcurrentHash(19));
                                        SetStatus(10,DeviceData.Get().getConcurrentHash(20));
                                        SetStatus(11,DeviceData.Get().getConcurrentHash(21));
                                        SetStatus(12,DeviceData.Get().getConcurrentHash(22));
                                        SetStatus(13,DeviceData.Get().getConcurrentHash(23));
                                        SetStatus(14,DeviceData.Get().getConcurrentHash(24));
                                        SetStatus(15,DeviceData.Get().getConcurrentHash(25));

                                        SetStatus(16,DeviceData.Get().getConcurrentHash(32));
                                        SetStatus(17,DeviceData.Get().getConcurrentHash(33));
                                        SetStatus(18,DeviceData.Get().getConcurrentHash(34));
                                        SetStatus(19,DeviceData.Get().getConcurrentHash(35));
                                        SetStatus(20,DeviceData.Get().getConcurrentHash(36));
                                        SetStatus(21,DeviceData.Get().getConcurrentHash(37));
                                        SetStatus(22,DeviceData.Get().getConcurrentHash(38));
                                        SetStatus(23,DeviceData.Get().getConcurrentHash(39));

                                        adapter.refresh();
                                    } catch (Exception e) {
                                        MessageLog.ShowInfo("状态显示解析异常！"+e.getMessage());
                                    }
                                }
                            });
                        }
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }).start();
    }
}