黄学彪
2020-07-06 f23ad1b3f9f6193f35f72104d690b21dc67d5c1f
ZigbeeApp/Shared/Phone/Device/Logic/LogicCommunalPage.cs
@@ -18,7 +18,7 @@
            UserView.HomePage.Instance.RemoveViewByTag("Logic");
            Tag = "Logic";
        }
        EditText logicTextBox;
        public async void Show(Action action)
        {
@@ -36,14 +36,14 @@
            }
            view.clickBtn.MouseDownEventHandler += (sender, e) =>
            {
               // UserView.HomePage.Instance.ScrollEnabled = true;//恢复左滑
                // UserView.HomePage.Instance.ScrollEnabled = true;//恢复左滑
                action();
                RemoveFromParent();
            };
            var middle = new VerticalScrolViewLayout
            {
                Y = view.topRowLayout.Bottom,
                Height = Application.GetRealHeight(Method.H - 184-180),
                Height = Application.GetRealHeight(Method.H - 184 - 180),
                BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
            };
            this.AddChidren(middle);
@@ -75,10 +75,10 @@
            };
            logicnamefl.AddChidren(text);
            logicTextBox = new EditText
            EditText logicTextBox = new EditText
            {
                Y = Application.GetRealHeight(35),
                Width = Application.GetRealWidth(1080-58-300),
                Width = Application.GetRealWidth(1080 - 58 - 300),
                Height = Application.GetRealHeight(60),
                X = text.Right,
                TextAlignment = TextAlignment.CenterLeft,
@@ -103,20 +103,21 @@
            middle.AddChidren(addconditionview.AddDeviceView());
            ///添加条件的点击事件
            addconditionview.clickBtn.MouseUpEventHandler+= (sender, e) =>
            {
                if (Common.Logic.CurrentLogic.Conditions.Count == 1)
                {
                    ConditionView(false);
                }
                else
                {
                    var addLogicPage = new AddLogicPage();
                    UserView.HomePage.Instance.AddChidren(addLogicPage);
                    UserView.HomePage.Instance.PageIndex += 1;
                    addLogicPage.Show();
                }
            };
            addconditionview.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
                 Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim();
                 if (Common.Logic.CurrentLogic.Conditions.Count == 1)
                 {
                     new LogicDveiceStatus { }.ConditionView(false, this);
                 }
                 else
                 {
                     var addLogicPage = new AddLogicPage();
                     UserView.HomePage.Instance.AddChidren(addLogicPage);
                     UserView.HomePage.Instance.PageIndex += 1;
                     addLogicPage.Show();
                 }
             };
            List<Dictionary<string, string>> ListConditions = new List<Dictionary<string, string>>();
            ListConditions.Clear();
            ListConditions.AddRange(Common.Logic.CurrentLogic.Conditions);
@@ -148,535 +149,14 @@
                }
                EventHandler<MouseEventArgs> editclick = (sender, e) =>
                {
                    ConditionView(true);
                    Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim();
                    new LogicDveiceStatus { }.ConditionView(true, this);
                };
                row.MouseUpEventHandler += editclick;
                relationship.MouseUpEventHandler += editclick;
            }
            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) =>
                    {
                        if (Common.Logic.CurrentLogic.Conditions.Count == 1)
                        {
                            ConditionView(false);
                        }
                        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正常时间点","1日出时间","2日落时间","3正午时间"
                                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.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.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 };
                                        this.AddChidren(flMain);
                                        CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "condition_logic");
                                    }
                                    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 };
                                    this.AddChidren(flMain);
                                    AddLogicPage.SecurityView(flMain, true);
                                }
                                break;
                            case 7:
                                {
                                    var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
                                    this.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(() => { });
                        };
                    };
                }
            }
            new LogicDveiceStatus { }.Conditions(this, middle, ListConditions, logicTextBox.Text.Trim());
            #endregion
@@ -686,578 +166,17 @@
            addactionview.iconBtn.Visible = true;
            addactionview.titleBtn.TextID = MyInternationalizationString.execute;
            middle.AddChidren(addactionview.AddDeviceView());
            addactionview.clickBtn.MouseUpEventHandler+= (sender, e) =>
            {
                Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim();
                Method.View(IfString.Action_Logic,IfString.Action_LogicScene);
            };
            addactionview.clickBtn.MouseUpEventHandler += (sender, e) =>
             {
                 Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim();
                 Method.View(IfString.Action_Logic, IfString.Action_LogicScene);
             };
            List<Dictionary<string, object>> ListActions = new List<Dictionary<string, object>>();
            ListActions.Clear();
            ListActions.AddRange(Common.Logic.CurrentLogic.Actions);
            ListActions.Add(new Dictionary<string, object>());
            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 = logicTextBox.Text.Trim();
                        Method.View(IfString.Action_Logic, 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.MouseUpEventHandler += (sender, e) =>
                    {
                        switch (linkType)
                        {
                            case 8:
                            case 0:
                                {
                                    var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString());
                                    if (deviceinof.Type != DeviceType.ColorTemperatureLight)
                                    {
                                        var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
                                        this.AddChidren(flMain);
                                        CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "action_logic");
                                    }
                                    else
                                    {
                                        var nightlight = new Nightlight();
                                        UserView.HomePage.Instance.AddChidren(nightlight);
                                        UserView.HomePage.Instance.PageIndex += 1;
                                        nightlight.Show(deviceinof, true, "logic", actions);
                                    }
                                }
                                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(() => { });
                        };
                    };
                }
            }
            new LogicDveiceStatus { }.Actions(this, middle, ListActions, logicTextBox.Text.Trim());
            #endregion
@@ -1282,16 +201,16 @@
                //Text = "每天",
                TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                TextID = MyInternationalizationString.everyday,
                Y = Application.GetRealHeight(35+30),
                Y = Application.GetRealHeight(35 + 30),
                X = weekview.titleBtn.Right,
                TextSize = 14,
            };
            weekview.frameLayout.AddChidren(weekBtn);
            Method.UpdateWeek(weekBtn,Common.Logic.CurrentLogic);
            Method.UpdateWeek(weekBtn, Common.Logic.CurrentLogic);
            EventHandler<MouseEventArgs> cycleclick = (sender, e) =>
            {
                /*------保留每月,每年类型*/
                var cycle = new Cycle(() => { Method.UpdateWeek(weekBtn, Common.Logic.CurrentLogic);});
                var cycle = new Cycle(() => { Method.UpdateWeek(weekBtn, Common.Logic.CurrentLogic); });
                UserView.HomePage.Instance.AddChidren(cycle);
                UserView.HomePage.Instance.PageIndex += 1;
                cycle.Show();
@@ -1307,121 +226,14 @@
            #region  ----推送设置----
            Method.Push(middle);
            #endregion
            saveBtn.clickviewBtn.MouseUpEventHandler +=(sender, e) =>
            {
                var name = logicTextBox.Text.Trim();
                Method.SaveLogic(IfString._Logic,name, IfString.Tag, Common.Logic.CurrentLogic);
            };
            saveBtn.clickviewBtn.MouseUpEventHandler += (sender, e) =>
             {
                 var name = logicTextBox.Text.Trim();
                 Method.SaveLogic(IfString._Logic, name, IfString.Tag, Common.Logic.CurrentLogic);
             };
        }
        void ConditionView(bool edit)
        {
            Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim();
            #region  ------组合条件界面布局部分
            var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicTranslucentColor };
            this.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();
                }
            };
        }
    }
}