From eda3fb873e59544ff36301b51e05aef64f87b0f9 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期五, 27 八月 2021 13:21:21 +0800
Subject: [PATCH] Merge branch 'newBranch1' of http://172.16.1.23:6688/r/~wxr/HDL_APP_Project into newBranch1

---
 HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs |  841 ++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 644 insertions(+), 197 deletions(-)

diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index 909a6ba..b9d0e37 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -1,6 +1,9 @@
-锘縰sing System;
+using System;
 using Shared;
 using System.Collections.Generic;
+using HDL_ON.Entity;
+
+
 namespace HDL_ON.UI.UI2.Intelligence.Automation
 {
     public class ConditionDeviceFunList : FrameLayout
@@ -17,10 +20,7 @@
         /// 瀹氫箟涓�涓彉閲忥紝璁板綍閫変腑鐘舵��
         /// </summary>
         private string selectedState = "unknown";
-        /// <summary>
-        /// 瀹氫箟涓�涓彉閲忥紝璁板綍閫変腑鐘舵�佽褰曞睘鎬�
-        /// </summary>
-        private string keyVlaue = "";
+
         public void Show(Entity.Function device, int index, bool edit)
         {
             #region 鐣岄潰甯冨眬
@@ -40,48 +40,323 @@
             };
             this.AddChidren(fLayout);
             #endregion
-            switch (device.functionType)
+            switch (device.spk)
             {
                 //寮�鍏崇伅鍏� light.Switch
-                case FunctionType.Dimmer:
-                case FunctionType.RGB:
-                case FunctionType.RGBW:
-                case FunctionType.CCT:
-                case FunctionType.Relay:
+                case SPK.LightDimming:
+                case SPK.LightRGB:
+                case SPK.LightRGBW:
+                case SPK.LightCCT:
+                case SPK.LightSwitch:
                 //绐楀笜
-                case FunctionType.Curtain:
-                case FunctionType.RollerCurtain:
-                case FunctionType.TrietexCurtain:
+                case SPK.CurtainSwitch:
+                case SPK.CurtainRoller:
+                case SPK.CurtainTrietex:
                 //绌鸿皟
-                case FunctionType.AC:
+                case SPK.AcStandard:
                 //鍦扮儹
-                case FunctionType.FloorHeating:
+                case SPK.FloorHeatStandard:
                     {
-                        LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView();
-                        lightSwitchView.btnText.TextID = StringId.switchLogic;
-                        lightSwitchView.btnState.Text = "";
-                        fLayout.AddChidren(lightSwitchView.FLayoutView());
-                        lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
+
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.switchLogic;
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
                         {
-                            FrameLayout frame = new FrameLayout
-                            {
-                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
-                            };
-                            this.AddChidren(frame);
-                            SwitchViewMethod(frame, device, lightSwitchView.btnState, 2);
+                            DeviceView(device, view.btnState, StringId.onLogic, StringId.offLogic);
                         };
                         if (edit)
                         {
-                            GetEditState(device, edit, index, lightSwitchView.btnState, null, null, null);
+                            GetEditState(device, index, view.btnState, null, null, null);
+                        }
+                    }
+                    break;
+                //姘存蹈浼犳劅鍣�
+                case SPK.SensorWater:
+                    {
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.luoshuiandwuluoshui;
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.luoshui, StringId.wuluoshui);
+                        };
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, null, null, null);
                         }
 
                     }
                     break;
-           
-              
-               
-               
-          
+                //鐑熼浘浼犳劅鍣�
+                case SPK.SensorSmoke:
+                //鐕冩皵浼犳劅鍣�
+                case SPK.SensorGas:
+                    {
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.xieluoandwuxieluo;
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.xieluo, StringId.wuxieluo);
+                        };
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, null, null, null);
+                        }
+                    }
+                    break;
+                //骞叉帴鐐�
+                case SPK.SensorDryContact:
+                    {
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.switchLogic;
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.onLogic, StringId.offLogic);
+                        };
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, null, null, null);
+                        }
+
+                    }
+                    break;
+                //绾㈠鐝婃爮浼犳劅鍣�
+                case SPK.SensorShanLan:
+                //绾㈠瀵瑰皠浼犳劅鍣�
+                case SPK.SensorDuiShe:
+                //绾㈠绉诲姩浼犳劅鍣�
+                case SPK.SensorPir:
+                    {
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.yourenandwuren;
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.youren, StringId.wuren);
+                        };
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, null, null, null);
+                        }
+                    }
+                    break;
+                //闂ㄧ獥浼犳劅鍣�
+                case SPK.SensorDoorWindow:
+                    {
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.kaiqiandbihe;
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.kaiqi, StringId.bihe);
+                        };
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, null, null, null);
+                        }
+                    }
+                    break;
+                //瓒呭0娉紶鎰熷櫒
+                case SPK.SensorUtrasonic:
+                    {
+
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.yourenandwuren;
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.youren, StringId.wuren);
+                        };
+                        LogicView.FunTypeView view1 = new LogicView.FunTypeView();
+                        view1.frameLayout.Y = view.frameLayout.Bottom;
+                        view1.btnText.TextID = StringId.fangchaigongneng;
+                        fLayout.AddChidren(view1.FLayoutView());
+                        view1.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view1.btnState, StringId.zaixian, StringId.buzaixian);
+                        };
+
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, view1.btnState, null, null);
+                        }
+                    }
+                    break;
+                //姣背娉紶鎰熷櫒
+                case SPK.SenesorMegahealth:
+                    {
+                        LogicView.FunTypeView view = new LogicView.FunTypeView();
+                        view.btnText.TextID = StringId.mubiaozhuangtai;//鐩爣鐘舵��
+                        fLayout.AddChidren(view.FLayoutView());
+                        view.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            DeviceView(device, view.btnState, StringId.wuren, StringId.diedao);
+                        };
+                        if (edit)
+                        {
+                            GetEditState(device, index, view.btnState, null, null, null);
+                        }
+                    }
+                    break;
+                //鐜妫�娴嬩紶鎰熷櫒
+                case SPK.SensorEnvironment:
+                case SPK.SensorEnvironment2:
+                case SPK.SensorEnvironment3:
+                    {
+                        #region 鐣岄潰
+                        ///娓╁害
+                        LogicView.FunTypeView wenuView = new LogicView.FunTypeView();
+                        wenuView.btnText.TextID = StringId.wendu;
+                        fLayout.AddChidren(wenuView.FLayoutView());
+                        ///婀垮害
+                        LogicView.FunTypeView shiduView = new LogicView.FunTypeView();
+                        shiduView.frameLayout.Y = wenuView.frameLayout.Bottom;
+                        shiduView.btnText.TextID = StringId.shidu;
+                        fLayout.AddChidren(shiduView.FLayoutView());
+                        ///pm2.5
+                        LogicView.FunTypeView pm25View = new LogicView.FunTypeView();
+                        pm25View.frameLayout.Y = shiduView.frameLayout.Bottom;
+                        pm25View.btnText.TextID = StringId.pm25;
+                        fLayout.AddChidren(pm25View.FLayoutView());
+                        ///co2
+                        LogicView.FunTypeView co2View = new LogicView.FunTypeView();
+                        co2View.frameLayout.Y = pm25View.frameLayout.Bottom;
+                        co2View.btnText.TextID = StringId.co2;
+                        fLayout.AddChidren(co2View.FLayoutView());
+                        ///tvoc
+                        LogicView.FunTypeView tvocView = new LogicView.FunTypeView();
+                        tvocView.frameLayout.Y = co2View.frameLayout.Bottom;
+                        tvocView.btnText.TextID = StringId.tvoc;
+                        if (SPK.SensorEnvironment3 != device.spk)
+                        {
+                            fLayout.AddChidren(tvocView.FLayoutView());
+                        }
+                        
+                        #endregion
+                        #region 鐐瑰嚮浜嬩欢
+                        ///娓╁害鐐瑰嚮浜嬩欢
+                        wenuView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            new PublicInterface { }.ViewZuHe(this, StringId.wendugaoyu, StringId.wendudiyu, (intText, view) =>
+                            {
+                                InputBoxAction(device,intText, index, edit);
+                            });
+                        };
+                        ///婀垮害鐐瑰嚮浜嬩欢
+                        shiduView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            new PublicInterface { }.ViewZuHe(this, StringId.shidugaoyu, StringId.shidudiyu, (intText, view) =>
+                            {
+                                InputBoxAction(device,intText, index, edit);
+                            });
+
+                        };
+                        ///pm2.5鐐瑰嚮浜嬩欢
+                        pm25View.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            PmCo2TvocAction(this,device, "pm25",StringId.pm25, index,edit);
+                        };
+                        ///co2鐐瑰嚮浜嬩欢
+                        co2View.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            PmCo2TvocAction(this,device, "co2", StringId.co2, index, edit);
+                        };
+                        ///tvoc鐐瑰嚮浜嬩欢
+                        tvocView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            PmCo2TvocAction(this,device, "tvoc", StringId.tvoc, index, edit);
+
+                        };
+                        #endregion
+                    }
+                    break;
+                    //娓╁害浼犳劅鍣�
+                case SPK.SensorTemperature:
+                    {
+                        ///娓╁害
+                        LogicView.FunTypeView wenuView = new LogicView.FunTypeView();
+                        wenuView.btnText.TextID = StringId.wendu;
+                        fLayout.AddChidren(wenuView.FLayoutView());
+
+                        ///娓╁害鐐瑰嚮浜嬩欢
+                        wenuView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            new PublicInterface { }.ViewZuHe(this, StringId.wendugaoyu, StringId.wendudiyu, (intText, view) =>
+                            {
+                                InputBoxAction(device, intText, index, edit);
+                            });
+                        };
+                    }
+                    break;
+                //婀垮害浼犳劅鍣�
+                case SPK.SensorHumidity:
+                    {
+                        ///婀垮害
+                        LogicView.FunTypeView shiduView = new LogicView.FunTypeView();
+                        shiduView.btnText.TextID = StringId.shidu;
+                        fLayout.AddChidren(shiduView.FLayoutView());
+                        ///婀垮害鐐瑰嚮浜嬩欢
+                        shiduView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            new PublicInterface { }.ViewZuHe(this, StringId.shidugaoyu, StringId.shidudiyu, (intText, view) =>
+                            {
+                                InputBoxAction(device, intText, index, edit);
+                            });
+
+                        };
+                    }
+                    break;
+                //co2
+                case SPK.SensorCO2:
+                    {
+
+
+                        ///co2
+                        LogicView.FunTypeView co2View = new LogicView.FunTypeView();
+                        co2View.btnText.TextID = StringId.co2;
+                        fLayout.AddChidren(co2View.FLayoutView());
+
+                        ///co2鐐瑰嚮浜嬩欢
+                        co2View.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            PmCo2TvocAction(this, device, "co2", StringId.co2, index, edit);
+                        };
+                    }
+                    break;
+                //pm2.5
+                case SPK.SensorPm25:
+                    {
+                        ///pm2.5
+                        LogicView.FunTypeView pm25View = new LogicView.FunTypeView();
+                        pm25View.btnText.TextID = StringId.pm25;
+                        fLayout.AddChidren(pm25View.FLayoutView());
+
+                        ///pm2.5鐐瑰嚮浜嬩欢
+                        pm25View.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            PmCo2TvocAction(this, device, "pm25", StringId.pm25, index, edit);
+                        };
+                    }
+                    break;
+                //tvoc
+                case SPK.SensorTVOC:
+                    {
+                        ///tvoc
+                        LogicView.FunTypeView tvocView = new LogicView.FunTypeView();
+                        tvocView.btnText.TextID = StringId.tvoc;
+                        fLayout.AddChidren(tvocView.FLayoutView());
+
+                        ///tvoc鐐瑰嚮浜嬩欢
+                        tvocView.btnClick.MouseUpEventHandler += (sender, e) =>
+                        {
+                            PmCo2TvocAction(this, device, "tvoc", StringId.tvoc, index, edit);
+
+                        };
+                    }
+                    break;
             }
             #region  淇濆瓨
             ///淇濆瓨View
@@ -91,135 +366,330 @@
             this.AddChidren(saveView.FLayoutView());
             saveView.btnClick.MouseUpEventHandler += (sen, e) =>
             {
-
-
-                if (selectedState != "unknown")
-                {
-                    Input inputDevice = new Input();
-                    inputDevice.condition_type = "3";
-                    inputDevice.sid = device.sid;
-                    inputDevice.condition = dicSateteList;
-                    if (edit)
-                    {
-                        //绉婚櫎鏃ф暟鎹�
-                        Logic.currlogic.input.RemoveAt(index);
-                        //鏂版暟鎹彃鍏ユ棫鏁版嵁鐨勪綅缃�;
-                        Logic.currlogic.input.Insert(index, inputDevice);
-                    }
-                    else
-                    {
-                        //娣诲姞涓�涓潯浠�
-                        AddCondition(inputDevice);
-                    }
-                }
-                else
-                {
-                    if (!edit)
-                    {
-                        //鎻愮ず鐢ㄦ埛
-                        return;
-                    }
-                    this.RemoveFromParent();
-                    return;
-                }
-                LogicMethod.RemoveAllView();
-                AddLogic addLogic = new AddLogic();
-                MainPage.BasePageView.AddChidren(addLogic);
-                addLogic.Show();
-                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+                Save(device,index, edit);
             };
 
             #endregion
 
         }
         /// <summary>
-        /// 绉婚櫎鎺т欢
+        /// 淇濆瓨杈撳叆鏉′欢
         /// </summary>
-        /// <param name="frame"></param>
-        private void RemView(FrameLayout frame)
+        /// <param name="index">绱㈠紩鍊�</param>
+        /// <param name="edit"></param>
+        private void Save(Entity.Function device,int index, bool edit)
         {
-            frame.RemoveFromParent();
+            
+            if (selectedState != "unknown")
+            {
+                Input inputDevice = new Input();
+                inputDevice.condition_type = "3";
+                inputDevice.sid = device.sid;
+                inputDevice.condition = dicSateteList;
+                if (edit)
+                {
+                    //绉婚櫎鏃ф暟鎹�
+                    Logic.currlogic.input.RemoveAt(index);
+                    //鏂版暟鎹彃鍏ユ棫鏁版嵁鐨勪綅缃�;
+                    Logic.currlogic.input.Insert(index, inputDevice);
+                }
+                else
+                {
+                    //娣诲姞涓�涓潯浠�
+                    AddCondition(inputDevice);
+                }
+            }
+            else
+            {
+                if (!edit)
+                {
+                    //鎻愮ず鐢ㄦ埛
+                    return;
+                }
+                this.RemoveFromParent();
+                return;
+            }
+            LogicMethod.CurrLogicMethod.RemoveAllView();
+            if (MainView.IsGatewayType)
+            { //A缃戝叧
+                var addLogic = new AddLogic();
+                MainPage.BasePageView.AddChidren(addLogic);
+                addLogic.Show();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            }
+            else
+            {
+                //涓�绔彛缃戝叧
+                var onePortAutomation = new OnePortAutomation();
+                MainPage.BasePageView.AddChidren(onePortAutomation);
+                onePortAutomation.Show();
+                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+            }
+
+        }
+        /// <summary>
+        /// 璁惧閫夋嫨鏉′欢鐣岄潰
+        /// </summary>
+        /// <param name="device">璁惧</param>
+        /// <param name="button">閫変腑鐘舵�佹樉绀烘枃鏈珺tn鎺т欢</param>
+        /// <param name="btnText1">灞炴�х姸鎬佸�兼枃鏈�1</param>
+        /// <param name="btnText2">灞炴�х姸鎬佸�兼枃鏈�2</param>
+        private void DeviceView(Entity.Function device, Button button, int btnText1, int btnText2)
+        {
+            FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence };
+            this.AddChidren(frame);
+            LogicView.SwitchView switchView = new LogicView.SwitchView();
+            switchView.FLayoutView(frame, btnText1, btnText2, button.Text, (intValue) =>
+            {
+                //璁惧灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�;
+                string keyVlaue = "on_off";
+                string value = "";
+                switch (device.spk)
+                {
+                    //浼犳劅鍣�
+                    case SPK.SensorWater:
+                    case SPK.SensorSmoke:
+                    case SPK.SensorGas:
+                    case SPK.SensorDryContact:
+                    case SPK.SensorShanLan:
+                    case SPK.SensorDuiShe:
+                    case SPK.SensorPir:
+                    case SPK.SensorDoorWindow:
+                    case SPK.SensorUtrasonic:
+                        {
+                            keyVlaue = "status";
+                        }
+                        break;
+                    case SPK.SenesorMegahealth:
+                        {
+                            keyVlaue = "action_state";
+                        }
+                        break;
+
+                }
+                switch (intValue)
+                {
+                    case StringId.xieluo:
+                    case StringId.luoshui:
+                        {
+                            value = "alarm";
+                        }
+                        break;
+                    case StringId.wuxieluo:
+                    case StringId.wuluoshui:
+                        {
+                            value = "normal";
+                        }
+                        break;
+                    case StringId.onLogic:
+                        {
+                            value = "on";
+                        }
+                        break;
+                    case StringId.offLogic:
+                        {
+                            value = "off";
+                        }
+                        break;
+                    case StringId.youren:
+                        {
+                            value = "true";
+                        }
+                        break;
+                    case StringId.wuren:
+                        {
+                            if (device.spk == SPK.SenesorMegahealth)
+                            {
+                                value = "uninhabited";
+                            }
+                            else
+                            {
+                                value = "false";
+                            }
+                        }
+                        break;
+                    case StringId.kaiqi:
+                        {
+                            value = "open";
+                        }
+                        break;
+                    case StringId.bihe:
+                        {
+                            value = "close";
+                        }
+                        break;
+                    case StringId.zaixian:
+                        {
+                            keyVlaue = "dismantle";
+                            value = "true";
+                        }; break;
+                    case StringId.buzaixian:
+                        {
+                            keyVlaue = "dismantle";
+                            value = "false";
+                        }; break;
+                    case StringId.diedao:
+                        {
+                            value = "fall";
+                        }; break;
+                }
+                //鏄剧ず鏂囨湰
+                button.TextID = intValue;
+                selectedState = device.spk + "_" + value;
+                AddDictionary(keyVlaue, value, "string");
+
+            });
+
+        }
+        /// <summary>
+        /// 娓╁害,婀垮害寮规璁剧疆鍊�
+        /// </summary>
+        /// <param name="textInt">鏂囨湰</param>
+        /// <param name="stateValue">缂栬緫涔嬪墠鐨勭姸鎬佸��,榛樿涓�20</param>
+        public void InputBoxAction(Entity.Function device, int textInt, int index, bool edit, string stateValue = "20")
+        {
+            if (edit)
+            {
+                Input inputs = Logic.currlogic.input[index];
+                //娓呴櫎涔嬪墠鏃ф暟鎹�
+                dicSateteList.Clear();
+                if (inputs.condition.Count != 0)
+                {
+                    //鏈夋暟鎹噸鏂拌祴鍊�
+                    dicSateteList = inputs.condition;
+                }
+            }
+            new LogicView.TipPopView { }.InputBox(textInt, stateValue, (value) =>
+            {
+                string keyValue = "20";
+                string data_type = "integer";
+                string comparator = "=";
+                switch (textInt)
+                {
+                    case StringId.wendugaoyu:
+                        {
+                            keyValue = "temperature";
+                            comparator = ">";
+                            data_type = "float";
+                        }
+                        break;
+                    case StringId.wendudiyu:
+                        {
+                            keyValue = "temperature";
+                            comparator = "<";
+                            data_type = "float";
+                        }
+                        break;
+                    case StringId.shidugaoyu:
+                        {
+                            keyValue = "humidity";
+                            comparator = ">";
+                        }
+                        break;
+                    case StringId.shidudiyu:
+                        {
+                            keyValue = "humidity";
+                            comparator = "<";
+                        }
+                        break;
+                }
+                selectedState = device.spk + "_" + value;
+                AddDictionary(keyValue, value, data_type, comparator);
+                Save(device,index, edit);
+            });
+        }
+        /// PM2.5,Co2,Tvoc璁剧疆鍊�
+        /// </summary>
+        /// <param name="frame">褰撳墠鐣岄潰</param>
+        /// <param name="key">灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�<</param>
+        /// <param name="title">鏍囬鏂囨湰</param>
+        /// <param name="index"></param>
+        /// <param name="edit"></param>
+        /// <param name="stateValue">缂栬緫涔嬪墠鐨勭姸鎬佸��,榛樿涓�""</param>
+        public void PmCo2TvocAction(FrameLayout frame, Entity.Function device,string key,int title, int index, bool edit, string stateValue = "")
+        {
+            if (edit)
+            {
+                Input inputs = Logic.currlogic.input[index];
+                //娓呴櫎涔嬪墠鏃ф暟鎹�
+                dicSateteList.Clear();
+                if (inputs.condition.Count != 0)
+                {
+                    //鏈夋暟鎹噸鏂拌祴鍊�
+                    dicSateteList = inputs.condition;
+                }
+            }
+            PublicInterface view = new PublicInterface();  
+            var listStr = view.GetViewList(key); 
+            view.SingleSelectionShow(frame, listStr, Language.StringByID(title), view.GetString(key, stateValue)
+               , (text) =>
+               {
+                   var value = view.GetValue(key, text);
+                   selectedState = device.spk + "_"+ key;
+                   AddDictionary(key, value, "integer","in");
+                   Save(device,index, edit);
+               });
         }
         /// <summary>
         /// 鏄剧ず缂栬緫涔嬪墠鐨勮澶囩姸鎬�
         /// </summary>
         /// <param name="device">缂栬緫璁惧</param>
-        /// <param name="edit">缂栬緫鐘舵��</param>
         /// <param name="index">缂栬緫鏁版嵁鐨勭储寮�</param>
         /// <param name="button1">鏄剧ずBtn</param>
         /// <param name="button2">鏄剧ずBtn</param>
         /// <param name="button3">鏄剧ずBtn</param>
         /// <param name="button4">鏄剧ずBtn</param>
-        private void GetEditState(Entity.Function device, bool edit, int index, Button button1, Button button2, Button button3, Button button4)
+        private void GetEditState(Entity.Function device, int index, Button button1, Button button2, Button button3, Button button4)
         {
             Input inputs = Logic.currlogic.input[index];
-            var dicList = inputs.condition as List<Dictionary<string, string>>;
-            switch (device.functionType)
+            var dicList = inputs.condition;
+            //娓呴櫎涔嬪墠鏃ф暟鎹�
+            dicSateteList.Clear();
+            if (dicList.Count != 0)
             {
-                //寮�鍏崇伅鍏� light.Switch
-                case FunctionType.Dimmer:
-                case FunctionType.RGB:
-                case FunctionType.RGBW:
-                case FunctionType.CCT:
-                case FunctionType.Relay:
-                //绐楀笜
-                case FunctionType.Curtain:
-                case FunctionType.RollerCurtain:
-                case FunctionType.TrietexCurtain:
-                //绌鸿皟
-                case FunctionType.AC:
-                //鍦扮儹
-                case FunctionType.FloorHeating:
-                    {
-                        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;
-
+                //鏈夋暟鎹噸鏂拌祴鍊�
+                dicSateteList = dicList;
             }
+            InpOrOutLogicMethod.EditState(device, dicList, button1, button2, button3, button4);
         }
         /// <summary>
         /// 娣诲姞閫変腑鏁版嵁
         /// </summary>
-        /// <param name="dicList">瀛樺偍鏁版嵁鍒楄〃</param>
-        /// <param name="keyValue">璇嗗埆璁惧</param> 
-        /// <param name="dictionary">閫変腑鏁版嵁</param>
-        /// <returns></returns>
-        private void AddDictionaryData(List<Dictionary<string, string>> dicList, string keyValue, Dictionary<string, string> dictionary)
+        /// <param name="KeyValue">璁惧灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�</param>
+        /// <param name="selectedValue">鐘舵�佸��</param>
+        /// <param name="data_type">绫诲瀷</param>
+        /// <param name="comparator">姣旇緝鍏崇郴</param>
+        private void AddDictionary(string KeyValue, string selectedValue, string data_type, string comparator = "=")
         {
-            int indexValue = -1;
-            for (int i = 0; i < dicList.Count; i++)
-            {
-                var dic = dicList[i];
-                if (dic.ContainsValue(keyValue))
-                {
-                    //鍒ゆ柇鏄惁瀛樺湪
-                    indexValue = i;
-                    break;
-                }
-            }
-
+            //鏁版嵁灏佽
+            Dictionary<string, string> dic = new Dictionary<string, string>();
+            LogicMethod.CurrLogicMethod.dictionary(dic, "key", KeyValue);
+            LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", comparator);
+            LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", data_type);
+            LogicMethod.CurrLogicMethod.dictionary(dic, "value", selectedValue);
+            AddDictionaryList(dic);
+        }
+        /// <summary>
+        /// 鏇存柊鏁版嵁鍒楄〃
+        /// </summary>
+        /// <param name="keyValue">璁惧灞炴�у�硷紝浜戦泙涓婂畾涔夊ソ鐨�</param>
+        /// <param name="comparator">姣旇緝鍏崇郴</param>
+        /// <param name="dictionary">娣诲姞閫変腑鏁版嵁</param>
+        /// <returns></returns>
+        private void AddDictionaryList(Dictionary<string, string> dictionary)
+        {
+            var indexValue = IsContainsAll(dictionary, dicSateteList);
             if (indexValue != -1)
             {
                 //瀛樺湪绉婚櫎
-                dicList.RemoveAt(indexValue);
+                dicSateteList.RemoveAt(indexValue);
                 //閲嶆柊娣诲姞
-                dicList.Insert(indexValue, dictionary);
+                dicSateteList.Insert(indexValue, dictionary);
             }
             else
             {
                 //鏂版坊鍔�
-                dicList.Add(dictionary);
+                dicSateteList.Add(dictionary);
             }
 
         }
@@ -234,8 +704,13 @@
             {
                 if (Logic.currlogic.input[i].sid == input.sid)
                 {
-                    indexValue = i;
-                    break;
+                    //鏈変簺璁惧姣旇緝鐗规畩锛堜緥濡傦細娴锋灄浼犳劅鍣ㄨ繕鏄鍒ゆ柇灞炴�у�硷紝娓╂箍搴﹀睘鎬ц繕瑕佸垽鏂瘮杈冨叧绯伙紝鎵嶈兘纭鏄惁宸茬粡瀛樺湪璇ユ潯浠讹紝鍏朵粬璁惧鏉′欢鐩存帴鐢╯id鍒ゆ柇鍗冲彲锛�
+                    //鍔犱竴绾у垽鏂槸涓哄吋瀹圭壒娈婅澶�
+                    if (IsContainsAll(input.condition, Logic.currlogic.input[i].condition))
+                    {
+                        indexValue = i;
+                        break;
+                    }
                 }
             }
 
@@ -251,80 +726,52 @@
 
         }
         /// <summary>
-        /// 寮�鍏冲姛鑳藉睍寮�鐣岄潰
+        /// 鍒ゆ柇dictionaryB鍒楄〃鏄惁瀹屾暣鍖呭惈鍙︿竴涓猟ictionaryA
         /// </summary>
-        /// <param name="frame"></param>
-        /// <param name="device"></param>
-        /// <param name="button"></param>
-        /// <param name="len"></param>
-        public void SwitchViewMethod(FrameLayout frame, Entity.Function device, Button button, int len)
+        /// <param name="dictionaryA">瀵硅薄</param>
+        /// <param name="dictionaryB">鍒楄〃</param>
+        /// <returns>杩斿洖鍒楄〃鐨勭储寮曞��</returns>
+        public int IsContainsAll(Dictionary<string, string> dictionaryA, List<Dictionary<string, string>> dictionaryB)
         {
-
-            LogicView.SwitchView switchView = new LogicView.SwitchView();
-            switchView.FLayoutView(frame, len);
-
-            Button btnOn = new Button
+            int valueInt = -1;
+            for (int i = 0; i < dictionaryB.Count; i++)
             {
-                TextAlignment = TextAlignment.Center,
-                TextSize = LogicView.TextSize.text16,
-                TextColor = CSS.CSS_Color.textCancelColor,
-                TextID = StringId.onLogic,
-                Height = Application.GetRealHeight(44),
-                Width = Application.GetRealWidth(343),
-
-            };
-            switchView.frameLayout.AddChidren(btnOn);
-            Button btnLine = new Button
-            {
-                Height = 1,
-                BackgroundColor = CSS.CSS_Color.viewLine,
-                Y = btnOn.Bottom,
-            };
-            switchView.frameLayout.AddChidren(btnLine);
-            Button btnOff = new Button
-            {
-                Y = btnLine.Bottom,
-                TextAlignment = TextAlignment.Center,
-                TextSize = LogicView.TextSize.text16,
-                TextColor = CSS.CSS_Color.textCancelColor,
-                TextID = StringId.offLogic,
-                Height = Application.GetRealHeight(44),
-                Width = Application.GetRealWidth(343),
-            };
-            switchView.frameLayout.AddChidren(btnOff);
-
-            Dictionary<string, string> dic = new Dictionary<string, string>();
-            LogicMethod.dictionary(dic, "key", "on_off");
-            LogicMethod.dictionary(dic, "comparator", "=");
-            LogicMethod.dictionary(dic, "data_type", "string");
-            keyVlaue = "on_off";
-            btnOn.MouseUpEventHandler += (sender2, e2) =>
-            {
-                LogicMethod.dictionary(dic, "value", "on");
-                RemView(frame);
-                button.TextID = StringId.onLogic;
-                selectedState = device.functionType + "_on";
-                AddDictionaryData(dicSateteList, keyVlaue, dic);
-            };
-            btnOff.MouseUpEventHandler += (sender3, e3) =>
-            {
-                LogicMethod.dictionary(dic, "value", "off");
-                RemView(frame);
-                button.TextID = StringId.offLogic;
-                selectedState = device.functionType + "_off";
-                AddDictionaryData(dicSateteList, keyVlaue, dic);
-            };
-            if (button.Text != "")
-            {
-                if (button.Text == btnOn.Text)
+                var dic = dictionaryB[i];
+                string key = dic["key"];
+                string comparatorValue = dic["comparator"];
+                if (dictionaryA["key"] == key && dictionaryA["comparator"] == comparatorValue)
                 {
-                    btnOn.TextColor = CSS.CSS_Color.textConfirmColor;
-                }
-                else
-                {
-                    btnOff.TextColor = CSS.CSS_Color.textConfirmColor;
+                    //鍒ゆ柇鏄惁瀛樺湪
+                    valueInt = i;
+                    break;
                 }
             }
+            return valueInt;
         }
+        /// <summary>
+        /// 鍒ゆ柇dictionaryB鏄惁瀹屾暣鍖呭惈鍙︿竴涓猟ictionaryA
+        /// </summary>
+        /// <param name="dictionaryA"></param>
+        /// <param name="dictionaryB"></param>
+        /// <returns></returns>
+        public bool IsContainsAll(List<Dictionary<string, string>> dictionaryA, List<Dictionary<string, string>> dictionaryB)
+        {
+
+            for (int i = 0; i < dictionaryA.Count; i++)
+            {
+                var dic = dictionaryA[i];
+                string key = dic["key"];
+                string comparatorValue = dic["comparator"];
+                var list = dictionaryB.FindAll((dictionary) => dictionary["key"] == key && dictionary["comparator"] == comparatorValue);
+                if (list.Count> 0)
+                {
+                    return true;
+                }
+
+            }
+            return false;
+        }
+
+       
     }
 }

--
Gitblit v1.8.0