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 bool edit = false; VerticalRefreshLayout middle; CommonDevice common; Dictionary editdeviceConditionsInfo; public void Show(CommonDevice commondevice, Dictionary editdeviceConditions = null) { common = commondevice; editdeviceConditionsInfo = editdeviceConditions; 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 = 17, 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, IsBold = true, }; 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 middle = new VerticalRefreshLayout { Y = topRowLayout.Bottom, Height = Application.GetRealHeight(1920 - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); middle.BeginHeaderRefreshingAction += () => { //重新刷新logic列表 string macport = common.DeviceAddr + "_" + common.DeviceEpoint.ToString(); for (int i = 0; i < Send.LockList.Count; i++) { if (Send.LockList[i].DoorLockMacPort == macport) { ///从列表移除当前门锁全部的旧数据; Send.LockList.Remove(Send.LockList[i]); i--; } } Read(); //关闭刷新View; middle.EndHeaderRefreshing(); }; Read(); } /// /// 读取当前门锁的云端数据; /// public void Read() { 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; } } CommonPage.Loading.Start(); middle.RemoveAll(); System.Threading.Tasks.Task.Run(async () => { try { if (!d) { var allMemberslist = await Send.AllMembers(macport); Send.LockList.AddRange(allMemberslist); } } catch { } finally { Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); UserList(macport); }); } }); } /// /// 成员列表的方法 /// /// public void UserList(string macport) { foreach (var user in Send.LockList) { if (user.DoorLockMacPort != macport) { continue; } var userFramelayout = new FrameLayout { 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, TextSize = 14, }; 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) => { User(user); }; userBtn.MouseUpEventHandler += useridclick; userBack.MouseUpEventHandler += useridclick; userFramelayout.MouseUpEventHandler += useridclick; userRow.MouseUpEventHandler += useridclick; } } /// /// 当前成员信息的方法 /// /// public void User(Send.MembershipIfon user) { 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, TextSize = 14, }; 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), TextSize = 14, }; lockRow.AddChidren(Btncomplete); #endregion ///定两个变量记录之前的只值; string userId = ""; string openMode = ""; string accountname = ""; string SelectedDeviceStatuscondition = ""; lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * user.UserIdMode.Count) - 20 - 50); lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * user.UserIdMode.Count) + 20 + 50); if (user.UserIdMode.Count > 9) { ///元素超出10个,暂时默认显示10; lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * 9) - 20 - 50); lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * 9) + 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, TextSize = 14, }; doorlockRow.AddChidren(doorlockBtn); 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 addConditions = false; bool addAccounts = 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); addConditions = true; break; } } } } for (int j = 0; j < Common.Logic.CurrentLogic.Accounts.Count; j++) { if (Common.Logic.CurrentLogic.Accounts[j]["Type"] == "1") { if (Common.Logic.CurrentLogic.Accounts[j]["UserId"] == userIdstr) { Common.Logic.CurrentLogic.Accounts.RemoveAt(j); Common.Logic.CurrentLogic.Accounts.Insert(j, userdictionary); addAccounts = true; break; } } } if (!addConditions) { Common.Logic.CurrentLogic.Conditions.Add(deviceConditionsInfo); } if (!addAccounts) { Common.Logic.CurrentLogic.Accounts.Add(userdictionary); } } else { if (!edit) { var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal, Language.StringByID(MyInternationalizationString.selectdevicestatuscondition), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); return; } } flMain.RemoveFromParent(); var logicCommunalPage = new LogicCommunalPage(); UserView.HomePage.Instance.AddChidren(logicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; logicCommunalPage.Show(() => { }); }; } } }