| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using HDL_ON.DriverLayer; |
| | | using HDL_ON.Entity; |
| | | using HDL_ON.UI.CSS; |
| | | using Shared; |
| | | |
| | | namespace HDL_ON.UI |
| | | { |
| | | public class AcstSubPage : FrameLayout |
| | | { |
| | | FrameLayout bodyView; |
| | | static AcstSubPage bodyView; |
| | | |
| | | Button btnTempValues; |
| | | Button btnHumiValues; |
| | | |
| | | Button btnSetTempValues; |
| | | DiyImageSeekBar tempBar; |
| | | Button btnPowerControl; |
| | | |
| | | Function function; |
| | | |
| | | uint curColor; |
| | | |
| | | string imageFolder = "blue"; |
| | | |
| | | public AcstSubPage() |
| | | public static void UpdateStatus(Function temp) |
| | | { |
| | | if(bodyView == null) |
| | | { |
| | | return; |
| | | } |
| | | Application.RunOnMainThread(() => { |
| | | bodyView.btnTempValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()); |
| | | bodyView.btnHumiValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()); |
| | | bodyView.btnSetTempValues.Width = bodyView.btnSetTempValues.GetTextWidth() + Application.GetRealWidth(10); |
| | | bodyView.tempBar.Progress = Convert.ToInt32(temp.GetAttrState(FunctionAttributeKey.SetTemp)) + 16; |
| | | if(temp.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | bodyView.btnPowerControl.IsSelected = true; |
| | | bodyView.tempBar.IsOffline = false; |
| | | } |
| | | else |
| | | { |
| | | bodyView.btnPowerControl.IsSelected = false; |
| | | bodyView.tempBar.IsOffline = true; |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | public AcstSubPage(Function temp, string path) |
| | | { |
| | | function = temp; |
| | | imageFolder = path; |
| | | switch (imageFolder) |
| | | { |
| | | case "blue": |
| | | curColor = CSS.CSS_Color.MainColor; |
| | | break; |
| | | case "orange": |
| | | curColor = 0xFFFFB848; |
| | | break; |
| | | case "purple": |
| | | curColor = 0xFF9175F3; |
| | | break; |
| | | } |
| | | bodyView = this; |
| | | } |
| | | |
| | | |
| | | |
| | | public void LoadPage() |
| | | { |
| | | //一个背景图片 |
| | | //var framePic = new FrameLayout(); |
| | | //framePic.Y = Application.GetRealHeight(120); |
| | | //framePic.Width = Application.GetRealWidth(303); |
| | | //framePic.Height = Application.GetRealHeight(175); |
| | | //framePic.Gravity = Gravity.CenterHorizontal; |
| | | //framePic.BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/TempAndHumiBack.png"; |
| | | //this.FrameWhiteCentet1.AddChidren(framePic); |
| | | new TopViewDiv(bodyView, function.GetRoomListName()).LoadTopView(); |
| | | |
| | | ////室内湿度 的容器(为了重新计算坐标使用) |
| | | //int frameWidth = framePic.Width / 2 - this.GetPictrueRealSize(21); |
| | | //var frameHumidity = new FrameLayout(); |
| | | //frameHumidity.X = this.GetPictrueRealSize(21); |
| | | //frameHumidity.Y = this.GetPictrueRealSize(12); |
| | | //frameHumidity.Width = frameWidth; |
| | | //frameHumidity.Height = frameWidth; |
| | | //framePic.AddChidren(frameHumidity); |
| | | ////室内湿度值 |
| | | //this.btnHumidity = new NormalViewControl(20, this.GetPicChidrenTextHeight(30), false); |
| | | //btnHumidity.Y = this.GetPictrueRealSize(39); |
| | | //btnHumidity.TextSize = 30; |
| | | //btnHumidity.TextColor = CSS_Color.FirstLevelTitleColor; |
| | | //btnHumidity.TextAlignment = TextAlignment.TopCenter; |
| | | //frameHumidity.AddChidren(btnHumidity); |
| | | ////% |
| | | //this.btnHumidityUnit = new NormalViewControl(10, 10, true); |
| | | //btnHumidityUnit.Y = btnHumidity.Y + this.GetPictrueRealSize(8); |
| | | //btnHumidityUnit.TextColor = CSS_Color.TextualColor; |
| | | //btnHumidityUnit.Text = "%"; |
| | | //btnHumidityUnit.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel; |
| | | //btnHumidityUnit.Width = btnHumidityUnit.GetRealWidthByText(); |
| | | //frameHumidity.AddChidren(btnHumidityUnit); |
| | | ////室内湿度 |
| | | //var btnHumidityView = new NormalViewControl(frameHumidity.Width, this.GetPicChidrenTextHeight(18), false); |
| | | //btnHumidityView.Y = btnHumidity.Bottom + this.GetPictrueRealSize(8); |
| | | //btnHumidityView.TextAlignment = TextAlignment.Center; |
| | | //btnHumidityView.TextColor = CSS_Color.TextualColor; |
| | | //btnHumidityView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; |
| | | //btnHumidityView.TextID = StringId.IndoorHumidity; |
| | | //frameHumidity.AddChidren(btnHumidityView); |
| | | var contentView = new FrameLayout() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(79), |
| | | Width = Application.GetRealWidth(343), |
| | | Height = Application.GetRealHeight(570), |
| | | BackgroundColor = CSS.CSS_Color.MainBackgroundColor, |
| | | Radius = (uint)Application.GetRealWidth(6), |
| | | }; |
| | | bodyView.AddChidren(contentView); |
| | | |
| | | ////室内温度 的容器(为了重新计算坐标使用) |
| | | //var frameTemperature = new FrameLayout(); |
| | | //frameTemperature.Y = frameHumidity.Y; |
| | | //frameTemperature.X = frameHumidity.Right; |
| | | //frameTemperature.Width = frameWidth; |
| | | //frameTemperature.Height = frameWidth; |
| | | //framePic.AddChidren(frameTemperature); |
| | | ////室内温度值 |
| | | //this.btnTemperature = new NormalViewControl(20, this.GetPicChidrenTextHeight(30), false); |
| | | //btnTemperature.Y = btnHumidity.Y; |
| | | //btnTemperature.TextSize = 30; |
| | | //btnTemperature.TextColor = CSS_Color.FirstLevelTitleColor; |
| | | //btnTemperature.TextAlignment = TextAlignment.TopCenter; |
| | | //btnTemperature.GetRealWidthByText(); |
| | | //frameTemperature.AddChidren(btnTemperature); |
| | | ////℃ |
| | | //this.btnTemperatureUnit = new NormalViewControl(10, 10, true); |
| | | //btnTemperatureUnit.Y = btnTemperature.Y + this.GetPictrueRealSize(8); |
| | | //btnTemperatureUnit.TextColor = CSS_Color.TextualColor; |
| | | //btnTemperatureUnit.Text = "℃"; |
| | | //btnTemperatureUnit.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel; |
| | | //btnTemperatureUnit.Width = btnTemperatureUnit.GetRealWidthByText(); |
| | | //frameTemperature.AddChidren(btnTemperatureUnit); |
| | | ////室内温度 |
| | | //var btnTemperatureView = new NormalViewControl(frameTemperature.Width, this.GetPicChidrenTextHeight(18), false); |
| | | //btnTemperatureView.Y = btnTemperature.Bottom + this.GetPictrueRealSize(8); |
| | | //btnTemperatureView.TextAlignment = TextAlignment.Center; |
| | | //btnTemperatureView.TextColor = CSS_Color.TextualColor; |
| | | //btnTemperatureView.TextSize = CSS_FontSize.PromptFontSize_FirstLevel; |
| | | //btnTemperatureView.TextID = StringId.IndoorTemp; |
| | | //frameTemperature.AddChidren(btnTemperatureView); |
| | | |
| | | #region 温湿度数据 |
| | | var tempHumiView = new FrameLayout() |
| | | { |
| | | Y = Application.GetRealWidth(58), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(303), |
| | | Height = Application.GetRealWidth(175), |
| | | BackgroundImagePath = $"FunctionIcon/Acst/{imageFolder}/TempAndHumiBack.png" |
| | | }; |
| | | contentView.AddChidren(tempHumiView); |
| | | |
| | | var tempValuesView = new FrameLayout() |
| | | { |
| | | X = Application.GetRealWidth(21), |
| | | Y = Application.GetRealWidth(17), |
| | | Width = Application.GetRealWidth(130), |
| | | Height = Application.GetRealWidth(132), |
| | | }; |
| | | tempHumiView.AddChidren(tempValuesView); |
| | | btnTempValues = new Button() |
| | | { |
| | | Y = Application.GetRealWidth(45), |
| | | Height = Application.GetRealWidth(35), |
| | | IsBold = true, |
| | | TextSize = 30, |
| | | TextColor = CSS.CSS_Color.FirstLevelTitleColor, |
| | | TextAlignment = TextAlignment.TopRight, |
| | | Text = "---", |
| | | }; |
| | | btnTempValues.Text = function.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()); |
| | | btnTempValues.Width = btnTempValues.GetTextWidth(); |
| | | btnTempValues.Gravity = Gravity.CenterHorizontal; |
| | | tempValuesView.AddChidren(btnTempValues); |
| | | var btnTempValuesUint = new Button() |
| | | { |
| | | X = btnTempValues.Right, |
| | | Y = Application.GetRealWidth(48), |
| | | TextAlignment = TextAlignment.TopLeft, |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealWidth(30), |
| | | TextSize = 10, |
| | | TextColor = CSS.CSS_Color.FirstLevelTitleColor, |
| | | Text = "°C" |
| | | }; |
| | | tempValuesView.AddChidren(btnTempValuesUint); |
| | | |
| | | |
| | | |
| | | var humiValuesView = new FrameLayout() |
| | | { |
| | | X = Application.GetRealWidth(130+21), |
| | | Y = Application.GetRealWidth(17), |
| | | Width = Application.GetRealWidth(130), |
| | | Height = Application.GetRealWidth(132), |
| | | }; |
| | | tempHumiView.AddChidren(humiValuesView); |
| | | btnHumiValues = new Button() |
| | | { |
| | | Y = Application.GetRealWidth(45), |
| | | Height = Application.GetRealWidth(35), |
| | | IsBold = true, |
| | | TextSize = 30, |
| | | TextColor = CSS.CSS_Color.FirstLevelTitleColor, |
| | | Text = "---", |
| | | TextAlignment = TextAlignment.TopRight, |
| | | }; |
| | | btnHumiValues.Text = function.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()); |
| | | btnHumiValues.Width = btnTempValues.GetTextWidth(); |
| | | btnHumiValues.Gravity = Gravity.CenterHorizontal; |
| | | humiValuesView.AddChidren(btnHumiValues); |
| | | var btnHumiValuesUint = new Button() |
| | | { |
| | | X = btnTempValues.Right, |
| | | Y = Application.GetRealWidth(48), |
| | | TextAlignment = TextAlignment.TopLeft, |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealWidth(30), |
| | | TextSize = 10, |
| | | TextColor = CSS.CSS_Color.FirstLevelTitleColor, |
| | | Text = "%" |
| | | }; |
| | | humiValuesView.AddChidren(btnHumiValuesUint); |
| | | |
| | | |
| | | EventHandler<MouseEventArgs> eventHandler = (sender, e) => { |
| | | var page = new AcstSubHistoryPage(function); |
| | | MainPage.BasePageView.AddChidren(page); |
| | | page.LoadPage(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | var btnClick = new Button(); |
| | | tempHumiView.AddChidren(btnClick); |
| | | btnClick.MouseUpEventHandler = eventHandler; |
| | | |
| | | #endregion |
| | | |
| | | |
| | | btnSetTempValues = new Button() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(260), |
| | | Width = Application.GetRealWidth(71), |
| | | Height = Application.GetRealHeight(90), |
| | | TextAlignment = TextAlignment.TopRight, |
| | | TextColor = CSS.CSS_Color.FirstLevelTitleColor, |
| | | IsBold = true, |
| | | TextSize = 60, |
| | | Text = function.GetAttrState(AcstSub_AttrEnum.set_temp.ToString(), "--") |
| | | }; |
| | | contentView.AddChidren(btnSetTempValues); |
| | | |
| | | var btnSetTempUnit = new Button() |
| | | { |
| | | X = btnSetTempValues.Right + Application.GetRealWidth(3), |
| | | Y = Application.GetRealHeight(267), |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealHeight(50), |
| | | TextSize = 23, |
| | | TextColor = CSS.CSS_Color.FirstLevelTitleColor, |
| | | Text = "°C", |
| | | TextAlignment = TextAlignment.TopLeft, |
| | | }; |
| | | contentView.AddChidren(btnSetTempUnit); |
| | | |
| | | |
| | | |
| | | var btnMinValuesText = new Button() |
| | | { |
| | | X = Application.GetRealWidth(35), |
| | | Y = Application.GetRealHeight(388), |
| | | Width = Application.GetRealWidth(30), |
| | | Height = Application.GetRealHeight(52), |
| | | Text = "16", |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | }; |
| | | contentView.AddChidren(btnMinValuesText); |
| | | |
| | | tempBar = new DiyImageSeekBar() |
| | | { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight(378), |
| | | Width = Application.GetRealWidth(238), |
| | | Height = Application.GetRealHeight(72), |
| | | SeekBarViewHeight = Application.GetRealHeight(14), |
| | | ThumbImagePath = "FunctionIcon/Acst/ThumbImage.png", |
| | | ThumbImageHeight = Application.GetRealHeight(51), |
| | | ProgressBarColor = function.trait_on_off.curValue.ToString() == "on" ? curColor : CSS_Color.DividingLineColor, |
| | | MaxValue = 14, |
| | | Progress = Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.SetTemp)) + 16, |
| | | SeekBarPadding = Application.GetRealWidth(20), |
| | | IsProgressTextShow = false, |
| | | ProgressChangeDelayTime = 0, |
| | | IsOffline = function.trait_on_off.curValue.ToString() == "off", |
| | | }; |
| | | contentView.AddChidren(tempBar); |
| | | tempBar.OnProgressChangedEvent = (sender, e) => { |
| | | btnSetTempValues.Text = (e + 16).ToString(); |
| | | }; |
| | | tempBar.OnStopTrackingTouchEvent = (sender, e) => { |
| | | new System.Threading.Thread(() => { |
| | | var d = new Dictionary<string, string>(); |
| | | d.Add(FunctionAttributeKey.SetTemp, e.ToString()); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | |
| | | }; |
| | | |
| | | var btnMaxValuesText = new Button() |
| | | { |
| | | X = tempBar.Right + Application.GetRealWidth(10), |
| | | Y = btnMinValuesText.Y, |
| | | Width = Application.GetRealWidth(45), |
| | | Height = Application.GetRealHeight(52), |
| | | Text = "30", |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = CSS_Color.PromptingColor1, |
| | | TextSize = CSS_FontSize.PromptFontSize_FirstLevel, |
| | | }; |
| | | contentView.AddChidren(btnMaxValuesText); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | btnPowerControl = new Button() |
| | | { |
| | | Y = Application.GetRealHeight(496), |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Width = Application.GetRealWidth(46), |
| | | Height = Application.GetRealWidth(46), |
| | | UnSelectedImagePath = "FunctionIcon/Acst/grey/PowerOffIcon.png", |
| | | SelectedImagePath = $"FunctionIcon/Acst/{imageFolder}/PowerIcon.png", |
| | | TextAlignment = TextAlignment.Center, |
| | | IsSelected = function.trait_on_off.curValue.ToString() == "on" |
| | | }; |
| | | contentView.AddChidren(btnPowerControl); |
| | | btnPowerControl.MouseUpEventHandler = (sender, e) => { |
| | | btnPowerControl.IsSelected = !btnPowerControl.IsSelected; |
| | | |
| | | new System.Threading.Thread(() => { |
| | | Dictionary<string, string> d = new Dictionary<string, string>(); |
| | | d.Add("onoff", btnPowerControl.IsSelected ? "on" : "off"); |
| | | Control.Ins.SendWriteCommand(function, d); |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | }; |
| | | |
| | | } |
| | | } |
| | | } |