wxr
2021-07-01 b409ece9569247d7e7b44fc15e8a02556ca05a57
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -17,12 +17,6 @@
            for (int i = 0; i < Logic.currlogic.input.Count; i++)
            {
                Input inputCondition = Logic.currlogic.input[i];
                if (inputCondition == null)
                {
                    //防止有的空对象;
                    //正常情况下不会该现象;
                    continue;
                }
                ///各种条件的View
                LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView();
                inputView.FLayoutView(viewLayout);
@@ -56,7 +50,7 @@
                                            {
                                                strtext = Language.StringByID(StringId.sunrise);
                                                statetext = Language.StringByID(StringId.advanced);
                                            }
                                            break;
                                        case "before_sunset":
@@ -64,8 +58,9 @@
                                                strtext = Language.StringByID(StringId.sunset);
                                                statetext = Language.StringByID(StringId.advanced);
                                            } break;
                                            }
                                            break;
                                        case "before_noon":
                                            {
                                                strtext = Language.StringByID(StringId.at);
@@ -76,12 +71,14 @@
                                            {
                                                strtext = Language.StringByID(StringId.sunrise);
                                                statetext = Language.StringByID(StringId.delayLogic);
                                            } break;
                                            }
                                            break;
                                        case "after_sunset":
                                            {
                                                strtext = Language.StringByID(StringId.sunset);
                                                statetext = Language.StringByID(StringId.delayLogic);
                                            } break;
                                            }
                                            break;
                                        case "after_noon":
                                            {
                                                strtext = Language.StringByID(StringId.at);
@@ -167,6 +164,156 @@
                                        }
                                    }
                                    break;
                                //传感器
                                case SPK.SensorSmoke:
                                case SPK.SensorGas:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "alarm")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.xieluo);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuxieluo);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorWater:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "alarm")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.luoshui);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuluoshui);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorDryContact:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "on")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.onLogic);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorShanLan:
                                case SPK.SensorDuiShe:
                                case SPK.SensorPir:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "true")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.youren);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorDoorWindow:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "open")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.bihe);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensoruUtrasonic:
                                    {
                                        string str = "";
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            switch (dic["key"])
                                            {
                                                case "status":
                                                    {
                                                        if (value == "true")
                                                        {
                                                            str+= Language.StringByID(StringId.youren)+";";
                                                        }
                                                        else
                                                        {
                                                            str += Language.StringByID(StringId.wuren) + ";";
                                                        }
                                                    }
                                                    break;
                                                case "dismantle":
                                                    {
                                                        if (value == "true")
                                                        {
                                                            str += Language.StringByID(StringId.zaixian);
                                                        }
                                                        else
                                                        {
                                                            str += Language.StringByID(StringId.buzaixian);
                                                        }
                                                    }
                                                    break;
                                            }
                                        }
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                                case SPK.SenesorMegahealth:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "fall")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.diedao);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
                                            }
                                        }
                                    }
                                    break;
                            }
                        }
                        break;
@@ -186,10 +333,12 @@
                                    case "outdoor_temp":
                                        {
                                            strvalue = value;
                                            if (comparator==">") {
                                            if (comparator == ">")
                                            {
                                                strtext = Language.StringByID(StringId.wendugaoyu);
                                            }
                                            else  if(comparator == "<"){
                                            else if (comparator == "<")
                                            {
                                                strtext = Language.StringByID(StringId.wendudiyu);
                                            }
@@ -218,7 +367,7 @@
                                }
                            }
                            inputView.btnText.Text = strtext;
                            inputView.btnState.Text = strvalue;
@@ -251,9 +400,43 @@
                                            strtext = Language.StringByID(StringId.rain);
                                        }
                                        break;
                                }
                                inputView.btnText.TextID =StringId.tianqibianhua;
                                inputView.btnText.TextID = StringId.tianqibianhua;
                                inputView.btnState.Text = strtext;
                            }
                        }
                        break;
                    case "9":
                        {
                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
                            foreach (var dic in dicList)
                            {
                                string strtext = "";
                                string value = dic["value"];
                                switch (value)
                                {
                                    case "excellent":
                                        {
                                            strtext = Language.StringByID(StringId.kongqiyou);
                                        }
                                        break;
                                    case "good":
                                        {
                                            strtext = Language.StringByID(StringId.kongqiliang);
                                        }
                                        break;
                                    case "poor":
                                        {
                                            strtext = Language.StringByID(StringId.kongqicha);
                                        }
                                        break;
                                }
                                inputView.btnText.TextID = StringId.kongqizhiliang;
                                inputView.btnState.Text = strtext;
                            }
                        }
@@ -363,12 +546,12 @@
                                            {
                                                if (comparator == ">")
                                                {
                                                    intValue=StringId.wendugaoyu;
                                                    intValue = StringId.wendugaoyu;
                                                }
                                                else if (comparator == "<")
                                                {
                                                    intValue = StringId.wendudiyu;
                                                }
                                            }
@@ -416,6 +599,15 @@
                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                            }
                            break;
                        case "9":
                            {
                                AirQuality airQuality = new AirQuality();
                                MainPage.BasePageView.AddChidren(airQuality);
                                airQuality.Show();
                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                            }
                            break;
                    }
                };
                ///删除控件
@@ -434,16 +626,10 @@
        /// <param name="viewLayout">上下滑动控件</param>
        public static void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
        {
            for (int i = 0; i < Logic.currlogic.output.Count; i++)
            {
                Output outputTarget = Logic.currlogic.output[i];
                if (outputTarget == null)
                {
                    //防止有的空对象;
                    //正常情况下不会该现象;
                    continue;
                }
                ///各种条件的View
                LogicView.AddOutputInputView targetView = new LogicView.AddOutputInputView();
                targetView.FLayoutView(viewLayout);
@@ -453,6 +639,8 @@
                targetView.btnClick.Tag = outputTarget.sid;
                ///条件状态数组
                List<Dictionary<string, string>> dicList = outputTarget.status as List<Dictionary<string, string>>;
                //显示状态值
                string stateStr = "";
                //显示输出条件各种类型状态
                switch (outputTarget.target_type)
                {
@@ -466,8 +654,7 @@
                            targetView.btnText.Text = device.name;
                            //改变设备名称显示控件宽度
                            targetView.btnText.Width = Application.GetRealWidth(80);
                            //第一个变量显示状态值
                            string stateStr = "";
                            //区别不同设备,显示不同设备状态
                            switch (device.spk)
                            {
@@ -487,7 +674,6 @@
                                                stateStr = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                        targetView.btnState.Text = stateStr;
                                    }
                                    break;
                                case SPK.LightRGB:
@@ -513,7 +699,7 @@
                                        {
                                            stateStr = brightness + "%";
                                        }
                                        targetView.btnState.Text = stateStr;
                                    }
                                    break;
                                case SPK.CurtainSwitch:
@@ -542,20 +728,21 @@
                                                    break;
                                            }
                                        }
                                        targetView.btnState.Text = stateStr;
                                    }
                                    break;
                                case SPK.AcStandard: {
                                case SPK.AcStandard:
                                    {
                                        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 != "") {
                                        if (on_off != "")
                                        {
                                            switch (on_off)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic)+",";
                                                        stateStr = Language.StringByID(StringId.onLogic) + ",";
                                                    }
                                                    break;
                                                case "off":
@@ -563,7 +750,7 @@
                                                        stateStr = Language.StringByID(StringId.offLogic) + ",";
                                                    }
                                                    break;
                                            }
                                        }
@@ -580,7 +767,7 @@
                                            {
                                                case "cool":
                                                    {
                                                        stateStr += Language.StringByID(StringId.coolLogic)+",";
                                                        stateStr += Language.StringByID(StringId.coolLogic) + ",";
                                                    }
                                                    break;
                                                case "heat":
@@ -609,7 +796,7 @@
                                            {
                                                case "high":
                                                    {
                                                        stateStr += Language.StringByID(StringId.HighWindSpeed)+",";
                                                        stateStr += Language.StringByID(StringId.HighWindSpeed) + ",";
                                                    }
                                                    break;
                                                case "medium":
@@ -632,10 +819,11 @@
                                        }
                                        if (on_off != "" && on_off == "off")
                                        {
                                            targetView.btnState.Text = Language.StringByID(StringId.offLogic);
                                            stateStr = Language.StringByID(StringId.offLogic);
                                        }
                                        else {
                                            targetView.btnState.Text = stateStr.TrimEnd(',');
                                        else
                                        {
                                            stateStr = stateStr.TrimEnd(',');
                                        }
@@ -675,7 +863,7 @@
                                            {
                                                case "day":
                                                    {
                                                        stateStr += Language.StringByID(StringId.dayMode)+",";
                                                        stateStr += Language.StringByID(StringId.dayMode) + ",";
                                                    }
                                                    break;
                                                case "night":
@@ -729,11 +917,11 @@
                                        }
                                        if (on_off != "" && on_off == "off")
                                        {
                                            targetView.btnState.Text =Language.StringByID(StringId.offLogic);
                                            stateStr = Language.StringByID(StringId.offLogic);
                                        }
                                        else
                                        {
                                            targetView.btnState.Text = stateStr.TrimEnd(',');
                                            stateStr = stateStr.TrimEnd(',');
                                        }
                                    }
@@ -748,26 +936,35 @@
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
                            targetView.btnNextIcon.Visible = false;
                            //显示场景名称
                            targetView.btnText.Text = scene.name;
                            stateStr = scene.name;
                        }
                        break;
                    case "3":
                        {
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
                            foreach (var dic in dicList)
                            {
                                string value = dic["value"];
                                targetView.btnText.Text = value;
                                stateStr = value;
                            }
                        }
                        break;
                }
                if (outputTarget.target_type == "1")
                {
                    targetView.btnState.Text =new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
                }
                else
                {
                    targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay)+ stateStr;
                }
                //再次编辑条件状态点击事件
                targetView.btnClick.MouseUpEventHandler += (sen, e) =>
                {
                    Button button = (Button)sen;
                    //找到当前编辑的索引
                    int indexVulae =0;
                    int indexVulae = 0;
                    for (int index = 0; index < Logic.currlogic.output.Count; index++)
                    {
                        Output target = Logic.currlogic.output[index];
@@ -808,6 +1005,25 @@
                            }
                            break;
                    }
                };
                //延时点击事件
                targetView.btnDelay.MouseUpEventHandler += (sen, e) =>
                {
                    InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod();
                    inpOrOutLogicMethod.Delayed(thisView, outputTarget, (value) =>
                    {
                        outputTarget.delay = value.ToString();
                        if (outputTarget.target_type == "1")
                        {
                            targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
                        }
                        else
                        {
                            targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
                        }
                    });
                };
                ///删除控件
                targetView.btnDel.MouseUpEventHandler += (sender, e) =>
@@ -1076,6 +1292,144 @@
                    }
                    break;
                case SPK.SensorGas:
                case SPK.SensorSmoke:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "alarm")
                            {
                                button1.Text = Language.StringByID(StringId.xieluo);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuxieluo);
                            }
                        }
                    }
                    break;
                case SPK.SensorWater:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "alarm")
                            {
                                button1.Text = Language.StringByID(StringId.luoshui);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuluoshui);
                            }
                        }
                    }
                    break;
                case SPK.SensorDryContact:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "on")
                            {
                                button1.Text = Language.StringByID(StringId.onLogic);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.offLogic);
                            }
                        }
                    }
                    break;
                case SPK.SensorShanLan:
                case SPK.SensorDuiShe:
                case SPK.SensorPir:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "true")
                            {
                                button1.Text = Language.StringByID(StringId.youren);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuren);
                            }
                        }
                    }
                    break;
                case SPK.SensorDoorWindow:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "open")
                            {
                                button1.Text = Language.StringByID(StringId.kaiqi);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.bihe);
                            }
                        }
                    }
                    break;
                case SPK.SensoruUtrasonic:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (dic["key"])
                            {
                                case "status":
                                    {
                                        if (value == "true")
                                        {
                                            button1.Text = Language.StringByID(StringId.youren);
                                        }
                                        else
                                        {
                                            button1.Text = Language.StringByID(StringId.wuren);
                                        }
                                    }
                                    break;
                                case "dismantle":
                                    {
                                        if (value == "true")
                                        {
                                            button1.Text = Language.StringByID(StringId.zaixian);
                                        }
                                        else
                                        {
                                            button1.Text = Language.StringByID(StringId.buzaixian);
                                        }
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                case SPK.SenesorMegahealth:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "fall")
                            {
                                button1.Text = Language.StringByID(StringId.diedao);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuren);
                            }
                        }
                    }
                    break;
            }
        }
        /// <summary>
@@ -1258,5 +1612,104 @@
            catch { }
            return name;
        }
        /// <summary>
        /// 延时时间方法
        /// </summary>
        /// <param name="fLayout">在哪个界面显示</param>
        /// <param name="edit">(true=编辑;false=新建)</param>
        /// <param name="index">编辑条件的索引</param>
        private void Delayed(FrameLayout thisFLayout, Output output,Action<int>action)
        {
            FrameLayout fLayout = new FrameLayout
            {
                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
            };
            thisFLayout.AddChidren(fLayout);
            LogicView.TimeView timePointView = new LogicView.TimeView();
            timePointView.FLayoutView(fLayout);
            EventHandler<MouseEventArgs> RemovefLayout = (sender, e1) =>
            {
                //移除fLayout界面
                fLayout.RemoveFromParent();
            };
            //取消点击事件
            timePointView.btnCancel.MouseUpEventHandler += RemovefLayout;
            //加载数据界面的设置方法(列表互不联动)
            timePointView.mUIPickerView.setNPicker(timePointView.GetmStringList(), timePointView.GetsStringList(), null);
            //默认初始选中状态
            timePointView.mUIPickerView.setCurrentItems(0, 5, 0);
            //定义一个局部变量记录选中时间
            int timepoint = 5;
            if (output.delay != "0")
            {
                int intValue = int.Parse(output.delay);
                var m = intValue / 60;
                var s = intValue % 60;
                string timeValue = m.ToString() + ":" + s.ToString();
                int mIndex = timePointView.GetValueIndex(timeValue, 0, 1, timePointView.GetmIntList());
                int sIndex = timePointView.GetValueIndex(timeValue, 1, 0, timePointView.GetmIntList());
                //更新初始状态
                timePointView.mUIPickerView.setCurrentItems(mIndex, sIndex, 0);
                timepoint = intValue;
            }
            //选中时间回调方法,时间变化一次回调一次
            timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
            {
                string minuet = timePointView.GethStringList0()[index1].Split(' ')[0];
                string second = timePointView.GetmStringList()[index2].Split(' ')[0];
                int minuetIntValue = int.Parse(minuet);
                int secondIntValue = int.Parse(second);
                timepoint = minuetIntValue*60+secondIntValue;
            };
            //确定点击事件
            timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) =>
            {
                if (timepoint==0)
                {
                    //提示
                    return;
                }
                fLayout.RemoveFromParent();
                action(timepoint);
            };
        }
        /// <summary>
        /// 获取时间文本描述
        /// </summary>
        /// <param name="strTimeValue">时间值(单位s秒)</param>
        /// <returns></returns>
        private string GetTimeText(string strTimeValue)
        {
            var timeValue = int.Parse(strTimeValue);
            string state = "";
            var minutes = timeValue / 60;
            var seconds = timeValue % 60;
            if (minutes != 0)
            {
                if (seconds == 0)
                {
                    state = minutes.ToString() + Language.StringByID(StringId.minute);
                }
                else
                {
                    state = minutes.ToString() + Language.StringByID(StringId.minute) + seconds.ToString() + Language.StringByID(StringId.s);
                }
            }
            else
            {
                if (seconds != 0)
                {
                    state = seconds.ToString() + Language.StringByID(StringId.s);
                }
            }
            return state;
        }
    }
}