using System; using Shared; using Shared.Common; using Shared.R; namespace Shared.Phone.Device.Logic.DoorLockLogic { public class LockLogicList : FrameLayout { public LockLogicList() { Tag = "LockListView"; } VerticalRefreshLayout middle; public void Show() { #region 上面的布局代码 TopView view = new TopView(); this.AddChidren(view.TopRowView()); view.toptitleNameBtn.TextID = MyInternationalizationString.linkageevent; view.clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; //加大点击热键 var addiocnclick = new Button { Width = Application.GetRealWidth(108+58), Height = Application.GetRealHeight(72+20), X = Application.GetRealWidth(1080 - 108 - 58), Y = Application.GetRealHeight(184 - 72), }; view.topRowLayout.AddChidren(addiocnclick); var addiocn = new Button { Width = Application.GetMinRealAverage(72), Height = Application.GetMinRealAverage(72), X = Application.GetRealWidth(1080 - 108 - 58), UnSelectedImagePath = "ZigeeLogic/lockadd.png", Y = Application.GetRealHeight(184 - 72 - 20), }; view.topRowLayout.AddChidren(addiocn); EventHandler addclick = (sender, e) => { //new一个新逻辑对象; Common.Logic.CurrentLogic = new Common.Logic(); Common.Logic.CurrentLogic.IsEnable = 1;//默认为开 Common.Logic.CurrentLogic.LogicType = 1;//标记自动化类型 Common.Logic.CurrentLogic.Relationship = 1; Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.linkageevent); var lockLogicCommunalPage = new LockLogicCommunalPage(); UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; lockLogicCommunalPage.Show(() => { }); }; addiocnclick.MouseUpEventHandler += addclick; addiocn.MouseUpEventHandler += addclick; #endregion middle = new VerticalRefreshLayout { Y = view.topRowLayout.Bottom, Height = Application.GetRealHeight(Method.H - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); middle.BeginHeaderRefreshingAction += () => { //重新刷新logic列表 Common.Logic.LockLogicList.Clear(); Read(); //关闭刷新View; middle.EndHeaderRefreshing(); }; Read(); } /// /// 读取自动化数据 /// public async void Read() { CommonPage.Loading.Start(); if (!BoolExist()) { 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 != 1) { continue; } Common.Logic.LockLogicList.Add(logic); } } } Automationview(); CommonPage.Loading.Hide(); } /// /// 加载自动化列表的界面 /// public void Automationview() { middle.RemoveAll(); //if (Common.Logic.LockLogicList.Count == 0) if (!BoolExist()) { //就是为了显示引导添加图标; var noFrameLayout = new FrameLayout { Height = Application.GetRealHeight(434 + 200 + 32 + 320), //BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; middle.AddChidren(noFrameLayout); var noIconBtn = new Button { Y = Application.GetRealHeight(320), Width = Application.GetMinRealAverage(756), Height = Application.GetMinRealAverage(434), UnSelectedImagePath = "Item/NoFunction.png", X = Application.GetRealWidth(162), }; noFrameLayout.AddChidren(noIconBtn); var noTextBtn = new Button() { Y = noIconBtn.Bottom, Height = Application.GetRealHeight(200) + Application.GetRealHeight(32), Width = Application.GetRealWidth(700), //Gravity = Gravity.CenterHorizontal, Text = Language.StringByID(MyInternationalizationString.tiplocktextnull).Replace("{\\r\\n}", "\r\n"), TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor, TextAlignment = TextAlignment.Center, IsMoreLines = true, X = Application.GetRealWidth(190), }; noFrameLayout.AddChidren(noTextBtn); } for (int i = 0; i < Common.Logic.LockLogicList.Count; i++) { var logic = Common.Logic.LockLogicList[i]; if (!Exist(logic)) { continue; } var logicRowlayout = new RowLayout { Width = Application.GetRealWidth(1080), Height = Application.GetRealHeight(190), LineColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, SubViewWidth = Application.GetRealWidth(184),//改变编辑控件宽度多少; }; 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, TextSize = 15, }; logicRowlayout.AddChidren(logicnameBtn); var logicswitchBtn = new Button { Width = Application.GetRealWidth(104), Height = Application.GetRealHeight(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 UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm, Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); alert.ConfirmClickEvent += () => { Common.Logic.LockLogicList.Remove(logic); Automationview(); Send.DelLogic(logic.LogicId); }; }; } } /// /// 查找该门锁是否存在自动化 /// /// private bool BoolExist() { bool yes = false; for (int i = 0; i < Common.Logic.LockLogicList.Count; i++) { var logic = Common.Logic.LockLogicList[i]; if (logic.LogicType != 1) { continue; } if (Exist(logic)) { yes = true; //存在就退出 break; } } return yes; } /// /// 查找这一条自动化是否属于该门锁 /// /// private bool Exist(Common.Logic logic) { for (int j = 0; j < logic.Accounts.Count; j++) { //Option4是设备mac;Option2是设备端口; if (logic.Accounts[j]["Option4"].ToString() == Send.CurrentDoorLock.DeviceAddr) { //查找是否是那个门锁; //如果不是该门锁联动事件不显示出来; return true; } } return false; } } }