using System; using System.Collections.Generic; using Shared.Common; using Shared.Phone.UserCenter.Device.Bind; using Shared.Phone.UserCenter.DeviceBind; using ZigBee.Common; using ZigBee.Device; namespace Shared.Phone.UserCenter.DevicePanel { /// /// 面板的按键配置【带有绑定源】的界面 /// public class PanelSettionWithSourceForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 列表控件 /// private FrameListControl listview = null; /// /// 设备的某一回路 /// private CommonDevice deviceObj = null; /// /// Ac目标名字 /// private string bindAcName = string.Empty; /// /// 地暖目标名字 /// private string bindFhName = string.Empty; /// /// 新风目标名字 /// private string bindFreshAirName = string.Empty; /// /// 温度目标名字 /// private string bindTemperatureName = string.Empty; /// /// 湿度目标名字 /// private string bindHumidityName = string.Empty; /// /// PM目标名字 /// private string bindPmName = string.Empty; /// /// 被绑目标是空调 /// private CommonDevice bindAcDev; /// /// 被绑目标是地暖 /// private CommonDevice bindFhDev; /// /// 被绑目标是新风 /// private CommonDevice bindFreshAirDev; /// /// 被绑目标是温度 /// private CommonDevice bindTemperatureDev; /// /// 被绑目标是湿度 /// private CommonDevice bindHumidityDev; /// /// 被绑目标是PM2.5 /// private CommonDevice bindPMDev; // /// 按键中被绑定的目标列表 /// public List bindList = new List(); #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// /// 设备的某一回路 public void ShowForm(CommonDevice i_device) { this.deviceObj = i_device; //获取数据 InitInfo(deviceObj); //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uPanelSettion)); //初始化中部信息 this.InitMiddleFrame(); //初始化右上角菜单 this.InitTopRightMenu(); } /// /// 初始化中部信息 /// 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.Gravity = Gravity.CenterHorizontal; listBackControl.frameTable.AddChidren(btnPic); //获取设备类型的 var deviceEnumInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List() { deviceObj }); if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment) { btnPic.UnSelectedImagePath = "DeviceItem/ButtonPanelFangyueEnvironmentBigPic.png"; } else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment) { btnPic.UnSelectedImagePath = "RealDevice/ButtonPanelSimpleEnvironment.png"; } else { btnPic.UnSelectedImagePath = "RealDevice/ButtonPanelFangyueFreshAir.png"; } //初始化桌布 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(); }; } /// /// 初始化菜单行 /// private void InitMenuRow() { this.listview.RemoveAll(); //添加Ac目标 this.AddAcRow(); //添加新风目标 this.AddFreshAirRow(); //PM2.5来源 this.AddPMRow(); //添加温度来源 this.AddTemperatureSensorRow(); //添加湿度来源 this.AddHumiditySourceRow(); //数据矫正 this.DataCorrectionRow(); //亮度调节 this.AddLevelRow(); } #endregion #region ■ 数据处理_________________________ /// /// 初始化数据 /// void InitInfo(CommonDevice curControlDev) { System.Threading.Tasks.Task.Run(async () => { try { Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); //获取设备类型的 var deviceEnumInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List() { deviceObj }); bool result = false; if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) { result = await GetBindName(curControlDev); } if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment) { result = await GetEnvironmentBindName(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(); }); } }); } /// /// 获取绑定目标 /// /// /// private async System.Threading.Tasks.Task GetBindName(CommonDevice curDev) { bool result = false; //获取新风面板中存在的绑定目标 FreshAir curControlDev = curDev as FreshAir; var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev); if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null) { bindList = panelBindListRes.getAllBindResponseData.BindList; foreach (var bDev in bindList) { var device = HdlDeviceCommonLogic.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint); if (device == null) { continue; } //获取设备类型的 var deviceEnumInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List() { device }); if (device.Type == DeviceType.Thermostat) { //面板的空调设备,则不显示 if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) { continue; } bindAcName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindAcDev = device; } else if (device.Type == DeviceType.FreshAir) { //面板的新风设备,则不显示 if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment) { continue; } bindFreshAirName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindFreshAirDev = device; } else if (device.Type == DeviceType.TemperatureSensor) { var bD = device as TemperatureSensor; if (bD.SensorDiv == 1) { bindTemperatureName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindTemperatureDev = device; } if (bD.SensorDiv == 2) { bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindHumidityDev = device; } } else if (device.Type == DeviceType.FreshAirHumiditySensor) { bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindHumidityDev = device; } else if (device.Type == DeviceType.PMSensor) { if (bDev.BindCluster == 1026) { bindTemperatureName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor); bindTemperatureDev = device; } if (bDev.BindCluster == 1029) { bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor); bindHumidityDev = device; } if (bDev.BindCluster == 1066) { bindPmName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindPMDev = device; } } } result = true; } return result; } /// /// 获取环境面板绑定目标 /// /// /// private async System.Threading.Tasks.Task GetEnvironmentBindName(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 = HdlDeviceCommonLogic.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint); if (device == null) { continue; } //获取设备类型的 var deviceEnumInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List() { device }); if (device.Type == DeviceType.Thermostat) { //面板的空调设备,则不显示 if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment) { continue; } bindAcName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindAcDev = device; } else if (device.Type == DeviceType.FreshAir) { //面板的新风设备,则不显示 if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment) { continue; } bindFreshAirName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindFreshAirDev = device; } else if (device.Type == DeviceType.TemperatureSensor) { var bD = device as TemperatureSensor; if (bD.SensorDiv == 1) { bindTemperatureName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindTemperatureDev = device; } if (bD.SensorDiv == 2) { bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindHumidityDev = device; } } else if (device.Type == DeviceType.FreshAirHumiditySensor) { bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindHumidityDev = device; } else if (device.Type == DeviceType.Thermostat) { bindAcName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device); bindAcDev = device; } else if (device.Type == DeviceType.PMSensor) { if (bDev.BindCluster == 1026) { bindTemperatureName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor); bindTemperatureDev = device; } if (bDev.BindCluster == 1029) { bindHumidityName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor); bindHumidityDev = device; } } } count++; if (count == 2) { result = true; } } } return result; } #endregion #region ■ Ac来源_________________________ /// /// Ac来源行 /// private void AddAcRow() { //获取设备类型的 var deviceEnumInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List() { deviceObj }); if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) { return; } //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 ■ 新风目标_________________________ /// /// 新风目标行 /// 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) => { //获取设备类型的 var deviceEnumInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List() { deviceObj }); if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueFreshAir) { this.deviceObj.DeviceEpoint = 1; } else if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment) { this.deviceObj.DeviceEpoint = 2; } var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindFreshAirDev, 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 ■ PM2.5来源_________________________ /// /// PM2.5来源行 /// private void AddPMRow() { //获取设备类型的 var deviceEnumInfo = HdlDeviceCommonLogic.Current.GetMyDeviceEnumInfo(new List() { deviceObj }); if (deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_FangyueEnvironment || deviceEnumInfo.ConcreteType == DeviceConcreteType.ButtonPanel_SimpleEnvironment) { return; } //PM2.5 var rowPM = new FrameRowControl(listview.rowSpace / 2); listview.AddChidren(rowPM); rowPM.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.PM25Source), 600); //底线 rowPM.AddBottomLine(); //右箭头 rowPM.AddRightArrow(); var msg = Language.StringByID(R.MyInternationalizationString.nothing); if (!string.IsNullOrEmpty(bindPmName)) { msg = bindPmName; } var btnPMStatu = rowPM.AddMostRightView(msg, 700); rowPM.ButtonClickEvent += (sender, e) => { this.deviceObj.DeviceEpoint = 1; var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindPMDev, BindInfo.BindType.PM); Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp); Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; paneTargetsBaseFormp.Show(); paneTargetsBaseFormp.actionPMTarget += (bindName) => { Application.RunOnMainThread(() => { if (string.IsNullOrEmpty(bindName)) { btnPMStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing); } else { btnPMStatu.Text = bindName; } }); }; }; } #endregion #region ■ 温度来源_________________________ /// /// 温度来源行 /// 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, bindTemperatureDev, 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 ■ 湿度来源_________________________ /// /// 湿度来源行 /// 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, bindHumidityDev, 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 ■ 亮度调节_________________________ /// /// 亮度调节行 /// 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 ■ 数据矫正_________________________ /// /// 数据矫正行 /// private void DataCorrectionRow() { //数据矫正 var rowLight = new FrameRowControl(listview.rowSpace / 2); listview.AddChidren(rowLight); rowLight.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.DataCorrection), 600); //底线 rowLight.AddBottomLine(); //右箭头 rowLight.AddRightArrow(); rowLight.ButtonClickEvent += (sender, e) => { var form = new DataCorrectionForm(); form.AddForm(this.deviceObj); }; } #endregion #region ■ 右上角菜单_________________________ /// /// 初始化右上角菜单 /// private void InitTopRightMenu() { //检测此回路是否拥有定位功能 if (HdlDeviceCommonLogic.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(); }); } /// /// 显示右上角菜单界面 /// 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", () => { //发送定位功能 HdlDeviceCommonLogic.Current.SetFixedPositionCommand(deviceObj); }); } #endregion } }