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; /// /// 删除设备后回调给界面刷新 /// Action action; #endregion public FunctionControlZone(Function func,Action action) { bodyDiv = this; bodyDiv.Tag = func.sid; function = func; this.action = action; } public override void RemoveFromParent() { base.RemoveFromParent(); bodyDiv = null; } /// /// 加载功能类型控制卡片 /// public void LoadFunctionDiv() { if (function == null) { this.RemoveFromParent(); return; } //if (function.spk == SPK.IpCam_Imou) //{ // InitIpCamDiv(); //} //else { LoadDiv(); } btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png"; if (SPK.CurtainSpkList().Contains(function.spk)) {//窗帘没有开关按钮 CurtainFragment(); } else { #region 加载开关按钮 /// /// 开关按钮 /// Button btnSwitch; if (function.spk == SPK.LightRGBW || function.spk == SPK.LightCCT || 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(); } #endregion } LoadEvent_DivSkipEvent(); LoadEvent_FunctionCollection(); } /// /// 加载ip摄像头卡片 /// private void InitIpCamDiv() { 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 }; } /// /// 加载控制卡片区域 /// 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 (!function.isOnline()) { 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.LightRGBW: case SPK.LightRGB: case SPK.LightCCT: #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() { var onoffString = function.GetAttrState(FunctionAttributeKey.OnOff); var percent = onoffString == "off" ? 0 : 100; if (function.GetAttributes().Contains(FunctionAttributeKey.Percent)) { string percentString = function.GetAttrState(FunctionAttributeKey.Percent); int.TryParse(percentString, out percent); } #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 = percent == 0, 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 = percent != 0, }; 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 } /// /// 排序事件 /// public Action OrderEvent; /// /// 加载功能状态信息按钮 /// 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); } } }