Merge remote-tracking branch 'origin/wjc' into release0123
| | |
| | | 7156=Distress |
| | | 7157=whether to unlock |
| | | 7158=is |
| | | 7159=Fall in the alarm |
| | | 7160=Someone called the police |
| | | |
| | | |
| | | |
| | | |
| | |
| | | 7156=求救 |
| | | 7157=是否开锁时 |
| | | 7158=是 |
| | | 7159=跌倒报警 |
| | | 7160=有人报警 |
| | | |
| | | |
| | | |
| | |
| | | 7156=Distress |
| | | 7157=whether to unlock |
| | | 7158=is |
| | | 7159=Fall in the alarm |
| | | 7160=Someone called the police |
| | | |
| | | |
| | | |
| | |
| | | 7156=求救 |
| | | 7157=是否开锁时 |
| | | 7158=是 |
| | | 7159=跌倒报警 |
| | | 7160=有人报警 |
| | | |
| | | |
| | | |
| | |
| | | /// 是 |
| | | /// </summary> |
| | | public const int shi = 7158; |
| | | /// <summary> |
| | | /// 跌倒报警 |
| | | /// </summary> |
| | | public const int diedaobaojing = 7159; |
| | | /// <summary> |
| | | /// 有人报警 |
| | | /// </summary> |
| | | public const int yourenbaojing = 7160; |
| | | |
| | | |
| | | |
| | |
| | | /// 定义一个变量,记录选中状态 |
| | | /// </summary> |
| | | private string selectedState = "unknown"; |
| | | /// <summary> |
| | | /// 是不是再次编辑 |
| | | /// </summary> |
| | | private bool mEdit; |
| | | /// <summary> |
| | | /// 输入条件列表索引值 |
| | | /// </summary> |
| | | private int mIndex; |
| | | |
| | | public void Show(Entity.Function device, int index, bool edit) |
| | | { |
| | | this.function = device; |
| | | this.mEdit = edit; |
| | | this.mIndex = index; |
| | | #region 界面布局 |
| | | this.BackgroundColor = CSS.CSS_Color.viewMiddle; |
| | | LogicView.TopView topView = new LogicView.TopView(); |
| | |
| | | } |
| | | } |
| | | break; |
| | | //毫米波传感器 |
| | | //毫米波传感器(自研北邮) |
| | | case SPK.SenesorMegahealth: |
| | | { |
| | | |
| | | LogicView.FunTypeView view1= new LogicView.FunTypeView(); |
| | | view1.btnText.TextID = StringId.diedaobaojing; |
| | | view1.btnState.Name = Language.StringByID(StringId.diedaobaojing); |
| | | fLayout.AddChidren(view1.FLayoutView()); |
| | | view1.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view1.btnState, StringId.shi, StringId.offLogic, 1); |
| | | }; |
| | | |
| | | LogicView.FunTypeView view2 = new LogicView.FunTypeView(); |
| | | view2.frameLayout.Y = view1.frameLayout.Bottom; |
| | | view2.btnText.TextID = StringId.yourenbaojing; |
| | | view2.btnState.Name = Language.StringByID(StringId.yourenbaojing); |
| | | fLayout.AddChidren(view2.FLayoutView()); |
| | | view2.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | DeviceView(device, view2.btnState, StringId.shi, StringId.offLogic, 1); |
| | | }; |
| | | if (edit) |
| | | { |
| | | GetEditState(device, index, view1.btnState, view2.btnState, null, null); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | //毫米波传感器(兆观专用云云对接) |
| | | case SPK.SenesorMegahealth2: |
| | | { |
| | | LogicView.FunTypeView view = new LogicView.FunTypeView(); |
| | |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth: |
| | | { |
| | | if (button != null) |
| | | { |
| | | |
| | | if (button.Name == Language.StringByID(StringId.yourenbaojing)) |
| | | { |
| | | keyVlaue = "people_status"; |
| | | |
| | | } |
| | | else |
| | | { |
| | | keyVlaue = "target_status"; |
| | | } |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth2: |
| | | { |
| | | keyVlaue = "action_state"; |
| | |
| | | } |
| | | break; |
| | | case StringId.shi: |
| | | { |
| | | value = "open"; |
| | | if (button != null) |
| | | { |
| | | |
| | | if (button.Name == Language.StringByID(StringId.yourenbaojing)) |
| | | { |
| | | //状态(有人) |
| | | value = "true"; |
| | | |
| | | } |
| | | else if(button.Name == Language.StringByID(StringId.diedaobaojing)) |
| | | { |
| | | //跌倒 |
| | | value = "4"; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case StringId.kaiqi: |
| | | { |
| | | value = "open"; |
| | |
| | | button.TextID = intValue; |
| | | selectedState = device.spk + "_" + value; |
| | | AddDictionary(keyVlaue, value, "string"); |
| | | if (button != null) |
| | | { |
| | | |
| | | if (button.Name == Language.StringByID(StringId.yourenbaojing) |
| | | || (button.Name == Language.StringByID(StringId.diedaobaojing))) |
| | | { |
| | | //只有毫米波传感器(自研) |
| | | Save(device, mIndex, mEdit); |
| | | } |
| | | } |
| | | |
| | | |
| | | }); |
| | | |
| | |
| | | } |
| | | break; |
| | | //传感器 |
| | | case SPK.SensorHelp: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.qiujiu); |
| | | |
| | | } |
| | | else |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.zhengchang); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorSmoke: |
| | | case SPK.SensorGas: |
| | | { |
| | |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "people_status": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.shi); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "target_status": |
| | | { |
| | | if (value == "4") |
| | | { |
| | | inputView.btnState.Text = Language.StringByID(StringId.shi); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | }break; |
| | | case SPK.SenesorMegahealth2: |
| | | { |
| | | foreach (var dic in dicList) |
| | |
| | | } |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | string on_off = GetKeyValue("on_off", dicList); |
| | | string percent = GetKeyValue("percent", dicList); |
| | | if (on_off == "on" && percent != "") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + percent + "%"; |
| | | } |
| | | else if (on_off == "on") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic); |
| | | } |
| | | else if (on_off == "off") |
| | | { |
| | | stateStr = Language.StringByID(StringId.offLogic); |
| | | } |
| | | else if (percent != "") |
| | | { |
| | | stateStr = percent + "%"; |
| | | } |
| | | } |
| | | break; |
| | | case SPK.CurtainDream: |
| | | { |
| | | string percent = GetKeyValue("percent", dicList); |
| | | string angle = GetKeyValue("angle", dicList); |
| | | if (percent != "" && angle != "") |
| | | { |
| | | stateStr += Language.StringByID(StringId.onLogic) + percent + "%;"; |
| | | stateStr +=Language.StringByID(StringId.Angle)+angle + "°"; |
| | | } |
| | | else if (percent != "") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + percent + "%"; |
| | | } |
| | | else if (angle != "") |
| | | { |
| | | stateStr = Language.StringByID(StringId.onLogic) + Language.StringByID(StringId.Angle) + angle + "°"; |
| | | } |
| | | } |
| | | break; |
| | |
| | | } |
| | | break; |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainRoller: |
| | | { |
| | | 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; |
| | | case "stop": |
| | | { |
| | | button1.Text = Language.StringByID(StringId.stop); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | break; |
| | | case "percent": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button2.Text = value + "%"; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.CurtainDream: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "percent": |
| | | { |
| | | if (button1 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button1.Text = value + "%"; |
| | | } |
| | | break; |
| | | case "angle": |
| | | { |
| | | if (button2 == null) |
| | | { |
| | | //怕调试软件乱上东西导致抛异常 |
| | | break; |
| | | } |
| | | button2.Text = value + "°"; |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case SPK.AcStandard: |
| | |
| | | |
| | | } |
| | | break; |
| | | case SPK.SensorHelp: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | if (value == "alarm") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.qiujiu); |
| | | } |
| | | else |
| | | { |
| | | button1.Text = Language.StringByID(StringId.zhengchang); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SensorGas: |
| | | case SPK.SensorSmoke: |
| | | { |
| | |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth: |
| | | { |
| | | foreach (var dic in dicList) |
| | | { |
| | | string value = dic["value"]; |
| | | switch (dic["key"]) |
| | | { |
| | | case "people_status": |
| | | { |
| | | if (value == "true") |
| | | { |
| | | button1.Text = Language.StringByID(StringId.shi); |
| | | } |
| | | |
| | | } |
| | | break; |
| | | case "target_status": |
| | | { |
| | | if (value == "4") |
| | | { |
| | | button2.Text = Language.StringByID(StringId.shi); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | |
| | | } |
| | | } |
| | | break; |
| | | case SPK.SenesorMegahealth2: |
| | | { |
| | | foreach (var dic in dicList) |
| | |
| | | //确定点击事件 |
| | | timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) => |
| | | { |
| | | if (timepoint == 0) |
| | | { |
| | | //提示 |
| | | return; |
| | | } |
| | | //if (timepoint == 0) |
| | | //{ |
| | | // //提示 |
| | | // return; |
| | | //} |
| | | fLayout.RemoveFromParent(); |
| | | action(timepoint); |
| | | }; |
| | |
| | | case SPK.CurtainSwitch: |
| | | case SPK.CurtainRoller: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainDream: |
| | | { |
| | | strPath = "LogicIcon/curtainlogic.png"; |
| | | } |
| | |
| | | var curtainjosn = deviceList.Find((device) => |
| | | device.spk == SPK.CurtainSwitch |
| | | || device.spk == SPK.CurtainTrietex |
| | | || device.spk == SPK.CurtainRoller); |
| | | || device.spk == SPK.CurtainRoller |
| | | || device.spk == SPK.CurtainDream); |
| | | if (curtainjosn != null) |
| | | { |
| | | deviceStrTypeList.Add(Language.StringByID(StringId.Curtain)); |
| | |
| | | functionTypeList.Add(SPK.CurtainSwitch); |
| | | functionTypeList.Add(SPK.CurtainRoller); |
| | | functionTypeList.Add(SPK.CurtainTrietex); |
| | | functionTypeList.Add(SPK.CurtainDream); |
| | | } |
| | | ///空调类 |
| | | else if (deviceType == Language.StringByID(StringId.AC)) |
| | |
| | | deviceTypeList.Add(SPK.AirSwitch); |
| | | deviceTypeList.Add(SPK.PanelSocket); |
| | | deviceTypeList.Add(SPK.ElectricSocket); |
| | | deviceTypeList.Add(SPK.CurtainDream); |
| | | } |
| | | break; |
| | | } |
| | |
| | | /// <param name="titleName">标题名称</param> |
| | | /// <param name="stateValue">之前状态值</param> |
| | | /// <param name="action">返回回调</param> |
| | | public void FLayoutView(FrameLayout frame, string titleName,string stateValue, Action<string> action) |
| | | public void FLayoutView(FrameLayout frame, string titleName,string stateValue, Action<string,string> action) |
| | | { |
| | | FrameLayout fLayout = new FrameLayout |
| | | { |
| | |
| | | frameLayout.AddChidren(btn_add); |
| | | frameLayout.AddChidren(btn_add_click); |
| | | btnTitle.Text = titleName; |
| | | //进来的状态 |
| | | if (stateValue.Contains("%")) |
| | | { |
| | | //百分比 |
| | | } |
| | | else if (stateValue.Contains("°")) |
| | | { |
| | | //角度 |
| | | //角度取值范围 |
| | | seekBarVol.MinValue = 0; |
| | | seekBarVol.MaxValue = 180; |
| | | seekBarVol.ProgressBarUnitSring = "°"; |
| | | } |
| | | else |
| | | { |
| | | //音量没有单位 |
| | | seekBarVol.MinValue = 0; |
| | | seekBarVol.MaxValue = 100; |
| | | seekBarVol.ProgressBarUnitSring = ""; |
| | | } |
| | | //第一个变化记录选中值 |
| | | int brightnesValue = 0; |
| | | if (stateValue != "") |
| | | { |
| | | try |
| | | { |
| | | //进来的状态 |
| | | brightnesValue = int.Parse(stateValue.Replace("%", "")); |
| | | brightnesValue = int.Parse(UnitDisposeSring(stateValue)); |
| | | seekBarVol.Progress = brightnesValue; |
| | | } |
| | | catch { } |
| | |
| | | //{ |
| | | // return; |
| | | //} |
| | | action(brightnesValue.ToString()); |
| | | action(brightnesValue.ToString(), UnitSring(stateValue)); |
| | | //移除fLayout界面 |
| | | fLayout.RemoveFromParent(); |
| | | }; |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | //进度值显示单位 |
| | | /// </summary> |
| | | /// <param name="str"></param> |
| | | /// <returns></returns> |
| | | public string UnitSring(string str) |
| | | { |
| | | |
| | | //进来的状态 |
| | | if (str.Contains("%")) |
| | | { |
| | | //百分比 |
| | | return "%"; |
| | | } |
| | | else if (str.Contains("°")) |
| | | { |
| | | //角度 |
| | | return "°"; |
| | | |
| | | } |
| | | else { |
| | | //没有单位 |
| | | return ""; |
| | | } |
| | | } |
| | | /// <summary> |
| | | ///去单位 |
| | | /// </summary> |
| | | /// <param name="str"></param> |
| | | /// <returns></returns> |
| | | public string UnitDisposeSring(string str) |
| | | { |
| | | |
| | | //进来的状态 |
| | | if (str.Contains("%")) |
| | | { |
| | | //百分比 |
| | | return str.Replace("%", ""); |
| | | } |
| | | else if (str.Contains("°")) |
| | | { |
| | | //角度 |
| | | return str.Replace("°", ""); |
| | | } |
| | | else |
| | | { |
| | | //没有单位 |
| | | return str; |
| | | } |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// View的方法 |
| | |
| | | ResponsePackNew responsePackNew = null; |
| | | try |
| | | { |
| | | |
| | | var cycleJObject = new JObject { }; |
| | | var cyclevaluejArray = new JArray { }; |
| | | cycleJObject.Add("type", logic.cycle.type); |
| | |
| | | #endregion |
| | | } |
| | | break; |
| | | case SPK.CurtainDream: |
| | | { |
| | | #region 界面 |
| | | ///百分比 |
| | | LogicView.FunTypeView crtainPercentumView = new LogicView.FunTypeView(); |
| | | crtainPercentumView.btnText.TextID = StringId.percentum; |
| | | fLayout.AddChidren(crtainPercentumView.FLayoutView()); |
| | | crtainPercentumView.btnState.Text = "5%";//产品经理晓辉要求改的 2021-11-06 |
| | | ///角度 |
| | | LogicView.FunTypeView AngleView = new LogicView.FunTypeView(); |
| | | AngleView.frameLayout.Y = crtainPercentumView.frameLayout.Bottom; |
| | | AngleView.btnText.TextID = StringId.Angle; |
| | | fLayout.AddChidren(AngleView.FLayoutView()); |
| | | AngleView.btnState.Text = "10°"; |
| | | ///设备延时iewv |
| | | DelayView(fLayout, AngleView.frameLayout.Bottom); |
| | | #endregion |
| | | #region 点击事件 |
| | | |
| | | ///百分比点击事件 |
| | | crtainPercentumView.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | BrightnessMethod(device, crtainPercentumView.btnState, crtainPercentumView.btnText.Text); |
| | | }; |
| | | ///角度点击事件 |
| | | AngleView.btnClick.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | BrightnessMethod(device, AngleView.btnState, AngleView.btnText.Text); |
| | | }; |
| | | if (edit) |
| | | { |
| | | //显示编辑之前的设备状态 |
| | | GetEditState(device, index, crtainPercentumView.btnState, AngleView.btnState, null, null); |
| | | } |
| | | #endregion |
| | | } |
| | | break; |
| | | case SPK.AcStandard: |
| | | case SPK.HvacAC: |
| | | { |
| | |
| | | //之前的状态值 |
| | | string stateVlaue = button.Text; |
| | | LogicView.BrightnessView brightness = new LogicView.BrightnessView(); |
| | | brightness.FLayoutView(this, titleName, stateVlaue, (brightnesValue) => |
| | | brightness.FLayoutView(this, titleName, stateVlaue, (brightnesValue, unitStr) => |
| | | { |
| | | //界面显示选中值 |
| | | button.Text = brightnesValue + "%"; |
| | | button.Text = brightnesValue + unitStr; |
| | | selectedState = device.spk + brightnesValue.ToString(); |
| | | //设备属性值,云雀上定义好的; |
| | | string keyVlaue = ""; |
| | |
| | | break; |
| | | case SPK.CurtainRoller: |
| | | case SPK.CurtainTrietex: |
| | | case SPK.CurtainDream: |
| | | { |
| | | keyVlaue = "percent"; |
| | | if (unitStr == "°") |
| | | { |
| | | //角度 |
| | | keyVlaue = "angle"; |
| | | } |
| | | } |
| | | break; |
| | | } |
| | |
| | | /// <returns></returns> |
| | | public static ResponsePackNew RequestServerhomeId(object o, string api_Url, int mTimeout = 20) |
| | | { |
| | | MainPage.Log("请求数据=="+o.ToString()); |
| | | MainPage.Log("红外宝请求数据:"+api_Url+"\r\n"+o.ToString()); |
| | | var requestJson = HttpUtil.GetSignRequestJson(o); |
| | | return HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout); |
| | | var responsePackNew= HttpUtil.RequestHttpsPostFroHome(api_Url, requestJson, mTimeout); |
| | | MainPage.Log("回复红外宝请求数据:" + "\r\n"+ Newtonsoft.Json.JsonConvert.SerializeObject(responsePackNew)); |
| | | return responsePackNew; |
| | | |
| | | } |
| | | /// <summary> |