From 98ceb6bd2021f9ff136cda27eef28676dd7b5d92 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 21 五月 2020 13:24:02 +0800
Subject: [PATCH] 最后的版本

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs |  337 +++++++++++--------------------------------------------
 1 files changed, 68 insertions(+), 269 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
index 7de8403..0562afe 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -17,12 +17,29 @@
         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(() =>
+            {
+                ControlCommonResourse.UpdateDoorLockStatusAction = (obj) =>
+                {
+                    UpdateNomallyOpenStatus();
+                };
+
+                UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction += (DoorlockKey, status) =>
+                {
+                    var key = doorLock.DeviceAddr + doorLock.DeviceEpoint;
+                    if (DoorlockKey == key)
+                    {
+                        DoorLockCommonInfo.NormallyOpenModeValue(this.doorLock, status);
+                        UpdateNomallyOpenStatus();
+                    }
+                };
+            });
         }
 
         #region  鍙橀噺鐢虫槑
@@ -42,11 +59,6 @@
         /// 閫昏緫涓槸鍚︽湁甯稿紑妯″紡
         /// </summary>
         private bool haveLogicNormallyOpenMode = false;
-
-        /// <summary>
-        /// 闂ㄩ攣娣卞害鎺у埗涓婃姤绐楀彛鏄惁寮瑰嚭
-        /// </summary>
-        public static bool canShowDialog = true;
 
         /// <summary>
         /// 褰撳墠鐢甸噺
@@ -626,6 +638,35 @@
                 }
             }
 
+            //缃戝叧鎵ц閫昏緫锛屽父寮�妯″紡澶辨晥涓婃姤
+            //if (typeTag == "DoorLockAlarmsSendAlarmInform" && tempDevice != null)
+            //{
+            //    var doorL = (ZigBee.Device.DoorLock)tempDevice;
+
+            //    if (doorL.DeviceAddr + doorL.DeviceEpoint == doorLock.DeviceAddr + doorLock.DeviceEpoint)
+            //    {
+            //        //闈炰富浜轰笉寮硅繖涓獥鍙�
+            //        if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+            //        {
+            //            return;
+            //        }
+            //        if (doorLock.IsDoorLockNormallyMode)
+            //        {
+            //            if (canOpenNormallyMode)
+            //            {
+            //                Application.RunOnMainThread(() =>
+            //                {
+            //                    Action<bool> action = (obj) =>
+            //                    {
+            //                        UpdateNomallyOpenStatus();
+            //                    };
+            //                    DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.ServicePush, haveLogicNormallyOpenMode, action);
+            //                });
+            //            }
+            //        }
+            //    }
+            //}
+
             if (typeTag == "DeviceStatusReport" && tempDevice != null)
             {
                 if (tempDevice != null)
@@ -668,7 +709,7 @@
                     canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock);
                     if (canOpenNormallyMode)
                     {
-                        //鑾峰彇闂ㄩ攣甯稿紑妯″紡
+                        //1銆佽幏鍙栭棬閿佸父寮�妯″紡
                         var resultRes = await DoorLockCommonInfo.GetNormallyOpenMode(doorLock);
                         if (resultRes == null)
                         {
@@ -692,18 +733,19 @@
                                 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)
-                                {
-                                    haveLogicNormallyOpenMode = false;
-                                }
-                            });
+
+                            //Application.RunOnMainThread(async () =>
+                            //{
+                            //var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3, doorLock);
+                            //if (resTemp == 1)
+                            //{
+                            //    haveLogicNormallyOpenMode = true;
+                            //}
+                            //else if (resTemp == 0)
+                            //{
+                            //    haveLogicNormallyOpenMode = false;
+                            //}
+                            //});
                         }
                     }
                     else
@@ -718,7 +760,7 @@
                     canVolume = DoorLockCommonInfo.CanVolume(doorLock);
                     if (canVolume)
                     {
-                        //璇诲彇闊抽噺 
+                        //2銆佽鍙栭煶閲� 
                         var resultRes = await doorLock.GetVolumeAsync();
                         if (resultRes == null || resultRes.volumeResponseData == null)
                         {
@@ -752,7 +794,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 +840,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 +871,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 +895,6 @@
             //寮�閿佷簨浠�
             EventHandler<MouseEventArgs> hander1 = async (sender, e) =>
             {
-                canShowDialog = true;
                 if (doorLock.IsDoorLockNormallyMode)
                 {
                     if (canOpenNormallyMode)
@@ -887,7 +928,6 @@
             //鍏抽攣浜嬩欢
             EventHandler<MouseEventArgs> hander2 = (sender, e) =>
             {
-                canShowDialog = true;
                 if (canOpenNormallyMode)
                 {
                     if (doorLock.IsDoorLockNormallyMode)
@@ -1093,249 +1133,6 @@
         }
 
         /// <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.GetLogicAll(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.GetLogicAll(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.GetLogicAll(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.GetLogicAll(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()
@@ -1436,7 +1233,9 @@
         public override void RemoveFromParent()
         {
             //寰愭鐨勯棬閿佺晫闈㈠叧闂�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�)
-            ControlCommonResourse.IsDoorLockPageOpen = false;
+            //ControlCommonResourse.IsDoorLockPageOpen = false;
+            ControlCommonResourse.UpdateDoorLockStatusAction = null;
+            UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction = null;
             if (IsDrawerLockMode)
             {
                 CommonPage.Instance.IsDrawerLockMode = false;

--
Gitblit v1.8.0