HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-10-10 2ed75b8b337048e5d75e6d9ec8307633134f02fd
ZigbeeApp/Shared/Phone/Device/AC/ACControl.cs
@@ -14,7 +14,7 @@
        ///// <summary>
        ///// The top view.
        ///// </summary>
        private CommonForm.TopFrameLayout topFL;
        private CommonForm.TopFrameLayout top;
        /// <summary>
        /// 更多设置
        /// </summary>
@@ -153,21 +153,27 @@
                                {
                                    case 0:
                                        //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
                                        ac.currentLocalTemperature = attriButeList[0].AttriButeData/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} ℃";
                                        //currentTemperatureBtn.Text = $"{ac.currentLocalTemperature} ℃";
                                        break;
                                    case 17:
                                        //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
                                        ac.currentCoolingSetpoint = attriButeList[0].AttriButeData/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;
                                        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;
@@ -191,6 +197,8 @@
                                            modeBtn.SelectedImagePath = ACControlBase.GetModeSelectedImagePathByModeId(ac.currentSystemMode);
                                            modeBtn.UnSelectedImagePath = ACControlBase.GetModeUnSelectedImagePathByModeId(ac.currentSystemMode);
                                            currentModeBtn.Text = ACControlBase.GetModeNameByModeId(ac.currentSystemMode);
                                            currentTemperatureBtn.Text = $"{ACControlBase.GetCurrentModeTemperature(ac)} ℃";
                                        }
                                        break;
                                }
@@ -255,7 +263,6 @@
                        {
                            ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                            ac.IsOnline = (common as DimmableLight).IsOnline;
                            //deviceIMG.IsSelected = light.IsOnline == 1;
                            ac.LastDateTime = DateTime.Now;
                        }
                    }
@@ -323,11 +330,12 @@
                UserView.UserHomeView.ReadStatus(ac, () =>
                {
                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ac.ReadFanMode();
                    ac.ReadSystemMode();
                    ac.ReadLocalTemperature();
                    ac.ReadCoolingSetpoint();
                    ac.ReadHeatingSetpoint();
                    ac.ReadAutoSetpoint();
                    ac.ReadFanMode();
                    ac.ReadSystemMode();
                });
            }
            else
@@ -336,11 +344,12 @@
                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                {
                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                    ac.ReadFanMode();
                    ac.ReadSystemMode();
                    ac.ReadLocalTemperature();
                    ac.ReadCoolingSetpoint();
                    ac.ReadHeatingSetpoint();
                    ac.ReadAutoSetpoint();
                    ac.ReadFanMode();
                    ac.ReadSystemMode();
                }
            }
@@ -385,8 +394,13 @@
        /// </summary>
        private void AddTopView()
        {
            topFL = new CommonForm.TopFrameLayout(this) { };
            AddChidren(topFL);
            top = new CommonForm.TopFrameLayout();
            AddChidren(top);
            top.InitTopview();
            top.backButton.MouseUpEventHandler += (sender, e) =>
            {
                RemoveFromParent();
            };
            AddMoreview();
        }
@@ -405,8 +419,7 @@
                UnSelectedImagePath = "Item/More.png",
                SelectedImagePath = "Item/MoreSelected.png",
            };
            topFL.topView.AddChidren(moreBtn);
            moreBtn.MouseUpEventHandler += MoreEvent;
            top.topView.AddChidren(moreBtn);
        }
        /// <summary>
@@ -438,7 +451,7 @@
            midFL = new FrameLayout()
            {
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.Navigation_Height),
                Y = topFL.Bottom,
                Y = top.Bottom,
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
            };
            AddChidren(midFL);
@@ -490,7 +503,7 @@
            {
                Y = Application.GetRealHeight(50),
                Height = Application.GetRealHeight(80),
                Width = Application.GetRealWidth(300),
                Width = Application.GetRealWidth(600),
                Gravity = Gravity.CenterHorizontal,
                Text=device.CommonDevice.DeviceEpointName,
                TextSize=15,
@@ -664,42 +677,31 @@
                fanModeDialog.Close();
            };
            //var downTriangleBtn = new Button()
            //{
            //    X = Application.GetRealWidth(20) + fanModeBtn.X,
            //    Y = fanModeBtn.Y-Application.GetRealHeight(217),
            //    Width = Application.GetMinRealAverage(30),
            //    Height = Application.GetMinRealAverage(15),
            //    UnSelectedImagePath = "Item/UpperTriangle.png"
            //};
            //closeBGview.AddChidren(downTriangleBtn);
            //var changeFanModeBG = new Button()
            //{
            //    X = Application.GetRealWidth(553),
            //    Y = Application.GetRealHeight(605),
            //    Height = Application.GetRealHeight(625),
            //    Width = Application.GetRealWidth(fanItem_Width),
            //    SelectedImagePath="AC/SelectedFanModeBG.png"
            //};
            //closeBGview.AddChidren(changeFanModeBG);
            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(605),
                Height = Application.GetRealHeight(625),
                Y = Application.GetRealHeight(655),
                Height = Application.GetRealHeight(600),
                Width = Application.GetRealWidth(fanItem_Width),
                Radius = CommonPage.BigFormRadius,
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                //BackgroundImagePath="AC/SelectedFanModeBG.png"
            };
            closeBGview.AddChidren(changeFanModeFL);
            var changeFanBtn = new Button()
            {
                X = Application.GetRealWidth(fanItem_X),
                Width = Application.GetRealWidth(fanItem_Width- fanItem_X),
                Width = Application.GetRealWidth(fanItem_Width - fanItem_X),
                Height = Application.GetRealHeight(fanItem_Height),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                TextID = R.MyInternationalizationString.SelectFanMode,
@@ -707,17 +709,17 @@
            };
            changeFanModeFL.AddChidren(changeFanBtn);
            var fan_Low = new CommonForm.LeftIconButtonRowLayout()
            var fan_Low = new CommonForm.ACLeftIconButtonRowLayout()
            {
                Y=changeFanBtn.Bottom,
                Y = changeFanBtn.Bottom,
                Width = Application.GetRealWidth(fanItem_Width),
                Height = Application.GetRealHeight(fanItem_Height),
                Tag=ZigBee.Device.AC.FanMode.Low
                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.LeftIconButtonRowLayout()
            var fan_Middle = new CommonForm.ACLeftIconButtonRowLayout()
            {
                Y = fan_Low.Bottom,
                Width = Application.GetRealWidth(fanItem_Width),
@@ -727,7 +729,7 @@
            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.LeftIconButtonRowLayout()
            var fan_Height = new CommonForm.ACLeftIconButtonRowLayout()
            {
                Y = fan_Middle.Bottom,
                Width = Application.GetRealWidth(fanItem_Width),
@@ -735,17 +737,32 @@
                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));
            fan_Height.Init("AC/Fan_Height.png", "AC/Fan_HeightSelected.png", Language.StringByID(R.MyInternationalizationString.Fan_Height), false);
            //fan_Low.MouseUpEventHandler += ChangeFan_MouseUpEvent;
            fan_Low.titleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
            fan_Low.iconButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
            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_Middle.TitleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
            fan_Middle.IconButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
            fan_Height.titleButton.MouseUpEventHandler += ChangeFan_MouseUpEvent;
            fan_Height.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();
                }
            }
        }
        /// <summary>
@@ -816,38 +833,27 @@
                acModeDialog.Close();
            };
            //var changeModeBG = new Button()
            //{
            //    X = Application.GetRealWidth(80),
            //    Y = Application.GetRealHeight(360),
            //    Height = Application.GetRealHeight(933),
            //    Width = Application.GetRealWidth(modeItem_Width),
            //    //Radius = CommonPage.BigFormRadius,
            //    SelectedImagePath = "AC/SelectedModeBG.png"
            //};
            //closeBGview.AddChidren(changeModeBG);
            var changeModeFL = new FrameLayout()
            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,
                //BackgroundImagePath="AC/SelectedModeBG.png"
                //BackgroundIagePath="AC/SelectedModeBG.png"
            };
            closeBGview.AddChidren(changeModeFL);
            var changeModeBG = new Button()
            {
                Height = Application.GetRealHeight(933),
                Width = Application.GetRealWidth(modeItem_Width),
                //Radius = CommonPage.BigFormRadius,
                SelectedImagePath = "AC/SelectedModeBG.png"
            };
            changeModeFL.AddChidren(changeModeBG);
            var changeModeBtn = new Button()
            {
@@ -860,7 +866,7 @@
            };
            changeModeFL.AddChidren(changeModeBtn);
            var mode_Auto = new CommonForm.LeftIconButtonRowLayout()
            var mode_Auto = new CommonForm.ACLeftIconButtonRowLayout()
            {
                Y = changeModeBtn.Bottom,
                Width = Application.GetRealWidth(modeItem_Width),
@@ -870,7 +876,7 @@
            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.LeftIconButtonRowLayout()
            var mode_Cool = new CommonForm.ACLeftIconButtonRowLayout()
            {
                Y = mode_Auto.Bottom,
                Width = Application.GetRealWidth(modeItem_Width),
@@ -880,7 +886,7 @@
            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.LeftIconButtonRowLayout()
            var mode_Heat = new CommonForm.ACLeftIconButtonRowLayout()
            {
                Y = mode_Cool.Bottom,
                Width = Application.GetRealWidth(modeItem_Width),
@@ -890,7 +896,7 @@
            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.LeftIconButtonRowLayout()
            var mode_Dry = new CommonForm.ACLeftIconButtonRowLayout()
            {
                Y = mode_Heat.Bottom,
                Width = Application.GetRealWidth(modeItem_Width),
@@ -900,7 +906,7 @@
            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.LeftIconButtonRowLayout()
            var mode_Fan = new CommonForm.ACLeftIconButtonRowLayout()
            {
                Y = mode_Dry.Bottom,
                Width = Application.GetRealWidth(modeItem_Width),
@@ -908,23 +914,46 @@
                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));
            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_Auto.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
            mode_Auto.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
            mode_Cool.titleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
            mode_Cool.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_Heat.TitleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
            mode_Heat.IconButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
            mode_Dry.titleButton.MouseUpEventHandler += ChangeMode_MouseUpEvent;
            mode_Dry.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;
            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();
                }
            }
        }
        /// <summary>
@@ -1023,22 +1052,41 @@
                ACControlBase.ShowACIsCloseTip();
                return;
            }
            //cool
            if (ac.currentSystemMode == 3)
            //cool  //dry
            if (ac.currentSystemMode == 3 || ac.currentSystemMode==8)
            {
                if(ac.currentCoolingSetpoint>=ACControlBase.Temperature_High)
                {
                    return;
                }
                ac.currentCoolingSetpoint += 1;
                ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint);
                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);
                ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint*100);
                currentTemperatureBtn.Text = $"{ac.currentHeatingSetpoint} °C";
            }
            //auto
            //dry
            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
@@ -1057,24 +1105,43 @@
                ACControlBase.ShowACIsCloseTip();
                return;
            }
            //cool
            if (ac.currentSystemMode == 3)
            //cool //dry
            if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
            {
                if (ac.currentCoolingSetpoint <= ACControlBase.Temperature_Low)
                {
                    return;
                }
                ac.currentCoolingSetpoint -= 1;
                ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint);
                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);
                ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint*100);
                currentTemperatureBtn.Text = $"{ac.currentHeatingSetpoint} °C";
            }
            //auto
            //dry
            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
@@ -1098,7 +1165,6 @@
                Shared.Common.Room.Lists[0].AddDevice(device.FileName);
                collectionBtn.IsSelected = true;
            }
            action?.Invoke();
        }
        #endregion