New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Shared.Common; |
| | | using Shared.Phone.UserCenter.Device.Bind; |
| | | using ZigBee.Common; |
| | | using ZigBee.Device; |
| | | |
| | | namespace Shared.Phone.UserCenter.DevicePanel |
| | | { |
| | | /// <summary> |
| | | /// 面板的按键配置界面【该类暂时舍弃】 |
| | | /// </summary> |
| | | public class PanelSimpleEnvironmentButtonSettionForm : EditorCommonForm |
| | | { |
| | | #region ■ 变量声明___________________________ |
| | | |
| | | /// <summary> |
| | | /// 列表控件 |
| | | /// </summary> |
| | | private FrameListControl listview = null; |
| | | /// <summary> |
| | | /// 设备的某一回路 |
| | | /// </summary> |
| | | private CommonDevice deviceObj = null; |
| | | /// <summary> |
| | | /// 新风目标名字 |
| | | /// </summary> |
| | | private string bindFreshAirName = string.Empty; |
| | | /// <summary> |
| | | /// 温度目标名字 |
| | | /// </summary> |
| | | private string bindTemperatureName = string.Empty; |
| | | /// <summary> |
| | | /// 湿度目标名字 |
| | | /// </summary> |
| | | private string bindHumidityName = string.Empty; |
| | | /// <summary> |
| | | /// PM目标名字 |
| | | /// </summary> |
| | | private string bindAcName = string.Empty; |
| | | /// <summary> |
| | | /// 被绑目标是新风 |
| | | /// </summary> |
| | | private CommonDevice bindFreshAirDev; |
| | | /// <summary> |
| | | /// 被绑目标是温度 |
| | | /// </summary> |
| | | private CommonDevice bindTemperatureDev; |
| | | /// <summary> |
| | | /// 被绑目标是湿度 |
| | | /// </summary> |
| | | private CommonDevice bindHumidityDev; |
| | | /// <summary> |
| | | /// 被绑目标是空调 |
| | | /// </summary> |
| | | private CommonDevice bindAcDev; |
| | | // <summary> |
| | | /// 按键中被绑定的目标列表 |
| | | /// </summary> |
| | | public List<BindObj.BindListResponseObj> bindList = new List<BindObj.BindListResponseObj>(); |
| | | |
| | | #endregion |
| | | |
| | | #region ■ 初始化_____________________________ |
| | | |
| | | /// <summary> |
| | | /// 画面显示(底层会固定调用此方法,借以完成画面创建) |
| | | /// </summary> |
| | | /// <param name="i_device">设备的某一回路</param> |
| | | public void ShowForm(CommonDevice i_device) |
| | | { |
| | | this.deviceObj = i_device; |
| | | //获取数据 |
| | | InitInfo(deviceObj); |
| | | |
| | | //设置头部信息 |
| | | base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uPanelSettion)); |
| | | |
| | | //初始化中部信息 |
| | | this.InitMiddleFrame(); |
| | | |
| | | //初始化右上角菜单 |
| | | this.InitTopRightMenu(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化中部信息 |
| | | /// </summary> |
| | | private void InitMiddleFrame() |
| | | { |
| | | //清空bodyFrame |
| | | this.ClearBodyFrame(); |
| | | |
| | | var listBackControl = new VerticalFrameControl(); |
| | | listBackControl.Height = bodyFrameLayout.Height; |
| | | bodyFrameLayout.AddChidren(listBackControl); |
| | | |
| | | //图片 |
| | | var btnPic = new PicViewControl(426, 426); |
| | | btnPic.Y = Application.GetRealHeight(150); |
| | | btnPic.UnSelectedImagePath = "RealDevice/ButtonPanelSimpleEnvironment.png"; |
| | | btnPic.Gravity = Gravity.CenterHorizontal; |
| | | listBackControl.frameTable.AddChidren(btnPic); |
| | | |
| | | //初始化桌布 |
| | | var tableContr = new InformationEditorControl(); |
| | | this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028); |
| | | |
| | | //初始化菜单行 |
| | | this.InitMenuRow(); |
| | | |
| | | //初始化桌布完成 |
| | | tableContr.FinishInitControl(); |
| | | tableContr = null; |
| | | |
| | | //保存 |
| | | var btnFinish = new BottomClickButton(); |
| | | btnFinish.TextID = R.MyInternationalizationString.uSave; |
| | | bodyFrameLayout.AddChidren(btnFinish); |
| | | btnFinish.ButtonClickEvent += (sender, e) => |
| | | { |
| | | //关闭自身 |
| | | this.CloseForm(); |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 初始化菜单行 |
| | | /// </summary> |
| | | private void InitMenuRow() |
| | | { |
| | | this.listview.RemoveAll(); |
| | | //Ac来源 |
| | | this.AddAcRow(); |
| | | //添加新风目标 |
| | | this.AddFreshAirRow(); |
| | | //添加温度来源 |
| | | this.AddTemperatureSensorRow(); |
| | | //添加湿度来源 |
| | | this.AddHumiditySourceRow(); |
| | | //亮度调节 |
| | | this.AddLevelRow(); |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 数据处理_________________________ |
| | | /// <summary> |
| | | /// 初始化数据 |
| | | /// </summary> |
| | | void InitInfo(CommonDevice curControlDev) |
| | | { |
| | | System.Threading.Tasks.Task.Run(async () => |
| | | { |
| | | try |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | CommonPage.Loading.Start(""); |
| | | }); |
| | | |
| | | var result = await GetBindName(curControlDev); |
| | | if (!result) |
| | | { |
| | | |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime) + "(" + "5007" + ")", Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance); |
| | | }); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | var mess = ex.Message; |
| | | } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | this.InitMenuRow(); |
| | | CommonPage.Loading.Hide(); |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取绑定目标 |
| | | /// </summary> |
| | | /// <param name="curControlDev"></param> |
| | | /// <returns></returns> |
| | | private async System.Threading.Tasks.Task<bool> GetBindName(CommonDevice curDev) |
| | | { |
| | | bool result = false; |
| | | //获取面板中存在的绑定目标 |
| | | var curControlDev = new CommonDevice(); |
| | | curControlDev.DeviceAddr = curDev.DeviceAddr; |
| | | curControlDev.CurrentGateWayId = curDev.CurrentGateWayId; |
| | | curControlDev.Type = curDev.Type; |
| | | int count = 0; |
| | | for (int i = 1; i < 3; i++) |
| | | { |
| | | curControlDev.DeviceEpoint = i; |
| | | |
| | | var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev); |
| | | if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null) |
| | | { |
| | | bindList = panelBindListRes.getAllBindResponseData.BindList; |
| | | foreach (var bDev in bindList) |
| | | { |
| | | var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint); |
| | | if (device == null) |
| | | { |
| | | continue; |
| | | } |
| | | if (device.Type == DeviceType.FreshAir) |
| | | { |
| | | //获取设备类型的 |
| | | var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device }); |
| | | //新风面板的新风设备,则不显示 |
| | | if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir) |
| | | { |
| | | continue; |
| | | } |
| | | bindFreshAirName = Common.LocalDevice.Current.GetDeviceEpointName(device); |
| | | bindFreshAirDev = device; |
| | | } |
| | | else if (device.Type == DeviceType.TemperatureSensor) |
| | | { |
| | | var bD = device as TemperatureSensor; |
| | | if (bD.SensorDiv == 1) |
| | | { |
| | | bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device); |
| | | bindTemperatureDev = device; |
| | | } |
| | | if (bD.SensorDiv == 2) |
| | | { |
| | | bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device); |
| | | bindHumidityDev = device; |
| | | } |
| | | } |
| | | else if (device.Type == DeviceType.FreshAirHumiditySensor) |
| | | { |
| | | bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device); |
| | | bindHumidityDev = device; |
| | | } |
| | | else if (device.Type == DeviceType.Thermostat) |
| | | { |
| | | bindAcName = Common.LocalDevice.Current.GetDeviceEpointName(device); |
| | | bindAcDev = device; |
| | | } |
| | | else if (device.Type == DeviceType.PMSensor) |
| | | { |
| | | if (bDev.BindCluster == 1026) |
| | | { |
| | | bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor); |
| | | bindTemperatureDev = device; |
| | | } |
| | | if (bDev.BindCluster == 1029) |
| | | { |
| | | bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor); |
| | | bindHumidityDev = device; |
| | | } |
| | | } |
| | | } |
| | | count++; |
| | | if (count == 2) |
| | | { |
| | | result = true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ Ac来源_________________________ |
| | | /// <summary> |
| | | /// Ac来源行 |
| | | /// </summary> |
| | | private void AddAcRow() |
| | | { |
| | | //Ac |
| | | var rowAc = new FrameRowControl(listview.rowSpace / 2); |
| | | listview.AddChidren(rowAc); |
| | | rowAc.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.AcTargets), 600); |
| | | //底线 |
| | | rowAc.AddBottomLine(); |
| | | //右箭头 |
| | | rowAc.AddRightArrow(); |
| | | var msg = Language.StringByID(R.MyInternationalizationString.nothing); |
| | | if (!string.IsNullOrEmpty(bindAcName)) |
| | | { |
| | | msg = bindAcName; |
| | | } |
| | | var btnAcStatu = rowAc.AddMostRightView(msg, 700); |
| | | rowAc.ButtonClickEvent += (sender, e) => |
| | | { |
| | | this.deviceObj.DeviceEpoint = 1; |
| | | var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.AC); |
| | | Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp); |
| | | Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; |
| | | paneTargetsBaseFormp.Show(); |
| | | |
| | | paneTargetsBaseFormp.actionAcTarget += (bindName) => |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (string.IsNullOrEmpty(bindName)) |
| | | { |
| | | btnAcStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing); |
| | | } |
| | | else |
| | | { |
| | | btnAcStatu.Text = bindName; |
| | | } |
| | | }); |
| | | }; |
| | | }; |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 新风目标_________________________ |
| | | /// <summary> |
| | | /// 新风目标行 |
| | | /// </summary> |
| | | private void AddFreshAirRow() |
| | | { |
| | | //新风目标 |
| | | var rowNewWind = new FrameRowControl(listview.rowSpace / 2); |
| | | listview.AddChidren(rowNewWind); |
| | | rowNewWind.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNewWindTarget), 600); |
| | | //底线 |
| | | rowNewWind.AddBottomLine(); |
| | | //右箭头 |
| | | rowNewWind.AddRightArrow(); |
| | | |
| | | var msg = Language.StringByID(R.MyInternationalizationString.nothing); |
| | | if (!string.IsNullOrEmpty(bindFreshAirName)) |
| | | { |
| | | msg = bindFreshAirName; |
| | | } |
| | | var btnNewWindStatu = rowNewWind.AddMostRightView(msg, 700); |
| | | |
| | | rowNewWind.ButtonClickEvent += (sender, e) => |
| | | { |
| | | this.deviceObj.DeviceEpoint = 2; |
| | | var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.FreshAir); |
| | | Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp); |
| | | Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; |
| | | paneTargetsBaseFormp.Show(); |
| | | paneTargetsBaseFormp.actionFreshAirTarget += (bindName) => |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (string.IsNullOrEmpty(bindName)) |
| | | { |
| | | btnNewWindStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing); |
| | | } |
| | | else |
| | | { |
| | | btnNewWindStatu.Text = bindName; |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | }; |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 温度来源_________________________ |
| | | /// <summary> |
| | | /// 温度来源行 |
| | | /// </summary> |
| | | private void AddTemperatureSensorRow() |
| | | { |
| | | //温度来源 |
| | | var rowTemPerature = new FrameRowControl(listview.rowSpace / 2); |
| | | listview.AddChidren(rowTemPerature); |
| | | rowTemPerature.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.TemperatureSource), 600); |
| | | //底线 |
| | | rowTemPerature.AddBottomLine(); |
| | | //右箭头 |
| | | rowTemPerature.AddRightArrow(); |
| | | var msg = Language.StringByID(R.MyInternationalizationString.nothing); |
| | | if (!string.IsNullOrEmpty(bindTemperatureName)) |
| | | { |
| | | msg = bindTemperatureName; |
| | | } |
| | | var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700); |
| | | rowTemPerature.ButtonClickEvent += (sender, e) => |
| | | { |
| | | this.deviceObj.DeviceEpoint = 1; |
| | | var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.Temperature); |
| | | Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp); |
| | | Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; |
| | | paneTargetsBaseFormp.Show(); |
| | | paneTargetsBaseFormp.actionTemperatureTarget += (bindName) => |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (string.IsNullOrEmpty(bindName)) |
| | | { |
| | | btnTemperatureStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing); |
| | | } |
| | | else |
| | | { |
| | | btnTemperatureStatu.Text = bindName; |
| | | } |
| | | }); |
| | | }; |
| | | }; |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 湿度来源_________________________ |
| | | /// <summary> |
| | | /// 湿度来源行 |
| | | /// </summary> |
| | | private void AddHumiditySourceRow() |
| | | { |
| | | //湿度 |
| | | var rowHumidity = new FrameRowControl(listview.rowSpace / 2); |
| | | listview.AddChidren(rowHumidity); |
| | | rowHumidity.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.HumiditySource), 600); |
| | | //底线 |
| | | rowHumidity.AddBottomLine(); |
| | | //右箭头 |
| | | rowHumidity.AddRightArrow(); |
| | | var msg = Language.StringByID(R.MyInternationalizationString.nothing); |
| | | if (!string.IsNullOrEmpty(bindHumidityName)) |
| | | { |
| | | msg = bindHumidityName; |
| | | } |
| | | var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700); |
| | | rowHumidity.ButtonClickEvent += (sender, e) => |
| | | { |
| | | this.deviceObj.DeviceEpoint = 1; |
| | | var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindAcDev, DeviceBind.BindInfo.BindType.Humidity); |
| | | Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp); |
| | | Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; |
| | | paneTargetsBaseFormp.Show(); |
| | | paneTargetsBaseFormp.actionHumidityTarget += (bindName) => |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | if (string.IsNullOrEmpty(bindName)) |
| | | { |
| | | btnHumidityStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing); |
| | | } |
| | | else |
| | | { |
| | | btnHumidityStatu.Text = bindName; |
| | | } |
| | | }); |
| | | }; |
| | | }; |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 亮度调节_________________________ |
| | | /// <summary> |
| | | /// 亮度调节行 |
| | | /// </summary> |
| | | private void AddLevelRow() |
| | | { |
| | | //亮度调节 |
| | | var rowLight = new FrameRowControl(listview.rowSpace / 2); |
| | | listview.AddChidren(rowLight); |
| | | rowLight.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uLightRegulation), 600); |
| | | //底线 |
| | | rowLight.AddBottomLine(); |
| | | //右箭头 |
| | | rowLight.AddRightArrow(); |
| | | rowLight.ButtonClickEvent += (sender, e) => |
| | | { |
| | | var form = new PanelBrightnessAdjustForm(); |
| | | form.AddForm(this.deviceObj); |
| | | }; |
| | | } |
| | | #endregion |
| | | |
| | | #region ■ 右上角菜单_________________________ |
| | | /// <summary> |
| | | /// 初始化右上角菜单 |
| | | /// </summary> |
| | | private void InitTopRightMenu() |
| | | { |
| | | //检测此回路是否拥有定位功能 |
| | | if (Common.LocalDevice.Current.DeviceIsCanFixedPosition(deviceObj) == false) |
| | | { |
| | | return; |
| | | } |
| | | var btnIcon = new MostRightIconControl(69, 69); |
| | | btnIcon.UnSelectedImagePath = "Item/More.png"; |
| | | topFrameLayout.AddChidren(btnIcon); |
| | | btnIcon.InitControl(); |
| | | btnIcon.ButtonClickEvent += ((sender, e) => |
| | | { |
| | | //显示右上角菜单界面 |
| | | this.ShowTopRightMenu(); |
| | | }); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 显示右上角菜单界面 |
| | | /// </summary> |
| | | private void ShowTopRightMenu() |
| | | { |
| | | var frame = new TopRightMenuControl(1, 1); |
| | | //定位 |
| | | string deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition); |
| | | frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () => |
| | | { |
| | | //发送定位功能 |
| | | Common.LocalDevice.Current.SetFixedPositionCommand(deviceObj); |
| | | }); |
| | | } |
| | | |
| | | #endregion |
| | | } |
| | | } |