From a45fe56aeeac8f28a9891b83362954067c8166dc Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期五, 14 八月 2020 09:07:05 +0800
Subject: [PATCH] 请合并新代码,更改多功能面板绑定表重复问题

---
 ZigbeeApp/Shared/Phone/Device/Logic/LogicDveiceStatus.cs | 1232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,232 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/LogicDveiceStatus.cs b/ZigbeeApp/Shared/Phone/Device/Logic/LogicDveiceStatus.cs
new file mode 100755
index 0000000..f9b736b
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Device/Logic/LogicDveiceStatus.cs
@@ -0,0 +1,1232 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Shared.Common;
+using Shared.R;
+using ZigBee.Device;
+
+namespace Shared.Phone.Device.Logic
+{
+    public class LogicDveiceStatus
+    {
+     
+        /// <summary>
+        /// 鏄剧ず閫昏緫鏉′欢鐘舵�佺殑鏂规硶
+        /// </summary>
+        /// <param name="frameLayout">鐖舵帶浠�</param>
+        /// <param name="middle"></param>
+        /// <param name="ListConditions">閫昏緫鏉′欢鍒楄〃</param>
+        /// <param name="logicName">閫昏緫鍚嶇О</param>
+        public void Conditions(FrameLayout frameLayout,VerticalScrolViewLayout middle,List<Dictionary<string, string>> ListConditions,string logicName)
+        {
+            for (int i = 0; i < ListConditions.Count; i++)
+            {
+                if (i == (ListConditions.Count - 1))
+                {
+                    LogicView.AddDeviceView addflview = new LogicView.AddDeviceView();
+                    addflview.titleBtn.TextID = MyInternationalizationString.addconditions;
+                    middle.AddChidren(addflview.AddFl());
+                    addflview.clickBtn.MouseUpEventHandler += (sender, e) =>
+                    {
+                        Common.Logic.CurrentLogic.LogicName = logicName;
+                        if (Common.Logic.CurrentLogic.Conditions.Count == 1)
+                        {
+                            ConditionView(false, frameLayout);
+                        }
+                        else
+                        {
+                            var addLogicPage = new AddLogicPage();
+                            UserView.HomePage.Instance.AddChidren(addLogicPage);
+                            UserView.HomePage.Instance.PageIndex += 1;
+                            addLogicPage.Show();
+                        }
+                    };
+                }
+                else
+                {
+                    
+                    SelectedDeviceView selecteddevice = new SelectedDeviceView();
+                    selecteddevice.Show(middle);
+                    selecteddevice.stateRow.AddRightView(selecteddevice.edit);
+                    selecteddevice.stateRow.AddRightView(selecteddevice.del);
+
+                    var Type = int.Parse(ListConditions[i]["Type"]);
+                    var conditions = ListConditions[i];
+                    string name = "";
+                    string icon = "";
+                    string state = "";
+                    switch (Type)
+                    {
+                        /// (0:鏃堕棿鐐规潯浠�;1:璁惧鐘舵�佸彉鍖栨潯浠�;2:鍏朵粬閫昏緫鏉′欢;3:璁℃暟鍣ㄦ潯浠�;4:鍊掕鏃�;5:鏃堕棿娈垫潯浠�;6:瀹夐槻鏉′欢;7:鍦扮悊浣嶇疆)
+                        case 0:
+                            {
+
+                                //"0姝e父鏃堕棿鐐�","1鏃ュ嚭鏃堕棿","2鏃ヨ惤鏃堕棿","3姝e崍鏃堕棿"
+                                switch (int.Parse(conditions["DateType"]))
+                                {
+                                    case 0:
+                                        {
+                                            name = Language.StringByID(MyInternationalizationString.immediateexecution);
+                                            icon = "ZigeeLogic/timepoint.png";
+                                            string s = "";
+                                            s = conditions["StartMin"].Length < 2 ? "0" + conditions["StartMin"] : conditions["StartMin"];
+                                            state = conditions["StartHour"] + ":" + s;
+                                            
+                                        }
+                                        break;
+                                    case 1:
+                                        {
+                                            name = Language.StringByID(MyInternationalizationString.sunrise);
+                                            icon = "ZigeeLogic/sunrise.png";
+                                            if (int.Parse(conditions["AdjustTime"]) > 0)
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute);
+                                            }
+                                            else if (int.Parse(conditions["AdjustTime"]) < 0)
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute);
+                                            }
+                                            else
+                                            {
+                                                //timeTxet.Text = Language.StringByID(MyInternationalizationString.sunrise);
+                                            }
+                                        }
+                                        break;
+                                    case 2:
+                                        {
+                                            name = Language.StringByID(MyInternationalizationString.sunset);
+                                            icon = "ZigeeLogic/sunset.png";
+                                            if (int.Parse(conditions["AdjustTime"]) > 0)
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute);
+                                            }
+                                            else if (int.Parse(conditions["AdjustTime"]) < 0)
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute);
+                                            }
+                                            else
+                                            {
+                                                // timevalue.Text = Language.StringByID(MyInternationalizationString.sunset);
+                                            }
+                                        }
+                                        break;
+                                    case 3:
+                                        {
+                                            name = Language.StringByID(MyInternationalizationString.noon);
+                                            icon = "ZigeeLogic/noon.png";
+                                            if (int.Parse(conditions["AdjustTime"]) > 0)
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute);
+                                            }
+                                            else if (int.Parse(conditions["AdjustTime"]) < 0)
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute);
+                                            }
+                                            else
+                                            {
+                                                // timeTxet.Text = Language.StringByID(MyInternationalizationString.noon);
+                                            }
+                                        }
+                                        break;
+                                }
+                          
+                            }
+                            break;
+                        case 5:
+                            {
+                                icon = "ZigeeLogic/timeparagraph.png";
+                                string s1 = "", s2 = "";
+                                s1 = conditions["StartMin"].Length < 2 ? "0" + conditions["StartMin"] : conditions["StartMin"];
+                                s2 = conditions["StopMin"].Length < 2 ? "0" + conditions["StopMin"] : conditions["StopMin"];
+                                ///鏄剧ず鏃堕棿
+                                name = conditions["StartHour"] + ":" + s1 + "-" + conditions["StopHour"] + ":" + s2;
+                                state =Language.StringByID(MyInternationalizationString.timeframe);
+                            }
+                            break;
+                        case 1:
+                            {
+                                var deviceinof = Method.GetCommonDevice(conditions["MacAddr"], conditions["Epoint"]);
+                                name = LocalDevice.Current.GetDeviceEpointName(deviceinof);
+                                selecteddevice.regionNameBtn.Visible = true;
+                                Method.RoomNmae(selecteddevice.regionNameBtn, deviceinof);
+
+                                switch (deviceinof.Type)
+                                {
+                                    case DeviceType.OnOffOutput:
+                                        {
+                                            icon = "ZigeeLogic/light.png";
+                                            if (conditions["AttriButeId"] == "0")
+                                            {
+                                                if (conditions["AttriButeData1"] == "1")
+                                                {
+                                                    state = Language.StringByID(MyInternationalizationString.open);
+                                                }
+                                                else
+                                                {
+                                                    state = Language.StringByID(MyInternationalizationString.close);
+                                                }
+
+                                            }
+                                        }
+                                        break;
+                                    case DeviceType.IASZone:
+                                        {
+                                            var iASZonedevice = deviceinof as IASZone;
+                                            var intvalue = conditions["AttriButeData1"];
+                                            icon = $"ZigeeLogic/sensor{iASZonedevice.IasDeviceType}.png";
+                                            switch (iASZonedevice.IasDeviceType)
+                                            {
+                                                case 13:
+                                                    {
+                                                        if (conditions["Cluster_ID"] == "1024")
+                                                        {
+                                                            state = Language.StringByID(MyInternationalizationString.ambientLight) + "<" + conditions["AttriButeData1"] + "lux" + Language.StringByID(MyInternationalizationString.hour1);
+                                                        }
+                                                        else
+                                                        {
+                                                            if (conditions.ContainsKey("IgnoreTime"))
+                                                            {
+                                                                int minute = int.Parse(conditions["IgnoreTime"]) / 60;
+                                                                int second = int.Parse(conditions["IgnoreTime"]) % 60;
+                                                                if (minute != 0 && second != 0)
+                                                                {
+                                                                    state = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
+
+                                                                }
+                                                                else
+                                                                {
+                                                                    if (minute == 0 && second != 0)
+                                                                    {
+                                                                        state = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1);
+
+                                                                    }
+                                                                    if (minute != 0 && second == 0)
+                                                                    {
+                                                                        state = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.unattendedtime1);
+
+                                                                    }
+
+                                                                }
+                                                            }
+                                                            else
+                                                            {
+                                                                state = Language.StringByID(MyInternationalizationString.someone);
+                                                            }
+                                                        }
+
+                                                    }
+                                                    break;
+                                                case 21:
+                                                case 22:
+                                                    {
+                                                        if (conditions.ContainsKey("IgnoreTime"))
+                                                        {
+
+                                                            int minute = int.Parse(conditions["IgnoreTime"]) / 60;
+                                                            int second = int.Parse(conditions["IgnoreTime"]) % 60;
+                                                            if (minute != 0 && second != 0)
+                                                            {
+                                                                state = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime);
+
+                                                            }
+                                                            else
+                                                            {
+                                                                if (minute == 0 && second != 0)
+                                                                {
+                                                                    state = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime);
+
+                                                                }
+                                                                if (minute != 0 && second == 0)
+                                                                {
+                                                                    state = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.closetime);
+
+                                                                }
+
+                                                            }
+
+                                                        }
+                                                        else
+                                                        {
+                                                            if (intvalue == "1")
+                                                            {
+                                                                state = Language.StringByID(MyInternationalizationString.logicopen);
+                                                            }
+                                                            else
+                                                            {
+                                                                state = Language.StringByID(MyInternationalizationString.logicclose);
+                                                            }
+
+                                                        }
+
+                                                    }
+                                                    break;
+                                                case 40:
+                                                    {
+                                                        if (intvalue == "1")
+                                                        {
+                                                            state =Language.StringByID(MyInternationalizationString.smokescreen);
+                                                        }
+
+                                                    }
+                                                    break;
+                                                case 42:
+                                                    {
+                                                        if (intvalue == "1")
+                                                        {
+                                                            state =Language.StringByID( MyInternationalizationString.waterleakage);
+                                                        }
+                                                        else
+                                                        {
+                                                            state =Language.StringByID( MyInternationalizationString.noleakage);
+                                                        }
+                                                    }
+                                                    break;
+                                                case 43:
+                                                    {
+                                                        if (intvalue == "1")
+                                                        {
+                                                            state =Language.StringByID( MyInternationalizationString.gas);
+                                                        }
+
+                                                    }
+                                                    break;
+                                                case 277:
+                                                    {
+                                                        if (intvalue == "1")
+                                                        {
+                                                            state =Language.StringByID( MyInternationalizationString.callthepolice);
+                                                        }
+
+                                                    }
+                                                    break;
+                                               
+                                                default:
+                                                    {
+                                                        if (intvalue == "1")
+                                                        {
+                                                            state =Language.StringByID(MyInternationalizationString.callthepolice);
+                                                        }
+                                                    }
+                                                    break;
+
+                                            }
+                                        }
+                                        break;
+                                    case DeviceType.OnOffSwitch:
+                                        {
+                                            icon = "ZigeeLogic/panel.png";
+                                            state = Language.StringByID(MyInternationalizationString.OnOffSwitch) + conditions["Epoint"];
+                                        }
+                                        break;
+                                    case DeviceType.DoorLock:
+                                        {
+                                            icon = "ZigeeLogic/doorlock.png";
+                                            for (int a = 0; a < Common.Logic.CurrentLogic.Accounts.Count; a++)
+                                            {
+                                                if (Common.Logic.CurrentLogic.Accounts[a]["Type"] == "1")
+                                                {
+                                                    if (Common.Logic.CurrentLogic.Accounts[a]["UserId"] == conditions["AttriButeData2"])
+                                                    {
+                                                        state = Common.Logic.CurrentLogic.Accounts[a]["AccountName"];
+                                                        break;
+
+                                                    }
+                                                }
+
+                                            }
+                                        }
+                                        break;
+                                    case DeviceType.TemperatureSensor:
+                                        {
+                                            // conditionIcon.UnSelectedImagePath = "ZigeeLogic/temperature.png";
+                                            var dev = deviceinof as TemperatureSensor;
+                                            if (conditions["Cluster_ID"] == "1026")
+                                            {
+                                                dev.SensorDiv = 1;
+                                            }
+                                            else
+                                            {
+                                                dev.SensorDiv = 2;
+                                            }
+                                            string s = "";
+                                            switch (conditions["Range"])
+                                            {
+                                                case "0":
+                                                    {
+                                                        s = ">";
+                                                    }
+                                                    break;
+                                                case "1":
+                                                    {
+                                                        s = "=";
+                                                    }
+                                                    break;
+                                                case "2":
+                                                    {
+                                                        s = "<";
+                                                    }
+                                                    break;
+                                                case "6":
+                                                    {
+                                                        s = "鈮�";
+                                                    }
+                                                    break;
+                                                case "7":
+                                                    {
+                                                        s = "鈮�";
+                                                    }
+                                                    break;
+                                            }
+                                            ///杞崲娓╁害鍊�/100
+                                            string srtValue = (int.Parse(conditions["AttriButeData1"]) / 100).ToString();
+                                            if (conditions["Cluster_ID"] == "1026")
+                                            {
+                                                icon = "ZigeeLogic/temperature.png";
+                                                state = s + srtValue + "鈩�";
+                                            }
+                                            else
+                                            {
+                                                icon = "ZigeeLogic/humidity.png";
+                                                state = s + srtValue + "%";
+                                            }
+                                            break;
+
+                                        }
+
+                                }
+                            }
+                            break;
+                        case 6:
+                            {
+                                switch (conditions["EnOrWithdrawMode"])
+                                {
+                                    case "0":
+                                        {
+                                            if (conditions["ModeId"] == "1")
+                                            {
+                                                icon = "ZigeeLogic/athome.png";
+                                                name = Language.StringByID(MyInternationalizationString.logicathomegarrison);
+
+                                            }
+                                            else
+                                            {
+                                                icon = "ZigeeLogic/leavehome.png";
+                                                name = Language.StringByID(MyInternationalizationString.logicremovehomegarrison);
+                                            }
+                                        }
+                                        break;
+                                    case "1":
+                                        {
+                                            icon = "ZigeeLogic/withdrawal.png";
+                                            name = Language.StringByID(MyInternationalizationString.withdrawal);
+                                        }
+                                        break;
+                                    case "2":
+                                        {
+                                            icon = "ZigeeLogic/withdrawal.png";
+                                            name = Language.StringByID(MyInternationalizationString.urgentwithdrawal);
+                                        }
+                                        break;
+                                }
+                            }
+                            break;
+                        case 7:
+                            {
+                                icon = "ZigeeLogic/position.png";
+                                name = Language.StringByID(MyInternationalizationString.geographicalposition);
+                                foreach (var radius in Common.Logic.CurrentLogic.Accounts)
+                                {
+                                    if (radius["Type"] == "7")
+                                    {
+                                        if (conditions["AtHome"] == "1")
+                                        {
+                                            state = Language.StringByID(MyInternationalizationString.athome) + radius["Radius"] + Language.StringByID(MyInternationalizationString.mi);
+                                        }
+                                        else
+                                        {
+                                            state = Language.StringByID(MyInternationalizationString.leavehome) + radius["Radius"] + Language.StringByID(MyInternationalizationString.mi);
+                                        }
+                                    }
+                                }
+                            }
+                            break;
+                    }
+                    if (Type != 1)
+                    {
+                        selecteddevice.ordinaryBtn.Visible = true;
+                        selecteddevice.iconBtn.UnSelectedImagePath = icon;
+                        selecteddevice.ordinaryBtn.Text = name;
+                        selecteddevice.selecetddevicestateBtn.Text = state;
+                    }
+                    else
+                    {
+                        //璁惧鐘舵��
+                        selecteddevice.deviceNameBtn.Visible = true;
+                        selecteddevice.iconBtn.UnSelectedImagePath = icon;
+                        selecteddevice.deviceNameBtn.Text = name;
+                        selecteddevice.selecetddevicestateBtn.Text = state;
+                    }
+                    ///缂栬緫
+                    selecteddevice.edit.Tag = i.ToString();
+                    selecteddevice.edit.MouseUpEventHandler += (sender, e) =>
+                    {
+                        switch (Type)
+                        {
+
+                            /// (0:鏃堕棿鐐规潯浠�;1:璁惧鐘舵�佸彉鍖栨潯浠�;2:鍏朵粬閫昏緫鏉′欢;3:璁℃暟鍣ㄦ潯浠�;4:鍊掕鏃�;5:鏃堕棿娈垫潯浠�;6:瀹夐槻鏉′欢;7:鍦扮悊浣嶇疆)
+                            case 0:
+                                {
+                                    var timePoint = new TimePoint();
+                                    UserView.HomePage.Instance.AddChidren(timePoint);
+                                    UserView.HomePage.Instance.PageIndex += 1;
+                                    timePoint.IsEditor = true;
+                                    timePoint.Show(conditions);
+                                }
+                                break;
+                            case 5:
+                                {
+                                    var timePage = new TimePage();
+                                    UserView.HomePage.Instance.AddChidren(timePage);
+                                    UserView.HomePage.Instance.PageIndex += 1;
+                                    timePage.str1 = conditions["StartHour"] + ":" + conditions["StartMin"] + "-" + conditions["StopHour"] + ":" + conditions["StopMin"];
+                                    timePage.IsEditor = true;
+                                    timePage.Show();
+                                }
+                                break;
+                            case 1:
+                                {
+                                    var deviceinof = Method.GetCommonDevice(conditions["MacAddr"], conditions["Epoint"]);
+                                    if (deviceinof.Type != DeviceType.DoorLock)
+                                    {
+                                        var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
+                                        frameLayout.AddChidren(flMain);
+                                        CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "condition_logic",int.Parse(selecteddevice.edit.Tag.ToString()));
+                                    }
+                                    else
+                                    {
+                                        var memberList = new MemberList();
+                                        UserView.HomePage.Instance.AddChidren(memberList);
+                                        UserView.HomePage.Instance.PageIndex += 1;
+                                        MemberList.edit = true;
+                                        memberList.Show(deviceinof, conditions);
+                                    }
+                                }
+                                break;
+                            case 6:
+                                {
+                                    var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
+                                    frameLayout.AddChidren(flMain);
+                                    AddLogicPage.SecurityView(flMain, true);
+                                }
+                                break;
+                            case 7:
+                                {
+                                    var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
+                                    frameLayout.AddChidren(flMain);
+                                    AddLogicPage.LocationView(flMain, true);
+                                }
+                                break;
+                        }
+                    };
+                    ///鍒犻櫎鎺т欢
+                    selecteddevice.del.MouseUpEventHandler += (sender, e) =>
+                    {
+
+                        var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm,
+                        Language.StringByID(MyInternationalizationString.doyouwanttodelete),
+                        Language.StringByID(MyInternationalizationString.confrim));
+                        alert.Show();
+
+                        alert.ConfirmClickEvent += () =>
+                        {
+                            Common.Logic.CurrentLogic.Conditions.Remove(conditions);
+                            selecteddevice.selecetdFrameLayout.RemoveFromParent();
+                            //var logicCommunalPage = new LogicCommunalPage();
+                            //UserView.HomePage.Instance.AddChidren(logicCommunalPage);
+                            //UserView.HomePage.Instance.PageIndex += 1;
+                            //logicCommunalPage.Show(() => { });
+                        };
+
+                    };
+                    
+                }
+            }
+
+
+        }
+        /// <summary>
+        ///鏄剧ず閫昏緫鐩爣鐘舵�佺殑鏂规硶
+        /// </summary>
+        /// <param name="frameLayout">鐖舵帶浠�</param>
+        /// <param name="middle"></param>
+        /// <param name="ListActions">閫昏緫鐩爣鍒楄〃</param>
+        /// <param name="logicName">閫昏緫鍚嶇О</param>
+        public void Actions(FrameLayout frameLayout,VerticalScrolViewLayout middle, List<Dictionary<string, object>> ListActions, string logicName)
+        {
+
+            for (int i = 0; i < ListActions.Count; i++)
+            {
+                if (i == (ListActions.Count - 1))
+                {
+
+                    LogicView.AddDeviceView addflview = new LogicView.AddDeviceView();
+                    addflview.titleBtn.TextID = MyInternationalizationString.addfunction;
+                    middle.AddChidren(addflview.AddFl());
+                    addflview.clickBtn.MouseUpEventHandler += (sender, e) =>
+                    {
+                        Common.Logic.CurrentLogic.LogicName = logicName;
+                        Method.View(LogicView.IfString.Action_Logic, LogicView.IfString.Action_LogicScene);
+                    };
+                }
+                else
+                {
+
+                    SelectedDeviceView actiondevice = new SelectedDeviceView();
+                    actiondevice.Show(middle);
+                    var linkType = int.Parse(ListActions[i]["LinkType"].ToString());
+                    var actions = ListActions[i];
+                    string name = "";
+                    string icon = "";
+                    string state = "";
+
+                    switch (linkType)
+                    {
+                        case 0:
+                        case 8:
+                            {
+
+                                var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString());
+                                name = LocalDevice.Current.GetDeviceEpointName(deviceinof);
+                                actiondevice.regionNameBtn.Visible = true;
+                                Method.RoomNmae(actiondevice.regionNameBtn, deviceinof);
+                                switch (deviceinof.Type)
+                                {
+                                    case DeviceType.OnOffOutput:
+                                        {
+                                            icon = "ZigeeLogic/light.png";
+
+                                            var TaskList = actions["TaskList"] as List<Dictionary<string, string>>;
+                                            if (TaskList == null)
+                                            {
+                                                continue;
+                                            }
+                                            foreach (var status in TaskList)
+                                            {
+                                                if (status["TaskType"].ToString() == "1")
+                                                {
+                                                    if (status["Data1"].ToString() == "0")
+                                                    {
+                                                        state = Language.StringByID(MyInternationalizationString.close);
+
+                                                    }
+                                                    else if (status["Data1"].ToString() == "1")
+                                                    {
+                                                        state = Language.StringByID(MyInternationalizationString.open);
+
+                                                    }
+                                                    else if (status["Data1"].ToString() == "2")
+                                                    {
+
+                                                        state = Language.StringByID(MyInternationalizationString.onoff);
+                                                    }
+                                                }
+
+                                            }
+
+                                        }
+                                        break;
+                                    case DeviceType.DimmableLight:
+                                        {
+                                            icon = "ZigeeLogic/dimmableLight.png";
+                                            var TaskList = actions["TaskList"] as List<Dictionary<string, string>>;
+                                            if (TaskList == null)
+                                            {
+                                                continue;
+                                            }
+                                            foreach (var status in TaskList)
+                                            {
+                                                if (status["TaskType"].ToString() == "3")
+                                                {
+                                                    var intvalue = int.Parse(status["Data1"]);
+                                                    var lightbrightnessvalue = (intvalue * 100) / 254;
+                                                    state = lightbrightnessvalue.ToString() + "%";
+                                                }
+                                                else if (status["TaskType"].ToString() == "1")
+                                                {
+
+                                                    if (status["Data1"].ToString() == "0")
+                                                    {
+                                                        state = Language.StringByID(MyInternationalizationString.close);
+                                                    }
+                                                    else if (status["Data1"].ToString() == "2")
+                                                    {
+                                                        state = Language.StringByID(MyInternationalizationString.onoff);
+                                                    }
+                                                }
+
+
+                                            }
+
+                                        }
+                                        break;
+                                    case DeviceType.WindowCoveringDevice:
+                                        {
+                                            icon = "ZigeeLogic/curtain.png";
+                                            var TaskList = actions["TaskList"] as List<Dictionary<string, string>>;
+                                            if (TaskList == null)
+                                            {
+                                                continue;
+                                            }
+                                            foreach (var status in TaskList)
+                                            {
+                                                if (status["TaskType"] == "6")
+                                                {
+                                                    if (status["Data1"] == "0")
+                                                    {
+                                                        state = Language.StringByID(MyInternationalizationString.open);
+                                                    }
+                                                    else if (status["Data1"] == "1")
+                                                    {
+                                                        state = Language.StringByID(MyInternationalizationString.close);
+                                                    }
+                                                    else if (status["Data1"] == "5")
+                                                    {
+                                                        state = status["Data2"] + "%";
+                                                    }
+                                                }
+
+                                            }
+                                        }
+                                        break;
+                                    case DeviceType.AirSwitch:
+                                        {
+                                            icon = "ZigeeLogic/airswitch.png";
+
+                                            var TaskList = actions["TaskList"] as List<Dictionary<string, string>>;
+                                            if (TaskList == null)
+                                            {
+                                                continue;
+                                            }
+                                            foreach (var status in TaskList)
+                                            {
+                                                if (status["TaskType"].ToString() == "1")
+                                                {
+                                                    if (status["Data1"].ToString() == "0")
+                                                    {
+                                                        state = Language.StringByID(MyInternationalizationString.close);
+
+                                                    }
+                                                    else if (status["Data1"].ToString() == "1")
+                                                    {
+                                                        state = Language.StringByID(MyInternationalizationString.open);
+
+                                                    }
+                                                    else if (status["Data1"].ToString() == "2")
+                                                    {
+
+                                                        state = Language.StringByID(MyInternationalizationString.onoff);
+                                                    }
+                                                }
+
+                                            }
+
+                                        }
+                                        break;
+                                    case DeviceType.Thermostat:
+                                        {
+                                            icon = "ZigeeLogic/ac.png";
+
+                                            var TaskList = actions["TaskList"] as List<Dictionary<string, string>>;
+                                            if (TaskList == null)
+                                            {
+                                                continue;
+                                            }
+                                            string modetext = "", temperaturetext = "", speedtext = "";
+                                            bool ifclose = false;
+                                            foreach (var status in TaskList)
+                                            {
+
+                                                if (TaskList.Count == 1)
+                                                {
+                                                    //鏁扮粍鍙湁涓�涓厓绱犺鏄庡綋鍓嶇┖璋冪姸鎬佷负鍏筹紱
+                                                    ifclose = false;
+                                                    //濡傛灉绌鸿皟鐘舵�佹槸鍏筹紱鐩存帴璺冲嚭for寰潖锛�
+                                                    break;
+                                                }
+                                                else
+                                                {
+                                                    ifclose = true;
+                                                }
+                                                if (status["TaskType"].ToString() == "5")
+                                                {
+                                                    if (status["Data1"] == "3")
+                                                    {//3---璁剧疆宸ヤ綔妯″紡(1:鑷姩;3:鍒跺喎;4:鍒剁儹;7:閫侀;8:闄ゆ箍)
+                                                        switch (status["Data2"])
+                                                        {
+                                                            case "3":
+                                                                {
+                                                                    modetext = Language.StringByID(MyInternationalizationString.logiccool);
+                                                                }
+                                                                break;
+                                                            case "4":
+                                                                {
+                                                                    modetext = Language.StringByID(MyInternationalizationString.logicheat);
+                                                                }
+                                                                break;
+                                                            case "1":
+                                                                {
+                                                                    modetext = Language.StringByID(MyInternationalizationString.logicauto);
+                                                                }
+                                                                break;
+                                                            case "8":
+                                                                {
+                                                                    modetext = Language.StringByID(MyInternationalizationString.logicdry);
+                                                                }
+                                                                break;
+                                                            case "7":
+                                                                {
+                                                                    modetext = Language.StringByID(MyInternationalizationString.logicfanonly);
+                                                                }
+                                                                break;
+                                                        }
+                                                    }
+                                                    else if (status["Data1"] == "6")
+                                                    {//6---璁剧疆椋庢墖妯″紡(1:浣庨;2:涓;3:楂橀;)
+                                                        switch (status["Data2"])
+                                                        {
+                                                            case "1":
+                                                                {
+                                                                    speedtext = Language.StringByID(MyInternationalizationString.logiclow);
+                                                                }
+                                                                break;
+
+                                                            case "2":
+                                                                {
+                                                                    speedtext = Language.StringByID(MyInternationalizationString.logicmedium);
+                                                                }
+                                                                break;
+                                                            case "3":
+                                                                {
+                                                                    speedtext = Language.StringByID(MyInternationalizationString.logichigh);
+                                                                }
+                                                                break;
+
+                                                        }
+                                                    }
+                                                    //4---璁剧疆鍔犵儹搴︽暟;5---璁剧疆鍒跺喎銆侀櫎婀垮害鏁�;7---璁剧疆鑷姩搴︽暟
+                                                    else if (status["Data1"] == "4" || status["Data1"] == "5" || status["Data1"] == "7")
+                                                    {
+                                                        var s = int.Parse(status["Data2"]) / 100;
+                                                        temperaturetext = s.ToString();
+                                                    }
+                                                    else if (status["Data1"] == "20")
+                                                    {
+                                                        temperaturetext = "鏃�";
+                                                    }
+
+
+                                                }
+
+                                            }
+                                            if (ifclose)
+                                            {
+                                                state = modetext + ";" + temperaturetext + "鈩�;" + speedtext;
+                                            }
+                                            else
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.close);
+
+                                            }
+                                        }
+                                        break;
+                                    case DeviceType.DoorLock:
+                                        {
+                                            //闂ㄩ攣鐗规畩
+                                            icon = "ZigeeLogic/doorlock.png";
+                                            if (actions["PassData"].ToString() == "055704010112")
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.logicopen);
+                                            }
+                                            else
+                                            {
+                                                state = Language.StringByID(MyInternationalizationString.logicclose);
+                                            }
+                                        }
+                                        break;
+                                    case DeviceType.ColorTemperatureLight:
+                                        {
+                                            icon = "ZigeeLogic/nightLight.png";
+                                            var taskList = actions["TaskList"] as List<Dictionary<string, string>>;
+                                            if (taskList == null)
+                                            {
+                                                continue;
+                                            }
+                                            foreach (var tasks in taskList)
+                                            {
+                                                switch (tasks["TaskType"])
+                                                {
+                                                    case "1":
+                                                        {
+                                                            if (tasks["Data1"] == "0")
+                                                            {
+                                                                state += Language.StringByID(MyInternationalizationString.close) + ";";
+                                                            }
+                                                            else
+                                                            {
+                                                                state += Language.StringByID(MyInternationalizationString.open) + ";";
+                                                            }
+                                                        }
+                                                        break;
+
+                                                }
+                                            }
+                                            foreach (var tasks in taskList)
+                                            {
+                                                switch (tasks["TaskType"])
+                                                {
+
+                                                    case "3":
+                                                        {
+                                                            var intvalue = int.Parse(tasks["Data1"]);
+                                                            var lightbrightnessvalue = (intvalue * 100) / 254;
+                                                            state += Language.StringByID(MyInternationalizationString.brightness) + lightbrightnessvalue.ToString() + "%;";
+                                                        }
+                                                        break;
+
+                                                }
+                                            }
+                                            foreach (var tasks in taskList)
+                                            {
+                                                switch (tasks["TaskType"])
+                                                {
+
+                                                    case "7":
+                                                        {
+                                                            if (tasks["Data1"] == "0")
+                                                            {
+                                                                state += Language.StringByID(MyInternationalizationString.buzzer) + Language.StringByID(MyInternationalizationString.close) + ";";
+                                                            }
+                                                            else
+                                                            {
+                                                                state += Language.StringByID(MyInternationalizationString.buzzer) + Language.StringByID(MyInternationalizationString.open) + ";";
+                                                            }
+                                                        }
+                                                        break;
+
+                                                }
+                                            }
+                                            foreach (var tasks in taskList)
+                                            {
+                                                switch (tasks["TaskType"])
+                                                {
+
+                                                    case "8":
+                                                        {
+                                                            var intvalue = int.Parse(tasks["Data1"]);
+                                                            var colorTemperatureValue = 1000000 / (intvalue * 100);
+                                                            state += Language.StringByID(MyInternationalizationString.colorTemperature) + colorTemperatureValue.ToString() + "K";
+                                                        }
+                                                        break;
+                                                }
+                                            }
+
+                                            state = state.TrimEnd(';');//鍘绘帀鏈�鍚庨偅涓�";"
+                                        }
+                                        break;
+                                }
+
+                            }
+                            break;
+                        case 2:
+                            {
+                                //鍦ㄦ湰鍦版煡鎵捐鍦烘櫙;
+                                var sceneinof = UserCenter.HdlSceneLogic.Current.GetSceneUIBySceneId(Convert.ToInt32(actions["DeviceAddr"].ToString()));
+                                //鏈湴娌℃湁瀛樺湪;
+                                if (sceneinof == null)
+                                {
+                                    //瀹炵幇鐩殑:鏄剧ず鍑烘潵璁╁彲浠ヨ嚜宸辨槸鍚﹀垹闄�
+                                    sceneinof = new SceneUI();
+                                    #region --------
+                                    ////鍦ㄧ綉鍏虫煡鎵捐鍦烘櫙;
+                                    ////鏍囪闂:缃戠粶璇锋眰锛屽瓨鍦ㄨ鍥惧姞杞藉揩鎱㈢殑闂锛�
+                                    //sceneinof = await Send.GetScene(int.Parse(actions["DeviceAddr"].ToString()));
+                                    ////缃戝叧娌℃湁瀛樺湪;
+                                    //if (sceneinof == null)
+                                    //{
+                                    //    //娉ㄨВ:鏈湴鍜岀綉鍏抽兘涓嶅瓨鍦ㄨ鍦烘櫙,鐣岄潰灏嗕笉浼氭樉绀鸿鍦烘櫙;
+                                    //    //sceneinof = new SceneUI();
+                                    //    //绉婚櫎璇ュ満鏅暟鎹�;
+                                    //    Common.Logic.CurrentLogic.Actions.Remove(actions);
+                                    //    //绉婚櫎璇ュ満鏅鍥�;
+                                    //    devicesFrameLayout.RemoveFromParent();
+                                    //    continue;
+                                    //}
+                                    #endregion
+                                }
+
+                                icon = "ZigeeLogic/scene.png";
+                                name = sceneinof.Name;
+                                actiondevice.regionNameBtn.Visible = true;
+                                /////閫氳繃璁惧鎵惧埌鍖哄煙(鎴块棿)鍚嶇О
+                                Common.Room room = new Common.Room();
+                                actiondevice.regionNameBtn.Text = UserCenter.HdlRoomLogic.Current.GetRoomNameBySceneId(sceneinof.Id);
+
+                            }
+                            break;
+                        case 6:
+                            {
+
+
+
+                                if (actions["SecuritySetting"].ToString() == "0")
+                                {
+                                    if (actions["Password"].ToString() == "888888")
+                                    {
+                                        icon = "ZigeeLogic/withdrawal.png";
+                                        state = Language.StringByID(MyInternationalizationString.urgentwithdrawal);
+                                    }
+                                    else
+                                    {
+                                        icon = "ZigeeLogic/withdrawal.png";
+                                        state = Language.StringByID(MyInternationalizationString.withdrawal);
+
+                                    }
+                                }
+                                else if (actions["SecuritySetting"].ToString() == "1")
+                                {
+                                    if (actions["SecurityModeId"].ToString() == "1")
+                                    {
+                                        icon = "ZigeeLogic/athome.png";
+                                        state = Language.StringByID(MyInternationalizationString.logicathomegarrison);
+                                    }
+                                    else if (actions["SecurityModeId"].ToString() == "2")
+                                    {
+                                        icon = "ZigeeLogic/leavehome.png";
+                                        state = Language.StringByID(MyInternationalizationString.logicremovehomegarrison);
+                                    }
+                                }
+
+                            }
+                            break;
+                        case 7:
+                            {
+                                var delaytimevalue = int.Parse(actions["DelayTime"].ToString());
+                                var Minutes = delaytimevalue / 60;
+                                var seconds = delaytimevalue % 60;
+
+                                icon = "ZigeeLogic/delay.png";
+
+                                if (Minutes != 0)
+                                {
+                                    if (seconds == 0)
+                                    {
+                                        state = Minutes.ToString() + Language.StringByID(MyInternationalizationString.minute);
+                                    }
+                                    else
+                                    {
+                                        state = Minutes.ToString() + Language.StringByID(MyInternationalizationString.minute) + seconds.ToString() + Language.StringByID(MyInternationalizationString.second);
+                                    }
+                                }
+                                else
+                                {
+                                    state = seconds.ToString() + Language.StringByID(MyInternationalizationString.second);
+                                }
+                                //璁板綍寤舵椂锛�
+                                actiondevice.edit.Tag = i;
+                            };
+                            break;
+                    }
+
+                    if (linkType != 2)
+                    {
+                        actiondevice.stateRow.AddRightView(actiondevice.edit);
+                    }
+                    actiondevice.stateRow.AddRightView(actiondevice.del);
+
+                    if (linkType == 6 || linkType == 7)
+                    {
+                        actiondevice.ordinaryBtn.Visible = true;
+                        actiondevice.iconBtn.UnSelectedImagePath = icon;
+                        actiondevice.ordinaryBtn.Text = name;
+                        actiondevice.selecetddevicestateBtn.Text = state;
+                    }
+                    else
+                    {
+                        //璁惧鐘舵��
+                        actiondevice.deviceNameBtn.Visible = true;
+                        actiondevice.iconBtn.UnSelectedImagePath = icon;
+                        actiondevice.deviceNameBtn.Text = name;
+                        actiondevice.selecetddevicestateBtn.Text = state;
+                    }
+                    ///缂栬緫
+                    actiondevice.edit.Tag = i.ToString();
+                    actiondevice.edit.MouseUpEventHandler += (sender, e) =>
+                    {
+                        switch (linkType)
+                        {
+                            case 8:
+                            case 0:
+                                {
+                                    var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString());
+                                    var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
+                                    frameLayout.AddChidren(flMain);
+                                    CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "action_logic", int.Parse(actiondevice.edit.Tag.ToString()));
+                                }
+                                break;
+                            case 6:
+                                {
+                                    var securityMode = new SecurityMode();
+                                    UserView.HomePage.Instance.AddChidren(securityMode);
+                                    UserView.HomePage.Instance.PageIndex += 1;
+                                    securityMode.IsDeviceEditor = true;
+                                    securityMode.Show();
+                                }
+                                break;
+                            case 7:
+                                {
+                                    var delayTime = new DelayTime();
+                                    UserView.HomePage.Instance.AddChidren(delayTime);
+                                    UserView.HomePage.Instance.PageIndex += 1;
+                                    delayTime.Show(int.Parse(actiondevice.edit.Tag.ToString()), true);
+                                }
+                                break;
+
+                        }
+                    };
+                    ///鍒犻櫎鎺т欢
+                    actiondevice.del.MouseUpEventHandler += (sender, e) =>
+                    {
+
+                        var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm,
+                        Language.StringByID(MyInternationalizationString.doyouwanttodelete),
+                        Language.StringByID(MyInternationalizationString.confrim));
+                        alert.Show();
+                        alert.ConfirmClickEvent += () =>
+                        {
+                            Common.Logic.CurrentLogic.Actions.Remove(actions);
+                            actiondevice.selecetdFrameLayout.RemoveFromParent();
+                            // devicesFrameLayout.RemoveFromParent();
+                            //var logicCommunalPage = new LogicCommunalPage();
+                            //UserView.HomePage.Instance.AddChidren(logicCommunalPage);
+                            //UserView.HomePage.Instance.PageIndex += 1;
+                            //logicCommunalPage.Show(() => { });
+                        };
+
+                    };
+
+
+                }
+            }
+
+
+        }
+        /// <summary>
+        /// 涓庢垨鏉′欢甯冨眬鐣岄潰鐨勬柟娉� 
+        /// </summary>
+        /// <param name="edit"></param>
+        /// <param name="frameLayout"></param>
+        public void ConditionView(bool edit, FrameLayout frameLayout)
+        {
+
+            #region  ------缁勫悎鏉′欢鐣岄潰甯冨眬閮ㄥ垎   
+            var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicTranslucentColor };
+            frameLayout.AddChidren(flMain);
+            CompleteView completeView = new CompleteView();
+            flMain.AddChidren(completeView.Show(2));
+            completeView.Btntitle.TextID = MyInternationalizationString.condition;
+            EventHandler<MouseEventArgs> clickcancel = (sender, e) =>
+            {
+                UserView.HomePage.Instance.ScrollEnabled = true;
+                flMain.RemoveFromParent();
+            };
+            flMain.MouseUpEventHandler += clickcancel;
+            completeView.Btncancel.MouseUpEventHandler += clickcancel;
+
+            //婊¤冻鎵�鏈夋潯浠�
+            mFunView allFunView = new mFunView();
+            allFunView.frameLayout.Y = Application.GetRealHeight(140 + 20);
+            completeView.Show(2).AddChidren(allFunView.Show());
+            allFunView.titleBtn.TextID = MyInternationalizationString.Allconditions;
+            //婊¤冻鍏朵腑涓�涓潯浠�
+            mFunView ormFunview = new mFunView();
+            ormFunview.frameLayout.Y = allFunView.frameLayout.Bottom;
+            completeView.Show(2).AddChidren(ormFunview.Show());
+            ormFunview.titleBtn.TextID = MyInternationalizationString.anycondition;
+            ormFunview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
+            #endregion
+
+            ///婊¤冻鎵�鏈夋潯浠剁偣鍑讳簨浠�
+            allFunView.clickviewBtn.MouseUpEventHandler += (sedner, e) =>
+            {
+                allFunView.selectedIconBtn.Visible = true;
+                ormFunview.selectedIconBtn.Visible = false;
+                allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+            };
+            ///婊¤冻鍏朵腑涓�涓潯浠剁偣鍑讳簨浠�
+            ormFunview.clickviewBtn.MouseUpEventHandler += (sedner, e) =>
+            {
+                allFunView.selectedIconBtn.Visible = false;
+                ormFunview.selectedIconBtn.Visible = true;
+                allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+            };
+
+            if (edit)
+            {
+                if (Common.Logic.CurrentLogic.Relationship == 0)
+                {
+                    allFunView.selectedIconBtn.Visible = true;
+                    ormFunview.selectedIconBtn.Visible = false;
+                    allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                    ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                }
+                else
+                {
+                    allFunView.selectedIconBtn.Visible = false;
+                    ormFunview.selectedIconBtn.Visible = true;
+                    allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor;
+                    ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor;
+                }
+            }
+            completeView.Btncomplete.MouseUpEventHandler += (sender, e) =>
+            {
+                if (!allFunView.selectedIconBtn.Visible && !ormFunview.selectedIconBtn.Visible)
+                {
+                    ///鍙互鎻愮ず鏈�変腑鐘舵�侊紱
+                    return;
+                }
+                flMain.RemoveFromParent();
+
+                if (allFunView.selectedIconBtn.Visible)
+                {
+                    Common.Logic.CurrentLogic.Relationship = 0;
+
+                }
+                if (ormFunview.selectedIconBtn.Visible)
+                {
+                    Common.Logic.CurrentLogic.Relationship = 1;
+
+                }
+                if (edit)
+                {
+                    if (Common.Logic.CurrentLogic.LogicId != 0)
+                    {
+                        Send.LogicControlSwitch(Common.Logic.CurrentLogic);
+                    }
+                    var logicCommunalPage = new LogicCommunalPage();
+                    UserView.HomePage.Instance.AddChidren(logicCommunalPage);
+                    UserView.HomePage.Instance.PageIndex += 1;
+                    logicCommunalPage.Show(() => { });
+                }
+                else
+                {
+                    var addLogicPage = new AddLogicPage();
+                    UserView.HomePage.Instance.AddChidren(addLogicPage);
+                    UserView.HomePage.Instance.PageIndex += 1;
+                    addLogicPage.Show();
+                }
+            };
+
+        }
+    }
+}

--
Gitblit v1.8.0