| | |
| | | using System; |
| | | using System; |
| | | using Shared; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.Entity; |
| | | |
| | | namespace HDL_ON.UI.UI2.Intelligence.Automation |
| | | { |
| | | public class ConditionDeviceFunList : FrameLayout |
| | |
| | | }; |
| | | this.AddChidren(fLayout); |
| | | #endregion |
| | | switch (device.functionType) |
| | | switch (device.spk) |
| | | { |
| | | //开关灯光 light.Switch |
| | | case FunctionType.Dimmer: |
| | | case FunctionType.RGB: |
| | | case FunctionType.RGBW: |
| | | case FunctionType.ColorTemperature: |
| | | case FunctionType.Relay: |
| | | case SPK.LightDimming: |
| | | case SPK.LightRGB: |
| | | case SPK.LightRGBW: |
| | | case SPK.LightCCT: |
| | | case SPK.LightSwitch: |
| | | //窗帘 |
| | | case FunctionType.Curtain: |
| | | case FunctionType.RollingShutter: |
| | | case FunctionType.MotorCurtain: |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainRoller: |
| | | case SPK.CurtainTrietex: |
| | | //空调 |
| | | case FunctionType.AC: |
| | | case SPK.AcStandard: |
| | | //地热 |
| | | case FunctionType.FloorHeating: |
| | | case SPK.FloorHeatStandard: |
| | | { |
| | | LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView(); |
| | | lightSwitchView.btnText.TextID = StringId.switchLogic; |
| | | lightSwitchView.btnState.Text = ""; |
| | | fLayout.AddChidren(lightSwitchView.FLayoutView()); |
| | | lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | FrameLayout frame = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | this.AddChidren(frame); |
| | | LogicView.SwitchView switchView = new LogicView.SwitchView(); |
| | | switchView.FLayoutView(frame, 2, lightSwitchView.btnState.Text, (strValue) => |
| | | { |
| | | int id = 0; |
| | | switch (strValue) |
| | | { |
| | | case "on": |
| | | { |
| | | id = StringId.onLogic; |
| | | } |
| | | break; |
| | | case "off": |
| | | { |
| | | id = StringId.offLogic; |
| | | } |
| | | break; |
| | | } |
| | | //显示文本 |
| | | lightSwitchView.btnState.TextID = id; |
| | | selectedState = device.functionType + "_" + strValue; |
| | | //设备属性值,云雀上定义好的; |
| | | string keyVlaue = "on_off"; |
| | | AddDictionary(keyVlaue, strValue); |
| | | |
| | | }); |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.switchLogic; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.onLogic, StringId.offLogic); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, lightSwitchView.btnState, null, null, null); |
| | | GetEditState(device, index, view.btnState, null, null, null); |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorWater: |
| | | { |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.luoshuiandwuluoshui; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.luoshui, StringId.wuluoshui); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view.btnState, null, null, null); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorSmoke: |
| | | case SPK.SensorGas: |
| | | { |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.xieluoandwuxieluo; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.xieluo, StringId.wuxieluo); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view.btnState, null, null, null); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorDryContact: |
| | | { |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.switchLogic; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.onLogic, StringId.offLogic); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view.btnState, null, null, null); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorShanLan: |
| | | case SPK.SensorDuiShe: |
| | | case SPK.SensorPir: |
| | | { |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.yourenandwuren; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.youren, StringId.wuren); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view.btnState, null, null, null); |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorDoorWindow: { |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.kaiqiandbihe; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.kaiqi , StringId.bihe); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view.btnState, null, null, null); |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensoruUtrasonic: |
| | | { |
| | | |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.yourenandwuren; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.youren, StringId.wuren); |
| | | }; |
| | | LogicView.FunTypeView view1 = new LogicView.FunTypeView(); |
| | | view1.frameLayout.Y = view.frameLayout.Bottom; |
| | | view1.btnText.TextID = StringId.fangchaigongneng; |
| | | fLayout.AddChidren(view1.FLayoutView()); |
| | | view1.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view1.btnState, StringId.zaixian, StringId.buzaixian); |
| | | }; |
| | | |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view.btnState, view1.btnState, null, null); |
| | | } |
| | | } |
| | | break; |
| | | |
| | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 设备选择条件界面 |
| | | /// </summary> |
| | | /// <param name="device">设备</param> |
| | | /// <param name="button">选中状态显示文本Btn控件</param> |
| | | /// <param name="btnText1">属性状态值文本1</param> |
| | | /// <param name="btnText2">属性状态值文本2</param> |
| | | private void DeviceView(Entity.Function device,Button button,int btnText1,int btnText2) { |
| | | FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence }; |
| | | this.AddChidren(frame); |
| | | LogicView.SwitchView switchView = new LogicView.SwitchView(); |
| | | switchView.FLayoutView(frame, btnText1, btnText2, button.Text, (intValue) => |
| | | { |
| | | //设备属性值,云雀上定义好的; |
| | | string keyVlaue = "on_off"; |
| | | string value = ""; |
| | | switch (device.spk) |
| | | { |
| | | //传感器 |
| | | case SPK.SensorWater: |
| | | case SPK.SensorSmoke: |
| | | case SPK.SensorGas: |
| | | case SPK.SensorDryContact: |
| | | case SPK.SensorShanLan: |
| | | case SPK.SensorDuiShe: |
| | | case SPK.SensorPir: |
| | | case SPK.SensorDoorWindow: |
| | | case SPK.SensoruUtrasonic: |
| | | { |
| | | keyVlaue = "status"; |
| | | } |
| | | break; |
| | | |
| | | } |
| | | switch (intValue) |
| | | { |
| | | case StringId.xieluo: |
| | | case StringId.luoshui: |
| | | { |
| | | value = "alarm"; |
| | | } |
| | | break; |
| | | case StringId.wuxieluo: |
| | | case StringId.wuluoshui: |
| | | { |
| | | value = "normal"; |
| | | } |
| | | break; |
| | | case StringId.onLogic: |
| | | { |
| | | value = "on"; |
| | | } |
| | | break; |
| | | case StringId.offLogic: |
| | | { |
| | | value = "off"; |
| | | } |
| | | break; |
| | | case StringId.youren: { |
| | | value = "true"; |
| | | } |
| | | break; |
| | | case StringId.wuren: { |
| | | value = "false"; |
| | | } |
| | | break; |
| | | case StringId.kaiqi: |
| | | { |
| | | value = "open"; |
| | | } |
| | | break; |
| | | case StringId.bihe: |
| | | { |
| | | value = "close"; |
| | | } |
| | | break; |
| | | case StringId.zaixian: { |
| | | keyVlaue = "dismantle"; |
| | | value = "true"; |
| | | };break; |
| | | case StringId.buzaixian: |
| | | { |
| | | keyVlaue = "dismantle"; |
| | | value = "false"; |
| | | }; break; |
| | | } |
| | | //显示文本 |
| | | button.TextID = intValue; |
| | | selectedState = device.spk + "_" + value; |
| | | AddDictionary(keyVlaue, value); |
| | | |
| | | }); |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 显示编辑之前的设备状态 |
| | | /// </summary> |
| | | /// <param name="device">编辑设备</param> |
| | |
| | | LogicMethod.dictionary(dic, "comparator", "="); |
| | | LogicMethod.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.dictionary(dic, "value", selectedValue); |
| | | AddDictionaryList(KeyValue, dic, dicSateteList); |
| | | AddDictionaryList(KeyValue, dic); |
| | | } |
| | | /// <summary> |
| | | /// 更新数据列表 |
| | | /// </summary> |
| | | /// <param name="keyValue">设备属性值,云雀上定义好的</param> |
| | | /// <param name="dictionary">选中数据</param> |
| | | /// <param name="dicList">存储数据列表</param> |
| | | /// <param name="dictionary">添加选中数据</param> |
| | | /// <returns></returns> |
| | | private void AddDictionaryList(string keyValue, Dictionary<string, string> dictionary, List<Dictionary<string, string>> dicList) |
| | | private void AddDictionaryList(string keyValue, Dictionary<string, string> dictionary) |
| | | { |
| | | int indexValue = -1; |
| | | for (int i = 0; i < dicList.Count; i++) |
| | | for (int i = 0; i < dicSateteList.Count; i++) |
| | | { |
| | | var dic = dicList[i]; |
| | | var dic = dicSateteList[i]; |
| | | if (dic.ContainsValue(keyValue)) |
| | | { |
| | | //判断是否存在 |
| | |
| | | if (indexValue != -1) |
| | | { |
| | | //存在移除 |
| | | dicList.RemoveAt(indexValue); |
| | | dicSateteList.RemoveAt(indexValue); |
| | | //重新添加 |
| | | dicList.Insert(indexValue, dictionary); |
| | | dicSateteList.Insert(indexValue, dictionary); |
| | | } |
| | | else |
| | | { |
| | | //新添加 |
| | | dicList.Add(dictionary); |
| | | dicSateteList.Add(dictionary); |
| | | } |
| | | |
| | | } |