| | |
| | | using System; |
| | | using System; |
| | | using Shared; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.Entity; |
| | |
| | | /// 定义一个变量,记录选中状态 |
| | | /// </summary> |
| | | private string selectedState = "unknown"; |
| | | /// <summary> |
| | | /// 定义一个变量,记录选中状态记录属性 |
| | | /// </summary> |
| | | private string keyVlaue = ""; |
| | | public void Show(Entity.Function device, int index, bool edit) |
| | | { |
| | | #region 界面布局 |
| | |
| | | //地热 |
| | | 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) => |
| | | |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.switchLogic; |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | FrameLayout frame = new FrameLayout |
| | | { |
| | | BackgroundColor = CSS.CSS_Color.viewTrans60lucence, |
| | | }; |
| | | this.AddChidren(frame); |
| | | SwitchViewMethod(frame, device, lightSwitchView.btnState, 2); |
| | | 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; |
| | | //毫米波传感器 |
| | | case SPK.SenesorMegahealth: |
| | | { |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | | view.btnText.TextID = StringId.mubiaozhuangtai ;//目标状态 |
| | | fLayout.AddChidren(view.FLayoutView()); |
| | | view.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view.btnState, StringId.wuren, StringId.diedao); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view.btnState, null, null, null); |
| | | } |
| | | } |
| | | break; |
| | | |
| | |
| | | this.AddChidren(saveView.FLayoutView()); |
| | | saveView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | |
| | | |
| | | if (selectedState != "unknown") |
| | | { |
| | | Input inputDevice = new Input(); |
| | |
| | | return; |
| | | } |
| | | LogicMethod.RemoveAllView(); |
| | | AddLogic addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | |
| | | if (MainView.IsGatewayType) |
| | | { //A网关 |
| | | var addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | else |
| | | { |
| | | //一端口网关 |
| | | var onePortAutomation = new OnePortAutomation(); |
| | | MainPage.BasePageView.AddChidren(onePortAutomation); |
| | | onePortAutomation.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | } |
| | | }; |
| | | |
| | | #endregion |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 开关功能展开界面 |
| | | /// 设备选择条件界面 |
| | | /// </summary> |
| | | /// <param name="frame"></param> |
| | | /// <param name="device"></param> |
| | | /// <param name="button"></param> |
| | | /// <param name="len"></param> |
| | | public void SwitchViewMethod(FrameLayout frame, Entity.Function device, Button button, int len) |
| | | { |
| | | |
| | | /// <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, len, button.Text, (Action<string>)((strValue) => |
| | | switchView.FLayoutView(frame, btnText1, btnText2, button.Text, (intValue) => |
| | | { |
| | | int id = 0; |
| | | switch (strValue) |
| | | //设备属性值,云雀上定义好的; |
| | | string keyVlaue = "on_off"; |
| | | string value = ""; |
| | | switch (device.spk) |
| | | { |
| | | case "on": |
| | | //传感器 |
| | | 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: |
| | | { |
| | | id = StringId.onLogic; |
| | | keyVlaue = "status"; |
| | | } |
| | | break; |
| | | case "off": |
| | | case SPK.SenesorMegahealth: |
| | | { |
| | | id = StringId.offLogic; |
| | | keyVlaue = "action_state"; |
| | | } |
| | | break; |
| | | } |
| | | button.TextID = id; |
| | | keyVlaue = "on_off"; |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.dictionary(dic, "key", "on_off"); |
| | | LogicMethod.dictionary(dic, "comparator", "="); |
| | | LogicMethod.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.dictionary(dic, "value", strValue); |
| | | AddDictionaryData(dicSateteList, keyVlaue, dic); |
| | | selectedState = device.spk + "_" + strValue; |
| | | |
| | | })); |
| | | } |
| | | 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: |
| | | { |
| | | if (device.spk == SPK.SenesorMegahealth) |
| | | { |
| | | value = "uninhabited"; |
| | | } |
| | | else |
| | | { |
| | | 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; |
| | | case StringId.diedao: |
| | | { |
| | | value = "fall"; |
| | | }; break; |
| | | } |
| | | //显示文本 |
| | | button.TextID = intValue; |
| | | selectedState = device.spk + "_" + value; |
| | | AddDictionary(keyVlaue, value, "string"); |
| | | |
| | | }); |
| | | |
| | | } |
| | | /// <summary> |
| | |
| | | /// <param name="button2">显示Btn</param> |
| | | /// <param name="button3">显示Btn</param> |
| | | /// <param name="button4">显示Btn</param> |
| | | private void GetEditState(Entity.Function device , int index, Button button1, Button button2, Button button3, Button button4) |
| | | private void GetEditState(Entity.Function device, int index, Button button1, Button button2, Button button3, Button button4) |
| | | { |
| | | Input inputs = Logic.currlogic.input[index]; |
| | | var dicList = inputs.condition as List<Dictionary<string, string>>; |
| | |
| | | //有数据重新赋值 |
| | | dicSateteList = dicList; |
| | | } |
| | | 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") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.offLogic); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | |
| | | } |
| | | InpOrOutLogicMethod.EditState(device, dicList, button1, button2, button3, button4); |
| | | } |
| | | /// <summary> |
| | | /// 添加选中数据 |
| | | /// </summary> |
| | | /// <param name="dicList">存储数据列表</param> |
| | | /// <param name="keyValue">识别设备</param> |
| | | /// <param name="dictionary">选中数据</param> |
| | | /// <param name="KeyValue">设备属性值,云雀上定义好的</param> |
| | | /// <param name="selectedValue">状态值</param> |
| | | /// <param name="data_type">类型</param> |
| | | /// <param name="comparator">比较关系</param> |
| | | private void AddDictionary(string KeyValue, string selectedValue,string data_type,string comparator="=") |
| | | { |
| | | //数据封装 |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.dictionary(dic, "key", KeyValue); |
| | | LogicMethod.dictionary(dic, "comparator", comparator); |
| | | LogicMethod.dictionary(dic, "data_type", data_type); |
| | | LogicMethod.dictionary(dic, "value", selectedValue); |
| | | AddDictionaryList(KeyValue, comparator,dic); |
| | | } |
| | | /// <summary> |
| | | /// 更新数据列表 |
| | | /// </summary> |
| | | /// <param name="keyValue">设备属性值,云雀上定义好的</param> |
| | | /// <param name="comparator">比较关系</param> |
| | | /// <param name="dictionary">添加选中数据</param> |
| | | /// <returns></returns> |
| | | private void AddDictionaryData(List<Dictionary<string, string>> dicList, string keyValue, Dictionary<string, string> dictionary) |
| | | private void AddDictionaryList(string keyValue,string comparator, 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]; |
| | | if (dic.ContainsValue(keyValue)) |
| | | var dic = dicSateteList[i]; |
| | | string key = dic["key"]; |
| | | string comparatorValue = dic["comparator"]; |
| | | if (key == keyValue && comparatorValue == comparator) |
| | | { |
| | | //判断是否存在 |
| | | indexValue = i; |
| | |
| | | if (indexValue != -1) |
| | | { |
| | | //存在移除 |
| | | dicList.RemoveAt(indexValue); |
| | | dicSateteList.RemoveAt(indexValue); |
| | | //重新添加 |
| | | dicList.Insert(indexValue, dictionary); |
| | | dicSateteList.Insert(indexValue, dictionary); |
| | | } |
| | | else |
| | | { |
| | | //新添加 |
| | | dicList.Add(dictionary); |
| | | dicSateteList.Add(dictionary); |
| | | } |
| | | |
| | | } |
| | |
| | | Logic.currlogic.input.Add(input); |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 移除控件 |
| | | /// </summary> |
| | | /// <param name="frame"></param> |
| | | private void RemView(FrameLayout frame) |
| | | { |
| | | frame.RemoveFromParent(); |
| | | } |
| | | } |
| | | } |