using System; using System.Collections.Generic; using Shared; using Shared.Common; using Shared.R; namespace Shared.Phone.Device.Logic.DoorLockLogic { public class AddCondition : FrameLayout { public AddCondition() { Tag = "LockLogic"; } Button selectedIcon = new Button(); public int conditionsIndex = -1; 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.userlist, //Text = "选择用户", }; 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(); }; #endregion var middle = new VerticalScrolViewLayout { Y = topRowLayout.Bottom, Height = Application.GetRealHeight(1920 - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); bool d = false; string macport = Send.CurrentDoorLock.DeviceAddr + "_" + Send.CurrentDoorLock.DeviceEpoint.ToString(); for (int i = 0; i < Send.LockList.Count; i++) { if (Send.LockList[i].DoorLockMacPort == macport) { ///已经存在该门锁信息 d = true; break; } } if (!d) { var allMemberslist = await Send.AllMembers(Send.CurrentDoorLock.DeviceAddr); Send.LockList.AddRange(allMemberslist); } UserAllView(middle, macport); } /// /// 显示所有用户 /// /// void UserAllView(VerticalScrolViewLayout middle,string macport) { for (int i = 0; i < Send.LockList.Count; i++) { var user = Send.LockList[i]; if (user.DoorLockMacPort != macport) { continue; } var userFramelayout = new FrameLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(userFramelayout); var userRow = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(1080 - 58 - 58), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(58), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; userFramelayout.AddChidren(userRow); var usernameBtn = new Button { Text = user.UserName, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Width = Application.GetRealWidth(600), Height = Application.GetRealHeight(130), Tag = Send.LockList[i], }; userRow.AddChidren(usernameBtn); var btntimeback = new Button { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), UnSelectedImagePath = "ZigeeLogic/next.png", X = userRow.Width - Application.GetRealWidth(58), Gravity = Gravity.CenterVertical, }; userRow.AddChidren(btntimeback); EventHandler userclick = (sender, e) => { SelectedUserID(user.UserIdMode, usernameBtn.Text); }; usernameBtn.MouseUpEventHandler += userclick; btntimeback.MouseUpEventHandler += userclick; userFramelayout.MouseUpEventHandler += userclick; userRow.MouseUpEventHandler += userclick; } } /// /// 选择某个用户 /// /// 触发源列表 /// 用户名字 void SelectedUserID(List membershipIfon, string userName) { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); flMain.MouseUpEventHandler += (sender1, e1) => { flMain.RemoveFromParent(); }; var lockcolorfra = new FrameLayout { Width = Application.GetRealWidth(1080), Height = Application.GetRealHeight(100), Y = Application.GetRealHeight(1920 - 100), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; flMain.AddChidren(lockcolorfra); var lockcolorfra1 = new FrameLayout { Width = Application.GetRealWidth(1080), Height = Application.GetRealHeight(530), Y = Application.GetRealHeight(1920 - 530), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, Radius = (uint)Application.GetRealHeight(60), }; flMain.AddChidren(lockcolorfra1); #region -------取消 完成 var lockRow = new RowLayout { Height = Application.GetRealHeight(140), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; lockcolorfra1.AddChidren(lockRow); var Btncancel = new Button { TextID = MyInternationalizationString.cancel, TextColor = ZigbeeColor.Current.LogicBtnCancelColor, Height = Application.GetRealHeight(140), Width = Application.GetRealWidth(200), X = Application.GetRealWidth(80), TextAlignment = TextAlignment.CenterLeft, }; lockRow.AddChidren(Btncancel); Btncancel.MouseUpEventHandler += (sender16, e16) => { flMain.RemoveFromParent(); UserView.HomePage.Instance.ScrollEnabled = true; }; var Btntitle = new Button { TextID = MyInternationalizationString.security, TextColor = ZigbeeColor.Current.LogicBtnTypeColor, Height = Application.GetRealHeight(140), Width = Application.GetRealWidth(320), TextAlignment = TextAlignment.Center, X = Btncancel.Right + Application.GetRealWidth(100), TextSize = 16, Text =userName, }; lockRow.AddChidren(Btntitle); var Btncomplete = new Button { TextID = MyInternationalizationString.complete, TextColor = ZigbeeColor.Current.LogicBtnCompleteColor, Height = Application.GetRealHeight(140), Width = Application.GetRealWidth(200), TextAlignment = TextAlignment.CenterRight, X = Btntitle.Right + Application.GetRealWidth(100), }; lockRow.AddChidren(Btncomplete); #endregion string SelectedLockStatus = ""; lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * membershipIfon.Count) - 20 - 50); lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * membershipIfon.Count) + 20 + 50); ///定义两个变量记录选中状态; string attriButeId ="", attriButeData2 =""; for (int j = 0; j < membershipIfon.Count; j++) { var userIdmode = membershipIfon[j]; var doorlockfra = new FrameLayout { Height = Application.GetRealHeight(160), Y = lockRow.Bottom + Application.GetRealHeight(20 + 160 * j), }; lockcolorfra1.AddChidren(doorlockfra); var doorlockRow = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(920), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(80), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; doorlockfra.AddChidren(doorlockRow); var doorlockBtn = new Button { Width = Application.GetRealWidth(600), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor, Text = userIdmode.ModeName, }; doorlockRow.AddChidren(doorlockBtn); //(0按键/3卡/15指纹) //switch (userIdmode.OpenMode.ToString()) //{ // case "0": // { // doorlockBtn.Text = Language.StringByID(MyInternationalizationString.lockpassword); // } // break; // case "3": // { // doorlockBtn.Text = Language.StringByID(MyInternationalizationString.ic); // } // break; // case "15": // { // doorlockBtn.Text = Language.StringByID(MyInternationalizationString.fingerprint); // } // break; //} var doorlockSelected = new Button { X = Application.GetRealWidth(860), Width = Application.GetMinRealAverage(60), Height = Application.GetMinRealAverage(60), UnSelectedImagePath = "ZigeeLogic/selected.png", Visible = false, Gravity = Gravity.CenterVertical, }; doorlockRow.AddChidren(doorlockSelected); if ((membershipIfon.Count - 1) == j) { doorlockRow.LineColor = ZigbeeColor.Current.LogicBackgroundColor; } EventHandler doorlockclick = (sender2, e2) => { SelectedLockStatus = "DoorLock"; selectedIcon.Visible = false; selectedIcon = doorlockSelected; doorlockSelected.Visible = true; //doorlockBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; attriButeId = userIdmode.OpenMode.ToString(); attriButeData2 = userIdmode.UserId; }; doorlockRow.MouseUpEventHandler += doorlockclick; doorlockBtn.MouseUpEventHandler += doorlockclick; doorlockSelected.MouseUpEventHandler += doorlockclick; doorlockfra.MouseUpEventHandler += doorlockclick; ///显示之前的状态 if (conditionsIndex != -1) { var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex]; if (s["AttriButeId"] == userIdmode.OpenMode.ToString() && s["AttriButeData2"] == userIdmode.UserId) { selectedIcon.Visible = false; selectedIcon = doorlockSelected; doorlockSelected.Visible = true; } } } Btncomplete.MouseUpEventHandler += (sender, e) => { var lockConditionsInfo = new Dictionary(); lockConditionsInfo.Add("Type", "1"); lockConditionsInfo.Add("IsValid", "1"); lockConditionsInfo.Add("MacAddr", Send.CurrentDoorLock.DeviceAddr); lockConditionsInfo.Add("Epoint", Send.CurrentDoorLock.DeviceEpoint.ToString()); lockConditionsInfo.Add("Cluster_ID", "64529"); lockConditionsInfo.Add("AttriButeId", attriButeId); lockConditionsInfo.Add("AttriButeData2", attriButeData2); lockConditionsInfo.Add("AttriButeData1", "2"); lockConditionsInfo.Add("Range", "0"); if (SelectedLockStatus != "") { if (conditionsIndex == -1) { bool add = false; for (int i = 0; i < Common.Logic.CurrentLogic.Conditions.Count; i++) { if (Common.Logic.CurrentLogic.Conditions[i]["Type"] == "1") { if ((Common.Logic.CurrentLogic.Conditions[i]["MacAddr"] == Send.CurrentDoorLock.DeviceAddr) && (Common.Logic.CurrentLogic.Conditions[i]["Epoint"] == Send.CurrentDoorLock.DeviceEpoint.ToString())) { if (Common.Logic.CurrentLogic.Conditions[i]["AttriButeId"] == lockConditionsInfo["AttriButeId"] && Common.Logic.CurrentLogic.Conditions[i]["AttriButeData2"] == lockConditionsInfo["AttriButeData2"]) { add = true; break; } } } } if (!add) { Common.Logic.CurrentLogic.Conditions.Add(lockConditionsInfo); } } else { Common.Logic.CurrentLogic.Conditions.RemoveAt(conditionsIndex); Common.Logic.CurrentLogic.Conditions.Insert(conditionsIndex, lockConditionsInfo); } } else { if (conditionsIndex == -1) { var alert = new Alert(Language.StringByID(MyInternationalizationString.Prompt), Language.StringByID(MyInternationalizationString.selectdevicestatuscondition), Language.StringByID(MyInternationalizationString.complete)); alert.Show(); return; } } var lockLogicCommunalPage = new LockLogicCommunalPage(); UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; lockLogicCommunalPage.Show(() => { }); }; } } }