From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 10 七月 2020 10:52:13 +0800
Subject: [PATCH] 2020-07-10-01

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs |  318 +++++++---------------------------------------------
 1 files changed, 46 insertions(+), 272 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
old mode 100644
new mode 100755
index 09fe2ae..9856a3c
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -17,12 +17,24 @@
         public UserDoorLockPage(Room room, CommonDevice doorLock)
         {
             //寰愭鐨勯棬閿佺晫闈㈡墦寮�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�)
-            ControlCommonResourse.IsDoorLockPageOpen = true;
+            //ControlCommonResourse.IsDoorLockPageOpen = true; 
             this.doorLock = doorLock as ZigBee.Device.DoorLock;
             currentRoom = room;
             deviceUI = doorLock;
             BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor;
             ZbGateway.StatusList.Add(this);
+            Application.RunOnMainThread(() =>
+            {
+                UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction += (DoorlockKey, status) =>
+                {
+                    var key = doorLock.DeviceAddr;
+                    if (DoorlockKey == key)
+                    {
+                        DoorLockCommonInfo.NormallyOpenModeValue(this.doorLock, status);
+                        UpdateNomallyOpenStatus();
+                    }
+                };
+            });
         }
 
         #region  鍙橀噺鐢虫槑
@@ -42,11 +54,6 @@
         /// 閫昏緫涓槸鍚︽湁甯稿紑妯″紡
         /// </summary>
         private bool haveLogicNormallyOpenMode = false;
-
-        /// <summary>
-        /// 闂ㄩ攣娣卞害鎺у埗涓婃姤绐楀彛鏄惁寮瑰嚭
-        /// </summary>
-        public static bool canShowDialog = true;
 
         /// <summary>
         /// 褰撳墠鐢甸噺
@@ -668,7 +675,7 @@
                     canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock);
                     if (canOpenNormallyMode)
                     {
-                        //鑾峰彇闂ㄩ攣甯稿紑妯″紡
+                        //1銆佽幏鍙栭棬閿佸父寮�妯″紡
                         var resultRes = await DoorLockCommonInfo.GetNormallyOpenMode(doorLock);
                         if (resultRes == null)
                         {
@@ -692,16 +699,17 @@
                                 tempRes = false;
                             }
                             DoorLockCommonInfo.NormallyOpenModeValue(doorLock, tempRes);
+
                             Application.RunOnMainThread(async () =>
                             {
-                                var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3,doorLock);
-                                if (resTemp == 1)
-                                {
-                                    haveLogicNormallyOpenMode = true;
-                                }
-                                else if (resTemp == 0)
+                                var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(2, doorLock);
+                                if (resTemp == 0)
                                 {
                                     haveLogicNormallyOpenMode = false;
+                                }
+                                else
+                                {
+                                    haveLogicNormallyOpenMode = true;
                                 }
                             });
                         }
@@ -718,7 +726,7 @@
                     canVolume = DoorLockCommonInfo.CanVolume(doorLock);
                     if (canVolume)
                     {
-                        //璇诲彇闊抽噺 
+                        //2銆佽鍙栭煶閲� 
                         var resultRes = await doorLock.GetVolumeAsync();
                         if (resultRes == null || resultRes.volumeResponseData == null)
                         {
@@ -752,7 +760,7 @@
                         });
                     }
 
-                    //璇诲彇闂ㄩ攣鐢甸噺锛氱皣ID锛�1 灞炴�D 33
+                    //3銆佽鍙栭棬閿佺數閲忥細绨嘔D锛�1 灞炴�D 33
                     doorLock.ReadAttri(Cluster_ID.Power, AttriButeId.DoorLockPower);
                     //涓婃姤鐢甸噺绛�1绉�
                     System.Threading.Thread.Sleep(1000);
@@ -798,7 +806,7 @@
                 Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting);
                 Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                 functionSetting.Show();
-                canShowDialog = false;
+                //DoorLockCommonInfo.canShowDialog = false;
                 functionSetting.devicNameAction += (deviceRename) =>
                 {
                     if (!string.IsNullOrEmpty(deviceRename))
@@ -829,7 +837,7 @@
                 //鍘嗗彶璁板綍 ----   stan
                 var form = new DeviceDoorLock.DoorLockHistoryLogForm();
                 form.AddForm(this.doorLock.DeviceAddr);
-                canShowDialog = false;
+                //DoorLockCommonInfo.canShowDialog = false;
             };
             btnRecordFrameLayout.MouseDownEventHandler += handerRecord;
             btnRecord.MouseDownEventHandler += handerRecord;
@@ -853,7 +861,6 @@
             //寮�閿佷簨浠�
             EventHandler<MouseEventArgs> hander1 = async (sender, e) =>
             {
-                canShowDialog = true;
                 if (doorLock.IsDoorLockNormallyMode)
                 {
                     if (canOpenNormallyMode)
@@ -887,7 +894,6 @@
             //鍏抽攣浜嬩欢
             EventHandler<MouseEventArgs> hander2 = (sender, e) =>
             {
-                canShowDialog = true;
                 if (canOpenNormallyMode)
                 {
                     if (doorLock.IsDoorLockNormallyMode)
@@ -1062,7 +1068,7 @@
 
             action = () =>
             {
-                //绯荤粺瀵嗙爜鏀寔鎿嶄綔闂ㄩ攣鍚庯紝璋冪敤娓╁眳鍩庣殑鐣岄潰銆愬父寮�鑷姩鍖栥��
+                //WJC鐨勪唬鐮侊細绯荤粺瀵嗙爜鏀寔鎿嶄綔闂ㄩ攣鍚庯紝璋冪敤娓╁眳鍩庣殑鐣岄潰銆愬父寮�鑷姩鍖栥��
                 if (doorLock == null)
                 {
                     ///闃叉鎶涘紓甯�
@@ -1080,262 +1086,31 @@
                 UserView.HomePage.Instance.AddChidren(addLogicPage);
                 UserView.HomePage.Instance.PageIndex += 1;
                 addLogicPage.Show();
-                addLogicPage.action += (w) =>
-                {
-                    doorLock.IsDoorLockNormallyMode = w;
-                    UpdateNomallyOpenStatus();
-                    //杩斿洖鎸夐敭娓呯┖褰撳墠閫昏緫瀹氫箟鐨凩ogicAction
-                    UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null;
-                };
+                addLogicPage.action += async (w) =>
+                 {
+                     DoorLockCommonInfo.NormallyOpenModeValue(doorLock, w);
+                     UpdateNomallyOpenStatus();
+                     //杩斿洖鎸夐敭娓呯┖褰撳墠閫昏緫瀹氫箟鐨凩ogicAction
+                     UserCenter.DoorLock.DoorLockCommonInfo.LogicAction = null;
+                     //鏄惁瀛樺湪甯稿紑妯″紡
+                     var resTemp = Shared.Common.Logic.SoneLogicList;
+                     if (resTemp.Count == 0)
+                     {
+                         haveLogicNormallyOpenMode = false;
+                     }
+                     else
+                     {
+                         haveLogicNormallyOpenMode = true;
+                     }
+
+                     UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction -= addLogicPage.updateCurrentDoorlockActionTemp;
+                 };
             };
             HdlCheckLogic.Current.CheckSecondarySecurity(action);
 
         }
 
         /// <summary>
-        /// 甯稿紑妯″紡澶辨晥澶勭悊
-        /// </summary>
-        private void NomallyOpenModeInvalidDialog(bool IsFromReport = false)
-        {
-            if (!canShowDialog)
-            {
-                return;
-            }
-
-            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-            {
-                this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate));
-                return;
-            }
-            string msg = Language.StringByID(R.MyInternationalizationString.NomallyModeIsCanceled).Replace("{0}", "\r\n");
-            var confirm = Language.StringByID(R.MyInternationalizationString.SureCancel);
-            var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.NomallyOpenMode, msg, confirm);
-            if (haveLogicNormallyOpenMode)
-            {
-                //鏈夐�昏緫璁剧疆鐨勫脊绐�
-                alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.CancelNomallyOpenModeWithLogic, msg, confirm);
-            }
-            alert.Show();
-
-            alert.MsgControlClickEvent += async () =>
-            {
-                if (IsFromReport)
-                {
-                    //涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑堬紝app榛樿浜嗏�滃父寮�妯″紡鈥濊鍙栨秷 
-                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
-                    Application.RunOnMainThread(() =>
-                    {
-                        UpdateNomallyOpenStatus();
-                    });
-
-                    if (haveLogicNormallyOpenMode)
-                    {
-                        //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫
-                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock);
-                    }
-                }
-                else
-                {
-                    //app榛樿鈥滃父寮�妯″紡鈥濊繕鏄紑鍚� 
-                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true);
-                    Application.RunOnMainThread(() =>
-                    {
-                        UpdateNomallyOpenStatus();
-                    });
-                }
-            };
-
-            alert.CancelClickEvent += async () =>
-            {
-                if (IsFromReport)
-                {
-                    //涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑�
-                    Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
-
-                    if (haveLogicNormallyOpenMode)
-                    {
-                        //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫
-                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock);
-                    }
-                    //app閲嶆柊寮�鍚�滃父寮�妯″紡鈥�
-                    var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
-                    if (result == null || result.defaultControlResponseData == null)
-                    {
-                        Application.RunOnMainThread(() =>
-                        {
-                            string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
-                            this.ShowTipMsg(msg0);
-                            DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
-                            UpdateNomallyOpenStatus();
-                        });
-                        return;
-                    }
-                    if (result.defaultControlResponseData.status != 0)
-                    {
-                        string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed);
-                        this.ShowTipMsg(msg1);
-                        DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
-                        Application.RunOnMainThread(() =>
-                        {
-                            UpdateNomallyOpenStatus();
-                        });
-                        return;
-                    }
-                    else
-                    {
-                        //淇濇寔鈥滃父寮�鎴愬姛鈥� 
-                        DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true);
-                        Application.RunOnMainThread(() =>
-                        {
-                            UpdateNomallyOpenStatus();
-                        });
-
-                        //鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫 
-                        var resu = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
-                        //if (!resu)
-                        //{
-                        //    string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed);
-                        //    this.ShowTipMsg(msg0);
-                        //}
-
-                        CommonPage.Loading.Hide();
-                    }
-                }
-                else
-                {
-                    //app鎿嶄綔涓嶅彇娑堚�滃父寮�妯″紡鈥� 
-                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, true);
-                    Application.RunOnMainThread(() =>
-                    {
-                        UpdateNomallyOpenStatus();
-                    });
-                }
-            };
-
-            alert.ConfirmClickEvent += async () =>
-            {
-                if (IsFromReport)
-                {
-                    //涓婃姤闂ㄩ攣鈥滃父寮�妯″紡鈥濆凡缁忓彇娑堬紝鐜板湪app纭鈥滃父寮�妯″紡鈥濆彇娑� 
-                    DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
-                    Application.RunOnMainThread(() =>
-                    {
-                        UpdateNomallyOpenStatus();
-                    });
-
-                    if (haveLogicNormallyOpenMode)
-                    {
-                        //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫
-                        var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock);
-                    }
-                }
-                else
-                {
-                    //app鎿嶄綔鍙栨秷鈥滃父寮�妯″紡鈥�
-                    Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
-                    var result = await doorLock.SetNormallyOpenModeFuncAsync(false);
-                    if (result == null || result.defaultControlResponseData == null)
-                    {
-                        string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
-                        this.ShowTipMsg(msg0);
-                        return;
-                    }
-                    if (result.defaultControlResponseData.status != 0)
-                    {
-                        string msg1 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeFailed);
-                        this.ShowTipMsg(msg1);
-                        return;
-                    }
-                    else
-                    {
-                        //娣诲姞App寮�鍚父寮�妯″紡鐨勫巻鍙茶褰�
-                        HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(this.doorLock, 9002, string.Empty);
-
-                        //app纭鍙栨秷鈥滃父寮�妯″紡鈥濇垚鍔� 
-                        DoorLockCommonInfo.NormallyOpenModeValue(doorLock, false);
-                        Application.RunOnMainThread(() =>
-                        {
-                            UpdateNomallyOpenStatus();
-                        });
-
-                        if (haveLogicNormallyOpenMode)
-                        {
-                            //姝ゅ鍒犻櫎娓╁眳鍩庣殑甯稿紑妯″紡鐗规畩閫昏緫
-                            var resTemp1 = await Shared.Phone.Device.Logic.SkipView.DelAllLogic(doorLock);
-                        }
-                        string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess);
-                        this.ShowTipMsg(msg2);
-                    }
-                }
-            };
-        }
-
-        /// <summary>
-        /// 宸茬粡寮�鍚父寮�妯″紡鎻愮ず
-        /// </summary>
-        public void AlreadyOpenNormallyMode()
-        {
-            //甯稿紑妯″紡寮�鍚彁绀�
-            string msgNomallyModeIsTurnOn = Language.StringByID(R.MyInternationalizationString.NomallyModeIsTurnOn);
-            var doorLockInValidSetting = Language.StringByID(R.MyInternationalizationString.DoorLockInValidSetting);
-            var alertNomallyModeIsTurnOn = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.DoorLockLogic, msgNomallyModeIsTurnOn, doorLockInValidSetting);
-            alertNomallyModeIsTurnOn.Show();
-            alertNomallyModeIsTurnOn.MsgControlClickEvent += async () =>
-            {
-                //榛樿鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫 
-                var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
-                //if (!res)
-                //{
-                //string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed);
-                // this.ShowTipMsg(msg0);
-                //return;
-                //}
-            };
-            //鐐瑰嚮鑷姩鍖�
-            alertNomallyModeIsTurnOn.LogicClickEvent += () =>
-            {
-                //閫昏緫璋冪敤鍓嶈寰楃Щ闄�
-                ZbGateway.StatusList.Remove(this);
-                //璋冪敤閫昏緫鐣岄潰
-                Shared.Phone.Device.Logic.SkipView.SkipAddLogic(2, doorLock);
-            };
-            alertNomallyModeIsTurnOn.InvalidClickEvent += async () =>
-            {
-                NomallyOpenModeInvalidTimeDialog();
-            };
-        }
-
-        /// <summary>
-        /// 甯稿紑妯″紡澶辨晥鏃堕棿澶勭悊
-        /// </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);
-            alertTimeInValidSetting.Show();
-
-            alertTimeInValidSetting.InvalidTimeAction += async (obj) =>
-             {
-                 //甯稿紑妯″紡澶辨晥鏃堕棿璁剧疆鎴愬姛
-                 var temp = int.Parse(obj);
-                 DoorLockCommonInfo.NormallyOpenModeInvalidTime = temp;
-                 //榛樿鍒涘缓甯稿紑妯″紡鐨勭壒娈婇�昏緫 
-                 var res = await Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime, doorLock);
-                 if (res == 0)
-                 {
-                     //榛樿鍒涘缓甯稿紑妯″紡澶辫触
-                     string msg0 = Language.StringByID(R.MyInternationalizationString.AddLogicNormallyModeFailed);
-                     var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal, msg0, Language.StringByID(R.MyInternationalizationString.confrim));
-                     alert.Show();
-                     //浜屾鍔犺浇寮圭獥 甯稿紑妯″紡寮�鍚彁绀�
-                     NomallyOpenModeInvalidTimeDialog();
-                 }
-             };
-        }
-
-        /// <summary>
         /// 甯稿紑妯″紡鐘舵�佹洿鏂�
         /// </summary>
         private void UpdateNomallyOpenStatus()
@@ -1435,8 +1210,7 @@
         /// </summary>
         public override void RemoveFromParent()
         {
-            //寰愭鐨勯棬閿佺晫闈㈠叧闂�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�)
-            ControlCommonResourse.IsDoorLockPageOpen = false;
+            UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction = null;
             if (IsDrawerLockMode)
             {
                 CommonPage.Instance.IsDrawerLockMode = false;

--
Gitblit v1.8.0