From 3f6685c77beeb12baf840733fb890860f4c26e7c Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期四, 25 七月 2024 17:25:59 +0800 Subject: [PATCH] 2024年07月25日17:24:45 --- HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs | 394 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 319 insertions(+), 75 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs index 2945763..6669399 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/Acst/AcstSubPage.cs @@ -1,95 +1,339 @@ 锘縰sing 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 colorString; string imageFolder = "blue"; - public AcstSubPage() + public static void UpdateStatus(Function temp) { + if(bodyView == null || bodyView.function.sid != temp.sid) + { + return; + } + Application.RunOnMainThread(() => { + bodyView.btnTempValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_temp.ToString()); + bodyView.btnHumiValues.Text = temp.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString()); + + + int setTempValue = 0; + double dd = 0; + double.TryParse(temp.GetAttrState(AcstSub_AttrEnum.set_temp.ToString(), "--"), out dd); + setTempValue = Convert.ToInt32(dd); + if (setTempValue != 0) + bodyView.btnSetTempValues.Text = setTempValue.ToString(); + + //bodyView.btnSetTempValues.Width = bodyView.btnSetTempValues.GetTextWidth() + Application.GetRealWidth(10); + + //int progress = 0; + //int.TryParse(temp.GetAttrState(AcstSub_AttrEnum.set_temp.ToString()), out progress); + if (bodyView.tempBar.Progress != setTempValue - 16) + bodyView.tempBar.Progress = setTempValue - 16; + if(temp.trait_on_off.curValue.ToString() == "on") + { + bodyView.btnPowerControl.IsSelected = true; + bodyView.tempBar.ProgressBarColor = bodyView.curColor; + //bodyView.tempBar.IsClickable = function.trait_on_off.curValue.ToString() == "off", + //bodyView.tempBar.IsOffline = false; + + } + else + { + bodyView.btnPowerControl.IsSelected = false; + bodyView.tempBar.ProgressBarColor = CSS_Color.DividingLineColor; + //bodyView.tempBar.IsOffline = true; + } + }); + + } + + public AcstSubPage(Function temp, string path) + { + function = temp; + imageFolder = path; + switch (imageFolder) + { + case "blue": + curColor = CSS_Color.MainColor; + colorString = "#4484F4"; + break; + case "orange": + curColor = 0xFFFFB848; + colorString = "#FFB848"; + break; + case "purple": + curColor = 0xFF9175F3; + colorString = "#9175F3"; + break; + } bodyView = this; } - - - public void LoadPage() + public void LoadPage(Action action) { - //涓�涓儗鏅浘鐗� - 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.name).LoadTopView_FunctionTop(function,action); - //瀹ゅ唴婀垮害 鐨勫鍣�(涓轰簡閲嶆柊璁$畻鍧愭爣浣跨敤) - 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(22), + Width = Application.GetRealWidth(130), + Height = Application.GetRealWidth(132), + }; + tempHumiView.AddChidren(tempValuesView); + btnTempValues = new Button() + { + Y = Application.GetRealWidth(38), + Height = Application.GetRealWidth(66), + IsBold = true, + TextSize = 30, + TextColor = CSS.CSS_Color.FirstLevelTitleColor, + TextAlignment = TextAlignment.TopRight, + Text = function.GetAttrState(AcstSub_AttrEnum.room_temp.ToString(),"---"), + }; +#if __IOS__ + btnTempValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(10); +#else + btnTempValues.Width = btnTempValues.GetTextWidth(); +#endif + btnTempValues.Gravity = Gravity.CenterHorizontal; + tempValuesView.AddChidren(btnTempValues); + var btnTempValuesUint = new Button() + { + X = btnTempValues.Right, + //Y = Application.GetRealWidth(48), + Y = Application.GetRealWidth(45), + Height = Application.GetRealWidth(66), + 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(22), + Width = Application.GetRealWidth(130), + Height = Application.GetRealWidth(132), + }; + tempHumiView.AddChidren(humiValuesView); + btnHumiValues = new Button() + { + Y = Application.GetRealWidth(39), + Height = Application.GetRealWidth(66), + IsBold = true, + TextSize = 30, + TextColor = CSS.CSS_Color.FirstLevelTitleColor, + Text = function.GetAttrState(AcstSub_AttrEnum.room_humidity.ToString(),"---"), + TextAlignment = TextAlignment.TopRight, + }; + btnHumiValues.Width = btnTempValues.GetTextWidth(); + btnHumiValues.Gravity = Gravity.CenterHorizontal; + humiValuesView.AddChidren(btnHumiValues); + var btnHumiValuesUint = new Button() + { + X = btnTempValues.Right, + Y = Application.GetRealWidth(45), + TextAlignment = TextAlignment.TopLeft, + Width = Application.GetRealWidth(30), + Height = Application.GetRealWidth(66), + TextSize = 10, + TextColor = CSS.CSS_Color.FirstLevelTitleColor, + Text = "%" + }; + humiValuesView.AddChidren(btnHumiValuesUint); + + + EventHandler<MouseEventArgs> eventHandler = (sender, e) => { + var page = new AcstSubHistoryPage(function, colorString); + MainPage.BasePageView.AddChidren(page); + page.LoadPage(); + MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; + }; + var btnClick = new Button(); + tempHumiView.AddChidren(btnClick); + btnClick.MouseUpEventHandler = eventHandler; + + #endregion + + + int setTempValue = 0; + string setTempStr = "--"; + double dd = 0; + double.TryParse(function.GetAttrState(AcstSub_AttrEnum.set_temp.ToString(), "--"), out dd); + setTempValue = Convert.ToInt32(dd); + if (setTempValue != 0) + setTempStr = setTempValue.ToString(); + btnSetTempValues = new Button() + { + X = Application.GetRealWidth((375 - 77 -30)/2), + Y = Application.GetRealHeight(260), + Width = Application.GetRealWidth(73), + Height = Application.GetRealHeight(90), + TextAlignment = TextAlignment.TopCenter, + TextColor = CSS.CSS_Color.FirstLevelTitleColor, + IsBold = true, + TextSize = 60, + Text = setTempStr + }; + contentView.AddChidren(btnSetTempValues); +#if __IOS__ + bodyView.btnSetTempValues.Width = bodyView.btnSetTempValues.GetTextWidth() + Application.GetRealWidth(10); +#endif + + + var btnSetTempUnit = new Button() + { + X = btnSetTempValues.Right + Application.GetRealWidth(3), + Y = Application.GetRealHeight(267), + Width = Application.GetRealWidth(50), + 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); + + + //int progress = 0; + //int.TryParse(function.GetAttrState(FunctionAttributeKey.SetTemp),out progress); + + 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 = setTempValue - 16, + SeekBarPadding = Application.GetRealWidth(20), + IsProgressTextShow = false, + ProgressChangeDelayTime = 0, + //IsClickable = function.trait_on_off.curValue.ToString() == "off", + //Enable = function.trait_on_off.curValue.ToString() == "off", + //IsOffline = true,// 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+16).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(FunctionAttributeKey.OnOff, btnPowerControl.IsSelected ? "on" : "off"); + Control.Ins.SendWriteCommand(function, d); + }) + { IsBackground = true }.Start(); + }; + + Control.Ins.SendReadCommand(function); + } } } -- Gitblit v1.8.0