JLChen
2020-12-09 e87985ec1dcb69beedaf9f95e8e7aba14b7c08d6
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -10,14 +10,14 @@
        /// </summary>
        /// <param name="thisView">当前界面</param>
        /// <param name="viewLayout">上下滑动控件</param>
        public static void InputCondition(FrameLayout thisView,VerticalScrolViewLayout viewLayout)
        public static void InputCondition(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
        {
            for (int i = 0; i < Logic.currlogic.input.Count; i++)
            {
                Input inputCondition = Logic.currlogic.input[i];
                ///各种条件的View
                LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView();
                viewLayout.AddChidren(inputView.FLayoutView());
                inputView.FLayoutView(viewLayout);
                ///记录条件类型
                inputView.btnClick.Name = inputCondition.condition_type;
                ///记录条件索引
@@ -36,7 +36,6 @@
                                inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value;
                                inputView.btnClick.AddTag("timepoint", value);
                            }
                        }
                        break;
                    case "2":
@@ -64,11 +63,24 @@
                            //区别不同设备,显示不同设备状态
                            switch (device.functionType)
                            {
                                //开关灯光 light.Switch
                                case FunctionType.Dimmer:
                                case FunctionType.RGB:
                                case FunctionType.RGBW:
                                case FunctionType.ColorTemperature:
                                case FunctionType.Relay:
                                //窗帘
                                case FunctionType.Curtain:
                                case FunctionType.RollingShutter:
                                case FunctionType.MotorCurtain:
                                //空调
                                case FunctionType.AC:
                                //地热
                                case FunctionType.FloorHeating:
                                    {//开关灯
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "on")
                                            {
@@ -95,8 +107,6 @@
                    int indexVulae = int.Parse(inputView.btnClick.Tag.ToString());
                    //标记编辑状态
                    bool edit = true;
                    //表示是条件
                    string if_type = LogicMethod.condition_if;
                    switch (button.Name)
                    {
                        case "1":
@@ -126,15 +136,21 @@
                            {
                                //用sid找到设备;
                                var device = LogicMethod.GetDevice(inputCondition.sid);
                                DeviceFunList deviceFunList = new DeviceFunList();
                                ConditionDeviceFunList deviceFunList = new ConditionDeviceFunList();
                                MainPage.BasePageView.AddChidren(deviceFunList);
                                deviceFunList.Show(device, indexVulae,edit, if_type);
                                deviceFunList.Show(device, indexVulae, edit);
                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                            }
                            break;
                    }
                };
                ///删除控件
                inputView.btnDel.MouseUpEventHandler += (sender, e) =>
                {
                    Logic.currlogic.input.Remove(inputCondition);
                    inputView.frameLayout.RemoveFromParent();
                };
            }
@@ -147,12 +163,12 @@
        public static void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
        {
            for (int i = 0; i < Logic.currlogic.output.Count; i++)
            for (int i = 0; i < Logic.currlogic.output.Count; i++)
            {
                Output outputTarget = Logic.currlogic.output[i];
                ///各种条件的View
                LogicView.AddOutputInputView targetView = new LogicView.AddOutputInputView();
                viewLayout.AddChidren(targetView.FLayoutView());
                targetView.FLayoutView(viewLayout);
                ///记录条件类型
                targetView.btnClick.Name = outputTarget.target_type;
                ///记录条件索引
@@ -172,24 +188,329 @@
                            targetView.btnText.Text = device.name;
                            //改变设备名称显示控件宽度
                            targetView.btnText.Width = Application.GetRealWidth(80);
                            //第一个变量显示状态值
                            string stateStr = "";
                            //区别不同设备,显示不同设备状态
                            switch (device.functionType)
                            {
                                case FunctionType.Relay:
                                    {//开关灯
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "on")
                                            {
                                                targetView.btnState.Text = Language.StringByID(StringId.onLogic);
                                                stateStr = Language.StringByID(StringId.onLogic);
                                            }
                                            else
                                            {
                                                targetView.btnState.Text = Language.StringByID(StringId.offLogic);
                                                stateStr = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                        targetView.btnState.Text = stateStr;
                                    }
                                    break;
                                case FunctionType.RGB:
                                case FunctionType.RGBW:
                                case FunctionType.ColorTemperature:
                                case FunctionType.Dimmer:
                                    {
                                        string on_off = GetKeyValue("on_off", dicList);
                                        string brightness = GetKeyValue("brightness", dicList);
                                        if (on_off != "")
                                        {
                                            if (on_off == "on")
                                            {
                                                stateStr = Language.StringByID(StringId.onLogic);
                                            }
                                            else
                                            {
                                                stateStr = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                        if (brightness != "")
                                        {
                                            stateStr += brightness + "%";
                                        }
                                        if (on_off != "" && on_off == "off")
                                        {
                                            targetView.btnState.Text = Language.StringByID(StringId.offLogic);
                                        }
                                        else
                                        {
                                            targetView.btnState.Text = stateStr;
                                        }
                                    }
                                    break;
                                case FunctionType.Curtain:
                                    {//开关灯
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            switch (value)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic);
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic);
                                                    }
                                                    break;
                                                case "stop":
                                                    {
                                                        stateStr = Language.StringByID(StringId.stop);
                                                    }
                                                    break;
                                            }
                                        }
                                        targetView.btnState.Text = stateStr;
                                    }
                                    break;
                                case FunctionType.MotorCurtain:
                                case FunctionType.RollingShutter:
                                    {//开关灯
                                        string on_off = GetKeyValue("on_off", dicList);
                                        string brightness = GetKeyValue("brightness", dicList);
                                        if (on_off != "")
                                        {
                                            switch (on_off)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic);
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic);
                                                    }
                                                    break;
                                                case "stop":
                                                    {
                                                        stateStr = Language.StringByID(StringId.stop);
                                                    }
                                                    break;
                                            }
                                        }
                                        if (brightness != "")
                                        {
                                            stateStr += brightness + "%";
                                        }
                                        if (on_off != "" && on_off == "stop"|| on_off != "" && on_off == "off")
                                        {
                                            targetView.btnState.Text = Language.StringByID(StringId.stop);
                                        }
                                        else
                                        {
                                            targetView.btnState.Text = stateStr;
                                        }
                                    }
                                    break;
                                case FunctionType.AC: {
                                        string on_off = GetKeyValue("on_off", dicList);
                                        string set_temp = GetKeyValue("set_temp", dicList);
                                        string mode = GetKeyValue("mode", dicList);
                                        string fan = GetKeyValue("fan", dicList);
                                        if (on_off != "") {
                                            switch (on_off)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic)+";";
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic) + ";";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (set_temp != "")
                                        {
                                            stateStr += set_temp + "℃;";
                                        }
                                        if (mode != "")
                                        {
                                            switch (mode)
                                            {
                                                case "cool":
                                                    {
                                                        stateStr += Language.StringByID(StringId.coolLogic)+";";
                                                    }
                                                    break;
                                                case "heat":
                                                    {
                                                        stateStr += Language.StringByID(StringId.heatingLogic) + ";";
                                                    }
                                                    break;
                                                case "auto":
                                                    {
                                                        stateStr += Language.StringByID(StringId.autoLogic) + ";";
                                                    }
                                                    break;
                                                case "dry":
                                                    {
                                                        stateStr += Language.StringByID(StringId.dehumidifyLogic) + ";";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (fan != "")
                                        {
                                            switch (fan)
                                            {
                                                case "high":
                                                    {
                                                        stateStr += Language.StringByID(StringId.HighWindSpeed)+";";
                                                    }
                                                    break;
                                                case "medium":
                                                    {
                                                        stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ";";
                                                    }
                                                    break;
                                                case "low":
                                                    {
                                                        stateStr += Language.StringByID(StringId.LowWindSpeed) + ";";
                                                    }
                                                    break;
                                                case "auto":
                                                    {
                                                        stateStr += Language.StringByID(StringId.Auto) + ";";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (on_off != "" && on_off == "off")
                                        {
                                            targetView.btnState.Text = Language.StringByID(StringId.offLogic);
                                        }
                                        else {
                                            targetView.btnState.Text = stateStr.TrimEnd(';');
                                        }
                                    }
                                    break;
                                case FunctionType.FloorHeating:
                                    {
                                        string on_off = GetKeyValue("on_off", dicList);
                                        string set_temp = GetKeyValue("set_temp", dicList);
                                        string mode = GetKeyValue("mode", dicList);
                                        if (on_off != "")
                                        {
                                            switch (on_off)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic) + ";";
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic) + ";";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (set_temp != "")
                                        {
                                            stateStr += set_temp + "℃;";
                                        }
                                        if (mode != "")
                                        {
                                            switch (mode)
                                            {
                                                case "day":
                                                    {
                                                        stateStr += Language.StringByID(StringId.dayMode)+";";
                                                    }
                                                    break;
                                                case "night":
                                                    {
                                                        stateStr += Language.StringByID(StringId.nightMode) + ";";
                                                    }
                                                    break;
                                                case "away":
                                                    {
                                                        stateStr += Language.StringByID(StringId.leaveMode) + ";";
                                                    }
                                                    break;
                                                case "normal":
                                                    {
                                                        stateStr += Language.StringByID(StringId.ordinaryMode) + ";";
                                                    }
                                                    break;
                                                case "timer":
                                                    {
                                                        stateStr += Language.StringByID(StringId.timeMode) + ";";
                                                    }
                                                    break;
                                            }
                                            switch (mode)
                                            {
                                                case "cool":
                                                    {
                                                        stateStr += Language.StringByID(StringId.coolLogic) + ";";
                                                    }
                                                    break;
                                                case "heat":
                                                    {
                                                        stateStr += Language.StringByID(StringId.heatingLogic) + ";";
                                                    }
                                                    break;
                                                case "auto":
                                                    {
                                                        stateStr += Language.StringByID(StringId.autoLogic) + ";";
                                                    }
                                                    break;
                                                case "dry":
                                                    {
                                                        stateStr += Language.StringByID(StringId.dehumidifyLogic) + ";";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (on_off != "" && on_off == "off")
                                        {
                                            targetView.btnState.Text =Language.StringByID(StringId.offLogic);
                                        }
                                        else
                                        {
                                            targetView.btnState.Text = stateStr.TrimEnd(';');
                                        }
                                    }
                                    break;
@@ -212,7 +533,7 @@
                            foreach (var dic in dicList)
                            {
                                string value = dic["value"];
                                targetView.btnText.Text =value;
                                targetView.btnText.Text = value;
                            }
                        }
                        break;
@@ -225,17 +546,15 @@
                    int indexVulae = int.Parse(targetView.btnClick.Tag.ToString());
                    //标记编辑状态
                    bool edit = true;
                    //表示是目标
                    string if_type = LogicMethod.target_if;
                    switch (button.Name)
                    {
                        case "1":
                            {
                                //用sid找到设备;
                                var device = LogicMethod.GetDevice(outputTarget.sid);
                                DeviceFunList deviceFunList = new DeviceFunList();
                                TargetDeviceFunList deviceFunList = new TargetDeviceFunList();
                                MainPage.BasePageView.AddChidren(deviceFunList);
                                deviceFunList.Show(device, indexVulae, edit, if_type);
                                deviceFunList.Show(device, indexVulae, edit);
                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                            }
                            break;
@@ -250,13 +569,40 @@
                                AddTarget addTarget = new AddTarget();
                                addTarget.Delayed(fLayout, edit, indexVulae);
                            }
                            break;
                    }
                };
                ///删除控件
                targetView.btnDel.MouseUpEventHandler += (sender, e) =>
                {
                    Logic.currlogic.output.Remove(outputTarget);
                    targetView.frameLayout.RemoveFromParent();
                };
            }
        }
        /// <summary>
        /// 获取value键值
        /// </summary>
        /// <param name="keyValue"></param>
        /// <param name="dicList"></param>
        /// <returns></returns>
        private static string GetKeyValue(string keyValue, List<Dictionary<string, string>> dicList)
        {
            string valueStr = "";
            foreach (var dic in dicList)
            {
                if (dic["key"] == keyValue)
                {
                    valueStr = dic["value"];
                    break;
                }
            }
            return valueStr;
        }
    }
}