From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 09:07:13 +0800 Subject: [PATCH] 新云端Ver1.3 --- ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs | 504 ++++++++++++++++++++++++------------------------------- 1 files changed, 222 insertions(+), 282 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs index ea49ce1..4be6deb 100755 --- a/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs +++ b/ZigbeeApp/Shared/Phone/Device/Logic/DoorLockLogic/AddCondition.cs @@ -9,73 +9,53 @@ { public AddCondition() { - Tag = "LockLogic"; + Tag = "Logic"; } Button selectedIcon = new Button(); - + VerticalRefreshLayout middle; public int conditionsIndex = -1; - public async void Show() + + public void Show() { - #region 鏈�涓婇潰鐨勫竷灞�浠g爜 - var topRowLayout = new RowLayout - { - BackgroundColor = ZigbeeColor.Current.LogicTopBackgroundColor, - Height = Application.GetRealHeight(184), - LineColor = ZigbeeColor.Current.LogicRowLayoutTopLineColor, - }; - this.AddChidren(topRowLayout); - var titleName = new Button + #region 鐣岄潰甯冨眬浠g爜 + TopView view = new TopView(); + this.AddChidren(view.TopRowView()); + view.toptitleNameBtn.TextID = MyInternationalizationString.userlist; + view.clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; + middle = new VerticalRefreshLayout { - 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, - //Text = "閫夋嫨鐢ㄦ埛", - }; - 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 - - var middle = new VerticalScrolViewLayout - { - Y = topRowLayout.Bottom, - Height = Application.GetRealHeight(1920 - 184), + 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++) @@ -86,25 +66,35 @@ d = true; break; } - } - - if (!d) + CommonPage.Loading.Start(); + middle.RemoveAll(); + System.Threading.Tasks.Task.Run(async () => { - - var allMemberslist = await Send.AllMembers(Send.CurrentDoorLock.DeviceAddr); - Send.LockList.AddRange(allMemberslist); - } - UserAllView(middle, macport); - + try + { + if (!d) + { + var allMemberslist = await Send.AllMembers(macport); + Send.LockList.AddRange(allMemberslist); + } + } + catch { } + finally + { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + UserAllView(macport); + }); + } + }); } /// <summary> /// 鏄剧ず鎵�鏈夌敤鎴� /// </summary> - /// <param name="middle"></param> - void UserAllView(VerticalScrolViewLayout middle,string macport) + public void UserAllView(string macport) { - for (int i = 0; i < Send.LockList.Count; i++) { var user = Send.LockList[i]; @@ -112,237 +102,148 @@ { continue; } - var userFramelayout = new FrameLayout + + 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) { - Height = Application.GetRealHeight(160), - BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, - }; - middle.AddChidren(userFramelayout); - - var userRow = new RowLayout + userView.funFrameLayout.Height = Application.GetRealHeight(160 + 20);//鏈�鍚庝竴琛屽鍔�20楂樺害; + userView.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor; + } + middle.AddChidren(userView.FunFrameView()); + userView.clickviewBtn.MouseUpEventHandler += (sender, e) => { - Y = Application.GetRealHeight(30), - Width = Application.GetRealWidth(1080 - 58 - 58), - Height = Application.GetRealHeight(130), - X = Application.GetRealWidth(58), - LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, + SelectedUserID(user); }; - userFramelayout.AddChidren(userRow); - - var usernameBtn = new Button - { - Text = user.UserName, - TextAlignment = TextAlignment.CenterLeft, - TextColor = ZigbeeColor.Current.LogicTextBlackColor, - Width = Application.GetRealWidth(600), - Height = Application.GetRealHeight(130), - Tag = Send.LockList[i], - }; - userRow.AddChidren(usernameBtn); - - var btntimeback = new Button - { - Width = Application.GetRealWidth(58), - Height = Application.GetRealHeight(58), - UnSelectedImagePath = "ZigeeLogic/next.png", - X = userRow.Width - Application.GetRealWidth(58), - Gravity = Gravity.CenterVertical, - }; - userRow.AddChidren(btntimeback); - - - EventHandler<MouseEventArgs> userclick = (sender, e) => - { - SelectedUserID(user.UserIdMode, usernameBtn.Text); - }; - usernameBtn.MouseUpEventHandler += userclick; - btntimeback.MouseUpEventHandler += userclick; - userFramelayout.MouseUpEventHandler += userclick; - userRow.MouseUpEventHandler += userclick; - } } /// <summary> /// 閫夋嫨鏌愪釜鐢ㄦ埛 /// </summary> - /// <param name="membershipIfon">瑙﹀彂婧愬垪琛�</param> - /// <param name="userName">鐢ㄦ埛鍚嶅瓧</param> - void SelectedUserID(List<Send.UnlockingMode> membershipIfon, string userName) { + /// <param name="user">瑙﹀彂婧愬垪琛�</param> + public void SelectedUserID(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); - + int count = user.UserIdMode.Count; #region -------鍙栨秷 瀹屾垚 - var lockRow = new RowLayout + 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) => { - 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; + flMain.RemoveFromParent(); }; - - 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 =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); + flMain.MouseUpEventHandler += clickcancel; + completeView.Btncancel.MouseUpEventHandler += clickcancel; #endregion - - string SelectedLockStatus = ""; - lockcolorfra1.Y = Application.GetRealHeight(1920 - 140 - (160 * membershipIfon.Count) - 20 - 50); - lockcolorfra1.Height = Application.GetRealHeight(140 + (160 * membershipIfon.Count) + 20 + 50); - ///瀹氫箟涓や釜鍙橀噺璁板綍閫変腑鐘舵�侊紱 - string attriButeId ="", attriButeData2 =""; - for (int j = 0; j < membershipIfon.Count; j++) + //鍏冪礌瓒呭嚭9涓氨鐢ㄤ笂涓嬫粦鍔ㄦ帶浠�; + VerticalScrolViewLayout vV = null; + if (count > 9) { - var userIdmode = membershipIfon[j]; - var doorlockfra = new FrameLayout + ///鍏冪礌瓒呭嚭9涓�; + count = 6; + //鍏冪礌瓒呭嚭9涓氨鐢ㄤ笂涓嬫粦鍔ㄦ帶浠�; + vV = new VerticalScrolViewLayout { - Height = Application.GetRealHeight(160), - Y = lockRow.Bottom + Application.GetRealHeight(20 + 160 * j), + Y = Application.GetRealHeight(140 + 20), + Height = Application.GetRealHeight(160 * count), }; - lockcolorfra1.AddChidren(doorlockfra); + //鍏冪礌瓒呭嚭9涓氨鐢ㄤ笂涓嬫粦鍔ㄦ帶浠�; + completeView.Show(count).AddChidren(vV); + //娓呴櫎涔嬪墠鐨勬帶浠�; + vV.RemoveAll(); + } + ///瀹氫袱涓彉閲忚褰曚箣鍓嶇殑鍙�硷紱 + string userId = ""; + string openMode = ""; + string accountName = ""; + string SelectedDeviceStatuscondition = ""; + for (int i = 0; i < user.UserIdMode.Count; i++) + { + var userifon = user.UserIdMode[i]; - var doorlockRow = new RowLayout + mFunView lockView = new mFunView(); + if (user.UserIdMode.Count > 9) { - 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 = userIdmode.ModeName, - }; - doorlockRow.AddChidren(doorlockBtn); - //(0鎸夐敭/3鍗�/15鎸囩汗) - //switch (userIdmode.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 ((membershipIfon.Count - 1) == j) - { - doorlockRow.LineColor = ZigbeeColor.Current.LogicBackgroundColor; + + vV.AddChidren(lockView.Show()); } - EventHandler<MouseEventArgs> doorlockclick = (sender2, e2) => + else { - SelectedLockStatus = "DoorLock"; + 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 = doorlockSelected; - doorlockSelected.Visible = true; - //doorlockBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; - attriButeId = userIdmode.OpenMode.ToString(); - attriButeData2 = userIdmode.UserId; + selectedIcon = lockView.selectedIconBtn; + lockView.selectedIconBtn.Visible = true; + userId = userifon.UserId; + openMode = userifon.OpenMode.ToString(); + accountName = completeView.Btntitle.Text + lockView.titleBtn.Text; }; - doorlockRow.MouseUpEventHandler += doorlockclick; - doorlockBtn.MouseUpEventHandler += doorlockclick; - doorlockSelected.MouseUpEventHandler += doorlockclick; - doorlockfra.MouseUpEventHandler += doorlockclick; - ///鏄剧ず涔嬪墠鐨勭姸鎬� + + + 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) { - var s = Common.Logic.CurrentLogic.Conditions[conditionsIndex]; - if (s["AttriButeId"] == userIdmode.OpenMode.ToString() && s["AttriButeData2"] == userIdmode.UserId) + + ///鏄剧ず涔嬪墠鐨勭姸鎬� + if (conditionsIndex != -1) { - selectedIcon.Visible = false; - selectedIcon = doorlockSelected; - doorlockSelected.Visible = true; + 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; + } + } + } + } - - Btncomplete.MouseUpEventHandler += (sender, e) => + completeView.Btncomplete.MouseUpEventHandler += (sender, e) => { var lockConditionsInfo = new Dictionary<string, string>(); lockConditionsInfo.Add("Type", "1"); @@ -350,15 +251,24 @@ lockConditionsInfo.Add("MacAddr", Send.CurrentDoorLock.DeviceAddr); lockConditionsInfo.Add("Epoint", Send.CurrentDoorLock.DeviceEpoint.ToString()); lockConditionsInfo.Add("Cluster_ID", "64529"); - lockConditionsInfo.Add("AttriButeId", attriButeId); - lockConditionsInfo.Add("AttriButeData2", attriButeData2); + lockConditionsInfo.Add("AttriButeId", openMode); + lockConditionsInfo.Add("AttriButeData2", userId); lockConditionsInfo.Add("AttriButeData1", "2"); lockConditionsInfo.Add("Range", "0"); - if (SelectedLockStatus != "") + var accounts = new Dictionary<string, string>(); + 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 add = false; + 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") @@ -367,23 +277,53 @@ { if (Common.Logic.CurrentLogic.Conditions[i]["AttriButeId"] == lockConditionsInfo["AttriButeId"] && Common.Logic.CurrentLogic.Conditions[i]["AttriButeData2"] == lockConditionsInfo["AttriButeData2"]) { - add = true; + addCondition = true; break; } } } } - - if (!add) + + 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; + } + } + } + } } @@ -391,9 +331,9 @@ { if (conditionsIndex == -1) { - var alert = new Alert(Language.StringByID(MyInternationalizationString.Prompt), - Language.StringByID(MyInternationalizationString.selectdevicestatuscondition), - Language.StringByID(MyInternationalizationString.complete)); + var alert = new ShowMsgControl(ShowMsgType.Normal, + Language.StringByID(MyInternationalizationString.usertip), + Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); return; } @@ -404,6 +344,6 @@ lockLogicCommunalPage.Show(() => { }); }; } - + } } -- Gitblit v1.8.0