using System; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public partial class FunctionControlZone : FrameLayout { #region 区域控件 FunctionControlZone bodyDiv; /// /// 功能/场景icon /// Button btnIcon; /// /// 功能名称/场景名称 /// Button btnName; /// /// 楼层信息显示按钮 /// Button btnFromFloor; /// /// 收藏按钮 /// Button btnCollectionIcon; /// /// 离线文本 /// Button btnOffline; #endregion #region 区域变量 Function function; /// /// 是否在调光 /// bool onDimmerBar; #endregion public FunctionControlZone(Function func) { bodyDiv = this; bodyDiv.Tag = func.sid; function = func; } public override void RemoveFromParent() { base.RemoveFromParent(); bodyDiv = null; } /// /// 加载功能类型控制卡片 /// Tag 功能属性显示 /// public void LoadFunctionDiv() { //todo 增加设备,增加功能列表卡片 if (function == null) { this.RemoveFromParent(); return; } LoadDiv(); btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png"; if (SPK.CurtainSpkList().Contains(function.spk)) {//窗帘没有开关按钮 CurtainFragment(); } else if (SPK.MusicSpkList().Contains(function.spk)) {//音乐没有开关按钮 MusicFragment(); } else if (SPK.EvironmentSensorList().Contains(function.spk) || SPK.ArmSensorSpkList().Contains(function.spk)) //传感器没有开关按钮) { var powerLowTipAttr = function.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState); if (powerLowTipAttr != null) { if (powerLowTipAttr.state.ToLower() == "low") { Button btnTipPowerLow = new Button() { X = Application.GetRealWidth(307), Y = Application.GetRealHeight(25), Width = Application.GetRealWidth(24), Height = Application.GetRealWidth(24), UnSelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png", SelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png", }; this.AddChidren(btnTipPowerLow); } } } else if (function.spk == SPK.DoorLock) { btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png"; } else if(SPK.PanelSpkList().Contains(function.spk))//智能面板设备 { var powerLowTipAttr = function.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState); if (powerLowTipAttr != null) { if (powerLowTipAttr.state.ToLower() == "low") { Button btnTipPowerLow = new Button() { X = Application.GetRealWidth(307), Y = Application.GetRealHeight(70), Width = Application.GetRealWidth(24), Height = Application.GetRealWidth(24), UnSelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png", SelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png", }; this.AddChidren(btnTipPowerLow); } } var alarmStatusAttr = function.GetAttribute("alarm_status"); if(alarmStatusAttr !=null) { var btnAlarmStatus = new Button() { X = Application.GetRealWidth(8 + 10 + 32), Y = Application.GetRealHeight(53), Width = Application.GetRealWidth(200), Height = Application.GetRealHeight(24), TextAlignment = TextAlignment.CenterLeft, TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, Tag = "AlarmStatus" }; if (alarmStatusAttr.state == "alarm") { btnAlarmStatus.TextID = StringId.InAlarm; btnAlarmStatus.TextColor = CSS_Color.WarningColor; } else { btnAlarmStatus.TextID = StringId.Normal; btnAlarmStatus.TextColor = CSS_Color.MainColor; } bodyDiv.AddChidren(btnAlarmStatus); } //var tipScrView1 = new HorizontalScrolViewLayout() { // X = Application.GetRealWidth(10), // Y = Application.GetRealHeight(56), // Height = Application.GetRealHeight(20), // Width = Application.GetRealWidth(330), // BackgroundColor = 0x22220022, //}; //var tipScrView2 = new HorizontalScrolViewLayout() //{ // X = Application.GetRealWidth(10), // Y = Application.GetRealHeight(83), // Height = Application.GetRealHeight(20), // Width = Application.GetRealWidth(330), // BackgroundColor = 0x22220022, //}; foreach (var target in function.targetSids) { //bodyDiv.AddChidren(tipScrView1); //bodyDiv.AddChidren(tipScrView2); var targetObj = FunctionList.List.Functions.Find((obj) => target == obj.sid); if(targetObj == null) { continue; } if (SPK.AcSpkList().Contains(targetObj.spk)) { bodyDiv.Height = Application.GetRealHeight(126); AC acDevice = new AC(); var btnAcMode = new Button() { X = Application.GetRealWidth(10), Y = Application.GetRealHeight(56), Width = Application.GetRealWidth(62), Height = Application.GetRealHeight(19), BackgroundColor = 0x334484F4, TextAlignment = TextAlignment.Center, TextSize = 10, TextColor = 0xFF4484F4, Text = Language.StringByID(StringId.AC) + acDevice.GetModeAttrText(targetObj.GetAttrState(FunctionAttributeKey.Mode)), Tag = target + "screen.panel.ac.mode", Radius = (uint)Application.GetRealWidth(4), }; bodyDiv.AddChidren(btnAcMode); //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(16)}); var btnAcTemp = new Button() { X = Application.GetRealWidth(10 + 72), Y = Application.GetRealHeight(56), Width = Application.GetRealWidth(62), Height = Application.GetRealHeight(19), BackgroundColor = 0x334484F4, TextAlignment = TextAlignment.Center, TextSize = 10, TextColor = 0xFF4484F4, Text = Language.StringByID(StringId.AC) + targetObj.GetAttrState(FunctionAttributeKey.Temperature) + "°C", Radius = (uint)Application.GetRealWidth(4), Tag = target + "screen.panel.ac.temp" }; bodyDiv.AddChidren(btnAcTemp); //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) }); } else if (SPK.FhSpkList().Contains(targetObj.spk)) { FloorHeating fhDevice = new FloorHeating(); var btnFhMode = new Button() { X = Application.GetRealWidth(10 + 72*2), Y = Application.GetRealHeight(56), Radius = (uint)Application.GetRealWidth(4), Width = Application.GetRealWidth(62), Height = Application.GetRealHeight(19), BackgroundColor = 0x33ff9d54, TextAlignment = TextAlignment.Center, TextSize = 10, TextColor = 0xFFff9d54, Text = Language.StringByID(StringId.FloorHeating) + fhDevice.GetModeAttrText(targetObj.GetAttrState(FunctionAttributeKey.Mode)), Tag = target + "screen.panel.fh.mode" }; bodyDiv.AddChidren(btnFhMode); //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) }); var btnFhTemp = new Button() { X = Application.GetRealWidth(10 + 72 * 3), Y = Application.GetRealHeight(56), Radius = (uint)Application.GetRealWidth(4), Width = Application.GetRealWidth(62), Height = Application.GetRealHeight(19), BackgroundColor = 0x33ff9d54, TextAlignment = TextAlignment.Center, TextSize = 10, TextColor = 0xFFff9d54, Text = Language.StringByID(StringId.FloorHeating) + targetObj.GetAttrState(FunctionAttributeKey.Temperature) + "°C", Tag = target + "screen.panel.fh.temp" }; bodyDiv.AddChidren(btnFhTemp); //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) }); } else if (SPK.AirFreshSpkList().Contains(targetObj.spk)) { AC acDevice = new AC(); var btnAirFreshFanSpeed = new Button() { X = Application.GetRealWidth(10), Y = Application.GetRealHeight(83), Width = Application.GetRealWidth(62), Height = Application.GetRealHeight(19), BackgroundColor = 0x3309bb07, TextAlignment = TextAlignment.Center, TextSize = 10, TextColor = 0xFF09bb07, Radius = (uint)Application.GetRealWidth(4), Text = Language.StringByID(StringId.AirFresh) + acDevice.GetFanAttrText(targetObj.GetAttrState(FunctionAttributeKey.FanSpeed)), Tag = target + "screen.panel.airFresh.mode" }; bodyDiv.AddChidren(btnAirFreshFanSpeed); } } } else { if (function.spk == SPK.ClothesHanger)//晾衣架 { ClothesHangerFragment(); } else { #region 加载开关按钮 /// /// 开关按钮 /// Button btnSwitch; if (function.spk == SPK.LightRGB || function.spk == SPK.LightDimming) { btnSwitch = new Button() { X = Application.GetRealWidth(303), Y = Application.GetRealHeight(78), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "Public/PowerClose.png", SelectedImagePath = "Public/PowerOpen.png", IsSelected = function.trait_on_off.curValue.ToString() == "on", Tag = function.sid + "_Switch", }; bodyDiv.AddChidren(btnSwitch); //加载开关按钮事件 LoadEvent_SwitchFunction(btnSwitch, function.attributes.Find((obj) => obj.key == FunctionAttributeKey.FadeTime)); } else { btnSwitch = new Button() { X = Application.GetRealWidth(303), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "Public/PowerClose.png", SelectedImagePath = "Public/PowerOpen.png", IsSelected = function.trait_on_off.curValue.ToString() == "on", Tag = function.sid + "_Switch", }; bodyDiv.AddChidren(btnSwitch); //加载开关按钮事件 LoadEvent_SwitchFunction(btnSwitch); } if (SPK.AcSpkList().Contains(function.spk) || SPK.FhSpkList().Contains(function.spk)) { LoadLastStatesButton(); } else if (SPK.LightSpkList().Contains(function.spk)) { btnSwitch.IsSelected = function.trait_on_off.curValue.ToString() == "on"; LoadLightControl(); } else if (SPK.ElectricalSpkList().Contains(function.spk)) { btnSwitch.IsSelected = function.trait_on_off.curValue.ToString() == "on"; } #endregion } } LoadEvent_DivSkipEvent(); LoadEvent_FunctionCollection(); } /// /// 加载控制卡片区域 /// void LoadDiv() { btnIcon = new Button() { X = Application.GetRealWidth(10), Y = Application.GetRealHeight(15), Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), }; bodyDiv.AddChidren(btnIcon); btnName = new Button() { X = Application.GetRealWidth(8 +10 + 32), Y = Application.GetRealHeight(10), Width = Application.GetRealWidth(200), Height = Application.GetRealHeight(24), Text = function.name, TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, }; bodyDiv.AddChidren(btnName); btnFromFloor = new Button() { X = Application.GetRealWidth(8 + 10 + 32), Y = Application.GetRealHeight(10 + 24), Width = Application.GetRealWidth(200), Height = Application.GetRealHeight(18), Text = function.GetRoomListName(), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, }; bodyDiv.AddChidren(btnFromFloor); btnCollectionIcon = new Button() { X = Application.GetRealWidth(299), Y = Application.GetRealHeight(10), Width = Application.GetMinRealAverage(40), Height = Application.GetMinRealAverage(40), SelectedImagePath = "Collection/CollectionIcon.png", UnSelectedImagePath = "Collection/CollectionGrayIcon.png", IsSelected = function.collect }; if ( !SPK.ArmSensorSpkList().Contains(function.spk) && function.spk != SPK.DoorLock && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare && { bodyDiv.AddChidren(btnCollectionIcon); } //if (!function.online) //{ // bodyDiv.BackgroundColor = CSS_Color.PromptingColor2; // btnOffline = new Button() // { // X = Application.GetRealWidth(8 + 10 + 32), // Y = Application.GetRealHeight(28 + 24), // Height = Application.GetRealHeight(30), // TextID = StringId.DeviceOffline, // TextColor = CSS_Color.WarningColor, // TextSize = CSS_FontSize.PromptFontSize_FirstLevel, // TextAlignment = TextAlignment.CenterLeft // }; // bodyDiv.AddChidren(btnOffline); //} } /// /// 加载灯光功能控制卡片 /// void LoadLightControl() { switch (function.spk) { case SPK.LightDimming: case SPK.LightRGB: #region Dimmer var btnDimmerMinValues = new Button() { X = Application.GetRealWidth(14), Y = Application.GetRealHeight(85), Width = Application.GetRealWidth(30), Height = Application.GetRealHeight(21), Text = "0%", TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, }; bodyDiv.AddChidren(btnDimmerMinValues); var dimmerControlBar = new DiyImageSeekBar() { X = Application.GetRealWidth(14 + 22), Y = Application.GetRealHeight(68),//91,设计数据 Width = Application.GetRealWidth(180), Height = Application.GetRealHeight(54), SeekBarViewHeight = Application.GetRealHeight(8), ThumbImagePath = "Public/ThumbImage.png", ThumbImageHeight = Application.GetRealHeight(54), ProgressBarColor = function.trait_on_off.curValue.ToString() == "on" ? CSS_Color.AuxiliaryColor1 : CSS_Color.PromptingColor2, ProgressTextColor = CSS_Color.FirstLevelTitleColor, ProgressTextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, MaxValue = 100, Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.Brightness)), Tag = function.sid + "_DimmerBar", SeekBarPadding = Application.GetRealWidth(20), }; bodyDiv.AddChidren(dimmerControlBar); var btnDimmerMaxValues = new Button() { X = Application.GetRealWidth(14 + 22+180), Y = Application.GetRealHeight(85), Width = Application.GetRealWidth(45), Height = Application.GetRealHeight(21), Text = "100%", TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, }; bodyDiv.AddChidren(btnDimmerMaxValues); //加载调光事件 LoadEvent_LightDimming(dimmerControlBar); #endregion break; } } /// /// 加载窗帘功能控制卡片 /// void CurtainFragment() { #region Curtain var btnCurtainClose = new Button() { X = Application.GetRealWidth(163), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseIcon.png", SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseOnIcon.png", IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff) == "off", Tag = function.sid + "_off" }; bodyDiv.AddChidren(btnCurtainClose); if(function.spk == SPK.CurtainRoller) { btnCurtainClose.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainDownIcon.png"; btnCurtainClose.SelectedImagePath = "FunctionIcon/Curtain/CurtainDownIconOn.png"; } var btnCurtainStop = new Button() { X = Application.GetRealWidth(233), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "FunctionIcon/Curtain/CurtainStopIcon.png", SelectedImagePath = "FunctionIcon/Curtain/CurtainStopOnIcon.png", Tag = function.sid + "_stop", }; bodyDiv.AddChidren(btnCurtainStop); var btnCurtainOpen = new Button() { X = Application.GetRealWidth(303), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenIcon.png", SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenOnIcon.png", Tag = function.sid + "_on", IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff) == "on", }; bodyDiv.AddChidren(btnCurtainOpen); if (function.spk == SPK.CurtainRoller) { btnCurtainOpen.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainUpIcon.png"; btnCurtainOpen.SelectedImagePath = "FunctionIcon/Curtain/CurtainUpIconOn.png"; } LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose); #endregion } /// /// 加载晾衣架功能控制卡片 /// void ClothesHangerFragment() { #region ClothesHanger var btnClothesHangerUp = new Button() { X = Application.GetRealWidth(233), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon1.png", SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon1On.png", }; bodyDiv.AddChidren(btnClothesHangerUp); var btnClothesHangerDown = new Button() { X = Application.GetRealWidth(303), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon1.png", SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon1On.png", }; bodyDiv.AddChidren(btnClothesHangerDown); LoadEvent_ControlClothesHanger(function, btnClothesHangerUp, btnClothesHangerDown); #endregion } /// /// 加载音乐功能控制卡片 /// void MusicFragment() { #region Music var btnPrev = new Button() { X = Application.GetRealWidth(163), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "MusicIcon/prev.png", SelectedImagePath = "MusicIcon/prevSeletced.png", }; bodyDiv.AddChidren(btnPrev); var btnPlay = new Button() { X = Application.GetRealWidth(233), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "MusicIcon/pause.png", SelectedImagePath = "MusicIcon/play.png", //IsSelected = (function as A31MusicModel).A31PlayStatus.status == "play" , Tag = function.spk + "_State_" + function.sid }; bodyDiv.AddChidren(btnPlay); var btnNext = new Button() { X = Application.GetRealWidth(303), Y = Application.GetRealHeight(58), Width = Application.GetMinRealAverage(32), Height = Application.GetMinRealAverage(32), UnSelectedImagePath = "MusicIcon/next.png", SelectedImagePath = "MusicIcon/nextSelected.png", }; bodyDiv.AddChidren(btnNext); LoadEvent_ControlMusic(btnPlay, btnNext, btnPrev, function); #endregion } /// /// 加载功能状态信息按钮 /// void LoadLastStatesButton() { if(function.spk == SPK.LightSwitch) { return; } var btnLastStates = new Button() { X = Application.GetRealWidth(10 + 32 + 8), Y = Application.GetRealHeight(10 + 24 + 18), Width = Application.GetRealWidth(200), Height = Application.GetRealHeight(18), Text = function.lastState, TextAlignment = TextAlignment.CenterLeft, SelectedTextColor = CSS_Color.PromptingColor1, TextColor = 0x00000000, TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, Tag = function.spk + "_laststates_" + function.sid, IsSelected = function.trait_on_off.curValue.ToString() == "on" }; bodyDiv.AddChidren(btnLastStates); } } }