using System; using Shared; using System.Collections.Generic; using HDL_ON.Entity; using HDL_ON.UI.CSS; using System.Linq; namespace HDL_ON.UI.UI2.Intelligence.Automation { public class TargetDeviceFunList : FrameLayout { public TargetDeviceFunList() { Tag = "Logic"; } /// /// 设备延时时间 /// private string strdelay = "0"; /// /// 显示设备延时时间 /// private Button btnDelay =null; /// /// 当前设备 /// private Function device; /// /// 定义一个记录选中设备状态列表; /// private List> dicSateteList = new List>(); /// /// 定义一个变量,记录选中状态 /// private string selectedState = "unknown"; public void Show(Entity.Function device, int index, bool edit) { #region 界面布局 this.device = device; this.BackgroundColor = CSS.CSS_Color.viewMiddle; LogicView.TopView topView = new LogicView.TopView(); this.AddChidren(topView.FLayoutView()); topView.clickBackBtn.MouseUpEventHandler += (e, sen) => { RemoveFromParent(); }; topView.topNameBtn.Text = device.name; FrameLayout fLayout = new FrameLayout { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(667 - 64), }; this.AddChidren(fLayout); ///保存View LogicView.SaveView saveView = new LogicView.SaveView(); saveView.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); saveView.btnSave.TextID = StringId.completeLogic; this.AddChidren(saveView.FLayoutView()); #endregion #region 编辑设备状态 switch (device.spk) { //群控 case SPK.GroupControl: int height = Application.GetRealHeight(50); int attributesNameId = 0; int count = 0; foreach (var attr in (device as GroupControl).attributes) { if (attr.key == FunctionAttributeKey.OnOff || attr.key == FunctionAttributeKey.Brightness || attr.key == FunctionAttributeKey.CCT || attr.key == FunctionAttributeKey.RGB || attr.key == FunctionAttributeKey.Colorful) { LogicView.FunTypeView view = new LogicView.FunTypeView(); view.btnState.Name = "群控"; view.frameLayout.Y = count * height; fLayout.AddChidren(view.FLayoutView()); count++; switch (attr.key) { case FunctionAttributeKey.OnOff: attributesNameId = StringId.switchLogic; ///开关点击事件 view.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, view.btnState, 2); }; break; case FunctionAttributeKey.Brightness: attributesNameId = StringId.brightnesLogic; view.btnState.Text = "5%";//产品经理晓辉要求改的 2021-11-06 ///亮度点击事件 view.btnClick.MouseUpEventHandler += (sender, e) => { BrightnessMethod(device, view.btnState, view.btnText.Text); }; break; case FunctionAttributeKey.CCT: attributesNameId = StringId.ColorTemperature; ///色温点击事件 view.btnClick.MouseUpEventHandler += (sender, e) => { ColorTemperatureMethod(device, view.btnState, view.btnText.Text); }; break; case FunctionAttributeKey.RGB: attributesNameId = StringId.rgbsepan; view.btnState.Tag = ""; view.btnState.Width = Application.GetRealWidth(16); view.btnState.Height = Application.GetRealWidth(16); view.btnState.Radius = (uint)Application.GetRealWidth(8); view.btnState.X = Application.GetRealWidth(375 - 48 - 16); ///RGB色盘点击事件 view.btnClick.MouseUpEventHandler += (sender, e) => { RgbColorDiskMethod(device, view.btnState, view.btnText.Text); }; break; case FunctionAttributeKey.Colorful: attributesNameId = StringId.ColorfulFunction; view.btnState.Name = "colorful"; ///开关点击事件 view.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, view.btnState, 2); }; break; } view.btnText.TextID = attributesNameId; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, view.btnState, null, null, null, attr.key); } } } //设备延时iewv DelayView(fLayout, height * count); break; //插座(有USB) case SPK.PanelSocket: { #region 界面 ///总控开关 LogicView.FunTypeView view1 = new LogicView.FunTypeView(); view1.btnText.TextID = StringId.switchLogic; //view1.btnState.Name = "总控开关"; fLayout.AddChidren(view1.FLayoutView()); ///设备延时iewv DelayView(fLayout, view1.frameLayout.Bottom); #endregion #region 点击事件 ///总控开关点击事件 view1.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, view1.btnState, 2); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, view1.btnState, null, null, null); } #endregion } break; case SPK.CommonSeries: #region 界面 ///开关 LogicView.FunTypeView SerriesSwitchView = new LogicView.FunTypeView(); SerriesSwitchView.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(SerriesSwitchView.FLayoutView()); #endregion ///开关点击事件 SerriesSwitchView.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, SerriesSwitchView.btnState, 2); }; break; //开关灯光 case SPK.OtherCommon: case SPK.AirSwitch: case SPK.LightSwitch: case SPK.ElectricSocket: //机械手 case SPK.MechanicalArm: { #region 界面 ///开关 LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView(); lightSwitchView.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(lightSwitchView.FLayoutView()); ///设备延时iewv DelayView(fLayout, lightSwitchView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, lightSwitchView.btnState, 2); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, lightSwitchView.btnState, null, null, null); } #endregion } break; //灯光开关 亮度 case SPK.LightDimming: //case SPK.LightRGB: //case SPK.LightRGBW: { #region 界面 ///开关 LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView(); lightSwitchView.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(lightSwitchView.FLayoutView()); ///亮度 LogicView.FunTypeView brightnessView = new LogicView.FunTypeView(); brightnessView.frameLayout.Y = lightSwitchView.frameLayout.Bottom; brightnessView.btnText.TextID = StringId.brightnesLogic; fLayout.AddChidren(brightnessView.FLayoutView()); brightnessView.btnState.Text = "5%";//产品经理晓辉要求改的 2021-11-06 ///设备延时iewv DelayView(fLayout, brightnessView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, lightSwitchView.btnState, 2); }; ///亮度点击事件 brightnessView.btnClick.MouseUpEventHandler += (sender, e) => { BrightnessMethod(device, brightnessView.btnState, brightnessView.btnText.Text); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, lightSwitchView.btnState, brightnessView.btnState, null, null); } #endregion } break; case SPK.LightRGB: case SPK.LightRGBW: { #region 界面 ///开关 LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView(); lightSwitchView.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(lightSwitchView.FLayoutView()); ///亮度 LogicView.FunTypeView brightnessView = new LogicView.FunTypeView(); brightnessView.frameLayout.Y = lightSwitchView.frameLayout.Bottom; brightnessView.btnText.TextID = StringId.brightnesLogic; fLayout.AddChidren(brightnessView.FLayoutView()); brightnessView.btnState.Text = "5%";//产品经理晓辉要求改的 2021-11-06 ///RGB色盘 LogicView.FunTypeView rgbView = new LogicView.FunTypeView(); rgbView.frameLayout.Y = brightnessView.frameLayout.Bottom; rgbView.btnText.TextID = StringId.rgbsepan; rgbView.btnState.Tag = ""; rgbView.btnState.Width = Application.GetRealWidth(16); rgbView.btnState.Height = Application.GetRealWidth(16); rgbView.btnState.Radius = (uint)Application.GetRealWidth(8); rgbView.btnState.X = Application.GetRealWidth(375 - 48 - 16); fLayout.AddChidren(rgbView.FLayoutView()); ///设备延时iewv DelayView(fLayout, rgbView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, lightSwitchView.btnState, 2); }; ///亮度点击事件 brightnessView.btnClick.MouseUpEventHandler += (sender, e) => { BrightnessMethod(device, brightnessView.btnState, brightnessView.btnText.Text); }; ///RGB色盘点击事件 rgbView.btnClick.MouseUpEventHandler += (sender, e) => { RgbColorDiskMethod(device, rgbView.btnState, rgbView.btnText.Text); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, lightSwitchView.btnState, brightnessView.btnState, rgbView.btnState, null); } #endregion } break; case SPK.LightCCT: { #region 界面 ///开关 LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView(); lightSwitchView.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(lightSwitchView.FLayoutView()); ///亮度 LogicView.FunTypeView brightnessView = new LogicView.FunTypeView(); brightnessView.frameLayout.Y = lightSwitchView.frameLayout.Bottom; brightnessView.btnText.TextID = StringId.brightnesLogic; fLayout.AddChidren(brightnessView.FLayoutView()); brightnessView.btnState.Text = "5%";//产品经理晓辉要求改的 2021-11-06 ///色温 LogicView.FunTypeView colorTemperatureView = new LogicView.FunTypeView(); colorTemperatureView.frameLayout.Y = brightnessView.frameLayout.Bottom; colorTemperatureView.btnText.TextID = StringId.ColorTemperature; fLayout.AddChidren(colorTemperatureView.FLayoutView()); colorTemperatureView.btnState.Text = "2700k"; ///设备延时iewv DelayView(fLayout, colorTemperatureView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, lightSwitchView.btnState, 2); }; ///亮度点击事件 brightnessView.btnClick.MouseUpEventHandler += (sender, e) => { BrightnessMethod(device, brightnessView.btnState, brightnessView.btnText.Text); }; ///色温点击事件 colorTemperatureView.btnClick.MouseUpEventHandler += (sender, e) => { ColorTemperatureMethod(device, colorTemperatureView.btnState, colorTemperatureView.btnText.Text); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, lightSwitchView.btnState, brightnessView.btnState, colorTemperatureView.btnState, null); } #endregion } break; //窗帘 case SPK.CurtainSwitch: { #region 界面 ///开关 LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView(); curtainSwitchView.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(curtainSwitchView.FLayoutView()); DelayView(fLayout, curtainSwitchView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 curtainSwitchView.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, curtainSwitchView.btnState, 3); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, curtainSwitchView.btnState, null, null, null); } #endregion } break; case SPK.CurtainTrietex: case SPK.CurtainRoller: { #region 界面 ///开关 LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView(); curtainSwitchView.btnText.TextID = StringId.switchLogic; //fLayout.AddChidren(curtainSwitchView.FLayoutView());//2023年04月17日16:27:10 产品要求的去掉 ///百分比 LogicView.FunTypeView crtainPercentumView = new LogicView.FunTypeView(); //crtainPercentumView.frameLayout.Y = curtainSwitchView.frameLayout.Bottom; crtainPercentumView.btnText.TextID = StringId.percentum; fLayout.AddChidren(crtainPercentumView.FLayoutView()); crtainPercentumView.btnState.Text = "5%";//产品经理晓辉要求改的 2021-11-06 ///设备延时iewv DelayView(fLayout, crtainPercentumView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 curtainSwitchView.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, curtainSwitchView.btnState, 2); }; ///百分比点击事件 crtainPercentumView.btnClick.MouseUpEventHandler += (sender, e) => { BrightnessMethod(device, crtainPercentumView.btnState, crtainPercentumView.btnText.Text); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, curtainSwitchView.btnState, crtainPercentumView.btnState, null, null); } #endregion } break; case SPK.CurtainDream: { #region 界面 ///百分比 LogicView.FunTypeView crtainPercentumView = new LogicView.FunTypeView(); crtainPercentumView.btnText.TextID = StringId.percentum; fLayout.AddChidren(crtainPercentumView.FLayoutView()); crtainPercentumView.btnState.Text = "5%";//产品经理晓辉要求改的 2021-11-06 ///角度 LogicView.FunTypeView AngleView = new LogicView.FunTypeView(); AngleView.frameLayout.Y = crtainPercentumView.frameLayout.Bottom; AngleView.btnText.TextID = StringId.Angle; fLayout.AddChidren(AngleView.FLayoutView()); AngleView.btnState.Text = "10°"; ///设备延时iewv DelayView(fLayout, AngleView.frameLayout.Bottom); #endregion #region 点击事件 ///百分比点击事件 crtainPercentumView.btnClick.MouseUpEventHandler += (sender, e) => { BrightnessMethod(device, crtainPercentumView.btnState, crtainPercentumView.btnText.Text); }; ///角度点击事件 AngleView.btnClick.MouseUpEventHandler += (sender, e) => { BrightnessMethod(device, AngleView.btnState, AngleView.btnText.Text); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, crtainPercentumView.btnState, AngleView.btnState, null, null); } #endregion } break; case SPK.AcStandard: case SPK.HvacAC: case SPK.AcIr: { #region 界面 ///开关 LogicView.FunTypeView acSwitchVie = new LogicView.FunTypeView(); acSwitchVie.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(acSwitchVie.FLayoutView()); ///温度 LogicView.FunTypeView temperatureView = new LogicView.FunTypeView(); temperatureView.frameLayout.Y = acSwitchVie.frameLayout.Bottom; temperatureView.btnText.TextID = StringId.temperatureLogic; fLayout.AddChidren(temperatureView.FLayoutView()); ///模式 LogicView.FunTypeView acModehView = new LogicView.FunTypeView(); acModehView.frameLayout.Y = temperatureView.frameLayout.Bottom; acModehView.btnText.TextID = StringId.modeLogic; fLayout.AddChidren(acModehView.FLayoutView()); ///风速 LogicView.FunTypeView acSpeedView = new LogicView.FunTypeView(); acSpeedView.frameLayout.Y = acModehView.frameLayout.Bottom; acSpeedView.btnText.TextID = StringId.speedLogic; fLayout.AddChidren(acSpeedView.FLayoutView()); ///设备延时iewv DelayView(fLayout, acModehView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 acSwitchVie.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, acSwitchVie.btnState, 2); }; int min = device.GetAttribute("set_temp") == null ? 16 : device.GetAttribute("set_temp").min; int max = device.GetAttribute("set_temp") == null ? 32 : device.GetAttribute("set_temp").max; string unit = InpOrOutLogicMethod.Current.GetTemperatureUnit(device); ///温度点击事件 temperatureView.btnClick.MouseUpEventHandler += (sender, e) => { ///之前的状态文本 string tempValue = temperatureView.btnState.Text; LogicView.TemperatureView tempView = new LogicView.TemperatureView(); tempView.FLayoutView(this, tempValue, (stateStr) => { //界面显示选中值 temperatureView.btnState.Text = stateStr; //设备属性值,云雀上定义好的; string keyVlaue = "set_temp"; selectedState = device.spk + "_" + keyVlaue; string set_temp_value = stateStr.Replace(unit, ""); //数据封装 AddDictionary(keyVlaue, set_temp_value); }, min, max, unit); }; ///模式点击事件 acModehView.btnClick.MouseUpEventHandler += (sender, e) => { ///之前的状态文本 string currText = acModehView.btnState.Text; //设备属性值,云雀上定义好的; string keyVlaue = "mode"; selectedState = device.spk + "_" + keyVlaue; PublicInterface modeView = new PublicInterface(); var modeListStr = modeView.GetViewList(keyVlaue); modeView.SingleSelectionShow(this, modeListStr, Language.StringByID(StringId.modeLogic), currText , (stateValue) => { //界面显示选中值 acModehView.btnState.Text = stateValue; //数据封装 AddDictionary(keyVlaue, modeView.GetModeValueString(stateValue, keyVlaue)); }); }; ///风速点击事件 acSpeedView.btnClick.MouseUpEventHandler += (sender, e) => { ///之前的状态文本 string currText = acSpeedView.btnState.Text; //设备属性值,云雀上定义好的; string keyVlaue = "fan"; selectedState = device.spk + "_" + keyVlaue; PublicInterface speedView = new PublicInterface(); var speedListStr = speedView.GetViewList(keyVlaue); speedView.SingleSelectionShow(this, speedListStr, Language.StringByID(StringId.speedLogic), currText , (stateValue) => { //界面显示选中值 acSpeedView.btnState.Text = stateValue; //数据封装 AddDictionary(keyVlaue, speedView.GetModeValueString(stateValue, keyVlaue)); }); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, acSwitchVie.btnState, temperatureView.btnState, acModehView.btnState, acSpeedView.btnState); } #endregion } break; case SPK.FloorHeatStandard: case SPK.HvacFloorHeat: { #region 界面 ///开关 LogicView.FunTypeView floorHeatingSwitchVie = new LogicView.FunTypeView(); floorHeatingSwitchVie.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(floorHeatingSwitchVie.FLayoutView()); ///温度 LogicView.FunTypeView temperatureView = new LogicView.FunTypeView(); temperatureView.frameLayout.Y = floorHeatingSwitchVie.frameLayout.Bottom; temperatureView.btnText.TextID = StringId.temperatureLogic; fLayout.AddChidren(temperatureView.FLayoutView()); ///模式 LogicView.FunTypeView floorHeatingModehView = new LogicView.FunTypeView(); floorHeatingModehView.frameLayout.Y = temperatureView.frameLayout.Bottom; floorHeatingModehView.btnText.TextID = StringId.modeLogic; fLayout.AddChidren(floorHeatingModehView.FLayoutView()); ///设备延时iewv DelayView(fLayout, floorHeatingModehView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 floorHeatingSwitchVie.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, floorHeatingSwitchVie.btnState, 2); }; ///温度点击事件 temperatureView.btnClick.MouseUpEventHandler += (sender, e) => { int min = device.GetAttribute("set_temp") == null ? 16 : device.GetAttribute("set_temp").min; int max = device.GetAttribute("set_temp") == null ? 32 : device.GetAttribute("set_temp").max; string unit = InpOrOutLogicMethod.Current.GetTemperatureUnit(device); string tempValue = temperatureView.btnState.Text; LogicView.TemperatureView tempView = new LogicView.TemperatureView(); tempView.FLayoutView(this, tempValue, (stateStr) => { //界面显示选中值 temperatureView.btnState.Text = stateStr; //设备属性值,云雀上定义好的; string keyVlaue = "set_temp"; selectedState = device.spk + "_" + keyVlaue; string set_temp_value = stateStr.Replace(unit, ""); //数据封装 AddDictionary(keyVlaue, set_temp_value); }, min, max, unit); }; ///模式点击事件 floorHeatingModehView.btnClick.MouseUpEventHandler += (sender, e) => { ///之前的状态文本 string currText = floorHeatingModehView.btnState.Text; //设备属性值,云雀上定义好的; string keyVlaue = "mode"; selectedState = device.spk + "_" + keyVlaue; PublicInterface modeView = new PublicInterface(); var modeListStr = modeView.GetViewList("floorheatingmode"); modeView.SingleSelectionShow(this, modeListStr, Language.StringByID(StringId.modeLogic), currText , (stateValue) => { //界面显示选中值 floorHeatingModehView.btnState.Text = stateValue; //数据封装 AddDictionary(keyVlaue, modeView.GetModeValueString(stateValue, "floorheatingmode")); }); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, floorHeatingSwitchVie.btnState, temperatureView.btnState, floorHeatingModehView.btnState, null); } #endregion } break; case SPK.AirFreshStandard: case SPK.HvacAirFresh: { #region 界面 ///开关 LogicView.FunTypeView AirFreshSwitchVie = new LogicView.FunTypeView(); AirFreshSwitchVie.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(AirFreshSwitchVie.FLayoutView()); ///风速 LogicView.FunTypeView AirFreshSpeedView = new LogicView.FunTypeView(); AirFreshSpeedView.frameLayout.Y = AirFreshSwitchVie.frameLayout.Bottom; AirFreshSpeedView.btnText.TextID = StringId.speedLogic; fLayout.AddChidren(AirFreshSpeedView.FLayoutView()); ///设备延时iewv DelayView(fLayout, AirFreshSpeedView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 AirFreshSwitchVie.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, AirFreshSwitchVie.btnState, 2); }; ///风速点击事件 AirFreshSpeedView.btnClick.MouseUpEventHandler += (sender, e) => { //定义一个临时列表 List fanAttrList = new List(); //动态读取新风风速列表 var fanAttr = device.GetAttribute(FunctionAttributeKey.FanSpeed); foreach (var fanAttrValue in fanAttr.value) { switch (fanAttrValue) { case "high": { fanAttrList.Add(Language.StringByID(StringId.HighWindSpeed)); } break; case "medium": { fanAttrList.Add(Language.StringByID(StringId.MiddleWindSpeed)); } break; case "low": { fanAttrList.Add(Language.StringByID(StringId.LowWindSpeed)); } break; case "auto": { fanAttrList.Add(Language.StringByID(StringId.Auto)); break; } } } ///之前的状态文本 string currText = AirFreshSpeedView.btnState.Text; //设备属性值,云雀上定义好的; string keyVlaue = "fan"; selectedState = device.spk + "_" + keyVlaue; PublicInterface speedView = new PublicInterface(); var speedListStr = fanAttrList;// speedView.GetViewList(keyVlaue); speedView.SingleSelectionShow(this, speedListStr, Language.StringByID(StringId.speedLogic), currText , (stateValue) => { //界面显示选中值 AirFreshSpeedView.btnState.Text = stateValue; //数据封装 AddDictionary(keyVlaue, speedView.GetModeValueString(stateValue, keyVlaue)); }); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, AirFreshSwitchVie.btnState, AirFreshSpeedView.btnState, null, null); } #endregion } break; //音乐 case SPK.MusicStandard: case SPK.AvMusic: { #region 界面 ///开关 LogicView.FunTypeView switchVie = new LogicView.FunTypeView(); switchVie.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(switchVie.FLayoutView()); //提示语音 LogicView.FunTypeView funTypeView = new LogicView.FunTypeView(); funTypeView.frameLayout.Y = switchVie.frameLayout.Bottom; funTypeView.btnText.TextID = StringId.tishiyin; fLayout.AddChidren(funTypeView.FLayoutView()); ///音量 LogicView.FunTypeView volView = new LogicView.FunTypeView(); volView.frameLayout.Y = funTypeView.frameLayout.Bottom; volView.btnText.TextID = StringId.volumeMusic; fLayout.AddChidren(volView.FLayoutView()); //if (SPK.AvMusic == device.spk) //{ // //不支持特殊语音 // volView.frameLayout.Y = Application.GetRealHeight(0); //} ///设备延时iewv var delayView = DelayView(fLayout, volView.frameLayout.Bottom); if (edit ) { Output outputs = Logic.currlogic.output[index]; var dicList = outputs.status.Find((obj) => obj.ContainsValue(FunctionAttributeKey.OnOff)); if (dicList != null) { if (dicList.ContainsValue( "off") || dicList.ContainsValue("pause")) { funTypeView.frameLayout.Visible = false; volView.frameLayout.Visible = false; delayView.frameLayout.Y = switchVie.frameLayout.Bottom; } } } #endregion #region 点击事件 ///开关点击事件 switchVie.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, switchVie.btnState, 2, (v) => { if (v == "on") { funTypeView.frameLayout.Visible = true; volView.frameLayout.Visible = true; delayView.frameLayout.Y = volView.frameLayout.Bottom; } else { funTypeView.frameLayout.Visible = false; volView.frameLayout.Visible = false; delayView.frameLayout.Y = switchVie.frameLayout.Bottom; } }); }; ///提示语音点击事件 funTypeView.btnClick.MouseUpEventHandler += (sender, e) => { selectedState = device.spk + "_"; Loading loading = new Loading(); this.AddChidren(loading); loading.Start(); System.Threading.Tasks.Task.Run(() => { try { //HDL_ON.DriverLayer.Control.Ins.GetMusicDirectory(device); //var palyListName = Music.SendMethod.mMethod.GetListName(device); var palyList = Music.SendMethod.Current.GetSingleSongList(device, "hdl_special", ""); List songNameList = new List(); for (int i = 0; i < palyList.songs.Count; i++) { var song = palyList.songs[i]; songNameList.Add(song.name); } Application.RunOnMainThread(() => { loading.Hide(); PublicInterface publicInterface = new PublicInterface(); publicInterface.FrameOrVv(this, songNameList, new List { funTypeView.btnState.Text }, palyList.group, (index2) => { var songSelecetd = palyList.songs[index2]; //界面显示选中值 funTypeView.btnState.Text = songSelecetd.name; //数据封装 AddDictionary("playlist_name", palyList.group);//列表名 AddDictionary("song_name", songSelecetd.name);//歌曲名 if (!string.IsNullOrEmpty(songSelecetd.url)) { //存在url就一起发送过去 AddDictionary("url", songSelecetd.url); } }, false); }); } catch { } }); }; ///音量点击事件 volView.btnClick.MouseUpEventHandler += (sender, e) => { selectedState = device.spk + "_volume"; new LogicView.TipPopView { }.InputBox(StringId.volumeMusic, volView.btnState.Text, (value) => { //界面显示选中值 volView.btnState.Text = value; //数据封装 AddDictionary("volume", value);//音量 }, 0, 100); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, switchVie.btnState, funTypeView.btnState, volView.btnState, null); } #endregion } break; //海信电视 case SPK.ElectricalTvHisense: { #region 界面 ///开关 LogicView.FunTypeView switchView = new LogicView.FunTypeView(); switchView.btnText.TextID = StringId.switchLogic; fLayout.AddChidren(switchView.FLayoutView()); ///音量 LogicView.FunTypeView volView = new LogicView.FunTypeView(); volView.frameLayout.Y = switchView.frameLayout.Bottom; volView.btnText.TextID = StringId.yinliang; fLayout.AddChidren(volView.FLayoutView()); ///信号源 LogicView.FunTypeView sourceView = new LogicView.FunTypeView(); sourceView.frameLayout.Y = volView.frameLayout.Bottom; sourceView.btnText.TextID = StringId.xinhaoyuan; fLayout.AddChidren(sourceView.FLayoutView()); ///设备延时iewv DelayView(fLayout, sourceView.frameLayout.Bottom); #endregion #region 点击事件 ///开关点击事件 switchView.btnClick.MouseUpEventHandler += (sender, e) => { SwitchViewMethod(device, switchView.btnState, 2); }; ///音量点击事件 volView.btnClick.MouseUpEventHandler += (sender, e) => { //selectedState = device.spk + "_volume"; //new LogicView.TipPopView { }.InputBox(StringId.volumeMusic, volView.btnState.Text, (value) => //{ // //界面显示选中值 // volView.btnState.Text = value; // //数据封装 // AddDictionary("setvolume", value);//音量 //}, 0, 100); BrightnessMethod(device, volView.btnState, volView.btnText.Text); }; ///信号源点击事件 sourceView.btnClick.MouseUpEventHandler += (sender, e) => { ///之前的状态文本 string currText = sourceView.btnState.Text; //设备属性值,云雀上定义好的; string key = "signal"; selectedState = device.spk + "_" + key; PublicInterface pif = new PublicInterface(); var dic = pif.GetHisenseSignalSourceDic(); pif.SingleSelectionShow(this, dic.Keys.ToList(), Language.StringByID(StringId.xinhaoyuan), currText , (valueStr) => { //界面显示选中值 sourceView.btnState.Text = valueStr; string value = pif.GetValue(dic, valueStr); //数据封装 AddDictionary(key, value); }); }; if (edit) { //显示编辑之前的设备状态 GetEditDeviceState(device, index, switchView.btnState, volView.btnState, sourceView.btnState, null); } #endregion } break; } #endregion #region 保存点击事件 saveView.btnClick.MouseUpEventHandler += (sen, e) => { if (selectedState != "unknown") { Output outputDevice = new Output(); outputDevice.target_type = "1"; outputDevice.sid = device.sid; outputDevice.delay = strdelay; switch (device.spk) { case SPK.LightDimming: case SPK.LightRGB: case SPK.LightRGBW: case SPK.LightCCT: { //调光做了一个特殊处理; if (dicSateteList.Count > 1) { foreach (var dictionary in dicSateteList) { string keyValue = dictionary["key"]; if (keyValue == "on_off") { if (dictionary["value"] == "off") { //移除列表所有数据 dicSateteList.Clear(); //重新添加-关-属性数据 Dictionary diction = new Dictionary(); diction.Add("key", "on_off"); diction.Add("value", "off"); dicSateteList.Add(diction); break; } } } } break; } case SPK.HvacAC: case SPK.AcIr: case SPK.AcStandard: case SPK.FloorHeatStandard: case SPK.HvacFloorHeat: { //做了一个特殊处理; bool _bool = false; for (int i = 0; i < dicSateteList.Count; i++) { var dic = dicSateteList[i]; if (dic.ContainsValue("on_off")) { //判断是否存在 _bool = true; break; } } if (!_bool) { //没有开关就默认添加-开-属性 Dictionary diction = new Dictionary { { "key", "on_off" }, { "value", "on" } }; dicSateteList.Add(diction); } } break; //音乐 case SPK.MusicStandard: case SPK.AvMusic: { string volume = "volume"; var dicObj = dicSateteList.Find((dic) => dic.ContainsValue(volume)); if (dicObj != null) { //有配置音乐音量属性,要重新排列,音量在前面 var dicList = new List>(); dicList.Add(dicObj);//先添加音量属性 var diclist = dicSateteList.FindAll((dic) => !dic.ContainsValue(volume)); dicList.AddRange(diclist);//再添加其它属性 dicSateteList = dicList;//重新赋值 } var onoffDic = dicSateteList.Find((obj) => obj.ContainsValue("on_off")); if (onoffDic != null) { if (onoffDic.ContainsValue("off")) { for(int i =0;i /// 延时View /// /// 父控件 /// 在哪个控件下面 private LogicView.FunTypeView DelayView(FrameLayout fLayout, int bottomY) { LogicView.FunTypeView delayView = new LogicView.FunTypeView(); delayView.frameLayout.Y = bottomY; delayView.btnText.TextID = StringId.Delay; delayView.btnState.Text = LogicMethod.Current.getTimeStr(strdelay); fLayout.AddChidren(delayView.FLayoutView()); ///赋值对象 this.btnDelay = delayView.btnState; ///延时点击事件 delayView.btnClick.MouseUpEventHandler += (sender, e) => { InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod(); inpOrOutLogicMethod.Delayed(this, strdelay, (value) => { strdelay = value.ToString(); delayView.btnState.Text = LogicMethod.Current.getTimeStr(strdelay); selectedState = "delay_" + strdelay; }); }; return delayView; } /// /// 开关=功能下一级界面 /// /// /// /// 显示选择View数量 /// 点击回调事件,用来给音乐刷新界面使用,wxr 2024-01-04 16:03:47 private void SwitchViewMethod(Entity.Function device, Button button, int len,Action action = null) { #region 界面 FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence }; this.AddChidren(frame); LogicView.SwitchView switchView = new LogicView.SwitchView(); switchView.FLayoutView(frame, len, button.Text, (value) => { int id = 0; switch (value) { case "on": { id = StringId.onLogic; } break; case "off": { id = StringId.offLogic; } break; case "stop": { id = StringId.stop; } break; } //界面显示选中值 button.TextID = id; selectedState = device.spk + "_" + value; //设备属性值,云雀上定义好的; string key = "on_off"; switch (device.spk) { case SPK.PanelSocket: { //if (button.Name == "总控开关") //{ // key = "on_off_master"; //} } break; case SPK.GroupControl: { if (button.Name == "colorful") { key = "colorful"; } } break; case SPK.ElectricalTvHisense: { if ("on" == value) { key = "wol"; } } break; } //数据封装 AddDictionary(key, value); action?.Invoke(value); }); #endregion } /// /// 亮度/百分比=功能下一级界面 /// /// /// private void BrightnessMethod(Entity.Function device, Button button, string titleName) { #region 界面 //之前的状态值 string stateVlaue = button.Text; LogicView.BrightnessView brightness = new LogicView.BrightnessView(); brightness.FLayoutView(this, titleName, stateVlaue, (brightnesValue, unitStr) => { //界面显示选中值 button.Text = brightnesValue + unitStr; selectedState = device.spk + brightnesValue.ToString(); //设备属性值,云雀上定义好的; string keyVlaue = ""; switch (device.spk) { //开关灯光 light.Switch case SPK.LightDimming: case SPK.LightRGB: case SPK.LightRGBW: case SPK.LightCCT: case SPK.GroupControl: { keyVlaue = "brightness"; } break; case SPK.CurtainRoller: case SPK.CurtainTrietex: case SPK.CurtainDream: { keyVlaue = "percent"; if (unitStr == "°") { //角度 keyVlaue = "angle"; } } break; case SPK.ElectricalTvHisense: { keyVlaue = "set_volume"; } break; } //数据封装 AddDictionary(keyVlaue, brightnesValue); }); #endregion } /// /// 色温(cct)=功能下一级界面 /// /// /// private void ColorTemperatureMethod(Entity.Function device, Button button, string titleName) { #region 界面 //之前的状态值 string stateVlaue = button.Text; LogicView.ColorTemperature brightness = new LogicView.ColorTemperature(); brightness.FLayoutView(this, titleName, stateVlaue, (colorTemperatureValue, unitStr) => { //界面显示选中值 button.Text = colorTemperatureValue + unitStr; selectedState = device.spk + colorTemperatureValue.ToString(); //设备属性值,云雀上定义好的; string keyVlaue = ""; switch (device.spk) { case SPK.LightCCT: case SPK.GroupControl: { keyVlaue = "cct"; } break; } //数据封装 AddDictionary(keyVlaue, colorTemperatureValue); }); #endregion } /// /// RGB色盘专用 /// /// 设备 /// 状态控件 /// 标题 private void RgbColorDiskMethod(Entity.Function device, Button button, string titleName) { LogicView.RGBColorView rgbColorView = new LogicView.RGBColorView(); rgbColorView.LoadRGBDialog(button.Tag.ToString(), (rgbValueStr) => { button.BackgroundColor = rgbColorView.GetBackgroundColor(rgbValueStr); //界面显示选中值 button.Tag = rgbValueStr; //button.Text = rgbValueStr; selectedState = device.spk + rgbValueStr.ToString(); //设备属性值,云雀上定义好的; string keyVlaue = ""; switch (device.spk) { case SPK.LightRGB: case SPK.GroupControl: { keyVlaue = "rgb"; } break; case SPK.LightRGBW: { keyVlaue = "rgbw"; } break; } //数据封装 AddDictionary(keyVlaue, rgbValueStr); }); } /// /// 显示编辑之前的设备状态 /// /// 编辑设备 /// 编辑数据的索引 /// 显示Btn /// 显示Btn /// 显示Btn /// 显示Btn /// 属性key private void GetEditDeviceState(Entity.Function device, int index, Button button1, Button button2, Button button3, Button button4, string attribute="") { Output outputs = Logic.currlogic.output[index]; var dicList = outputs.status; //清除之前旧数据 dicSateteList.Clear(); if (dicList.Count != 0) { //有数据重新赋值 dicSateteList.AddRange(dicList); } if (this.btnDelay != null) { ///延时显示文本 this.btnDelay.Text =LogicMethod.Current.getTimeStr(outputs.delay); this.strdelay = outputs.delay; } InpOrOutLogicMethod.Current.EditDeviceState(device, dicList, button1, button2, button3, button4, attribute); } /// /// 添加选中数据 /// /// 设备属性值,云雀上定义好的 /// 状态值 private void AddDictionary(string key, string value) { //数据封装 Dictionary dic = new Dictionary(); LogicMethod.Current.dictionary(dic, "key", key); LogicMethod.Current.dictionary(dic, "value", value); AddDictionaryList(key, dic); } /// /// 更新数据列表 /// /// 设备属性值,云雀上定义好的 /// 添加选中数据 /// private void AddDictionaryList(string key, Dictionary dictionary) { if (this.device.spk == SPK.ElectricalTvHisense) { //特殊处理 if (key == "on_off") { key = "wol"; } else if (key == "wol") { key = "on_off"; } } int indexValue = -1; for (int i = 0; i < dicSateteList.Count; i++) { var dic = dicSateteList[i]; if (dic.ContainsValue(key)) { //判断是否存在 indexValue = i; break; } } if (indexValue != -1) { //存在移除 dicSateteList.RemoveAt(indexValue); //重新添加 dicSateteList.Insert(indexValue, dictionary); } else { //新添加 dicSateteList.Add(dictionary); } } /// /// 添加目标 /// /// private void AddTarget(Output target) { int indexValue = -1; for (int i = 0; i < Logic.currlogic.output.Count; i++) { if (Logic.currlogic.output[i].sid == target.sid) { indexValue = i; break; } } if (indexValue != -1) { Logic.currlogic.output.RemoveAt(indexValue); Logic.currlogic.output.Insert(indexValue, target); } else { Logic.currlogic.output.Add(target); } } } }