using System;
|
using System.Collections.Generic;
|
using Shared.SimpleControl;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
/// <summary>
|
/// 空调控制界面
|
/// </summary>
|
public class UserLongXiACPage : FrameLayout
|
{
|
/// <summary>
|
/// 当前视图
|
/// </summary>
|
static UserLongXiACPage curView;
|
FrameLayout acBodyView;
|
LongXiAC ac;
|
Room room;
|
ACMethod acBLL;
|
Button btnInterior;
|
Button btnInteriorH;
|
Button btnACSwitch;
|
//Button btnTVOC ;//Text = "VOC:" + ac.TVOC.ToString () + "ppm"
|
Button btnOutTemp;//Text = "室外:" + ac.OutTemp.ToString () + "°"
|
Button btnPM25 ;//Text = "PM2.5:" + ac.PM25.ToString () + @"mg/m³"
|
Button btnAuto;
|
Button btnManual;
|
Button btnModeChange;
|
Button btnLowWind;
|
Button btnMiddleWind;
|
Button btnHighWind;
|
Button btnElectricHeating;
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="room">Room.</param>
|
public UserLongXiACPage (LongXiAC ac, Room room)
|
{
|
this.ac = ac;
|
this.room = room;
|
curView = this;
|
acBLL = new ACMethod ();
|
|
BackgroundColor = SkinStyle.Current.MainColor;
|
readStatus (ac);
|
}
|
|
/// <summary>
|
/// 更新空调
|
/// </summary>
|
public static void UpdateStatus (LongXiAC ac)
|
{
|
Application.RunOnMainThread (() => {
|
if (curView == null) {
|
return;
|
}
|
if (curView.ac != ac) {
|
return;
|
}
|
try {
|
if (ac.Power == 1) {
|
curView.btnACSwitch.IsSelected = true;
|
curView.btnInterior.Text = ac.IndoorTemperature.ToString () + "°";
|
curView.btnInteriorH.Text = ac.Humidity.ToString () + "%";
|
//curView.btnTVOC.Text = "VOC:" + ac.TVOC.ToString () + "ppm";
|
curView.btnOutTemp.Text = "室外:" + ac.OutTemp.ToString () + "°";
|
curView.btnPM25.Text = "PM2.5:" + ac.PM25.ToString () + @"mg/m³";
|
curView.btnAuto.IsSelected = false;
|
curView.btnManual.IsSelected = false;
|
curView.btnLowWind.IsSelected = false;
|
curView.btnMiddleWind.IsSelected = false;
|
curView.btnHighWind.IsSelected = false;
|
curView.btnAuto.Enable = true;
|
curView.btnManual.Enable = true;
|
curView.btnLowWind.Enable = true;
|
curView.btnMiddleWind.Enable = true;
|
curView.btnHighWind.Enable = true;
|
if (ac.LongXiDeviceType == 1 ) {
|
curView.btnElectricHeating.Enable = true;
|
curView.btnElectricHeating.IsSelected = false;
|
curView.btnModeChange.Enable = true;
|
if (ac.Wave == 0) {
|
curView.btnModeChange.Text = "手动关";
|
} else {
|
curView.btnModeChange.Text = "自动开";
|
}
|
}
|
if (ac.ElectricHeating == 1) {
|
curView.btnElectricHeating.IsSelected = true;
|
}
|
if (ac.SetMode == 0) {
|
curView.btnManual.IsSelected = true;
|
}
|
if (ac.SetMode == 3) {
|
curView.btnAuto.IsSelected = true;
|
}
|
switch (ac.SetFanSpeed) {
|
case 3:
|
curView.btnLowWind.IsSelected = true;
|
break;
|
case 2:
|
curView.btnMiddleWind.IsSelected = true;
|
break;
|
default:
|
curView.btnHighWind.IsSelected = true;
|
break;
|
}
|
} else {
|
curView.btnACSwitch.IsSelected = false;
|
curView.btnInterior.Text = ac.IndoorTemperature.ToString () + "°";
|
//curView.btnTVOC.Text = "VOC:" + ac.TVOC.ToString () + "ppm";
|
curView.btnOutTemp.Text = "室外:" + ac.OutTemp.ToString () + "°";
|
curView.btnPM25.Text = "PM2.5:" + ac.PM25.ToString () + @"mg/m³";
|
curView.btnAuto.IsSelected = false;
|
curView.btnManual.IsSelected = false;
|
curView.btnLowWind.IsSelected = false;
|
curView.btnMiddleWind.IsSelected = false;
|
curView.btnHighWind.IsSelected = false;
|
curView.btnAuto.Enable = false;
|
curView.btnManual.Enable = false;
|
curView.btnLowWind.Enable = false;
|
curView.btnMiddleWind.Enable = false;
|
curView.btnHighWind.Enable = false;
|
if (ac.LongXiDeviceType == 1 ) {
|
curView.btnElectricHeating.Enable = false;
|
curView.btnElectricHeating.IsSelected = false;
|
curView.btnModeChange.Enable = false;
|
if (ac.Wave == 0) {
|
curView.btnModeChange.Text = "手动关";
|
} else {
|
curView.btnModeChange.Text = "自动开";
|
}
|
}
|
|
}
|
} catch (Exception ex) {
|
Console.WriteLine (ex.ToString ());
|
}
|
});
|
}
|
|
/// <summary>
|
/// 显示出当前房间所有的空调
|
/// </summary>
|
public void showRoomAC ()
|
{
|
#region 标题
|
var topView = new FrameLayout () {
|
Y = Application.GetRealHeight (36),
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (640),
|
};
|
AddChidren (topView);
|
|
var title = new Button () {
|
TextAlignment = TextAlignment.Center,
|
Text = room.Name,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextSize = 19,
|
};
|
topView.AddChidren (title);
|
|
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 (100),
|
Width = Application.GetRealWidth (85),
|
UnSelectedImagePath = "Item/Back.png",
|
SelectedImagePath = "Item/BackSelected.png",
|
};
|
topView.AddChidren (back);
|
back.MouseUpEventHandler += (sender, e) => {
|
(Parent as PageLayout).PageIndex -= 1;
|
curView = null;
|
};
|
#endregion
|
|
acBodyView = new FrameLayout {
|
Width = Application.GetRealWidth (640),
|
Height = Application.GetRealHeight (Application.DesignHeight - 126),
|
Y = Application.GetRealHeight (126)
|
};
|
AddChidren (acBodyView);
|
#region roomBackgroundImage
|
var roomBackgroundImageView = new FrameLayout () {
|
Height = Application.GetRealHeight (360),
|
Width = Application.GetRealWidth (640),
|
};
|
acBodyView.AddChidren (roomBackgroundImageView);
|
roomBackgroundImageView.BackgroundImagePath = room.BackGroundImage;
|
|
//长按更换背景
|
roomBackgroundImageView.MouseLongEventHandler += (sender, e) => {
|
Camera.SelectPicture ((obj) => {
|
if (obj != null) {
|
room.BackGroundImage = obj;
|
roomBackgroundImageView.BackgroundImagePath = obj;
|
room.Save (typeof (Room).Name + "_" + room.Name);
|
}
|
}, room.Name, false);
|
|
};
|
FrameLayout valuesView = new FrameLayout () {
|
Y = roomBackgroundImageView.Height - Application.GetRealHeight (80),
|
Height = Application.GetRealHeight (80),
|
BackgroundColor = SkinStyle.Current.Black50Transparent,
|
};
|
roomBackgroundImageView.AddChidren (valuesView);
|
|
//btnTVOC = new Button () {
|
// X = Application.GetRealWidth (30),
|
// Width = Application.GetRealWidth (640 / 3),
|
// TextAlignment = TextAlignment.CenterLeft,
|
// Text = "VOC:" + ac.TVOC.ToString () + "ppm"
|
//};
|
//valuesView.AddChidren (btnTVOC);
|
btnOutTemp = new Button () {
|
X = Application.GetRealWidth (30),
|
Width = Application.GetRealWidth (640 / 3),
|
TextAlignment = TextAlignment.CenterLeft,
|
Text = "室外:" + ac.OutTemp.ToString () + "°"
|
};
|
valuesView.AddChidren (btnOutTemp);
|
btnPM25 = new Button () {
|
X = Application.GetRealWidth (420),
|
Width = Application.GetRealWidth (200),
|
TextAlignment = TextAlignment.CenterLeft,
|
Text = "PM2.5:" + ac.PM25.ToString () + @"mg/m³"
|
};
|
valuesView.AddChidren (btnPM25);
|
#endregion
|
|
|
FrameLayout setACTemp = new FrameLayout () {
|
Height = Application.GetMinRealAverage (106),
|
Width = Application.GetRealWidth (640),
|
BackgroundColor = SkinStyle.Current.MainColor,
|
Y = roomBackgroundImageView.Bottom
|
};
|
acBodyView.AddChidren (setACTemp);
|
|
btnACSwitch = new Button () {
|
Width = Application.GetMinRealAverage (115),
|
Height = Application.GetMinRealAverage (115),
|
X = Application.GetRealWidth (640 - 130),
|
UnSelectedImagePath = "FH/FH_Switch.png",
|
SelectedImagePath = "FH/FH_Switch_on.png",
|
};
|
btnACSwitch.IsSelected = ac.Power == 1;
|
btnACSwitch.MouseUpEventHandler += (sender, e) => {
|
btnACSwitch.IsSelected = !btnACSwitch.IsSelected;
|
ac.Power = btnACSwitch.IsSelected ? (byte)1 : (byte)0;
|
UpdateStatus (ac);
|
acBLL.ControlAC (ac);
|
};
|
setACTemp.AddChidren (btnACSwitch);
|
|
var btnText = new Button () {
|
Width = Application.GetRealWidth (150),
|
Height = Application.GetRealHeight (40),
|
X = Application.GetRealWidth (15),
|
Y = Application.GetRealHeight (22),
|
TextID = R.MyInternationalizationString.ACInterior,
|
TextAlignment = TextAlignment.BottomCenter,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
setACTemp.AddChidren (btnText);
|
|
btnInterior = new Button () {
|
Width = Application.GetRealWidth (150),
|
Height = Application.GetRealHeight (40),
|
X = Application.GetRealWidth (10),
|
Y = btnText.Bottom,
|
Text = ac.IndoorTemperature.ToString () + "°",
|
TextSize = 14,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
setACTemp.AddChidren (btnInterior);
|
|
|
var btnTextH = new Button () {
|
Width = Application.GetRealWidth (150),
|
Height = Application.GetRealHeight (40),
|
Gravity = Gravity.CenterHorizontal,
|
Y = Application.GetRealHeight (22),
|
Text = "湿度",
|
TextAlignment = TextAlignment.BottomCenter,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
setACTemp.AddChidren (btnTextH);
|
|
btnInteriorH = new Button () {
|
Width = Application.GetRealWidth (150),
|
Height = Application.GetRealHeight (40),
|
Gravity = Gravity.CenterHorizontal,
|
Y = btnTextH.Bottom,
|
Text = ac.Humidity.ToString () + "%",
|
TextSize = 14,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
setACTemp.AddChidren (btnInteriorH);
|
|
#region 模式
|
var acModeView = new FrameLayout () {
|
Height = Application.GetRealHeight (200),
|
Width = Application.GetRealWidth (640),
|
BackgroundColor = SkinStyle.Current.ViewColor,
|
Y = setACTemp.Bottom,
|
};
|
acBodyView.AddChidren (acModeView);
|
|
FrameLayout modeView = new FrameLayout () {
|
Width = Application.GetRealWidth (416),
|
X = ac.LongXiDeviceType > 1 ? Application.GetRealWidth (90) : 0,
|
Y = Application.GetRealHeight (50),
|
};
|
acModeView.AddChidren (modeView);
|
|
btnAuto = new Button () {
|
X = Application.GetRealWidth (90),
|
Width = Application.GetMinRealAverage (100),
|
Height = Application.GetMinRealAverage (100),
|
Radius = 5,
|
BorderColor = 0xFFFFFFFF,
|
BorderWidth = 1,
|
TextSize = 18,
|
Text = "自动",
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
};
|
modeView.AddChidren (btnAuto);
|
|
btnManual = new Button () {
|
X = btnAuto.Right + Application.GetRealWidth (90),
|
Width = Application.GetMinRealAverage (100),
|
Height = Application.GetMinRealAverage (100),
|
Radius = 5,
|
BorderColor = 0xFFFFFFFF,
|
BorderWidth = 1,
|
TextSize = 18,
|
Text = "手动",//制冷
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
};
|
modeView.AddChidren (btnManual);
|
|
|
btnAuto.MouseUpEventHandler += (sdfa, asdfe) => {
|
btnAuto.IsSelected = true;
|
btnManual.IsSelected = false;
|
ac.SetMode = 3;
|
acBLL.ControlAC (ac);
|
};
|
btnManual.MouseUpEventHandler += (sdfa, asdfe) => {
|
btnAuto.IsSelected = false;
|
btnManual.IsSelected = true;
|
ac.SetMode = 0;
|
acBLL.ControlAC (ac);
|
};
|
|
if (ac.LongXiDeviceType < 2) {
|
btnModeChange = new Button () {
|
X = modeView.Right + Application.GetRealWidth (50),
|
Width = Application.GetMinRealAverage (100),
|
Height = Application.GetMinRealAverage (100),
|
Radius = 5,
|
BorderColor = 0xFFFFFFFF,
|
BorderWidth = 1,
|
TextSize = 14,
|
Text = "手动关",
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
Y = Application.GetRealHeight (50),
|
};
|
acModeView.AddChidren (btnModeChange);
|
btnModeChange.MouseUpEventHandler += (sdfa, asdfe) => {
|
ac.Wave = ac.Wave == (byte)0 ? (byte)1 : (byte)0;
|
if (ac.Wave == 0) {
|
btnModeChange.Text = "手动关";
|
} else {
|
btnModeChange.Text = "自动开";
|
|
}
|
acBLL.ControlAC (ac);
|
};
|
}
|
#endregion
|
|
|
var btnLine1 = new Button () {
|
Height = 3,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
Y = acModeView.Bottom,
|
};
|
acBodyView.AddChidren (btnLine1);
|
|
|
#region 风速
|
var acWindView = new FrameLayout () {
|
Height = Application.GetRealHeight (600),
|
Width = Application.GetRealWidth (640),
|
Y = btnLine1.Bottom + Application.GetRealHeight (30),
|
BackgroundColor = SkinStyle.Current.ViewColor,
|
};
|
acBodyView.AddChidren (acWindView);
|
|
btnLowWind = new Button () {
|
X = Application.GetRealWidth (90),
|
Y = Application.GetRealHeight (90),
|
Width = Application.GetMinRealAverage (100),
|
Height = Application.GetMinRealAverage (100),
|
Radius = 5,
|
BorderColor = 0xFFFFFFFF,
|
BorderWidth = 1,
|
TextSize = 18,
|
Text = "低风",
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
};
|
acWindView.AddChidren (btnLowWind);
|
|
btnMiddleWind = new Button () {
|
X = btnLowWind.Right + Application.GetRealWidth (90),
|
Y = Application.GetRealHeight (90),
|
Width = Application.GetMinRealAverage (100),
|
Height = Application.GetMinRealAverage (100),
|
Radius = 5,
|
BorderColor = 0xFFFFFFFF,
|
BorderWidth = 1,
|
TextSize = 18,
|
Text = "中风",
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
};
|
acWindView.AddChidren (btnMiddleWind);
|
|
btnHighWind = new Button () {
|
X = btnMiddleWind.Right + Application.GetRealWidth (90) ,
|
Y = Application.GetRealHeight (90),
|
Width = Application.GetMinRealAverage (100),
|
Height = Application.GetMinRealAverage (100),
|
Radius = 5,
|
BorderColor = 0xFFFFFFFF,
|
BorderWidth = 1,
|
TextSize = 18,
|
Text = "高风",
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
};
|
acWindView.AddChidren (btnHighWind);
|
btnLowWind.MouseUpEventHandler += (sdfa, asdfe) => {
|
btnLowWind.IsSelected = true;
|
btnMiddleWind.IsSelected = false;
|
btnHighWind.IsSelected = false;
|
ac.SetFanSpeed = 3;
|
acBLL.ControlAC (ac);
|
};
|
btnMiddleWind.MouseUpEventHandler += (sdfa, asdfe) => {
|
btnLowWind.IsSelected = false;
|
btnMiddleWind.IsSelected = true;
|
btnHighWind.IsSelected = false;
|
ac.SetFanSpeed = 2;
|
acBLL.ControlAC (ac);
|
};
|
btnHighWind.MouseUpEventHandler += (sdfa, asdfe) => {
|
btnLowWind.IsSelected = false;
|
btnMiddleWind.IsSelected = false;
|
btnHighWind.IsSelected = true;
|
ac.SetFanSpeed = 1;
|
acBLL.ControlAC (ac);
|
};
|
if (ac.LongXiDeviceType < 2) {
|
btnLowWind.X = Application.GetRealWidth (50);
|
btnMiddleWind.X = btnLowWind.Right + Application.GetRealWidth (50);
|
btnHighWind.X = btnMiddleWind.Right + Application.GetRealWidth (50);
|
btnElectricHeating = new Button () {
|
X = btnHighWind.Right + Application.GetRealWidth (50),
|
Y = Application.GetRealHeight (90),
|
Width = Application.GetMinRealAverage (100),
|
Height = Application.GetMinRealAverage (100),
|
Radius = 5,
|
BorderColor = 0xFFFFFFFF,
|
BorderWidth = 1,
|
TextSize = 14,
|
Text = "电辅热",
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
IsSelected = ac.ElectricHeating == 1 ? true : false
|
};
|
acWindView.AddChidren (btnElectricHeating);
|
btnElectricHeating.MouseUpEventHandler += (sdfa, asdfe) => {
|
btnElectricHeating.IsSelected = !btnElectricHeating.IsSelected;
|
if (btnElectricHeating.IsSelected)
|
ac.ElectricHeating = 1;
|
else
|
ac.ElectricHeating = 0;
|
|
acBLL.ControlAC (ac);
|
};
|
}
|
#endregion
|
|
UpdateStatus (ac);
|
}
|
|
|
/// <summary>
|
/// 读取设备状态
|
/// </summary>
|
static void readStatus (LongXiAC ac)
|
{
|
System.Threading.Tasks.Task.Run (() => {
|
if (ac.LastUpdateTime.AddMinutes (Common.Time) <= DateTime.Now) {
|
Control.ControlBytesSendHasReturn (Command.ReadACMode, ac.SubnetID, ac.DeviceID, new byte [] { ac.LoopID });
|
}
|
});
|
}
|
}
|
}
|