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; #region 界面布局代码 UserView.HomePage.Instance.ScrollEnabled = false; this.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; TopView view = new TopView(); this.AddChidren(view.TopRowView()); view.toptitleNameBtn.TextID = MyInternationalizationString.userlist; view.clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; middle = new VerticalRefreshLayout { Y = view.topRowLayout.Bottom, Height = Application.GetRealHeight(Method.H - 184), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); #endregion 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) { for (int i=0;i { User(user); }; } } /// /// 当前成员信息的方法 /// /// public void User(Send.MembershipIfon user) { int count = user.UserIdMode.Count; #region -------取消 完成 var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicTranslucentColor }; this.AddChidren(flMain); CompleteView completeView = new CompleteView(); flMain.AddChidren(completeView.Show(count)); completeView.Btntitle.Text = user.UserName; EventHandler clickcancel = (sender, e) => { UserView.HomePage.Instance.ScrollEnabled = true; flMain.RemoveFromParent(); }; flMain.MouseUpEventHandler += clickcancel; completeView.Btncancel.MouseUpEventHandler += clickcancel; //元素超出9个就用上下滑动控件; VerticalScrolViewLayout vV = null; if (count > 9) { ///元素超出9个; count = 6; //元素超出9个就用上下滑动控件; vV = new VerticalScrolViewLayout { Y = Application.GetRealHeight(140 + 20), Height = Application.GetRealHeight(160 * count), }; //元素超出9个就用上下滑动控件; completeView.Show(count).AddChidren(vV); //清除之前的控件; vV.RemoveAll(); } #endregion ///定两个变量记录之前的只值; string userId = ""; string openMode = ""; string accountName = ""; string SelectedDeviceStatuscondition = ""; for (int i = 0; i < user.UserIdMode.Count; i++) { var userifon = user.UserIdMode[i]; mFunView lockView = new mFunView(); if (user.UserIdMode.Count > 9) { vV.AddChidren(lockView.Show()); } else { lockView.frameLayout.Y = Application.GetRealHeight(140 + 20 + 160 * i); completeView.Show(count).AddChidren(lockView.Show()); } lockView.titleBtn.Text = userifon.ModeName; if ((user.UserIdMode.Count - 1) == i) { lockView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor; } lockView.clickviewBtn.MouseUpEventHandler += (sender, e) => { SelectedDeviceStatuscondition = "DoorLock"; selectedIcon.Visible = false; selectedIcon = lockView.selectedIconBtn; lockView.selectedIconBtn.Visible = true; userId = userifon.UserId; openMode = userifon.OpenMode.ToString(); accountName = completeView.Btntitle.Text + lockView.titleBtn.Text; }; if (string.IsNullOrEmpty(lockView.titleBtn.Text)) { string strname = ""; switch (userifon.OpenMode) { case 0: { strname = Language.StringByID(MyInternationalizationString.lockpassword); } break; case 3: { strname = Language.StringByID(MyInternationalizationString.ic); } break; case 15: { strname = Language.StringByID(MyInternationalizationString.fingerprint); } break; } lockView.titleBtn.Text = userifon.UserId + strname; } if (edit && editdeviceConditionsInfo != null) { if (editdeviceConditionsInfo["AttriButeData2"] == userifon.UserId.ToString()) { selectedIcon.Visible = false; selectedIcon = lockView.selectedIconBtn; lockView.selectedIconBtn.Visible = true; } } } completeView.Btncomplete.MouseUpEventHandler += (sender, e) => { 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", Config.Instance.Guid); userdictionary.Add("AccountName", 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 ShowMsgControl(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(() => { }); }; } } }