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)
{
//插座(有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;
}
#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;//重新赋值
}
}
break;
case SPK.GroupControl:
{
outputDevice.target_type = "5";
}
break;
}
outputDevice.status.AddRange(dicSateteList);
if (edit)
{
//更新延时时间
outputDevice.delay = strdelay;//Logic.currlogic.output[index].delay;
//移除旧数据
Logic.currlogic.output.RemoveAt(index);
//新数据插入旧数据的位置;
Logic.currlogic.output.Insert(index, outputDevice);
}
else
{
//添加一个条件
AddTarget(outputDevice);
}
}
else
{
if (!edit)
{
//提示用户
return;
}
this.RemoveFromParent();
return;
}
LogicMethod.Current.RemoveAllView();
AddLogic addLogic = new AddLogic();
MainPage.BasePageView.AddChidren(addLogic);
addLogic.Show();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
#endregion
}
///
/// 延时View
///
/// 父控件
/// 在哪个控件下面
private void 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;
});
};
}
///
/// 开关=功能下一级界面
///
///
///
/// 显示选择View数量
private void SwitchViewMethod(Entity.Function device, Button button, int len)
{
#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);
});
#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);
}
}
}
}