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