using System;
|
using Shared;
|
using System.Collections.Generic;
|
using HDL_ON.Entity;
|
|
namespace HDL_ON.UI.UI2.Intelligence.Automation
|
{
|
public class InpOrOutLogicMethod
|
{
|
/// <summary>
|
/// 输入条件处理方法
|
/// </summary>
|
/// <param name="thisView">当前界面</param>
|
/// <param name="viewLayout">上下滑动控件</param>
|
public static void InputCondition(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
|
{
|
for (int i = 0; i < Logic.currlogic.input.Count; i++)
|
{
|
Input inputCondition = Logic.currlogic.input[i];
|
///各种条件的View
|
LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView();
|
inputView.FLayoutView(viewLayout);
|
//添加没有延时,隐藏延时按钮;
|
inputView.btnDelay.Visible = false;
|
///记录条件类型
|
inputView.btnClick.Name = inputCondition.condition_type;
|
///记录条件索引
|
inputView.btnClick.Tag = inputCondition;
|
///条件状态数组
|
List<Dictionary<string, string>> dicList = inputCondition.condition;
|
//显示条件各种类型状态
|
switch (inputCondition.condition_type)
|
{
|
case "1":
|
{
|
inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
|
foreach (var dic in dicList)
|
{
|
string keyValue = dic["key"];
|
string value = dic["value"];
|
if (keyValue == "timepoint")
|
{
|
inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value;
|
}
|
else
|
{
|
string strtext = "";
|
string statetext = "";
|
switch (keyValue)
|
{
|
case "before_sunrise":
|
{
|
strtext = Language.StringByID(StringId.sunrise);
|
statetext = Language.StringByID(StringId.advanced);
|
|
}
|
break;
|
case "before_sunset":
|
{
|
|
strtext = Language.StringByID(StringId.sunset);
|
statetext = Language.StringByID(StringId.advanced);
|
|
}
|
break;
|
case "before_noon":
|
{
|
strtext = Language.StringByID(StringId.at);
|
statetext = Language.StringByID(StringId.advanced);
|
}
|
break;
|
case "after_sunrise":
|
{
|
strtext = Language.StringByID(StringId.sunrise);
|
statetext = Language.StringByID(StringId.delayLogic);
|
}
|
break;
|
case "after_sunset":
|
{
|
strtext = Language.StringByID(StringId.sunset);
|
statetext = Language.StringByID(StringId.delayLogic);
|
}
|
break;
|
case "after_noon":
|
{
|
strtext = Language.StringByID(StringId.at);
|
statetext = Language.StringByID(StringId.delayLogic);
|
}
|
break;
|
}
|
|
if (value != "0")
|
{
|
if (value == "30")
|
{
|
statetext += value + Language.StringByID(StringId.s);
|
}
|
else
|
{
|
statetext += value + Language.StringByID(StringId.minute);
|
}
|
}
|
else
|
{
|
statetext = "";
|
}
|
|
inputView.btnText.Text = strtext;
|
inputView.btnState.Text = statetext;
|
}
|
}
|
}
|
break;
|
case "2":
|
{
|
inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value;
|
}
|
|
}
|
break;
|
case "3":
|
{
|
//用sid找到设备;
|
var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
|
//用设备的functionType类型找到对应图标;
|
inputView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk);
|
//显示设备名称
|
inputView.btnText.Text = device.name;
|
//改变设备名称显示控件宽度
|
inputView.btnText.Width = Application.GetRealWidth(80);
|
//区别不同设备,显示不同设备状态
|
switch (device.spk)
|
{
|
//开关灯光
|
case SPK.AirSwitch:
|
case SPK.LightDimming:
|
case SPK.LightRGB:
|
case SPK.LightRGBW:
|
case SPK.LightCCT:
|
case SPK.LightSwitch:
|
//窗帘
|
case SPK.CurtainSwitch:
|
case SPK.CurtainRoller:
|
case SPK.CurtainTrietex:
|
//空调
|
case SPK.AcStandard:
|
case SPK.HvacAC:
|
//地热
|
case SPK.HvacFloorHeat:
|
case SPK.FloorHeatStandard:
|
//新风
|
case SPK.AirFreshStandard:
|
case SPK.HvacAirFresh:
|
//插座
|
case SPK.PanelSocket:
|
case SPK.ElectricSocket:
|
{//开关灯
|
foreach (var dic in dicList)
|
{
|
|
string value = dic["value"];
|
if (value == "on")
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.onLogic);
|
|
}
|
else
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.offLogic);
|
}
|
}
|
}
|
break;
|
//传感器
|
case SPK.SensorSmoke:
|
case SPK.SensorGas:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "alarm")
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.xieluo);
|
|
}
|
else
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.wuxieluo);
|
}
|
}
|
}
|
break;
|
case SPK.SensorWater:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "alarm")
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.luoshui);
|
|
}
|
else
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.wuluoshui);
|
}
|
}
|
}
|
break;
|
case SPK.SensorDryContact:
|
case SPK.SensorDryContact2:
|
{
|
foreach (var dic in dicList)
|
{
|
|
string value = dic["value"];
|
if (value == "on")
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.onLogic);
|
|
}
|
else
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.offLogic);
|
}
|
}
|
}
|
break;
|
case SPK.SensorShanLan:
|
case SPK.SensorDuiShe:
|
case SPK.SensorPir:
|
{
|
foreach (var dic in dicList)
|
{
|
|
string value = dic["value"];
|
if (value == "true")
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.youren);
|
|
}
|
else
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.wuren);
|
}
|
}
|
}
|
break;
|
case SPK.SensorDoorWindow:
|
{
|
foreach (var dic in dicList)
|
{
|
|
string value = dic["value"];
|
if (value == "open")
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
|
|
}
|
else
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.bihe);
|
}
|
}
|
}
|
break;
|
case SPK.SensorUtrasonic:
|
{
|
string str = "";
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (dic["key"])
|
{
|
case "status":
|
case "people_status":
|
{
|
if (value == "true")
|
{
|
str += Language.StringByID(StringId.youren) + ";";
|
}
|
else
|
{
|
str += Language.StringByID(StringId.wuren) + ";";
|
}
|
|
|
}
|
break;
|
case "dismantle":
|
{
|
if (value == "true")
|
{
|
str += Language.StringByID(StringId.zaixian);
|
}
|
else
|
{
|
str += Language.StringByID(StringId.buzaixian);
|
}
|
}
|
break;
|
|
}
|
|
}
|
inputView.btnState.Text = str;
|
}
|
break;
|
case SPK.SenesorMegahealth:
|
case SPK.SenesorMegahealth2:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "fall")
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.diedao);
|
}
|
else
|
{
|
inputView.btnState.Text = Language.StringByID(StringId.wuren);
|
}
|
}
|
}
|
break;
|
case SPK.SensorEnvironment:
|
case SPK.SensorEnvironment2:
|
case SPK.SensorEnvironment3:
|
{
|
string strtext = "";
|
foreach (var dic in dicList)
|
{
|
string key = dic["key"];
|
string value = dic["value"];
|
string comparator = dic["comparator"];
|
switch (key)
|
{
|
|
case "temperature":
|
{
|
if (comparator == ">")
|
{
|
strtext = ">" + value + "℃";
|
}
|
else if (comparator == "<")
|
{
|
strtext = "<" + value + "℃";
|
}
|
|
}
|
break;
|
case "humidity":
|
{
|
if (comparator == ">")
|
{
|
strtext = ">" + value + "%";
|
}
|
else if (comparator == "<")
|
{
|
strtext = "<" + value + "%";
|
}
|
|
}
|
break;
|
case "co2":
|
{
|
strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value);
|
}
|
break;
|
case "pm25":
|
{
|
strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value);
|
}
|
break;
|
case "tvoc":
|
{
|
strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value);
|
}
|
break;
|
}
|
inputView.btnState.Text = strtext;
|
}
|
|
|
}
|
break;
|
case SPK.SensorTemperature:
|
{
|
|
string str = new InpOrOutLogicMethod { }.GetText(dicList, "temperature");
|
inputView.btnState.Text = str;
|
}
|
break;
|
case SPK.SensorHumidity:
|
{
|
string str = new InpOrOutLogicMethod { }.GetText(dicList, "humidity");
|
inputView.btnState.Text = str;
|
|
}
|
break;
|
case SPK.SensorCO2:
|
{
|
string str = new InpOrOutLogicMethod { }.GetText(dicList, "co2");
|
inputView.btnState.Text = str;
|
|
}
|
break;
|
case SPK.SensorPm25:
|
{
|
string str = new InpOrOutLogicMethod { }.GetText(dicList, "pm25");
|
inputView.btnState.Text = str;
|
|
}
|
break;
|
case SPK.SensorTVOC:
|
{
|
string str = new InpOrOutLogicMethod { }.GetText(dicList, "tvoc");
|
inputView.btnState.Text = str;
|
|
}
|
break;
|
case SPK.SensorHcho:
|
{
|
string str = new InpOrOutLogicMethod { }.GetText(dicList, "hcho");
|
inputView.btnState.Text = str;
|
|
}
|
break;
|
}
|
}
|
break;
|
case "6":
|
{
|
//inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
|
inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
|
string strtext = "";
|
string strvalue = "";
|
foreach (var dic in dicList)
|
{
|
string key = dic["key"];
|
string comparator = dic["comparator"];
|
string value = dic["value"];
|
|
switch (key)
|
{
|
case "temperature":
|
{
|
//云端天气条件 城市温度触发
|
strvalue = value + "℃";
|
if (comparator == ">")
|
{
|
strtext = Language.StringByID(StringId.wendugaoyu);
|
}
|
else if (comparator == "<")
|
{
|
strtext = Language.StringByID(StringId.wendudiyu);
|
}
|
|
}
|
break;
|
case "humidity":
|
{
|
//云端天气条件 城市湿度触发
|
strvalue = value + "%";
|
if (comparator == ">")
|
{
|
strtext = Language.StringByID(StringId.shidugaoyu);
|
}
|
else if (comparator == "<")
|
{
|
strtext = Language.StringByID(StringId.shidudiyu);
|
}
|
|
}
|
break;
|
case "pm25":
|
{
|
//云端天气条件 城市pm2.5触发
|
strtext = Language.StringByID(StringId.PM25);
|
strvalue = new PublicInterface { }.GetString("pm25", value);
|
}
|
break;
|
case "weather":
|
{
|
//云端天气条件 城市天气触发
|
strtext = Language.StringByID(StringId.tianqibianhua);
|
switch (value)
|
{
|
case "Sunny":
|
{
|
strtext = Language.StringByID(StringId.clearday);
|
|
}
|
break;
|
case "Cloudy":
|
{
|
|
strtext = Language.StringByID(StringId.cloudy);
|
|
}
|
break;
|
case "Rain":
|
{
|
strtext = Language.StringByID(StringId.rain);
|
}
|
break;
|
|
}
|
}
|
break;
|
case "airquality":
|
{
|
//云端天气条件 城市空气质量
|
strtext = Language.StringByID(StringId.kongqizhiliang);
|
switch (value)
|
{
|
case "Excellent":
|
{
|
strtext = Language.StringByID(StringId.kongqiyou);
|
|
}
|
break;
|
case "Good":
|
{
|
|
strtext = Language.StringByID(StringId.kongqiliang);
|
|
}
|
break;
|
case "Poor":
|
{
|
strtext = Language.StringByID(StringId.kongqicha);
|
}
|
break;
|
}
|
}
|
break;
|
}
|
|
|
}
|
inputView.btnText.Text = strtext;
|
inputView.btnState.Text = strvalue;
|
}
|
break;
|
case "8":
|
{
|
inputView.btnIcon.UnSelectedImagePath = "LogicIcon/inputlocation.png";
|
foreach (var dic in dicList)
|
{
|
string strtext = "";
|
string value = dic["value"];
|
switch (value)
|
{
|
case "arrive":
|
{
|
strtext = Language.StringByID(StringId.daoda);
|
}
|
break;
|
case "leave":
|
{
|
strtext = Language.StringByID(StringId.likai);
|
}
|
break;
|
}
|
inputView.btnText.TextID = StringId.likiadaoda;
|
inputView.btnState.Text = strtext;
|
}
|
}
|
break;
|
case "10":
|
{
|
//用sid找到场景;
|
var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid);
|
inputView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
|
inputView.btnNextIcon.Visible = false;
|
inputView.btnClick.Visible = false;
|
//显示场景名称
|
inputView.btnText.Text = scene.name;
|
}
|
break;
|
|
}
|
//再次编辑条件状态点击事件
|
inputView.btnClick.MouseUpEventHandler += (sen, e) =>
|
{
|
Button button = (Button)sen;
|
//当前编辑的条件
|
Input ckcliInput = inputView.btnClick.Tag as Input;
|
//找到当前编辑的索引
|
int indexVulae = 0;
|
for (int index = 0; index < Logic.currlogic.input.Count; index++)
|
{
|
Input input = Logic.currlogic.input[index];
|
if (input.sid == ckcliInput.sid)
|
{
|
if (button.Name == "3")
|
{
|
//有些设备比较特殊(例如:海林传感器还是要判断属性值,温湿度属性还要判断比较关系,才能确认是否已经存在该条件,其他设备条件直接用sid判断即可)
|
//加一级判断是为兼容特殊设备
|
if (new ConditionDeviceFunList { }.IsContainsAll(ckcliInput.condition, input.condition))
|
{
|
//用户可能删除数据,使列表索引发生改变;
|
//通过唯一sid重新查找到索引且更新索引值
|
indexVulae = index;
|
break;
|
}
|
}
|
else
|
{
|
//用户可能删除数据,使列表索引发生改变;
|
//通过唯一sid重新查找到索引且更新索引值
|
indexVulae = index;
|
break;
|
}
|
}
|
}
|
//标记编辑状态
|
bool edit = true;
|
switch (button.Name)
|
{
|
case "1":
|
{
|
bool is_bool = false;
|
Input _input = Logic.currlogic.input[indexVulae];
|
if (_input.condition_type == "1")
|
{
|
var dicLists = _input.condition;
|
foreach (var dic in dicLists)
|
{
|
string keyValue = dic["key"];
|
if (keyValue != "timepoint")
|
{
|
//通过键值查找键值是否是
|
//(日出/日落/正午)
|
is_bool = true;
|
break;
|
}
|
|
}
|
|
}
|
if (is_bool)
|
{
|
//跳转到(日出/日落/正午)界面
|
SpeciaTime speciaTime = new SpeciaTime();
|
MainPage.BasePageView.AddChidren(speciaTime);
|
speciaTime.Show(edit, indexVulae);
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
}
|
else
|
{
|
//跳转到(时间点)界面
|
FrameLayout fLayout = new FrameLayout
|
{
|
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
|
};
|
thisView.AddChidren(fLayout);
|
TimeTpye timeTpye = new TimeTpye();
|
timeTpye.TimePoint(fLayout, edit, indexVulae);
|
}
|
}
|
break;
|
case "2":
|
{
|
FrameLayout fLayout = new FrameLayout
|
{
|
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
|
};
|
thisView.AddChidren(fLayout);
|
TimeTpye timeTpye = new TimeTpye();
|
timeTpye.TimeHorizon(fLayout, edit, indexVulae);
|
}
|
break;
|
case "3":
|
{
|
//用sid找到设备;
|
var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
|
if (device.spk == SPK.SensorEnvironment
|
|| device.spk == SPK.SensorEnvironment2
|
|| device.spk == SPK.SensorEnvironment3
|
)
|
{
|
//这个设备比较特殊
|
ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
|
///当前的索引值数据对象
|
Input inputedit = Logic.currlogic.input[indexVulae];
|
///状态值
|
string stateValue = "";
|
foreach (var dic in inputedit.condition)
|
{
|
string key = dic["key"];
|
string comparator = dic["comparator"];
|
stateValue = dic["value"];
|
switch (key)
|
{
|
|
case "temperature":
|
{
|
int titleInt = 0;
|
if (comparator == ">")
|
{
|
titleInt = StringId.wendugaoyu;
|
}
|
else if (comparator == "<")
|
{
|
titleInt = StringId.wendudiyu;
|
}
|
conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
|
}
|
break;
|
case "humidity":
|
{
|
int titleInt = 0;
|
if (comparator == ">")
|
{
|
titleInt = StringId.shidugaoyu;
|
}
|
else if (comparator == "<")
|
{
|
titleInt = StringId.shidudiyu;
|
}
|
conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
|
}
|
break;
|
case "co2":
|
{
|
conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
|
}
|
break;
|
case "pm25":
|
{
|
conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
|
}
|
break;
|
case "tvoc":
|
{
|
conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
|
}
|
break;
|
case "hcho":
|
{
|
conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
|
}
|
break;
|
}
|
}
|
|
}
|
else if (device.spk == SPK.SensorTemperature)
|
{
|
|
new InpOrOutLogicMethod().SensorView(thisView, device, "temperature", indexVulae);
|
|
}
|
else if (device.spk == SPK.SensorHumidity)
|
{
|
|
new InpOrOutLogicMethod().SensorView(thisView, device, "humidity", indexVulae);
|
|
}
|
else if (device.spk == SPK.SensorCO2)
|
{
|
|
new InpOrOutLogicMethod().SensorView(thisView, device, "co2", indexVulae);
|
|
}
|
else if (device.spk == SPK.SensorPm25)
|
{
|
|
new InpOrOutLogicMethod().SensorView(thisView, device, "pm25", indexVulae);
|
|
}
|
else if (device.spk == SPK.SensorTVOC)
|
{
|
|
new InpOrOutLogicMethod().SensorView(thisView, device, "tvoc", indexVulae);
|
|
}
|
else if (device.spk == SPK.SensorHcho)
|
{
|
|
new InpOrOutLogicMethod().SensorView(thisView, device, "hcho", indexVulae);
|
|
}
|
else
|
{
|
ConditionDeviceFunList deviceFunList = new ConditionDeviceFunList();
|
MainPage.BasePageView.AddChidren(deviceFunList);
|
deviceFunList.Show(device, indexVulae, edit);
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
}
|
}
|
break;
|
case "6":
|
{
|
///当前的索引值数据对象
|
Input inputedit = Logic.currlogic.input[indexVulae];
|
///状态值
|
string stateValue = "";
|
///状态值文本
|
int intValue = -1;
|
foreach (var dic in inputedit.condition)
|
{
|
string key = dic["key"];
|
string comparator = dic["comparator"];
|
stateValue = dic["value"];
|
switch (key)
|
{
|
case "temperature":
|
{
|
if (comparator == ">")
|
{
|
intValue = StringId.wendugaoyu;
|
}
|
else if (comparator == "<")
|
{
|
intValue = StringId.wendudiyu;
|
|
}
|
|
}
|
break;
|
case "humidity":
|
{
|
|
if (comparator == ">")
|
{
|
intValue = StringId.shidugaoyu;
|
}
|
else if (comparator == "<")
|
{
|
intValue = StringId.shidudiyu;
|
}
|
|
}
|
break;
|
case "pm25":
|
{
|
intValue = StringId.PM25;
|
}
|
break;
|
case "weather":
|
{
|
intValue = StringId.tianqibianhua;
|
}
|
break;
|
case "airquality":
|
{
|
intValue = StringId.kongqizhiliang;
|
}
|
break;
|
|
}
|
}
|
OutdoorEnvironment outdoorEnvironment = new OutdoorEnvironment();
|
if (intValue == StringId.tianqibianhua)
|
{
|
//城市天气(晴天,下雨)
|
WeatherCondition weatherCondition = new WeatherCondition();
|
MainPage.BasePageView.AddChidren(weatherCondition);
|
weatherCondition.Show();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
}
|
else if (intValue == StringId.PM25)
|
{
|
//城市天气(pm2.5)
|
outdoorEnvironment.PmAction(thisView, stateValue);
|
}
|
else if (intValue == StringId.kongqizhiliang)
|
{
|
//城市天气(空气质量)
|
AirQuality airQuality = new AirQuality();
|
MainPage.BasePageView.AddChidren(airQuality);
|
airQuality.Show();
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
}
|
else
|
{
|
//城市天气(温湿度)
|
outdoorEnvironment.InputBoxAction(intValue, stateValue);
|
}
|
}
|
break;
|
case "8":
|
{
|
AddInputType addInputType = new AddInputType();
|
addInputType.LocationView(thisView, true);
|
}
|
break;
|
|
}
|
};
|
///删除控件
|
inputView.btnDel.MouseUpEventHandler += (sender, e) =>
|
{
|
Logic.currlogic.input.Remove(inputCondition);
|
inputView.frameLayout.RemoveFromParent();
|
};
|
}
|
|
}
|
/// <summary>
|
/// 输出条件处理方法
|
/// </summary>
|
/// <param name="thisView">当前界面</param>
|
/// <param name="viewLayout">上下滑动控件</param>
|
public static void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
|
{
|
|
for (int i = 0; i < Logic.currlogic.output.Count; i++)
|
{
|
Output outputTarget = Logic.currlogic.output[i];
|
///各种条件的View
|
LogicView.AddOutputInputView targetView = new LogicView.AddOutputInputView();
|
targetView.FLayoutView(viewLayout);
|
///记录条件类型
|
targetView.btnClick.Name = outputTarget.target_type;
|
///记录条件索引
|
targetView.btnClick.Tag = outputTarget.sid;
|
///条件状态数组
|
List<Dictionary<string, string>> dicList = outputTarget.status;
|
//显示状态值
|
string stateStr = "";
|
//显示输出条件各种类型状态
|
switch (outputTarget.target_type)
|
{
|
case "1":
|
{
|
//用sid找到设备;
|
var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
|
//用设备的functionType类型找到对应图标;
|
targetView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk);
|
//显示设备名称
|
targetView.btnText.Text = device.name;
|
//改变设备名称显示控件宽度
|
targetView.btnText.Width = Application.GetRealWidth(80);
|
//区别不同设备,显示不同设备状态
|
switch (device.spk)
|
{
|
case SPK.AirSwitch:
|
case SPK.LightSwitch:
|
//插座
|
case SPK.PanelSocket:
|
case SPK.ElectricSocket:
|
{//开关
|
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "on")
|
{
|
stateStr = Language.StringByID(StringId.onLogic);
|
|
}
|
else
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
}
|
}
|
break;
|
case SPK.LightRGB:
|
case SPK.LightRGBW:
|
case SPK.LightCCT:
|
case SPK.LightDimming:
|
{
|
string on_off = GetKeyValue("on_off", dicList);
|
string brightness = GetKeyValue("brightness", dicList);
|
if (on_off == "on" && brightness != "")
|
{
|
stateStr = Language.StringByID(StringId.onLogic) + brightness + "%";
|
}
|
else if (on_off == "on")
|
{
|
stateStr = Language.StringByID(StringId.onLogic);
|
}
|
else if (on_off == "off")
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
else if (brightness != "")
|
{
|
stateStr = brightness + "%";
|
}
|
|
}
|
break;
|
case SPK.CurtainSwitch:
|
case SPK.CurtainTrietex:
|
case SPK.CurtainRoller:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (value)
|
{
|
case "on":
|
{
|
stateStr = Language.StringByID(StringId.onLogic);
|
}
|
break;
|
case "off":
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
break;
|
case "stop":
|
{
|
stateStr = Language.StringByID(StringId.stop);
|
}
|
break;
|
}
|
}
|
}
|
break;
|
case SPK.AcStandard:
|
case SPK.HvacAC:
|
{
|
string on_off = GetKeyValue("on_off", dicList);
|
string set_temp = GetKeyValue("set_temp", dicList);
|
string mode = GetKeyValue("mode", dicList);
|
string fan = GetKeyValue("fan", dicList);
|
if (on_off != "")
|
{
|
switch (on_off)
|
{
|
case "on":
|
{
|
stateStr = Language.StringByID(StringId.onLogic) + ",";
|
}
|
break;
|
case "off":
|
{
|
stateStr = Language.StringByID(StringId.offLogic) + ",";
|
}
|
break;
|
|
}
|
}
|
|
if (set_temp != "")
|
{
|
|
stateStr += set_temp + "℃,";
|
}
|
|
if (mode != "")
|
{
|
|
switch (mode)
|
{
|
case "cool":
|
{
|
stateStr += Language.StringByID(StringId.coolLogic) + ",";
|
}
|
break;
|
case "heat":
|
{
|
stateStr += Language.StringByID(StringId.heatingLogic) + ",";
|
}
|
break;
|
case "auto":
|
{
|
stateStr += Language.StringByID(StringId.autoLogic) + ",";
|
}
|
break;
|
case "dry":
|
{
|
stateStr += Language.StringByID(StringId.dehumidifyLogic) + ",";
|
}
|
break;
|
}
|
|
}
|
|
if (fan != "")
|
{
|
|
switch (fan)
|
{
|
case "high":
|
{
|
stateStr += Language.StringByID(StringId.HighWindSpeed) + ",";
|
}
|
break;
|
case "medium":
|
{
|
stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ",";
|
}
|
break;
|
case "low":
|
{
|
stateStr += Language.StringByID(StringId.LowWindSpeed) + ",";
|
}
|
break;
|
case "auto":
|
{
|
stateStr += Language.StringByID(StringId.Auto) + ",";
|
}
|
break;
|
}
|
|
}
|
if (on_off != "" && on_off == "off")
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
else
|
{
|
stateStr = stateStr.TrimEnd(',');
|
|
}
|
|
}
|
break;
|
case SPK.FloorHeatStandard:
|
case SPK.HvacFloorHeat:
|
{
|
string on_off = GetKeyValue("on_off", dicList);
|
string set_temp = GetKeyValue("set_temp", dicList);
|
string mode = GetKeyValue("mode", dicList);
|
if (on_off != "")
|
{
|
switch (on_off)
|
{
|
case "on":
|
{
|
stateStr = Language.StringByID(StringId.onLogic) + ",";
|
}
|
break;
|
case "off":
|
{
|
stateStr = Language.StringByID(StringId.offLogic) + ",";
|
}
|
break;
|
|
}
|
}
|
if (set_temp != "")
|
{
|
|
stateStr += set_temp + "℃,";
|
}
|
if (mode != "")
|
{
|
|
switch (mode)
|
{
|
case "day":
|
{
|
stateStr += Language.StringByID(StringId.dayMode) + ",";
|
}
|
break;
|
case "night":
|
{
|
stateStr += Language.StringByID(StringId.nightMode) + ",";
|
}
|
break;
|
|
case "away":
|
{
|
stateStr += Language.StringByID(StringId.leaveMode) + ",";
|
}
|
break;
|
case "normal":
|
{
|
stateStr += Language.StringByID(StringId.ordinaryMode) + ",";
|
}
|
break;
|
case "timer":
|
{
|
stateStr += Language.StringByID(StringId.timeMode) + ",";
|
}
|
break;
|
}
|
|
}
|
if (on_off != "" && on_off == "off")
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
else
|
{
|
stateStr = stateStr.TrimEnd(',');
|
|
}
|
}
|
break;
|
case SPK.AirFreshStandard:
|
case SPK.HvacAirFresh:
|
{
|
string on_off = GetKeyValue("on_off", dicList);
|
string fan = GetKeyValue("fan", dicList);
|
if (on_off != "")
|
{
|
switch (on_off)
|
{
|
case "on":
|
{
|
stateStr = Language.StringByID(StringId.onLogic) + ",";
|
}
|
break;
|
case "off":
|
{
|
stateStr = Language.StringByID(StringId.offLogic) + ",";
|
}
|
break;
|
}
|
}
|
if (fan != "")
|
{
|
|
switch (fan)
|
{
|
case "high":
|
{
|
stateStr += Language.StringByID(StringId.HighWindSpeed) + ",";
|
}
|
break;
|
case "medium":
|
{
|
stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ",";
|
}
|
break;
|
case "low":
|
{
|
stateStr += Language.StringByID(StringId.LowWindSpeed) + ",";
|
}
|
break;
|
case "auto":
|
{
|
stateStr += Language.StringByID(StringId.Auto) + ",";
|
}
|
break;
|
}
|
|
}
|
if (on_off != "" && on_off == "off")
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
else
|
{
|
stateStr = stateStr.TrimEnd(',');
|
|
}
|
}
|
break;
|
}
|
}
|
break;
|
case "2":
|
{
|
//用sid找到场景;
|
var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid);
|
targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
|
targetView.btnNextIcon.Visible = false;
|
//显示场景名称
|
stateStr = scene.name;
|
}
|
break;
|
case "3":
|
{
|
//用sid找到安防;
|
var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid);
|
targetView.btnIcon.UnSelectedImagePath = "LogicIcon/security.png";
|
targetView.btnDelay.Visible = false;
|
//显示安防名称
|
targetView.btnText.Text = security.name;
|
string value = GetKeyValue("security", dicList);
|
if (value == "enable")
|
{
|
stateStr = Language.StringByID(StringId.bufang);
|
|
}
|
else
|
{
|
stateStr = Language.StringByID(StringId.chefang);
|
}
|
|
}
|
break;
|
case "4":
|
{
|
targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
stateStr = value;
|
}
|
}
|
break;
|
}
|
|
if (outputTarget.target_type == "1" || outputTarget.target_type == "3")
|
{
|
targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
|
}
|
else
|
{
|
targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
|
}
|
//再次编辑条件状态点击事件
|
targetView.btnClick.MouseUpEventHandler += (sen, e) =>
|
{
|
Button button = (Button)sen;
|
//找到当前编辑的索引
|
int indexVulae = 0;
|
for (int index = 0; index < Logic.currlogic.output.Count; index++)
|
{
|
Output target = Logic.currlogic.output[index];
|
if (target.sid == targetView.btnClick.Tag.ToString())
|
{
|
//用户可能删除数据,使列表索引发生改变;
|
//通过唯一sid重新查找到索引且更新索引值
|
indexVulae = index;
|
break;
|
}
|
}
|
//标记编辑状态
|
bool edit = true;
|
switch (button.Name)
|
{
|
case "1":
|
{
|
//用sid找到设备;
|
var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
|
TargetDeviceFunList deviceFunList = new TargetDeviceFunList();
|
MainPage.BasePageView.AddChidren(deviceFunList);
|
deviceFunList.Show(device, indexVulae, edit);
|
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
|
}
|
break;
|
case "3":
|
{
|
Security security = new Security();
|
security.SecurityMethod(thisView, "", edit, indexVulae);
|
}
|
break;
|
case "4":
|
{
|
FrameLayout fLayout = new FrameLayout
|
{
|
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
|
};
|
thisView.AddChidren(fLayout);
|
AddTarget addTarget = new AddTarget();
|
addTarget.Delayed(fLayout, edit, indexVulae);
|
|
|
}
|
break;
|
}
|
};
|
//延时点击事件
|
targetView.btnDelay.MouseUpEventHandler += (sen, e) =>
|
{
|
|
InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod();
|
inpOrOutLogicMethod.Delayed(thisView, outputTarget, (value) =>
|
{
|
outputTarget.delay = value.ToString();
|
if (outputTarget.target_type == "1")
|
{
|
targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
|
}
|
else
|
{
|
targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
|
}
|
});
|
|
};
|
///删除控件
|
targetView.btnDel.MouseUpEventHandler += (sender, e) =>
|
{
|
Logic.currlogic.output.Remove(outputTarget);
|
targetView.frameLayout.RemoveFromParent();
|
};
|
}
|
}
|
/// <summary>
|
/// 显示编辑之前的设备状态
|
/// </summary>
|
/// <param name="device">编辑设备</param>
|
/// <param name="button1">显示Btn</param>
|
/// <param name="button2">显示Btn</param>
|
/// <param name="button3">显示Btn</param>
|
/// <param name="button4">显示Btn</param>
|
public static void EditState(Entity.Function device, List<Dictionary<string, string>> dicList, Button button1, Button button2, Button button3, Button button4)
|
{
|
switch (device.spk)
|
{
|
//插座
|
case SPK.PanelSocket:
|
case SPK.ElectricSocket:
|
//开关灯光
|
case SPK.AirSwitch:
|
case SPK.LightSwitch:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "on")
|
{
|
button1.Text = Language.StringByID(StringId.onLogic);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.offLogic);
|
}
|
}
|
}
|
break;
|
case SPK.LightDimming:
|
case SPK.LightRGB:
|
case SPK.LightRGBW:
|
case SPK.LightCCT:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (dic["key"])
|
{
|
case "on_off":
|
{
|
if (value == "on")
|
{
|
button1.Text = Language.StringByID(StringId.onLogic);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.offLogic);
|
}
|
}
|
break;
|
case "brightness":
|
{
|
if (button2 == null)
|
{
|
//怕调试软件乱上东西导致抛异常
|
break;
|
}
|
button2.Text = value + "%";
|
}
|
break;
|
}
|
|
}
|
}
|
break;
|
case SPK.CurtainSwitch:
|
case SPK.CurtainTrietex:
|
case SPK.CurtainRoller:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (value)
|
{
|
case "on":
|
{
|
button1.Text = Language.StringByID(StringId.onLogic);
|
}
|
break;
|
case "off":
|
{
|
button1.Text = Language.StringByID(StringId.offLogic);
|
}
|
break;
|
case "stop":
|
{
|
button1.Text = Language.StringByID(StringId.stop);
|
}
|
break;
|
}
|
}
|
}
|
break;
|
case SPK.AcStandard:
|
case SPK.HvacAC:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (dic["key"])
|
{
|
case "on_off":
|
{
|
switch (value)
|
{
|
case "on":
|
{
|
button1.Text = Language.StringByID(StringId.onLogic);
|
}
|
break;
|
case "off":
|
{
|
button1.Text = Language.StringByID(StringId.offLogic);
|
}
|
break;
|
}
|
}
|
break;
|
case "set_temp":
|
{
|
if (button2 == null)
|
{
|
//怕调试软件乱上东西导致抛异常
|
break;
|
}
|
button2.Text = value + "℃";
|
}
|
break;
|
case "mode":
|
{
|
if (button3 == null)
|
{
|
//怕调试软件乱上东西导致抛异常
|
break;
|
}
|
switch (value)
|
{
|
case "cool":
|
{
|
button3.Text = Language.StringByID(StringId.coolLogic);
|
}
|
break;
|
case "heat":
|
{
|
button3.Text = Language.StringByID(StringId.heatingLogic);
|
}
|
break;
|
case "auto":
|
{
|
button3.Text = Language.StringByID(StringId.autoLogic);
|
}
|
break;
|
case "dry":
|
{
|
button3.Text = Language.StringByID(StringId.dehumidifyLogic);
|
}
|
break;
|
}
|
|
|
|
}
|
break;
|
case "fan":
|
{
|
if (button4 == null)
|
{
|
//怕调试软件乱上东西导致抛异常
|
break;
|
}
|
switch (value)
|
{
|
case "high":
|
{
|
button4.Text = Language.StringByID(StringId.HighWindSpeed);
|
}
|
break;
|
case "medium":
|
{
|
button4.Text = Language.StringByID(StringId.MiddleWindSpeed);
|
}
|
break;
|
case "low":
|
{
|
button4.Text = Language.StringByID(StringId.LowWindSpeed);
|
}
|
break;
|
case "auto":
|
{
|
button4.Text = Language.StringByID(StringId.Auto);
|
}
|
break;
|
}
|
|
|
}
|
break;
|
|
|
}
|
|
}
|
|
}
|
break;
|
case SPK.FloorHeatStandard:
|
case SPK.HvacFloorHeat:
|
{
|
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (dic["key"])
|
{
|
case "on_off":
|
{
|
switch (value)
|
{
|
case "on":
|
{
|
button1.Text = Language.StringByID(StringId.onLogic);
|
}
|
break;
|
case "off":
|
{
|
button1.Text = Language.StringByID(StringId.offLogic);
|
}
|
break;
|
}
|
}
|
break;
|
case "set_temp":
|
{
|
if (button2 == null)
|
{
|
//怕调试软件乱上东西导致抛异常
|
break;
|
}
|
button2.Text = value + "℃";
|
}
|
break;
|
case "mode":
|
{
|
if (button3 == null)
|
{
|
//怕调试软件乱上东西导致抛异常
|
break;
|
}
|
switch (value)
|
{
|
case "day":
|
{
|
button3.Text = Language.StringByID(StringId.dayMode);
|
}
|
break;
|
case "night":
|
{
|
button3.Text = Language.StringByID(StringId.nightMode);
|
}
|
break;
|
|
case "away":
|
{
|
button3.Text = Language.StringByID(StringId.leaveMode);
|
}
|
break;
|
case "normal":
|
{
|
button3.Text = Language.StringByID(StringId.ordinaryMode);
|
}
|
break;
|
case "timer":
|
{
|
button3.Text = Language.StringByID(StringId.timeMode);
|
}
|
break;
|
}
|
|
|
|
}
|
break;
|
|
}
|
|
}
|
|
}
|
break;
|
case SPK.AirFreshStandard:
|
case SPK.HvacAirFresh:
|
{
|
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (dic["key"])
|
{
|
case "on_off":
|
{
|
switch (value)
|
{
|
case "on":
|
{
|
button1.Text = Language.StringByID(StringId.onLogic);
|
}
|
break;
|
case "off":
|
{
|
button1.Text = Language.StringByID(StringId.offLogic);
|
}
|
break;
|
}
|
}
|
break;
|
|
case "fan":
|
{
|
if (button2 == null)
|
{
|
//怕调试软件乱上东西导致抛异常
|
break;
|
}
|
switch (value)
|
{
|
case "high":
|
{
|
button2.Text = Language.StringByID(StringId.HighWindSpeed);
|
}
|
break;
|
case "medium":
|
{
|
button2.Text = Language.StringByID(StringId.MiddleWindSpeed);
|
}
|
break;
|
case "low":
|
{
|
button2.Text = Language.StringByID(StringId.LowWindSpeed);
|
}
|
break;
|
case "auto":
|
{
|
button2.Text = Language.StringByID(StringId.Auto);
|
}
|
break;
|
}
|
|
|
}
|
break;
|
|
}
|
|
}
|
|
}
|
break;
|
case SPK.SensorGas:
|
case SPK.SensorSmoke:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "alarm")
|
{
|
button1.Text = Language.StringByID(StringId.xieluo);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.wuxieluo);
|
}
|
}
|
}
|
break;
|
case SPK.SensorWater:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "alarm")
|
{
|
button1.Text = Language.StringByID(StringId.luoshui);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.wuluoshui);
|
}
|
}
|
}
|
break;
|
case SPK.SensorDryContact:
|
case SPK.SensorDryContact2:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "on")
|
{
|
button1.Text = Language.StringByID(StringId.onLogic);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.offLogic);
|
}
|
}
|
}
|
break;
|
case SPK.SensorShanLan:
|
case SPK.SensorDuiShe:
|
case SPK.SensorPir:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "true")
|
{
|
button1.Text = Language.StringByID(StringId.youren);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.wuren);
|
}
|
}
|
}
|
break;
|
case SPK.SensorDoorWindow:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "open")
|
{
|
button1.Text = Language.StringByID(StringId.kaiqi);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.bihe);
|
}
|
}
|
}
|
break;
|
case SPK.SensorUtrasonic:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (dic["key"])
|
{
|
case "status":
|
case "people_status":
|
{
|
if (value == "true")
|
{
|
button1.Text = Language.StringByID(StringId.youren);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.wuren);
|
}
|
|
|
}
|
break;
|
case "dismantle":
|
{
|
if (value == "true")
|
{
|
button1.Text = Language.StringByID(StringId.zaixian);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.buzaixian);
|
}
|
}
|
break;
|
|
}
|
|
}
|
}
|
break;
|
case SPK.SenesorMegahealth:
|
case SPK.SenesorMegahealth2:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "fall")
|
{
|
button1.Text = Language.StringByID(StringId.diedao);
|
}
|
else
|
{
|
button1.Text = Language.StringByID(StringId.wuren);
|
}
|
}
|
}
|
break;
|
}
|
}
|
/// <summary>
|
/// 获取value键值
|
/// </summary>
|
/// <param name="keyValue"></param>
|
/// <param name="dicList"></param>
|
/// <returns></returns>
|
public static string GetKeyValue(string keyValue, List<Dictionary<string, string>> dicList)
|
{
|
|
string valueStr = "";
|
foreach (var dic in dicList)
|
{
|
if (dic["key"] == keyValue)
|
{
|
valueStr = dic["value"];
|
break;
|
}
|
|
}
|
return valueStr;
|
}
|
/// <summary>
|
///获取自动化名称
|
/// </summary>
|
/// <returns> 新建自动化命名规则</returns>
|
public static string GetLogicName(Logic logic)
|
{
|
|
string name = "";
|
try
|
{
|
//默认取第一个条件
|
Input inputCondition = logic.input[0];
|
//显示条件各种类型状态
|
switch (inputCondition.condition_type)
|
{
|
case "1":
|
{
|
name = Language.StringByID(StringId.hour) + "-";
|
}
|
break;
|
case "2":
|
{
|
name = Language.StringByID(StringId.timeHorizon) + "-";
|
|
}
|
break;
|
case "3":
|
{
|
//用sid找到设备;
|
var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
|
name = device.name + "-";
|
}
|
break;
|
case "10":
|
{
|
//用sid找到场景;
|
var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid);
|
name = scene.name + "-";
|
}
|
break;
|
|
}
|
//默认取第一个目标
|
Output outputTarget = logic.output[0];
|
List<Dictionary<string, string>> dicList = outputTarget.status as List<Dictionary<string, string>>;
|
//显示输出条件各种类型状态
|
switch (outputTarget.target_type)
|
{
|
case "1":
|
{
|
//用sid找到设备;
|
var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
|
//显示设备名称
|
name += device.name;
|
string stateStr = "";
|
//区别不同设备,显示不同设备状态
|
switch (device.spk)
|
{
|
case SPK.AirSwitch:
|
case SPK.LightSwitch:
|
{//开关灯
|
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "on")
|
{
|
stateStr = Language.StringByID(StringId.onLogic);
|
|
}
|
else
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
}
|
}
|
break;
|
case SPK.LightRGB:
|
case SPK.LightRGBW:
|
case SPK.LightCCT:
|
case SPK.LightDimming:
|
{
|
string on_off = InpOrOutLogicMethod.GetKeyValue("on_off", dicList);
|
string brightness = InpOrOutLogicMethod.GetKeyValue("brightness", dicList);
|
if (on_off == "on" && brightness != "")
|
{
|
stateStr = Language.StringByID(StringId.onLogic) + brightness + "%";
|
}
|
else if (on_off == "on")
|
{
|
stateStr = Language.StringByID(StringId.onLogic);
|
}
|
else if (on_off == "off")
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
else if (brightness != "")
|
{
|
stateStr = brightness + "%";
|
}
|
}
|
break;
|
case SPK.CurtainSwitch:
|
case SPK.CurtainTrietex:
|
case SPK.CurtainRoller:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
switch (value)
|
{
|
case "on":
|
{
|
stateStr = Language.StringByID(StringId.onLogic);
|
}
|
break;
|
case "off":
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
break;
|
case "stop":
|
{
|
stateStr = Language.StringByID(StringId.stop);
|
}
|
break;
|
}
|
}
|
}
|
break;
|
case SPK.AcStandard:
|
case SPK.HvacAC:
|
case SPK.FloorHeatStandard:
|
case SPK.HvacFloorHeat:
|
{
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
if (value == "on")
|
{
|
stateStr = Language.StringByID(StringId.onLogic);
|
|
}
|
else if (value == "off")
|
{
|
stateStr = Language.StringByID(StringId.offLogic);
|
}
|
}
|
|
}
|
break;
|
|
}
|
name += stateStr;
|
}
|
break;
|
case "2":
|
{
|
//用sid找到场景;
|
var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid);
|
name += scene.name;
|
|
}
|
break;
|
case "3":
|
{
|
//用sid找到安防;
|
var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid);
|
name += security.name;
|
|
}
|
break;
|
}
|
|
if (!MainView.IsGatewayType)
|
{
|
name += Language.StringByID(StringId.push);
|
}
|
}
|
catch { }
|
return name;
|
}
|
/// <summary>
|
/// 延时时间方法
|
/// </summary>
|
/// <param name="fLayout">在哪个界面显示</param>
|
/// <param name="edit">(true=编辑;false=新建)</param>
|
/// <param name="index">编辑条件的索引</param>
|
private void Delayed(FrameLayout thisFLayout, Output output, Action<int> action)
|
{
|
FrameLayout fLayout = new FrameLayout
|
{
|
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
|
};
|
thisFLayout.AddChidren(fLayout);
|
LogicView.TimeView timePointView = new LogicView.TimeView();
|
timePointView.FLayoutView(fLayout);
|
EventHandler<MouseEventArgs> RemovefLayout = (sender, e1) =>
|
{
|
//移除fLayout界面
|
fLayout.RemoveFromParent();
|
};
|
//取消点击事件
|
timePointView.btnCancel.MouseUpEventHandler += RemovefLayout;
|
|
//加载数据界面的设置方法(列表互不联动)
|
timePointView.mUIPickerView.setNPicker(timePointView.GetmStringList(), timePointView.GetsStringList(), null);
|
//默认初始选中状态
|
timePointView.mUIPickerView.setCurrentItems(0, 5, 0);
|
//定义一个局部变量记录选中时间
|
int timepoint = 5;
|
|
if (output.delay != "0")
|
{
|
int intValue = int.Parse(output.delay);
|
var m = intValue / 60;
|
var s = intValue % 60;
|
|
string timeValue = m.ToString() + ":" + s.ToString();
|
int mIndex = timePointView.GetValueIndex(timeValue, 0, 1, timePointView.GetmIntList());
|
int sIndex = timePointView.GetValueIndex(timeValue, 1, 0, timePointView.GetmIntList());
|
//更新初始状态
|
timePointView.mUIPickerView.setCurrentItems(mIndex, sIndex, 0);
|
timepoint = intValue;
|
}
|
|
|
//选中时间回调方法,时间变化一次回调一次
|
timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
|
{
|
string minuet = timePointView.GethStringList0()[index1].Split(' ')[0];
|
string second = timePointView.GetmStringList()[index2].Split(' ')[0];
|
int minuetIntValue = int.Parse(minuet);
|
int secondIntValue = int.Parse(second);
|
timepoint = minuetIntValue * 60 + secondIntValue;
|
};
|
//确定点击事件
|
timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) =>
|
{
|
if (timepoint == 0)
|
{
|
//提示
|
return;
|
}
|
fLayout.RemoveFromParent();
|
action(timepoint);
|
};
|
}
|
/// <summary>
|
/// 获取时间文本描述
|
/// </summary>
|
/// <param name="strTimeValue">时间值(单位s秒)</param>
|
/// <returns></returns>
|
private string GetTimeText(string strTimeValue)
|
{
|
var timeValue = int.Parse(strTimeValue);
|
string state = "";
|
var minutes = timeValue / 60;
|
var seconds = timeValue % 60;
|
if (minutes != 0)
|
{
|
if (seconds == 0)
|
{
|
state = minutes.ToString() + Language.StringByID(StringId.minute);
|
}
|
else
|
{
|
state = minutes.ToString() + Language.StringByID(StringId.minute) + seconds.ToString() + Language.StringByID(StringId.s);
|
}
|
}
|
else
|
{
|
if (seconds != 0)
|
{
|
state = seconds.ToString() + Language.StringByID(StringId.s);
|
}
|
}
|
if (!string.IsNullOrEmpty(state))
|
{
|
state = Language.StringByID(StringId.delayLogic) + state;
|
}
|
return state;
|
}
|
/// <summary>
|
/// 获取显示面熟文本
|
/// </summary>
|
/// <param name="dicList">状态数据列表</param>
|
/// <returns></returns>
|
private string GetText(List<Dictionary<string, string>> dicList, string key)
|
{
|
string strtext = "";
|
foreach (var dic in dicList)
|
{
|
string value = dic["value"];
|
string comparator = dic["comparator"];
|
switch (key)
|
{
|
|
case "temperature":
|
{
|
if (comparator == ">")
|
{
|
strtext = ">" + value + "℃";
|
}
|
else if (comparator == "<")
|
{
|
strtext = "<" + value + "℃";
|
}
|
|
}
|
break;
|
case "humidity":
|
{
|
if (comparator == ">")
|
{
|
strtext = ">" + value + "%";
|
}
|
else if (comparator == "<")
|
{
|
strtext = "<" + value + "%";
|
}
|
|
}
|
break;
|
case "co2":
|
{
|
strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value);
|
}
|
break;
|
case "pm25":
|
{
|
strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value);
|
}
|
break;
|
case "tvoc":
|
{
|
strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value);
|
}
|
break;
|
case "hcho":
|
{
|
strtext = Language.StringByID(StringId.Formaldehyde) + new PublicInterface { }.GetString("hcho", value);
|
}
|
break;
|
}
|
}
|
return strtext;
|
}
|
private void SensorView(FrameLayout thisView, Function device, string key, int indexVulae)
|
{
|
//这个设备比较特殊
|
ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
|
///当前的索引值数据对象
|
Input inputedit = Logic.currlogic.input[indexVulae];
|
///状态值
|
string stateValue = "";
|
foreach (var dic in inputedit.condition)
|
{
|
string comparator = dic["comparator"];
|
stateValue = dic["value"];
|
switch (key)
|
{
|
|
case "temperature":
|
{
|
int titleInt = 0;
|
if (comparator == ">")
|
{
|
titleInt = StringId.wendugaoyu;
|
}
|
else if (comparator == "<")
|
{
|
titleInt = StringId.wendudiyu;
|
}
|
conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
|
}
|
break;
|
case "humidity":
|
{
|
int titleInt = 0;
|
if (comparator == ">")
|
{
|
titleInt = StringId.shidugaoyu;
|
}
|
else if (comparator == "<")
|
{
|
titleInt = StringId.shidudiyu;
|
}
|
conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
|
}
|
break;
|
case "co2":
|
{
|
conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
|
}
|
break;
|
case "pm25":
|
{
|
conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
|
}
|
break;
|
case "tvoc":
|
{
|
conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
|
}
|
break;
|
case "hcho":
|
{
|
conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
|
}
|
break;
|
}
|
}
|
}
|
}
|
}
|