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 = "Logic"; } Button selectedIcon = new Button(); VerticalRefreshLayout middle; public int conditionsIndex = -1; public void Show() { #region 界面布局代码 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 = Send.CurrentDoorLock.DeviceAddr + "_" + Send.CurrentDoorLock.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 = 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; } } 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(); UserAllView(macport); }); } }); } /// /// 显示所有用户 /// public void UserAllView(string macport) { for (int i = 0; i < Send.LockList.Count; i++) { var user = Send.LockList[i]; if (user.DoorLockMacPort != macport) { continue; } FunView userView = new FunView(); userView.iconBtn.Visible = false; userView.funnameBtn.X = Application.GetRealWidth(81); userView.funnameBtn.Text = user.UserName; userView.funnextBtn.X = Application.GetRealWidth(1080 - 81 - 58); userView.lineBtn.X = Application.GetRealWidth(81); userView.lineBtn.Width = Application.GetRealWidth(1080 - 81 - 58); if (Send.LockList.Count - 1 == i) { userView.funFrameLayout.Height = Application.GetRealHeight(160 + 20);//最后一行增加20高度; userView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor; } middle.AddChidren(userView.FunFrameView()); userView.clickviewBtn.MouseUpEventHandler += (sender, e) => { SelectedUserID(user); }; } } /// /// 选择某个用户 /// /// 触发源列表 public void SelectedUserID(Send.MembershipIfon user) { //元素超出9个就用上下滑动控件; VerticalScrolViewLayout vV = null; int count = user.UserIdMode.Count; if (count > 9) { ///元素超出9个; count = 6; //元素超出9个就用上下滑动控件; vV = new VerticalScrolViewLayout { Y = Application.GetRealHeight(140 + 20), Height = Application.GetRealHeight(160 * count), }; //清除之前的控件; vV.RemoveAll(); } #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; #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) { //元素超出9个就用上下滑动控件; completeView.Show(count).AddChidren(vV); 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 (conditionsIndex != -1) { ///显示之前的状态 if (conditionsIndex != -1) { var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex]; if (s["AttriButeId"] == userifon.OpenMode.ToString() && s["AttriButeData2"] == userifon.UserId) { selectedIcon.Visible = false; selectedIcon = lockView.selectedIconBtn; lockView.selectedIconBtn.Visible = true; } } } } completeView.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", openMode); lockConditionsInfo.Add("AttriButeData2", userId); lockConditionsInfo.Add("AttriButeData1", "2"); lockConditionsInfo.Add("Range", "0"); var accounts = new Dictionary(); accounts.Add("Type", "1"); accounts.Add("Account", Config.Instance.Guid); accounts.Add("AccountName",accountName); ///mac+端口是为识别是那个门锁; accounts.Add("Option4", Send.CurrentDoorLock.DeviceAddr); accounts.Add("Option2", Send.CurrentDoorLock.DeviceEpoint.ToString()); accounts.Add("UserId", userId); if (SelectedDeviceStatuscondition != "") { if (conditionsIndex == -1) { bool addCondition = false; bool addAccount = 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"]) { addCondition = true; break; } } } } for (int i = 0; i < Common.Logic.CurrentLogic.Accounts.Count; i++) { if (Common.Logic.CurrentLogic.Accounts[i]["Type"] == "1") { if (Common.Logic.CurrentLogic.Accounts[i]["UserId"] == userId) { addAccount = true; break; } } } if (!addCondition) {//没有存在数据新加 Common.Logic.CurrentLogic.Conditions.Add(lockConditionsInfo); } if (!addAccount) {//没有存在数据新加 Common.Logic.CurrentLogic.Accounts.Add(accounts); } } else { ///找出之前的旧数据移除掉,再重新添加新数据; string accountuserId = Common.Logic.CurrentLogic.Conditions[conditionsIndex]["AttriButeData2"]; Common.Logic.CurrentLogic.Conditions.RemoveAt(conditionsIndex); Common.Logic.CurrentLogic.Conditions.Insert(conditionsIndex, lockConditionsInfo); for (int i = 0; i < Common.Logic.CurrentLogic.Accounts.Count; i++) { if (Common.Logic.CurrentLogic.Accounts[i]["Type"] == "1") { ///找出之前的旧数据移除掉,再重新添加新数据; if (Common.Logic.CurrentLogic.Accounts[i]["UserId"] == accountuserId) { Common.Logic.CurrentLogic.Accounts.RemoveAt(i); Common.Logic.CurrentLogic.Accounts.Insert(i, accounts); break; } } } } } else { if (conditionsIndex == -1) { var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal, Language.StringByID(MyInternationalizationString.usertip), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); return; } } var lockLogicCommunalPage = new LockLogicCommunalPage(); UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; lockLogicCommunalPage.Show(() => { }); }; } } }