From f71e74b5f0d2716fbf05da016cdaa18d64e09f80 Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期四, 31 十二月 2020 17:01:18 +0800 Subject: [PATCH] 又换完成最新门锁。空气质量传感器完成数据和基本配置功能。开发图表和自动化的同事可下载此代码 --- ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs | 2592 +++++++++++++++++++++++++++------------------------------- 1 files changed, 1,189 insertions(+), 1,403 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs old mode 100755 new mode 100644 index f76ff99..a543f11 --- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserDoorLockPage.cs @@ -6,1439 +6,1225 @@ namespace Shared.Phone.UserCenter.DoorLock { - public class UserDoorLockPage : DoorLockCommonLayout, ZigBee.Common.IStatus + public class UserDoorLockPage : DoorLockCommonLayout, ZigBee.Common.IStatus + { + #region 鐣岄潰 + /// <summary> + /// 鏋勯�犲嚱鏁� + /// </summary> + /// <param name="room"></param> + /// <param name="doorLock"></param> + public UserDoorLockPage(Room room, CommonDevice doorLock) { - #region 鐣岄潰 - /// <summary> - /// 鏋勯�犲嚱鏁� - /// </summary> - /// <param name="room"></param> - /// <param name="doorLock"></param> - public UserDoorLockPage(Room room, CommonDevice doorLock) - { - //寰愭鐨勯棬閿佺晫闈㈡墦寮�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�) - ControlCommonResourse.IsDoorLockPageOpen = true; - this.doorLock = doorLock as ZigBee.Device.DoorLock; - currentRoom = room; - deviceUI = doorLock; - BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor; - ZbGateway.StatusList.Add(this); - } + //寰愭鐨勯棬閿佺晫闈㈡墦寮�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�) + //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 鍙橀噺鐢虫槑 - /// <summary> - /// 褰撳墠闂ㄩ攣 - /// </summary> - ZigBee.Device.DoorLock doorLock; - /// <summary> - /// 闊抽噺鏁版嵁 - /// </summary> - ZigBee.Device.DoorLock.VolumeResponseData volumeData = null; - /// <summary> - /// 绛夊緟鑾峰彇鐢甸噺鐨勭瓑寰呮椂闂� - /// </summary> - DateTime waitGetDoorLockPower = DateTime.MaxValue; - /// <summary> - /// 閫昏緫涓槸鍚︽湁甯稿紑妯″紡 - /// </summary> - private bool HaveLogicNormallyOpenMode = false; - /// <summary> - /// 褰撳墠鐢甸噺 - /// </summary> - bool canVolume = false; - /// <summary> - /// 淇濈暀涓婁竴娆¢煶閲� - /// </summary> - bool canOpenNormallyMode = false; - /// <summary> - /// IsDrawerLockMode[涓婚〉宸︽粦] - /// </summary> - public bool IsDrawerLockMode; - /// <summary> - /// 褰撳墠鐢甸噺 - /// </summary> - int currentPower = 0; - /// <summary> - /// 淇濈暀涓婁竴娆¢煶閲� - /// </summary> - int oldVolume = -1; - /// <summary> - /// 褰撳墠鎴块棿 - /// </summary> - Room currentRoom; - /// <summary> - /// 璁惧UI瀵硅薄 - /// </summary> - CommonDevice deviceUI; - /// <summary> - /// 璁剧疆浜屾楠岃瘉Action - /// </summary> - Action action; - /// <summary> - /// 涓儴甯冨眬涓棬閿佸悕绉版樉绀� - /// </summary> - Button btnDoorLockTitle; - /// <summary> - /// 鍒嗕韩 - /// </summary> - Button btnShare; - /// <summary> - /// 璁剧疆 - /// </summary> - Button btnFuncSet; - /// <summary> - /// 璁剧疆FrameLayout - /// </summary> - FrameLayout btnFuncSetFrameLayout; - /// <summary> - /// 鐐瑰嚮寮�甯冨眬 - /// </summary> - private FrameLayout openFrameLayout; - /// <summary> - /// 鐐瑰嚮鍏冲竷灞� - /// </summary> - private FrameLayout closeFrameLayout; - /// <summary> - /// 鎵撳紑鍥剧墖 - /// </summary> - Button btnDoorOpenPic; - /// <summary> - /// 鎼滆棌UI - /// </summary> - FrameLayout btnCollectFrameLayout; - /// <summary> - /// 鎼滆棌 - /// </summary> - Button btnCollect; - /// <summary> - /// 璁板綍UI - /// </summary> - FrameLayout btnRecordFrameLayout; - /// <summary> - /// 璁板綍鎸夐挳 - /// </summary> - Button btnRecord; - /// <summary> - /// 褰撳墠鐘舵�� - /// </summary> - Button btnStatus; - /// <summary> - /// 褰撳墠鐢甸噺鏂囨湰 - /// </summary> - Button btnCurrentPowerText; - /// <summary> - /// 杩涘害鎸夐挳 - /// </summary> - Button progressButton; - /// <summary> - /// 杩涘害 - /// </summary> - DiyImageVerticalSeekBar diyImageVerticalSeekBar; - /// <summary> - /// 杩涘害鏂囨湰 - /// </summary> - Button progressText; - /// <summary> - /// 闂ㄩ攣鍏冲浘鐗� - /// </summary> - Button btnDoorClosePic; - /// <summary> - /// 闂ㄩ攣寮�/鍏冲浘鐗� - /// </summary> - Button btnDoorLockPic; - /// <summary> - /// 鐢甸噺 - /// </summary> - Button btnPower; - /// <summary> - /// 甯稿紑 - /// </summary> - Button btnNormallyOpen; - /// <summary> - /// 闊抽噺 - /// </summary> - Button btnVolume; - /// <summary> - /// 甯稿紑FrameLayout - /// </summary> - FrameLayout btnNormallyOpenFrameLayout; - /// <summary> - /// 闊抽噺FrameLayout - /// </summary> - FrameLayout btnVolumeFrameLayout; - /// <summary> - /// 聽褰撳墠闊抽噺 - /// </summary> - int currentVolume = -1; - /// <summary> - /// waitClickTime - /// </summary> - DateTime waitClickTime = DateTime.MaxValue; - /// <summary> - /// IsClick - /// </summary> - bool IsClick = true; - #endregion + #region 鍙橀噺鐢虫槑 + /// <summary> + /// 褰撳墠闂ㄩ攣 + /// </summary> + ZigBee.Device.DoorLock doorLock; + /// <summary> + /// 闊抽噺鏁版嵁 + /// </summary> + ZigBee.Device.DoorLock.VolumeResponseData volumeData = null; + /// <summary> + /// 绛夊緟鑾峰彇鐢甸噺鐨勭瓑寰呮椂闂� + /// </summary> + DateTime waitGetDoorLockPower = DateTime.MaxValue; + /// <summary> + /// 閫昏緫涓槸鍚︽湁甯稿紑妯″紡 + /// </summary> + private bool haveLogicNormallyOpenMode = false; - /// <summary> - /// UI鏄剧ず - /// </summary> - public void Show() - { - this.TopFrameLayout(this, ""); - this.MidFrameLayout(this); + /// <summary> + /// 褰撳墠鐢甸噺 + /// </summary> + bool canVolume = false; + /// <summary> + /// 鏄惁鏀寔甯稿紑 + /// </summary> + bool canOpenNormallyMode = false; + /// <summary> + /// IsDrawerLockMode[涓婚〉宸︽粦] + /// </summary> + public bool IsDrawerLockMode; + /// <summary> + /// 褰撳墠鐢甸噺 + /// </summary> + int currentPower = 0; + /// <summary> + /// 淇濈暀涓婁竴娆¢煶閲� + /// </summary> + int oldVolume = -1; + /// <summary> + /// 褰撳墠鎴块棿 + /// </summary> + Room currentRoom; + /// <summary> + /// 璁惧UI瀵硅薄 + /// </summary> + CommonDevice deviceUI; + /// <summary> + /// 璁剧疆浜屾楠岃瘉Action + /// </summary> + Action action; + /// <summary> + /// 涓儴甯冨眬涓棬閿佸悕绉版樉绀� + /// </summary> + NormalViewControl btnDoorLockTitle; + /// <summary> + /// 鍒嗕韩 + /// </summary> + Button btnShare; + /// <summary> + /// 璁剧疆 + /// </summary> + Button btnFuncSet; + /// <summary> + /// 璁剧疆FrameLayout + /// </summary> + FrameLayout btnFuncSetFrameLayout; + FrameLayout progressFrameLayoutMatch; + /// <summary> + /// 鐐瑰嚮寮�甯冨眬 + /// </summary> + private FrameLayout openFrameLayout; + /// <summary> + /// 鐐瑰嚮鍏冲竷灞� + /// </summary> + private FrameLayout closeFrameLayout; + /// <summary> + /// 鎵撳紑鍥剧墖 + /// </summary> + Button btnDoorOpenPic; + /// <summary> + /// 鎼滆棌UI + /// </summary> + FrameLayout btnCollectFrameLayout; + /// <summary> + /// 鎼滆棌 + /// </summary> + Button btnCollect; + /// <summary> + /// 璁板綍UI + /// </summary> + FrameLayout btnRecordFrameLayout; + /// <summary> + /// 璁板綍鎸夐挳 + /// </summary> + Button btnRecord; + /// <summary> + /// 褰撳墠鐘舵�� + /// </summary> + Button btnStatus; + /// <summary> + /// 褰撳墠鐢甸噺鏂囨湰 + /// </summary> + Button btnCurrentPowerText; + /// <summary> + /// 杩涘害鎸夐挳 + /// </summary> + Button progressButton; + /// <summary> + /// 杩涘害 + /// </summary> + DiyImageVerticalSeekBar diyImageVerticalSeekBar; + /// <summary> + /// 杩涘害鏂囨湰 + /// </summary> + Button progressText; + /// <summary> + /// 闂ㄩ攣鍏冲浘鐗� + /// </summary> + Button btnDoorClosePic; + /// <summary> + /// 闂ㄩ攣寮�/鍏冲浘鐗� + /// </summary> + Button btnDoorLockPic; + /// <summary> + /// 鐢甸噺 + /// </summary> + Button btnPower; + /// <summary> + /// 甯稿紑 + /// </summary> + Button btnNormallyOpen; + /// <summary> + /// 闊抽噺 + /// </summary> + Button btnVolume; + /// <summary> + /// 甯稿紑FrameLayout + /// </summary> + FrameLayout btnNormallyOpenFrameLayout; + /// <summary> + /// 闊抽噺FrameLayout + /// </summary> + FrameLayout btnVolumeFrameLayout; + /// <summary> + /// 聽褰撳墠闊抽噺 + /// </summary> + int currentVolume = -1; + /// <summary> + /// waitClickTime + /// </summary> + DateTime waitClickTime = DateTime.MaxValue; + /// <summary> + /// IsClick + /// </summary> + bool IsClick = true; + #endregion - btnShare = new Button - { - X = Application.GetRealWidth(850 - 116), - Height = Application.GetRealHeight(69), - Width = Application.GetRealWidth(0), - }; - this.titleFrameLayout.AddChidren(btnShare); + /// <summary> + /// UI鏄剧ず + /// </summary> + public void Show() + { + this.TopFrameLayout(this, ""); + this.MidFrameLayout(this); - btnFuncSetFrameLayout = new FrameLayout - { - X = Application.GetRealWidth(850 - 116), - Height = Application.GetRealHeight(69), - Width = Application.GetRealWidth(69 * 2 + 58), - }; - this.titleFrameLayout.AddChidren(btnFuncSetFrameLayout); + btnShare = new Button + { + X = Application.GetRealWidth(850 - 116), + Height = Application.GetRealHeight(69), + Width = Application.GetRealWidth(0), + }; + this.titleFrameLayout.AddChidren(btnShare); - btnFuncSet = new Button - { - X = Application.GetRealWidth(103), - Height = Application.GetMinReal(69), - Width = Application.GetMinReal(69), - UnSelectedImagePath = "DoorLock/SettingIcon.png", - }; - btnFuncSetFrameLayout.AddChidren(btnFuncSet); + btnFuncSetFrameLayout = new FrameLayout + { + X = Application.GetRealWidth(850 - 116), + Height = Application.GetRealHeight(69), + Width = Application.GetRealWidth(69 * 2 + 58), + }; + this.titleFrameLayout.AddChidren(btnFuncSetFrameLayout); - MidFrameLayoutUI(); + btnFuncSet = new Button + { + X = Application.GetRealWidth(103), + Height = Application.GetMinReal(69), + Width = Application.GetMinReal(69), + UnSelectedImagePath = "DoorLock/SettingIcon.png", + }; + btnFuncSetFrameLayout.AddChidren(btnFuncSet); - ClickHandle(); + MidFrameLayoutUI(); - if (doorLock.IsOnline == 1) - { - ReadDoorLockUserInfo(); - } - else - { - string msg1 = Language.StringByID(R.MyInternationalizationString.DoorLockOffLine); - this.ShowTipMsg(msg1); - return; - } - } + ClickHandle(); - /// <summary> - /// 涓儴甯冨眬 - /// </summary> - public void MidFrameLayoutUI() - { - var midTopFrameLayout = new FrameLayout() - { - X = Application.GetRealWidth(58), - Y = Application.GetRealHeight(115), - Height = Application.GetRealHeight(1238), - Width = Application.GetRealWidth(965), - BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite, - Radius = 6, - }; - this.midFrameLayout.AddChidren(midTopFrameLayout); + if (Common.LocalDevice.Current.CheckDeviceIsOnline(doorLock) == true) + { + ReadDoorLockUserInfo(); + } + else + { + string msg1 = Language.StringByID(R.MyInternationalizationString.DoorLockOffLine); + this.ShowTipMsg(msg1); + return; + } + } - //闂ㄩ攣鏍囬 - 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, - }; - midTopFrameLayout.AddChidren(btnDoorLockTitle); + /// <summary> + /// 涓儴甯冨眬 + /// </summary> + public void MidFrameLayoutUI() + { + var midTopFrameLayout = new FrameLayout() + { + X = Application.GetRealWidth(58), + Y = Application.GetRealHeight(115), + Height = Application.GetRealHeight(1238), + Width = Application.GetRealWidth(965), + BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite, + Radius = (uint)Application.GetRealHeight(17), + }; + this.midFrameLayout.AddChidren(midTopFrameLayout); - //璁板綍 - btnRecordFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(69 + 15 + 46), - Height = Application.GetRealHeight(69 + 46 * 2), - X = Application.GetRealWidth(752 - 46), - }; - midTopFrameLayout.AddChidren(btnRecordFrameLayout); - btnRecord = new Button() - { - Width = Application.GetMinReal(69), - Height = Application.GetMinReal(69), - X = Application.GetRealWidth(46), - Y = Application.GetRealHeight(46), - UnSelectedImagePath = "DoorLock/RecordIcon.png", - }; - btnRecordFrameLayout.AddChidren(btnRecord); + //璁惧鍚嶇О + 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(); + if (btnDoorLockTitle.Width > 664) + { + btnDoorLockTitle.Width = 664; + } + btnDoorLockTitle.TextAlignment = TextAlignment.Center; + btnDoorLockTitle.Gravity = Gravity.CenterHorizontal; + midTopFrameLayout.AddChidren(btnDoorLockTitle); - //鎼滆棌UI - btnCollectFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(69 + 15 + 46), - Height = Application.GetRealHeight(69 + 46 * 2), - X = Application.GetRealWidth(850 - 15), - }; - midTopFrameLayout.AddChidren(btnCollectFrameLayout); - btnCollect = new Button() - { - Width = Application.GetMinReal(69), - Height = Application.GetMinReal(69), - X = Application.GetRealWidth(15), - Y = Application.GetRealHeight(46), - UnSelectedImagePath = "Item/Collection.png", - SelectedImagePath = "Item/CollectionSelected.png" - }; - btnCollectFrameLayout.AddChidren(btnCollect); - - //褰撳墠鐘舵�� - btnStatus = new Button() - { - Width = Application.GetRealWidth(132 + 351), - Height = Application.GetRealHeight(40), - Y = Application.GetRealHeight(118), - Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose), - TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, - TextSize = 10, - TextAlignment = TextAlignment.CenterRight, - }; - midTopFrameLayout.AddChidren(btnStatus); + //璁板綍 + btnRecordFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(69 + 15 + 46), + Height = Application.GetRealHeight(69 + 46 * 2), + X = Application.GetRealWidth(752 - 46), + }; + midTopFrameLayout.AddChidren(btnRecordFrameLayout); + btnRecord = new Button() + { + Width = Application.GetMinReal(69), + Height = Application.GetMinReal(69), + X = Application.GetRealWidth(46), + Y = Application.GetRealHeight(46), + UnSelectedImagePath = "DoorLock/RecordIcon.png", + }; + btnRecordFrameLayout.AddChidren(btnRecord); - //褰撳墠鐢甸噺 - btnCurrentPowerText = new Button() - { - Width = Application.GetRealWidth(133 + 348), - Height = Application.GetRealHeight(40), - X = btnStatus.Right, - Y = Application.GetRealHeight(118), - TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, - Text = Language.StringByID(R.MyInternationalizationString.DoorLockPower) + "%", - TextSize = 10, - TextAlignment = TextAlignment.CenterLeft, - }; - midTopFrameLayout.AddChidren(btnCurrentPowerText); -#if Android - btnCurrentPowerText.X = btnStatus.Right + Application.GetRealWidth(20); + //鎼滆棌UI + btnCollectFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(69 + 15 + 46), + Height = Application.GetRealHeight(69 + 46 * 2), + X = Application.GetRealWidth(850 - 15), + }; + midTopFrameLayout.AddChidren(btnCollectFrameLayout); + btnCollect = new Button() + { + Width = Application.GetMinReal(69), + Height = Application.GetMinReal(69), + X = Application.GetRealWidth(15), + Y = Application.GetRealHeight(46), + UnSelectedImagePath = "Item/Collection.png", + SelectedImagePath = "Item/CollectionSelected.png" + }; + btnCollectFrameLayout.AddChidren(btnCollect); + + //褰撳墠鐘舵�� + btnStatus = new Button() + { + Width = Application.GetRealWidth(132 + 351), + Height = Application.GetRealHeight(40), + Y = Application.GetRealHeight(118), + Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose), + TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + TextSize = 10, + TextAlignment = TextAlignment.CenterRight, + }; + midTopFrameLayout.AddChidren(btnStatus); + + //褰撳墠鐢甸噺 + btnCurrentPowerText = new Button() + { + Width = Application.GetRealWidth(133 + 348), + Height = Application.GetRealHeight(40), + X = btnStatus.Right, + Y = Application.GetRealHeight(118), + TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + Text = Language.StringByID(R.MyInternationalizationString.DoorLockPower) + "%", + TextSize = 10, + TextAlignment = TextAlignment.CenterLeft, + }; + midTopFrameLayout.AddChidren(btnCurrentPowerText); +#if Android + btnCurrentPowerText.X = btnStatus.Right + Application.GetRealWidth(20); #endif - //闂ㄩ攣寮�/鍏冲浘鐗� - btnDoorLockPic = new Button() - { - Width = Application.GetMinReal(383), - Height = Application.GetMinReal(343), - X = Application.GetRealWidth(161), - Y = Application.GetRealHeight(415), - UnSelectedImagePath = "DoorLock/DoorLockPicClose.png", - SelectedImagePath = "DoorLock/DooorLockPicOpen.png", - }; - midTopFrameLayout.AddChidren(btnDoorLockPic); + //闂ㄩ攣寮�/鍏冲浘鐗� + btnDoorLockPic = new Button() + { + Width = Application.GetMinReal(383), + Height = Application.GetMinReal(343), + X = Application.GetRealWidth(161), + Y = Application.GetRealHeight(415), + UnSelectedImagePath = "DoorLock/DoorLockPicClose.png", + SelectedImagePath = "DoorLock/DooorLockPicOpen.png", + }; + midTopFrameLayout.AddChidren(btnDoorLockPic); - #region 寮�/鍏崇偣鍑诲竷灞� - var btnFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(420 - 46), - Height = Application.GetRealHeight(446), - X = btnDoorLockPic.Right, - Y = Application.GetRealHeight(354), - BackgroundColor = ZigbeeColor.Current.XMWhite, - }; - midTopFrameLayout.AddChidren(btnFrameLayout); + #region 寮�/鍏崇偣鍑诲竷灞� + var btnFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(420 - 46), + Height = Application.GetRealHeight(446), + X = btnDoorLockPic.Right, + Y = Application.GetRealHeight(354), + BackgroundColor = ZigbeeColor.Current.XMWhite, + }; + midTopFrameLayout.AddChidren(btnFrameLayout); - openFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(420),//639-35 - Height = Application.GetRealHeight(446 / 2), - BackgroundColor = ZigbeeColor.Current.XMWhite, - }; - btnFrameLayout.AddChidren(openFrameLayout); + openFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(420),//639-35 + Height = Application.GetRealHeight(446 / 2), + BackgroundColor = ZigbeeColor.Current.XMWhite, + }; + btnFrameLayout.AddChidren(openFrameLayout); - closeFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(420),//639-35 - Height = Application.GetRealHeight(446 / 2), - Y = Application.GetRealHeight(446 / 2), - BackgroundColor = ZigbeeColor.Current.XMWhite, - }; - btnFrameLayout.AddChidren(closeFrameLayout); + closeFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(420),//639-35 + Height = Application.GetRealHeight(446 / 2), + Y = Application.GetRealHeight(446 / 2), + BackgroundColor = ZigbeeColor.Current.XMWhite, + }; + btnFrameLayout.AddChidren(closeFrameLayout); - var progressFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(9),//639-35 - Height = Application.GetRealHeight(446), - X = Application.GetRealWidth(95), - Y = Application.GetRealHeight(0), - BackgroundColor = ZigbeeColor.Current.XMVerticalSeekBar, - }; - btnFrameLayout.AddChidren(progressFrameLayout); + progressFrameLayoutMatch = new FrameLayout() + { + Width = Application.GetRealHeight(84),//639-35 + Height = Application.GetRealHeight(446 + 30), + X = Application.GetMinReal(51), + BackgroundColor = ZigbeeColor.Current.XMWhite, + }; + btnFrameLayout.AddChidren(progressFrameLayoutMatch); - progressButton = new Button() - { - Width = Application.GetMinReal(84),//639-35 - Height = Application.GetMinReal(93), - X = Application.GetRealWidth(58), - Y = Application.GetRealHeight(347), - UnSelectedImagePath = "DoorLock/UnLockButton.png", - }; - btnFrameLayout.AddChidren(progressButton); + var progressFrameLayout = new FrameLayout() + { + Width = Application.GetRealHeight(15),//639-35 + Height = Application.GetRealHeight(440), + Radius = (uint)Application.GetRealHeight(17), + Gravity = Gravity.CenterHorizontal, + BackgroundColor = ZigbeeColor.Current.XMVerticalSeekBar, + }; + progressFrameLayoutMatch.AddChidren(progressFrameLayout); - btnDoorOpenPic = new Button() - { - Width = Application.GetMinReal(81), - Height = Application.GetMinReal(81), - X = Application.GetRealWidth(164), - Y = Application.GetRealHeight(6), - UnSelectedImagePath = "DoorLock/DoorLockOpen.png", - }; - openFrameLayout.AddChidren(btnDoorOpenPic); + progressButton = new Button() + { + Width = Application.GetMinReal(84),//639-35 + Height = Application.GetMinReal(93), + Gravity = Gravity.CenterHorizontal, + Y = Application.GetRealHeight(347), + UnSelectedImagePath = "DoorLock/UnLockButton.png", + }; + progressFrameLayoutMatch.AddChidren(progressButton); - btnDoorClosePic = new Button() - { - Width = Application.GetMinReal(81), - Height = Application.GetMinReal(81), - X = Application.GetRealWidth(164), - Y = Application.GetRealHeight(117), - UnSelectedImagePath = "DoorLock/DoorLockClose.png", - }; - closeFrameLayout.AddChidren(btnDoorClosePic); - #endregion + btnDoorOpenPic = new Button() + { + Width = Application.GetMinReal(81), + Height = Application.GetMinReal(81), + X = Application.GetRealWidth(164), + Y = Application.GetRealHeight(6), + UnSelectedImagePath = "DoorLock/DoorLockOpen.png", + }; + openFrameLayout.AddChidren(btnDoorOpenPic); - //鐢甸噺 - btnPower = new Button() - { - Width = Application.GetMinReal(81), - Height = Application.GetMinReal(81), - X = Application.GetRealWidth(253), - Y = Application.GetRealHeight(994), - UnSelectedImagePath = "DoorLock/PowerOffline.png", - }; - midTopFrameLayout.AddChidren(btnPower); + btnDoorClosePic = new Button() + { + Width = Application.GetMinReal(81), + Height = Application.GetMinReal(81), + X = Application.GetRealWidth(164), + Y = Application.GetRealHeight(117), + UnSelectedImagePath = "DoorLock/DoorLockClose.png", + }; + closeFrameLayout.AddChidren(btnDoorClosePic); + #endregion - //闊抽噺 - btnVolumeFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(81 + 80), - Height = Application.GetRealHeight(81 + 80), - X = Application.GetRealWidth(444 - 40), - Y = Application.GetRealHeight(994 - 40), - }; - midTopFrameLayout.AddChidren(btnVolumeFrameLayout); - btnVolume = new Button() - { - Width = Application.GetMinReal(81), - Height = Application.GetMinReal(81), - X = Application.GetRealWidth(40), - Y = Application.GetRealHeight(40), - UnSelectedImagePath = "DoorLock/VolumeIcon.png", - SelectedImagePath = "DoorLock/VolumeIconOn.png", - }; - btnVolumeFrameLayout.AddChidren(btnVolume); + //鐢甸噺 + btnPower = new Button() + { + Width = Application.GetMinReal(81), + Height = Application.GetMinReal(81), + X = Application.GetRealWidth(253), + Y = Application.GetRealHeight(994), + UnSelectedImagePath = "DoorLock/PowerOffline.png", + }; + midTopFrameLayout.AddChidren(btnPower); - //甯稿紑 - btnNormallyOpenFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(81 + 80), - Height = Application.GetRealHeight(81 + 80), - X = Application.GetRealWidth(631 - 40), - Y = Application.GetRealHeight(994 - 40), - }; - midTopFrameLayout.AddChidren(btnNormallyOpenFrameLayout); - btnNormallyOpen = new Button() - { - Width = Application.GetMinReal(81), - Height = Application.GetMinReal(81), - X = Application.GetRealWidth(40), - Y = Application.GetRealHeight(40), - UnSelectedImagePath = "DoorLock/NormallyOpen.png", - SelectedImagePath = "DoorLock/NormallyOpenOn.png", - }; - btnNormallyOpenFrameLayout.AddChidren(btnNormallyOpen); + //闊抽噺 + btnVolumeFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(81 + 80), + Height = Application.GetRealHeight(81 + 80), + X = Application.GetRealWidth(444 - 40), + Y = Application.GetRealHeight(994 - 40), + }; + midTopFrameLayout.AddChidren(btnVolumeFrameLayout); + btnVolume = new Button() + { + Width = Application.GetMinReal(81), + Height = Application.GetMinReal(81), + X = Application.GetRealWidth(40), + Y = Application.GetRealHeight(40), + UnSelectedImagePath = "DoorLock/VolumeIcon.png", + SelectedImagePath = "DoorLock/VolumeIconOn.png", + }; + btnVolumeFrameLayout.AddChidren(btnVolume); - #region 鑳屾櫙鍦嗚璁剧疆 - var btnCurrentTopFrameLayout = new FrameLayout() - { - Height = Application.GetRealHeight(50), - Width = Application.GetRealWidth(965), - BackgroundColor = ZigbeeColor.Current.XMBlack, - Y = Application.GetRealHeight(1100), - }; - midTopFrameLayout.AddChidren(btnCurrentTopFrameLayout); + //甯稿紑 + btnNormallyOpenFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(81 + 80), + Height = Application.GetRealHeight(81 + 80), + X = Application.GetRealWidth(631 - 40), + Y = Application.GetRealHeight(994 - 40), + }; + midTopFrameLayout.AddChidren(btnNormallyOpenFrameLayout); + btnNormallyOpen = new Button() + { + Width = Application.GetMinReal(81), + Height = Application.GetMinReal(81), + X = Application.GetRealWidth(40), + Y = Application.GetRealHeight(40), + UnSelectedImagePath = "DoorLock/NormallyOpen.png", + SelectedImagePath = "DoorLock/NormallyOpenOn.png", + }; + btnNormallyOpenFrameLayout.AddChidren(btnNormallyOpen); - var btnCurrentFrameLayout = new FrameLayout() - { - Width = Application.GetRealWidth(965), - Height = Application.GetRealHeight(138), - Y = Application.GetRealHeight(1100), - BackgroundColor = ZigbeeColor.Current.XMBlack, - Radius = 6, - }; - midTopFrameLayout.AddChidren(btnCurrentFrameLayout); - #endregion + #region 鑳屾櫙鍦嗚璁剧疆 + var btnCurrentTopFrameLayout = new FrameLayout() + { + Height = Application.GetRealHeight(50), + Width = Application.GetRealWidth(965), + BackgroundColor = ZigbeeColor.Current.XMBlack, + Y = Application.GetRealHeight(1100), + }; + midTopFrameLayout.AddChidren(btnCurrentTopFrameLayout); - #region 褰撳墠鎴块棿 - var btnCurrentRoomPic = new Button() - { - Width = Application.GetMinReal(81), - Height = Application.GetMinReal(81), - X = Application.GetRealWidth(58), - Y = Application.GetRealHeight(29), - UnSelectedImagePath = "DoorLock/RoomPic.png", - }; - btnCurrentFrameLayout.AddChidren(btnCurrentRoomPic); + var btnCurrentFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(965), + Height = Application.GetRealHeight(138), + Y = Application.GetRealHeight(1100), + BackgroundColor = ZigbeeColor.Current.XMBlack, + Radius = (uint)Application.GetRealHeight(17), + }; + midTopFrameLayout.AddChidren(btnCurrentFrameLayout); + #endregion - var btnCurrentRoomName = new Button() - { - Width = Application.GetRealWidth(172), - Height = Application.GetRealHeight(49), - X = Application.GetRealWidth(150), - Y = Application.GetRealHeight(46), - Text = currentRoom.Name, - TextColor = Shared.Common.ZigbeeColor.Current.XMWhite, - TextSize = 12, - TextAlignment = TextAlignment.CenterLeft, - }; - btnCurrentFrameLayout.AddChidren(btnCurrentRoomName); - #endregion - } + #region 褰撳墠鎴块棿 + var btnCurrentRoomPic = new Button() + { + Width = Application.GetMinReal(81), + Height = Application.GetMinReal(81), + X = Application.GetRealWidth(58), + Y = Application.GetRealHeight(29), + UnSelectedImagePath = "DoorLock/RoomPic.png", + }; + btnCurrentFrameLayout.AddChidren(btnCurrentRoomPic); - #region 闊抽噺寮圭獥 - /// <summary> - /// 杩涘害鏉� - /// </summary> - private void VolumeDialog(Button progressText, DiyImageVerticalSeekBar diyImageVerticalSeekBar) - { - var dialog = new Dialog { }; - dialog.Show(); - var flMain = new FrameLayout { BackgroundColor = 0x00000000 }; - dialog.AddChidren(flMain); - flMain.MouseUpEventHandler += (sender11, e11) => - { - dialog.Close(); - - //璁剧疆闊抽噺 - if (currentVolume != oldVolume) - { - SetVolume(currentVolume); - } - }; - - var progressBackground = new FrameLayout() - { - Width = Application.GetRealWidth(271), - Height = Application.GetRealHeight(700), - X = Application.GetRealWidth(403), - Y = Application.GetRealHeight(582), - BackgroundImagePath = "DoorLock/ProgressBackground.png", - }; - 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() + "%", - }; - - diyImageVerticalSeekBar = new DiyImageVerticalSeekBar() - { - Width = Application.GetRealWidth(271), - Height = Application.GetRealHeight(447 + 63), - Y = Application.GetRealHeight(155), - IsProgressTextShow = false,//鏄剧ず鐧惧垎姣� - ProgressBarColor = ZigbeeColor.Current.XMProgressBarColor,//閫変腑杩涘害鏉¢鑹� - SeekBarBackgroundColor = ZigbeeColor.Current.XMSeekBarBackgroundColor,//閫変腑杩涘害鏉¢鑹� - ThumbImagePath = "DoorLock/UnLockButton.png",//杩涘害鏉℃寜閽浘鏍� - ThumbImageHeight = Application.GetRealHeight(81),//杩涘害鏉℃寜閽浘鏍囩殑楂樺害锛堥粯璁ゆ鏂瑰舰锛氬鍜岄珮涓�鏍凤級 - ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor, - ProgressTextSize = 12,//鏄剧ず鐧惧垎姣斿瓧浣撳ぇ灏� - SeekBarViewHeight = Application.GetRealHeight(17),//杩涘害鏉$殑瀹藉害 - Progress = currentVolume, - }; - progressBackground.AddChidren(progressText); - progressBackground.AddChidren(diyImageVerticalSeekBar); - diyImageVerticalSeekBar.OnProgressChangedEvent += (sender, e) => - { - int curVolume = -1; - curVolume = e; - currentVolume = curVolume; - progressText.Text = e.ToString() + "%"; - }; - } - - #endregion - #endregion - - #region 澶勭悊鎺ュ彛鏁版嵁 - /// <summary> - /// 澶勭悊鍙樺寲浜嬩欢 - /// </summary> - /// <param name="common"></param> - /// <param name="typeTag"></param> - public void DeviceInfoChange(CommonDevice tempDevice, string typeTag) - { - //鏈烘寮�閿佷笂鎶ャ�傚鐞嗗父寮�鐘舵�侊紝寮�鍏崇姸鎬� - if (typeTag == "DoorLockProgrammingEventNotificationCommand" && tempDevice != null) - { - var tempDoor = (ZigBee.Device.DoorLock)tempDevice; - if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint - && tempDevice.DeviceAddr == doorLock.DeviceAddr) - { - if (tempDoor.doorLockOperatingEventNotificationCommand != null) - { - //闈炰富浜轰笉寮硅繖涓獥鍙� - if (UserCenterResourse.UserInfo.AuthorityNo != 1) - { - return; - } - string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; - if (doorLock.IsDoorLockNormallyMode.ContainsKey(key)) - { - if (doorLock.IsDoorLockNormallyMode[key] == true) - { - if (canOpenNormallyMode) - { - Application.RunOnMainThread(() => { NomallyOpenModeInvalidDialog(true); }); - } - } - } - } - } - } - - if (typeTag == "DeviceStatusReport" && tempDevice != null) - { - if (tempDevice != null) - { - if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint - && tempDevice.DeviceAddr == doorLock.DeviceAddr) - { - if (tempDevice.DeviceStatusReport != null && tempDevice.DeviceStatusReport.AttriBute != null) - { - var dataReport = tempDevice.DeviceStatusReport.AttriBute[0]; - if (tempDevice.DeviceStatusReport.CluterID == 1 && dataReport.AttributeId == 33) - { - Application.RunOnMainThread(() => - { - currentPower = dataReport.AttriButeData; - UpdatePower(); - }); - } - } - } - } - } - } - - /// <summary> - /// 鍒濆鍖栨暟鎹� - /// </summary> - void ReadDoorLockUserInfo() - { - System.Threading.Tasks.Task.Run(async () => - { - try - { - Application.RunOnMainThread(() => - { - CommonPage.Loading.Start(""); - }); - - //鏄惁鏀寔甯稿紑 - canOpenNormallyMode = DoorLockCommonInfo.CanNormallyOpen(doorLock); - if (canOpenNormallyMode) - { - //鑾峰彇闂ㄩ攣甯稿紑妯″紡 - 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; - } - - NormallyOpenModeValue(tempRes); - var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(); - if (resTemp == 1) - { - HaveLogicNormallyOpenMode = true; - } - else if (resTemp == 0) - { - HaveLogicNormallyOpenMode = false; - } - Application.RunOnMainThread(() => - { - UpdateNomallyOpenStatus(); - }); - } - } - else - { - Application.RunOnMainThread(() => - { - btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0); - }); - } - - //鏄惁鏀寔闊抽噺 - canVolume = DoorLockCommonInfo.CanVolume(doorLock); - if (canVolume) - { - //璇诲彇闊抽噺 - 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); - }); - } - - //璇诲彇闂ㄩ攣鐢甸噺锛氱皣ID锛�1 灞炴�D 33 - doorLock.ReadAttri(Cluster_ID.Power, AttriButeId.DoorLockPower); - //涓婃姤鐢甸噺绛�1绉� - System.Threading.Thread.Sleep(1000); - } - catch (Exception ex) - { - var mess = ex.Message; - } - finally - { - Application.RunOnMainThread(() => - { - CommonPage.Loading.Hide(); - }); - } - }); - } - - #endregion - - #region 鍏叡浜嬩欢澶勭悊 - /// <summary> - /// 浜嬩欢澶勭悊 - /// </summary> - public void ClickHandle() - { - //闂ㄩ攣鏍囬 - btnDoorLockTitle.Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock); - - //杩斿洖 - EventHandler<MouseEventArgs> eHandlerBack = (sender, e) => - { - RemoveFromParent(); - }; - this.btnBack.MouseUpEventHandler += eHandlerBack; - this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; - - //璁剧疆 - EventHandler<MouseEventArgs> btnFuncSetHander = (sender, e) => - { - //鎵撳紑鍏朵粬鐣岄潰鏃跺墠绉婚櫎 - 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; - functionSetting.Show(); - - functionSetting.devicNameAction += (deviceRename) => - { - if (!string.IsNullOrEmpty(deviceRename)) - { - btnDoorLockTitle.Text = deviceRename; - //鏀规埧闂� - HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id); - deviceUI.ReSave(); - } - }; - }; - btnFuncSetFrameLayout.MouseDownEventHandler += btnFuncSetHander; - btnFuncSet.MouseDownEventHandler += btnFuncSetHander; - - //鎼滆棌鐘舵�� - if (HdlRoomLogic.Current.IsCollectInRoom(deviceUI) == false) - { - btnCollect.IsSelected = false; - } - else - { - btnCollect.IsSelected = true; - } - - //鍘嗗彶璁板綍鐐瑰嚮浜嬩欢 - EventHandler<MouseEventArgs> handerRecord = (sender, e) => - { - //鍘嗗彶璁板綍 ---- stan - var form = new DeviceDoorLock.DoorLockHistoryLogForm(); - form.AddForm(this.doorLock.DeviceAddr); - }; - btnRecordFrameLayout.MouseDownEventHandler += handerRecord; - btnRecord.MouseDownEventHandler += handerRecord; - - //鏀惰棌鐐瑰嚮浜嬩欢 - EventHandler<MouseEventArgs> handerCollect = (sender, e) => - { - btnCollect.IsSelected = !btnCollect.IsSelected; - if (btnCollect.IsSelected) - { - HdlRoomLogic.Current.AddLoveDevice(deviceUI);//鏀惰棌 - } - else - { - HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//鍙栨秷鏀惰棌 - } - }; - btnCollectFrameLayout.MouseDownEventHandler += handerCollect; - btnCollect.MouseDownEventHandler += handerCollect; - - //寮�閿佷簨浠� - EventHandler<MouseEventArgs> hander1 = async (sender, e) => - { - - string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; - if (doorLock.IsDoorLockNormallyMode.ContainsKey(key)) - { - if (doorLock.IsDoorLockNormallyMode[key] == true) - { - if (canOpenNormallyMode) - { - NomallyOpenModeInvalidDialog(false); - } - else - { - OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus); - } - } - else - { - OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus); - } - } - else - { - OpenDoorLockHandle(progressButton, btnDoorLockPic, btnStatus); - } - }; - openFrameLayout.MouseUpEventHandler += hander1; - btnDoorOpenPic.MouseUpEventHandler += hander1; - - //鍏抽攣浜嬩欢 - EventHandler<MouseEventArgs> hander2 = (sender, e) => - { - if (canOpenNormallyMode) - { - var key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; - if (doorLock.IsDoorLockNormallyMode.ContainsKey(key)) - { - if (doorLock.IsDoorLockNormallyMode[key] == true) - { - NomallyOpenModeInvalidDialog(); - } - } - } - else - { - btnDoorLockPic.IsSelected = false; - progressButton.Y = Application.GetRealHeight(347); - } - }; - closeFrameLayout.MouseUpEventHandler += hander2; - btnDoorClosePic.MouseUpEventHandler += hander2; - - //闊抽噺鐐瑰嚮浜嬩欢 - EventHandler<MouseEventArgs> handerVolume = (sender, e) => - { - if (canVolume) - { - VolumeDialog(progressText, diyImageVerticalSeekBar); - } - }; - btnVolumeFrameLayout.MouseDownEventHandler += handerVolume; - btnVolume.MouseDownEventHandler += handerVolume; - - - //甯稿紑妯″紡鐐瑰嚮浜嬩欢 - EventHandler<MouseEventArgs> handerNormallyOpen = (sender, e) => - { - NomallyOpenDialog(); - }; - btnNormallyOpenFrameLayout.MouseUpEventHandler += handerNormallyOpen; - btnNormallyOpen.MouseUpEventHandler += handerNormallyOpen; - } - #endregion - - #region 鐢甸噺鏄剧ず - /// <summary> - /// 鐢甸噺鏇存柊 - /// </summary> - private void UpdatePower() - { - btnCurrentPowerText.Text = Language.StringByID(R.MyInternationalizationString.DoorLockPower) + currentPower + "%"; - if (currentPower <= 20 && currentPower >= 0) - { - btnPower.UnSelectedImagePath = "DoorLock/LowPower.png"; - } - else if (currentPower <= 40 && currentPower > 20) - { - btnPower.UnSelectedImagePath = "DoorLock/Power40.png"; - } - else if (currentPower <= 60 && currentPower > 40) - { - btnPower.UnSelectedImagePath = "DoorLock/Power60.png"; - } - else if (currentPower <= 80 && currentPower > 60) - { - btnPower.UnSelectedImagePath = "DoorLock/Power80.png"; - } - else if (currentPower <= 100 && currentPower > 80) - { - btnPower.UnSelectedImagePath = "DoorLock/Power100.png"; - } - else - { - btnPower.UnSelectedImagePath = "DoorLock/PowerOffline.png"; - } - } - #endregion - - #region 闊抽噺 - /// <summary> - /// 鏇存柊闊抽噺 - /// </summary> - private void UpdateVolume() - { - if (volumeData != null) - { - int curVol = 0; - btnVolume.IsSelected = true; - if (volumeData.command == "eb") - { - curVol = 0; - } - else - { - curVol = volumeData.value; - } - oldVolume = currentVolume = curVol; - } - } - - /// <summary> - /// 璁剧疆闊抽噺 - /// </summary> - private void SetVolume(int volume) - { - System.Threading.Tasks.Task.Run(async () => - { - try - { - Application.RunOnMainThread(() => - { - CommonPage.Loading.Start(""); - }); - var resultRes = await doorLock.SetVolumeAsync(volume); - if (resultRes == null || resultRes.defaultControlResponseData == null) - { - Application.RunOnMainThread(() => - { - var volumeMsg = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); - this.ShowTipMsg(volumeMsg); - currentVolume = oldVolume; - CommonPage.Loading.Hide(); - - }); - return; - } - if (resultRes.defaultControlResponseData.status != 0) - { - Application.RunOnMainThread(() => - { - var volumeMsg = Language.StringByID(R.MyInternationalizationString.SetVolumeFailed); - this.ShowTipMsg(volumeMsg); - currentVolume = oldVolume; - CommonPage.Loading.Hide(); - }); - return; - } - Application.RunOnMainThread(() => - { - var volumeMsg = Language.StringByID(R.MyInternationalizationString.SetVolumeSuccess); - this.ShowTipMsg(volumeMsg); - oldVolume = currentVolume; - CommonPage.Loading.Hide(); - }); - } - catch (Exception ex) - { - var mes = ex.Message; - } - }); - } - #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); - } - } - - /// <summary> - /// 甯稿紑妯″紡澶勭悊 - /// </summary> - private async void NomallyOpenDialog() - { - if (!btnNormallyOpen.IsSelected) - { - if (UserCenterResourse.UserInfo.AuthorityNo != 1) - { - this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate)); - 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.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); - return; - } - if (result.defaultControlResponseData.status != 0) - { - string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed); - this.ShowTipMsg(msg1); - return; - } - else - { - //娣诲姞App寮�鍚父寮�妯″紡鐨勫巻鍙茶褰� - HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(this.doorLock, 9001, string.Empty); - - //姣忔閲嶆柊璁剧疆甯稿紑锛岄粯璁ゆ椂闂撮兘鏄�12灏忔椂 - DoorLockCommonInfo.NormallyOpenModeInvalidTime = 12; - NormallyOpenModeValue(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.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(); - }; - } - }; - }; - HdlCheckLogic.Current.CheckSecondarySecurity(action); - } - else - { - NomallyOpenModeInvalidDialog(); - } - } - - /// <summary> - /// 甯稿紑妯″紡澶辨晥澶勭悊 - /// </summary> - public void NomallyOpenModeInvalidDialog(bool IsFromReport = false) - { - 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榛樿浜嗏�滃父寮�妯″紡鈥濊鍙栨秷 - NormallyOpenModeValue(false); - UpdateNomallyOpenStatus(); - //鍒犻櫎宸茬粡澶辨晥鐨勨�滃父寮�妯″紡鈥濈殑閫昏緫 - var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3); - if (resTemp == 3) - { - string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed); - this.ShowTipMsg(msg0); - } - } - else - { - //app榛樿鈥滃父寮�妯″紡鈥濊繕鏄紑鍚� - NormallyOpenModeValue(true); - UpdateNomallyOpenStatus(); - } - }; - alert.CancelClickEvent += async () => - { - if (IsFromReport) - { - //涓婃姤鈥滃父寮�妯″紡鈥濆凡琚彇娑� - Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); - //鍏堝垹闄ゅ凡澶辨晥鐨勨�滃父寮�妯″紡鈥濈殑閫昏緫 - var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3); - if (resTemp == 3) - { - string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed); - this.ShowTipMsg(msg0); - return; - } - //app閲嶆柊寮�鍚�滃父寮�妯″紡鈥� - var result = await doorLock.SetNormallyOpenModeFuncAsync(true); - if (result == null || result.defaultControlResponseData == null) - { - string msg0 = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); - this.ShowTipMsg(msg0); - NormallyOpenModeValue(false); - UpdateNomallyOpenStatus(); - return; - } - if (result.defaultControlResponseData.status != 0) - { - string msg1 = Language.StringByID(R.MyInternationalizationString.OpenNormallyOpenModeFailed); - this.ShowTipMsg(msg1); - NormallyOpenModeValue(false); - UpdateNomallyOpenStatus(); - return; - } - else - { - //淇濇寔鈥滃父寮�鎴愬姛鈥� - NormallyOpenModeValue(true); - 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); - return; - } - - CommonPage.Loading.Hide(); - } - } - else - { - //app鎿嶄綔涓嶅彇娑堚�滃父寮�妯″紡鈥� - NormallyOpenModeValue(true); - UpdateNomallyOpenStatus(); - } - }; - alert.ConfirmClickEvent += async () => - { - if (IsFromReport) - { - //涓婃姤闂ㄩ攣鈥滃父寮�妯″紡鈥濆凡缁忓彇娑堬紝鐜板湪app纭鈥滃父寮�妯″紡鈥濆彇娑� - NormallyOpenModeValue(false); - UpdateNomallyOpenStatus(); - - //鍒犻櫎宸茬粡澶辨晥鐨勨�滃父寮�妯″紡鈥濈殑閫昏緫 - var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3); - if (resTemp == 3) - { - string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed); - this.ShowTipMsg(msg0); - } - } - 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纭鍙栨秷鈥滃父寮�妯″紡鈥濇垚鍔� - NormallyOpenModeValue(false); - UpdateNomallyOpenStatus(); - - //鍒犻櫎璁剧疆甯稿紑妯″紡鍒涘缓鐨勯�昏緫 - var resTemp = await Shared.Phone.Device.Logic.SkipView.Exist(3); - if (resTemp == 3) - { - string msg0 = Language.StringByID(R.MyInternationalizationString.CancelLogicNormallyModeFailed); - this.ShowTipMsg(msg0); - } - else if (resTemp == 2) - { - 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.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); - return; - } - }; - } - /// <summary> - /// 甯稿紑妯″紡鐘舵�佹洿鏂� - /// </summary> - private void UpdateNomallyOpenStatus() - { - if (!canOpenNormallyMode) - { - btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0); - return; - } - string key = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; - if (doorLock.IsDoorLockNormallyMode[key] == true) - { - btnNormallyOpen.IsSelected = true; - btnDoorLockPic.IsSelected = true; - progressButton.Y = Application.GetRealHeight(10); - btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.DoorLockOpen); - - } - else if (doorLock.IsDoorLockNormallyMode[key] == false) - { - btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose); - btnDoorLockPic.IsSelected = false; - btnNormallyOpen.IsSelected = false; - progressButton.Y = Application.GetRealHeight(347); - } - } - #endregion - - #region 寮�閿佸鐞� - /// <summary> - /// 寮�閿佸鐞� - /// </summary> - /// <param name="progressButton">杩涘害鎸夐挳</param> - /// <param name="btnDoorLockPic">闂ㄩ攣鍥剧墖</param> - /// <param name="btnStatus">鐘舵�佹樉绀�</param> - async void OpenDoorLockHandle(Button progressButton, Button btnDoorLockPic, Button btnStatus) - { - openFrameLayout.Enable = false; - btnDoorOpenPic.Enable = false; - if (UserCenterResourse.UserInfo.AuthorityNo != 1) - { - var result = await DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid); - if (result == false) - { - var result1 = await DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid); - if (result1 == true) - { - RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle); - devicNameSecAction += (deviceRename) => - { - if (!string.IsNullOrEmpty(deviceRename)) - { - btnDoorLockTitle.Text = deviceRename; - //鏀规埧闂� - HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id); - deviceUI.ReSave(); - } - }; - openFrameLayout.Enable = true; - btnDoorOpenPic.Enable = true; - } - else - { - this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoAccess)); - openFrameLayout.Enable = true; - btnDoorOpenPic.Enable = true; - } - } - else - { - this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed)); - openFrameLayout.Enable = true; - btnDoorOpenPic.Enable = true; - } - } - else - { - RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle); - devicNameSecAction += (deviceRename) => - { - if (!string.IsNullOrEmpty(deviceRename)) - { - btnDoorLockTitle.Text = deviceRename; - //鏀规埧闂� - HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id); - deviceUI.ReSave(); - } - }; - openFrameLayout.Enable = true; - btnDoorOpenPic.Enable = true; - } - } - #endregion - - #region 绉婚櫎鏂规硶 - /// <summary> - /// 閲嶅啓绉婚櫎鏂规硶 - /// </summary> - public override void RemoveFromParent() - { - //寰愭鐨勯棬閿佺晫闈㈠叧闂�(缃戝叧鍏ㄥ眬鎺ユ敹鏃朵娇鐢�) - ControlCommonResourse.IsDoorLockPageOpen = false; - if (IsDrawerLockMode) - { - CommonPage.Instance.IsDrawerLockMode = false; - } - ZbGateway.StatusList.Remove(this); - base.RemoveFromParent(); - } - #endregion + var btnCurrentRoomName = new Button() + { + Width = Application.GetRealWidth(172), + Height = Application.GetRealHeight(49), + X = Application.GetRealWidth(150), + Y = Application.GetRealHeight(46), + Text = currentRoom.Name, + TextColor = Shared.Common.ZigbeeColor.Current.XMWhite, + TextSize = 12, + TextAlignment = TextAlignment.CenterLeft, + }; + btnCurrentFrameLayout.AddChidren(btnCurrentRoomName); + #endregion } + + #region 闊抽噺寮圭獥 + /// <summary> + /// 杩涘害鏉� + /// </summary> + private void VolumeDialog(Button progressText, DiyImageVerticalSeekBar diyImageVerticalSeekBar) + { + var dialog = new Dialog { }; + dialog.Show(); + var flMain = new FrameLayout { BackgroundColor = 0x00000000 }; + dialog.AddChidren(flMain); + flMain.MouseUpEventHandler += (sender11, e11) => + { + dialog.Close(); + + //璁剧疆闊抽噺 + if (currentVolume != oldVolume) + { + SetVolume(currentVolume); + } + }; + + var progressBackground = new FrameLayout() + { + Width = Application.GetRealWidth(271), + Height = Application.GetRealHeight(700), + X = Application.GetRealWidth(403), + Y = Application.GetRealHeight(582), + BackgroundImagePath = "DoorLock/ProgressBackground.png", + }; + 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() + "%", + }; + + diyImageVerticalSeekBar = new DiyImageVerticalSeekBar() + { + Width = Application.GetRealWidth(271), + Height = Application.GetRealHeight(447 + 63), + Y = Application.GetRealHeight(155), + IsProgressTextShow = false,//鏄剧ず鐧惧垎姣� + ProgressBarColor = ZigbeeColor.Current.XMProgressBarColor,//閫変腑杩涘害鏉¢鑹� + SeekBarBackgroundColor = ZigbeeColor.Current.XMSeekBarBackgroundColor,//閫変腑杩涘害鏉¢鑹� + ThumbImagePath = "DoorLock/UnLockButton.png",//杩涘害鏉℃寜閽浘鏍� + ThumbImageHeight = Application.GetRealHeight(81),//杩涘害鏉℃寜閽浘鏍囩殑楂樺害锛堥粯璁ゆ鏂瑰舰锛氬鍜岄珮涓�鏍凤級 + ProgressTextColor = ZigbeeColor.Current.LogicBtnCancelColor, + ProgressTextSize = 12,//鏄剧ず鐧惧垎姣斿瓧浣撳ぇ灏� + SeekBarViewHeight = Application.GetRealHeight(17),//杩涘害鏉$殑瀹藉害 + Progress = currentVolume, + }; + progressBackground.AddChidren(progressText); + progressBackground.AddChidren(diyImageVerticalSeekBar); + diyImageVerticalSeekBar.OnProgressChangedEvent += (sender, e) => + { + int curVolume = -1; + curVolume = e; + currentVolume = curVolume; + progressText.Text = e.ToString() + "%"; + }; + } + + #endregion + #endregion + + #region 澶勭悊鎺ュ彛鏁版嵁 + /// <summary> + /// 澶勭悊鍙樺寲浜嬩欢 + /// </summary> + /// <param name="common"></param> + /// <param name="typeTag"></param> + public void DeviceInfoChange(CommonDevice tempDevice, string typeTag) + { + //鏈烘寮�閿佷笂鎶ャ�傚鐞嗗父寮�鐘舵�侊紝寮�鍏崇姸鎬� + if (typeTag == "DoorLockProgrammingEventNotificationCommand" && tempDevice != null) + { + var tempDoor = (ZigBee.Device.DoorLock)tempDevice; + if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint + && tempDevice.DeviceAddr == doorLock.DeviceAddr) + { + 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); + }); + } + } + } + } + } + + if (typeTag == "DeviceStatusReport" && tempDevice != null) + { + if (tempDevice != null) + { + if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint + && tempDevice.DeviceAddr == doorLock.DeviceAddr) + { + if (tempDevice.DeviceStatusReport != null && tempDevice.DeviceStatusReport.AttriBute != null) + { + var dataReport = tempDevice.DeviceStatusReport.AttriBute[0]; + if (tempDevice.DeviceStatusReport.CluterID == 1 && dataReport.AttributeId == 33) + { + Application.RunOnMainThread(() => + { + currentPower = dataReport.AttriButeData; + UpdatePower(); + }); + } + } + } + } + } + } + + /// <summary> + /// 鍒濆鍖栨暟鎹� + /// </summary> + void ReadDoorLockUserInfo() + { + System.Threading.Tasks.Task.Run(async () => + { + try + { + Application.RunOnMainThread(() => + { + 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); + 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_H06C) + { + 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); + } + catch (Exception ex) + { + var mess = ex.Message; + } + finally + { + Application.RunOnMainThread(() => + { + UpdateNomallyOpenStatus(); + CommonPage.Loading.Hide(); + }); + } + }); + } + + #endregion + + #region 鍏叡浜嬩欢澶勭悊 + /// <summary> + /// 浜嬩欢澶勭悊 + /// </summary> + public void ClickHandle() + { + //闂ㄩ攣鏍囬 + btnDoorLockTitle.Text = Common.LocalDevice.Current.GetDeviceMacName(doorLock); + + //杩斿洖 + EventHandler<MouseEventArgs> eHandlerBack = (sender, e) => + { + RemoveFromParent(); + }; + this.btnBack.MouseUpEventHandler += eHandlerBack; + this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; + + //璁剧疆 + EventHandler<MouseEventArgs> btnFuncSetHander = (sender, e) => + { + 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)) + { + btnDoorLockTitle.Text = deviceRename; + //鏀规埧闂� + HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id); + deviceUI.ReSave(); + } + }; + }; + btnFuncSetFrameLayout.MouseDownEventHandler += btnFuncSetHander; + btnFuncSet.MouseDownEventHandler += btnFuncSetHander; + + //鎼滆棌鐘舵�� + if (HdlRoomLogic.Current.IsCollectInRoom(deviceUI) == false) + { + btnCollect.IsSelected = false; + } + else + { + btnCollect.IsSelected = true; + } + + //鍘嗗彶璁板綍鐐瑰嚮浜嬩欢 + EventHandler<MouseEventArgs> handerRecord = (sender, e) => + { + //鍘嗗彶璁板綍 ---- stan + var form = new DeviceDoorLock.DoorLockHistoryLogForm(); + form.AddForm(this.doorLock.DeviceAddr); + //DoorLockCommonInfo.canShowDialog = false; + }; + btnRecordFrameLayout.MouseDownEventHandler += handerRecord; + btnRecord.MouseDownEventHandler += handerRecord; + + //鏀惰棌鐐瑰嚮浜嬩欢 + EventHandler<MouseEventArgs> handerCollect = (sender, e) => + { + btnCollect.IsSelected = !btnCollect.IsSelected; + if (btnCollect.IsSelected) + { + HdlRoomLogic.Current.AddLoveDevice(deviceUI);//鏀惰棌 + } + else + { + HdlRoomLogic.Current.DeleteLoveDevice(deviceUI);//鍙栨秷鏀惰棌 + } + }; + btnCollectFrameLayout.MouseDownEventHandler += handerCollect; + btnCollect.MouseDownEventHandler += handerCollect; + + //寮�閿佷簨浠� + EventHandler<MouseEventArgs> hander1 = async (sender, e) => + { + if (doorLock.IsDoorLockNormallyMode) + { + 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); + } + }; + openFrameLayout.MouseUpEventHandler += hander1; + btnDoorOpenPic.MouseUpEventHandler += hander1; + if (progressButton.Y == Application.GetRealHeight(10)) + { + progressFrameLayoutMatch.MouseUpEventHandler += hander1; + } + + //鍏抽攣浜嬩欢 + EventHandler<MouseEventArgs> hander2 = (sender, e) => + { + if (canOpenNormallyMode) + { + if (doorLock.IsDoorLockNormallyMode) + { + Application.RunOnMainThread(() => + { + Action<bool> action = (obj) => + { + UpdateNomallyOpenStatus(); + }; + DoorLockCommonInfo.NomallyOpenModeInvalidDialog(doorLock, DoorLockCommonInfo.DoorLockMessType.AppOperate, haveLogicNormallyOpenMode, action); + }); + } + } + else + { + btnDoorLockPic.IsSelected = false; + progressButton.Y = Application.GetRealHeight(347); + } + }; + closeFrameLayout.MouseUpEventHandler += hander2; + btnDoorClosePic.MouseUpEventHandler += hander2; + + //闊抽噺鐐瑰嚮浜嬩欢 + EventHandler<MouseEventArgs> handerVolume = (sender, e) => + { + if (canVolume) + { + VolumeDialog(progressText, diyImageVerticalSeekBar); + } + }; + btnVolumeFrameLayout.MouseDownEventHandler += handerVolume; + btnVolume.MouseDownEventHandler += handerVolume; + + + //甯稿紑妯″紡鐐瑰嚮浜嬩欢 + EventHandler<MouseEventArgs> handerNormallyOpen = (sender, e) => + { + NomallyOpenDialog(); + }; + btnNormallyOpenFrameLayout.MouseUpEventHandler += handerNormallyOpen; + btnNormallyOpen.MouseUpEventHandler += handerNormallyOpen; + } + #endregion + + #region 鐢甸噺鏄剧ず + /// <summary> + /// 鐢甸噺鏇存柊 + /// </summary> + private void UpdatePower() + { + btnCurrentPowerText.Text = Language.StringByID(R.MyInternationalizationString.DoorLockPower) + currentPower + "%"; + if (currentPower <= 20 && currentPower >= 0) + { + btnPower.UnSelectedImagePath = "DoorLock/LowPower.png"; + } + else if (currentPower <= 40 && currentPower > 20) + { + btnPower.UnSelectedImagePath = "DoorLock/Power40.png"; + } + else if (currentPower <= 60 && currentPower > 40) + { + btnPower.UnSelectedImagePath = "DoorLock/Power60.png"; + } + else if (currentPower <= 80 && currentPower > 60) + { + btnPower.UnSelectedImagePath = "DoorLock/Power80.png"; + } + else if (currentPower <= 100 && currentPower > 80) + { + btnPower.UnSelectedImagePath = "DoorLock/Power100.png"; + } + else + { + btnPower.UnSelectedImagePath = "DoorLock/PowerOffline.png"; + } + } + #endregion + + #region 闊抽噺 + /// <summary> + /// 鏇存柊闊抽噺 + /// </summary> + private void UpdateVolume() + { + if (volumeData != null) + { + int curVol = 0; + btnVolume.IsSelected = true; + if (volumeData.command == "eb") + { + curVol = 0; + } + else + { + curVol = volumeData.value; + } + oldVolume = currentVolume = curVol; + } + } + + /// <summary> + /// 璁剧疆闊抽噺 + /// </summary> + private void SetVolume(int volume) + { + System.Threading.Tasks.Task.Run(async () => + { + try + { + Application.RunOnMainThread(() => + { + CommonPage.Loading.Start(""); + }); + var resultRes = await doorLock.SetVolumeAsync(volume); + if (resultRes == null || resultRes.defaultControlResponseData == null) + { + Application.RunOnMainThread(() => + { + var volumeMsg = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime); + this.ShowTipMsg(volumeMsg); + currentVolume = oldVolume; + CommonPage.Loading.Hide(); + + }); + return; + } + if (resultRes.defaultControlResponseData.status != 0) + { + Application.RunOnMainThread(() => + { + var volumeMsg = Language.StringByID(R.MyInternationalizationString.SetVolumeFailed); + this.ShowTipMsg(volumeMsg); + currentVolume = oldVolume; + CommonPage.Loading.Hide(); + }); + return; + } + Application.RunOnMainThread(() => + { + var volumeMsg = Language.StringByID(R.MyInternationalizationString.SetVolumeSuccess); + this.ShowTipMsg(volumeMsg); + oldVolume = currentVolume; + CommonPage.Loading.Hide(); + }); + } + catch (Exception ex) + { + var mes = ex.Message; + } + }); + } + #endregion + + #region 甯稿紑妯″紡 + /// <summary> + /// 甯稿紑妯″紡澶勭悊 + /// </summary> + private async void NomallyOpenDialog() + { + if (UserCenterResourse.UserInfo.AuthorityNo != 1) + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.OnlyMasterOperate)); + return; + } + + if (!UserCenterResourse.AccountOption.DoorUnLockByRemote) + { + SystemSecondAuthentication(); + return; + } + + action = () => + { + //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) + { + haveLogicNormallyOpenMode = false; + } + else + { + haveLogicNormallyOpenMode = true; + } + + UserCenter.DoorLock.DoorLockCommonInfo.UpdateCurrentDoorlockAction -= addLogicPage.updateCurrentDoorlockActionTemp; + }; + }; + HdlCheckLogic.Current.CheckSecondarySecurity(action); + + } + + /// <summary> + /// 甯稿紑妯″紡鐘舵�佹洿鏂� + /// </summary> + private void UpdateNomallyOpenStatus() + { + if (!canOpenNormallyMode) + { + btnNormallyOpenFrameLayout.Width = Application.GetRealWidth(0); + return; + } + if (doorLock.IsDoorLockNormallyMode) + { + btnNormallyOpen.IsSelected = true; + btnDoorLockPic.IsSelected = true; + progressButton.Y = Application.GetRealHeight(10); + btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.DoorLockOpen); + + } + 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); + } + } + #endregion + + #region 寮�閿佸鐞� + /// <summary> + /// 寮�閿佸鐞� + /// </summary> + /// <param name="progressButton">杩涘害鎸夐挳</param> + /// <param name="btnDoorLockPic">闂ㄩ攣鍥剧墖</param> + /// <param name="btnStatus">鐘舵�佹樉绀�</param> + async void OpenDoorLockHandle(Button progressButton, Button btnDoorLockPic, Button btnStatus) + { + openFrameLayout.Enable = false; + btnDoorOpenPic.Enable = false; + if (UserCenterResourse.UserInfo.AuthorityNo != 1) + { + var result = await DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, Shared.Common.Config.Instance.Guid); + if (result == false) + { + var result1 = await DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, Shared.Common.Config.Instance.Guid); + if (result1 == true) + { + RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle); + devicNameSecAction += (deviceRename) => + { + if (!string.IsNullOrEmpty(deviceRename)) + { + btnDoorLockTitle.Text = deviceRename; + //鏀规埧闂� + HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id); + deviceUI.ReSave(); + } + }; + openFrameLayout.Enable = true; + btnDoorOpenPic.Enable = true; + } + else + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoAccess)); + openFrameLayout.Enable = true; + btnDoorOpenPic.Enable = true; + } + } + else + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AccountIsFreezed)); + openFrameLayout.Enable = true; + btnDoorOpenPic.Enable = true; + } + } + else + { + RemoteUnlockRequest(currentRoom, deviceUI, action, progressButton, btnDoorLockPic, btnStatus, btnDoorLockTitle); + devicNameSecAction += (deviceRename) => + { + if (!string.IsNullOrEmpty(deviceRename)) + { + btnDoorLockTitle.Text = deviceRename; + //鏀规埧闂� + HdlRoomLogic.Current.ChangedRoom(deviceUI, currentRoom.Id); + deviceUI.ReSave(); + } + }; + openFrameLayout.Enable = true; + btnDoorOpenPic.Enable = true; + } + } + #endregion + + #region 绉婚櫎鏂规硶 + /// <summary> + /// 閲嶅啓绉婚櫎鏂规硶 + /// </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