| | |
| | | using System; |
| | | using HDL_ON.Entity; |
| | | using HDL_ON.UI.CSS; |
| | | using HDL_ON.UI.Music; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.UI |
| | |
| | | public partial class FunctionControlZone : FrameLayout |
| | | { |
| | | #region 区域控件 |
| | | static FrameLayout bodyDiv; |
| | | FunctionControlZone bodyDiv; |
| | | /// <summary> |
| | | /// 功能/场景icon |
| | | /// </summary> |
| | |
| | | /// 收藏按钮 |
| | | /// </summary> |
| | | Button btnCollectionIcon; |
| | | /// <summary> |
| | | /// 离线文本 |
| | | /// </summary> |
| | | Button btnOffline; |
| | | |
| | | #endregion |
| | | |
| | | #region 区域变量 |
| | |
| | | /// 是否在调光 |
| | | /// </summary> |
| | | bool onDimmerBar; |
| | | /// <summary> |
| | | /// 删除设备后回调给界面刷新 |
| | | /// </summary> |
| | | Action action; |
| | | |
| | | #endregion |
| | | public FunctionControlZone(Function func) |
| | | public FunctionControlZone(Function func,Action action) |
| | | { |
| | | bodyDiv = this; |
| | | bodyDiv.Tag = func.sid; |
| | | function = func; |
| | | this.action = action; |
| | | } |
| | | |
| | | public override void RemoveFromParent() |
| | |
| | | /// </summary> |
| | | public void LoadFunctionDiv() |
| | | { |
| | | //todo 增加设备,增加功能列表卡片 |
| | | if (function == null) |
| | | { |
| | | this.RemoveFromParent(); |
| | | return; |
| | | } |
| | | LoadDiv(); |
| | | //if (function.spk == SPK.IpCam_Imou) |
| | | //{ |
| | | // InitIpCamDiv(); |
| | | //} |
| | | //else |
| | | { |
| | | LoadDiv(); |
| | | } |
| | | |
| | | btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png"; |
| | | |
| | | if(function.spk == SPK.GroupControl) |
| | | { |
| | | btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/lightswitch.png"; |
| | | } |
| | | if (SPK.CurtainSpkList().Contains(function.spk)) |
| | | {//窗帘没有开关按钮 |
| | | CurtainFragment(); |
| | |
| | | this.AddChidren(btnTipPowerLow); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | else if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose ) |
| | | { |
| | | var btnStatus = new Button() |
| | | { |
| | | X = Application.GetRealWidth(51), |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(18), |
| | | TextColor = CSS_Color.MainColor, |
| | | TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel, |
| | | Text = "", |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Tag = function.sid + "_SenesorMegahealth_Status" |
| | | }; |
| | | bodyDiv.AddChidren(btnStatus); |
| | | |
| | | |
| | | |
| | | var tempStatus = function.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; |
| | | btnStatus.TextColor = CSS_Color.WarningColor; |
| | | break; |
| | | case "2": |
| | | if (function.extSet.labModel) |
| | | { |
| | | btnStatus.TextID = StringId.SomeoneRunning; |
| | | btnStatus.TextColor = CSS_Color.WarningColor; |
| | | } |
| | | else |
| | | { |
| | | btnStatus.TextID = StringId.SomeoneIn; |
| | | btnStatus.TextColor = CSS_Color.WarningColor; |
| | | } |
| | | break; |
| | | case "3": |
| | | if (function.extSet.labModel) |
| | | { |
| | | btnStatus.TextID = StringId.SomeoneSitting; |
| | | btnStatus.TextColor = CSS_Color.WarningColor; |
| | | } |
| | | else |
| | | { |
| | | btnStatus.TextID = StringId.SomeoneIn; |
| | | btnStatus.TextColor = CSS_Color.WarningColor; |
| | | } |
| | | break; |
| | | case "4": |
| | | btnStatus.TextID = StringId.SomeoneFell; |
| | | btnStatus.TextColor = CSS_Color.WarningColor; |
| | | break; |
| | | case "5": |
| | | if (function.extSet.labModel) |
| | | { |
| | | btnStatus.TextID = StringId.SomeoneStanding; |
| | | btnStatus.TextColor = CSS_Color.WarningColor; |
| | | } |
| | | else |
| | | { |
| | | btnStatus.TextID = StringId.SomeoneIn; |
| | | btnStatus.TextColor = CSS_Color.WarningColor; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | else if (function.spk == SPK.DoorLock) |
| | | { |
| | | btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png"; |
| | | } |
| | | else if (function.spk == SPK.VideoDoorLock) |
| | | { |
| | | btnIcon.UnSelectedImagePath = UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.GetVideoDoorLockIcon(UI2.FuntionControlView.VideoDoorLock.CommonMethod.Comerom.function); |
| | | } |
| | | else if (function.spk == SPK.HvacCac) |
| | | { |
| | | var btnHumidityIcon = new Button() |
| | | { |
| | | X = Application.GetRealWidth(120), |
| | | Y = Application.GetRealHeight(66), |
| | | Width = Application.GetMinRealAverage(16), |
| | | Height = Application.GetMinRealAverage(18), |
| | | UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png", |
| | | }; |
| | | bodyDiv.AddChidren(btnHumidityIcon); |
| | | var btnHumidityValues = new TextButton() |
| | | { |
| | | X = Application.GetRealWidth(140), |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(18), |
| | | TextColor = 0xFF161616, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Text = function.GetAttrState(FunctionAttributeKey.RoomHumidity) + "%", |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Tag = function.sid + "_Humidity", |
| | | }; |
| | | btnHumidityValues.Width = btnHumidityValues.GetTextWidth(); |
| | | bodyDiv.AddChidren(btnHumidityValues); |
| | | |
| | | Button btnTempIcon = new Button() |
| | | { |
| | | X = Application.GetRealWidth(51), |
| | | Y = Application.GetRealHeight(66), |
| | | Width = Application.GetMinRealAverage(17), |
| | | Height = Application.GetMinRealAverage(17), |
| | | UnSelectedImagePath = "FunctionIcon/CAC/HvacCacTempIcon.png", |
| | | }; |
| | | bodyDiv.AddChidren(btnTempIcon); |
| | | |
| | | var btnTempValues = new TextButton() |
| | | { |
| | | X = Application.GetRealWidth(70), |
| | | Y = Application.GetRealHeight(64), |
| | | Height = Application.GetRealHeight(18), |
| | | TextColor = 0xFF161616, |
| | | TextSize = CSS_FontSize.TextFontSize, |
| | | Text = function.GetAttrState(FunctionAttributeKey.RoomTemp) + "°C", |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | Tag = function.sid + "_Temp", |
| | | }; |
| | | btnTempValues.Width = btnTempValues.GetTextWidth(); |
| | | bodyDiv.AddChidren(btnTempValues); |
| | | |
| | | var btnJinMaoIcon = new Button() |
| | | { |
| | | X = Application.GetRealWidth(238), |
| | | Y = Application.GetRealHeight(64), |
| | | Width = Application.GetRealWidth(102), |
| | | Height = Application.GetRealHeight(29), |
| | | UnSelectedImagePath = "FunctionIcon/CAC/JinMaoIcon.png" |
| | | }; |
| | | bodyDiv.AddChidren(btnJinMaoIcon); |
| | | |
| | | |
| | | |
| | | } |
| | | else if (function.spk == SPK.AcstParent) { |
| | | } |
| | | else |
| | | { |
| | | if (function.spk == SPK.ClothesHanger)//晾衣架 |
| | | { |
| | | ClothesHangerFragment(); |
| | | } |
| | | else if(function.spk == SPK.IpCam_Imou) |
| | | { |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | LoadEvent_DivSkipEvent(); |
| | | LoadEvent_FunctionCollection(); |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 加载ip摄像头卡片 |
| | | /// </summary> |
| | | 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 |
| | | }; |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | UnSelectedImagePath = "Collection/CollectionGrayIcon.png", |
| | | IsSelected = function.collect |
| | | }; |
| | | if ( !SPK.ArmSensorSpkList().Contains(function.spk) && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare && |
| | | 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.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose) |
| | | { |
| | | 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); |
| | | } |
| | | //排序 |
| | | //btnIcon.MouseLongEventHandler = (sender, e) => { |
| | | // OrderEvent(); |
| | | //}; |
| | | //btnName.MouseLongEventHandler = (sender, e) => { |
| | | // OrderEvent(); |
| | | //}; |
| | | //btnFromFloor.MouseLongEventHandler = (sender, e) => { |
| | | // OrderEvent(); |
| | | //}; |
| | | //bodyDiv.MouseLongEventHandler = (sender, e) => { |
| | | // OrderEvent(); |
| | | //}; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | switch (function.spk) |
| | | { |
| | | case SPK.LightDimming: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightRGB: |
| | | #region Dimmer |
| | | var btnDimmerMinValues = new Button() |
| | |
| | | /// </summary> |
| | | 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() |
| | | { |
| | |
| | | Height = Application.GetMinRealAverage(32), |
| | | UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseIcon.png", |
| | | SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseOnIcon.png", |
| | | IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff) == "off", |
| | | IsSelected = percent == 0, |
| | | Tag = function.sid + "_off" |
| | | }; |
| | | bodyDiv.AddChidren(btnCurtainClose); |
| | |
| | | UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenIcon.png", |
| | | SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenOnIcon.png", |
| | | Tag = function.sid + "_on", |
| | | IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff) == "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, function); |
| | | LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose); |
| | | #endregion |
| | | } |
| | | /// <summary> |
| | |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 排序事件 |
| | | /// </summary> |
| | | public Action OrderEvent; |
| | | |
| | | /// <summary> |
| | | /// 加载音乐功能控制卡片 |
| | |
| | | SelectedImagePath = "MusicIcon/nextSelected.png", |
| | | }; |
| | | bodyDiv.AddChidren(btnNext); |
| | | LoadEvent_ControlMusic(btnPlay, btnNext, btnPrev, function as A31MusicModel); |
| | | LoadEvent_ControlMusic(btnPlay, btnNext, btnPrev, function); |
| | | #endregion |
| | | } |
| | | |
| | |
| | | }; |
| | | bodyDiv.AddChidren(btnLastStates); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |