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);
}
});
}
}
}