New file |
| | |
| | | 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(); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 读取当前门锁的云端数据; |
| | | /// </summary> |
| | | 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); |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | /// <summary> |
| | | /// 显示所有用户 |
| | | /// </summary> |
| | | 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); |
| | | }; |
| | | |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 选择某个用户 |
| | | /// </summary> |
| | | /// <param name="user">触发源列表</param> |
| | | 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<MouseEventArgs> 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<string, string>(); |
| | | 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<string, string>(); |
| | | accounts.Add("Type", "1"); |
| | | accounts.Add("Account", Config.Instance.Guid); |
| | | accounts.Add("AccountName",accountName); |
| | | 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(() => { }); |
| | | }; |
| | | } |
| | | |
| | | } |
| | | } |