From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期二, 21 七月 2020 09:46:53 +0800 Subject: [PATCH] 请合并最新多功能面板代码 --- ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs | 411 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 411 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs new file mode 100755 index 0000000..4d17c9a --- /dev/null +++ b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/Base/DeviceDetailCardCommonForm.cs @@ -0,0 +1,411 @@ +锘縰sing Shared.Phone.UserCenter; +using System; +using System.Collections.Generic; +using System.Text; +using ZigBee.Device; + +namespace Shared.Phone.MainPage.ControlForm +{ + /// <summary> + /// 涓婚〉娣卞害鍗$墖鐨勫簳灞傚叡閫� + /// </summary> + public class DeviceDetailCardCommonForm : EditorCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 鐣岄潰鍏抽棴浜嬩欢 + /// </summary> + public Action<CommonDevice> FormCloseEvent = null; + /// <summary> + /// 璁惧瀵硅薄 + /// </summary> + public CommonDevice device = null; + /// <summary> + /// 褰撳墠閫夋嫨鐨勬埧闂村璞�(鍐嶆鍒锋柊鐣岄潰鏃�,杩欎釜涓滆タ鏈夊彲鑳芥槸null) + /// </summary> + public Common.Room nowSelectRoom = null; + /// <summary> + /// 鏍囪瀹冩槸鐢卞摢涓帶浠惰皟璧风殑 + /// </summary> + public ViewGroup RowOrCardControl = null; + /// <summary> + /// 鐘舵�佹帶浠� + /// </summary> + private NormalViewControl btnStatu = null; + /// <summary> + /// 璁惧鍚嶇О鎺т欢 + /// </summary> + private NormalViewControl btnDeviceName = null; + /// <summary> + /// 鎴块棿鍚嶇О + /// </summary> + private NormalViewControl btnRoomName = null; + /// <summary> + /// 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋� 0:娌℃湁鑾峰彇寰楀埌 1:宸茬粡鑾峰彇寰楀埌 + /// </summary> + public int ResponeResult = 0; + /// <summary> + /// 褰撳墠绔偣鐨勫姛鑳界被鍨� + /// </summary> + private DeviceFunctionType nowDeviceFuncType = DeviceFunctionType.A鏈畾涔�; + /// <summary> + /// 鐧借壊鑳屾櫙鐨勫搴� + /// </summary> + private int backFrameWidth = 0; + /// <summary> + /// 鐧借壊鑳屾櫙鐨勯珮搴� + /// </summary> + private int backFrameHeight = 0; + /// <summary> + /// 褰撳墠鐨勬枃鏈� + /// </summary> + private string CurrentText = string.Empty; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) + /// </summary> + /// <param name="i_device">璁惧瀵硅薄</param> + /// <param name="i_nowSelectRoom">鎴块棿</param> + /// <param name="i_backWidth">鐧借壊鑳屾櫙鐨勫搴�(闈炵湡瀹炲��)</param> + /// <param name="i_backHeight">鐧借壊鑳屾櫙鐨勯珮搴�(闈炵湡瀹炲��)</param> + public void ShowForm(CommonDevice i_device, Common.Room i_nowSelectRoom, int i_backWidth, int i_backHeight) + { + this.CurrentText = Language.StringByID(R.MyInternationalizationString.Current) + " "; + this.nowSelectRoom = i_nowSelectRoom; + this.backFrameWidth = i_backWidth; + this.backFrameHeight = i_backHeight; + + //鏇村 + var btnMore = new MostRightIconControl(69, 69); + btnMore.UnSelectedImagePath = "Item/More.png"; + topFrameLayout.AddChidren(btnMore); + btnMore.InitControl(); + btnMore.ButtonClickEvent += (sender, e) => + { + var detailInfo = new DeviceDetailInfoForm(); + detailInfo.AddForm(device, nowSelectRoom); + }; + + //鍒濆鍖栦腑閮ㄤ俊鎭� + this.InitMiddleFrame(i_device); + //娣诲姞璁惧涓婃姤浜嬩欢 + this.AddDeviceReportEvent(); + } + + /// <summary> + /// 鍒濆鍖栦腑閮ㄤ俊鎭� + /// </summary> + /// <param name="i_device">璁惧瀵硅薄</param> + /// <param name="backWidth">鐧借壊鑳屾櫙鐨勫搴�(闈炵湡瀹炲��)</param> + /// <param name="backHeight">鐧借壊鑳屾櫙鐨勯珮搴�(闈炵湡瀹炲��)</param> + private void InitMiddleFrame(CommonDevice i_device) + { + this.device = i_device; + this.nowDeviceFuncType = device.DfunctionType; + + //娓呯┖bodyFrame + this.ClearBodyFrame(); + + //鐧借壊鑳屾櫙鎺т欢 + var frameWhiteBack = new FrameLayout(); + frameWhiteBack.Y = Application.GetRealHeight(115); + frameWhiteBack.Width = Application.GetRealWidth(this.backFrameWidth); + frameWhiteBack.Height = Application.GetRealHeight(this.backFrameHeight); + frameWhiteBack.BackgroundColor = UserCenterColor.Current.White; + frameWhiteBack.Radius = (uint)Application.GetRealHeight(17); + frameWhiteBack.Gravity = Gravity.CenterHorizontal; + bodyFrameLayout.AddChidren(frameWhiteBack); + + //璁惧鍚嶇О + this.btnDeviceName = new NormalViewControl(100, 60, true); + btnDeviceName.Y = Application.GetRealHeight(46); + btnDeviceName.TextSize = 15; + btnDeviceName.IsBold = true; + btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device); + btnDeviceName.Width = btnDeviceName.GetRealWidthByText(); + btnDeviceName.TextAlignment = TextAlignment.Center; + btnDeviceName.Gravity = Gravity.CenterHorizontal; + frameWhiteBack.AddChidren(btnDeviceName); + + //鐘舵�� + this.btnStatu = new NormalViewControl(700, 42, true); + btnStatu.Y = btnDeviceName.Bottom + Application.GetRealHeight(12); + btnStatu.TextSize = 10; + btnStatu.TextColor = UserCenterColor.Current.TextGrayColor1; + btnStatu.TextAlignment = TextAlignment.Center; + btnStatu.Gravity = Gravity.CenterHorizontal; + frameWhiteBack.AddChidren(btnStatu); + + //鎴块棿鐨勯粦鑹茶儗鏅� + var frameRoomBlack = new FrameLayout(); + frameRoomBlack.Height = Application.GetRealHeight(138); + frameRoomBlack.Width = frameWhiteBack.Width; + frameRoomBlack.BackgroundColor = 0xff232323; + frameRoomBlack.Radius= (uint)Application.GetRealHeight(17); + frameRoomBlack.Gravity = Gravity.BottomCenter; + frameWhiteBack.AddChidren(frameRoomBlack); + + //璁╀笂閮ㄥ彉鐩磋(鍥犱负瀹夊崜杩欓噷,鍗曠嫭鎸囧畾宸︿笅鍜屽彸涓嬭鍦嗚鐨勮瘽,鍦嗕笉浜�) + var frameTemp = new FrameLayout(); + frameTemp.Height = Application.GetRealHeight(30); + frameTemp.Width = frameWhiteBack.Width; + frameTemp.BackgroundColor = frameRoomBlack.BackgroundColor; + frameRoomBlack.AddChidren(frameTemp); + + //鎴块棿鍥炬爣 + var btnRoomIcon = new IconViewControl(81); + btnRoomIcon.X = ControlCommonResourse.XXLeft; + btnRoomIcon.UnSelectedImagePath = "Item/Room.png"; + btnRoomIcon.Gravity = Gravity.CenterVertical; + frameRoomBlack.AddChidren(btnRoomIcon); + + //鎴块棿鍚嶇О + this.btnRoomName = new NormalViewControl(600, 52, true); + btnRoomName.X = btnRoomIcon.Right + Application.GetRealWidth(12); + btnRoomName.TextSize = 12; + btnRoomName.TextColor = UserCenterColor.Current.White; + btnRoomName.Gravity = Gravity.CenterVertical; + if (this.nowSelectRoom != null) + { + btnRoomName.Text = this.nowSelectRoom.Name; + } + else + { + //鏈垎閰� + btnRoomName.TextID = R.MyInternationalizationString.uDeviceNotAssignedRoom; + } + frameRoomBlack.AddChidren(btnRoomName); + + //鏀惰棌 + var btnCollect = new IconBigViewControl(69, 69); + btnCollect.UnSelectedImagePath = "Item/Collection.png"; + btnCollect.SelectedImagePath = "Item/CollectionSelected.png"; + btnCollect.IsSelected = HdlRoomLogic.Current.IsCollectInRoom(i_device); + frameWhiteBack.AddChidren(btnCollect); + btnCollect.InitControl(); + btnCollect.X = Application.GetRealWidth(850) - btnCollect.XOffset; + btnCollect.Y = Application.GetRealHeight(35) - btnCollect.YOffset; + btnCollect.ButtonClickEvent += (sender, e) => + { + //鐘舵�佸彇鍙� + btnCollect.IsSelected = !btnCollect.IsSelected; + if (btnCollect.IsSelected == false) + { + //鍙栨秷鏀惰棌 + HdlRoomLogic.Current.DeleteLoveDevice(i_device); + } + else + { + //娣诲姞鏀惰棌 + HdlRoomLogic.Current.AddLoveDevice(i_device); + } + }; + + //搴曞眰鍒濆鍖栦腑閮ㄦ帶浠跺畬鎴愪箣鍚�,璋冪敤鍚勮嚜鐣岄潰鐨勫垵濮嬪寲鍑芥暟 + this.InitMiddleFrameAfter(frameWhiteBack); + } + + /// <summary> + /// 搴曞眰鍒濆鍖栦腑閮ㄦ帶浠跺畬鎴愪箣鍚� + /// </summary> + /// <param name="frameWhiteBack">鐧借壊鑳屾櫙鎺т欢</param> + public virtual void InitMiddleFrameAfter(FrameLayout frameWhiteBack) + { + } + + #endregion + + #region 鈻� 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋淿____________ + + /// <summary> + /// 妫�娴嬫槸鍚﹁幏鍙栫綉鍏冲弽棣堢殑缁撴灉,濡傛灉缃戝叧娌℃湁鍥炲,鍒欎細寮瑰嚭娑堟伅 + /// </summary> + /// <param name="listControl">闇�瑕侀檺鍒朵笉鑳界偣鍑荤殑鎺т欢(瓒呮椂鏃�,瀹冧細杩樺師Select鐘舵��)</param> + /// <param name="lastAction">鍑芥暟杩愯瀹屾垚鍚庣殑鍥炶皟鍑芥暟銆傚弬鏁癴alse:娌℃湁绛夊埌缃戝叧鍥炲 true:鎺ユ敹鍒颁簡缃戝叧鍥炲</param> + public void StartCheckResponeResult(List<ButtonBase> listControl, Action<bool> lastAction = null) + { + this.ResponeResult = 0; + + //鍏堣鎸囧畾鎺т欢涓嶈兘鐐瑰嚮 + foreach (var myContr in listControl) + { + myContr.CanClick = false; + } + + HdlThreadLogic.Current.RunThread(() => + { + int waitime = 40; + while (waitime > 0) + { + System.Threading.Thread.Sleep(100); + if (this.ResponeResult == 1) + { + //宸茬粡鑾峰彇寰楀埌鏁版嵁 + break; + } + waitime--; + //2绉掔殑鏃跺��,杩樻槸鎺ュ彈涓嶅埌鐨勮瘽,寮哄埗鍐嶆鍒锋柊璁惧鐘舵�� + if (waitime == 20) + { + //浠庢柊鍙戦�佽幏鍙栬澶囩殑鐘舵��(寮哄埗) + this.device.HadReadDeviceStatu = false; + if (this.RowOrCardControl != null) + { + this.RowOrCardControl.GetType().InvokeMember("SendStatuComand", System.Reflection.BindingFlags.InvokeMethod, null, this.RowOrCardControl, null); + } + } + } + if (waitime <= 0 && this.Parent != null) + { + //娌℃湁鑾峰彇寰楀埌缁撴灉 + HdlThreadLogic.Current.RunMain(() => + { + var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.FAIL)); + msgContr.Show(); + }); + } + //寮�鍏虫寜閽彲浠ュ啀鐐瑰嚮 + foreach (var myContr in listControl) + { + myContr.CanClick = true; + } + //鍑芥暟杩愯瀹屾垚鐨勫洖璋冨嚱鏁� + lastAction?.Invoke(this.ResponeResult == 1); + lastAction = null; + }); + } + + /// <summary> + /// 妫�娴嬬綉鍏崇殑鍙嶉缁撴灉(灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport) + /// </summary> + /// <param name="comandDiv">鍛戒护鍖哄垎</param> + /// <param name="report">涓婃姤鏁版嵁</param> + public virtual bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report) + { + return false; + } + + /// <summary> + /// 娣诲姞璁惧涓婃姤浜嬩欢 + /// </summary> + private void AddDeviceReportEvent() + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(this.device); + //灞炴�т笂鎶� + HdlGatewayReceiveLogic.Current.AddAttributeEvent("DeviceDetailCardAttribute" + mainKeys, ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => + { + string mainKey2 = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (mainKeys != mainKey2) + { + //涓嶆槸鍚屼竴涓笢瑗� + return; + } + //妫�娴嬬粨鏋� + if (this.CheckResponeResultStatu(ReceiveComandDiv.A璁惧灞炴�т笂鎶�, report) == true) + { + //缁撴灉宸茬粡鎺ユ敹鍒� + this.ResponeResult = 1; + } + }); + } + + #endregion + + #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________ + + /// <summary> + /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠� + /// </summary> + public override int FormActionAgainEvent() + { + //濡傛灉涓嶆槸鍠滅埍鎴块棿鐨勮瘽,瀹冪殑鎴块棿鏈夊彲鑳借鍒囨崲浜� + if (this.nowSelectRoom == null || this.nowSelectRoom.IsLove == false) + { + this.nowSelectRoom = HdlRoomLogic.Current.GetRoomByDevice(this.device); + } + //濡傛灉鍔熻兘绫诲瀷鍙樻洿浜� + if (this.nowDeviceFuncType != this.device.DfunctionType) + { + //閲嶆柊鍒锋柊鐣岄潰,鍒濆鍖栦腑閮ㄤ俊鎭� + this.InitMiddleFrame(this.device); + } + else + { + //鍒锋柊鍚嶅瓧 + this.btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(this.device); + btnDeviceName.Width = btnDeviceName.GetRealWidthByText(); + btnDeviceName.Gravity = Gravity.CenterHorizontal; + if (this.nowSelectRoom == null) + { + //鏈垎閰� + this.btnRoomName.TextID = R.MyInternationalizationString.uDeviceNotAssignedRoom; + } + else + { + this.btnRoomName.Text = this.nowSelectRoom.Name; + } + } + + return 1; + } + + #endregion + + #region 鈻� 鐣岄潰鍏抽棴___________________________ + + /// <summary> + /// 鐣岄潰鍏抽棴 + /// </summary> + public override void CloseFormBefore() + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(this.device); + HdlGatewayReceiveLogic.Current.RemoveEvent("DeviceDetailCardAttribute" + mainKeys); + + //鍥炶皟鍑芥暟 + this.FormCloseEvent?.Invoke(this.device); + this.FormCloseEvent = null; + + base.CloseFormBefore(); + } + + #endregion + + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 璁剧疆鐘舵�佹枃鏈�(涓嶉渶瑕佹寚瀹氥�愬綋鍓嶄袱涓瓧銆�) + /// </summary> + /// <param name="text"></param> + public void SetStatuText(string text) + { + this.btnStatu.Text = this.CurrentText + text; + } + + /// <summary> + /// 璁剧疆PM2.5浼犳劅鍣ㄧ姸鎬佹枃鏈�(涓嶉渶瑕佹寚瀹氥�愬綋鍓嶄袱涓瓧銆�) + /// </summary> + /// <param name="text"></param> + public void SetPmTwoPointFiveStatuText(string text) + { + this.btnStatu.Text = text; + } + + /// <summary> + /// 閲嶆柊璁剧疆璁惧鍚嶅瓧鎺т欢鍜岀姸鎬佹帶浠剁殑Y杞� + /// </summary> + /// <param name="i_NameY">璁惧鍚嶅瓧鎺т欢鐨刌杞�(鐪熷疄鍊�)</param> + /// <param name="i_StatuY">鐘舵�佹帶浠剁殑Y杞�(鐪熷疄鍊�)</param> + public void ResetDeviceNameAndStatuPoint(int i_NameY, int i_StatuY) + { + btnDeviceName.Y = i_NameY; + btnStatu.Y = i_StatuY; + } + + #endregion + } +} -- Gitblit v1.8.0