using System;
|
using System.Collections.Generic;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
public class GuideSettingInfraredModule : Dialog
|
{
|
FrameLayout bodyView;
|
VerticalScrolViewLayout EquipmentScrolView;
|
public GuideSettingInfraredModule ()
|
{
|
bodyView = new FrameLayout ();
|
this.AddChidren (bodyView);
|
BackgroundColor = SkinStyle.Current.ViewColor;
|
}
|
|
public void ShowGuideSettingInfraredModule (InfraredMode infraredMode)
|
{
|
#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 = infraredMode.Name,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextSize = 19,
|
};
|
topView.AddChidren (title);
|
#endregion
|
|
}
|
|
|
void SaveAndReadDevices (Common device)
|
{
|
MainPage.Loading.Start ();
|
System.Threading.Tasks.Task.Run (() => {
|
if (hideListCommon != null && hideListCommon.Count != 0) {
|
foreach (Common c in hideListCommon) {
|
if (c.SubnetID == device.SubnetID && c.DeviceID == device.DeviceID) {
|
LoadDevice (c);
|
Application.RunOnMainThread (() => {
|
try {
|
string ReadStr1 = "_" + c.SubnetID.ToString () + "_" + c.DeviceID.ToString () + "_";
|
List<string> localEquipmentList1 = new List<string> ();
|
List<string> files = IO.FileUtils.ReadFiles ().FindAll ((obj) => obj.Split ('_') [0] == "Equipment" && obj.Split ('_').Length == 5);
|
foreach (string equipment in files) {
|
if (equipment.Contains (ReadStr1) && c.Type.ToString () == equipment.Split ('_') [1]) {
|
localEquipmentList1.Add (equipment);
|
}
|
}
|
if (localEquipmentList1.Count > 0)
|
InitDevicesList (localEquipmentList1, device);
|
} catch {
|
}
|
});
|
Utlis.WriteLine ("loadChildren");
|
}
|
}
|
}
|
LoadDevice (device);
|
|
Application.RunOnMainThread (() => {
|
try {
|
string ReadStr = "_" + device.SubnetID.ToString () + "_" + device.DeviceID.ToString () + "_";
|
List<string> localEquipmentList = new List<string> ();
|
List<string> localFileList = IO.FileUtils.ReadFiles ();
|
foreach (string equipment in localFileList) {
|
if (equipment.Contains (ReadStr) && equipment.Split ('_').Length == 5) {
|
if (device.Type.ToString () == typeof (LightLogic).Name || equipment.Contains (device.Type.ToString ())) {
|
if (equipment.Split ('_') [0] == "Equipment")
|
localEquipmentList.Add (equipment);
|
}
|
}
|
}
|
if (localEquipmentList.Count == 0 && device.Type != DeviceType.InfraredMode) {
|
if (device.Type != DeviceType.RCU) {
|
new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
}
|
InitDevicesList (localEquipmentList, device);
|
} catch {
|
} finally {
|
MainPage.Loading.Hide ();
|
}
|
});
|
});
|
}
|
List<Common> hideListCommon;
|
public void EquipmentBaseViewShow (Common device)
|
{
|
hideListCommon = new List<Common> ();
|
List<string> localFileList = IO.FileUtils.ReadFiles ();
|
foreach (var deviceFile in localFileList) {
|
if (deviceFile.Split ('_') [0] != "Equipment" || deviceFile.Split ('_').Length != 5) {
|
continue;
|
}
|
string localFileType = deviceFile.Split ('_') [1];
|
|
byte [] equipmentUsefullBytes = IO.FileUtils.ReadFile (deviceFile);
|
Common common = null;
|
var equipmentString = CommonPage.MyEncodingUTF8.GetString (equipmentUsefullBytes);
|
common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (equipmentString);
|
if (common == null) {
|
continue;
|
}
|
if (common.isMixBox) {
|
hideListCommon.Add (common);
|
}
|
}
|
bodyView.RemoveAll ();
|
#region 标题
|
var topView = new FrameLayout () {
|
Y = Application.GetRealHeight (36),
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (640),
|
};
|
bodyView.AddChidren (topView);
|
|
var title = new Button () {
|
TextAlignment = TextAlignment.Center,
|
Text = device.Name,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextSize = 19,
|
};
|
topView.AddChidren (title);
|
#endregion
|
|
EquipmentScrolView = new VerticalScrolViewLayout () {
|
Y = topView.Bottom,
|
Height = Application.GetRealHeight (1136 - 126 - 91),
|
};
|
bodyView.AddChidren (EquipmentScrolView);
|
|
SaveAndReadDevices (device);
|
|
#region bottom
|
EventHandler<MouseEventArgs> eHandler = new EventHandler<MouseEventArgs> (delegate (object sender, MouseEventArgs e) {
|
Close ();
|
return;
|
System.Threading.Tasks.Task.Run (() => {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Start ();
|
});
|
string delFlag = "_" + device.SubnetID.ToString () + "_" + device.DeviceID.ToString () + "_";
|
|
var delFiles = IO.FileUtils.ReadFiles ().FindAll ((w) => {
|
return w.Contains (delFlag);
|
});
|
for (int i = 0; i < delFiles.Count; i++) {
|
if (delFiles [i].Split ('_').Length == 5) {
|
if (delFiles [i].Split ('_') [0] == "Equipment")
|
IO.FileUtils.DeleteFile (delFiles [i]);
|
}
|
}
|
Random ran = new Random ();
|
CommonPage.RandomHigh = (byte)ran.Next (0, 255);
|
CommonPage.RandomLow = (byte)ran.Next (0, 255);
|
CommonPage.LocalPhoneFindDevice = true;
|
CommonPage.DeviceList.Clear ();
|
Control.ControlBytesSendHasReturn (Command.ReadDeviceModul, device.SubnetID, device.DeviceID, new byte [] { (byte)CommonPage.RandomHigh, (byte)CommonPage.RandomLow });
|
CommonPage.LocalPhoneFindDevice = false;
|
|
Application.RunOnMainThread (() => {
|
bodyView.RemoveAll ();
|
EquipmentBaseViewShow (device);
|
});
|
});
|
});
|
var sysBottomView = new FrameLayout () {
|
Height = Application.GetRealHeight (90),
|
Y = EquipmentScrolView.Bottom,
|
};
|
AddChidren (sysBottomView);
|
|
Button AddSystemEquipmentButton = new Button () {
|
Width = LayoutParams.MatchParent,
|
Height = LayoutParams.MatchParent,
|
TextID = R.MyInternationalizationString.ReFresh,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
sysBottomView.AddChidren (AddSystemEquipmentButton);
|
AddSystemEquipmentButton.MouseUpEventHandler += eHandler;
|
sysBottomView.AddChidren (new Button () { Height = 1, BackgroundColor = SkinStyle.Current.White20Transparent });
|
#endregion
|
}
|
|
/// <summary>
|
/// 读取设备信息
|
/// </summary>
|
/// <param name="device">Device.</param>
|
void LoadDevice (Common device)
|
{
|
string ReadStr = "_" + device.SubnetID.ToString () + "_" + device.DeviceID.ToString () + "_";
|
List<string> localEquipmentList = new List<string> ();
|
foreach (string equipment in IO.FileUtils.ReadFiles ().FindAll ((obj) => obj.Split ('_') [0] == "Equipment")) {
|
if (equipment.Contains (ReadStr) && equipment.Split ('_').Length == 5) {
|
if (device.Type.ToString () == DeviceType.LightLogic.ToString () || (equipment.Contains (device.Type.ToString ())))
|
localEquipmentList.Add (equipment);
|
}
|
}
|
|
if (localEquipmentList.Count != 0) {
|
return;
|
}
|
byte bigClass = device.BigClass;
|
byte minClass = device.MinClass;
|
int count = device.LoopCount;
|
if (bigClass == 254)
|
return;
|
|
CommonPage.DeviceLoopList.Clear ();
|
|
for (int i = 1, j = 0; i <= count; i++) {
|
var loopBytes = Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, device.SubnetID, device.DeviceID, new byte [] { bigClass, minClass, (byte)i });
|
if (loopBytes == null) {
|
while (SystemWirelessGateway.Waiting) {
|
System.Threading.Thread.Sleep (100);
|
}
|
j++;
|
//连续两次读取不到数据则跳出该循环
|
if (j == 2 && i == 2)
|
break;
|
}
|
}
|
}
|
|
/// <summary>
|
/// 显示设备列表
|
/// </summary>
|
void LoadInterface (EventHandler<MouseEventArgs> eHandler, string textName, Button btn = null)
|
{
|
RowLayout frameLayout1 = new RowLayout () {
|
Width = LayoutParams.MatchParent,
|
Height = Application.GetRealHeight (93),
|
};
|
frameLayout1.MouseUpEventHandler += eHandler;
|
EquipmentScrolView.AddChidren (frameLayout1);
|
|
Button pointButton = new Button () {
|
Width = Application.GetRealHeight (13),
|
Height = Application.GetRealHeight (13),
|
X = Application.GetRealWidth (86),
|
UnSelectedImagePath = "Item/Point.png",
|
SelectedImagePath = "Item/PointSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
frameLayout1.AddChidren (pointButton);
|
|
Button nameButton = new Button () {
|
Width = Application.GetRealWidth (242),
|
Height = LayoutParams.MatchParent,
|
Text = textName,
|
TextAlignment = TextAlignment.CenterLeft,
|
X = Application.GetRealWidth (135),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
nameButton.MouseUpEventHandler += eHandler;
|
frameLayout1.AddChidren (nameButton);
|
|
if (eHandler != null) {
|
Button rightButton = new Button () {
|
Width = Application.GetRealWidth (28),
|
Height = Application.GetRealHeight (40),
|
Gravity = Gravity.CenterVertical,
|
UnSelectedImagePath = "Item/Right.png",
|
SelectedImagePath = "Item/RightSelected.png",
|
};
|
rightButton.X = frameLayout1.Width - rightButton.Width - Application.GetRealWidth (30);
|
rightButton.MouseUpEventHandler += eHandler;
|
frameLayout1.AddChidren (rightButton);
|
}
|
|
if (btn != null) {
|
frameLayout1.AddChidren (btn);
|
}
|
}
|
|
/// <summary>
|
/// 加载设备数据
|
/// </summary>
|
void InitDevicesList (List<string> listDevice, Common device)
|
{
|
if (listDevice.Count == 0)
|
return;
|
RowLayout fl = new RowLayout () {
|
Height = Application.GetRealHeight (93),
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
//if (isMixBox == false)
|
EquipmentScrolView.AddChidren (fl);
|
|
Button btnDeviceName = new Button () {
|
Width = Application.GetRealWidth (303),
|
Height = Application.GetRealHeight (55),
|
X = Application.GetRealWidth (86),
|
Y = Application.GetRealHeight (20),
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
fl.AddChidren (btnDeviceName);
|
|
try {
|
//设备界面要显示的设备,必须在这里添加显示
|
for (int i = 0; i < listDevice.Count; i++) {
|
if (listDevice [i].Split ('_').Length == 5) {
|
if (listDevice [i].Split ('_') [1].Contains (DeviceType.InfraredMode.ToString ())) {
|
btnDeviceName.TextID = R.MyInternationalizationString.InfraredEquipments;
|
InfraredMode infrared = Newtonsoft.Json.JsonConvert.DeserializeObject<InfraredMode> (
|
CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (listDevice [i])));
|
EventHandler<MouseEventArgs> clickEventHandler = new EventHandler<MouseEventArgs> (delegate (object sender, MouseEventArgs e) {
|
Dialog dialog = new Dialog ();
|
var systemInfrared = new SystemInfrared ();
|
dialog.AddChidren (systemInfrared);
|
systemInfrared.ShowSystemInfrared (infrared, device);
|
dialog.Show ();
|
});
|
LoadInterface (clickEventHandler, infrared.Name);
|
}
|
}
|
}
|
} catch (Exception ex) {
|
Utlis.WriteLine ("SystemEquipmentBase,AddDevicesList" + ex.ToString ());
|
}
|
}
|
|
}
|
}
|