using System;
using Shared;
using System.Collections.Generic;
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 = i;
///条件状态数组
List> dicList = inputCondition.condition as List>;
//显示条件各种类型状态
switch (inputCondition.condition_type)
{
case "1":
{
inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
foreach (var dic in dicList)
{
string value = dic["value"];
inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value;
inputView.btnClick.AddTag("timepoint", value);
}
}
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;
inputView.btnClick.AddTag("timeHorizon", value);
}
}
break;
case "3":
{
//用sid找到设备;
var device = LogicMethod.GetDevice(inputCondition.sid);
//用设备的functionType类型找到对应图标;
inputView.btnIcon.UnSelectedImagePath = LogicMethod.GetIconPath(device.functionType);
//显示设备名称
inputView.btnText.Text = device.name;
//改变设备名称显示控件宽度
inputView.btnText.Width = Application.GetRealWidth(80);
//区别不同设备,显示不同设备状态
switch (device.functionType)
{
//开关灯光 light.Switch
case FunctionType.Dimmer:
case FunctionType.RGB:
case FunctionType.RGBW:
case FunctionType.ColorTemperature:
case FunctionType.Relay:
//窗帘
case FunctionType.Curtain:
case FunctionType.RollingShutter:
case FunctionType.MotorCurtain:
//空调
case FunctionType.AC:
//地热
case FunctionType.FloorHeating:
{//开关灯
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;
}
}
break;
}
//再次编辑条件状态点击事件
inputView.btnClick.MouseUpEventHandler += (sen, e) =>
{
Button button = (Button)sen;
//找到当前编辑的索引
int indexVulae = int.Parse(inputView.btnClick.Tag.ToString());
//标记编辑状态
bool edit = true;
switch (button.Name)
{
case "1":
{
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;
}
};
///删除控件
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 = i;
///条件状态数组
List> dicList = outputTarget.status as List>;
//显示条件各种类型状态
switch (outputTarget.target_type)
{
case "1":
{
//用sid找到设备;
var device = LogicMethod.GetDevice(outputTarget.sid);
//用设备的functionType类型找到对应图标;
targetView.btnIcon.UnSelectedImagePath = LogicMethod.GetIconPath(device.functionType);
//显示设备名称
targetView.btnText.Text = device.name;
//改变设备名称显示控件宽度
targetView.btnText.Width = Application.GetRealWidth(80);
//第一个变量显示状态值
string stateStr = "";
//区别不同设备,显示不同设备状态
switch (device.functionType)
{
case FunctionType.Relay:
{//开关灯
foreach (var dic in dicList)
{
string value = dic["value"];
if (value == "on")
{
stateStr = Language.StringByID(StringId.onLogic);
}
else
{
stateStr = Language.StringByID(StringId.offLogic);
}
}
targetView.btnState.Text = stateStr;
}
break;
case FunctionType.RGB:
case FunctionType.RGBW:
case FunctionType.ColorTemperature:
case FunctionType.Dimmer:
{
string on_off = GetKeyValue("on_off", dicList);
string brightness = GetKeyValue("brightness", dicList);
if (on_off != "")
{
if (on_off == "on")
{
stateStr = Language.StringByID(StringId.onLogic);
}
else
{
stateStr = Language.StringByID(StringId.offLogic);
}
}
if (brightness != "")
{
stateStr += brightness + "%";
}
if (on_off != "" && on_off == "off")
{
targetView.btnState.Text = Language.StringByID(StringId.offLogic);
}
else
{
targetView.btnState.Text = stateStr;
}
}
break;
case FunctionType.Curtain:
{//开关灯
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;
}
}
targetView.btnState.Text = stateStr;
}
break;
case FunctionType.MotorCurtain:
case FunctionType.RollingShutter:
{//开关灯
string on_off = GetKeyValue("on_off", dicList);
string brightness = GetKeyValue("brightness", dicList);
if (on_off != "")
{
switch (on_off)
{
case "on":
{
stateStr = Language.StringByID(StringId.onLogic);
}
break;
case "off":
{
stateStr = Language.StringByID(StringId.offLogic);
}
break;
case "stop":
{
stateStr = Language.StringByID(StringId.stop);
}
break;
}
}
if (brightness != "")
{
stateStr += brightness + "%";
}
if (on_off != "" && on_off == "stop"|| on_off != "" && on_off == "off")
{
targetView.btnState.Text = Language.StringByID(StringId.stop);
}
else
{
targetView.btnState.Text = stateStr;
}
}
break;
case FunctionType.AC: {
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")
{
targetView.btnState.Text = Language.StringByID(StringId.offLogic);
}
else {
targetView.btnState.Text = stateStr.TrimEnd(';');
}
}
break;
case FunctionType.FloorHeating:
{
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")
{
targetView.btnState.Text =Language.StringByID(StringId.offLogic);
}
else
{
targetView.btnState.Text = stateStr.TrimEnd(';');
}
}
break;
}
}
break;
case "2":
{
//用sid找到场景;
var scene = LogicMethod.GetSecne(outputTarget.sid);
targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
targetView.btnNextIcon.Visible = false;
//显示场景名称
targetView.btnText.Text = scene.name;
}
break;
case "3":
{
targetView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
foreach (var dic in dicList)
{
string value = dic["value"];
targetView.btnText.Text = value;
}
}
break;
}
//再次编辑条件状态点击事件
targetView.btnClick.MouseUpEventHandler += (sen, e) =>
{
Button button = (Button)sen;
//找到当前编辑的索引
int indexVulae = int.Parse(targetView.btnClick.Tag.ToString());
//标记编辑状态
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.btnDel.MouseUpEventHandler += (sender, e) =>
{
Logic.currlogic.output.Remove(outputTarget);
targetView.frameLayout.RemoveFromParent();
};
}
}
///
/// 获取value键值
///
///
///
///
private static string GetKeyValue(string keyValue, List> dicList)
{
string valueStr = "";
foreach (var dic in dicList)
{
if (dic["key"] == keyValue)
{
valueStr = dic["value"];
break;
}
}
return valueStr;
}
}
}