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;
}
};
}
}
}