using System; using Shared; using Shared.Common; using Shared.R; namespace Shared.Phone.Device.Logic.DoorLockLogic { public class LockLogicList : FrameLayout { public LockLogicList() { Tag = "LockLogicList"; } VerticalScrolViewLayout middle; public async void Show() { #region 最上面的布局代码 var topRowLayout = new RowLayout { BackgroundColor = ZigbeeColor.Current.LogicTopBackgroundColor, Height = Application.GetRealHeight(184), LineColor = ZigbeeColor.Current.LogicRowLayoutTopLineColor, }; this.AddChidren(topRowLayout); var titleName = new Button { TextSize = 16, TextColor = ZigbeeColor.Current.LogicTextBlackColor, TextAlignment = TextAlignment.CenterLeft, X = Application.GetRealWidth(176), Width = Application.GetRealWidth(600), Height = Application.GetRealHeight(69), Y = Application.GetRealHeight(92), TextID = MyInternationalizationString.linkageevent, }; topRowLayout.AddChidren(titleName); var clickBtn = new Button { Width = Application.GetRealWidth(81 + 51), Height = Application.GetRealHeight(58 + 40), Y = Application.GetRealHeight(98 - 40), }; topRowLayout.AddChidren(clickBtn); clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; var back = new Button { Width = Application.GetRealWidth(30), Height = Application.GetRealHeight(51), X = Application.GetRealWidth(81), Y = Application.GetRealHeight(98), //Gravity = Gravity.CenterVertical; UnSelectedImagePath = "ZigeeLogic/back.png", }; topRowLayout.AddChidren(back); back.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; var addiocn = new Button { Width = Application.GetRealWidth(72), Height = Application.GetRealHeight(72), X = Application.GetRealWidth(1080 - 108 - 58), UnSelectedImagePath = "ZigeeLogic/lockadd.png", Y = Application.GetRealHeight(184 - 72 - 20), }; topRowLayout.AddChidren(addiocn); addiocn.MouseUpEventHandler += (sender, e) => { //new一个新逻辑对象; Common.Logic.CurrentLogic = new Common.Logic(); Common.Logic.CurrentLogic.IsEnable = 1;//默认为开 Common.Logic.CurrentLogic.LogicType = 1; Common.Logic.CurrentLogic.Relationship = 1; //Config.Instance.Guid用来识别账号身份; var accounts = new System.Collections.Generic.Dictionary(); accounts.Add("Type","1"); accounts.Add("Account", Config.Instance.Guid); Common.Logic.CurrentLogic.Accounts.Add(accounts); Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1); var lockLogicCommunalPage = new LockLogicCommunalPage(); UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; lockLogicCommunalPage.Show(() => { }); }; #endregion middle = new VerticalScrolViewLayout { Y = topRowLayout.Bottom, Height = Application.GetRealHeight(1920 - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); CommonPage.Loading.Start(); if (Common.Logic.LockLogicList.Count == 0) { var Idlist = await Send.GetLogicId(1); if (Idlist.Count != 0) { var listlogic = await Send.ReadList(Idlist.Count, 1); //foreach可能集合已被修改,枚举操作可能不会执行,可能出现崩溃(建议for)。 for (int j = 0; j < listlogic.Count; j++) { var logic = listlogic[j]; if (logic.LogicType == 0) { continue; } bool yes = false; for (int a = 0; a < logic.Accounts.Count; a++) { if (logic.Accounts[a]["Account"].ToString() == Config.Instance.Guid) { //查找自己账号下的创建联动事件; yes = true; break; } } if (yes) { Common.Logic.LockLogicList.Add(listlogic[j]); } } } } //自动化 Automationview(); CommonPage.Loading.Hide(); } void Automationview() { middle.RemoveAll(); for (int i = 0; i < Common.Logic.LockLogicList.Count; i++) { var logic = Common.Logic.LockLogicList[i]; var logicRowlayout = new RowLayout { Width = Application.GetRealWidth(1080), Height = Application.GetRealHeight(190), LineColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; middle.AddChidren(logicRowlayout); var logicnameBtn = new Button { Height = Application.GetRealHeight(190), Width = Application.GetRealWidth(600), Text = logic.LogicName, X = Application.GetRealWidth(58), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Gravity = Gravity.CenterVertical, }; logicRowlayout.AddChidren(logicnameBtn); var logicswitchBtn = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(63), UnSelectedImagePath = "ZigeeLogic/logicclose.png", SelectedImagePath = "ZigeeLogic/logicopen.png", X = logicRowlayout.Width - Application.GetRealWidth(104 + 58), Gravity = Gravity.CenterVertical, }; logicRowlayout.AddChidren(logicswitchBtn); logicswitchBtn.MouseUpEventHandler += (sender, e) => { logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected; if (logicswitchBtn.IsSelected) { //逻辑开 logic.IsEnable = 1; } else { //逻辑关 logic.IsEnable = 0; } Send.LogicControlSwitch(logic); }; if (logic.IsEnable == 1) { logicswitchBtn.IsSelected = true; } else if (logic.IsEnable == 0) { logicswitchBtn.IsSelected = false; } ///编辑 var edit = new Button { BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1, Text = Language.StringByID(MyInternationalizationString.edit), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRowlayout.AddRightView(edit); edit.MouseUpEventHandler += (sender, e) => { Common.Logic.CurrentLogic = logic; var lockLogicCommunalPage = new LockLogicCommunalPage(); UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; lockLogicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(); }); }; ///删除 var del = new Button { BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1, Text = Language.StringByID(MyInternationalizationString.del), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRowlayout.AddRightView(del); del.MouseUpEventHandler += (sender, e) => { var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim)); alert.ResultEventHandler += (sender1, e1) => { if (e1) { Common.Logic.LockLogicList.Remove(logic); Automationview(); Send.DelLogic(logic.LogicId); } }; alert.Show(); }; } } } }