using System;
using Shared;
using System.Collections.Generic;
using HDL_ON.Entity;
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
public class InpOrOutLogicMethod
{
///
/// 输入条件处理方法
///
/// 当前界面
/// 上下滑动控件
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.btnClick.Name = inputCondition.condition_type;
///记录条件索引
inputView.btnClick.Tag = inputCondition.sid;
///条件状态数组
List> dicList = inputCondition.condition as List>;
//显示条件各种类型状态
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.GetDevice(inputCondition.sid);
//用设备的functionType类型找到对应图标;
inputView.btnIcon.UnSelectedImagePath = LogicMethod.GetIconPath(device.spk);
//显示设备名称
inputView.btnText.Text = device.name;
//改变设备名称显示控件宽度
inputView.btnText.Width = Application.GetRealWidth(80);
//区别不同设备,显示不同设备状态
switch (device.spk)
{
//开关灯光 light.Switch
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.FloorHeatStandard:
{//开关灯
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:
{
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.SensoruUtrasonic:
{
string str = "";
foreach (var dic in dicList)
{
string value = dic["value"];
switch (dic["key"])
{
case "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:
{
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;
}
}
break;
case "4":
{
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 "outdoor_temp":
{
strvalue = value;
if (comparator == ">")
{
strtext = Language.StringByID(StringId.wendugaoyu);
}
else if (comparator == "<")
{
strtext = Language.StringByID(StringId.wendudiyu);
}
}
break;
case "outdoor_humity":
{
strvalue = value;
if (comparator == ">")
{
strtext = Language.StringByID(StringId.shidugaoyu);
}
else if (comparator == "<")
{
strtext = Language.StringByID(StringId.shidudiyu);
}
}
break;
case "pm2.5":
{
strtext = Language.StringByID(StringId.PM25);
strvalue = new OutdoorEnvironment { }.GetString(value);
}
break;
}
}
inputView.btnText.Text = strtext;
inputView.btnState.Text = strvalue;
}
break;
case "6":
{
inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
foreach (var dic in dicList)
{
string strtext = "";
string value = dic["value"];
switch (value)
{
case "sunny":
{
strtext = Language.StringByID(StringId.clearday);
}
break;
case "cloudy":
{
strtext = Language.StringByID(StringId.cloudy);
}
break;
case "rainy":
{
strtext = Language.StringByID(StringId.rain);
}
break;
}
inputView.btnText.TextID = StringId.tianqibianhua;
inputView.btnState.Text = strtext;
}
}
break;
}
//再次编辑条件状态点击事件
inputView.btnClick.MouseUpEventHandler += (sen, e) =>
{
Button button = (Button)sen;
//找到当前编辑的索引
int indexVulae = 0;
for (int index = 0; index < Logic.currlogic.input.Count; index++)
{
Input input = Logic.currlogic.input[index];
if (input.sid == inputView.btnClick.Tag.ToString())
{
//用户可能删除数据,使列表索引发生改变;
//通过唯一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 as List>;
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.GetDevice(inputCondition.sid);
ConditionDeviceFunList deviceFunList = new ConditionDeviceFunList();
MainPage.BasePageView.AddChidren(deviceFunList);
deviceFunList.Show(device, indexVulae, edit);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
break;
case "4":
{
///当前的索引值数据对象
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 "outdoor_temp":
{
if (comparator == ">")
{
intValue = StringId.wendugaoyu;
}
else if (comparator == "<")
{
intValue = StringId.wendudiyu;
}
}
break;
case "outdoor_humity":
{
if (comparator == ">")
{
intValue = StringId.shidugaoyu;
}
else if (comparator == "<")
{
intValue = StringId.shidudiyu;
}
}
break;
case "pm2.5":
{
intValue = StringId.PM25;
}
break;
}
}
OutdoorEnvironment outdoorEnvironment = new OutdoorEnvironment();
if (intValue == StringId.PM25)
{
outdoorEnvironment.PmAction(thisView, stateValue);
}
else
{
outdoorEnvironment.InputBoxAction(intValue, stateValue);
}
}
break;
case "6":
{
WeatherCondition weatherCondition = new WeatherCondition();
MainPage.BasePageView.AddChidren(weatherCondition);
weatherCondition.Show();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
break;
}
};
///删除控件
inputView.btnDel.MouseUpEventHandler += (sender, e) =>
{
Logic.currlogic.input.Remove(inputCondition);
inputView.frameLayout.RemoveFromParent();
};
}
}
///
/// 输出条件处理方法
///
/// 当前界面
/// 上下滑动控件
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> dicList = outputTarget.status as List>;
//显示状态值
string stateStr = "";
//显示输出条件各种类型状态
switch (outputTarget.target_type)
{
case "1":
{
//用sid找到设备;
var device = LogicMethod.GetDevice(outputTarget.sid);
//用设备的functionType类型找到对应图标;
targetView.btnIcon.UnSelectedImagePath = LogicMethod.GetIconPath(device.spk);
//显示设备名称
targetView.btnText.Text = device.name;
//改变设备名称显示控件宽度
targetView.btnText.Width = Application.GetRealWidth(80);
//区别不同设备,显示不同设备状态
switch (device.spk)
{
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 = 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:
{
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:
{
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;
}
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 (on_off != "" && on_off == "off")
{
stateStr = Language.StringByID(StringId.offLogic);
}
else
{
stateStr = stateStr.TrimEnd(',');
}
}
break;
}
}
break;
case "2":
{
//用sid找到场景;
var scene = LogicMethod.GetSecne(outputTarget.sid);
targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
targetView.btnNextIcon.Visible = false;
//显示场景名称
stateStr = scene.name;
}
break;
case "3":
{
targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
foreach (var dic in dicList)
{
string value = dic["value"];
stateStr = value;
}
}
break;
}
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.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.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":
{
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();
};
}
}
///
/// 显示编辑之前的设备状态
///
/// 编辑设备
/// 显示Btn
/// 显示Btn
/// 显示Btn
/// 显示Btn
public static void EditState(Entity.Function device, List> dicList, Button button1, Button button2, Button button3, Button button4)
{
switch (device.spk)
{
//开关灯光
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":
{
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:
{
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":
{
button2.Text = value + "℃";
}
break;
case "mode":
{
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":
{
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:
{
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":
{
button2.Text = value + "℃";
}
break;
case "mode":
{
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.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:
{
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.SensoruUtrasonic:
{
foreach (var dic in dicList)
{
string value = dic["value"];
switch (dic["key"])
{
case "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:
{
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;
}
}
///
/// 获取value键值
///
///
///
///
public static string GetKeyValue(string keyValue, List> dicList)
{
string valueStr = "";
foreach (var dic in dicList)
{
if (dic["key"] == keyValue)
{
valueStr = dic["value"];
break;
}
}
return valueStr;
}
///
///获取自动化名称
///
/// 新建自动化命名规则
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.GetDevice(inputCondition.sid);
name = device.name + "-";
}
break;
}
//默认取第一个目标
Output outputTarget = logic.output[0];
List> dicList = outputTarget.status as List>;
//显示输出条件各种类型状态
switch (outputTarget.target_type)
{
case "1":
{
//用sid找到设备;
var device = LogicMethod.GetDevice(outputTarget.sid);
//显示设备名称
name += device.name;
string stateStr = "";
//区别不同设备,显示不同设备状态
switch (device.spk)
{
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.FloorHeatStandard:
{
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.GetSecne(outputTarget.sid);
name += scene.name;
}
break;
}
}
catch { }
return name;
}
///
/// 延时时间方法
///
/// 在哪个界面显示
/// (true=编辑;false=新建)
/// 编辑条件的索引
private void Delayed(FrameLayout thisFLayout, Output output,Actionaction)
{
FrameLayout fLayout = new FrameLayout
{
BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
};
thisFLayout.AddChidren(fLayout);
LogicView.TimeView timePointView = new LogicView.TimeView();
timePointView.FLayoutView(fLayout);
EventHandler 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);
};
}
///
/// 获取时间文本描述
///
/// 时间值(单位s秒)
///
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);
}
}
return state;
}
}
}