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/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs | 216 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 159 insertions(+), 57 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs b/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs index ecd5188..d3cc6fc 100755 --- a/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs +++ b/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs @@ -9,10 +9,14 @@ /// <summary> /// 涓婚〉鐨勮澶囧崱鐗囨帶浠跺簳灞傚叡閫�(瀹藉害:458 + 14 * 2 楂樺害:305 + 43) /// </summary> - public class DeviceCardCommon : FrameLayoutControl + public class DeviceCardCommon : FrameLayoutStatuControl { #region 鈻� 鍙橀噺澹版槑___________________________ + /// <summary> + /// 璁惧瀵硅薄 + /// </summary> + public CommonDevice device = null; /// <summary> /// 鍗$墖闇�瑕佽绉婚櫎鐨勪簨浠� /// </summary> @@ -28,7 +32,7 @@ /// <summary> /// 璁惧鐨勮儗鏅渾鍦堝浘鎺т欢 /// </summary> - private NormalViewControl btnDeviceRound = null; + private FrameLayout fraDeviceRound = null; /// <summary> /// 璁惧鍥炬爣鎺т欢 /// </summary> @@ -42,9 +46,21 @@ /// </summary> private PicViewControl btnSwitch = null; /// <summary> + /// 鏀堕泦鎺т欢 + /// </summary> + private IconViewControl btnCollect = null; + /// <summary> /// 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋� 0:娌℃湁鑾峰彇寰楀埌 1:宸茬粡鑾峰彇寰楀埌 /// </summary> private int ResponeResult = 0; + /// <summary> + /// 鍒ゆ柇鏄惁鏈夊紑鍏冲姛鑳� + /// </summary> + private bool isHadOpenSwitch = true; + /// <summary> + /// 褰撳墠閫夋嫨鐨勬埧闂� + /// </summary> + public Common.Room nowSelectRoom = null; #endregion @@ -56,9 +72,9 @@ public DeviceCardCommon() { //鍥剧墖鐪熷疄瀹藉害+鍥剧墖鑷韩宸﹀彸绌虹櫧 - this.Width = Application.GetMinRealAverage(458 + 14 * 2); + this.Width = HdlControlLogic.Current.GetPictrueRealSize(458 + 14 * 2); //鍥剧墖楂樺害+闃村奖 - this.Height = Application.GetMinRealAverage(305 + 43); + this.Height = HdlControlLogic.Current.GetPictrueRealSize(305 + 43); //鍙栨秷鐐瑰嚮鐗规晥 this.UseClickStatu = false; } @@ -67,29 +83,32 @@ /// 鍒濆鍖栨帶浠� /// </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); - btnDeviceName.X = Application.GetMinRealAverage(40); - btnDeviceName.Y = Application.GetMinRealAverage(17); + 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); + this.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent); //鏀堕泦鎺т欢 - var btnCollect = new IconViewControl(107); - btnCollect.X = Application.GetMinRealAverage(350); - btnCollect.Y = Application.GetMinRealAverage(12); + this.btnCollect = new IconViewControl(107); + btnCollect.X = HdlControlLogic.Current.GetPictrueRealSize(350); + btnCollect.Y = HdlControlLogic.Current.GetPictrueRealSize(12); btnCollect.UnSelectedImagePath = "Item/Collection1.png"; btnCollect.SelectedImagePath = "Item/CollectionSelected1.png"; this.AddChidren(btnCollect, ChidrenBindMode.NotBind); @@ -102,7 +121,7 @@ { //鍙栨秷鏀惰棌 HdlRoomLogic.Current.DeleteLoveDevice(i_device); - if (HdlRoomLogic.Current.CurrentRoom.IsLove == true) + if (this.nowSelectRoom.IsLove == true) { //濡傛灉褰撳墠鎴块棿鏄垜鐨勫枩鐖辩殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑浜嬩欢 this.CardNeedRemoveEvent?.Invoke(); @@ -116,37 +135,36 @@ }; //璁惧鐨勮儗鏅渾鍦堝浘 - this.btnDeviceRound = new NormalViewControl(Application.GetMinRealAverage(124), Application.GetMinRealAverage(124), false); - btnDeviceRound.Radius = (uint)Application.GetMinRealAverage(124) / 2; - btnDeviceRound.X = Application.GetMinRealAverage(44); - btnDeviceRound.Y = Application.GetMinRealAverage(101); - btnDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor; - btnDeviceRound.SelectedBackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionBackgroundColor; - this.AddChidren(btnDeviceRound, ChidrenBindMode.BindEventOnly); + this.fraDeviceRound = new FrameLayout(); + fraDeviceRound.Width = HdlControlLogic.Current.GetPictrueRealSize(124); + fraDeviceRound.Height = HdlControlLogic.Current.GetPictrueRealSize(124); + fraDeviceRound.Radius = (uint)HdlControlLogic.Current.GetPictrueRealSize(124) / 2; + fraDeviceRound.X = HdlControlLogic.Current.GetPictrueRealSize(44); + fraDeviceRound.Y = HdlControlLogic.Current.GetPictrueRealSize(101); + fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor; + this.AddChidren(fraDeviceRound, ChidrenBindMode.BindEvent); //璁惧鍥炬爣鎺т欢 this.btnDeviceIcon = new IconViewControl(86); - btnDeviceIcon.X = Application.GetMinRealAverage(63); - btnDeviceIcon.Y = Application.GetMinRealAverage(121); - this.AddChidren(btnDeviceIcon, ChidrenBindMode.BindEventOnly); + btnDeviceIcon.Gravity = Gravity.Center; + fraDeviceRound.AddChidren(btnDeviceIcon); + this.ChangedChidrenBindMode(fraDeviceRound, ChidrenBindMode.BindEvent); //鐘舵�佹枃鏈帶浠� - this.btnStatu = new NormalViewControl(Application.GetMinRealAverage(280), Application.GetMinRealAverage(63), false); - btnStatu.X = Application.GetMinRealAverage(46); - btnStatu.Y = Application.GetMinRealAverage(236); + this.btnStatu = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(300), 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); - btnSwitch.X = Application.GetMinRealAverage(325); - btnSwitch.Y = Application.GetMinRealAverage(202); + btnSwitch.X = HdlControlLogic.Current.GetPictrueRealSize(325); + btnSwitch.Y = HdlControlLogic.Current.GetPictrueRealSize(202); btnSwitch.UnSelectedImagePath = "Item/Switch1.png"; btnSwitch.SelectedImagePath = "Item/SwitchSelected1.png"; - this.AddChidren(this.btnSwitch, ChidrenBindMode.NotBind); - btnSwitch.Visible = false; //鍒锋柊淇℃伅 this.RefreshControlInfo(i_device); @@ -162,7 +180,7 @@ /// <returns></returns> public PicViewControl AddSwitchControl() { - btnSwitch.Visible = true; + this.AddChidren(this.btnSwitch, ChidrenBindMode.NotBind); return btnSwitch; } @@ -176,21 +194,35 @@ /// <param name="i_device">璁惧瀵硅薄,涓嶆槸鎺ㄩ�佺殑閭d釜</param> public void RefreshControlInfo(CommonDevice i_device) { - //璁惧鐘舵�佸繀椤诲埛鏂� - this.btnStatu.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(i_device); + bool collect = HdlRoomLogic.Current.IsCollectInRoom(i_device); + if (btnCollect.IsSelected != collect) + { + btnCollect.IsSelected = collect; + } //璁惧鍥炬爣涔熷埛鏂� - Common.LocalDevice.Current.SetDeviceIconToControl(btnDeviceIcon, i_device); + Common.LocalDevice.Current.SetDeviceIconToControl2(btnDeviceIcon, i_device); + //鍚嶅瓧鍒锋柊 + this.btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device); //妫�娴嬭澶囨槸鍚︽槸鎵撳紑鐘舵�� bool isOpen = this.CheckIsOpenStatu(i_device); - this.SetCardStatu(isOpen); + if (this.isHadOpenSwitch == true && i_device.HadReadDeviceStatu == false) + { + //濡傛灉杩欎釜鍗$墖鏈夊紑鍏冲姛鑳�,骞朵笖缃戝叧杩樻病鏈夊洖澶嶄箣鍓�,榛樿鏄叧闂姸鎬� + //绛夊緟缃戝叧鍥炲鍚庝細閲嶆柊鍒锋柊,涓嶇劧涓�鐩存槸鍏抽棴鐘舵�� + isOpen = false; + } + this.SetCardOpenStatu(isOpen); } /// <summary> /// 璁剧疆鍗$墖鐘舵�� /// </summary> /// <param name="isOpen"></param> - public void SetCardStatu(bool isOpen) + public void SetCardOpenStatu(bool isOpen) { + //璁惧鐘舵�佸繀椤诲埛鏂� + this.btnStatu.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device); + if (this.btnBackGroud.IsSelected == isOpen) { //鐘舵�佷竴鏍�,鍒欎笉闇�瑕佸鐞� @@ -202,13 +234,37 @@ this.btnDeviceName.IsSelected = isOpen; this.btnDeviceName.IsBold = isOpen; //璁惧鐨勮儗鏅渾鍦堝浘 - this.btnDeviceRound.IsSelected = 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.btnSwitch.IsSelected = isOpen; + if (btnSwitch != null) + { + this.btnSwitch.IsSelected = isOpen; + } + } + + /// <summary> + /// 璁剧疆鍗$墖鐨勫湪绾跨姸鎬� + /// </summary> + /// <param name="isOnline">鍦ㄧ嚎</param> + public void SetCardOnlineStatu(bool isOnline) + { + if (this.isHadOpenSwitch == true) + { + //濡傛灉杩欎釜璁惧鏈夊紑鍏冲姛鑳�,鍒欏湪绾跨姸鎬佷笉浼氭敼鍙樼姸鎬� + return; + } + this.SetCardOpenStatu(isOnline); } /// <summary> @@ -227,8 +283,7 @@ /// <summary> /// 鍙戦�佽幏鍙栫姸鎬佸懡浠� /// </summary> - /// <param name="i_device"></param> - public virtual void SendStatuComand(CommonDevice i_device) + public virtual void SendStatuComand() { return; } @@ -244,8 +299,10 @@ /// <returns></returns> public virtual bool CheckIsOpenStatu(CommonDevice i_device) { + //濡傛灉杩欎釜鍑芥暟琚噸鍐欑殑璇�,鍒欎唬琛ㄨ繖涓澶囨湁寮�鍏冲姛鑳� + this.isHadOpenSwitch = false; //榛樿鐢ㄥ湪绾跨姸鎬佹潵鍒ゆ柇 - return i_device.IsOnline == 1; + return Common.LocalDevice.Current.CheckDeviceIsOnline(i_device); } @@ -257,22 +314,26 @@ /// 娣卞害鍗$墖淇℃伅鐨勮繑鍥炰簨浠�(搴曞眰涓撶敤) /// </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 - && HdlRoomLogic.Current.IsCollectInRoom(device) == false) + if (this.nowSelectRoom.IsLove == true) { - this.CardNeedRemoveEvent?.Invoke(); - return; + //濡傛灉鏄富椤靛彇娑堟悳钘忕殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟 + if (HdlRoomLogic.Current.IsCollectInRoom(device) == false) + { + this.CardNeedRemoveEvent?.Invoke(); + return; + } } - //濡傛灉杩欎釜璁惧鏀瑰彉浜嗘埧闂寸殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟 - var nowRoom = HdlRoomLogic.Current.GetRoomByDevice(device); - if (nowRoom == null || nowRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id) + else { - this.CardNeedRemoveEvent?.Invoke(); - return; + //濡傛灉杩欎釜璁惧鏀瑰彉浜嗘埧闂寸殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟 + var nowRoom = HdlRoomLogic.Current.GetRoomByDevice(device); + if (nowRoom == null || nowRoom.Id != this.nowSelectRoom.Id) + { + this.CardNeedRemoveEvent?.Invoke(); + return; + } } //濡傛灉瀹冭繕鍦ㄨ繖涓埧闂寸殑璇�,鍒锋柊鍗$墖淇℃伅 this.RefreshControlInfo(device); @@ -289,10 +350,18 @@ /// <param name="oldOpenStatu">璁惧鐩墠鐨勫紑鍏崇姸鎬�</param> public void StartCheckResponeResult(bool oldOpenStatu) { + if (Common.Config.Instance.Home.IsVirtually == true) + { + //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�,鍒欐鍔熻兘鏃犳晥 + return; + } this.ResponeResult = 0; + //寮�鍏虫寜閽笉鑳藉啀鐐瑰嚮 + if (btnSwitch != null) { this.btnSwitch.CanClick = false; } + HdlThreadLogic.Current.RunThread(() => { - int waitime = 30 * 100; + int waitime = 40; while (waitime > 0) { System.Threading.Thread.Sleep(100); @@ -301,8 +370,16 @@ //宸茬粡鑾峰彇寰楀埌鏁版嵁 break; } + waitime--; + //2绉掔殑鏃跺��,杩樻槸鎺ュ彈涓嶅埌鐨勮瘽,寮哄埗鍐嶆鍒锋柊璁惧鐘舵�� + if (waitime == 20) + { + //浠庢柊鍙戦�佽幏鍙栬澶囩殑鐘舵��(寮哄埗) + this.device.HadReadDeviceStatu = false; + this.SendStatuComand(); + } } - if (waitime <= 0) + if (waitime <= 0 && this.Parent != null) { //娌℃湁鑾峰彇寰楀埌缁撴灉 HdlThreadLogic.Current.RunMain(() => @@ -310,9 +387,11 @@ var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.FAIL)); msgContr.Show(); //鍙樻洿鍥炲師鏉ョ殑鐘舵�� - this.SetCardStatu(oldOpenStatu); + this.SetCardOpenStatu(oldOpenStatu); }); } + //寮�鍏虫寜閽笉鑳藉啀鐐瑰嚮 + if (btnSwitch != null) { this.btnSwitch.CanClick = true; } }); } @@ -326,6 +405,29 @@ #endregion + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 妫�娴嬭兘鍚﹀彂閫佽幏鍙栫姸鎬佸懡浠� + /// </summary> + /// <returns></returns> + public bool CheckCanSendStatuComand() + { + if (this.device.HadReadDeviceStatu == false) + { + //杩樻病鏈夎鍙栬繃鏁版嵁 + return true; + } + if ((DateTime.Now - this.device.LastDateTime).TotalMinutes >= 10) + { + //10鍒嗛挓鍚庡彲浠ュ啀娆¤幏鍙� + return true; + } + return false; + } + + #endregion + #region 鈻� 鎺т欢鎽ф瘉___________________________ /// <summary> -- Gitblit v1.8.0