From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs | 310 ++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 255 insertions(+), 55 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs b/ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs old mode 100755 new mode 100644 index ca2af89..ae83791 --- a/ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs +++ b/ZigbeeApp/Shared/Phone/MainPage/HomeMainPageForm.cs @@ -57,7 +57,7 @@ Instance = this; //鍏堝垵濮嬪寲宸︽粦鎴块棿鍒楄〃鐣岄潰(鍦ㄥ弽灏勯噷闈㈠垵濮嬪寲) - if (ListRoomViewFrom.Instance == null) { } + if (LeftListRoomViewFrom.Instance == null) { } //鏁翠釜鑳屾櫙鐨勪笂涓嬫粦鍔ㄦ帶浠� if (this.listBodyContr == null) @@ -82,6 +82,10 @@ this.AddNormalDeviceReportEvent(); //娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠� this.AddSensorDeviceReportEvent(); + //寮�鍚紶鎰熷櫒鐘舵�佽繕鍘熺殑绾跨▼ + this.StartRecoverSenorStatuThread(); + //鏄剧ずApp鍏憡 + this.ShowAppNotice(); } /// <summary> @@ -129,6 +133,9 @@ this.ShowSelectFloorForm(btnFloorName); }; } + + //鍙瀵硅蹇嵎鏂瑰紡 + Shared.Phone.Device.VideoIntercom.VideoMachine.AccountSupportVideo(topFrameLayout); //瀹夐槻蹇嵎鏂瑰紡 if (UserCenterResourse.ResidenceOption.SafetyShortcut) { @@ -153,7 +160,7 @@ btnHouseName.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor; btnHouseName.IsBold = true; btnHouseName.Text = Config.Instance.Home.Name; - btnHouseName.Width = btnHouseName.GetRealWidthByText(); + btnHouseName.Width = btnHouseName.GetRealWidthByText() + Application.GetRealWidth(100); this.listBodyContr.frameTable.AddChidren(btnHouseName); //鍒囨崲浣忓畢 @@ -170,7 +177,8 @@ selectHouse.Init(); selectHouse.HouseAction = (houseId) => { - ChangeResidence(HdlResidenceLogic.Current.GetHouseByHouseId(houseId)); + //鍒囨崲浣忓畢 + this.ChangeResidence(HdlResidenceLogic.Current.GetHouseByHouseId(houseId)); }; } }; @@ -315,7 +323,7 @@ this.listBodyContr.frameTable.AddChidren(bg); var tip = new NormalViewControl(this.GetPictrueRealSize(717), this.GetPictrueRealSize(58), false); - tip.Y = Application.GetRealHeight(815); + tip.Y = bg.Bottom + Application.GetRealHeight(35); tip.Gravity = Gravity.CenterHorizontal; tip.TextID = R.MyInternationalizationString.NewAccountNeedBingGW; tip.TextColor = ZigbeeColor.Current.GXCTextGrayColor; @@ -323,13 +331,13 @@ this.listBodyContr.frameTable.AddChidren(tip); var addBG = new PicViewControl(971, 366); - addBG.Y = Application.GetRealHeight(1048); + 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 = Application.GetRealHeight(1143); + addGatewayBtn.Y = tip.Bottom + Application.GetRealHeight(271); addGatewayBtn.UnSelectedImagePath = "Item/Add_GW.png"; addGatewayBtn.Gravity = Gravity.CenterHorizontal; this.listBodyContr.frameTable.AddChidren(addGatewayBtn); @@ -340,7 +348,7 @@ }; var addTip = new PicViewControl(717, 58); - addTip.Y = Application.GetRealHeight(1256); + addTip.Y = addGatewayBtn.Bottom + Application.GetRealHeight(23); addTip.Gravity = Gravity.CenterHorizontal; addTip.TextID = R.MyInternationalizationString.AddSmartGW; addTip.TextColor = ZigbeeColor.Current.GXCTextBlackColor; @@ -402,10 +410,9 @@ roomPageView.SetLeftAndRightImageView(mLeftImageView, mRightImageView); //褰撳墠鎴块棿 - var listRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom(); + var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId); if (HdlRoomLogic.Current.NowMainPageRoom == null) { - //璁剧疆绗竴涓负鍒濆鎴块棿 HdlRoomLogic.Current.NowMainPageRoom = listRoom[0]; } var curIndex = 0; @@ -505,7 +512,7 @@ //褰撴病鏈夌粦瀹氭湁缃戝叧,宸︽粦鏃�,鐐瑰嚮鎴块棿鍒楄〃,鍒欎笉楦熷畠 return; } - var listRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom(); + var listRoom = HdlRoomLogic.Current.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId); for (int i = 0; i < listRoom.Count; i++) { if (room.Id == listRoom[i].Id) @@ -521,7 +528,7 @@ //閲嶇疆涓�涓嬫ゼ灞傚悕瀛� if (this.btnFloorName != null) { - btnFloorName.Text = HdlResidenceLogic.Current.GetFloorNameById(Config.Instance.Home.CurrentFloorId); + btnFloorName.Text = Config.Instance.Home.GetCurrentFloorName; } } @@ -538,8 +545,8 @@ bodyFrameLayout.RemoveAll(); bodyFrameLayout.Height = Application.GetRealHeight(750); this.listBodyContr.RecoverTableHeight(); - this.dicSceneCardControl.Clear(); - this.dicDeviceCardControl.Clear(); + 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) @@ -620,6 +627,16 @@ { 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) { @@ -633,7 +650,17 @@ //娓╂箍搴� else if (device.Type == DeviceType.TemperatureSensor) { - cardContr = new Controls.DeviceTemperatureCardControl(); + //绌烘皵璐ㄩ噺浼犳劅鍣� + //鑾峰彇璁惧绫诲瀷 + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device }); + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.AirQualitySensor) + { + cardContr = new Controls.DeviceAirQualitySensorCardControl(); + } + else + { + cardContr = new Controls.DeviceTemperatureCardControl(); + } } //闂ㄩ攣 else if (device.Type == DeviceType.DoorLock) @@ -646,7 +673,7 @@ cardContr = new Controls.DeviceColorTemperatureCardControl(); } //鏃犳硶璇嗗埆 - else + if (cardContr == null) { cardContr = new Controls.DeviceCardCommon(); } @@ -687,17 +714,38 @@ } HdlThreadLogic.Current.RunThread(() => { - for (int i = 0; i < listContr.Count; i++) + int sendCount = 0; + while (listDeviceBackContr.Parent != null) { - if (listDeviceBackContr.Parent == null) + bool hadSend = false; + for (int i = 0; i < listContr.Count; i++) { - return; + if (listDeviceBackContr.Parent == null) + { + return; + } + //濡傛灉杩樻病鏈夋帴鏀跺埌鏁版嵁,鍒欏啀娆″彂閫� + if (listContr[i].ReceiveResponeResultStatu() == false) + { + //鍙戦�佽幏鍙栫姸鎬佺殑鍛戒护 + listContr[i].SendStatuComand(); + hadSend = true; + System.Threading.Thread.Sleep(300); + } } - System.Threading.Thread.Sleep(200); - //鍙戦�佽幏鍙栫姸鎬佺殑鍛戒护 - listContr[i].SendStatuComand(); + if (hadSend == false) + { + //濡傛灉宸茬粡鍏ㄩ儴鍥炶矾閮芥帴鏀朵簡缃戝叧鍥炲,鍒欎笉鍐嶄簩娆″彂閫� + break; + } + sendCount++; + if (sendCount == 2) + { + //灏卞彂2娆� + break; + } + System.Threading.Thread.Sleep(5000); } - }, ShowErrorMode.NO); } }); @@ -798,8 +846,8 @@ bodyFrameLayout.RemoveAll(); bodyFrameLayout.Height = Application.GetRealHeight(750); this.listBodyContr.RecoverTableHeight(); - this.dicSceneCardControl.Clear(); - this.dicDeviceCardControl.Clear(); + 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) @@ -1055,36 +1103,23 @@ /// <param name="home">Home.</param> private void ChangeResidence(House home) { - try + HdlThreadLogic.Current.RunThread(() => { - CommonPage.Loading.Start(); - new System.Threading.Thread(async () => - { - Config.Instance.HomeId = home.Id; - Config.Instance.Home = HdlResidenceLogic.Current.GetHouseByHouseId(home.Id); - Global.CreateHomeDirectory(home.Id); - Config.Instance.Save(); - //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ - await UserCenterLogic.InitUserCenterMenmoryAndThread(); + this.ShowProgressBar(); - Application.RunOnMainThread(() => + //鍒囨崲浣忓畢 + var result = HdlResidenceLogic.Current.SwitchResidence(home.Id); + + HdlThreadLogic.Current.RunMain(() => + { + if (result == true) { //鍒锋柊鐣岄潰 this.ShowForm(); - - CommonPage.Loading.Hide(); - }); - }) - { IsBackground = true }.Start(); - } - catch (Exception ex) - { - Application.RunOnMainThread(() => - { - CommonPage.Loading.Hide(); - Console.WriteLine(ex.Message); + } + this.CloseProgressBar(); }); - } + }); } #endregion @@ -1103,6 +1138,18 @@ { //澶勭悊涓�鑸澶囩殑涓婃姤鏁版嵁 string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report); + + //鏅捐。鏋朵笂鎶ラ渶瑕佺壒娈婂鐞嗭紝鍏朵粬涓婃姤鐨勫洖璺粺涓�杞负绔偣1 + var tempList = LocalDevice.Current.GetDevicesByMac(report.DeviceAddr); + if (tempList.Count > 0) + { + var tempDeviceEnum = LocalDevice.Current.GetMyDeviceEnumInfo(tempList); + if (tempDeviceEnum.ConcreteType == Common.DeviceConcreteType.Airer) + { + mainKeys = report.DeviceAddr + "_" + 1; + } + } + if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true) { //鍒锋柊鍗$墖淇℃伅 @@ -1110,7 +1157,16 @@ //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉 2020.05.09:鍒犻櫎Ack涓婚 this.dicDeviceCardControl[mainKeys].SetHadGetResponeResultStatu(); //鍒锋柊鎺т欢 - this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice); + if (locadevice.Type != DeviceType.IASZone) + { + //浼犳劅鍣ㄤ笉闇�瑕佸睘鎬т笂鎶�(浣嗘槸閭d釜鐞冨瀷浼犳劅鍣ㄥ眳鐒朵細灞炴�т笂鎶�) + this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice); + } + else if (report.DeviceStatusReport.CluterID == 1) + { + //杩欎釜鏄數閲忔帹閫� + this.dicDeviceCardControl[mainKeys].RefreshBatteryStatu(); + } } }, ShowErrorMode.NO); }); @@ -1151,13 +1207,51 @@ string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report); if (this.dicDeviceCardControl.ContainsKey(mainKeys) == true) { - //鏈湴璁惧瀵硅薄 - var locadevice = LocalDevice.Current.GetDevice(mainKeys); - //鍒锋柊鍗$墖淇℃伅 - this.dicDeviceCardControl[mainKeys].RefreshControlInfo(locadevice); + //寮�鍚崱鐗囬棯鐑佺壒鏁� + 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); } + } }); } @@ -1171,13 +1265,16 @@ private void ShowSelectFloorForm(NormalViewControl btnFloor) { var floorFL = new Category.SelectFloorForm(); + floorFL.CurFloorId = Config.Instance.Home.CurrentFloorId; this.AddChidren(floorFL); floorFL.Init(35, 153); - floorFL.changeFloor = true; 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(); }; } @@ -1219,6 +1316,109 @@ return true; } + /// <summary> + /// 鏄剧ずApp鍏憡 + /// </summary> + private void ShowAppNotice() + { + HdlThreadLogic.Current.RunThread(() => + { + if (HdlFirmwareUpdateLogic.CheckCanShowNotice() == true) + { + while (this.IsFormOpen("HdlAutoBackupForm") == true) + { + //鑷姩澶囦唤鐨勭晫闈㈡鍦ㄦ墦寮�涓� + System.Threading.Thread.Sleep(1000); + } + HdlThreadLogic.Current.RunMain(() => + { + //鍔犺浇绯荤粺鍏憡 + var form2 = new AppNoticeForm(); + UserView.UserPage.Instance.AddChidren(form2); + form2.Show(); + form2.FinishEvent += () => + { + HdlThreadLogic.Current.RunThread(() => + { + System.Threading.Thread.Sleep(1000); + //鏄剧ずApp鍗囩骇鐨勫脊绐� + this.ShowUpdateAppDialog(); + + }, ShowErrorMode.NO); + }; + + }, ShowErrorMode.NO); + } + else + { + //鏄剧ずApp鍗囩骇鐨勫脊绐� + this.ShowUpdateAppDialog(); + } + }, ShowErrorMode.NO); + } + + /// <summary> + /// 鏄剧ずApp鍗囩骇鐨勫脊绐� + /// </summary> + private void ShowUpdateAppDialog() + { + //App鍗囩骇鎻愮ず + if (string.IsNullOrEmpty(FirmwareUpdateResourse.AppNeedUpdateUrl) == false) + { + //鏁翠簡涓�娆′箣鍚庡氨涓嶆暣浜� + string updateUrl = FirmwareUpdateResourse.AppNeedUpdateUrl; + FirmwareUpdateResourse.AppNeedUpdateUrl = string.Empty; + + while (this.IsFormOpen("HdlAutoBackupForm") == true) + { + //鑷姩澶囦唤鐨勭晫闈㈡鍦ㄦ墦寮�涓� + System.Threading.Thread.Sleep(1000); + } + //鍙戠幇APP鏂扮増鏈�,椹笂鍗囩骇{0}寮�鍚柊浣撻獙鍝 + this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uAppUpdateMsg1).Replace("{0}", "\r\n"), () => + { +#if iOS + Uri url = new Uri(updateUrl); + UIKit.UIApplication.SharedApplication.OpenUrl(url); +#endif +#if Android + HDLUtils.OpenUrl(updateUrl); +#endif + }, Language.StringByID(R.MyInternationalizationString.uLevelUp)); + //App鍗囩骇鎻愮ず浼樺厛 + return; + } + //缃戝叧鍗囩骇鎻愮ず + if (FirmwareUpdateResourse.ListGatewayNeedUpdate.Count > 0) + { + //鏁村畬涔嬪悗灏辨竻绌� + var listGateway = new List<string>(); + listGateway.AddRange(FirmwareUpdateResourse.ListGatewayNeedUpdate); + FirmwareUpdateResourse.ListGatewayNeedUpdate = new List<string>(); + + while (this.IsFormOpen("HdlAutoBackupForm") == true) + { + //鑷姩澶囦唤鐨勭晫闈㈡鍦ㄦ墦寮�涓� + System.Threading.Thread.Sleep(1000); + } + foreach (var gwId in listGateway) + { + //鐩墠鍙暣涓�涓� + if (HdlGatewayLogic.Current.IsGatewayExist(gwId) == true) + { + //鍙戠幇缃戝叧鏂扮増鏈�,椹笂鍗囩骇{0}寮�鍚柊浣撻獙鍝 + this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uGatewayUpdateMsg1).Replace("{0}", "\r\n"), () => + { + var form = new UserCenter.GatewayUpdate.GatewayFirmwareUpdateForm(); + form.AddForm(HdlGatewayLogic.Current.GetLocalGateway(gwId)); + }); + break; + } + } + return; + } + } + #endregion #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________ @@ -1232,6 +1432,6 @@ return 1; } - #endregion +#endregion } } -- Gitblit v1.8.0