using Shared.SimpleControl.Phone;
using System;
using System.Collections.Generic;
using Shared.SimpleControl;
namespace Shared.SimpleControl.Pad
{
///
/// 空调控制界面
///
public class UserACPage : FrameLayout
{
///
/// 当前视图
///
static UserACPage curView;
FrameLayout acBodyView;
AC ac;
Room room;
SystemACHostMethod acM;
Button btnInterior;
Button btnACSwitch;
Button btnSetTemperature;
VerticalSeekBar VertTempSeekBar;
FrameLayout WindSpeedView;
FrameLayout ModeView;
public UserACPage (AC ac, Room room)
{
this.ac = ac;
this.room = room;
curView = this;
acM = new SystemACHostMethod ();
}
///
/// 更新空调
///
public static void UpdateStatus (AC 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 () + "°C";
curView.acM.UpdataACModeTemperature (ac, ac.SetMode, curView.btnSetTemperature);
curView.VertTempSeekBar.Progress = Convert.ToInt32 (ac.SetTemperature) - 16;
for (int b = 0; b < curView.WindSpeedView.ChildrenCount; b++) {
var btn = curView.WindSpeedView.GetChildren (b);
btn.Enable = true;
if(btn.Tag!=null)
(btn as Button).IsSelected = btn.Tag.ToString () == ac.SetFanSpeed.ToString () ? true : false;
}
for (int b = 0; b < curView.ModeView.ChildrenCount; b++) {
var btn = curView.ModeView.GetChildren (b);
btn.Enable = true;
if(btn.Tag!=null)
(btn as Button).IsSelected = btn.Tag.ToString () == ac.SetMode.ToString () ? true : false;
}
} else {
curView.btnACSwitch.IsSelected = false;
for (int b = 0; b < curView.WindSpeedView.ChildrenCount; b++) {
var btn = curView.WindSpeedView.GetChildren (b);
if(btn.Tag!=null)
(btn as Button).IsSelected = btn.Enable = false;
}
for (int b = 0; b < curView.ModeView.ChildrenCount; b++) {
var btn = curView.ModeView.GetChildren (b);
if(btn.Tag!=null)
(btn as Button).IsSelected = btn.Enable = false;
}
}
} catch {
}
});
}
///
/// 显示出当前房间所有的空调
///
public void showRoomAC ()
{
acBodyView = new FrameLayout ();
AddChidren (acBodyView);
#region Top View
FrameLayout roomBackgroundImageView = new FrameLayout () {
X = Application.GetRealWidth (10),
Y = Application.GetRealHeight (10),
Width = Application.GetRealWidth (920),
Height = Application.GetRealHeight (520),
};
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);
};
FrameLayout indoorTempView = new FrameLayout () {
X = roomBackgroundImageView.X,
Y = roomBackgroundImageView.Bottom + Application.GetRealHeight (10),
Width = Application.GetRealWidth (920),
Height = Application.GetRealHeight (150),
BackgroundColor = 0xFF333333,
};
acBodyView.AddChidren (indoorTempView);
Button btnText = new Button () {
Width = Application.GetRealWidth (200),
TextID = R.MyInternationalizationString.ACInterior,
TextSize = 20,
};
indoorTempView.AddChidren (btnText);
btnInterior = new Button () {
Width = Application.GetRealWidth (150),
X = btnText.Right,
Text = ac.IndoorTemperature.ToString () + "°C",
TextSize = 30,
TextAlignment = TextAlignment.Center,
};
indoorTempView.AddChidren (btnInterior);
FrameLayout SetTemperatureView = new FrameLayout () {
X = roomBackgroundImageView.Right + Application.GetRealWidth (10),
Y = roomBackgroundImageView.Y,
Width = Application.GetRealWidth(600),
Height = Application.GetRealHeight(680),
};
acBodyView.AddChidren (SetTemperatureView);
btnSetTemperature = new Button () {
X = Application.GetRealWidth (20),
Y = Application.GetRealHeight (330),
Width = Application.GetRealWidth (320),
Height = Application.GetRealHeight (220),
Text = ac.SetTemperature.ToString () + "°C",
TextSize = 68,
TextAlignment = TextAlignment.Center,
Enable = false,
};
SetTemperatureView.AddChidren (btnSetTemperature);
btnACSwitch = new Button () {
Width = Application.GetRealWidth (200),
Height = Application.GetRealHeight (130),
X = Application.GetRealWidth (50),
Y = Application.GetRealHeight (40),
UnSelectedImagePath = "PadAdding/Black.png",
SelectedImagePath = "PadAdding/ModeBlackOn.png",
Text = "ON"
};
btnACSwitch.IsSelected = ac.Power == 1;
btnACSwitch.MouseUpEventHandler += (sender, e) => {
btnACSwitch.IsSelected = !btnACSwitch.IsSelected;
ac.Power = btnACSwitch.IsSelected ? (byte)1 : (byte)0;
if (ac.Type == DeviceType.ACPanel) {
Control.ControlBytesSend (Command.InstructionPanelKey, ac.SubnetID, ac.DeviceID, new byte [] { 3, ac.Power });
} else if (ac.Type == DeviceType.ACDevice || ac.Type == DeviceType.ACInfrared) {
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] { ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature, ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature, ac.ChuShiTemperature, ac.RealModeAndFanSpeed, ac.Power, ac.SetMode, ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
}
};
SetTemperatureView.AddChidren (btnACSwitch);
Button btnHorTemp = new Button () {
X = btnSetTemperature.Right + Application.GetRealWidth (30),
Y = Application.GetRealHeight (20),
Width = Application.GetRealWidth (100),
Height = Application.GetRealHeight (620),
UnSelectedImagePath = "PadAdding/PadTemp.png",
};
SetTemperatureView.AddChidren (btnHorTemp);
VertTempSeekBar = new VerticalSeekBar () {
X = btnHorTemp.Right,
Y = btnHorTemp.Y - Application.GetRealHeight (10),
Width = Application.GetRealWidth (100),
Height = Application.GetRealHeight (640),
Max = 14,
ProgressColor = SkinStyle.Current.SelectedColor,
Progress = ac.SetTemperature - 16
};
SetTemperatureView.AddChidren (VertTempSeekBar);
VertTempSeekBar.ProgressChanged += (sender, e) => {
btnSetTemperature.Text = (e + 16).ToString () + "°C";
};
VertTempSeekBar.MouseUpEventHandler += (sender, e) => {
ac.SetTemperature = (byte)(VertTempSeekBar.Progress + 16);
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] { ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature, ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature, ac.ChuShiTemperature, ac.RealModeAndFanSpeed, ac.Power, ac.SetMode, ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
#endregion
#region 风速
WindSpeedView = new FrameLayout () {
X = Application.GetRealWidth(10),
Y = indoorTempView.Bottom + Application.GetRealHeight (50),
Height = Application.GetRealHeight (300),
//BackgroundColor = SkinStyle.Current.BackgroundColor,
};
acBodyView.AddChidren (WindSpeedView);
Button btnWindTitle = new Button () {
X = Application.GetRealWidth(30),
Width= Application.GetRealWidth(300),
Height = Application.GetRealHeight(70),
TextID = R.MyInternationalizationString.WindSpeed,
TextAlignment = TextAlignment.CenterLeft,
};
WindSpeedView.AddChidren (btnWindTitle);
#region Wind
Button btnHighWind = new Button () {
X = Application.GetRealWidth (10),
Y = btnWindTitle.Bottom + Application.GetRealHeight (20),
Width = Application.GetRealWidth (368),
Height = Application.GetRealHeight (180),
UnSelectedImagePath = "PadAdding/ACHigh.png",
SelectedImagePath = "PadAdding/ACHighOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.High,
Tag = 1,
Padding = new Padding (40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
WindSpeedView.AddChidren (btnHighWind);
btnHighWind.MouseUpEventHandler += (sender, e) => {
ac.SetFanSpeed = 1;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
Button btnMedium = new Button () {
Width = Application.GetRealWidth (368),
Height = Application.GetRealHeight (180),
X = btnHighWind.Right + Application.GetRealWidth (10),
Y = btnHighWind.Y,
UnSelectedImagePath = "PadAdding/ACMedium.png",
SelectedImagePath = "PadAdding/ACMediumOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Stroke,
Tag = 2,
Padding = new Padding (40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
WindSpeedView.AddChidren (btnMedium);
btnMedium.MouseUpEventHandler += (sender, e) => {
ac.SetFanSpeed = 2;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
Button btnLow = new Button () {
Width = Application.GetRealWidth (368),
Height = Application.GetRealHeight (180),
X = btnMedium.Right + Application.GetRealWidth (10),
Y = btnHighWind.Y,
UnSelectedImagePath = "PadAdding/ACLow.png",
SelectedImagePath = "PadAdding/ACLowOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Low,
Tag = 3,
Padding = new Padding (40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
WindSpeedView.AddChidren (btnLow);
btnLow.MouseUpEventHandler += (sender, e) => {
ac.SetFanSpeed = 3;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
Button btnAuto = new Button () {
Width = Application.GetRealWidth (368),
Height = Application.GetRealHeight (180),
X = btnLow.Right + Application.GetRealWidth (10),
Y = btnHighWind.Y,
UnSelectedImagePath = "PadAdding/ACAuto.png",
SelectedImagePath = "PadAdding/ACAutoOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Auto,
Tag = 0,
Padding = new Padding (40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
WindSpeedView.AddChidren (btnAuto);
btnAuto.MouseUpEventHandler += (sender, e) => {
ac.SetFanSpeed = 0;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
#endregion
#endregion
#region 模式
ModeView = new FrameLayout () {
Height = Application.GetRealHeight (300),
Width = LayoutParams.MatchParent,
X = Application.GetRealWidth(10),
Y = WindSpeedView.Bottom + Application.GetRealHeight (50),
//BackgroundColor = SkinStyle.Current.BackgroundColor,
};
acBodyView.AddChidren (ModeView);
Button btnModeTitle = new Button () {
X = Application.GetRealWidth (30),
Width = Application.GetRealWidth (300),
Height = Application.GetRealHeight (70),
TextID = R.MyInternationalizationString.UserACMode,
TextAlignment = TextAlignment.CenterLeft,
};
ModeView.AddChidren (btnModeTitle);
Button btnCoolMode = new Button () {
X = Application.GetRealWidth (10),
Y = btnModeTitle.Bottom + Application.GetRealHeight (10),
Width = Application.GetRealWidth (293),
Height = Application.GetRealHeight (180),
UnSelectedImagePath = "PadAdding/ACCool.png",
SelectedImagePath = "PadAdding/ACCoolOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Cool,
Tag = 0,
Padding = new Padding (40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
ModeView.AddChidren (btnCoolMode);
btnCoolMode.MouseUpEventHandler += (sender, e) => {
ac.SetMode = 0;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
//Button btnCoolIcon = new Button () {
// X = btnCoolMode.X + Application.GetRealWidth(100),
// Y = btnCoolMode.Y + Application.GetRealHeight(20),
// Width = Application.GetRealWidth(60),
// Height = Application.GetRealHeight(60),
// UnSelectedImagePath = "AC/ACRefrigeration.png",
// SelectedImagePath = "AC/ACRefrigeration.png",
//};
//ModeView.AddChidren (btnCoolIcon);
Button btnHotMode = new Button () {
X =btnCoolMode.Right + Application.GetRealWidth (10),
Y = btnCoolMode.Y,
Width = Application.GetRealWidth (290),
Height = Application.GetRealHeight (180),
UnSelectedImagePath = "PadAdding/ACHot.png",
SelectedImagePath = "PadAdding/ACHotOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Hot,
Tag = 1,
Padding = new Padding (40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
ModeView.AddChidren (btnHotMode);
btnHotMode.MouseUpEventHandler += (sender, e) => {
ac.SetMode = 1;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
Button btnFanMode = new Button () {
X =btnHotMode.Right+ Application.GetRealWidth (10),
Y = btnCoolMode.Y,
Width = Application.GetRealWidth (293),
Height = Application.GetRealHeight (180),
UnSelectedImagePath = "PadAdding/ACWindMode.png",
SelectedImagePath = "PadAdding/ACWindModeOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Ventila,
Tag = 2,
Padding = new Padding (40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
ModeView.AddChidren (btnFanMode);
btnFanMode.MouseUpEventHandler += (sender, e) => {
ac.SetMode = 2;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
Button btnAutoMode = new Button () {
X =btnFanMode.Right + Application.GetRealWidth (10),
Y = btnModeTitle.Bottom + Application.GetRealHeight (10),
Width = Application.GetRealWidth (293),
Height = Application.GetRealHeight (180),
UnSelectedImagePath = "PadAdding/ACAutoMode.png",
SelectedImagePath = "PadAdding/ACAutoModeOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Auto,
Tag = 3,
Padding = new Padding (40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
ModeView.AddChidren (btnAutoMode);
btnAutoMode.MouseUpEventHandler += (sender, e) => {
ac.SetMode = 3;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
Button btnDehumidify = new Button () {
X = btnAutoMode.Right + Application.GetRealWidth (10),
Y = btnCoolMode.Y,
Width = Application.GetRealWidth (293),
Height = Application.GetRealHeight (180),
UnSelectedImagePath = "PadAdding/ACChuShi.png",
SelectedImagePath = "PadAdding/ACChushiOn.png",
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
TextID = R.MyInternationalizationString.Dehumidify,
Tag = 4,
Padding = new Padding(40,0,0,0),
TextSize = 12,
TextAlignment = TextAlignment.Center
};
ModeView.AddChidren (btnDehumidify);
btnDehumidify.MouseUpEventHandler += (sender, e) => {
ac.SetMode = 4;
Control.ControlBytesSend (Command.SetACMode, ac.SubnetID, ac.DeviceID, new [] {
ac.LoopID, ac.TemperatureMode, ac.IndoorTemperature,
ac.CoolTemperature, ac.HeatTemperature, ac.AutoTemperature,
ac.ChuShiTemperature, ac.RealModeAndFanSpeed,
btnACSwitch.IsSelected ? (byte)1 : (byte)0, ac.SetMode,
ac.SetFanSpeed, ac.SetTemperature, ac.ShaoFanMode });
};
#endregion
UpdateStatus (ac);
readStatus (ac);
}
///
/// 读取设备状态
///
static void readStatus (AC ac)
{
System.Threading.Tasks.Task.Run (() => {
if (ac.LastUpdateTime.AddMinutes (Common.Time) <= DateTime.Now) {
var s = ac.Type + "_" + ac.SubnetID + "_" + ac.DeviceID + "_" + ac.LoopID;
Control.ControlBytesSendHasReturn (Command.ReadACMode, ac.SubnetID, ac.DeviceID, new byte [] { ac.LoopID });
}
});
}
public void controlPanelAC () {
}
}
}