From c1de48884fa145a16a0f8bcee93274dcfaa0ff82 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 07 五月 2020 10:40:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into dev-2020xm

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs |  175 ++++++++++++++++++++++++++-------------------------------
 1 files changed, 80 insertions(+), 95 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
index fdac3f9..39a423b 100644
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -47,7 +47,7 @@
         /// </summary>
         bool canVolume = false;
         /// <summary>
-        /// 淇濈暀涓婁竴娆¢煶閲�
+        /// 鏄惁鏀寔甯稿紑
         /// </summary>
         bool canOpenNormallyMode = false;
         /// <summary>
@@ -182,7 +182,7 @@
         #endregion
 
         /// <summary>
-        /// UI鏄剧ず 
+        /// UI鏄剧ず
         /// </summary>
         public void Show()
         {
@@ -218,7 +218,7 @@
 
             ClickHandle();
 
-            if (doorLock.IsOnline == 1)
+            if (Common.LocalDevice.Current.CheckDeviceIsOnline(doorLock) == true)
             {
                 ReadDoorLockUserInfo();
             }
@@ -510,7 +510,7 @@
                 TextAlignment = TextAlignment.CenterLeft,
             };
             btnCurrentFrameLayout.AddChidren(btnCurrentRoomName);
-            #endregion 
+            #endregion
         }
 
         #region 闊抽噺寮圭獥
@@ -565,7 +565,7 @@
                 ThumbImagePath = "DoorLock/UnLockButton.png",//杩涘害鏉℃寜閽浘鏍�
                 ThumbImageHeight = Application.GetRealHeight(81),//杩涘害鏉℃寜閽浘鏍囩殑楂樺害锛堥粯璁ゆ鏂瑰舰锛氬鍜岄珮涓�鏍凤級
                 ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor,
-                ProgressTextSize = 12,//鏄剧ず鐧惧垎姣斿瓧浣撳ぇ灏� 
+                ProgressTextSize = 12,//鏄剧ず鐧惧垎姣斿瓧浣撳ぇ灏�
                 SeekBarViewHeight = Application.GetRealHeight(17),//杩涘害鏉$殑瀹藉害
                 Progress = currentVolume,
             };
@@ -605,15 +605,11 @@
                         {
                             return;
                         }
-                        string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                        if (doorLock.IsDoorLockNormallyMode.ContainsKey(key))
+                        if (doorLock.IsDoorLockNormallyMode)
                         {
-                            if (doorLock.IsDoorLockNormallyMode[key] == true)
-                            {
-                                if (canOpenNormallyMode)
-                                {
-                                    Application.RunOnMainThread(() => { NomallyOpenModeInvalidDialog(true); });
-                                }
+                            if (canOpenNormallyMode)
+                            {
+                                Application.RunOnMainThread(() => { NomallyOpenModeInvalidDialog(true); });
                             }
                         }
                     }
@@ -685,12 +681,10 @@
                             {
                                 tempRes = false;
                             }
-
-                            NormallyOpenModeValue(tempRes);
-
+                            DoorLockCommonInfo.NormallyOpenModeValue(doorLock, tempRes);
                             Application.RunOnMainThread(async () =>
                             {
-                                var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist();
+                                var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(2);
                                 if (resTemp == 1)
                                 {
                                     HaveLogicNormallyOpenMode = true;
@@ -714,7 +708,7 @@
                     canVolume = DoorLockCommonInfo.CanVolume(doorLock);
                     if (canVolume)
                     {
-                        //璇诲彇闊抽噺 
+                        //璇诲彇闊抽噺
                         var resultRes = await doorLock.GetVolumeAsync();
                         if (resultRes == null || resultRes.volumeResponseData == null)
                         {
@@ -770,9 +764,9 @@
 
         #endregion
 
-        #region 鍏叡浜嬩欢澶勭悊 
+        #region 鍏叡浜嬩欢澶勭悊
         /// <summary>
-        /// 浜嬩欢澶勭悊 
+        /// 浜嬩欢澶勭悊
         /// </summary>
         public void ClickHandle()
         {
@@ -790,8 +784,9 @@
             //璁剧疆
             EventHandler<MouseEventArgs> btnFuncSetHander = (sender, e) =>
             {
-                //鎵撳紑鍏朵粬鐣岄潰鏃跺墠绉婚櫎
-                RemoveFromParent();
+                //鎵撳紑鍏朵粬鐣岄潰鏃跺墠绉婚櫎銆愭殏鏃朵笉绉婚櫎銆�
+                //RemoveFromParent();
+
                 var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(currentRoom, doorLock);
                 Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting);
                 Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
@@ -837,11 +832,11 @@
                 btnCollect.IsSelected = !btnCollect.IsSelected;
                 if (btnCollect.IsSelected)
                 {
-                    HdlRoomLogic.Current.AddLoveDevice(deviceUI);//鏀惰棌 
+                    HdlRoomLogic.Current.AddLoveDevice(deviceUI);//鏀惰棌
                 }
                 else
                 {
-                    HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//鍙栨秷鏀惰棌 
+                    HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//鍙栨秷鏀惰棌
                 }
             };
             btnCollectFrameLayout.MouseDownEventHandler += handerCollect;
@@ -850,20 +845,11 @@
             //寮�閿佷簨浠�
             EventHandler<MouseEventArgs> hander1 = async (sender, e) =>
             {
-
-                string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                if (doorLock.IsDoorLockNormallyMode.ContainsKey(key))
+                if (doorLock.IsDoorLockNormallyMode)
                 {
-                    if (doorLock.IsDoorLockNormallyMode[key] == true)
-                    {
-                        if (canOpenNormallyMode)
-                        {
-                            NomallyOpenModeInvalidDialog(false);
-                        }
-                        else
-                        {
-                            OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus);
-                        }
+                    if (canOpenNormallyMode)
+                    {
+                        NomallyOpenModeInvalidDialog(false);
                     }
                     else
                     {
@@ -887,13 +873,9 @@
             {
                 if (canOpenNormallyMode)
                 {
-                    var key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-                    if (doorLock.IsDoorLockNormallyMode.ContainsKey(key))
+                    if (doorLock.IsDoorLockNormallyMode)
                     {
-                        if (doorLock.IsDoorLockNormallyMode[key] == true)
-                        {
-                            NomallyOpenModeInvalidDialog();
-                        }
+                        NomallyOpenModeInvalidDialog();
                     }
                 }
                 else
@@ -961,7 +943,7 @@
         }
         #endregion
 
-        #region 闊抽噺 
+        #region 闊抽噺
         /// <summary>
         /// 鏇存柊闊抽噺
         /// </summary>
@@ -1036,28 +1018,41 @@
         }
         #endregion
 
-        #region 甯稿紑妯″紡 
-        /// <summary>
-        /// 闂ㄩ攣甯稿紑妯″紡鍊�
-        /// </summary>
-        public void NormallyOpenModeValue(bool value)
-        {
-            string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-            if (doorLock.IsDoorLockNormallyMode.ContainsKey(key))
-            {
-                doorLock.IsDoorLockNormallyMode[key] = value;
-            }
-            else
-            {
-                doorLock.IsDoorLockNormallyMode.Add(key, value);
-            }
-        }
-
+        #region 甯稿紑妯″紡
         /// <summary>
         /// 甯稿紑妯″紡澶勭悊
         /// </summary>
         private async void NomallyOpenDialog()
         {
+            #region 鍚庣画鐗堟湰
+            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+            {
+                this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate));
+                return;
+            }
+
+            if (!UserCenterResourse.AccountOption.DoorUnLockByRemote)
+            {
+                SystemSecondAuthentication();
+                return;
+            }
+
+            action = () =>
+            {
+                //绯荤粺瀵嗙爜鏀寔鎿嶄綔闂ㄩ攣鍚庯紝璋冪敤娓╁眳鍩庣殑鐣岄潰銆愬父寮�鑷姩鍖栥��
+                var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(currentRoom, doorLock);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                functionSetting.Show();
+                // functionSetting.aaaAction = () =>
+                //{
+                //    UpdateNomallyOpenStatus();
+                //};
+            };
+            HdlCheckLogic.Current.CheckSecondarySecurity(action);
+            #endregion
+
+            #region 鏆傛椂鐗堟湰 (鏈�缁堝幓鎺夛級
             if (!btnNormallyOpen.IsSelected)
             {
                 if (UserCenterResourse.UserInfo.AuthorityNo != 1)
@@ -1102,7 +1097,7 @@
 
                             //姣忔閲嶆柊璁剧疆甯稿紑锛岄粯璁ゆ椂闂撮兘鏄�12灏忔椂
                             DoorLockCommonInfo.NormallyOpenModeInvalidTime = 12;
-                            NormallyOpenModeValue(true);
+                            DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true);
                             Application.RunOnMainThread(() =>
                             {
                                 UpdateNomallyOpenStatus();
@@ -1113,6 +1108,7 @@
                             AlreadyOpenNormallyMode();
                         }
                     };
+
                 };
                 HdlCheckLogic.Current.CheckSecondarySecurity(action);
             }
@@ -1120,6 +1116,8 @@
             {
                 NomallyOpenModeInvalidDialog();
             }
+
+            #endregion
         }
 
         /// <summary>
@@ -1147,7 +1145,7 @@
                 if (IsFromReport)
                 {
                     //涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑堬紝app榛樿浜嗏�滃父寮�妯″紡鈥濊鍙栨秷
-                    NormallyOpenModeValue(false);
+                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
                     Application.RunOnMainThread(() =>
                     {
                         UpdateNomallyOpenStatus();
@@ -1166,7 +1164,7 @@
                 else
                 {
                     //app榛樿鈥滃父寮�妯″紡鈥濊繕鏄紑鍚�
-                    NormallyOpenModeValue(true);
+                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true);
                     Application.RunOnMainThread(() =>
                     {
                         UpdateNomallyOpenStatus();
@@ -1195,11 +1193,11 @@
                     var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
                     if (result == null || result.defaultControlResponseData == null)
                     {
-                        string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
-                        this.ShowTipMsg(msg0);
-                        NormallyOpenModeValue(false);
                         Application.RunOnMainThread(() =>
                         {
+                            string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
+                            this.ShowTipMsg(msg0);
+                            DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
                             UpdateNomallyOpenStatus();
                         });
                         return;
@@ -1208,7 +1206,7 @@
                     {
                         string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed);
                         this.ShowTipMsg(msg1);
-                        NormallyOpenModeValue(false);
+                        DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
                         Application.RunOnMainThread(() =>
                         {
                             UpdateNomallyOpenStatus();
@@ -1218,13 +1216,13 @@
                     else
                     {
                         //淇濇寔鈥滃父寮�鎴愬姛鈥�
-                        NormallyOpenModeValue(true);
+                        DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true);
                         Application.RunOnMainThread(() =>
                         {
                             UpdateNomallyOpenStatus();
                         });
 
-                        //鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫 
+                        //鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫
                         var resu = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
                         //if (!resu)
                         //{
@@ -1238,7 +1236,7 @@
                 else
                 {
                     //app鎿嶄綔涓嶅彇娑堚�滃父寮�妯″紡鈥�
-                    NormallyOpenModeValue(true);
+                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true);
                     Application.RunOnMainThread(() =>
                     {
                         UpdateNomallyOpenStatus();
@@ -1251,7 +1249,7 @@
                 if (IsFromReport)
                 {
                     //涓婃姤闂ㄩ攣鈥滃父寮�妯″紡鈥濆凡缁忓彇娑堬紝鐜板湪app纭鈥滃父寮�妯″紡鈥濆彇娑�
-                    NormallyOpenModeValue(false);
+                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
                     Application.RunOnMainThread(() =>
                     {
                         UpdateNomallyOpenStatus();
@@ -1291,7 +1289,7 @@
                         HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(this.doorLock, 9002, string.Empty);
 
                         //app纭鍙栨秷鈥滃父寮�妯″紡鈥濇垚鍔�
-                        NormallyOpenModeValue(false);
+                        DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
                         Application.RunOnMainThread(() =>
                         {
                             UpdateNomallyOpenStatus();
@@ -1331,7 +1329,7 @@
             alertNomallyModeIsTurnOn.Show();
             alertNomallyModeIsTurnOn.MsgControlClickEvent += async () =>
             {
-                //榛樿鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫 
+                //榛樿鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫
                 var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
                 //if (!res)
                 //{
@@ -1359,7 +1357,7 @@
         /// </summary>
         private void NomallyOpenModeInvalidTimeDialog()
         {
-            //澶辨晥璁剧疆 
+            //澶辨晥璁剧疆
             string msgTimeInValidSetting = Language.StringByID(R.MyInternationalizationString.DoorLockOpenAllTheTime);
             var timeConfrim = Language.StringByID(R.MyInternationalizationString.Confrim);
             var alertTimeInValidSetting = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.InValid, msgTimeInValidSetting, timeConfrim);
@@ -1367,30 +1365,17 @@
 
             alertTimeInValidSetting.InvalidTimeAction += async (obj) =>
              {
-                 Regex rg = new Regex("^[0-9]+$");
-                 if (!rg.IsMatch(obj))
-                 {
-                     //蹇呴』鏄暟瀛�
-                     string msg0 = Language.StringByID(R.MyInternationalizationString.NormallyOpenModeInvalidTimeTip);
-                     this.ShowTipMsg(msg0);
-
-                     string msgTimeInValidSetting2 = Language.StringByID(R.MyInternationalizationString.DoorLockOpenAllTheTime);
-                     var timeConfrim2 = Language.StringByID(R.MyInternationalizationString.Confrim);
-                     var alertTimeInValidSetting2 = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.InValid, msgTimeInValidSetting2, timeConfrim2);
-                     alertTimeInValidSetting2.Show();
-                     return;
-                 }
                  //甯稿紑妯″紡澶辨晥鏃堕棿璁剧疆鎴愬姛
                  var temp = int.Parse(obj);
                  DoorLockCommonInfo.NormallyOpenModeInvalidTime = temp;
-                 //榛樿鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫 
+                 //榛樿鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫
                  var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
                  if (!res)
                  {
                      //榛樿鍒涘缓甯稿紑妯″紡澶辫触
                      string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed);
-                     this.ShowTipMsg(msg0);
-
+                     var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal, msg0, Language.StringByID(R.MyInternationalizationString.confrim));
+                     alert.Show();
                      //浜屾鍔犺浇寮圭獥 甯稿紑妯″紡寮�鍚彁绀�
                      NomallyOpenModeInvalidTimeDialog();
                  }
@@ -1407,8 +1392,7 @@
                 btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0);
                 return;
             }
-            string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
-            if (doorLock.IsDoorLockNormallyMode[key] == true)
+            if (doorLock.IsDoorLockNormallyMode)
             {
                 btnNormallyOpen.IsSelected = true;
                 btnDoorLockPic.IsSelected = true;
@@ -1416,7 +1400,7 @@
                 btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.DoorLockOpen);
 
             }
-            else if (doorLock.IsDoorLockNormallyMode[key] == false)
+            else if (!doorLock.IsDoorLockNormallyMode)
             {
                 btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose);
                 btnDoorLockPic.IsSelected = false;
@@ -1426,7 +1410,7 @@
         }
         #endregion
 
-        #region 寮�閿佸鐞� 
+        #region 寮�閿佸鐞�
         /// <summary>
         /// 寮�閿佸鐞�
         /// </summary>
@@ -1505,6 +1489,7 @@
                 CommonPage.Instance.IsDrawerLockMode = false;
             }
             ZbGateway.StatusList.Remove(this);
+            DoorLockCommonInfo.LogicAction = null;
             base.RemoveFromParent();
         }
         #endregion

--
Gitblit v1.8.0