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 |  658 ++++++++++++++++++++++++++++-------------------------------
 1 files changed, 310 insertions(+), 348 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 3a403a8..9856a3c
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs
@@ -14,21 +14,31 @@
         /// </summary>
         /// <param name="room"></param>
         /// <param name="doorLock"></param>
-        public UserDoorLockPage(Shared.Common.Room room, CommonDevice doorLock)
+        public UserDoorLockPage(Room room, CommonDevice doorLock)
         {
+            //寰愭鐨勯棬閿佺晫闈㈡墦寮�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�)
+            //ControlCommonResourse.IsDoorLockPageOpen = true; 
             this.doorLock = doorLock as ZigBee.Device.DoorLock;
             currentRoom = room;
             deviceUI = doorLock;
-            BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
+            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  鍙橀噺鐢虫槑
         /// <summary>
-        /// IsDrawerLockMode
-        /// </summary>
-        public bool IsDrawerLockMode;
-        /// <summary>
         /// 褰撳墠闂ㄩ攣
         /// </summary>
         ZigBee.Device.DoorLock doorLock;
@@ -43,15 +53,20 @@
         /// <summary>
         /// 閫昏緫涓槸鍚︽湁甯稿紑妯″紡
         /// </summary>
-        private bool HaveLogicNormallyOpenMode = false;
+        private bool haveLogicNormallyOpenMode = false;
+
         /// <summary>
         /// 褰撳墠鐢甸噺
         /// </summary>
         bool canVolume = false;
         /// <summary>
-        /// 淇濈暀涓婁竴娆¢煶閲�
+        /// 鏄惁鏀寔甯稿紑
         /// </summary>
         bool canOpenNormallyMode = false;
+        /// <summary>
+        /// IsDrawerLockMode[涓婚〉宸︽粦]
+        /// </summary>
+        public bool IsDrawerLockMode;
         /// <summary>
         /// 褰撳墠鐢甸噺
         /// </summary>
@@ -75,7 +90,7 @@
         /// <summary>
         /// 涓儴甯冨眬涓棬閿佸悕绉版樉绀�
         /// </summary>
-        Button btnDoorLockTitle;
+        NormalViewControl btnDoorLockTitle;
         /// <summary>
         /// 鍒嗕韩
         /// </summary>
@@ -88,6 +103,7 @@
         /// 璁剧疆FrameLayout
         /// </summary>
         FrameLayout btnFuncSetFrameLayout;
+        FrameLayout progressFrameLayoutMatch;
         /// <summary>
         /// 鐐瑰嚮寮�甯冨眬
         /// </summary>
@@ -168,6 +184,14 @@
         /// 聽褰撳墠闊抽噺
         /// </summary>
         int currentVolume = -1;
+        /// <summary>
+        /// waitClickTime
+        /// </summary>
+        DateTime waitClickTime = DateTime.MaxValue;
+        /// <summary>
+        /// IsClick
+        /// </summary>
+        bool IsClick = true;
         #endregion
 
         /// <summary>
@@ -197,8 +221,8 @@
             btnFuncSet = new Button
             {
                 X = Application.GetRealWidth(103),
-                Height = Application.GetRealHeight(69),
-                Width = Application.GetRealWidth(69),
+                Height = Application.GetMinReal(69),
+                Width = Application.GetMinReal(69),
                 UnSelectedImagePath = "DoorLock/SettingIcon.png",
             };
             btnFuncSetFrameLayout.AddChidren(btnFuncSet);
@@ -207,9 +231,15 @@
 
             ClickHandle();
 
-            if (doorLock.IsOnline == 1)
+            if (Common.LocalDevice.Current.CheckDeviceIsOnline(doorLock) == true)
             {
                 ReadDoorLockUserInfo();
+            }
+            else
+            {
+                string msg1 = Language.StringByID(R.MyInternationalizationString.DoorLockOffLine);
+                this.ShowTipMsg(msg1);
+                return;
             }
         }
 
@@ -229,18 +259,15 @@
             };
             this.midFrameLayout.AddChidren(midTopFrameLayout);
 
-            //闂ㄩ攣鏍囬
-            btnDoorLockTitle = new Button()
-            {
-                Width = Application.GetRealWidth(250),
-                Height = Application.GetRealHeight(60),
-                X = Application.GetRealWidth(372),
-                Y = Application.GetRealHeight(46),
-                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
-                TextSize = 15,
-                TextAlignment = TextAlignment.Center,
-                IsBold = true,
-            };
+            //璁惧鍚嶇О
+            btnDoorLockTitle = new NormalViewControl(100, 60, true);
+            btnDoorLockTitle.Y = Application.GetRealHeight(46);
+            btnDoorLockTitle.TextSize = 15;
+            btnDoorLockTitle.IsBold = true;
+            btnDoorLockTitle.Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock);
+            btnDoorLockTitle.Width = btnDoorLockTitle.GetRealWidthByText();
+            btnDoorLockTitle.TextAlignment = TextAlignment.Center;
+            btnDoorLockTitle.Gravity = Gravity.CenterHorizontal;
             midTopFrameLayout.AddChidren(btnDoorLockTitle);
 
             //璁板綍
@@ -253,8 +280,8 @@
             midTopFrameLayout.AddChidren(btnRecordFrameLayout);
             btnRecord = new Button()
             {
-                Width = Application.GetRealWidth(69),
-                Height = Application.GetRealHeight(69),
+                Width = Application.GetMinReal(69),
+                Height = Application.GetMinReal(69),
                 X = Application.GetRealWidth(46),
                 Y = Application.GetRealHeight(46),
                 UnSelectedImagePath = "DoorLock/RecordIcon.png",
@@ -271,8 +298,8 @@
             midTopFrameLayout.AddChidren(btnCollectFrameLayout);
             btnCollect = new Button()
             {
-                Width = Application.GetRealWidth(69),
-                Height = Application.GetRealHeight(69),
+                Width = Application.GetMinReal(69),
+                Height = Application.GetMinReal(69),
                 X = Application.GetRealWidth(15),
                 Y = Application.GetRealHeight(46),
                 UnSelectedImagePath = "Item/Collection.png",
@@ -305,13 +332,16 @@
                 TextSize = 10,
                 TextAlignment = TextAlignment.CenterLeft,
             };
-            midTopFrameLayout.AddChidren(btnCurrentPowerText);
+            midTopFrameLayout.AddChidren(btnCurrentPowerText);
+#if Android
+            btnCurrentPowerText.X = btnStatus.Right + Application.GetRealWidth(20);
+#endif
 
             //闂ㄩ攣寮�/鍏冲浘鐗�
             btnDoorLockPic = new Button()
             {
-                Width = Application.GetRealWidth(383),
-                Height = Application.GetRealHeight(343),
+                Width = Application.GetMinReal(383),
+                Height = Application.GetMinReal(343),
                 X = Application.GetRealWidth(161),
                 Y = Application.GetRealHeight(415),
                 UnSelectedImagePath = "DoorLock/DoorLockPicClose.png",
@@ -347,30 +377,37 @@
             };
             btnFrameLayout.AddChidren(closeFrameLayout);
 
+            progressFrameLayoutMatch = new FrameLayout()
+            {
+                Width = Application.GetRealHeight(84),//639-35
+                Height = Application.GetRealHeight(446),
+                X = Application.GetMinReal(51),
+                BackgroundColor = ZigbeeColor.Current.XMWhite,
+            };
+            btnFrameLayout.AddChidren(progressFrameLayoutMatch);
+
             var progressFrameLayout = new FrameLayout()
             {
-                Width = Application.GetRealWidth(9),//639-35
-                Height = Application.GetRealHeight(446),
-                X = Application.GetRealWidth(95),
-                Y = Application.GetRealHeight(0),
+                Width = Application.GetRealHeight(17),//639-35
+                Gravity = Gravity.CenterHorizontal,
                 BackgroundColor = ZigbeeColor.Current.XMVerticalSeekBar,
             };
-            btnFrameLayout.AddChidren(progressFrameLayout);
+            progressFrameLayoutMatch.AddChidren(progressFrameLayout);
 
             progressButton = new Button()
             {
-                Width = Application.GetRealWidth(84),//639-35
-                Height = Application.GetRealHeight(93),
-                X = Application.GetRealWidth(58),
+                Width = Application.GetMinReal(84),//639-35
+                Height = Application.GetMinReal(93),
+                Gravity = Gravity.CenterHorizontal,
                 Y = Application.GetRealHeight(347),
                 UnSelectedImagePath = "DoorLock/UnLockButton.png",
             };
-            btnFrameLayout.AddChidren(progressButton);
+            progressFrameLayoutMatch.AddChidren(progressButton);
 
             btnDoorOpenPic = new Button()
             {
-                Width = Application.GetRealWidth(81),
-                Height = Application.GetRealHeight(81),
+                Width = Application.GetMinReal(81),
+                Height = Application.GetMinReal(81),
                 X = Application.GetRealWidth(164),
                 Y = Application.GetRealHeight(6),
                 UnSelectedImagePath = "DoorLock/DoorLockOpen.png",
@@ -379,8 +416,8 @@
 
             btnDoorClosePic = new Button()
             {
-                Width = Application.GetRealWidth(81),
-                Height = Application.GetRealHeight(81),
+                Width = Application.GetMinReal(81),
+                Height = Application.GetMinReal(81),
                 X = Application.GetRealWidth(164),
                 Y = Application.GetRealHeight(117),
                 UnSelectedImagePath = "DoorLock/DoorLockClose.png",
@@ -391,8 +428,8 @@
             //鐢甸噺
             btnPower = new Button()
             {
-                Width = Application.GetRealWidth(81),
-                Height = Application.GetRealHeight(81),
+                Width = Application.GetMinReal(81),
+                Height = Application.GetMinReal(81),
                 X = Application.GetRealWidth(253),
                 Y = Application.GetRealHeight(994),
                 UnSelectedImagePath = "DoorLock/PowerOffline.png",
@@ -410,8 +447,8 @@
             midTopFrameLayout.AddChidren(btnVolumeFrameLayout);
             btnVolume = new Button()
             {
-                Width = Application.GetRealWidth(81),
-                Height = Application.GetRealHeight(81),
+                Width = Application.GetMinReal(81),
+                Height = Application.GetMinReal(81),
                 X = Application.GetRealWidth(40),
                 Y = Application.GetRealHeight(40),
                 UnSelectedImagePath = "DoorLock/VolumeIcon.png",
@@ -430,8 +467,8 @@
             midTopFrameLayout.AddChidren(btnNormallyOpenFrameLayout);
             btnNormallyOpen = new Button()
             {
-                Width = Application.GetRealWidth(81),
-                Height = Application.GetRealHeight(81),
+                Width = Application.GetMinReal(81),
+                Height = Application.GetMinReal(81),
                 X = Application.GetRealWidth(40),
                 Y = Application.GetRealHeight(40),
                 UnSelectedImagePath = "DoorLock/NormallyOpen.png",
@@ -463,8 +500,8 @@
             #region 褰撳墠鎴块棿
             var btnCurrentRoomPic = new Button()
             {
-                Width = Application.GetRealWidth(81),
-                Height = Application.GetRealHeight(81),
+                Width = Application.GetMinReal(81),
+                Height = Application.GetMinReal(81),
                 X = Application.GetRealWidth(58),
                 Y = Application.GetRealHeight(29),
                 UnSelectedImagePath = "DoorLock/RoomPic.png",
@@ -517,13 +554,14 @@
             };
             flMain.AddChidren(progressBackground);
 
+            //var progressValue = (currentVolume * (Convert.ToInt32(((float)100 / 15) * 100))) / 100;
             progressText = new Button()
             {
                 Height = Application.GetRealHeight(58),
                 Y = Application.GetRealHeight(89),
                 TextColor = ZigbeeColor.Current.XMGray2,
                 TextAlignment = TextAlignment.Center,
-                Text = currentVolume.ToString(),
+                Text = currentVolume.ToString() + "%",
             };
 
             diyImageVerticalSeekBar = new DiyImageVerticalSeekBar()
@@ -539,29 +577,16 @@
                 ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                 ProgressTextSize = 12,//鏄剧ず鐧惧垎姣斿瓧浣撳ぇ灏� 
                 SeekBarViewHeight = Application.GetRealHeight(17),//杩涘害鏉$殑瀹藉害
-                Progress = (currentVolume * (Convert.ToInt32(((float)100 / 15) * 100))) / 100,
+                Progress = currentVolume,
             };
             progressBackground.AddChidren(progressText);
             progressBackground.AddChidren(diyImageVerticalSeekBar);
             diyImageVerticalSeekBar.OnProgressChangedEvent += (sender, e) =>
             {
                 int curVolume = -1;
-                if (e == 0)
-                {
-                    curVolume = 0;
-                }
-                else if (e == 100)
-                {
-                    curVolume = 14;
-                }
-                else
-                {
-                    int comandValue = e;
-                    int comandValueTemp = (comandValue * 100) / (Convert.ToInt32(((float)100 / 15) * 100));
-                    curVolume = comandValueTemp;
-                }
+                curVolume = e;
                 currentVolume = curVolume;
-                progressText.Text = curVolume.ToString();
+                progressText.Text = e.ToString() + "%";
             };
         }
 
@@ -580,9 +605,31 @@
             if (typeTag == "DoorLockProgrammingEventNotificationCommand" && tempDevice != null)
             {
                 var tempDoor = (ZigBee.Device.DoorLock)tempDevice;
-                if (tempDoor.doorLockOperatingEventNotificationCommand != null)
+                if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint
+                                     && tempDevice.DeviceAddr == doorLock.DeviceAddr)
                 {
-                    Application.RunOnMainThread(() => { NomallyOpenModeInvalidDialog(true); });
+                    if (tempDoor.doorLockOperatingEventNotificationCommand != null)
+                    {
+                        //闈炰富浜轰笉寮硅繖涓獥鍙�
+                        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);
+                                });
+                            }
+                        }
+                    }
                 }
             }
 
@@ -601,7 +648,6 @@
                                 Application.RunOnMainThread(() =>
                                 {
                                     currentPower = dataReport.AttriButeData;
-                                    waitGetDoorLockPower = DateTime.MaxValue;
                                     UpdatePower();
                                 });
                             }
@@ -624,20 +670,105 @@
                     {
                         CommonPage.Loading.Start("");
                     });
+
                     //鏄惁鏀寔甯稿紑
                     canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock);
+                    if (canOpenNormallyMode)
+                    {
+                        //1銆佽幏鍙栭棬閿佸父寮�妯″紡
+                        var resultRes = await DoorLockCommonInfo.GetNormallyOpenMode(doorLock);
+                        if (resultRes == null)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                btnNormallyOpen.UnSelectedImagePath = "DoorLock/NormallyOpenOffline.png";
+                                btnNormallyOpen.Enable = false;
+                                string msg = Language.StringByID(R.MyInternationalizationString.GetNormallyOpenModeFailed);
+                                this.ShowTipMsg(msg);
+                            });
+                        }
+                        else
+                        {
+                            var tempRes = false;
+                            if (resultRes == true)
+                            {
+                                tempRes = true;
+                            }
+                            else
+                            {
+                                tempRes = false;
+                            }
+                            DoorLockCommonInfo.NormallyOpenModeValue(doorLock, tempRes);
+
+                            Application.RunOnMainThread(async () =>
+                            {
+                                var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(2, doorLock);
+                                if (resTemp == 0)
+                                {
+                                    haveLogicNormallyOpenMode = false;
+                                }
+                                else
+                                {
+                                    haveLogicNormallyOpenMode = true;
+                                }
+                            });
+                        }
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0);
+                        });
+                    }
+
                     //鏄惁鏀寔闊抽噺
                     canVolume = DoorLockCommonInfo.CanVolume(doorLock);
-                    //璇诲彇闂ㄩ攣鐢甸噺锛氱皣ID锛�1 灞炴�D 33
+                    if (canVolume)
+                    {
+                        //2銆佽鍙栭煶閲� 
+                        var resultRes = await doorLock.GetVolumeAsync();
+                        if (resultRes == null || resultRes.volumeResponseData == null)
+                        {
+                            var listDevice = new List<CommonDevice> { };
+                            listDevice.Add(doorLock);
+                            var devTemp = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice);
+                            if (devTemp.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone)
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    var volumeMsg = Language.StringByID(R.MyInternationalizationString.GetVolumeFailed);
+                                    this.ShowTipMsg(volumeMsg);
+                                });
+                            }
+                        }
+                        else
+                        {
+                            volumeData = resultRes.volumeResponseData;
+                            Application.RunOnMainThread(() =>
+                            {
+                                UpdateVolume();
+                            });
+                        }
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            btnVolumeFrameLayout.Width = Application.GetRealWidth(0);
+                            btnPower.X = Application.GetRealWidth(444);
+                        });
+                    }
+
+                    //3銆佽鍙栭棬閿佺數閲忥細绨嘔D锛�1 灞炴�D 33
                     doorLock.ReadAttri(Cluster_ID.Power, AttriButeId.DoorLockPower);
                     //涓婃姤鐢甸噺绛�1绉�
                     System.Threading.Thread.Sleep(1000);
-                    //鑾峰彇闂ㄩ攣甯稿紑妯″紡
-                    await DoorLockCommonInfo.GetNormallyOpenMode(doorLock);
-                    //璇诲彇闊抽噺
-                    ReadVolume();
                 }
-                catch { }
+                catch (Exception ex)
+                {
+                    var mess = ex.Message;
+                }
                 finally
                 {
                     Application.RunOnMainThread(() =>
@@ -671,10 +802,11 @@
             //璁剧疆
             EventHandler<MouseEventArgs> btnFuncSetHander = (sender, e) =>
             {
-                var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
+                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();
+                //DoorLockCommonInfo.canShowDialog = false;
                 functionSetting.devicNameAction += (deviceRename) =>
                 {
                     if (!string.IsNullOrEmpty(deviceRename))
@@ -705,6 +837,7 @@
                 //鍘嗗彶璁板綍 ----   stan
                 var form = new DeviceDoorLock.DoorLockHistoryLogForm();
                 form.AddForm(this.doorLock.DeviceAddr);
+                //DoorLockCommonInfo.canShowDialog = false;
             };
             btnRecordFrameLayout.MouseDownEventHandler += handerRecord;
             btnRecord.MouseDownEventHandler += handerRecord;
@@ -715,15 +848,11 @@
                 btnCollect.IsSelected = !btnCollect.IsSelected;
                 if (btnCollect.IsSelected)
                 {
-                    HdlRoomLogic.Current.AddLoveDevice(deviceUI);//鏀惰棌
-                    //Test
-                    HaveLogicNormallyOpenMode = true;
+                    HdlRoomLogic.Current.AddLoveDevice(deviceUI);//鏀惰棌 
                 }
                 else
                 {
-                    HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//鍙栨秷鏀惰棌
-                    //Test
-                    HaveLogicNormallyOpenMode = false;
+                    HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//鍙栨秷鏀惰棌 
                 }
             };
             btnCollectFrameLayout.MouseDownEventHandler += handerCollect;
@@ -732,11 +861,24 @@
             //寮�閿佷簨浠�
             EventHandler<MouseEventArgs> hander1 = async (sender, e) =>
             {
-                if (DoorLockCommonInfo.IsDoorLockNormallyMode == true)
+                if (doorLock.IsDoorLockNormallyMode)
                 {
-                    string msg0 = Language.StringByID(R.MyInternationalizationString.CurrentNormallyOpenMode);
-                    this.ShowTipMsg(msg0);
-                }
+                    if (canOpenNormallyMode)
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            Action<bool> action = (obj) =>
+                            {
+                                UpdateNomallyOpenStatus();
+                            };
+                            DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action);
+                        });
+                    }
+                    else
+                    {
+                        OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus);
+                    }
+                }
                 else
                 {
                     OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus);
@@ -744,13 +886,27 @@
             };
             openFrameLayout.MouseUpEventHandler += hander1;
             btnDoorOpenPic.MouseUpEventHandler += hander1;
+            if (progressButton.Y == Application.GetRealHeight(10))
+            {
+                progressFrameLayoutMatch.MouseUpEventHandler += hander1;
+            }
 
             //鍏抽攣浜嬩欢
             EventHandler<MouseEventArgs> hander2 = (sender, e) =>
             {
-                if (DoorLockCommonInfo.IsDoorLockNormallyMode == true)
+                if (canOpenNormallyMode)
                 {
-                    NomallyOpenModeInvalidDialog();
+                    if (doorLock.IsDoorLockNormallyMode)
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            Action<bool> action = (obj) =>
+                            {
+                                UpdateNomallyOpenStatus();
+                            };
+                            DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action);
+                        });
+                    }
                 }
                 else
                 {
@@ -768,11 +924,6 @@
                 {
                     VolumeDialog(progressText, diyImageVerticalSeekBar);
                 }
-                else
-                {
-                    var volumeMsg = Language.StringByID(R.MyInternationalizationString.NoSupport);
-                    this.ShowTipMsg(volumeMsg);
-                }
             };
             btnVolumeFrameLayout.MouseDownEventHandler += handerVolume;
             btnVolume.MouseDownEventHandler += handerVolume;
@@ -781,16 +932,7 @@
             //甯稿紑妯″紡鐐瑰嚮浜嬩欢
             EventHandler<MouseEventArgs> handerNormallyOpen = (sender, e) =>
             {
-                if (canOpenNormallyMode)
-                {
-                    btnNormallyOpen.IsSelected = !btnNormallyOpen.IsSelected;
-                    NomallyOpenDialog();
-                }
-                else
-                {
-                    var volumeMsg = Language.StringByID(R.MyInternationalizationString.NoSupport);
-                    this.ShowTipMsg(volumeMsg);
-                }
+                NomallyOpenDialog();
             };
             btnNormallyOpenFrameLayout.MouseUpEventHandler += handerNormallyOpen;
             btnNormallyOpen.MouseUpEventHandler += handerNormallyOpen;
@@ -812,15 +954,15 @@
             {
                 btnPower.UnSelectedImagePath = "DoorLock/Power40.png";
             }
-            else if (currentPower <= 60 && currentPower > 40 || currentPower == 60)
+            else if (currentPower <= 60 && currentPower > 40)
             {
                 btnPower.UnSelectedImagePath = "DoorLock/Power60.png";
             }
-            else if (currentPower <= 80 && currentPower >= 60)
+            else if (currentPower <= 80 && currentPower > 60)
             {
                 btnPower.UnSelectedImagePath = "DoorLock/Power80.png";
             }
-            else if (currentPower <= 100 && currentPower >= 80)
+            else if (currentPower <= 100 && currentPower > 80)
             {
                 btnPower.UnSelectedImagePath = "DoorLock/Power100.png";
             }
@@ -831,39 +973,7 @@
         }
         #endregion
 
-        #region 闊抽噺
-        /// <summary>
-        /// 璇诲彇闊抽噺
-        /// </summary>
-        private async void ReadVolume()
-        {
-            //鑾峰彇闂ㄩ攣闊抽噺
-            if (!canVolume)
-            {
-                return;
-            }
-            var resultRes = await doorLock.GetVolumeAsync();
-
-            if (resultRes == null || resultRes.volumeResponseData == null)
-            {
-                var listDevice = new List<CommonDevice> { };
-                listDevice.Add(doorLock);
-                var devTemp = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice);
-                if (devTemp.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone)
-                {
-                    var volumeMsg = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
-                    this.ShowTipMsg(volumeMsg);
-                }
-            }
-            else
-            {
-                volumeData = resultRes.volumeResponseData;
-                Application.RunOnMainThread(() =>
-                {
-                    UpdateVolume();
-                });
-            }
-        }
+        #region 闊抽噺 
         /// <summary>
         /// 鏇存柊闊抽噺
         /// </summary>
@@ -923,12 +1033,12 @@
                         return;
                     }
                     Application.RunOnMainThread(() =>
-                   {
-                       var volumeMsg = Language.StringByID(R.MyInternationalizationString.SetVolumeSuccess);
-                       this.ShowTipMsg(volumeMsg);
-                       oldVolume = currentVolume;
-                       CommonPage.Loading.Hide();
-                   });
+                    {
+                        var volumeMsg = Language.StringByID(R.MyInternationalizationString.SetVolumeSuccess);
+                        this.ShowTipMsg(volumeMsg);
+                        oldVolume = currentVolume;
+                        CommonPage.Loading.Hide();
+                    });
                 }
                 catch (Exception ex)
                 {
@@ -944,216 +1054,73 @@
         /// </summary>
         private async void NomallyOpenDialog()
         {
-            if (btnNormallyOpen.IsSelected)
+            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
             {
-                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
-                {
-                    this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoAccess));
-                    return;
-                }
-
-                if (!UserCenterResourse.AccountOption.DoorUnLockByRemote)
-                {
-                    SystemSecondAuthentication();
-                    return;
-                }
-
-                action = () =>
-                {
-                    string msg = Language.StringByID(R.MyInternationalizationString.SetDoorLockNomallyOpen).Replace("{0}", "\r\n");
-                    var confirm = Language.StringByID(R.MyInternationalizationString.Confrim);
-                    var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.Confirm, msg, confirm);
-                    alert.Show();
-                    alert.CancelClickEvent += () =>
-                    {
-                        btnNormallyOpen.IsSelected = false;
-                    };
-                    alert.ConfirmClickEvent += async () =>
-                    {
-                        Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
-                        var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
-                        if (result == null || result.defaultControlResponseData == null)
-                        {
-                            string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
-                            this.ShowTipMsg(msg0);
-                            btnNormallyOpen.IsSelected = false;
-                            return;
-                        }
-                        if (result.defaultControlResponseData.status != 0)
-                        {
-                            string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed);
-                            this.ShowTipMsg(msg1);
-                            btnNormallyOpen.IsSelected = false;
-                            return;
-                        }
-                        else
-                        {
-                            DoorLockCommonInfo.IsDoorLockNormallyMode = true;
-                            UpdateNomallyOpenStatus();
-                            CommonPage.Loading.Hide();
-
-                            //甯稿紑妯″紡寮�鍚彁绀�
-                            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.LogicClickEvent += () =>
-                            {
-                                //鑷姩鍖�
-                                Shared.Phone.Device.Logic.SkipView.SkipAddLogic(2,doorLock);
-
-                            };
-                            alertNomallyModeIsTurnOn.InvalidClickEvent += async () =>
-                            {
-                                NomallyOpenModeInvalidTimeDialog();
-                            };
-                        }
-                    };
-                };
-                HdlCheckLogic.Current.CheckSecondarySecurity(action);
+                this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate));
+                return;
             }
-            else
+
+            if (!UserCenterResourse.AccountOption.DoorUnLockByRemote)
             {
-                NomallyOpenModeInvalidDialog();
+                SystemSecondAuthentication();
+                return;
             }
-        }
 
-        /// <summary>
-        /// 甯稿紑妯″紡澶辨晥澶勭悊
-        /// </summary>
-        public void NomallyOpenModeInvalidDialog(bool IsFromReport = false)
-        {
-            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)
+            action = () =>
             {
-                //鏈夐�昏緫璁剧疆鐨勫脊绐�
-                alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.CancelNomallyOpenModeWithLogic, msg, confirm);
-            }
-            alert.Show();
-            alert.CancelClickEvent += async () =>
-             {
-                 //淇濇寔甯稿紑
-                 if (IsFromReport)
-                 {
-                     Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
-                     var result = await doorLock.SetNormallyOpenModeFuncAsync(true);
-                     if (result == null || result.defaultControlResponseData == null)
+                //WJC鐨勪唬鐮侊細绯荤粺瀵嗙爜鏀寔鎿嶄綔闂ㄩ攣鍚庯紝璋冪敤娓╁眳鍩庣殑鐣岄潰銆愬父寮�鑷姩鍖栥��
+                if (doorLock == null)
+                {
+                    ///闃叉鎶涘紓甯�
+                    return;
+                }
+                ///澶囨敞锛歐JC鐨�
+                Shared.Phone.Device.Logic.Send.CurrentDoorLock = doorLock;
+                ///杩涙潵鍒锋柊涓�娆¤澶囧垪琛紱
+                Common.Logic.LogicDviceList.Clear();
+                if (Common.Logic.LogicDviceList.Count == 0)
+                {
+                    Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray());
+                }
+                var addLogicPage = new Shared.Phone.Device.Logic.SoneLogicList();
+                UserView.HomePage.Instance.AddChidren(addLogicPage);
+                UserView.HomePage.Instance.PageIndex += 1;
+                addLogicPage.Show();
+                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)
                      {
-                         string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
-                         this.ShowTipMsg(msg0);
-                         btnNormallyOpen.IsSelected = false;
-                         DoorLockCommonInfo.IsDoorLockNormallyMode = false;
-                         return;
-                     }
-                     if (result.defaultControlResponseData.status != 0)
-                     {
-                         string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed);
-                         this.ShowTipMsg(msg1);
-                         btnNormallyOpen.IsSelected = false;
-                         DoorLockCommonInfo.IsDoorLockNormallyMode = false;
-                         return;
+                         haveLogicNormallyOpenMode = false;
                      }
                      else
                      {
-                         DoorLockCommonInfo.IsDoorLockNormallyMode = true;
-                         btnNormallyOpen.IsSelected = true;
-                         UpdateNomallyOpenStatus();
-                         CommonPage.Loading.Hide();
+                         haveLogicNormallyOpenMode = true;
                      }
-                 }
-                 else
-                 {
-                     btnNormallyOpen.IsSelected = true;
-                 }
-             };
-            alert.ConfirmClickEvent += async () =>
-            {
-                //纭鍙栨秷甯稿紑
-                if (IsFromReport)
-                {
-                    DoorLockCommonInfo.IsDoorLockNormallyMode = false;
-                    btnNormallyOpen.IsSelected = false;
-                    UpdateNomallyOpenStatus();
-                }
-                else
-                {
-                    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);
-                        btnNormallyOpen.IsSelected = true;
-                        return;
-                    }
-                    if (result.defaultControlResponseData.status != 0)
-                    {
-                        string msg1 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeFailed);
-                        this.ShowTipMsg(msg1);
-                        btnNormallyOpen.IsSelected = true;
-                        return;
-                    }
-                    else
-                    {
-                        DoorLockCommonInfo.IsDoorLockNormallyMode = false;
-                        UpdateNomallyOpenStatus();
-                        string msg2 = Language.StringByID(R.MyInternationalizationString.CloseNormallyOpenModeSuccess);
-                        this.ShowTipMsg(msg2);
-                        //
-                    }
-                }
-            };
-        }
 
-        ///// <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.CancelClickEvent += () =>
-            {
-                btnNormallyOpen.IsSelected = true;
+                     UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction -= addLogicPage.updateCurrentDoorlockActionTemp;
+                 };
             };
-            alertTimeInValidSetting.InvalidTimeAction += (obj) =>
-            {
-                Regex rg = new Regex("^[0-9]+$");
-                if (!rg.IsMatch(obj))
-                {
-                    //蹇呴』鏄暟瀛�
-                    string msg0 = Language.StringByID(R.MyInternationalizationString.NormallyOpenModeInvalidTimeTip);
-                    this.ShowTipMsg(msg0);
+            HdlCheckLogic.Current.CheckSecondarySecurity(action);
 
-                    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;
-                Shared.Phone.Device.Logic.SkipView.LockAddModifyLogic(DoorLockCommonInfo.NormallyOpenModeInvalidTime,doorLock);
-                btnNormallyOpen.IsSelected = true;
-            };
-        }
-        /// <summary>
+        }
+
+        /// <summary>
         /// 甯稿紑妯″紡鐘舵�佹洿鏂�
         /// </summary>
         private void UpdateNomallyOpenStatus()
         {
             if (!canOpenNormallyMode)
             {
-                btnNormallyOpen.UnSelectedImagePath = "DoorLock/NormallyOpenOffline.png";
-                btnNormallyOpen.Enable = false;
+                btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0);
                 return;
             }
-            if (DoorLockCommonInfo.IsDoorLockNormallyMode == true)
+            if (doorLock.IsDoorLockNormallyMode)
             {
                 btnNormallyOpen.IsSelected = true;
                 btnDoorLockPic.IsSelected = true;
@@ -1161,19 +1128,12 @@
                 btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.DoorLockOpen);
 
             }
-            else if (DoorLockCommonInfo.IsDoorLockNormallyMode == false)
+            else if (!doorLock.IsDoorLockNormallyMode)
             {
                 btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose);
                 btnDoorLockPic.IsSelected = false;
                 btnNormallyOpen.IsSelected = false;
                 progressButton.Y = Application.GetRealHeight(347);
-            }
-            else
-            {
-                btnNormallyOpen.UnSelectedImagePath = "DoorLock/NormallyOpenOffline.png";
-                btnNormallyOpen.Enable = false;
-                string msg = Language.StringByID(R.MyInternationalizationString.GetNormallyOpenModeFailed);
-                this.ShowTipMsg(msg);
             }
         }
         #endregion
@@ -1191,13 +1151,13 @@
             btnDoorOpenPic.Enable = false;
             if (UserCenterResourse.UserInfo.AuthorityNo != 1)
             {
-                var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
+                var result = await DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid);
                 if (result == false)
                 {
-                    var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
+                    var result1 = await DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid);
                     if (result1 == true)
                     {
-                        RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
+                        RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                         devicNameSecAction += (deviceRename) =>
                         {
                             if (!string.IsNullOrEmpty(deviceRename))
@@ -1227,7 +1187,7 @@
             }
             else
             {
-                RemoteUnlockRequest(doorLock, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
+                RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle);
                 devicNameSecAction += (deviceRename) =>
                 {
                     if (!string.IsNullOrEmpty(deviceRename))
@@ -1250,11 +1210,13 @@
         /// </summary>
         public override void RemoveFromParent()
         {
+            UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction = null;
             if (IsDrawerLockMode)
             {
                 CommonPage.Instance.IsDrawerLockMode = false;
             }
             ZbGateway.StatusList.Remove(this);
+            DoorLockCommonInfo.LogicAction = null;
             base.RemoveFromParent();
         }
         #endregion

--
Gitblit v1.8.0