using System; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public class ClassificaitionPublicBLL { public ClassificaitionPublicBLL() { } /// /// 更新功能状态 /// /// public void UpdataStates(Function updataFunction, FrameLayout view, VerticalScrolViewLayout scrolView, Room room = null) { if (view == null || scrolView == null || updataFunction == null) { return; } Application.RunOnMainThread((() => { try { if (!scrolView.ScrollEnabled) { return; } if (room != null) { if (!updataFunction.roomIds.Contains(room.roomId)) { return; } } for (int i = 0; i < scrolView.ChildrenCount; i++) { if (scrolView.GetChildren(i).Tag == null || scrolView.GetChildren(i).Tag.ToString() == "") { continue; } var viewTag = scrolView.GetChildren(i).Tag.ToString(); if (scrolView.GetChildren(i).Tag != null && viewTag == updataFunction.spk + updataFunction.sid) { //if ( && scrolView.GetChildren(i).Tag.ToString() == updataFunction.sid) { var fcView = scrolView.GetChildren(i) as FrameLayout; for (int j = 0; j < fcView.ChildrenCount; j++) { if (fcView.GetChildren(j).Tag == null) continue; var cTag = fcView.GetChildren(j).Tag.ToString(); if (SPK.LightSpkList().Contains(updataFunction.spk) || SPK.AcSpkList().Contains(updataFunction.spk) || SPK.FhSpkList().Contains(updataFunction.spk) || SPK.ElectricalSpkList().Contains(updataFunction.spk) || SPK.AirFreshSpkList().Contains(updataFunction.spk)) { #region 按钮状态更新 if (cTag == updataFunction.sid + "_Switch") { try { (fcView.GetChildren(j) as Button).IsSelected = updataFunction.trait_on_off.curValue.ToString() == "on"; } catch (Exception ex) { MainPage.Log($"{this.GetType()} error 0 : {ex.Message}"); } } #endregion #region 调光状态进度更新 else if (cTag == updataFunction.sid + "_DimmerBar") { try { (fcView.GetChildren(j) as DiyImageSeekBar).Progress = Convert.ToInt32(updataFunction.GetAttrState(FunctionAttributeKey.Brightness)); if (updataFunction.trait_on_off.curValue.ToString() == "on") { (fcView.GetChildren(j) as DiyImageSeekBar).ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1; } else { (fcView.GetChildren(j) as DiyImageSeekBar).ProgressBarColor = CSS.CSS_Color.PromptingColor2; } } catch (Exception ex) { MainPage.Log($"{this.GetType()} error 1 : {ex.Message}"); } } #endregion #region 功能状态信息更新 else if (cTag == updataFunction.spk + "_laststates_" + updataFunction.sid) { try { (fcView.GetChildren(j) as Button).IsSelected = updataFunction.trait_on_off.curValue.ToString() == "on"; (fcView.GetChildren(j) as Button).Text = updataFunction.lastState; } catch (Exception ex) { MainPage.Log($"{this.GetType()} error 2 : {ex.Message}"); } } #endregion } else if (SPK.CurtainSpkList().Contains(updataFunction.spk)) { #region 窗帘更新 var onoffString = updataFunction.GetAttrState(FunctionAttributeKey.OnOff); var percentAttr = updataFunction.GetAttribute(FunctionAttributeKey.Percent); if(percentAttr != null) { onoffString = percentAttr.curValue.ToString() == "0" ? "off" : "on"; } if (onoffString == "stop") { return; } var percent = onoffString == "off" ? 0 : 100; if (updataFunction.GetAttributes().Contains(FunctionAttributeKey.Percent)) { string percentString = updataFunction.GetAttrState(FunctionAttributeKey.Percent); int.TryParse(percentString, out percent); } if (percent == 0) { if (cTag == updataFunction.sid + "_off") { try { (fcView.GetChildren(j) as Button).IsSelected = true; } catch { } } else { (fcView.GetChildren(j) as Button).IsSelected = false; } } else { if (cTag == updataFunction.sid + "_on") { try { (fcView.GetChildren(j) as Button).IsSelected = true; } catch { } } else { (fcView.GetChildren(j) as Button).IsSelected = false; } } #endregion } else if (SPK.MusicSpkList().Contains(updataFunction.spk)) { #region 音乐更新 var uMusic = updataFunction; if (cTag == updataFunction.spk + "_State_" + updataFunction.sid) { try { (fcView.GetChildren(j) as Button).IsSelected = uMusic.GetAttrState("on_off") == "on"; } catch (Exception ex) { MainPage.Log($"{this.GetType()} error 3 : {ex.Message}"); } } #endregion } //更新毫米波传感器状态 else if(SPK.SenesorMegahealth == updataFunction.spk || SPK.SensorMmvPose == updataFunction.spk) { if (cTag == updataFunction.sid + "_SenesorMegahealth_Status") { try { Button btnStatus = (fcView.GetChildren(j) as Button); var tempStatus = updataFunction.attributes.Find((sta) => sta.key == FunctionAttributeKey.TargetStatus); if (tempStatus != null) { switch (tempStatus.state) {//0空,1走,2跑,3坐,4跌倒,5站 case "0": btnStatus.TextID = StringId.SensorNormalState; btnStatus.TextColor = CSS_Color.MainColor; break; case "1": btnStatus.TextID = StringId.SomeoneIn; break; case "2": if (updataFunction.extSet.labModel) { btnStatus.TextID = StringId.SomeoneRunning; } else { btnStatus.TextID = StringId.Someone; } btnStatus.TextColor = CSS_Color.WarningColor; break; case "3": if (updataFunction.extSet.labModel) { btnStatus.TextID = StringId.SomeoneSitting; } else { btnStatus.TextID = StringId.Someone; } btnStatus.TextColor = CSS_Color.WarningColor; break; case "4": btnStatus.TextID = StringId.SomeoneFell; btnStatus.TextColor = CSS_Color.WarningColor; break; case "5": if (updataFunction.extSet.labModel) { btnStatus.TextID = StringId.SomeoneStanding; } else { btnStatus.TextID = StringId.Someone; } btnStatus.TextColor = CSS_Color.WarningColor; break; } } } catch (Exception ex) { MainPage.Log($"{this.GetType()} error 3 : {ex.Message}"); } } } //更新温控器状态 else if(SPK.HvacCac == updataFunction.spk) { if (cTag == updataFunction.sid + "_Humidity") { (fcView.GetChildren(j) as Button).Text = updataFunction.GetAttrState(FunctionAttributeKey.RoomHumidity) + "%"; } else if (cTag == updataFunction.sid + "_Temp") { (fcView.GetChildren(j) as Button).Text = updataFunction.GetAttrState(FunctionAttributeKey.RoomTemp) + "°C"; } } } } } } } catch (Exception ex) { MainPage.Log($"RoomControlZone Updata States error : {ex.Message}"); } })); } public void UpdataOnlineStatus(Function updataFunction, FrameLayout view, VerticalScrolViewLayout scrolView, Room room = null) { Application.RunOnMainThread(() => { try { if (view == null || scrolView == null || updataFunction == null) { return; } if (!scrolView.ScrollEnabled) { return; } if (room != null) { if (!updataFunction.roomIds.Contains(room.roomId)) { return; } } for (int i = 0; i < scrolView.ChildrenCount; i++) { if (scrolView.GetChildren(i).Tag == null || scrolView.GetChildren(i).Tag.ToString() == "") { continue; } var viewTag = scrolView.GetChildren(i).Tag.ToString(); if (scrolView.GetChildren(i).Tag != null && viewTag == updataFunction.spk + updataFunction.sid) { if (scrolView.GetChildren(i).GetType() == typeof(FunctionControlZone)) { var fcView = scrolView.GetChildren(i) as FunctionControlZone; fcView.UpdataOnline(updataFunction.online); } } } }catch (Exception ex) { MainPage.Log("Function Online status error : " + ex.Message); } }); } } }