using Shared.SimpleControl.Phone;
using System;
namespace Shared.SimpleControl.Pad
{
///
/// 地热设备房间
///
public class UserDeviceToFH : Shared.Dialog
{
///
/// 当前界面
///
static UserDeviceToFH curView;
UserFHPage ControlBodyView;
FrameLayout bodyScrolView;
VerticalScrolViewLayout RoomListScrolView;
///
/// 构造函数
///
public UserDeviceToFH ()
{
curView = this;
showAllRoomFH ();
readAllStatus ();
}
///
/// 更新当前地热
///
public static void UpdateStatus (Common updataFH)
{
if (curView == null) {
return;
}
Application.RunOnMainThread (() => {
for (int i = 0; i < curView.RoomListScrolView.ChildrenCount; i++) {
if (curView.RoomListScrolView.GetChildren (i).GetType () == typeof (RowLayout)) {
var fhRow = (RowLayout)curView.RoomListScrolView.GetChildren (i);
if (fhRow.Tag.ToString () != updataFH.CommonLoopID) {
continue;
}
for (int j = 0; j < fhRow.ChildrenCount; j++) {
if (fhRow.GetChildren (j).GetType () == typeof (Button)) {
var btn = (Button)fhRow.GetChildren (j);
if (btn.Tag == null) {
continue;
}
if (btn.Tag.ToString () == "Switch") {
if ((updataFH as FoolHeat).Status == 0) {
btn.IsSelected = false;
} else {
btn.IsSelected = true;
}
} else if (btn.Tag.ToString () == "Temperature") {
btn.Text = (updataFH as FoolHeat).WorkingTemperature.ToString () + "°C";
}
}
}
}
}
});
}
///
/// 显示房间的所有地热
///
void showAllRoomFH ()
{
FrameLayout topBackView = new FrameLayout () {
Height = Application.GetRealHeight (150),
BackgroundColor = 0xFF2f2f2f
};
AddChidren (topBackView);
#region 标题
var topView = new FrameLayout () {
Y = Application.GetRealHeight (36),
Height = Application.GetRealHeight (90),
};
AddChidren (topView);
var title = new Button () {
TextAlignment = TextAlignment.Center,
Text = Language.StringByID (R.MyInternationalizationString.FoolHeat),
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 (120),
Width = Application.GetRealWidth (95),
UnSelectedImagePath = "Item/Back.png",
SelectedImagePath = "Item/BackSelected.png",
Gravity = Gravity.CenterVertical,
};
topView.AddChidren (back);
back.MouseUpEventHandler += (sender, e) => {
Close ();
curView = null;
};
var btnl = new Button () {
Height = 1,
BackgroundColor = 0xFF2f2f2f,
Y = topView.Height - 1
};
topView.AddChidren (btnl);
#endregion
FrameLayout bordorView = new FrameLayout () {
Width = Application.GetRealWidth (480),
Height = Application.GetRealHeight (Application.DesignHeight - 150),
Y = Application.GetRealHeight (150),
BackgroundColor = 0xFF2f2f2f
};
AddChidren (bordorView);
#region 全开-全关
var powerView = new FrameLayout () {
Height = Application.GetRealHeight (110),
BackgroundColor = SkinStyle.Current.MainColor,
};
bordorView.AddChidren (powerView);
var btnAllON = new Button () {
Width = Application.GetRealWidth (240),
TextSize = 16,
TextID = R.MyInternationalizationString.ALLON,
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
};
powerView.AddChidren (btnAllON);
var btnAllOff = new Button () {
Width = Application.GetRealWidth (240),
X = btnAllON.Right,
TextSize = 16,
TextID = R.MyInternationalizationString.ALLOFF,
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
};
var btnLine = new Button () {
Width = 1,
BackgroundColor = 0xFF2f2f2f,
X = btnAllON.Right,
};
powerView.AddChidren (btnLine);
var btnLine1 = new Button () {
Height = 1,
Y = powerView.Height - 1,
BackgroundColor = 0xFF2f2f2f,
};
powerView.AddChidren (btnLine1);
btnAllON.MouseUpEventHandler += (sender, e) => {
btnAllON.TextColor = SkinStyle.Current.SelectedColor;
btnAllOff.TextColor = SkinStyle.Current.TextColor1;
controlAllFH (1);
};
powerView.AddChidren (btnAllOff);
btnAllOff.MouseUpEventHandler += (sender, e) => {
btnAllON.TextColor = SkinStyle.Current.TextColor1;
btnAllOff.TextColor = SkinStyle.Current.SelectedColor;
controlAllFH (0);
};
#endregion
RoomListScrolView = new VerticalScrolViewLayout () {
Width = LayoutParams.MatchParent,
Height = Application.GetRealHeight (Application.DesignHeight - 300 - 140),
Y = powerView.Bottom,
};
bordorView.AddChidren (RoomListScrolView);
bodyScrolView = new FrameLayout () {
Width = LayoutParams.MatchParent,
Height = Application.GetRealHeight (Application.DesignHeight - 126),
Y = powerView.Bottom,
};
bordorView.AddChidren (bodyScrolView);
#region 显示全部的地热
//显示所有
int devcieCount = 0;
foreach (var room in Room.Lists) {
if (room.Name == "") {
continue;
}
foreach (var common in room.DeviceList.FindAll ((obj) => { return obj.Type == DeviceType.FoolHeat || obj.Type == DeviceType.FoolHeatPanel; })) {
var roomFH = common as FoolHeat;
EventHandler openFHControlPageEvent = (button, mouseEventArgs) => {
for (int i = 0; i < RoomListScrolView.ChildrenCount; i++) {
var view = RoomListScrolView.GetChildren (i);
if (view.Tag == roomFH) {
for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++) {
var btn = (view as FrameLayout).GetChildren (j);
(btn as Button).IsSelected = true;
}
} else {
for (int j = 0; j < (view as FrameLayout).ChildrenCount; j++) {
var btn = (view as FrameLayout).GetChildren (j);
(btn as Button).IsSelected = false;
}
}
}
if (ControlBodyView != null) {
ControlBodyView.RemoveFromParent ();
}
ControlBodyView = new UserFHPage (roomFH, room) {
Width = Application.GetRealWidth (Application.DesignWidth) - bordorView.Width,
Height = Application.GetRealHeight (Application.DesignHeight - 150),
X = bordorView.Right,
Y = Application.GetRealHeight (150),
BackgroundColor = SkinStyle.Current.MainColor
};
AddChidren (ControlBodyView);
ControlBodyView.showRoomFH ();
};
FrameLayout fhView = new FrameLayout () {
Height = Application.GetRealHeight (140),
Tag = roomFH
};
fhView.Tag = roomFH.CommonLoopID;
RoomListScrolView.AddChidren (fhView);
var tempDeviceName = new Button () {
Padding = new Padding (0, 35, 0, 0),
Text = room.Name + " - " + common.Name,
Height = Application.GetRealHeight (140),
TextAlignment = TextAlignment.CenterLeft,
SelectedTextColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
BackgroundColor = SkinStyle.Current.Transparent,
SelectedBackgroundColor = SkinStyle.Current.MainColor
};
fhView.AddChidren (tempDeviceName);
tempDeviceName.MouseUpEventHandler += openFHControlPageEvent;
Button btnPoint = new Button () {
Width = Application.GetRealWidth (15),
Height = Application.GetRealHeight (15),
X = Application.GetRealWidth (45),
Gravity = Gravity.CenterVertical,
UnSelectedImagePath = "Item/Point.png",
SelectedImagePath = "Item/PointSelected.png",
};
fhView.AddChidren (btnPoint);
Button btnSelected = new Button () {
X = fhView.Width - 5,
Width = 5,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
BackgroundColor = SkinStyle.Current.Transparent,
};
fhView.AddChidren (btnSelected);
if (devcieCount == 0) {
ControlBodyView = new UserFHPage (roomFH, room) {
Width = Application.GetRealWidth (Application.DesignWidth) - bordorView.Width,
Height = Application.GetRealHeight (Application.DesignHeight - 150),
X = bordorView.Right,
Y = Application.GetRealHeight (150),
BackgroundColor = SkinStyle.Current.MainColor
};
AddChidren (ControlBodyView);
ControlBodyView.showRoomFH ();
tempDeviceName.IsSelected = true;
btnPoint.IsSelected = true;
}
devcieCount++;
}
}
#endregion
}
///
/// 控制所有地热
///
/// The blue component.
void controlAllFH (byte b)
{
System.Threading.Tasks.Task.Run (() => {
foreach (var room in Room.Lists) {
if (room == null)
continue;
if (room.Name == "") {
continue;
}
var list = room.DeviceList.FindAll ((obj) => {
return obj.Type == DeviceType.FoolHeat || obj.Type == DeviceType.FoolHeatPanel;
});
foreach (var common in list) {
(common as FoolHeat).Status = b;
var fh = common as FoolHeat;
if (fh.Type == DeviceType.FoolHeatPanel) {
Control.ControlBytesSend (Command.InstructionPanelKey, fh.SubnetID, fh.DeviceID, new byte [] { 20, fh.Status, fh.LoopID });
} else if (fh.Type == DeviceType.FoolHeat) {
fh = fh.Serverx_FH_CMD (FoolHeat.CommandType.Switch);
}
}
}
});
}
///
/// 显示当前多少是开的
///
void updateFHOnCount ()
{
Application.RunOnMainThread (() => {
for (int i = 0; i < curView.bodyScrolView.ChildrenCount; i++) {
if (curView.bodyScrolView.GetChildren (i).GetType () == typeof (RowLayout)) {
var roomRow = (RowLayout)curView.bodyScrolView.GetChildren (i);
if (roomRow.Tag != null) {
foreach (var room in Room.Lists) {
if (room.Name == "") {
continue;
}
if (roomRow.Tag.ToString () == room.Name) {
int oCount = 0;
foreach (var common in room.DeviceList) {
if (common.Type == DeviceType.FoolHeat) {
if ((common as FoolHeat).Status > 0) {
oCount++;
}
} else if (common.Type == DeviceType.FoolHeatPanel) {
if ((common as FoolHeatPanel).Status > 0) {
oCount++;
}
}
}
for (int j = 0; j < roomRow.ChildrenCount; j++) {
if (roomRow.GetChildren (j).GetType () == typeof (EditText)) {
var et = (EditText)roomRow.GetChildren (j);
et.Text = oCount.ToString ();
}
if (roomRow.GetChildren (j).GetType () == typeof (Button)) {
var btn = (Button)roomRow.GetChildren (j);
if (oCount > 0) {
btn.IsSelected = true;
} else {
btn.IsSelected = false;
}
}
}
}
}
}
}
}
});
}
///
/// 读取设备状态
///
void readAllStatus ()
{
System.Threading.Tasks.Task.Run (() => {
System.Collections.Generic.List readList = new System.Collections.Generic.List ();
foreach (Room room in Room.Lists) {
var list = room.DeviceList.FindAll ((obj) => {
return obj.LastUpdateTime.AddMinutes (Common.Time) <= DateTime.Now && (obj.Type == DeviceType.FoolHeat || obj.Type == DeviceType.FoolHeatPanel);
});
foreach (Common common in list) {
var s = common.Type + "_" + common.SubnetID + "_" + common.DeviceID + "_" + common.LoopID;
//已经读取过当前设备就不再读取
if (readList.Contains (s)) {
continue;
}
readList.Add (s);
var fh = common as FoolHeat;
if (fh.Type == DeviceType.FoolHeatPanel) {
Control.ControlBytesSend (Command.ReadInstructionPanelKey, fh.SubnetID, fh.DeviceID, new byte [] { 20, fh.LoopID, fh.LoopID });
Control.ControlBytesSend (Command.ReadInstructionPanelKey, fh.SubnetID, fh.DeviceID, new byte [] { 21, fh.LoopID, fh.LoopID });
Control.ControlBytesSend (Command.ReadInstructionPanelKey, fh.SubnetID, fh.DeviceID, new byte [] { 24, fh.LoopID, fh.LoopID });
Control.ControlBytesSend (Command.ReadInstructionPanelKey, fh.SubnetID, fh.DeviceID, new byte [] { 25, fh.LoopID, fh.LoopID });
Control.ControlBytesSend (Command.ReadInstructionPanelKey, fh.SubnetID, fh.DeviceID, new byte [] { 26, fh.LoopID, fh.LoopID });
Control.ControlBytesSend (Command.ReadInstructionPanelKey, fh.SubnetID, fh.DeviceID, new byte [] { 27, fh.LoopID, fh.LoopID });
Control.ControlBytesSend (Command.ReadInstructionPanelKey, fh.SubnetID, fh.DeviceID, new byte [] { 28, fh.LoopID, fh.LoopID });
} else if (fh.Type == DeviceType.FoolHeat) {
fh = fh.Serverx_FH_CMD (FoolHeat.CommandType.Read);
}
}
}
});
}
}
}