From 3aa397ab145382935492b11c1f18c9634e69910b Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期四, 10 十二月 2020 16:45:00 +0800 Subject: [PATCH] 请合并,门锁和晾衣架第一版代码 --- ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs | 2577 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,291 insertions(+), 1,286 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs b/ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs old mode 100755 new mode 100644 index 0b5571f..bbb6223 --- a/ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs +++ b/ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs @@ -7,1292 +7,1297 @@ using ZigBee.Device; namespace Shared.Phone.MainPage -{ +{ + /// <summary> + /// 涓婚〉(娉ㄦ剰,BodyFrameLyout鏄満鏅拰鍔熻兘鐨勬甯�) + /// </summary> + public class HomeMainPageForm : EditorCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + /// <summary> - /// 涓婚〉(娉ㄦ剰,BodyFrameLyout鏄満鏅拰鍔熻兘鐨勬甯�) + /// The instance. /// </summary> - public class HomeMainPageForm : EditorCommonForm - { - #region 鈻� 鍙橀噺澹版槑___________________________ - - /// <summary> - /// The instance. - /// </summary> - public static HomeMainPageForm Instance; - /// <summary> - /// 鏁翠釜鐣岄潰鐨勪笂涓嬫粦鍔ㄦ帶浠� - /// </summary> - private VerticalFrameControl listBodyContr = null; - /// <summary> - /// 鎴块棿鐨勬粦鍔ㄥ鍣ㄦ帶浠� - /// </summary> - private HorizontalPages roomPageView = null; - /// <summary> - /// 璁惧鍗$墖鎺т欢(涓婚敭涓�:璁惧涓婚敭) - /// </summary> - private Dictionary<string, Controls.DeviceCardCommon> dicDeviceCardControl = new Dictionary<string, Controls.DeviceCardCommon>(); - /// <summary> - /// 鍦烘櫙鍗$墖鎺т欢(涓婚敭涓�:鍦烘櫙ID) - /// </summary> - private Dictionary<int, Controls.SceneCardControl> dicSceneCardControl = new Dictionary<int, Controls.SceneCardControl>(); - /// <summary> - /// 妤煎眰鍚嶅瓧鎺т欢 - /// </summary> - private NormalViewControl btnFloorName = null; - /// <summary> - /// 鎴块棿姝e湪鍙樻洿涓� - /// </summary> - private bool isRoomChanging = false; - - #endregion - - #region 鈻� 鍒濆鍖朹____________________________ - - /// <summary> - /// 鐣岄潰鏄剧ず - /// </summary> - public void ShowForm() - { - this.FormID = "HomeMainPageForm"; - Instance = this; - - //鍏堝垵濮嬪寲宸︽粦鎴块棿鍒楄〃鐣岄潰(鍦ㄥ弽灏勯噷闈㈠垵濮嬪寲) - if (LeftListRoomViewFrom.Instance == null) { } - - //鏁翠釜鑳屾櫙鐨勪笂涓嬫粦鍔ㄦ帶浠� - if (this.listBodyContr == null) - { - this.listBodyContr = new VerticalFrameControl(); - listBodyContr.Height = this.Height; - listBodyContr.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; - this.AddChidren(listBodyContr); - } - else - { - //娓呴櫎鍏ㄩ儴 - this.listBodyContr.frameTable.RemoveAll(); - listBodyContr.RecoverTableHeight(); - } - - //鍒濆鍖栧ご閮ㄦ帶浠� - this.InitTopFrameLayoutControl(); - //鍒濆鍖栦腑闂存帶浠� - this.InitMidFrameLayoutControl(); - //娣诲姞璁惧鐘舵�佷笂鎶ヤ簨浠� - this.AddNormalDeviceReportEvent(); - //娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠� - this.AddSensorDeviceReportEvent(); - //寮�鍚紶鎰熷櫒鐘舵�佽繕鍘熺殑绾跨▼ - this.StartRecoverSenorStatuThread(); - } - - /// <summary> - /// 鍒濆鍖栧ご閮ㄦ帶浠� - /// </summary> - private void InitTopFrameLayoutControl() - { - //澶撮儴瀹瑰櫒 - base.topFrameLayout = new NormalFrameLayout(); - topFrameLayout.Y = Application.GetRealHeight(60); - topFrameLayout.Height = Application.GetRealHeight(127); - topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; - listBodyContr.frameTable.AddChidren(topFrameLayout); - - //妤煎眰鍥炬爣 - var btnFloorIcon = new IconViewControl(69); - btnFloorIcon.X = ControlCommonResourse.XXLeft; - btnFloorIcon.Gravity = Gravity.CenterVertical; - btnFloorIcon.UnSelectedImagePath = "Item/Floor.png"; - topFrameLayout.AddChidren(btnFloorIcon); - - //鎷ユ湁妤煎眰 - this.btnFloorName = null; - if (Config.Instance.Home.FloorDics.Count > 0) - { - //鎷ユ湁妤煎眰鐨勬椂鍊�,鐐瑰嚮鎵嶆湁鏁� - btnFloorIcon.ButtonClickEvent += (sender, e) => - { - //鏄剧ず閫夋嫨妤煎眰鐨勭晫闈� - this.ShowSelectFloorForm(btnFloorName); - }; - - //妤煎眰鍚� - this.btnFloorName = new NormalViewControl(500, 100, true); - btnFloorName.X = btnFloorIcon.Right; - btnFloorName.Gravity = Gravity.CenterVertical; - btnFloorName.TextColor = ZigbeeColor.Current.GXCTextColor; - btnFloorName.Text = Config.Instance.Home.GetCurrentFloorName; - btnFloorName.IsBold = true; - btnFloorName.Width = btnFloorName.GetRealWidthByText() + Application.GetRealWidth(20); - topFrameLayout.AddChidren(btnFloorName); - btnFloorName.ButtonClickEvent += (sender, e) => - { - //鏄剧ず閫夋嫨妤煎眰鐨勭晫闈� - this.ShowSelectFloorForm(btnFloorName); - }; - } - - //鍙瀵硅蹇嵎鏂瑰紡 - Shared.Phone.Device.VideoIntercom.VideoMachine.AccountSupportVideo(topFrameLayout); - //瀹夐槻蹇嵎鏂瑰紡 - if (UserCenterResourse.ResidenceOption.SafetyShortcut) - { - var btnSafety = new Controls.SafetyShortcutControl(); - btnSafety.X = Application.GetRealWidth(860); - btnSafety.Gravity = Gravity.CenterVertical; - topFrameLayout.AddChidren(btnSafety); - } - //娑堟伅鍥炬爣 - var btnMessage = new MessageManagementControl(); - btnMessage.X = Application.GetRealWidth(953); - btnMessage.Gravity = Gravity.CenterVertical; - btnMessage.UnSelectedImagePath = "Item/Message.png"; - btnMessage.SelectedImagePath = "Item/MessageSelected.png"; - topFrameLayout.AddChidren(btnMessage); - - //浣忓畢鍚嶅瓧 - var btnHouseName = new NormalViewControl(700, 95, true); - btnHouseName.X = ControlCommonResourse.XXLeft; - btnHouseName.Y = Application.GetRealHeight(161); - btnHouseName.TextSize = 24; - btnHouseName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor; - btnHouseName.IsBold = true; - btnHouseName.Text = Config.Instance.Home.Name; - btnHouseName.Width = btnHouseName.GetRealWidthByText() + Application.GetRealWidth(100); - this.listBodyContr.frameTable.AddChidren(btnHouseName); - - //鍒囨崲浣忓畢 - btnHouseName.MouseLongEventHandler += (sender, e) => - { - if (Config.Instance.HomeFilePathList.Count == 0) - { - //褰撳墠浣忓畢涓虹┖锛岃鍏堝缓绔嬩綇瀹� - this.ShowMassage(ShowMsgType.Remind, Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst)); - } - else - { - var selectHouse = new Category.SelectHouseForm(); - selectHouse.Init(); - selectHouse.HouseAction = (houseId) => - { - //鍒囨崲浣忓畢 - this.ChangeResidence(HdlResidenceLogic.Current.GetHouseByHouseId(houseId)); - }; - } - }; - } - - /// <summary> - /// 鍒濆鍖栦腑闂存帶浠� - /// </summary> - private void InitMidFrameLayoutControl() - { - //鎴愬憳韬唤涓嶅厑璁告坊鍔犵綉鍏� - if (UserCenterResourse.UserInfo.AuthorityNo == 3) - { - //鍒濆鍖栧満鏅�,鍔熻兘鐨勫垏鎹㈡帶浠� - this.InitSceneFunctionSwitchControl(); - //鍒濆鍖栨埧闂存粦鍔ㄦ帶浠� - this.InitRoomHorizontalPagesControl(); - return; - } - - //妫�娴嬫槸鍚︾粦瀹氭湁缃戝叧 - if (Common.Config.Instance.Home.IsVirtually == false && this.CheckHadBindGateway() == false) - { - //鏄剧ず娌℃湁缁戝畾杩囩綉鍏崇殑鐣岄潰 - this.ShowNoGatewayTip(); - } - else - { - //鍒濆鍖栧満鏅�,鍔熻兘鐨勫垏鎹㈡帶浠� - this.InitSceneFunctionSwitchControl(); - //鍒濆鍖栨埧闂存粦鍔ㄦ帶浠� - this.InitRoomHorizontalPagesControl(); - } - } - - /// <summary> - /// 鍒濆鍖栧満鏅�,鍔熻兘鐨勫垏鎹㈡帶浠� - /// </summary> - private void InitSceneFunctionSwitchControl() - { - //鍔熻兘鍜屽満鏅殑鑳屾櫙鍥� - var functionSceneView = new FrameLayout(); - functionSceneView.Y = Application.GetRealHeight(861); - functionSceneView.Width = Application.GetRealWidth(832); - functionSceneView.Height = Application.GetRealHeight(167); - functionSceneView.Gravity = Gravity.CenterHorizontal; - functionSceneView.BackgroundImagePath = "Item/SceneFunctionBG.png"; - this.listBodyContr.frameTable.AddChidren(functionSceneView); - - //鍦烘櫙 - var btnScene = new NormalViewControl(350, 100, true); - btnScene.X = Application.GetRealWidth(30); - btnScene.Y = Application.GetRealHeight(12); - btnScene.TextColor = ZigbeeColor.Current.GXCTextGrayColor3; - btnScene.SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor; - btnScene.TextID = R.MyInternationalizationString.Scence; - btnScene.TextSize = 15; - btnScene.TextAlignment = TextAlignment.Center; - functionSceneView.AddChidren(btnScene); - - //鍔熻兘 - var btnFunction = new NormalViewControl(360, 100, true); - btnFunction.X = Application.GetRealWidth(430); - btnFunction.Y = Application.GetRealHeight(12); - btnFunction.TextColor = ZigbeeColor.Current.GXCTextGrayColor3; - btnFunction.SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor; - btnFunction.TextSize = 15; - btnFunction.TextID = R.MyInternationalizationString.Function; - btnFunction.TextAlignment = TextAlignment.Center; - functionSceneView.AddChidren(btnFunction); - if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 1) - { - btnScene.IsSelected = true; - btnScene.TextSize = 17; - btnScene.IsBold = true; - } - else if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2) - { - btnFunction.IsSelected = true; - btnFunction.TextSize = 17; - btnFunction.IsBold = true; - } - - //鍔熻兘鍜屽満鏅痓odyView - this.bodyFrameLayout = new NormalFrameLayout(); - bodyFrameLayout.Y = functionSceneView.Bottom; - bodyFrameLayout.Height = this.listBodyContr.frameTable.Height - functionSceneView.Bottom; - bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; - this.listBodyContr.frameTable.AddChidren(bodyFrameLayout); - - //閫夋嫨鍔熻兘鍒嗘爮 - btnFunction.ButtonClickEvent += (sender, e) => - { - if (btnFunction.IsSelected == true) - { - return; - } - //鍔熻兘鍒嗘敮閫夋嫨 - UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 2; - - btnScene.IsSelected = false; - btnScene.TextSize = 15; - btnScene.IsBold = false; - - btnFunction.IsSelected = true; - btnFunction.TextSize = 17; - btnFunction.IsBold = true; - //鍒锋柊璁惧妗屽竷鎺т欢 - this.RefreshBodyView(); - }; - //閫夋嫨鍦烘櫙鍒嗘爮 - btnScene.ButtonClickEvent += (sender, e) => - { - if (btnScene.IsSelected == true) - { - return; - } - //鍦烘櫙鍒嗘敮閫夋嫨 - UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 1; - - btnScene.IsSelected = true; - btnScene.TextSize = 17; - btnScene.IsBold = true; - - btnFunction.IsSelected = false; - btnFunction.TextSize = 15; - btnFunction.IsBold = false; - //鍒锋柊璁惧妗屽竷鎺т欢 - this.RefreshBodyView(); - }; - } - - /// <summary> - /// 鎻愮ず鐢ㄦ埛娌℃湁缃戝叧锛屽苟蹇�熻烦杞埌娣诲姞缃戝叧鐣岄潰 - /// </summary> - private void ShowNoGatewayTip() - { - var bg = new PicViewControl(717, 478); - bg.Y = Application.GetRealHeight(302); - bg.Gravity = Gravity.CenterHorizontal; - bg.UnSelectedImagePath = "Item/NoBindGW.png"; - this.listBodyContr.frameTable.AddChidren(bg); - - var tip = new NormalViewControl(this.GetPictrueRealSize(717), this.GetPictrueRealSize(58), false); - tip.Y = Application.GetRealHeight(815); - tip.Gravity = Gravity.CenterHorizontal; - tip.TextID = R.MyInternationalizationString.NewAccountNeedBingGW; - tip.TextColor = ZigbeeColor.Current.GXCTextGrayColor; - tip.TextAlignment = TextAlignment.Center; - this.listBodyContr.frameTable.AddChidren(tip); - - var addBG = new PicViewControl(971, 366); - addBG.Y = Application.GetRealHeight(1048); - addBG.UnSelectedImagePath = "Item/VirtualFrame.png"; - addBG.Gravity = Gravity.CenterHorizontal; - this.listBodyContr.frameTable.AddChidren(addBG); - - var addGatewayBtn = new IconViewControl(89); - addGatewayBtn.Y = Application.GetRealHeight(1143); - addGatewayBtn.UnSelectedImagePath = "Item/Add_GW.png"; - addGatewayBtn.Gravity = Gravity.CenterHorizontal; - this.listBodyContr.frameTable.AddChidren(addGatewayBtn); - addGatewayBtn.ButtonClickEvent += (sender, e) => - { - var form = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm(); - form.AddForm(); - }; - - var addTip = new PicViewControl(717, 58); - addTip.Y = Application.GetRealHeight(1256); - addTip.Gravity = Gravity.CenterHorizontal; - addTip.TextID = R.MyInternationalizationString.AddSmartGW; - addTip.TextColor = ZigbeeColor.Current.GXCTextBlackColor; - addTip.TextAlignment = TextAlignment.Center; - this.listBodyContr.frameTable.AddChidren(addTip); - - addTip.ButtonClickEvent += (sender, e) => - { - var form = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm(); - form.AddForm(); - }; - } - - #endregion - - #region 鈻� 鍒濆鍖栨埧闂存粦鍔ㄦ帶浠禵________________ - - /// <summary> - /// 鍒濆鍖栨埧闂存粦鍔ㄦ帶浠� - /// </summary> - private void InitRoomHorizontalPagesControl() - { - //宸﹀彸婊戝姩鎺т欢鐨勮儗鏅鍣� - var frameBack = new FrameLayout(); - frameBack.Y = Application.GetRealHeight(302); - frameBack.Width = this.Width; - frameBack.Height = Application.GetRealHeight(478); - this.listBodyContr.frameTable.AddChidren(frameBack); - - //鎴块棿婊戝姩鎺т欢宸﹁竟鐨勮櫄鎷熷浘鐗� - var mLeftImageView = new ImageView(); - mLeftImageView.ImagePath = "RoomIcon/19.jpg"; - mLeftImageView.Radius = (uint)Application.GetRealHeight(17); - mLeftImageView.Width = Application.GetRealWidth(717); - mLeftImageView.Height = Application.GetRealHeight(478); - //鎴块棿婊戝姩鎺т欢鍙宠竟鐨勮櫄鎷熷浘鐗� - var mRightImageView = new ImageView(); - mRightImageView.ImagePath = "RoomIcon/19.jpg"; - mRightImageView.Radius = (uint)Application.GetRealHeight(17); - mRightImageView.Width = mLeftImageView.Width; - mRightImageView.Height = mLeftImageView.Height; - - this.roomPageView = new HorizontalPages(); - roomPageView.Width = frameBack.Width; - roomPageView.Height = frameBack.Height; - frameBack.AddChidren(roomPageView); - //绐佸嚭杈硅窛 - roomPageView.TCBJ = Application.GetRealWidth(124); - //涓や釜page涔嬮棿鐨勯棿璺� - roomPageView.JMBJ = Application.GetRealWidth(58); - //鍦ㄨ繖涓帶浠剁殑涓嬮潰娣诲姞闃村奖鏁堟灉 - var btnRoomBottomShadow = new NormalViewControl(717, 81, true); - btnRoomBottomShadow.Y = frameBack.Bottom; - btnRoomBottomShadow.Gravity = Gravity.CenterHorizontal; - btnRoomBottomShadow.UnSelectedImagePath = "Room/RoomCardShadow.png"; - this.listBodyContr.frameTable.AddChidren(btnRoomBottomShadow); - - //璁剧疆鎺у埗鏈�宸﹀拰鏈�鍙�2杈瑰~鍏呯殑鍋囪儗鏅疺iew锛屼笉璁剧疆涓嶆樉绀猴紝闇�瑕佸湪AddChidren 鍓嶈皟鐢ㄨ鏂规硶 - roomPageView.SetLeftAndRightImageView(mLeftImageView, mRightImageView); - - //褰撳墠鎴块棿 - var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId); - if (HdlRoomLogic.Current.NowMainPageRoom == null) - { - HdlRoomLogic.Current.NowMainPageRoom = listRoom[0]; - } - var curIndex = 0; - for (int i = 0; i < listRoom.Count; i++) - { - var roomView = new RoomView(0, 0); - roomPageView.AddChidren(roomView); - roomView.Init(listRoom[i]); - - if (listRoom[i].Id == HdlRoomLogic.Current.NowMainPageRoom.Id) - { - //褰撳墠鎴块棿,鍒欐樉绀洪偅浜涙暟鎹嚭鏉� - roomView.HideName(false); - //褰撳墠绱㈠紩 - curIndex = i; - } - else - { - roomView.HideName(true); - } - } - - //鍦ㄦ埧闂村崱鐗囧乏杈规坊鍔犻伄缃� - var btnRoomLeftShadow = new FrameLayout(); - btnRoomLeftShadow.Width = Application.GetRealWidth(124); - btnRoomLeftShadow.Height = roomPageView.Height - roomPageView.JMBJ * 2; - btnRoomLeftShadow.Gravity = Gravity.CenterVertical; - btnRoomLeftShadow.BackgroundColor = 0x1c000000; - btnRoomLeftShadow.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight); - //frameBack.AddChidren(btnRoomLeftShadow);//鏆傛椂涓嶅姞閬僵 - - //鍦ㄦ埧闂村崱鐗囧彸杈规坊鍔犻伄缃� - var btnRoomRightShadow = new FrameLayout(); - btnRoomRightShadow.Width = btnRoomLeftShadow.Width; - btnRoomRightShadow.Height = btnRoomLeftShadow.Height; - btnRoomRightShadow.X = Application.GetRealWidth(956); - btnRoomRightShadow.Gravity = Gravity.CenterVertical; - btnRoomRightShadow.BackgroundColor = btnRoomLeftShadow.BackgroundColor; - btnRoomRightShadow.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerBottomLeft); - //frameBack.AddChidren(btnRoomRightShadow);//鏆傛椂涓嶅姞閬僵 - - //鎺т欢寮�濮嬫粦鍔ㄧ殑浜嬩欢 - roomPageView.StartScrollAction += () => - { - this.isRoomChanging = true; - //寮�濮嬫粦鍔ㄦ椂,闅愯棌褰撳墠鐨勬暟鎹樉绀� - (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(true); - btnRoomLeftShadow.Visible = false; - btnRoomRightShadow.Visible = false; - btnRoomBottomShadow.Visible = false; - }; - roomPageView.EndScrollAction += () => - { - curIndex = roomPageView.PageIndex; - //鍓嶄竴寮犲崱鐗� - if (roomPageView.GetChildren(curIndex - 1) != null) - { - (roomPageView.GetChildren(curIndex - 1) as RoomView).HideName(true); - } - //褰撳墠鍗$墖 - if (roomPageView.GetChildren(curIndex) != null) - { - (roomPageView.GetChildren(curIndex) as RoomView).HideName(false); - } - //涓嬩竴寮犲崱鐗� - if (roomPageView.GetChildren(curIndex + 1) != null) - { - (roomPageView.GetChildren(curIndex + 1) as RoomView).HideName(true); - } - - btnRoomLeftShadow.Visible = true; - btnRoomRightShadow.Visible = true; - btnRoomBottomShadow.Visible = true; - //鍒囨崲褰撳墠鎴块棿 - HdlRoomLogic.Current.NowMainPageRoom = listRoom[curIndex]; - //鍒锋柊璁惧妗屽竷鎺т欢 - this.isRoomChanging = false; - this.RefreshBodyView(); - }; - //璁剧疆鎴块棿鐨勫垵濮嬮�夋嫨 - roomPageView.PageIndex = curIndex; - //濡傛灉绱㈠紩鏄涓�涓椂锛屽畠瑙﹀彂涓嶄簡浜嬩欢,闇�瑕佹墜鍔ㄨЕ鍙� - if (curIndex == 0) - { - roomPageView.EndScrollAction(); - } - } - - /// <summary> - /// 璁剧疆鎴块棿鐨勬粦鍔ㄥ鍣ㄦ帶浠堕�夋嫨鎸囧畾鐨勬埧闂�(渚涘閮ㄨ皟鐢�) - /// </summary> - /// <param name="room"></param> - public void SetRoomPageViewSelect(Room room) - { - if (roomPageView == null) - { - //褰撴病鏈夌粦瀹氭湁缃戝叧,宸︽粦鏃�,鐐瑰嚮鎴块棿鍒楄〃,鍒欎笉楦熷畠 - return; - } - var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId); - for (int i = 0; i < listRoom.Count; i++) - { - if (room.Id == listRoom[i].Id) - { - if (roomPageView.PageIndex != i) - { - //涓嶇浉鍚屾椂鎵嶅埛鏂� - roomPageView.PageIndex = i; - } - break; - } - } - //閲嶇疆涓�涓嬫ゼ灞傚悕瀛� - if (this.btnFloorName != null) - { - btnFloorName.Text = Config.Instance.Home.GetCurrentFloorName; - } - } - - #endregion - - #region 鈻� 鍔熻兘鍒嗘敮___________________________ - - /// <summary> - /// 鏄剧ず鍔熻兘 - /// </summary> - private void ShowFunction() - { - //鍏堟竻绌虹紦瀛� - bodyFrameLayout.RemoveAll(); - bodyFrameLayout.Height = Application.GetRealHeight(750); - this.listBodyContr.RecoverTableHeight(); - this.dicSceneCardControl = new Dictionary<int, Controls.SceneCardControl>(); - this.dicDeviceCardControl = new Dictionary<string, Controls.DeviceCardCommon>(); - - var listDevice = new List<CommonDevice>(); - foreach (var mainkeys in HdlRoomLogic.Current.NowMainPageRoom.ListDevice) - { - var device = LocalDevice.Current.GetDevice(mainkeys); - //鍒ゆ柇璇ヨ澶囪兘鍚︽樉绀哄湪涓婚〉 - if (LocalDevice.Current.CanShowInHomeHomeMainPage(device) == false) - { - continue; - } - listDevice.Add(device); - } - - //褰撳墠鎴块棿鐨勮澶囨暟 - if (listDevice.Count == 0) - { - //杩樻病鏈夊姛鑳藉摝 - this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.NoFunction_Tip)); - return; - } - //璁惧鍒楄〃瀹瑰櫒鎺т欢 - var listDeviceBackContr = new FrameLayout(); - listDeviceBackContr.Height = bodyFrameLayout.Height; - bodyFrameLayout.AddChidren(listDeviceBackContr); - - HdlThreadLogic.Current.RunThread(() => - { - //鍒濆鍖栬澶囧崱鐗囧垪琛ㄦ帶浠� - this.InitDeviceListCardControl(listDeviceBackContr, listDevice); - }); - } - - /// <summary> - /// 鍒濆鍖栬澶囧崱鐗囧垪琛ㄦ帶浠� - /// </summary> - /// <param name="listDeviceBackContr"></param> - private void InitDeviceListCardControl(FrameLayout listDeviceBackContr, List<CommonDevice> listDevice) - { - //璁惧璁℃暟 - int contrCount = 0; - //X杞村潗鏍�(鍥剧墖宸﹁竟鏈変綑鐧�) - int XX = this.GetPictrueRealSize(44); - //Y杞村潗鏍� - int YY = 0; - var listContr = new List<Controls.DeviceCardCommon>(); - foreach (var device in listDevice) - { - if (this.isRoomChanging == true || listDeviceBackContr.Parent == null) - { - //鏀惧純鍒濆鍖栨帶浠� - return; - } - HdlThreadLogic.Current.RunMain(() => - { - Controls.DeviceCardCommon cardContr = null; - //绐楀笜 - if (device.Type == DeviceType.WindowCoveringDevice) - { - cardContr = new Controls.DeviceCurtainCardControl(); - } - //缁х數鍣� - else if (device.Type == DeviceType.OnOffOutput) - { - cardContr = new Controls.DeviceRelayCardControl(); - } - //绌烘皵寮�鍏� - else if (device.Type == DeviceType.AirSwitch) - { - cardContr = new Controls.DeviceAirSwitchCardControl(); - } - //绌鸿皟 - else if (device.Type == DeviceType.Thermostat) - { - cardContr = new Controls.DeviceAcCardControl(); - } - //鏂伴 - else if (device.Type == DeviceType.FreshAir) - { - cardContr = new Controls.DeviceFreshAirCardControl(); - } - // PM2.5 - else if (device.Type == DeviceType.PMSensor) - { - cardContr = new Controls.DevicePmSensorCardControl(); - } - //褰╃伅(璋冨厜鍣�) - else if (device.Type == DeviceType.DimmableLight) - { - cardContr = new Controls.DeviceColorLightCardControl(); - } - //浼犳劅鍣� - else if (device.Type == DeviceType.IASZone) - { - cardContr = new Controls.DeviceSensorCardControl(); - } - //娓╂箍搴� - else if (device.Type == DeviceType.TemperatureSensor) - { - cardContr = new Controls.DeviceTemperatureCardControl(); - } - //闂ㄩ攣 - else if (device.Type == DeviceType.DoorLock) - { - cardContr = new Controls.DeviceDoorLockCardControl(); - } - //鑹叉俯鐏� - else if (device.Type == DeviceType.ColorTemperatureLight) - { - cardContr = new Controls.DeviceColorTemperatureCardControl(); - } - //鏃犳硶璇嗗埆 - else - { - cardContr = new Controls.DeviceCardCommon(); - } - - //鍒濆鍖栧崱鐗� - cardContr.X = XX; - cardContr.Y = YY; - listDeviceBackContr.AddChidren(cardContr); - cardContr.InitControl(device, HdlRoomLogic.Current.NowMainPageRoom); - //鍗$墖闇�瑕佽绉婚櫎鐨勪簨浠� - cardContr.CardNeedRemoveEvent += () => - { - //閲嶇疆璁惧鍗$墖鎺т欢鍧愭爣(鍗$墖闇�瑕佽鍒犻櫎涓撶敤) - this.ResetDeviceCardControlLocation(LocalDevice.Current.GetDeviceMainKeys(device)); - }; - //璁惧璁℃暟 - contrCount++; - //鍗$墖宸﹀彸涓よ竟鏈�14鐨勪綑鐧�,姣忎袱涓悗,X杞撮噸缃� - XX = contrCount % 2 == 0 ? this.GetPictrueRealSize(44) : cardContr.Right + this.GetPictrueRealSize(20); - if (contrCount % 2 == 0) - { - //娌′袱涓箣鍚�,Y杞撮�掑 - YY = cardContr.Bottom + this.GetPictrueRealSize(15); - } - //鎺т欢璁板綍鍒扮紦瀛樹腑 - this.dicDeviceCardControl[LocalDevice.Current.GetDeviceMainKeys(device)] = cardContr; - //鍔犵紦瀛�,鐒跺悗鍙戝懡浠� - listContr.Add(cardContr); - - if (contrCount == listDevice.Count) - { - //璋冩暣妗屽竷澶у皬 - if (contrCount > 4) - { - bodyFrameLayout.Height = listDeviceBackContr.GetChildren(listDeviceBackContr.ChildrenCount - 1).Bottom; - listDeviceBackContr.Height = bodyFrameLayout.Height; - this.listBodyContr.frameTable.Height = bodyFrameLayout.Bottom; - } - HdlThreadLogic.Current.RunThread(() => - { - while (listDeviceBackContr.Parent != null) - { - bool hadSend = false; - for (int i = 0; i < listContr.Count; i++) - { - if (listDeviceBackContr.Parent == null) - { - return; - } - //濡傛灉杩樻病鏈夋帴鏀跺埌鏁版嵁,鍒欏啀娆″彂閫� - if (listContr[i].ReceiveResponeResultStatu() == false) - { - //鍙戦�佽幏鍙栫姸鎬佺殑鍛戒护 - listContr[i].SendStatuComand(); - hadSend = true; - System.Threading.Thread.Sleep(200); - } - } - if (hadSend == false) - { - //濡傛灉宸茬粡鍏ㄩ儴鍥炶矾閮芥帴鏀朵簡缃戝叧鍥炲,鍒欎笉鍐嶄簩娆″彂閫� - break; - } - System.Threading.Thread.Sleep(2000); - } - }, ShowErrorMode.NO); - } - }); - if (contrCount > 6) - { - //璁╁畠鍛堢幇涓�绉嶇洿鎺ヤ竴娆℃�у埛鍑烘潵鐨勬晥鏋� - System.Threading.Thread.Sleep(50); - } - } - } - - #endregion - - #region 鈻� 閲嶇疆璁惧鍗$墖鎺т欢鍧愭爣_______________ - - /// <summary> - /// 閲嶇疆璁惧鍗$墖鎺т欢鍧愭爣(鍗$墖闇�瑕佽鍒犻櫎涓撶敤) - /// </summary> - /// <param name="deleteKey">闇�瑕佽鍒犻櫎鐨勫崱鐗囦富閿�</param> - private void ResetDeviceCardControlLocation(string deleteKey) - { - if (this.dicDeviceCardControl.ContainsKey(deleteKey) == false) - { - //濡傛灉鍒楄〃閲岄潰娌℃湁杩欎釜鎺т欢鐨勮瘽 - return; - } - var deleteContr = this.dicDeviceCardControl[deleteKey]; - - //璁惧璁℃暟 - int contrCount = 0; - - bool canMove = false; - int YY = 0; - foreach (var mainkey in this.dicDeviceCardControl.Keys) - { - if (deleteKey == mainkey) - { - //濡傛灉宸茬粡鍒颁簡瑕佸垹闄ょ殑鍗$墖,鍒犻櫎鎺夊畠,鐒跺悗瀹冧箣鍚庣殑鍗$墖鍏ㄩ儴鍚戜笂绉诲姩 - canMove = true; - continue; - } - //璁惧璁℃暟 - contrCount++; - //鍗$墖宸﹀彸涓よ竟鏈�14鐨勪綑鐧�,姣忎袱涓悗,X杞撮噸缃� - int XX = 0; - if (contrCount % 2 == 1) - { - //绗竴涓浐瀹�44 - XX = this.GetPictrueRealSize(44); - } - else - { - //绗簩涓槸44+鎺т欢瀹藉害+20浣欑櫧 - XX = this.GetPictrueRealSize(44) + this.dicDeviceCardControl[mainkey].Width + this.GetPictrueRealSize(20); - } - - //姣忎袱涓箣鍚�,骞朵笖鏄涓�涓殑鏃跺��,Y杞撮�掑 - if (contrCount > 2 && contrCount % 2 == 1) - { - //姹傚晢 - int value = contrCount / 2; - //鎺т欢鐨勫簳閮ㄦ湁15鐨勯棿闅� - YY = value * (this.dicDeviceCardControl[mainkey].Height + this.GetPictrueRealSize(15)); - } - if (canMove == true) - { - //绉诲姩鎺т欢 - this.dicDeviceCardControl[mainkey].X = XX; - this.dicDeviceCardControl[mainkey].Y = YY; - } - } - //鍘绘壘涓�涓嬭繖涓帶浠剁殑鍒楄〃瀹瑰櫒 - var listView = deleteContr.Parent as FrameLayout; - - //鍒犻櫎鎺夐偅寮犲崱鐗囩殑涓婚敭 - deleteContr.RemoveFromParent(); - this.dicDeviceCardControl.Remove(deleteKey); - - //璋冩暣妗屽竷楂樺害 - if (listView.ChildrenCount >= 4) - { - bodyFrameLayout.Height = listView.GetChildren(listView.ChildrenCount - 1).Bottom; - listView.Height = bodyFrameLayout.Height; - this.listBodyContr.frameTable.Height = bodyFrameLayout.Bottom; - } - } - - #endregion - - #region 鈻� 鍦烘櫙鍒嗘敮___________________________ - - /// <summary> - /// 鏄剧ず鍦烘櫙 - /// </summary> - private void ShowScene() - { - //鍏堟竻绌虹紦瀛� - bodyFrameLayout.RemoveAll(); - bodyFrameLayout.Height = Application.GetRealHeight(750); - this.listBodyContr.RecoverTableHeight(); - this.dicSceneCardControl = new Dictionary<int, Controls.SceneCardControl>(); - this.dicDeviceCardControl = new Dictionary<string, Controls.DeviceCardCommon>(); - - var listScene = new List<SceneUI>(); - foreach (int sceneId in HdlRoomLogic.Current.NowMainPageRoom.ListSceneId) - { - var sceneUi = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId); - if (sceneUi == null) - { - //杩欎釜鍦烘櫙涓嶈浜� - continue; - } - listScene.Add(sceneUi); - } - - if (listScene.Count == 0) - { - //杩樻病鏈夊満鏅摝 - this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.NoScene_Tip)); - return; - } - //鍒楄〃鎺т欢 - var listSceneBackContr = new FrameLayout(); - listSceneBackContr.Height = bodyFrameLayout.Height; - bodyFrameLayout.AddChidren(listSceneBackContr); - - HdlThreadLogic.Current.RunThread(() => - { - //鍒濆鍖栧満鏅崱鐗囧垪琛ㄦ帶浠� - this.InitSceneListCardControl(listSceneBackContr, listScene); - }); - } - - /// <summary> - /// 鍒濆鍖栧満鏅崱鐗囧垪琛ㄦ帶浠� - /// </summary> - /// <param name="listSceneBackContr"></param> - private void InitSceneListCardControl(FrameLayout listSceneBackContr, List<SceneUI> listScene) - { - //鍦烘櫙璁℃暟 - int contrCount = 0; - //X杞村潗鏍�(鍥剧墖宸﹁竟鏈変綑鐧�) - int XX = this.GetPictrueRealSize(44); - //Y杞村潗鏍� - int YY = 0; - foreach (var sceneUi in listScene) - { - if (this.isRoomChanging == true || listSceneBackContr.Parent == null) - { - //鏀惧純鍒濆鍖栨帶浠� - return; - } - HdlThreadLogic.Current.RunMain(() => - { - //鍒濆鍖栧崱鐗� - var cardContr = new Controls.SceneCardControl(); - cardContr.X = XX; - cardContr.Y = YY; - listSceneBackContr.AddChidren(cardContr); - cardContr.InitControl(sceneUi); - //鍗$墖闇�瑕佽绉婚櫎鐨勪簨浠� - cardContr.CardNeedRemoveEvent += () => - { - //閲嶇疆璁惧鍗$墖鎺т欢鍧愭爣(鍗$墖闇�瑕佽鍒犻櫎涓撶敤) - this.ResetSceneCardControlLocation(sceneUi.Id); - }; - //璁惧璁℃暟 - contrCount++; - //姣忎袱涓悗,X杞撮噸缃� - XX = contrCount % 2 == 0 ? this.GetPictrueRealSize(44) : cardContr.Right + this.GetPictrueRealSize(20); - if (contrCount % 2 == 0) - { - //娌′袱涓箣鍚�,Y杞撮�掑 - YY = cardContr.Bottom + this.GetPictrueRealSize(15); - } - //鎺т欢璁板綍鍒扮紦瀛樹腑 - this.dicSceneCardControl[sceneUi.Id] = cardContr; - - if (contrCount == listScene.Count) - { - //璋冩暣妗屽竷楂樺害 - if (contrCount > 4) - { - bodyFrameLayout.Height = listSceneBackContr.GetChildren(listSceneBackContr.ChildrenCount - 1).Bottom; - listSceneBackContr.Height = bodyFrameLayout.Height; - this.listBodyContr.frameTable.Height = bodyFrameLayout.Bottom; - } - HdlThreadLogic.Current.RunThread(() => - { - //璁剧疆鐩墠鍦烘櫙鐨勫欢杩熺姸鎬� - this.SetSceneDelayTime(listSceneBackContr); - }); - } - }); - if (contrCount > 6) - { - //璁╁畠鍛堢幇涓�绉嶄竴娆℃�ф樉绀哄嚭鏉ョ殑鏁堟灉 - System.Threading.Thread.Sleep(50); - } - } - } - - /// <summary> - /// 璁剧疆鍦烘櫙鐨勫欢杩熺姸鎬� - /// </summary> - /// <param name="listSceneBackContr"></param> - private async void SetSceneDelayTime(FrameLayout listSceneBackContr) - { - await System.Threading.Tasks.Task.Delay(1500); - if (listSceneBackContr.Parent == null) - { - //鎺т欢宸茬粡琚Щ闄� - return; - } - //绛夊緟1.5绉掍箣鍚�,鑾峰彇寤惰繜鐘舵�� - var result = await Scene.CatDelaySceneAsync(); - if (result == null || result.catDelaySceneResponseData == null) - { - return; - } - if (listSceneBackContr.Parent == null) - { - //鎺т欢宸茬粡琚Щ闄� - return; - } - foreach (var data in result.catDelaySceneResponseData.DelayScenesList) - { - var sceneUi = HdlSceneLogic.Current.GetSceneUIBySceneId(data.ScenesId); - if (sceneUi == null) - { - continue; - } - if (this.dicSceneCardControl.ContainsKey(data.ScenesId) == false) - { - continue; - } - //淇敼鍓╀綑寤惰繜鏃堕棿 - sceneUi.RemainTime = data.RemainTime; - HdlThreadLogic.Current.RunMain(() => - { - //鍒锋柊鍗$墖淇℃伅 - this.dicSceneCardControl[data.ScenesId].RefreshControlInfo(sceneUi); - }); - } - } - - #endregion - - #region 鈻� 閲嶇疆鍦烘櫙鍗$墖鎺т欢鍧愭爣_______________ - - /// <summary> - /// 閲嶇疆鍦烘櫙鍗$墖鎺т欢鍧愭爣(鍗$墖闇�瑕佽鍒犻櫎涓撶敤) - /// </summary> - /// <param name="deleteKey">闇�瑕佽鍒犻櫎鐨勫崱鐗囦富閿�</param> - private void ResetSceneCardControlLocation(int deleteId) - { - if (this.dicSceneCardControl.ContainsKey(deleteId) == false) - { - //濡傛灉鍒楄〃閲岄潰娌℃湁杩欎釜鎺т欢鐨勮瘽 - return; - } - var deleteContr = this.dicSceneCardControl[deleteId]; - //璁惧璁℃暟 - int contrCount = 0; - - bool canMove = false; - int YY = 0; - foreach (var sceneId in this.dicSceneCardControl.Keys) - { - if (deleteId == sceneId) - { - //濡傛灉宸茬粡鍒颁簡瑕佸垹闄ょ殑鍗$墖,鍒犻櫎鎺夊畠,鐒跺悗瀹冧箣鍚庣殑鍗$墖鍏ㄩ儴鍚戜笂绉诲姩 - canMove = true; - continue; - } - //璁惧璁℃暟 - contrCount++; - //姣忎袱涓悗,X杞撮噸缃� - int XX = 0; - if (contrCount % 2 == 1) - { - //绗竴涓浐瀹�44 - XX = this.GetPictrueRealSize(44); - } - else - { - //绗簩涓槸44+鎺т欢瀹藉害+20浣欑櫧 - XX = this.GetPictrueRealSize(44) + this.dicSceneCardControl[sceneId].Width + this.GetPictrueRealSize(20); - } - - //姣忎袱涓箣鍚�,骞朵笖鏄涓�涓椂,Y杞撮�掑 - if (contrCount > 2 && contrCount % 2 == 1) - { - //姹傚晢 - int value = contrCount / 2; - //鎺т欢鐨勫簳閮ㄦ湁15鐨勯棿闅� - YY = value * (this.dicSceneCardControl[sceneId].Height + this.GetPictrueRealSize(15)); - } - if (canMove == true) - { - //绉诲姩鎺т欢 - this.dicSceneCardControl[sceneId].X = XX; - this.dicSceneCardControl[sceneId].Y = YY; - } - } - //鍘绘壘涓�涓嬭繖涓帶浠剁殑鍒楄〃瀹瑰櫒 - var listView = deleteContr.Parent as FrameLayout; - - //鍒犻櫎鎺夐偅寮犲崱鐗囩殑涓婚敭 - deleteContr.RemoveFromParent(); - this.dicSceneCardControl.Remove(deleteId); - - //璋冩暣妗屽竷楂樺害 - if (listView.ChildrenCount >= 4) - { - bodyFrameLayout.Height = listView.GetChildren(listView.ChildrenCount - 1).Bottom; - listView.Height = bodyFrameLayout.Height; - this.listBodyContr.frameTable.Height = bodyFrameLayout.Bottom; - } - } - - #endregion - - #region 鈻� 鍒锋柊妗屽竷鎺т欢_______________________ - - /// <summary> - /// 鍒锋柊璁惧妗屽竷鎺т欢 - /// </summary> - public void RefreshBodyView() - { - bodyFrameLayout.RemoveAll(); - - //璁╃晫闈㈠埆闂儊 - HdlThreadLogic.Current.RunMainInThread(() => - { - if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2) - { - //鍔熻兘 - this.ShowFunction(); - } - else - { - //鍦烘櫙 - this.ShowScene(); - } - }); - } - - #endregion - - #region 鈻� 鍒囨崲浣忓畢___________________________ - /// <summary> - /// 鍒囨崲浣忓畢 - /// </summary> - /// <param name="home">Home.</param> - private void ChangeResidence(House home) - { - HdlThreadLogic.Current.RunThread(() => - { - this.ShowProgressBar(); - - //鍒囨崲浣忓畢 - var result = HdlResidenceLogic.Current.SwitchResidence(home.Id); - - HdlThreadLogic.Current.RunMain(() => - { - if (result == true) - { - //鍒锋柊鐣岄潰 - this.ShowForm(); - } - this.CloseProgressBar(); - }); - }); - } - - #endregion - - #region 鈻� 涓�鑸澶囩姸鎬佷笂鎶__________________ - - /// <summary> - /// 娣诲姞涓�鑸澶囩姸鎬佷笂鎶ヤ簨浠� - /// </summary> - private void AddNormalDeviceReportEvent() - { - //璁惧灞炴�т笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊) - HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceStatus", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => - { - HdlThreadLogic.Current.RunMain(() => - { - //澶勭悊涓�鑸澶囩殑涓婃姤鏁版嵁 - string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report); - if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true) - { - //鍒锋柊鍗$墖淇℃伅 - var locadevice = LocalDevice.Current.GetDevice(mainKeys); - //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉 2020.05.09:鍒犻櫎Ack涓婚 - this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu(); - //鍒锋柊鎺т欢 - if (locadevice.Type != DeviceType.IASZone) - { - //浼犳劅鍣ㄤ笉闇�瑕佸睘鎬т笂鎶�(浣嗘槸閭d釜鐞冨瀷浼犳劅鍣ㄥ眳鐒朵細灞炴�т笂鎶�) - this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice); - } - else if (report.DeviceStatusReport.CluterID == 1) - { - //杩欎釜鏄數閲忔帹閫� - this.dicDeviceCardControl[mainKeys].RefreshBatteryStatu(); - } - } - }, ShowErrorMode.NO); - }); - - //璁惧鍦ㄧ嚎涓婃姤(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊) - HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceOnline", ReceiveComandDiv.A璁惧鍦ㄧ嚎涓婃姤, (report) => - { - HdlThreadLogic.Current.RunMain(() => - { - string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report); - if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true) - { - //鍒锋柊鍗$墖鐘舵�� - bool bolOnline = Common.LocalDevice.Current.CheckDeviceIsOnline(report); - this.dicDeviceCardControl[mainKeys].SetCardOnlineStatu(bolOnline); - return; - } - - }, ShowErrorMode.NO); - }); - } - - #endregion - - #region 鈻� 浼犳劅鍣ㄧ姸鎬佷笂鎶____________________ - - /// <summary> - /// 娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠� - /// </summary> - private void AddSensorDeviceReportEvent() - { - //浼犳劅鍣ㄤ笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊) - HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewSensor", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (report) => - { - HdlThreadLogic.Current.RunMain(() => - { - //澶勭悊浼犳劅鍣ㄤ笂鎶ユ暟鎹� - string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report); - if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true) - { - //寮�鍚崱鐗囬棯鐑佺壒鏁� - this.dicDeviceCardControl[mainKeys].StartCardLightAppeal(); - } - - }, ShowErrorMode.NO); - }); - } - - #endregion - - #region 鈻� 浼犳劅鍣ㄧ姸鎬佽繕鍘焈____________________ - - /// <summary> - /// 寮�鍚紶鎰熷櫒鐘舵�佽繕鍘熺殑绾跨▼ - /// </summary> - private void StartRecoverSenorStatuThread() - { - HdlThreadLogic.Current.RunThread(() => - { - while (this.Parent != null) - { - try - { - var dicControl = this.dicDeviceCardControl; - foreach (var contr in dicControl.Values) - { - //濡傛灉鏄紶鎰熷櫒,鍒欏埛鏂扮姸鎬� - if (contr.device.Type == DeviceType.IASZone && contr.Parent != null - && ((IASZone)contr.device).iASInfo == null) - { - HdlThreadLogic.Current.RunMain(() => - { - //璁惧鐘舵�佸繀椤诲埛鏂� - string statuText = HdlDeviceOtherLogic.Current.GetDeviceStatu(contr.device); - contr.SetDeviceStatuText(statuText); - //浼犳劅鍣ㄥ垏鎹负鐏拌壊鐘舵�� - contr.SwitchCardStatuAppeal(false); - - }, ShowErrorMode.NO); - } - } - System.Threading.Thread.Sleep(8000); - } - catch { System.Threading.Thread.Sleep(3000); } - } - }); - } - - #endregion - - #region 鈻� 鍒囨崲妤煎眰___________________________ - - /// <summary> - /// 鏄剧ず閫夋嫨妤煎眰鐨勭晫闈� - /// </summary> - private void ShowSelectFloorForm(NormalViewControl btnFloor) - { - var floorFL = new Category.SelectFloorForm(); - floorFL.CurFloorId = Config.Instance.Home.CurrentFloorId; - this.AddChidren(floorFL); - floorFL.Init(35, 153); - floorFL.FloorAction = (floorId) => - { - btnFloor.Text = HdlResidenceLogic.Current.GetFloorNameById(floorId); - Config.Instance.Home.CurrentFloorId = floorId; - HdlRoomLogic.Current.NowMainPageRoom = HdlRoomLogic.Current.GetLoveRoom(); - //鍒嗙被鐣岄潰闇�瑕佸埛鏂� - UserView.UserPage.Instance.RefreshCategoryForm = true; - this.ShowForm(); - }; - } - - #endregion - - #region 鈻� 鐣岄潰鍏抽棴___________________________ - - /// <summary> - /// 鐣岄潰鍏抽棴 - /// </summary> - public override void CloseFormBefore() - { - //鎶婇潤鎬佸彉閲忕殑杩欎釜涓滆タ缃┖ - Instance = null; - - HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceOnline"); - HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceStatus"); - HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewSensor"); - - base.CloseFormBefore(); - } - - #endregion - - #region 鈻� 涓�鑸柟娉昣__________________________ - - /// <summary> - /// 妫�娴嬫槸鍚︾粦瀹氭湁缃戝叧 - /// </summary> - private bool CheckHadBindGateway() - { - //鑾峰彇鏈湴宸茬粡缁戝畾鐨勭綉鍏� - var gatewayList = HdlGatewayLogic.Current.GetAllLocalGateway(); - if (gatewayList.Count == 0) - { - return false; - } - return true; - } - - #endregion - - #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________ - - /// <summary> - /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠� - /// </summary> - public override int FormActionAgainEvent() - { - CommonPage.Instance.IsDrawerLockMode = false; - return 1; - } - - #endregion - } + public static HomeMainPageForm Instance; + /// <summary> + /// 鏁翠釜鐣岄潰鐨勪笂涓嬫粦鍔ㄦ帶浠� + /// </summary> + private VerticalFrameControl listBodyContr = null; + /// <summary> + /// 鎴块棿鐨勬粦鍔ㄥ鍣ㄦ帶浠� + /// </summary> + private HorizontalPages roomPageView = null; + /// <summary> + /// 璁惧鍗$墖鎺т欢(涓婚敭涓�:璁惧涓婚敭) + /// </summary> + private Dictionary<string, Controls.DeviceCardCommon> dicDeviceCardControl = new Dictionary<string, Controls.DeviceCardCommon>(); + /// <summary> + /// 鍦烘櫙鍗$墖鎺т欢(涓婚敭涓�:鍦烘櫙ID) + /// </summary> + private Dictionary<int, Controls.SceneCardControl> dicSceneCardControl = new Dictionary<int, Controls.SceneCardControl>(); + /// <summary> + /// 妤煎眰鍚嶅瓧鎺т欢 + /// </summary> + private NormalViewControl btnFloorName = null; + /// <summary> + /// 鎴块棿姝e湪鍙樻洿涓� + /// </summary> + private bool isRoomChanging = false; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐣岄潰鏄剧ず + /// </summary> + public void ShowForm() + { + this.FormID = "HomeMainPageForm"; + Instance = this; + + //鍏堝垵濮嬪寲宸︽粦鎴块棿鍒楄〃鐣岄潰(鍦ㄥ弽灏勯噷闈㈠垵濮嬪寲) + if (LeftListRoomViewFrom.Instance == null) { } + + //鏁翠釜鑳屾櫙鐨勪笂涓嬫粦鍔ㄦ帶浠� + if (this.listBodyContr == null) + { + this.listBodyContr = new VerticalFrameControl(); + listBodyContr.Height = this.Height; + listBodyContr.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; + this.AddChidren(listBodyContr); + } + else + { + //娓呴櫎鍏ㄩ儴 + this.listBodyContr.frameTable.RemoveAll(); + listBodyContr.RecoverTableHeight(); + } + + //鍒濆鍖栧ご閮ㄦ帶浠� + this.InitTopFrameLayoutControl(); + //鍒濆鍖栦腑闂存帶浠� + this.InitMidFrameLayoutControl(); + //娣诲姞璁惧鐘舵�佷笂鎶ヤ簨浠� + this.AddNormalDeviceReportEvent(); + //娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠� + this.AddSensorDeviceReportEvent(); + //寮�鍚紶鎰熷櫒鐘舵�佽繕鍘熺殑绾跨▼ + this.StartRecoverSenorStatuThread(); + } + + /// <summary> + /// 鍒濆鍖栧ご閮ㄦ帶浠� + /// </summary> + private void InitTopFrameLayoutControl() + { + //澶撮儴瀹瑰櫒 + base.topFrameLayout = new NormalFrameLayout(); + topFrameLayout.Y = Application.GetRealHeight(60); + topFrameLayout.Height = Application.GetRealHeight(127); + topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; + listBodyContr.frameTable.AddChidren(topFrameLayout); + + //妤煎眰鍥炬爣 + var btnFloorIcon = new IconViewControl(69); + btnFloorIcon.X = ControlCommonResourse.XXLeft; + btnFloorIcon.Gravity = Gravity.CenterVertical; + btnFloorIcon.UnSelectedImagePath = "Item/Floor.png"; + topFrameLayout.AddChidren(btnFloorIcon); + + //鎷ユ湁妤煎眰 + this.btnFloorName = null; + if (Config.Instance.Home.FloorDics.Count > 0) + { + //鎷ユ湁妤煎眰鐨勬椂鍊�,鐐瑰嚮鎵嶆湁鏁� + btnFloorIcon.ButtonClickEvent += (sender, e) => + { + //鏄剧ず閫夋嫨妤煎眰鐨勭晫闈� + this.ShowSelectFloorForm(btnFloorName); + }; + + //妤煎眰鍚� + this.btnFloorName = new NormalViewControl(500, 100, true); + btnFloorName.X = btnFloorIcon.Right; + btnFloorName.Gravity = Gravity.CenterVertical; + btnFloorName.TextColor = ZigbeeColor.Current.GXCTextColor; + btnFloorName.Text = Config.Instance.Home.GetCurrentFloorName; + btnFloorName.IsBold = true; + btnFloorName.Width = btnFloorName.GetRealWidthByText() + Application.GetRealWidth(20); + topFrameLayout.AddChidren(btnFloorName); + btnFloorName.ButtonClickEvent += (sender, e) => + { + //鏄剧ず閫夋嫨妤煎眰鐨勭晫闈� + this.ShowSelectFloorForm(btnFloorName); + }; + } + + //鍙瀵硅蹇嵎鏂瑰紡 + Shared.Phone.Device.VideoIntercom.VideoMachine.AccountSupportVideo(topFrameLayout); + //瀹夐槻蹇嵎鏂瑰紡 + if (UserCenterResourse.ResidenceOption.SafetyShortcut) + { + var btnSafety = new Controls.SafetyShortcutControl(); + btnSafety.X = Application.GetRealWidth(860); + btnSafety.Gravity = Gravity.CenterVertical; + topFrameLayout.AddChidren(btnSafety); + } + //娑堟伅鍥炬爣 + var btnMessage = new MessageManagementControl(); + btnMessage.X = Application.GetRealWidth(953); + btnMessage.Gravity = Gravity.CenterVertical; + btnMessage.UnSelectedImagePath = "Item/Message.png"; + btnMessage.SelectedImagePath = "Item/MessageSelected.png"; + topFrameLayout.AddChidren(btnMessage); + + //浣忓畢鍚嶅瓧 + var btnHouseName = new NormalViewControl(700, 95, true); + btnHouseName.X = ControlCommonResourse.XXLeft; + btnHouseName.Y = Application.GetRealHeight(161); + btnHouseName.TextSize = 24; + btnHouseName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor; + btnHouseName.IsBold = true; + btnHouseName.Text = Config.Instance.Home.Name; + btnHouseName.Width = btnHouseName.GetRealWidthByText() + Application.GetRealWidth(100); + this.listBodyContr.frameTable.AddChidren(btnHouseName); + + //鍒囨崲浣忓畢 + btnHouseName.MouseLongEventHandler += (sender, e) => + { + if (Config.Instance.HomeFilePathList.Count == 0) + { + //褰撳墠浣忓畢涓虹┖锛岃鍏堝缓绔嬩綇瀹� + this.ShowMassage(ShowMsgType.Remind, Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst)); + } + else + { + var selectHouse = new Category.SelectHouseForm(); + selectHouse.Init(); + selectHouse.HouseAction = (houseId) => + { + //鍒囨崲浣忓畢 + this.ChangeResidence(HdlResidenceLogic.Current.GetHouseByHouseId(houseId)); + }; + } + }; + } + + /// <summary> + /// 鍒濆鍖栦腑闂存帶浠� + /// </summary> + private void InitMidFrameLayoutControl() + { + //鎴愬憳韬唤涓嶅厑璁告坊鍔犵綉鍏� + if (UserCenterResourse.UserInfo.AuthorityNo == 3) + { + //鍒濆鍖栧満鏅�,鍔熻兘鐨勫垏鎹㈡帶浠� + this.InitSceneFunctionSwitchControl(); + //鍒濆鍖栨埧闂存粦鍔ㄦ帶浠� + this.InitRoomHorizontalPagesControl(); + return; + } + + //妫�娴嬫槸鍚︾粦瀹氭湁缃戝叧 + if (Common.Config.Instance.Home.IsVirtually == false && this.CheckHadBindGateway() == false) + { + //鏄剧ず娌℃湁缁戝畾杩囩綉鍏崇殑鐣岄潰 + this.ShowNoGatewayTip(); + } + else + { + //鍒濆鍖栧満鏅�,鍔熻兘鐨勫垏鎹㈡帶浠� + this.InitSceneFunctionSwitchControl(); + //鍒濆鍖栨埧闂存粦鍔ㄦ帶浠� + this.InitRoomHorizontalPagesControl(); + } + } + + /// <summary> + /// 鍒濆鍖栧満鏅�,鍔熻兘鐨勫垏鎹㈡帶浠� + /// </summary> + private void InitSceneFunctionSwitchControl() + { + //鍔熻兘鍜屽満鏅殑鑳屾櫙鍥� + var functionSceneView = new FrameLayout(); + functionSceneView.Y = Application.GetRealHeight(861); + functionSceneView.Width = Application.GetRealWidth(832); + functionSceneView.Height = Application.GetRealHeight(167); + functionSceneView.Gravity = Gravity.CenterHorizontal; + functionSceneView.BackgroundImagePath = "Item/SceneFunctionBG.png"; + this.listBodyContr.frameTable.AddChidren(functionSceneView); + + //鍦烘櫙 + var btnScene = new NormalViewControl(350, 100, true); + btnScene.X = Application.GetRealWidth(30); + btnScene.Y = Application.GetRealHeight(12); + btnScene.TextColor = ZigbeeColor.Current.GXCTextGrayColor3; + btnScene.SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor; + btnScene.TextID = R.MyInternationalizationString.Scence; + btnScene.TextSize = 15; + btnScene.TextAlignment = TextAlignment.Center; + functionSceneView.AddChidren(btnScene); + + //鍔熻兘 + var btnFunction = new NormalViewControl(360, 100, true); + btnFunction.X = Application.GetRealWidth(430); + btnFunction.Y = Application.GetRealHeight(12); + btnFunction.TextColor = ZigbeeColor.Current.GXCTextGrayColor3; + btnFunction.SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor; + btnFunction.TextSize = 15; + btnFunction.TextID = R.MyInternationalizationString.Function; + btnFunction.TextAlignment = TextAlignment.Center; + functionSceneView.AddChidren(btnFunction); + if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 1) + { + btnScene.IsSelected = true; + btnScene.TextSize = 17; + btnScene.IsBold = true; + } + else if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2) + { + btnFunction.IsSelected = true; + btnFunction.TextSize = 17; + btnFunction.IsBold = true; + } + + //鍔熻兘鍜屽満鏅痓odyView + this.bodyFrameLayout = new NormalFrameLayout(); + bodyFrameLayout.Y = functionSceneView.Bottom; + bodyFrameLayout.Height = this.listBodyContr.frameTable.Height - functionSceneView.Bottom; + bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; + this.listBodyContr.frameTable.AddChidren(bodyFrameLayout); + + //閫夋嫨鍔熻兘鍒嗘爮 + btnFunction.ButtonClickEvent += (sender, e) => + { + if (btnFunction.IsSelected == true) + { + return; + } + //鍔熻兘鍒嗘敮閫夋嫨 + UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 2; + + btnScene.IsSelected = false; + btnScene.TextSize = 15; + btnScene.IsBold = false; + + btnFunction.IsSelected = true; + btnFunction.TextSize = 17; + btnFunction.IsBold = true; + //鍒锋柊璁惧妗屽竷鎺т欢 + this.RefreshBodyView(); + }; + //閫夋嫨鍦烘櫙鍒嗘爮 + btnScene.ButtonClickEvent += (sender, e) => + { + if (btnScene.IsSelected == true) + { + return; + } + //鍦烘櫙鍒嗘敮閫夋嫨 + UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex = 1; + + btnScene.IsSelected = true; + btnScene.TextSize = 17; + btnScene.IsBold = true; + + btnFunction.IsSelected = false; + btnFunction.TextSize = 15; + btnFunction.IsBold = false; + //鍒锋柊璁惧妗屽竷鎺т欢 + this.RefreshBodyView(); + }; + } + + /// <summary> + /// 鎻愮ず鐢ㄦ埛娌℃湁缃戝叧锛屽苟蹇�熻烦杞埌娣诲姞缃戝叧鐣岄潰 + /// </summary> + private void ShowNoGatewayTip() + { + var bg = new PicViewControl(717, 478); + bg.Y = Application.GetRealHeight(302); + bg.Gravity = Gravity.CenterHorizontal; + bg.UnSelectedImagePath = "Item/NoBindGW.png"; + this.listBodyContr.frameTable.AddChidren(bg); + + var tip = new NormalViewControl(this.GetPictrueRealSize(717), this.GetPictrueRealSize(58), false); + tip.Y = bg.Bottom + Application.GetRealHeight(35); + tip.Gravity = Gravity.CenterHorizontal; + tip.TextID = R.MyInternationalizationString.NewAccountNeedBingGW; + tip.TextColor = ZigbeeColor.Current.GXCTextGrayColor; + tip.TextAlignment = TextAlignment.Center; + this.listBodyContr.frameTable.AddChidren(tip); + + var addBG = new PicViewControl(971, 366); + addBG.Y = tip.Bottom + Application.GetRealHeight(176); + addBG.UnSelectedImagePath = "Item/VirtualFrame.png"; + addBG.Gravity = Gravity.CenterHorizontal; + this.listBodyContr.frameTable.AddChidren(addBG); + + var addGatewayBtn = new IconViewControl(89); + addGatewayBtn.Y = tip.Bottom + Application.GetRealHeight(271); + addGatewayBtn.UnSelectedImagePath = "Item/Add_GW.png"; + addGatewayBtn.Gravity = Gravity.CenterHorizontal; + this.listBodyContr.frameTable.AddChidren(addGatewayBtn); + addGatewayBtn.ButtonClickEvent += (sender, e) => + { + var form = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm(); + form.AddForm(); + }; + + var addTip = new PicViewControl(717, 58); + addTip.Y = addGatewayBtn.Bottom + Application.GetRealHeight(23); + addTip.Gravity = Gravity.CenterHorizontal; + addTip.TextID = R.MyInternationalizationString.AddSmartGW; + addTip.TextColor = ZigbeeColor.Current.GXCTextBlackColor; + addTip.TextAlignment = TextAlignment.Center; + this.listBodyContr.frameTable.AddChidren(addTip); + + addTip.ButtonClickEvent += (sender, e) => + { + var form = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm(); + form.AddForm(); + }; + } + + #endregion + + #region 鈻� 鍒濆鍖栨埧闂存粦鍔ㄦ帶浠禵________________ + + /// <summary> + /// 鍒濆鍖栨埧闂存粦鍔ㄦ帶浠� + /// </summary> + private void InitRoomHorizontalPagesControl() + { + //宸﹀彸婊戝姩鎺т欢鐨勮儗鏅鍣� + var frameBack = new FrameLayout(); + frameBack.Y = Application.GetRealHeight(302); + frameBack.Width = this.Width; + frameBack.Height = Application.GetRealHeight(478); + this.listBodyContr.frameTable.AddChidren(frameBack); + + //鎴块棿婊戝姩鎺т欢宸﹁竟鐨勮櫄鎷熷浘鐗� + var mLeftImageView = new ImageView(); + mLeftImageView.ImagePath = "RoomIcon/19.jpg"; + mLeftImageView.Radius = (uint)Application.GetRealHeight(17); + mLeftImageView.Width = Application.GetRealWidth(717); + mLeftImageView.Height = Application.GetRealHeight(478); + //鎴块棿婊戝姩鎺т欢鍙宠竟鐨勮櫄鎷熷浘鐗� + var mRightImageView = new ImageView(); + mRightImageView.ImagePath = "RoomIcon/19.jpg"; + mRightImageView.Radius = (uint)Application.GetRealHeight(17); + mRightImageView.Width = mLeftImageView.Width; + mRightImageView.Height = mLeftImageView.Height; + + this.roomPageView = new HorizontalPages(); + roomPageView.Width = frameBack.Width; + roomPageView.Height = frameBack.Height; + frameBack.AddChidren(roomPageView); + //绐佸嚭杈硅窛 + roomPageView.TCBJ = Application.GetRealWidth(124); + //涓や釜page涔嬮棿鐨勯棿璺� + roomPageView.JMBJ = Application.GetRealWidth(58); + //鍦ㄨ繖涓帶浠剁殑涓嬮潰娣诲姞闃村奖鏁堟灉 + var btnRoomBottomShadow = new NormalViewControl(717, 81, true); + btnRoomBottomShadow.Y = frameBack.Bottom; + btnRoomBottomShadow.Gravity = Gravity.CenterHorizontal; + btnRoomBottomShadow.UnSelectedImagePath = "Room/RoomCardShadow.png"; + this.listBodyContr.frameTable.AddChidren(btnRoomBottomShadow); + + //璁剧疆鎺у埗鏈�宸﹀拰鏈�鍙�2杈瑰~鍏呯殑鍋囪儗鏅疺iew锛屼笉璁剧疆涓嶆樉绀猴紝闇�瑕佸湪AddChidren 鍓嶈皟鐢ㄨ鏂规硶 + roomPageView.SetLeftAndRightImageView(mLeftImageView, mRightImageView); + + //褰撳墠鎴块棿 + var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId); + if (HdlRoomLogic.Current.NowMainPageRoom == null) + { + HdlRoomLogic.Current.NowMainPageRoom = listRoom[0]; + } + var curIndex = 0; + for (int i = 0; i < listRoom.Count; i++) + { + var roomView = new RoomView(0, 0); + roomPageView.AddChidren(roomView); + roomView.Init(listRoom[i]); + + if (listRoom[i].Id == HdlRoomLogic.Current.NowMainPageRoom.Id) + { + //褰撳墠鎴块棿,鍒欐樉绀洪偅浜涙暟鎹嚭鏉� + roomView.HideName(false); + //褰撳墠绱㈠紩 + curIndex = i; + } + else + { + roomView.HideName(true); + } + } + + //鍦ㄦ埧闂村崱鐗囧乏杈规坊鍔犻伄缃� + var btnRoomLeftShadow = new FrameLayout(); + btnRoomLeftShadow.Width = Application.GetRealWidth(124); + btnRoomLeftShadow.Height = roomPageView.Height - roomPageView.JMBJ * 2; + btnRoomLeftShadow.Gravity = Gravity.CenterVertical; + btnRoomLeftShadow.BackgroundColor = 0x1c000000; + btnRoomLeftShadow.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight); + //frameBack.AddChidren(btnRoomLeftShadow);//鏆傛椂涓嶅姞閬僵 + + //鍦ㄦ埧闂村崱鐗囧彸杈规坊鍔犻伄缃� + var btnRoomRightShadow = new FrameLayout(); + btnRoomRightShadow.Width = btnRoomLeftShadow.Width; + btnRoomRightShadow.Height = btnRoomLeftShadow.Height; + btnRoomRightShadow.X = Application.GetRealWidth(956); + btnRoomRightShadow.Gravity = Gravity.CenterVertical; + btnRoomRightShadow.BackgroundColor = btnRoomLeftShadow.BackgroundColor; + btnRoomRightShadow.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerBottomLeft); + //frameBack.AddChidren(btnRoomRightShadow);//鏆傛椂涓嶅姞閬僵 + + //鎺т欢寮�濮嬫粦鍔ㄧ殑浜嬩欢 + roomPageView.StartScrollAction += () => + { + this.isRoomChanging = true; + //寮�濮嬫粦鍔ㄦ椂,闅愯棌褰撳墠鐨勬暟鎹樉绀� + (roomPageView.GetChildren(roomPageView.PageIndex) as RoomView).HideName(true); + btnRoomLeftShadow.Visible = false; + btnRoomRightShadow.Visible = false; + btnRoomBottomShadow.Visible = false; + }; + roomPageView.EndScrollAction += () => + { + curIndex = roomPageView.PageIndex; + //鍓嶄竴寮犲崱鐗� + if (roomPageView.GetChildren(curIndex - 1) != null) + { + (roomPageView.GetChildren(curIndex - 1) as RoomView).HideName(true); + } + //褰撳墠鍗$墖 + if (roomPageView.GetChildren(curIndex) != null) + { + (roomPageView.GetChildren(curIndex) as RoomView).HideName(false); + } + //涓嬩竴寮犲崱鐗� + if (roomPageView.GetChildren(curIndex + 1) != null) + { + (roomPageView.GetChildren(curIndex + 1) as RoomView).HideName(true); + } + + btnRoomLeftShadow.Visible = true; + btnRoomRightShadow.Visible = true; + btnRoomBottomShadow.Visible = true; + //鍒囨崲褰撳墠鎴块棿 + HdlRoomLogic.Current.NowMainPageRoom = listRoom[curIndex]; + //鍒锋柊璁惧妗屽竷鎺т欢 + this.isRoomChanging = false; + this.RefreshBodyView(); + }; + //璁剧疆鎴块棿鐨勫垵濮嬮�夋嫨 + roomPageView.PageIndex = curIndex; + //濡傛灉绱㈠紩鏄涓�涓椂锛屽畠瑙﹀彂涓嶄簡浜嬩欢,闇�瑕佹墜鍔ㄨЕ鍙� + if (curIndex == 0) + { + roomPageView.EndScrollAction(); + } + } + + /// <summary> + /// 璁剧疆鎴块棿鐨勬粦鍔ㄥ鍣ㄦ帶浠堕�夋嫨鎸囧畾鐨勬埧闂�(渚涘閮ㄨ皟鐢�) + /// </summary> + /// <param name="room"></param> + public void SetRoomPageViewSelect(Room room) + { + if (roomPageView == null) + { + //褰撴病鏈夌粦瀹氭湁缃戝叧,宸︽粦鏃�,鐐瑰嚮鎴块棿鍒楄〃,鍒欎笉楦熷畠 + return; + } + var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId); + for (int i = 0; i < listRoom.Count; i++) + { + if (room.Id == listRoom[i].Id) + { + if (roomPageView.PageIndex != i) + { + //涓嶇浉鍚屾椂鎵嶅埛鏂� + roomPageView.PageIndex = i; + } + break; + } + } + //閲嶇疆涓�涓嬫ゼ灞傚悕瀛� + if (this.btnFloorName != null) + { + btnFloorName.Text = Config.Instance.Home.GetCurrentFloorName; + } + } + + #endregion + + #region 鈻� 鍔熻兘鍒嗘敮___________________________ + + /// <summary> + /// 鏄剧ず鍔熻兘 + /// </summary> + private void ShowFunction() + { + //鍏堟竻绌虹紦瀛� + bodyFrameLayout.RemoveAll(); + bodyFrameLayout.Height = Application.GetRealHeight(750); + this.listBodyContr.RecoverTableHeight(); + this.dicSceneCardControl = new Dictionary<int, Controls.SceneCardControl>(); + this.dicDeviceCardControl = new Dictionary<string, Controls.DeviceCardCommon>(); + + var listDevice = new List<CommonDevice>(); + foreach (var mainkeys in HdlRoomLogic.Current.NowMainPageRoom.ListDevice) + { + var device = LocalDevice.Current.GetDevice(mainkeys); + //鍒ゆ柇璇ヨ澶囪兘鍚︽樉绀哄湪涓婚〉 + if (LocalDevice.Current.CanShowInHomeHomeMainPage(device) == false) + { + continue; + } + listDevice.Add(device); + } + + //褰撳墠鎴块棿鐨勮澶囨暟 + if (listDevice.Count == 0) + { + //杩樻病鏈夊姛鑳藉摝 + this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.NoFunction_Tip)); + return; + } + //璁惧鍒楄〃瀹瑰櫒鎺т欢 + var listDeviceBackContr = new FrameLayout(); + listDeviceBackContr.Height = bodyFrameLayout.Height; + bodyFrameLayout.AddChidren(listDeviceBackContr); + + HdlThreadLogic.Current.RunThread(() => + { + //鍒濆鍖栬澶囧崱鐗囧垪琛ㄦ帶浠� + this.InitDeviceListCardControl(listDeviceBackContr, listDevice); + }); + } + + /// <summary> + /// 鍒濆鍖栬澶囧崱鐗囧垪琛ㄦ帶浠� + /// </summary> + /// <param name="listDeviceBackContr"></param> + private void InitDeviceListCardControl(FrameLayout listDeviceBackContr, List<CommonDevice> listDevice) + { + //璁惧璁℃暟 + int contrCount = 0; + //X杞村潗鏍�(鍥剧墖宸﹁竟鏈変綑鐧�) + int XX = this.GetPictrueRealSize(44); + //Y杞村潗鏍� + int YY = 0; + var listContr = new List<Controls.DeviceCardCommon>(); + foreach (var device in listDevice) + { + if (this.isRoomChanging == true || listDeviceBackContr.Parent == null) + { + //鏀惧純鍒濆鍖栨帶浠� + return; + } + HdlThreadLogic.Current.RunMain(() => + { + Controls.DeviceCardCommon cardContr = null; + //绐楀笜 + if (device.Type == DeviceType.WindowCoveringDevice) + { + cardContr = new Controls.DeviceCurtainCardControl(); + } + //缁х數鍣� + else if (device.Type == DeviceType.OnOffOutput) + { + cardContr = new Controls.DeviceRelayCardControl(); + } + //绌烘皵寮�鍏� + else if (device.Type == DeviceType.AirSwitch) + { + cardContr = new Controls.DeviceAirSwitchCardControl(); + } + //绌鸿皟 + else if (device.Type == DeviceType.Thermostat) + { + cardContr = new Controls.DeviceAcCardControl(); + } + //鏂伴 + else if (device.Type == DeviceType.FreshAir) + { + cardContr = new Controls.DeviceFreshAirCardControl(); + } + // PM2.5 + else if (device.Type == DeviceType.PMSensor) + { + cardContr = new Controls.DevicePmSensorCardControl(); + } + // 鏅捐。鏋� + else if (device.Type == DeviceType.Airer) + { + cardContr = new Controls.DeviceAirerCardControl(); + } + //褰╃伅(璋冨厜鍣�) + else if (device.Type == DeviceType.DimmableLight) + { + cardContr = new Controls.DeviceColorLightCardControl(); + } + //浼犳劅鍣� + else if (device.Type == DeviceType.IASZone) + { + cardContr = new Controls.DeviceSensorCardControl(); + } + //娓╂箍搴� + else if (device.Type == DeviceType.TemperatureSensor) + { + cardContr = new Controls.DeviceTemperatureCardControl(); + } + //闂ㄩ攣 + else if (device.Type == DeviceType.DoorLock) + { + cardContr = new Controls.DeviceDoorLockCardControl(); + } + //鑹叉俯鐏� + else if (device.Type == DeviceType.ColorTemperatureLight) + { + cardContr = new Controls.DeviceColorTemperatureCardControl(); + } + //鏃犳硶璇嗗埆 + else + { + cardContr = new Controls.DeviceCardCommon(); + } + + //鍒濆鍖栧崱鐗� + cardContr.X = XX; + cardContr.Y = YY; + listDeviceBackContr.AddChidren(cardContr); + cardContr.InitControl(device, HdlRoomLogic.Current.NowMainPageRoom); + //鍗$墖闇�瑕佽绉婚櫎鐨勪簨浠� + cardContr.CardNeedRemoveEvent += () => + { + //閲嶇疆璁惧鍗$墖鎺т欢鍧愭爣(鍗$墖闇�瑕佽鍒犻櫎涓撶敤) + this.ResetDeviceCardControlLocation(LocalDevice.Current.GetDeviceMainKeys(device)); + }; + //璁惧璁℃暟 + contrCount++; + //鍗$墖宸﹀彸涓よ竟鏈�14鐨勪綑鐧�,姣忎袱涓悗,X杞撮噸缃� + XX = contrCount % 2 == 0 ? this.GetPictrueRealSize(44) : cardContr.Right + this.GetPictrueRealSize(20); + if (contrCount % 2 == 0) + { + //娌′袱涓箣鍚�,Y杞撮�掑 + YY = cardContr.Bottom + this.GetPictrueRealSize(15); + } + //鎺т欢璁板綍鍒扮紦瀛樹腑 + this.dicDeviceCardControl[LocalDevice.Current.GetDeviceMainKeys(device)] = cardContr; + //鍔犵紦瀛�,鐒跺悗鍙戝懡浠� + listContr.Add(cardContr); + + if (contrCount == listDevice.Count) + { + //璋冩暣妗屽竷澶у皬 + if (contrCount > 4) + { + bodyFrameLayout.Height = listDeviceBackContr.GetChildren(listDeviceBackContr.ChildrenCount - 1).Bottom; + listDeviceBackContr.Height = bodyFrameLayout.Height; + this.listBodyContr.frameTable.Height = bodyFrameLayout.Bottom; + } + HdlThreadLogic.Current.RunThread(() => + { + while (listDeviceBackContr.Parent != null) + { + bool hadSend = false; + for (int i = 0; i < listContr.Count; i++) + { + if (listDeviceBackContr.Parent == null) + { + return; + } + //濡傛灉杩樻病鏈夋帴鏀跺埌鏁版嵁,鍒欏啀娆″彂閫� + if (listContr[i].ReceiveResponeResultStatu() == false) + { + //鍙戦�佽幏鍙栫姸鎬佺殑鍛戒护 + listContr[i].SendStatuComand(); + hadSend = true; + System.Threading.Thread.Sleep(200); + } + } + if (hadSend == false) + { + //濡傛灉宸茬粡鍏ㄩ儴鍥炶矾閮芥帴鏀朵簡缃戝叧鍥炲,鍒欎笉鍐嶄簩娆″彂閫� + break; + } + System.Threading.Thread.Sleep(2000); + } + }, ShowErrorMode.NO); + } + }); + if (contrCount > 6) + { + //璁╁畠鍛堢幇涓�绉嶇洿鎺ヤ竴娆℃�у埛鍑烘潵鐨勬晥鏋� + System.Threading.Thread.Sleep(50); + } + } + } + + #endregion + + #region 鈻� 閲嶇疆璁惧鍗$墖鎺т欢鍧愭爣_______________ + + /// <summary> + /// 閲嶇疆璁惧鍗$墖鎺т欢鍧愭爣(鍗$墖闇�瑕佽鍒犻櫎涓撶敤) + /// </summary> + /// <param name="deleteKey">闇�瑕佽鍒犻櫎鐨勫崱鐗囦富閿�</param> + private void ResetDeviceCardControlLocation(string deleteKey) + { + if (this.dicDeviceCardControl.ContainsKey(deleteKey) == false) + { + //濡傛灉鍒楄〃閲岄潰娌℃湁杩欎釜鎺т欢鐨勮瘽 + return; + } + var deleteContr = this.dicDeviceCardControl[deleteKey]; + + //璁惧璁℃暟 + int contrCount = 0; + + bool canMove = false; + int YY = 0; + foreach (var mainkey in this.dicDeviceCardControl.Keys) + { + if (deleteKey == mainkey) + { + //濡傛灉宸茬粡鍒颁簡瑕佸垹闄ょ殑鍗$墖,鍒犻櫎鎺夊畠,鐒跺悗瀹冧箣鍚庣殑鍗$墖鍏ㄩ儴鍚戜笂绉诲姩 + canMove = true; + continue; + } + //璁惧璁℃暟 + contrCount++; + //鍗$墖宸﹀彸涓よ竟鏈�14鐨勪綑鐧�,姣忎袱涓悗,X杞撮噸缃� + int XX = 0; + if (contrCount % 2 == 1) + { + //绗竴涓浐瀹�44 + XX = this.GetPictrueRealSize(44); + } + else + { + //绗簩涓槸44+鎺т欢瀹藉害+20浣欑櫧 + XX = this.GetPictrueRealSize(44) + this.dicDeviceCardControl[mainkey].Width + this.GetPictrueRealSize(20); + } + + //姣忎袱涓箣鍚�,骞朵笖鏄涓�涓殑鏃跺��,Y杞撮�掑 + if (contrCount > 2 && contrCount % 2 == 1) + { + //姹傚晢 + int value = contrCount / 2; + //鎺т欢鐨勫簳閮ㄦ湁15鐨勯棿闅� + YY = value * (this.dicDeviceCardControl[mainkey].Height + this.GetPictrueRealSize(15)); + } + if (canMove == true) + { + //绉诲姩鎺т欢 + this.dicDeviceCardControl[mainkey].X = XX; + this.dicDeviceCardControl[mainkey].Y = YY; + } + } + //鍘绘壘涓�涓嬭繖涓帶浠剁殑鍒楄〃瀹瑰櫒 + var listView = deleteContr.Parent as FrameLayout; + + //鍒犻櫎鎺夐偅寮犲崱鐗囩殑涓婚敭 + deleteContr.RemoveFromParent(); + this.dicDeviceCardControl.Remove(deleteKey); + + //璋冩暣妗屽竷楂樺害 + if (listView.ChildrenCount >= 4) + { + bodyFrameLayout.Height = listView.GetChildren(listView.ChildrenCount - 1).Bottom; + listView.Height = bodyFrameLayout.Height; + this.listBodyContr.frameTable.Height = bodyFrameLayout.Bottom; + } + } + + #endregion + + #region 鈻� 鍦烘櫙鍒嗘敮___________________________ + + /// <summary> + /// 鏄剧ず鍦烘櫙 + /// </summary> + private void ShowScene() + { + //鍏堟竻绌虹紦瀛� + bodyFrameLayout.RemoveAll(); + bodyFrameLayout.Height = Application.GetRealHeight(750); + this.listBodyContr.RecoverTableHeight(); + this.dicSceneCardControl = new Dictionary<int, Controls.SceneCardControl>(); + this.dicDeviceCardControl = new Dictionary<string, Controls.DeviceCardCommon>(); + + var listScene = new List<SceneUI>(); + foreach (int sceneId in HdlRoomLogic.Current.NowMainPageRoom.ListSceneId) + { + var sceneUi = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId); + if (sceneUi == null) + { + //杩欎釜鍦烘櫙涓嶈浜� + continue; + } + listScene.Add(sceneUi); + } + + if (listScene.Count == 0) + { + //杩樻病鏈夊満鏅摝 + this.ShowNotDataImage(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.NoScene_Tip)); + return; + } + //鍒楄〃鎺т欢 + var listSceneBackContr = new FrameLayout(); + listSceneBackContr.Height = bodyFrameLayout.Height; + bodyFrameLayout.AddChidren(listSceneBackContr); + + HdlThreadLogic.Current.RunThread(() => + { + //鍒濆鍖栧満鏅崱鐗囧垪琛ㄦ帶浠� + this.InitSceneListCardControl(listSceneBackContr, listScene); + }); + } + + /// <summary> + /// 鍒濆鍖栧満鏅崱鐗囧垪琛ㄦ帶浠� + /// </summary> + /// <param name="listSceneBackContr"></param> + private void InitSceneListCardControl(FrameLayout listSceneBackContr, List<SceneUI> listScene) + { + //鍦烘櫙璁℃暟 + int contrCount = 0; + //X杞村潗鏍�(鍥剧墖宸﹁竟鏈変綑鐧�) + int XX = this.GetPictrueRealSize(44); + //Y杞村潗鏍� + int YY = 0; + foreach (var sceneUi in listScene) + { + if (this.isRoomChanging == true || listSceneBackContr.Parent == null) + { + //鏀惧純鍒濆鍖栨帶浠� + return; + } + HdlThreadLogic.Current.RunMain(() => + { + //鍒濆鍖栧崱鐗� + var cardContr = new Controls.SceneCardControl(); + cardContr.X = XX; + cardContr.Y = YY; + listSceneBackContr.AddChidren(cardContr); + cardContr.InitControl(sceneUi); + //鍗$墖闇�瑕佽绉婚櫎鐨勪簨浠� + cardContr.CardNeedRemoveEvent += () => + { + //閲嶇疆璁惧鍗$墖鎺т欢鍧愭爣(鍗$墖闇�瑕佽鍒犻櫎涓撶敤) + this.ResetSceneCardControlLocation(sceneUi.Id); + }; + //璁惧璁℃暟 + contrCount++; + //姣忎袱涓悗,X杞撮噸缃� + XX = contrCount % 2 == 0 ? this.GetPictrueRealSize(44) : cardContr.Right + this.GetPictrueRealSize(20); + if (contrCount % 2 == 0) + { + //娌′袱涓箣鍚�,Y杞撮�掑 + YY = cardContr.Bottom + this.GetPictrueRealSize(15); + } + //鎺т欢璁板綍鍒扮紦瀛樹腑 + this.dicSceneCardControl[sceneUi.Id] = cardContr; + + if (contrCount == listScene.Count) + { + //璋冩暣妗屽竷楂樺害 + if (contrCount > 4) + { + bodyFrameLayout.Height = listSceneBackContr.GetChildren(listSceneBackContr.ChildrenCount - 1).Bottom; + listSceneBackContr.Height = bodyFrameLayout.Height; + this.listBodyContr.frameTable.Height = bodyFrameLayout.Bottom; + } + HdlThreadLogic.Current.RunThread(() => + { + //璁剧疆鐩墠鍦烘櫙鐨勫欢杩熺姸鎬� + this.SetSceneDelayTime(listSceneBackContr); + }); + } + }); + if (contrCount > 6) + { + //璁╁畠鍛堢幇涓�绉嶄竴娆℃�ф樉绀哄嚭鏉ョ殑鏁堟灉 + System.Threading.Thread.Sleep(50); + } + } + } + + /// <summary> + /// 璁剧疆鍦烘櫙鐨勫欢杩熺姸鎬� + /// </summary> + /// <param name="listSceneBackContr"></param> + private async void SetSceneDelayTime(FrameLayout listSceneBackContr) + { + await System.Threading.Tasks.Task.Delay(1500); + if (listSceneBackContr.Parent == null) + { + //鎺т欢宸茬粡琚Щ闄� + return; + } + //绛夊緟1.5绉掍箣鍚�,鑾峰彇寤惰繜鐘舵�� + var result = await Scene.CatDelaySceneAsync(); + if (result == null || result.catDelaySceneResponseData == null) + { + return; + } + if (listSceneBackContr.Parent == null) + { + //鎺т欢宸茬粡琚Щ闄� + return; + } + foreach (var data in result.catDelaySceneResponseData.DelayScenesList) + { + var sceneUi = HdlSceneLogic.Current.GetSceneUIBySceneId(data.ScenesId); + if (sceneUi == null) + { + continue; + } + if (this.dicSceneCardControl.ContainsKey(data.ScenesId) == false) + { + continue; + } + //淇敼鍓╀綑寤惰繜鏃堕棿 + sceneUi.RemainTime = data.RemainTime; + HdlThreadLogic.Current.RunMain(() => + { + //鍒锋柊鍗$墖淇℃伅 + this.dicSceneCardControl[data.ScenesId].RefreshControlInfo(sceneUi); + }); + } + } + + #endregion + + #region 鈻� 閲嶇疆鍦烘櫙鍗$墖鎺т欢鍧愭爣_______________ + + /// <summary> + /// 閲嶇疆鍦烘櫙鍗$墖鎺т欢鍧愭爣(鍗$墖闇�瑕佽鍒犻櫎涓撶敤) + /// </summary> + /// <param name="deleteKey">闇�瑕佽鍒犻櫎鐨勫崱鐗囦富閿�</param> + private void ResetSceneCardControlLocation(int deleteId) + { + if (this.dicSceneCardControl.ContainsKey(deleteId) == false) + { + //濡傛灉鍒楄〃閲岄潰娌℃湁杩欎釜鎺т欢鐨勮瘽 + return; + } + var deleteContr = this.dicSceneCardControl[deleteId]; + //璁惧璁℃暟 + int contrCount = 0; + + bool canMove = false; + int YY = 0; + foreach (var sceneId in this.dicSceneCardControl.Keys) + { + if (deleteId == sceneId) + { + //濡傛灉宸茬粡鍒颁簡瑕佸垹闄ょ殑鍗$墖,鍒犻櫎鎺夊畠,鐒跺悗瀹冧箣鍚庣殑鍗$墖鍏ㄩ儴鍚戜笂绉诲姩 + canMove = true; + continue; + } + //璁惧璁℃暟 + contrCount++; + //姣忎袱涓悗,X杞撮噸缃� + int XX = 0; + if (contrCount % 2 == 1) + { + //绗竴涓浐瀹�44 + XX = this.GetPictrueRealSize(44); + } + else + { + //绗簩涓槸44+鎺т欢瀹藉害+20浣欑櫧 + XX = this.GetPictrueRealSize(44) + this.dicSceneCardControl[sceneId].Width + this.GetPictrueRealSize(20); + } + + //姣忎袱涓箣鍚�,骞朵笖鏄涓�涓椂,Y杞撮�掑 + if (contrCount > 2 && contrCount % 2 == 1) + { + //姹傚晢 + int value = contrCount / 2; + //鎺т欢鐨勫簳閮ㄦ湁15鐨勯棿闅� + YY = value * (this.dicSceneCardControl[sceneId].Height + this.GetPictrueRealSize(15)); + } + if (canMove == true) + { + //绉诲姩鎺т欢 + this.dicSceneCardControl[sceneId].X = XX; + this.dicSceneCardControl[sceneId].Y = YY; + } + } + //鍘绘壘涓�涓嬭繖涓帶浠剁殑鍒楄〃瀹瑰櫒 + var listView = deleteContr.Parent as FrameLayout; + + //鍒犻櫎鎺夐偅寮犲崱鐗囩殑涓婚敭 + deleteContr.RemoveFromParent(); + this.dicSceneCardControl.Remove(deleteId); + + //璋冩暣妗屽竷楂樺害 + if (listView.ChildrenCount >= 4) + { + bodyFrameLayout.Height = listView.GetChildren(listView.ChildrenCount - 1).Bottom; + listView.Height = bodyFrameLayout.Height; + this.listBodyContr.frameTable.Height = bodyFrameLayout.Bottom; + } + } + + #endregion + + #region 鈻� 鍒锋柊妗屽竷鎺т欢_______________________ + + /// <summary> + /// 鍒锋柊璁惧妗屽竷鎺т欢 + /// </summary> + public void RefreshBodyView() + { + bodyFrameLayout.RemoveAll(); + + //璁╃晫闈㈠埆闂儊 + HdlThreadLogic.Current.RunMainInThread(() => + { + if (UserCenterResourse.ResidenceOption.HomeMainPageSwitchIndex == 2) + { + //鍔熻兘 + this.ShowFunction(); + } + else + { + //鍦烘櫙 + this.ShowScene(); + } + }); + } + + #endregion + + #region 鈻� 鍒囨崲浣忓畢___________________________ + /// <summary> + /// 鍒囨崲浣忓畢 + /// </summary> + /// <param name="home">Home.</param> + private void ChangeResidence(House home) + { + HdlThreadLogic.Current.RunThread(() => + { + this.ShowProgressBar(); + + //鍒囨崲浣忓畢 + var result = HdlResidenceLogic.Current.SwitchResidence(home.Id); + + HdlThreadLogic.Current.RunMain(() => + { + if (result == true) + { + //鍒锋柊鐣岄潰 + this.ShowForm(); + } + this.CloseProgressBar(); + }); + }); + } + + #endregion + + #region 鈻� 涓�鑸澶囩姸鎬佷笂鎶__________________ + + /// <summary> + /// 娣诲姞涓�鑸澶囩姸鎬佷笂鎶ヤ簨浠� + /// </summary> + private void AddNormalDeviceReportEvent() + { + //璁惧灞炴�т笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊) + HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceStatus", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => + { + HdlThreadLogic.Current.RunMain(() => + { + //澶勭悊涓�鑸澶囩殑涓婃姤鏁版嵁 + string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report); + if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true) + { + //鍒锋柊鍗$墖淇℃伅 + var locadevice = LocalDevice.Current.GetDevice(mainKeys); + //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉 2020.05.09:鍒犻櫎Ack涓婚 + this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu(); + //鍒锋柊鎺т欢 + if (locadevice.Type != DeviceType.IASZone) + { + //浼犳劅鍣ㄤ笉闇�瑕佸睘鎬т笂鎶�(浣嗘槸閭d釜鐞冨瀷浼犳劅鍣ㄥ眳鐒朵細灞炴�т笂鎶�) + this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice); + } + else if (report.DeviceStatusReport.CluterID == 1) + { + //杩欎釜鏄數閲忔帹閫� + this.dicDeviceCardControl[mainKeys].RefreshBatteryStatu(); + } + } + }, ShowErrorMode.NO); + }); + + //璁惧鍦ㄧ嚎涓婃姤(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊) + HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceOnline", ReceiveComandDiv.A璁惧鍦ㄧ嚎涓婃姤, (report) => + { + HdlThreadLogic.Current.RunMain(() => + { + string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report); + if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true) + { + //鍒锋柊鍗$墖鐘舵�� + bool bolOnline = Common.LocalDevice.Current.CheckDeviceIsOnline(report); + this.dicDeviceCardControl[mainKeys].SetCardOnlineStatu(bolOnline); + return; + } + + }, ShowErrorMode.NO); + }); + } + + #endregion + + #region 鈻� 浼犳劅鍣ㄧ姸鎬佷笂鎶____________________ + + /// <summary> + /// 娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠� + /// </summary> + private void AddSensorDeviceReportEvent() + { + //浼犳劅鍣ㄤ笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊) + HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewSensor", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (report) => + { + HdlThreadLogic.Current.RunMain(() => + { + //澶勭悊浼犳劅鍣ㄤ笂鎶ユ暟鎹� + string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report); + if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true) + { + //寮�鍚崱鐗囬棯鐑佺壒鏁� + this.dicDeviceCardControl[mainKeys].StartCardLightAppeal(); + } + + }, ShowErrorMode.NO); + }); + } + + #endregion + + #region 鈻� 浼犳劅鍣ㄧ姸鎬佽繕鍘焈____________________ + + /// <summary> + /// 寮�鍚紶鎰熷櫒鐘舵�佽繕鍘熺殑绾跨▼ + /// </summary> + private void StartRecoverSenorStatuThread() + { + HdlThreadLogic.Current.RunThread(() => + { + while (this.Parent != null) + { + try + { + var dicControl = this.dicDeviceCardControl; + foreach (var contr in dicControl.Values) + { + //濡傛灉鏄紶鎰熷櫒,鍒欏埛鏂扮姸鎬� + if (contr.device.Type == DeviceType.IASZone && contr.Parent != null + && ((IASZone)contr.device).iASInfo == null) + { + HdlThreadLogic.Current.RunMain(() => + { + //璁惧鐘舵�佸繀椤诲埛鏂� + string statuText = HdlDeviceOtherLogic.Current.GetDeviceStatu(contr.device); + contr.SetDeviceStatuText(statuText); + //浼犳劅鍣ㄥ垏鎹负鐏拌壊鐘舵�� + contr.SwitchCardStatuAppeal(false); + + }, ShowErrorMode.NO); + } + } + System.Threading.Thread.Sleep(8000); + } + catch { System.Threading.Thread.Sleep(3000); } + } + }); + } + + #endregion + + #region 鈻� 鍒囨崲妤煎眰___________________________ + + /// <summary> + /// 鏄剧ず閫夋嫨妤煎眰鐨勭晫闈� + /// </summary> + private void ShowSelectFloorForm(NormalViewControl btnFloor) + { + var floorFL = new Category.SelectFloorForm(); + floorFL.CurFloorId = Config.Instance.Home.CurrentFloorId; + this.AddChidren(floorFL); + floorFL.Init(35, 153); + floorFL.FloorAction = (floorId) => + { + btnFloor.Text = HdlResidenceLogic.Current.GetFloorNameById(floorId); + Config.Instance.Home.CurrentFloorId = floorId; + HdlRoomLogic.Current.NowMainPageRoom = HdlRoomLogic.Current.GetLoveRoom(); + //鍒嗙被鐣岄潰闇�瑕佸埛鏂� + UserView.UserPage.Instance.RefreshCategoryForm = true; + this.ShowForm(); + }; + } + + #endregion + + #region 鈻� 鐣岄潰鍏抽棴___________________________ + + /// <summary> + /// 鐣岄潰鍏抽棴 + /// </summary> + public override void CloseFormBefore() + { + //鎶婇潤鎬佸彉閲忕殑杩欎釜涓滆タ缃┖ + Instance = null; + + HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceOnline"); + HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewDeviceStatus"); + HdlGatewayReceiveLogic.Current.RemoveEvent("UserHomeViewSensor"); + + base.CloseFormBefore(); + } + + #endregion + + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 妫�娴嬫槸鍚︾粦瀹氭湁缃戝叧 + /// </summary> + private bool CheckHadBindGateway() + { + //鑾峰彇鏈湴宸茬粡缁戝畾鐨勭綉鍏� + var gatewayList = HdlGatewayLogic.Current.GetAllLocalGateway(); + if (gatewayList.Count == 0) + { + return false; + } + return true; + } + + #endregion + + #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________ + + /// <summary> + /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠� + /// </summary> + public override int FormActionAgainEvent() + { + CommonPage.Instance.IsDrawerLockMode = false; + return 1; + } + + #endregion + } } -- Gitblit v1.8.0