using System; using System.Collections.Generic; using Shared.SimpleControl; namespace Shared.SimpleControl.Phone { public class ThermostatExtensionPage : FrameLayout { public static ThermostatExtensionPage curView; static bool Display_Temp = true; static Thermostat thermostat; static System.Threading.Thread updateThread; static ArcSeekBar mArcSeekBar; static Button btnValues; static Button btnText; static FrameLayout hideView; static Button btnPower; static Button btnModeIcon; public static void UpdateStatus (Thermostat therm) { Application.RunOnMainThread (() => { if (curView == null) return; if (therm.SubnetID == thermostat.SubnetID && therm.DeviceID == thermostat.DeviceID && therm.ExtensionID == thermostat.ExtensionID) { try { thermostat = therm; btnPower.IsSelected = thermostat.Power == 1 ? true : false; hideView.Visible = !btnPower.IsSelected; if (!Display_Temp) { btnValues.Text = (int)thermostat.Indoor_Humidity_Values + "%"; if (Language.CurrentLanguage == "Chinese") btnText.Text = "实时湿度"; else btnText.Text = "Real-time humidity"; } else { btnValues.Text = Math.Round (thermostat.Indoor_Temperature_Values, 1) + "°C"; if (Language.CurrentLanguage == "Chinese") btnText.Text = "实时温度"; else btnText.Text = "Real-time temp."; } if (thermostat.Setting_Temperature_Values > 38) { mArcSeekBar.Progress = 38; } else if (thermostat.Setting_Temperature_Values < 16) { mArcSeekBar.Progress = 16; } else { mArcSeekBar.Progress = (int)thermostat.Setting_Temperature_Values; } } catch { } } }); } static bool stopChangeFace = false; public static void UptateMode (Thermostat cac) { Application.RunOnMainThread (() => { if (curView == null) return; if (cac.SubnetID == thermostat.SubnetID && cac.DeviceID == thermostat.DeviceID && cac.HostID == thermostat.HostID) { try { thermostat.CurrentMode = cac.CurrentMode; UptateMode (); } catch { } } }); } /// /// 更新运行模式 /// static void UptateMode () { /// 3 运行模式 1-制冷,2-制热,3-通风,4-除湿,5-制热除湿 switch (thermostat.CurrentMode) { case 1: btnModeIcon.UnSelectedImagePath = "CapillaryAC/CoolingOn.png"; btnModeIcon.SelectedImagePath = "CapillaryAC/CoolingOn.png"; break; case 2: btnModeIcon.UnSelectedImagePath = "CapillaryAC/HeatingOn.png"; btnModeIcon.SelectedImagePath = "CapillaryAC/HeatingOn.png"; break; case 3: btnModeIcon.UnSelectedImagePath = "CapillaryAC/AerationOn.png"; btnModeIcon.SelectedImagePath = "CapillaryAC/AerationOn.png"; break; case 4: btnModeIcon.UnSelectedImagePath = "CapillaryAC/DehumidificationOn.png"; btnModeIcon.SelectedImagePath = "CapillaryAC/DehumidificationOn.png"; break; case 5: btnModeIcon.UnSelectedImagePath = "CapillaryAC/HeatingAndDehumidificationOn.png"; btnModeIcon.SelectedImagePath = "CapillaryAC/HeatingAndDehumidificationOn.png"; break; } btnModeIcon.IsSelected = !btnModeIcon.IsSelected; } public override void RemoveFromParent () { curView = null; if (updateThread != null) { updateThread.Abort (); } base.RemoveFromParent (); } public void ShowPage (Thermostat cac) { thermostat = cac; curView = this; UserMiddle.FavoritePageView.ScrollEnabled = false; #region 标题 var topView = new FrameLayout () { Y = Application.GetRealHeight (36), Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (640), BackgroundColor = SkinStyle.Current.MainColor, }; AddChidren (topView); var btnTitle = new Button () { TextAlignment = TextAlignment.Center, Text = thermostat.Name, TextColor = SkinStyle.Current.TextColor1, TextSize = 19, }; topView.AddChidren (btnTitle); var logo = new Button () { Width = Application.GetRealWidth (154), Height = Application.GetRealHeight (90), X = Application.GetRealWidth (486), UnSelectedImagePath = MainPage.LogoString, }; topView.AddChidren (logo); var back = new Button () { Height = Application.GetRealHeight (90), Width = Application.GetRealWidth (85), UnSelectedImagePath = "Item/Back.png", SelectedImagePath = "Item/BackSelected.png", }; topView.AddChidren (back); back.MouseUpEventHandler += (sender, e) => { (Parent as PageLayout).PageIndex -= 1; }; #endregion mArcSeekBar = new ArcSeekBar { Y = Application.GetRealHeight (150), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth (580), Height = Application.GetRealHeight (580), ThumbModeFill = true, ProgressBarColor = 0xFFF1AC54, ArcWidthWithDefaultStyle = 20, MinValue = 16, MaxValue = 38, Progress = (int)thermostat.Setting_Temperature_Values, ProgressBarUnitSring = "°C", IsClickable = true }; AddChidren (mArcSeekBar); mArcSeekBar.SetProgressBarColors (0xFFFFE6BD, 0xFFFFAF4F); btnModeIcon = new Button () { Y = mArcSeekBar.Y + Application.GetRealHeight(120), Gravity = Gravity.CenterHorizontal, Width = Application.GetMinRealAverage(100), Height = Application.GetMinRealAverage (100), UnSelectedImagePath = "CapillaryAC/HeatingOn.png", SelectedImagePath = "CapillaryAC/HeatingOn.png" }; AddChidren (btnModeIcon); UptateMode (); btnValues = new Button () { Y = btnModeIcon.Bottom, Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth (200), Height = Application.GetRealHeight (150), TextSize = 34, Text = Math.Round (thermostat.Indoor_Temperature_Values ,1)+ "°C", }; AddChidren (btnValues); btnText = new Button () { Y = btnValues.Bottom, Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth (200), Height = Application.GetRealHeight(50), Radius = (uint)Application.GetRealHeight(20), BackgroundColor = 0xFFFFAF4F, Text = "实时温度" }; AddChidren (btnText); if (Language.CurrentLanguage == "Chinese") btnText.Text = "实时温度"; else btnText.Text = "Real-time temp."; hideView = new FrameLayout () { Y = topView.Bottom, BackgroundColor = 0x4F000000, Visible = thermostat.Power == (byte)1 ? false : true }; AddChidren (hideView); btnPower = new Button () { Y = mArcSeekBar.Bottom + Application.GetRealHeight (50), Gravity = Gravity.CenterHorizontal, Width = Application.GetMinRealAverage (95), Height = Application.GetMinRealAverage (100), UnSelectedImagePath = "CapillaryAC/In_Switch.png", SelectedImagePath = "CapillaryAC/In_Switch_On.png", IsSelected = thermostat.Power == (byte)1 ? true : false }; AddChidren (btnPower); btnPower.MouseUpEventHandler += (sender, e) => { btnPower.IsSelected = !btnPower.IsSelected; thermostat.Power = btnPower.IsSelected == true ? (byte)1 : (byte)0; new System.Threading.Thread (() => { thermostat.SetExtension (); }) { IsBackground = true }.Start (); }; DateTime changeTime = DateTime.Now; updateThread = new System.Threading.Thread (() => { while (true) { if (changeTime.AddSeconds (5) < DateTime.Now) { changeTime = DateTime.Now; Application.RunOnMainThread (() => { if (!stopChangeFace) { Display_Temp = !Display_Temp; if (!Display_Temp) { btnValues.Text =Math.Round( thermostat.Indoor_Humidity_Values,1) + "%"; if (Language.CurrentLanguage == "Chinese") btnText.Text = "实时湿度"; else btnText.Text = "Real-time humidity"; } else { btnValues.Text = Math.Round (thermostat.Indoor_Temperature_Values, 1) + "°C"; if (Language.CurrentLanguage == "Chinese") btnText.Text = "实时温度"; else btnText.Text = "Real-time temp."; } } }); System.Threading.Thread.Sleep (5000); } } }) { IsBackground = true }; updateThread.Start (); Control.ControlBytesSend (Command.ReadThermostatExtension, thermostat.SubnetID, thermostat.DeviceID, new byte [] { thermostat.ExtensionID }); EventHandler ChangeDisplay = (button, mouseEventArgs) => { if (!Display_Temp) { btnValues.Text = Math.Round (thermostat.Indoor_Humidity_Values, 1) + "%"; if (Language.CurrentLanguage == "Chinese") btnText.Text = "实时湿度"; else btnText.Text = "Real-time humidity"; } else { btnValues.Text = Math.Round (thermostat.Indoor_Temperature_Values, 1) + "°C"; if (Language.CurrentLanguage == "Chinese") btnText.Text = "实时温度"; else btnText.Text = "Real-time temp."; } Display_Temp = !Display_Temp; }; btnText.MouseUpEventHandler += ChangeDisplay; btnValues.MouseUpEventHandler += ChangeDisplay; btnModeIcon.MouseUpEventHandler += ChangeDisplay; mArcSeekBar.OnStartTrackingTouchEvent += (sender, e) => { stopChangeFace = true; UserMiddle.FavoritePageView.ScrollEnabled = false; UserMiddle.DevicePageView.ScrollEnabled = false; }; mArcSeekBar.OnStopTrackingTouchEvent += (sender, e) => { UserMiddle.FavoritePageView.ScrollEnabled = true; UserMiddle.DevicePageView.ScrollEnabled = true; if (stopChangeFace) { var sendBytes = BitConverter.GetBytes (Convert.ToSingle (mArcSeekBar.Progress)); //if (Display_Temp) { thermostat.Setting_Temperature_Values1 = sendBytes [3]; thermostat.Setting_Temperature_Values2 = sendBytes [2]; thermostat.Setting_Temperature_Values3 = sendBytes [1]; thermostat.Setting_Temperature_Values4 = sendBytes [0]; //} else { // capillaryAC.Setting_Humidity_Values1 = sendBytes [3]; // capillaryAC.Setting_Humidity_Values2 = sendBytes [2]; // capillaryAC.Setting_Humidity_Values3 = sendBytes [1]; // capillaryAC.Setting_Humidity_Values4 = sendBytes [0]; //} new System.Threading.Thread (() => { thermostat.SetExtension (); }) { IsBackground = true }.Start (); stopChangeFace = false; } }; } } }