From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 09:07:13 +0800 Subject: [PATCH] 新云端Ver1.3 --- ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs | 227 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 182 insertions(+), 45 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs b/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs index fbc388a..ad9af3c 100755 --- a/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs +++ b/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs @@ -50,6 +50,10 @@ /// </summary> private IconViewControl btnCollect = null; /// <summary> + /// 鐢垫睜鎺т欢 + /// </summary> + private IconViewControl btnBattery = null; + /// <summary> /// 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋� 0:娌℃湁鑾峰彇寰楀埌 1:宸茬粡鑾峰彇寰楀埌 /// </summary> private int ResponeResult = 0; @@ -57,6 +61,10 @@ /// 鍒ゆ柇鏄惁鏈夊紑鍏冲姛鑳� /// </summary> private bool isHadOpenSwitch = true; + /// <summary> + /// 褰撳墠閫夋嫨鐨勬埧闂� + /// </summary> + public Common.Room nowSelectRoom = null; #endregion @@ -79,25 +87,27 @@ /// 鍒濆鍖栨帶浠� /// </summary> /// <param name="i_device">鎸囧畾璁惧</param> - public virtual void InitControl(CommonDevice i_device) + /// <param name="i_nowSelectRoom">褰撳墠閫夋嫨鐨勬埧闂�(鏈夌偣鐢ㄥ)</param> + public virtual void InitControl(CommonDevice i_device, Common.Room i_nowSelectRoom) { this.device = i_device; + this.nowSelectRoom = i_nowSelectRoom; //鑳屾櫙鍥剧墖 this.btnBackGroud = new PicViewControl(this.Width, this.Height, false); btnBackGroud.UnSelectedImagePath = "Item/FunctionCardView.png"; btnBackGroud.SelectedImagePath = "Item/FunctionCardViewSelected.png"; btnBackGroud.Gravity = Gravity.CenterHorizontal; - this.AddChidren(btnBackGroud, ChidrenBindMode.BindEventOnly); + this.AddChidren(btnBackGroud, ChidrenBindMode.BindEvent); //璁惧鍚嶇О鎺т欢 - this.btnDeviceName = new NormalViewControl(320, 63, true); + this.btnDeviceName = new NormalViewControl(360, 63, true); btnDeviceName.X = HdlControlLogic.Current.GetPictrueRealSize(40); btnDeviceName.Y = HdlControlLogic.Current.GetPictrueRealSize(17); btnDeviceName.TextSize = 16; btnDeviceName.TextColor = UserCenterColor.Current.TextGrayColor1; btnDeviceName.SelectedTextColor = UserCenterColor.Current.White; - btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device); - this.AddChidren(btnDeviceName, ChidrenBindMode.BindEventOnly); + btnDeviceName.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(i_device); + this.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent); //鏀堕泦鎺т欢 this.btnCollect = new IconViewControl(107); @@ -115,7 +125,7 @@ { //鍙栨秷鏀惰棌 HdlRoomLogic.Current.DeleteLoveDevice(i_device); - if (HdlRoomLogic.Current.CurrentRoom.IsLove == true) + if (this.nowSelectRoom.IsLove == true) { //濡傛灉褰撳墠鎴块棿鏄垜鐨勫枩鐖辩殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑浜嬩欢 this.CardNeedRemoveEvent?.Invoke(); @@ -136,22 +146,22 @@ fraDeviceRound.X = HdlControlLogic.Current.GetPictrueRealSize(44); fraDeviceRound.Y = HdlControlLogic.Current.GetPictrueRealSize(101); fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor; - this.AddChidren(fraDeviceRound, ChidrenBindMode.BindEventOnly); + this.AddChidren(fraDeviceRound, ChidrenBindMode.BindEvent); //璁惧鍥炬爣鎺т欢 this.btnDeviceIcon = new IconViewControl(86); btnDeviceIcon.Gravity = Gravity.Center; fraDeviceRound.AddChidren(btnDeviceIcon); - this.ChangedChidrenBindMode(fraDeviceRound, ChidrenBindMode.BindEventOnly); + this.ChangedChidrenBindMode(fraDeviceRound, ChidrenBindMode.BindEvent); //鐘舵�佹枃鏈帶浠� - this.btnStatu = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(300), HdlControlLogic.Current.GetPictrueRealSize(63), false); + this.btnStatu = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(400), HdlControlLogic.Current.GetPictrueRealSize(63), false); btnStatu.X = HdlControlLogic.Current.GetPictrueRealSize(46); btnStatu.Y = HdlControlLogic.Current.GetPictrueRealSize(236); btnStatu.TextColor = UserCenterColor.Current.TextColor1; btnStatu.SelectedTextColor = Common.ZigbeeColor.Current.GXCTextSelectedColor; btnStatu.IsBold = true; - this.AddChidren(btnStatu, ChidrenBindMode.BindEventOnly); + this.AddChidren(btnStatu, ChidrenBindMode.BindEvent); //寮�鍏虫帶浠�(涓嶅姞鍏ョ埗鎺т欢涓�) this.btnSwitch = new PicViewControl(109, 104); @@ -159,6 +169,21 @@ btnSwitch.Y = HdlControlLogic.Current.GetPictrueRealSize(202); btnSwitch.UnSelectedImagePath = "Item/Switch1.png"; btnSwitch.SelectedImagePath = "Item/SwitchSelected1.png"; + + //鐢垫睜鎺т欢 + if (this.device.Type == DeviceType.IASZone) + { + this.btnBattery = new IconViewControl(69); + btnBattery.X = HdlControlLogic.Current.GetPictrueRealSize(348); + btnBattery.Y = HdlControlLogic.Current.GetPictrueRealSize(236); + btnBattery.UnSelectedImagePath = "Item/Battery.png"; + btnBattery.SelectedImagePath = "Item/BatterySelected.png"; + this.AddChidren(btnBattery, ChidrenBindMode.BindEvent); + if (this.device.IsBatteryDown == false) + { + btnBattery.Visible = false; + } + } //鍒锋柊淇℃伅 this.RefreshControlInfo(i_device); @@ -194,9 +219,9 @@ btnCollect.IsSelected = collect; } //璁惧鍥炬爣涔熷埛鏂� - Common.LocalDevice.Current.SetDeviceIconToControl2(btnDeviceIcon, i_device); + HdlDeviceCommonLogic.Current.SetDeviceIconToControl2(btnDeviceIcon, i_device); //鍚嶅瓧鍒锋柊 - this.btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device); + this.btnDeviceName.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(i_device); //妫�娴嬭澶囨槸鍚︽槸鎵撳紑鐘舵�� bool isOpen = this.CheckIsOpenStatu(i_device); if (this.isHadOpenSwitch == true && i_device.HadReadDeviceStatu == false) @@ -205,6 +230,13 @@ //绛夊緟缃戝叧鍥炲鍚庝細閲嶆柊鍒锋柊,涓嶇劧涓�鐩存槸鍏抽棴鐘舵�� isOpen = false; } + //濡傛灉鏄紶鎰熷櫒绫�,鍒欓粯璁ゆ槸鍏崇殑鏁堟灉 + if (this.device.Type == DeviceType.PMSensor || this.device.Type == DeviceType.IASZone + || this.device.Type == DeviceType.TemperatureSensor) + { + isOpen = false; + } + this.SetCardOpenStatu(isOpen); } @@ -215,36 +247,15 @@ public void SetCardOpenStatu(bool isOpen) { //璁惧鐘舵�佸繀椤诲埛鏂� - this.btnStatu.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device); - - if (this.btnBackGroud.IsSelected == isOpen) - { - //鐘舵�佷竴鏍�,鍒欎笉闇�瑕佸鐞� - return; - } - //鑳屾櫙鍥剧墖 - this.btnBackGroud.IsSelected = isOpen; - //璁惧鍚嶇О鎺т欢 - this.btnDeviceName.IsSelected = isOpen; - this.btnDeviceName.IsBold = isOpen; - //璁惧鐨勮儗鏅渾鍦堝浘 - if (isOpen == true) - { - fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionBackgroundColor; - } - else - { - fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor; - } - //璁惧鍥炬爣鎺т欢 - this.btnDeviceIcon.IsSelected = isOpen; - //鐘舵�佹枃鏈帶浠� - this.btnStatu.IsSelected = isOpen; + this.btnStatu.Text = HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device); //寮�鍏虫帶浠� - if (btnSwitch != null) + if (btnSwitch != null && this.btnSwitch.IsSelected != isOpen) { this.btnSwitch.IsSelected = isOpen; } + + //鍒囨崲鍗$墖鐘舵�佺壒鏁� + this.SwitchCardStatuAppeal(isOpen); } /// <summary> @@ -296,7 +307,7 @@ //濡傛灉杩欎釜鍑芥暟琚噸鍐欑殑璇�,鍒欎唬琛ㄨ繖涓澶囨湁寮�鍏冲姛鑳� this.isHadOpenSwitch = false; //榛樿鐢ㄥ湪绾跨姸鎬佹潵鍒ゆ柇 - return i_device.IsOnline == 1; + return HdlDeviceCommonLogic.Current.CheckDeviceIsOnline(i_device); } @@ -308,10 +319,9 @@ /// 娣卞害鍗$墖淇℃伅鐨勮繑鍥炰簨浠�(搴曞眰涓撶敤) /// </summary> /// <param name="device">璁惧</param> - /// <param name="room">鎴块棿</param> - public void CardDetailInfoBackEvent(CommonDevice device, Common.Room room) + public void CardDetailInfoBackEvent(CommonDevice device) { - if (HdlRoomLogic.Current.CurrentRoom.IsLove == true) + if (this.nowSelectRoom.IsLove == true) { //濡傛灉鏄富椤靛彇娑堟悳钘忕殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟 if (HdlRoomLogic.Current.IsCollectInRoom(device) == false) @@ -324,7 +334,7 @@ { //濡傛灉杩欎釜璁惧鏀瑰彉浜嗘埧闂寸殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟 var nowRoom = HdlRoomLogic.Current.GetRoomByDevice(device); - if (nowRoom == null || nowRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id) + if (nowRoom == null || nowRoom.Id != this.nowSelectRoom.Id) { this.CardNeedRemoveEvent?.Invoke(); return; @@ -356,7 +366,7 @@ HdlThreadLogic.Current.RunThread(() => { - int waitime = 30; + int waitime = 40; while (waitime > 0) { System.Threading.Thread.Sleep(100); @@ -366,8 +376,15 @@ break; } waitime--; + //2绉掔殑鏃跺��,杩樻槸鎺ュ彈涓嶅埌鐨勮瘽,寮哄埗鍐嶆鍒锋柊璁惧鐘舵�� + if (waitime == 20) + { + //浠庢柊鍙戦�佽幏鍙栬澶囩殑鐘舵��(寮哄埗) + this.device.HadReadDeviceStatu = false; + this.SendStatuComand(); + } } - if (waitime <= 0) + if (waitime <= 0 && this.Parent != null) { //娌℃湁鑾峰彇寰楀埌缁撴灉 HdlThreadLogic.Current.RunMain(() => @@ -391,6 +408,43 @@ this.ResponeResult = 1; } + /// <summary> + /// 鎺ユ敹缃戝叧鍥炲鐨勭姸鎬�(true:宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍥炲 false:杩樻病鏈夋帴鏀跺埌缃戝叧鍥炲) + /// </summary> + /// <returns></returns> + public bool ReceiveResponeResultStatu() + { + return this.ResponeResult == 1; + } + + #endregion + + #region 鈻� 鏄剧ず浣庣數閲廮________________________ + + /// <summary> + /// 鍒锋柊鐢垫睜鐢甸噺鐘舵�� + /// </summary> + public void RefreshBatteryStatu() + { + if (this.btnBattery == null) { return; } + if (this.device.IsBatteryDown == true) + { + //鐢甸噺浣�,鏄剧ず鍥炬爣 + if (this.btnBattery.Visible == false) + { + this.btnBattery.Visible = true; + } + } + else + { + //鐢甸噺瓒冲,闅愯棌鍥炬爣 + if (this.btnBattery.Visible == true) + { + this.btnBattery.Visible = false; + } + } + } + #endregion #region 鈻� 涓�鑸柟娉昣__________________________ @@ -416,6 +470,89 @@ #endregion + #region 鈻� 鍗$墖闂儊鐗规晥_______________________ + + /// <summary> + /// 鏄惁澶勪簬鐗规晥涓� + /// </summary> + private bool isAppeal = false; + /// <summary> + /// 寮�鍚崱鐗囬棯鐑佺壒鏁� + /// </summary> + public void StartCardLightAppeal() + { + //璁惧鐘舵�佸繀椤诲埛鏂� + this.btnStatu.Text = HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device); + + if (this.isAppeal == true) { return; } + this.isAppeal = true; + + HdlThreadLogic.Current.RunThread(() => + { + //闂儊5绉�,闂撮殧400姣 + int count = 5000 / 400; + bool isOpen = false; + while (this.Parent != null && count >= 0) + { + //闂儊鐗规晥 + HdlThreadLogic.Current.RunMain(() => + { + isOpen = !isOpen; + this.SwitchCardStatuAppeal(isOpen); + }); + System.Threading.Thread.Sleep(400); + count--; + } + if (this.Parent != null && isOpen == false) + { + HdlThreadLogic.Current.RunMain(() => + { + //缁撴潫鏃�,榛樿涓烘墦寮�鐗规晥 + this.SwitchCardStatuAppeal(true); + }, ShowErrorMode.NO); + } + this.isAppeal = false; + + }, ShowErrorMode.NO); + } + + /// <summary> + /// 鍒囨崲鍗$墖鐘舵�佺壒鏁� + /// </summary> + public void SwitchCardStatuAppeal(bool isOpen) + { + if (this.btnBackGroud.IsSelected == isOpen) + { + //鐘舵�佷竴鏍�,鍒欎笉闇�瑕佸鐞� + return; + } + //鑳屾櫙鍥剧墖 + this.btnBackGroud.IsSelected = isOpen; + //璁惧鍚嶇О鎺т欢 + this.btnDeviceName.IsSelected = isOpen; + this.btnDeviceName.IsBold = isOpen; + //璁惧鐨勮儗鏅渾鍦堝浘 + if (isOpen == true) + { + fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionBackgroundColor; + } + else + { + fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor; + } + //璁惧鍥炬爣鎺т欢 + this.btnDeviceIcon.IsSelected = isOpen; + //鐘舵�佹枃鏈帶浠� + this.btnStatu.IsSelected = isOpen; + //鐢垫睜鎺т欢 + if (this.btnBattery != null && this.btnBattery.Visible == true) + { + this.btnBattery.IsSelected = isOpen; + } + } + + #endregion + #region 鈻� 鎺т欢鎽ф瘉___________________________ /// <summary> -- Gitblit v1.8.0