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