using System; using Shared.Common; using ZigBee.Device; namespace Shared.Phone.Device.AC { public class ACControl : FrameLayout,ZigBee.Common.IStatus { #region ◆ 变量__________________________ /// /// The action. /// public Action action; ///// ///// The top view. ///// private CommonForm.TopFrameLayout top; /// /// 更多设置 /// private Button moreBtn; /// /// 传过来的设备 /// private DeviceUI device; /// /// 传过来的ac /// private ZigBee.Device.AC ac; /// /// 传过来的房间 /// private Shared.Common.Room room; /// /// The middle fl. /// private FrameLayout midFL; /// /// 收藏按钮 /// private Button collectionBtn; /// /// 当前室内温度 /// private Button indoorTemperatureBtn; /// /// 当前模式 /// private Button currentModeBtn; /// /// 当前温度 /// private Button currentTemperatureBtn; /// /// 添加温度 /// private Button addTemperatureBtn; /// /// 降低温度 /// private Button reduceTemperatureBtn; /// /// 空调模式 /// private Button modeBtn; /// /// 开启或关闭 /// private Button switchBtn; /// /// 风速模式 /// private Button fanModeBtn; /// /// 风速选择视图 /// private Dialog fanModeDialog; /// /// 模式选择视图 /// private Dialog acModeDialog; #endregion #region ◆ 接口__________________________ /// /// 处理变化事件 --将弃用 改用DeviceInfoChange() /// /// The changed. /// Common. public void Changed(CommonDevice common) { } /// /// Changeds the IL ogic status. /// /// Logic. public void ChangedILogicStatus(ZigBee.Device.Logic logic) { //throw new NotImplementedException(); } /// /// Changeds the IS cene status. /// /// Scene. public void ChangedISceneStatus(Scene scene) { //throw new NotImplementedException(); } /// /// 设备状态更新接口 /// type:如果为 DeviceInComingRespon:设备新上报 /// type:如果为 IASInfoReport:RemoveDeviceRespon /// type:如果为 DeviceStatusReport:设备上报 /// type:如果为 IASInfoReport:IAS安防信息上报 /// type:如果为 OnlineStatusChange: 设备在线状态更新 /// /// Common. /// Type tag. public void DeviceInfoChange(CommonDevice common, string typeTag) { if (typeTag == "DeviceStatusReport") { Application.RunOnMainThread(() => { try { var deviceUI = device; //设备为空 if (deviceUI.CommonDevice == null) { return; } //是否为当前设备 if (deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint || deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr) { return; } if (deviceUI.CommonDevice.Type == DeviceType.Thermostat) { //Thermostat功能 if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513) { var attriButeList = (common as ZigBee.Device.AC).DeviceStatusReport.AttriBute; if (attriButeList == null || attriButeList.Count == 0) { return; } ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport; switch (attriButeList[0].AttributeId) { case 0: //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃ ac.currentLocalTemperature = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default; ac.LastDateTime = DateTime.Now; indoorTemperatureBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.IndoorTemperature)} {ac.currentLocalTemperature} ℃"; //currentTemperatureBtn.Text = $"{ac.currentLocalTemperature} ℃"; break; case 17: //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。 ac.currentCoolingSetpoint = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default; ac.LastDateTime = DateTime.Now; break; case 18: //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。 ac.currentHeatingSetpoint = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default; ac.LastDateTime = DateTime.Now; break; case 4096: //此属性表明此设备当前的自动温度,实际温度为“AutoSetpoint / 100”,单位:℃。 ac.currentAutoSetpoint = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default; ac.LastDateTime = DateTime.Now; break; case 28: //此属性描述恒温设备正处于哪种模式 //Off = 0 Auto = 1 Cool = 3 Heat = 4 FanOnly = 7 Dry = 8 ac.currentSystemMode = attriButeList[0].AttriButeData; ac.LastDateTime = DateTime.Now; if (ac.currentSystemMode == 0) { switchBtn.IsSelected = false; modeBtn.IsSelected = false; modeBtn.SelectedImagePath = ACControlBase.GetModeSelectedImagePathByModeId(ac.currentSystemMode); modeBtn.UnSelectedImagePath = ACControlBase.GetModeUnSelectedImagePathByModeId(ac.currentSystemMode); currentModeBtn.Text = ACControlBase.GetModeNameByModeId(ac.currentSystemMode); } else if (ac.currentSystemMode == 1 || ac.currentSystemMode == 3 || ac.currentSystemMode == 4 || ac.currentSystemMode == 7 || ac.currentSystemMode == 8) { switchBtn.IsSelected = true; modeBtn.IsSelected = true; modeBtn.SelectedImagePath = ACControlBase.GetModeSelectedImagePathByModeId(ac.currentSystemMode); modeBtn.UnSelectedImagePath = ACControlBase.GetModeUnSelectedImagePathByModeId(ac.currentSystemMode); currentModeBtn.Text = ACControlBase.GetModeNameByModeId(ac.currentSystemMode); currentTemperatureBtn.Text = $"{ACControlBase.GetCurrentModeTemperature(ac)} ℃"; } break; } } } //Fan Control功能 if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 514) { var attriButeList = (common as ZigBee.Device.AC).DeviceStatusReport.AttriBute; if (attriButeList == null || attriButeList.Count == 0) { return; } ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport; switch (attriButeList[0].AttributeId) { case 0: //风扇当前的工作模式 1=Low 2=Medium 3=High ac.currentFanMode = attriButeList[0].AttriButeData; ac.LastDateTime = DateTime.Now; fanModeBtn.IsSelected = true; fanModeBtn.SelectedImagePath = ACControlBase.GetFanModeSelectedImagePathByFanModeId(ac.currentFanMode); fanModeBtn.UnSelectedImagePath = ACControlBase.GetFanModeUnSelectedImagePathByFanModeId(ac.currentFanMode); break; } //***新改***设备状态上报中,当CluterID=3,证明设备在线,直接标记 //else if ((common as ToggleLight).DeviceStatusReport.CluterID == 3) //{ //var light = deviceUI.CommonDevice as ToggleLight; //light.IsOnline = 1; //deviceIMG.IsSelected = light.IsOnline == 1; //light.LastDateTime = DateTime.Now; //} } } catch (Exception ex) { System.Console.WriteLine($"Error:{ex.Message}"); } }); } else if (typeTag == "OnlineStatusChange") { Application.RunOnMainThread(() => { try { var deviceUI = device; //设备为空 if (deviceUI.CommonDevice == null) { return; } //是否为当前设备 if (deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint || deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr) { return; } if (deviceUI.CommonDevice.Type == DeviceType.Thermostat) { ac = deviceUI.CommonDevice as ZigBee.Device.AC; ac.IsOnline = (common as DimmableLight).IsOnline; ac.LastDateTime = DateTime.Now; } } catch (Exception ex) { System.Console.WriteLine($"Error:{ex.Message}"); } }); } } #endregion #region ◆ 重写移除_______________________ /// /// Removes from parent. /// public override void RemoveFromParent() { ZbGateway.StatusList.Remove(this); base.RemoveFromParent(); } #endregion #region ◆ 构造方法_______________________ /// /// 构造方法 /// public ACControl() { BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; } #endregion #region ◆ 初始化________________________ /// /// 初始化 /// /// Device. /// Room. private void InitAC(DeviceUI device, Common.Room room) { ZbGateway.StatusList.Add(this); this.device = device; this.room = room; this.ac = device.CommonDevice as ZigBee.Device.AC; //添加topview AddTopView(); //添加midview AddMidview(); //绑定事件 BindEvent(); //收藏 InitCollection(); if (ac.Gateway.IsVirtual) { //发送读取状态命令 UserView.UserHomeView.ReadStatus(ac, () => { ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); ac.ReadLocalTemperature(); ac.ReadCoolingSetpoint(); ac.ReadHeatingSetpoint(); ac.ReadAutoSetpoint(); ac.ReadFanMode(); ac.ReadSystemMode(); }); } else { //防止短时间内多次读取设备状态 if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan) { ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch); ac.ReadLocalTemperature(); ac.ReadCoolingSetpoint(); ac.ReadHeatingSetpoint(); ac.ReadAutoSetpoint(); ac.ReadFanMode(); ac.ReadSystemMode(); } } } /// /// Inits the collection. /// private void InitCollection() { var dev = Shared.Common.Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName); if (dev == null) { collectionBtn.IsSelected = false; } else { collectionBtn.IsSelected = true; } } #endregion #region ◆ 显示界面_______________________ /// /// 显示界面 /// /// Device. /// Room. public void Show(DeviceUI device, Shared.Common.Room room) { InitAC(device, room); } #endregion #region ◆ topview_______________________ /// /// Adds the top view. /// private void AddTopView() { top = new CommonForm.TopFrameLayout(); AddChidren(top); top.InitTopview(); top.backButton.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); }; AddMoreview(); } /// /// Adds the moreview. /// private void AddMoreview() { moreBtn = new CommonForm.SelectedStatuButton() { X = Application.GetRealWidth(CommonPage.AppRealWidth - 150), Width = Application.GetMinReal(110), Height = Application.GetMinReal(110), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Item/More.png", SelectedImagePath = "Item/MoreSelected.png", }; top.topView.AddChidren(moreBtn); } /// /// 更多设置 /// /// Sender. /// E. private void MoreEvent(object sender, MouseEventArgs e) { var detailInfo = new Device.CommonForm.DeviceDetailInfo { }; UserView.HomePage.Instance.AddChidren(detailInfo); UserView.HomePage.Instance.PageIndex += 1; detailInfo.Show(device, room); detailInfo.action = () => { Show(device, room); }; } #endregion #region ◆ midview_______________________ /// /// Adds the midview. /// private void AddMidview() { midFL = new FrameLayout() { Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.Navigation_Height), Y = top.Bottom, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; AddChidren(midFL); AddItemview(); } #endregion #region ◆ itemview_______________________ /// /// Adds the itemview. /// private void AddItemview() { var itemView = new FrameLayout() { Y=Application.GetRealHeight(115), Width = Application.GetRealWidth(965), Height = Application.GetRealHeight(1316), Radius = CommonPage.BigFormRadius, Gravity = Gravity.CenterHorizontal, BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor }; midFL.AddChidren(itemView); var deviceView = new FrameLayout() { X = 2, Y = 2, Width = itemView.Width - 4, Height = itemView.Height - Application.GetRealHeight(138), BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, Tag = device }; itemView.AddChidren(deviceView); collectionBtn = new Button() { X = deviceView.Width - Application.GetRealWidth(130), Y = Application.GetRealHeight(20), Width = Application.GetMinReal(110), Height = Application.GetMinReal(110), UnSelectedImagePath = "Item/Collection.png", SelectedImagePath = "Item/CollectionSelected.png" }; deviceView.AddChidren(collectionBtn); var deviceName = new Button() { Y = Application.GetRealHeight(50), Height = Application.GetRealHeight(80), Width = Application.GetRealWidth(600), Gravity = Gravity.CenterHorizontal, Text=device.CommonDevice.DeviceEpointName, TextSize=15, TextColor=ZigbeeColor.Current.GXCTextBlackColor }; deviceView.AddChidren(deviceName); indoorTemperatureBtn = new Button() { Y = deviceName.Bottom, Height = Application.GetRealHeight(80), Width = Application.GetRealWidth(300), Gravity = Gravity.CenterHorizontal, Text = $"{Language.StringByID(R.MyInternationalizationString.IndoorTemperature)} {ac.currentLocalTemperature}°C" , TextSize = 12, TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor }; deviceView.AddChidren(indoorTemperatureBtn); var controlBG = new FrameLayout() { Y = Application.GetRealHeight(323), Height = Application.GetMinRealAverage(547), Width = Application.GetMinRealAverage(671), Gravity = Gravity.CenterHorizontal, BackgroundImagePath = "AC/Group.png" }; deviceView.AddChidren(controlBG); var controlBG2 = new Button() { Y=Application.GetRealHeight(783), Height=Application.GetMinRealAverage(121), Width=Application.GetMinRealAverage(351), UnSelectedImagePath="AC/Path.png", Gravity=Gravity.CenterHorizontal }; deviceView.AddChidren(controlBG2); //当前模式 currentModeBtn = new Button() { Y = Application.GetRealHeight(187), Height = Application.GetRealHeight(80), Width = Application.GetRealWidth(200), TextColor = ZigbeeColor.Current.GXCTextBlackColor, Gravity=Gravity.CenterHorizontal, Text=ACControlBase.GetModeNameByModeId(ac.currentSystemMode) }; controlBG.AddChidren(currentModeBtn); //降低温度 reduceTemperatureBtn = new Button() { X = Application.GetRealWidth(112), Y = Application.GetRealHeight(268), Width = Application.GetMinRealAverage(80), Height = Application.GetMinRealAverage(80), UnSelectedImagePath = "AC/Reduce.png" }; controlBG.AddChidren(reduceTemperatureBtn); //温度 currentTemperatureBtn = new Button() { //X = Application.GetRealWidth(239), Y = Application.GetRealHeight(248), Width = Application.GetRealWidth(180), Height = Application.GetRealHeight(100), TextColor=ZigbeeColor.Current.GXCTextBlackColor, TextSize=15, Text=$"{ACControlBase.GetCurrentModeTemperature(ac)} °C", Gravity=Gravity.CenterHorizontal }; controlBG.AddChidren(currentTemperatureBtn); //添加温度 addTemperatureBtn = new Button() { X = Application.GetRealWidth(472), Y = Application.GetRealHeight(268), Width = Application.GetMinRealAverage(80), Height = Application.GetMinRealAverage(80), UnSelectedImagePath = "AC/Add.png" }; controlBG.AddChidren(addTemperatureBtn); //模式 modeBtn = new Button() { X = Application.GetRealWidth(207), Y = Application.GetRealHeight(996), Width = Application.GetMinRealAverage(80), Height = Application.GetMinRealAverage(80), UnSelectedImagePath = ACControlBase.GetModeUnSelectedImagePathByModeId(ac.currentSystemMode), SelectedImagePath = ACControlBase.GetModeSelectedImagePathByModeId(ac.currentSystemMode), IsSelected = ACControlBase.IsOpen(ac) }; deviceView.AddChidren(modeBtn); //开关 switchBtn = new Button() { X = Application.GetRealWidth(446), Y = Application.GetRealHeight(996), Width = Application.GetMinRealAverage(80), Height = Application.GetMinRealAverage(80), UnSelectedImagePath = "AC/OpenOrClose.png", SelectedImagePath = "AC/OpenOrCloseSelected.png", IsSelected = ACControlBase.IsOpen(ac) }; deviceView.AddChidren(switchBtn); //风速 fanModeBtn = new Button() { X = Application.GetRealWidth(667), Y = Application.GetRealHeight(996), Width = Application.GetMinRealAverage(80), Height = Application.GetMinRealAverage(80), UnSelectedImagePath = ACControlBase.GetFanModeUnSelectedImagePathByFanModeId(ac.currentFanMode), SelectedImagePath = ACControlBase.GetFanModeSelectedImagePathByFanModeId(ac.currentFanMode), IsSelected = ACControlBase.IsOpen(ac) }; deviceView.AddChidren(fanModeBtn); var roomBtn = new Button() { X = Application.GetRealWidth(50), Y = Application.GetRealHeight(25) + deviceView.Bottom, Width = Application.GetMinReal(80), Height = Application.GetMinReal(80), UnSelectedImagePath = "Item/Room.png", SelectedImagePath = "Item/RoomSelected.png" }; itemView.AddChidren(roomBtn); var roomName = new Button() { X = roomBtn.Right + Application.GetRealWidth(20), Y = roomBtn.Y, Width = Application.GetRealWidth(400), Height = Application.GetRealHeight(80), Text = room.Name, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.GXCTextBlackColor, SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor }; itemView.AddChidren(roomName); } #endregion #region ◆ 切换风速_______________________ /// /// 切换风速 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void ShowChangeFan_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) { int fanItem_X = 80; int fanItem_Height = 150; int fanItem_Width = 449; fanModeDialog = new Dialog(); fanModeDialog.Show(); var closeBGview = new FrameLayout(); fanModeDialog.AddChidren(closeBGview); closeBGview.MouseUpEventHandler += (send1, e1) => { fanModeDialog.Close(); }; var changeFanModeBG = new Button() { X = Application.GetRealWidth(553), Y = Application.GetRealHeight(655), Height = Application.GetRealHeight(625), Width = Application.GetRealWidth(fanItem_Width), UnSelectedImagePath = "AC/SelectedFanModeBG.png" }; closeBGview.AddChidren(changeFanModeBG); var changeFanModeFL = new FrameLayout() { X = Application.GetRealWidth(553), Y = Application.GetRealHeight(655), Height = Application.GetRealHeight(600), Width = Application.GetRealWidth(fanItem_Width), Radius = CommonPage.BigFormRadius, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, }; closeBGview.AddChidren(changeFanModeFL); var changeFanBtn = new Button() { X = Application.GetRealWidth(fanItem_X), Width = Application.GetRealWidth(fanItem_Width - fanItem_X), Height = Application.GetRealHeight(fanItem_Height), TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextID = R.MyInternationalizationString.SelectFanMode, TextAlignment = TextAlignment.CenterLeft }; changeFanModeFL.AddChidren(changeFanBtn); var fan_Low = new CommonForm.ACLeftIconButtonRowLayout() { Y = changeFanBtn.Bottom, Width = Application.GetRealWidth(fanItem_Width), Height = Application.GetRealHeight(fanItem_Height), Tag = ZigBee.Device.AC.FanMode.Low }; changeFanModeFL.AddChidren(fan_Low); fan_Low.Init("AC/Fan_Low.png", "AC/Fan_LowSelected.png", Language.StringByID(R.MyInternationalizationString.Fan_Low)); var fan_Middle = new CommonForm.ACLeftIconButtonRowLayout() { Y = fan_Low.Bottom, Width = Application.GetRealWidth(fanItem_Width), Height = Application.GetRealHeight(fanItem_Height), Tag = ZigBee.Device.AC.FanMode.Medium }; changeFanModeFL.AddChidren(fan_Middle); fan_Middle.Init("AC/Fan_Middle.png", "AC/Fan_MiddleSelected.png", Language.StringByID(R.MyInternationalizationString.Fan_Middle)); var fan_Height = new CommonForm.ACLeftIconButtonRowLayout() { Y = fan_Middle.Bottom, Width = Application.GetRealWidth(fanItem_Width), Height = Application.GetRealHeight(fanItem_Height), Tag = ZigBee.Device.AC.FanMode.High }; changeFanModeFL.AddChidren(fan_Height); fan_Height.Init("AC/Fan_Height.png", "AC/Fan_HeightSelected.png", Language.StringByID(R.MyInternationalizationString.Fan_Height), false); fan_Low.TitleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent; fan_Low.IconButton.MouseUpEventHandler += ChangeFan_MouseUpEvent; fan_Middle.TitleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent; fan_Middle.IconButton.MouseUpEventHandler += ChangeFan_MouseUpEvent; fan_Height.TitleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent; fan_Height.IconButton.MouseUpEventHandler += ChangeFan_MouseUpEvent; if (ACControlBase.IsOpen(ac)) { if (ac.currentFanMode == 1) { fan_Low.SetSelectedStatu(); } else if (ac.currentFanMode == 2) { fan_Middle.SetSelectedStatu(); } else if (ac.currentFanMode == 3) { fan_Height.SetSelectedStatu(); } } } /// /// 切换风速 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void ChangeFan_MouseUpEvent(object sender,MouseEventArgs mouseEventArgs) { var tag = (sender as Button).Tag.ToString(); ZigBee.Device.AC.FanMode mode= ZigBee.Device.AC.FanMode.Low; if (tag == "Low") { mode = ZigBee.Device.AC.FanMode.Low; } else if (tag == "Medium") { mode = ZigBee.Device.AC.FanMode.Medium; } else if (tag == "High") { mode = ZigBee.Device.AC.FanMode.High; } ChangeFan(mode); } /// /// 切换风速 /// /// Fan mode. private void ChangeFan(ZigBee.Device.AC.FanMode fanMode) { fanModeDialog.Close(); if (ACControlBase.IsOpen(ac) == false) { ACControlBase.ShowACIsCloseTip(); return; } fanModeBtn.IsSelected = true; fanModeBtn.SelectedImagePath = ACControlBase.GetFanModeSelectedImagePathByFanMode(fanMode); fanModeBtn.UnSelectedImagePath = ACControlBase.GetFanModeUnSelectedImagePathByFanMode(fanMode); ac.currentFanMode = (int)(fanMode); (device.CommonDevice as ZigBee.Device.AC).SetFanModeAsync(fanMode); } #endregion #region ◆ 切换模式_______________________ /// /// 切换模式 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void ShowChangeMode_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) { int modeItem_X = 80; int modeItem_Height = 150; int modeItem_Width = 449; acModeDialog = new Dialog(); acModeDialog.Show(); var closeBGview = new FrameLayout(); acModeDialog.AddChidren(closeBGview); closeBGview.MouseUpEventHandler += (send1, e1) => { acModeDialog.Close(); }; var changeModeBG = new Button() { X = Application.GetRealWidth(80), Y = Application.GetRealHeight(360), Height = Application.GetRealHeight(933), Width = Application.GetRealWidth(modeItem_Width), UnSelectedImagePath = "AC/SelectedModeBG.png" }; closeBGview.AddChidren(changeModeBG); var changeModeFL = new FrameLayout() { X = Application.GetRealWidth(80), Y = Application.GetRealHeight(360), Height = Application.GetRealHeight(900), Width = Application.GetRealWidth(modeItem_Width), Radius = CommonPage.BigFormRadius, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, //BackgroundIagePath="AC/SelectedModeBG.png" }; closeBGview.AddChidren(changeModeFL); var changeModeBtn = new Button() { X = Application.GetRealWidth(modeItem_X), Width = Application.GetRealWidth(modeItem_Width - modeItem_X), Height = Application.GetRealHeight(modeItem_Height), TextColor = ZigbeeColor.Current.GXCTextBlackColor, TextID = R.MyInternationalizationString.SelectFanMode, TextAlignment = TextAlignment.CenterLeft }; changeModeFL.AddChidren(changeModeBtn); var mode_Auto = new CommonForm.ACLeftIconButtonRowLayout() { Y = changeModeBtn.Bottom, Width = Application.GetRealWidth(modeItem_Width), Height = Application.GetRealHeight(modeItem_Height), Tag = ZigBee.Device.AC.AcMode.Auto }; changeModeFL.AddChidren(mode_Auto); mode_Auto.Init("AC/Mode_Auto.png", "AC/Mode_AutoSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Auto)); var mode_Cool = new CommonForm.ACLeftIconButtonRowLayout() { Y = mode_Auto.Bottom, Width = Application.GetRealWidth(modeItem_Width), Height = Application.GetRealHeight(modeItem_Height), Tag = ZigBee.Device.AC.AcMode.Cool }; changeModeFL.AddChidren(mode_Cool); mode_Cool.Init("AC/Mode_Cool.png", "AC/Mode_CoolSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Cool)); var mode_Heat = new CommonForm.ACLeftIconButtonRowLayout() { Y = mode_Cool.Bottom, Width = Application.GetRealWidth(modeItem_Width), Height = Application.GetRealHeight(modeItem_Height), Tag = ZigBee.Device.AC.AcMode.Heat }; changeModeFL.AddChidren(mode_Heat); mode_Heat.Init("AC/Mode_Heat.png", "AC/Mode_HeatSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Heat)); var mode_Dry = new CommonForm.ACLeftIconButtonRowLayout() { Y = mode_Heat.Bottom, Width = Application.GetRealWidth(modeItem_Width), Height = Application.GetRealHeight(modeItem_Height), Tag = ZigBee.Device.AC.AcMode.Dry }; changeModeFL.AddChidren(mode_Dry); mode_Dry.Init("AC/Mode_Dry.png", "AC/Mode_DrySelected.png", Language.StringByID(R.MyInternationalizationString.Mode_Dry)); var mode_Fan = new CommonForm.ACLeftIconButtonRowLayout() { Y = mode_Dry.Bottom, Width = Application.GetRealWidth(modeItem_Width), Height = Application.GetRealHeight(modeItem_Height), Tag = ZigBee.Device.AC.AcMode.FanOnly }; changeModeFL.AddChidren(mode_Fan); mode_Fan.Init("AC/Mode_Fan.png", "AC/Mode_FanSelected.png", Language.StringByID(R.MyInternationalizationString.Mode_FanOnly), false); mode_Auto.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Auto.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Cool.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Cool.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Heat.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Heat.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Dry.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Dry.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Fan.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; mode_Fan.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent; if (ACControlBase.IsOpen(ac)) { if (ac.currentSystemMode == 1) { mode_Auto.SetSelectedStatu(); } else if (ac.currentSystemMode == 3) { mode_Cool.SetSelectedStatu(); } else if (ac.currentSystemMode == 4) { mode_Heat.SetSelectedStatu(); } else if (ac.currentSystemMode == 8) { mode_Dry.SetSelectedStatu(); } else if (ac.currentSystemMode == 7) { mode_Fan.SetSelectedStatu(); } } } /// /// 切换模式 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void ChangeMode_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) { var tag = (sender as Button).Tag.ToString(); ZigBee.Device.AC.AcMode mode = ZigBee.Device.AC.AcMode.Cool; if (tag == "Auto") { mode = ZigBee.Device.AC.AcMode.Auto; } else if (tag == "Cool") { mode = ZigBee.Device.AC.AcMode.Cool; } else if (tag == "Heat") { mode = ZigBee.Device.AC.AcMode.Heat; } else if(tag =="Dry") { mode = ZigBee.Device.AC.AcMode.Dry; } else if(tag == "FanOnly") { mode = ZigBee.Device.AC.AcMode.FanOnly; } ChangeMode(mode); } /// /// 切换模式 /// /// Ac mode. private void ChangeMode(ZigBee.Device.AC.AcMode acMode) { acModeDialog.Close(); if (ACControlBase.IsOpen(ac) == false) { ACControlBase.ShowACIsCloseTip(); return; } modeBtn.IsSelected = true; modeBtn.SelectedImagePath = ACControlBase.GetModeSelectedImagePathByMode(acMode); modeBtn.UnSelectedImagePath = ACControlBase.GetModeUnSelectedImagePathByMode(acMode); currentModeBtn.Text = ACControlBase.GetModeNameByMode(acMode); ac.currentSystemMode = (int)acMode; currentTemperatureBtn.Text = $"{ACControlBase.GetCurrentModeTemperature(ac)} °C"; (device.CommonDevice as ZigBee.Device.AC).SetSystemModeAsync(acMode); } #endregion #region ◆ 开关__________________________ /// /// 开关 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void Switch_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) { switchBtn.IsSelected = !switchBtn.IsSelected; if (switchBtn.IsSelected == true) { ac.Open(); modeBtn.IsSelected = true; fanModeBtn.IsSelected = true; } else { ac.Close(); modeBtn.IsSelected = false; fanModeBtn.IsSelected = false; } } #endregion #region ◆ 升温__________________________ /// /// 升温 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void Add_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) { if (ACControlBase.IsOpen(ac) == false) { ACControlBase.ShowACIsCloseTip(); return; } //cool //dry if (ac.currentSystemMode == 3 || ac.currentSystemMode==8) { if(ac.currentCoolingSetpoint>=ACControlBase.Temperature_High) { return; } ac.currentCoolingSetpoint += 1; ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint*100); currentTemperatureBtn.Text = $"{ac.currentCoolingSetpoint} °C"; } //heat else if (ac.currentSystemMode == 4) { if(ac.currentHeatingSetpoint>=ACControlBase.Temperature_High) { return; } ac.currentHeatingSetpoint += 1; ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint*100); currentTemperatureBtn.Text = $"{ac.currentHeatingSetpoint} °C"; } //auto else if (ac.currentSystemMode == 1) { if (ac.currentAutoSetpoint >= ACControlBase.Temperature_High) { return; } ac.currentAutoSetpoint += 1; ac.SetAutoTemperatureAsync(ac.currentAutoSetpoint*100); currentTemperatureBtn.Text = $"{ac.currentAutoSetpoint} °C"; } } #endregion #region ◆ 降温__________________________ /// /// 降温 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void Reduce_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) { if (ACControlBase.IsOpen(ac) == false) { ACControlBase.ShowACIsCloseTip(); return; } //cool //dry if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8) { if (ac.currentCoolingSetpoint <= ACControlBase.Temperature_Low) { return; } ac.currentCoolingSetpoint -= 1; ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint*100); currentTemperatureBtn.Text = $"{ac.currentCoolingSetpoint} °C"; } //heat else if (ac.currentSystemMode == 4) { if (ac.currentHeatingSetpoint <= ACControlBase.Temperature_Low) { return; } ac.currentHeatingSetpoint -= 1; ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint*100); currentTemperatureBtn.Text = $"{ac.currentHeatingSetpoint} °C"; } //auto else if (ac.currentSystemMode == 1) { if (ac.currentAutoSetpoint <= ACControlBase.Temperature_Low) { return; } ac.currentAutoSetpoint -= 1; ac.SetAutoTemperatureAsync(ac.currentAutoSetpoint*100); currentTemperatureBtn.Text = $"{ac.currentAutoSetpoint} °C"; } } #endregion #region ◆ 收藏__________________________ /// /// 收藏到主页 /// /// Sender. /// E. private void Collection(object sender, MouseEventArgs e) { //collection if (collectionBtn.IsSelected) { Shared.Common.Room.Lists[0].DeleteDevice(device.FileName); collectionBtn.IsSelected = false; } else { Shared.Common.Room.Lists[0].AddDevice(device.FileName); collectionBtn.IsSelected = true; } } #endregion #region ◆ 绑定按钮_______________________ /// /// 绑定按钮的事件 /// private void BindEvent() { switchBtn.MouseUpEventHandler += Switch_MouseUpEvent; reduceTemperatureBtn.MouseUpEventHandler += Reduce_MouseUpEvent; addTemperatureBtn.MouseUpEventHandler += Add_MouseUpEvent; collectionBtn.MouseUpEventHandler += Collection; moreBtn.MouseUpEventHandler += MoreEvent; fanModeBtn.MouseUpEventHandler += ShowChangeFan_MouseUpEvent; modeBtn.MouseUpEventHandler += ShowChangeMode_MouseUpEvent; } #endregion } }