using System; using Shared; using Shared.R; using System.Collections.Generic; using Newtonsoft.Json.Linq; using ZigBee.Device; using Shared.Common; namespace Shared.Phone.Device.Logic { public class MemberList : FrameLayout { public MemberList() { Tag = "Logic"; } Button selectedIcon = new Button(); public static Action action; public static bool edit=false; public async void Show(CommonDevice common, Dictionary editdeviceConditionsInfo=null) { UserView.HomePage.Instance.ScrollEnabled = false; this.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; #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, }; 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(); action(); }; 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 = common.DeviceAddr + "_" + common.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(common.DeviceAddr); Send.LockList.AddRange(allMemberslist); } foreach (var user in Send.LockList) { if (user.DoorLockMacPort != macport) { continue; } var userFramelayout = new RowLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, LineColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(userFramelayout); var userRow = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(1080 - 81 - 58), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(81), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; userFramelayout.AddChidren(userRow); var userBtn = new Button { Text = user.UserName, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, }; userRow.AddChidren(userBtn); var userBack = new Button { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), UnSelectedImagePath = "ZigeeLogic/next.png", X = Application.GetRealWidth(1080 - 81 - 58 - 58), Gravity = Gravity.CenterVertical, }; userRow.AddChidren(userBack); EventHandler useridclick = (sender, e) => { 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 = user.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 userId = "", openMode = "", accountname="", SelectedDeviceStatuscondition = ""; lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * user.UserIdMode.Count) - 20 - 50); lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * user.UserIdMode.Count) + 20 + 50); for (int i = 0; i < user.UserIdMode.Count; i++) { var userifon = user.UserIdMode[i]; var doorlockfra = new FrameLayout { Height = Application.GetRealHeight(160), Y = lockRow.Bottom + Application.GetRealHeight(20 + 160 * i), }; 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= userifon.ModeName, }; doorlockRow.AddChidren(doorlockBtn); //(1按键/3卡/15指纹) //switch (userifon.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 ((user.UserIdMode.Count - 1) == i) { doorlockRow.LineColor = ZigbeeColor.Current.LogicBackgroundColor; } EventHandler doorlockclick = (sender2, e2) => { SelectedDeviceStatuscondition = "DoorLock"; selectedIcon.Visible = false; selectedIcon = doorlockSelected; doorlockSelected.Visible = true; userId = userifon.UserId; openMode = userifon.OpenMode.ToString(); accountname = Btntitle.Text + doorlockBtn.Text; //doorlockBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; }; doorlockRow.MouseUpEventHandler += doorlockclick; doorlockBtn.MouseUpEventHandler += doorlockclick; doorlockSelected.MouseUpEventHandler += doorlockclick; doorlockfra.MouseUpEventHandler += doorlockclick; if (edit && editdeviceConditionsInfo != null) { if (editdeviceConditionsInfo["AttriButeData2"] == userifon.UserId.ToString()) { selectedIcon.Visible = false; selectedIcon = doorlockSelected; doorlockSelected.Visible = true; } } } Btncomplete.MouseUpEventHandler += (sender3, e3) => { string userIdstr = "", openModestr=""; var deviceConditionsInfo = new Dictionary(); var userdictionary = new Dictionary(); deviceConditionsInfo.Add("Type", "1"); deviceConditionsInfo.Add("IsValid", "1"); deviceConditionsInfo.Add("MacAddr", common.DeviceAddr); deviceConditionsInfo.Add("Epoint", common.DeviceEpoint.ToString()); deviceConditionsInfo.Add("Cluster_ID", "64529"); deviceConditionsInfo.Add("AttriButeData1", "2"); deviceConditionsInfo.Add("Range", "0"); deviceConditionsInfo.Add("AttriButeId", openMode); deviceConditionsInfo.Add("AttriButeData2", userId); userdictionary.Add("Account",accountname); userdictionary.Add("Type", "1"); userdictionary.Add("UserId", userId); if (edit) { openModestr = editdeviceConditionsInfo["AttriButeId"]; userIdstr = editdeviceConditionsInfo["AttriButeData2"]; } else { openModestr = deviceConditionsInfo["AttriButeId"]; userIdstr = deviceConditionsInfo["AttriButeData2"]; } if (SelectedDeviceStatuscondition != "") { 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"] == common.DeviceAddr) && (Common.Logic.CurrentLogic.Conditions[i]["Epoint"] == common.DeviceEpoint.ToString())) { if (Common.Logic.CurrentLogic.Conditions[i]["AttriButeId"] == openModestr && Common.Logic.CurrentLogic.Conditions[i]["AttriButeData2"] == userIdstr) { Common.Logic.CurrentLogic.Conditions.RemoveAt(i); Common.Logic.CurrentLogic.Conditions.Insert(i, deviceConditionsInfo); for (int j = 0; j < Common.Logic.CurrentLogic.Accounts.Count; j++) { if (Common.Logic.CurrentLogic.Accounts[j]["UserId"] == userIdstr) { Common.Logic.CurrentLogic.Accounts.RemoveAt(j); Common.Logic.CurrentLogic.Accounts.Insert(j, userdictionary); } } add = true; break; } } } } if (!add) { Common.Logic.CurrentLogic.Accounts.Add(userdictionary); Common.Logic.CurrentLogic.Conditions.Add(deviceConditionsInfo); } } else { if (!edit) { var alert = new Alert(Language.StringByID(MyInternationalizationString.Prompt), Language.StringByID(MyInternationalizationString.selectdevicestatuscondition), Language.StringByID(MyInternationalizationString.complete)); alert.Show(); return; } } flMain.RemoveFromParent(); var logicCommunalPage = new LogicCommunalPage(); UserView.HomePage.Instance.AddChidren(logicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; logicCommunalPage.Show(() => { }); }; }; userBtn.MouseUpEventHandler += useridclick; userBack.MouseUpEventHandler += useridclick; userFramelayout.MouseUpEventHandler += useridclick; userRow.MouseUpEventHandler += useridclick; } } } }