using System;
using System.Collections.Generic;
using System.Collections;
namespace Shared.SimpleControl.Phone
{
public class SystemPanel : FrameLayout
{
///
/// 按键配置的目标列表
///
List targetList = new List ();
///
/// 支持绑定到面板按键
///
List supportDeviceFileList;//本地设备信息
List notInLocalDeviceList;
int currentSelectedEquipmentType = 0;//下来列表选择要显示的设备,0表示所有,1表示灯光,2表示窗帘,3表示逻辑模块
Button btnMechanicalSwitch;
FrameLayout inVerticalscrolView;
///
/// 当前选择的按键
///
Button btn;
public SystemPanel ()
{
//找出当前支持绑定到面板按键
supportDeviceFileList = IO.FileUtils.ReadFiles ().FindAll ((obj) => {
string [] str = obj.Split ('_');
return obj.StartsWith ("Equipment_")
&& str.Length == 5
&& (str [1] == DeviceType.LightSwitch.ToString ()
|| str [1] == DeviceType.LightDimming.ToString ()
|| str [1] == DeviceType.CurtainModel.ToString ()
|| str [1] == DeviceType.CurtainRoller.ToString ()
|| str [1] == DeviceType.CurtainTrietex.ToString ()
|| str [1] == DeviceType.LogicModule.ToString ()
);
});
}
///
/// Shows the equipments.
///
void showEquipments (bool onlyShowSelected = false)
{
inVerticalscrolView.RemoveAll ();
int btnLimmingNum = 0;
btn = null;
List willBeShowDeviceFilePath = new List ();
notInLocalDeviceList = new List ();
if (onlyShowSelected) {
foreach (var bytes in targetList) {
foreach (var deviceFilePath in supportDeviceFileList) {
if (deviceFilePath.EndsWith (bytes [3] + "_" + bytes [4] + "_" + bytes [5]) || deviceFilePath.EndsWith (bytes [3] + "_" + bytes [4] + "_0" + bytes [5])) {
willBeShowDeviceFilePath.Add (deviceFilePath);
break;
} else {
notInLocalDeviceList.Add (bytes [3] + "_" + bytes [4] + "_" + bytes [5]);
break;
}
}
}
} else {
if (currentSelectedEquipmentType == 0) {//判断是否为当前要显示的类型
willBeShowDeviceFilePath = supportDeviceFileList;
} else if (currentSelectedEquipmentType == 1) {
willBeShowDeviceFilePath = supportDeviceFileList.FindAll ((obj) => { return obj.Split ('_') [1] == DeviceType.LightDimming.ToString () || obj.Split ('_') [1] == DeviceType.LightSwitch.ToString (); });
} else if (currentSelectedEquipmentType == 2) {
willBeShowDeviceFilePath = supportDeviceFileList.FindAll ((obj) => { return obj.Split ('_') [1] == DeviceType.CurtainRoller.ToString () || obj.Split ('_') [1] == DeviceType.CurtainTrietex.ToString () || obj.Split ('_') [1] == DeviceType.CurtainModel.ToString (); });
} else if (currentSelectedEquipmentType == 3) {
willBeShowDeviceFilePath = supportDeviceFileList.FindAll ((obj) => { return obj.Split ('_') [1] == DeviceType.LogicModule.ToString (); });
}
notInLocalDeviceList = new List ();
}
foreach (string deviceFilePath in willBeShowDeviceFilePath)//显示在本地找到的所有设备
{
Common common = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (deviceFilePath)));
if (common == null) {
continue;
}
var btnDevice = new Button () {
Width = Application.GetRealWidth (250),
Height = Application.GetRealHeight (80),
TextAlignment = TextAlignment.Center,
Radius = (uint)Application.GetMinRealAverage (6),
BackgroundColor = SkinStyle.Current.ButtonColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
Text = common.Name,//是否是配置目标
Tag = false,
};
string [] str = deviceFilePath.Split ('_');//str的格式为,前缀_设备类型_子网号_设备号_回路号
//当保存在本地的设备信息回路号小于10的时候,前面会加了个0,在这里去掉
//如果包括了当前设备,就显示为选中状态
if (null != targetList.Find ((bytes) => {
if (common.Type == DeviceType.CurtainRoller || common.Type == DeviceType.CurtainTrietex) {
return bytes [3] + "_" + bytes [4] == str [2] + "_" + str [3];
} else {
return bytes [3] + "_" + bytes [4] + "_" + bytes [5] == str [2] + "_" + str [3] + "_" + str [4].TrimStart ('0');
}
})) {
btnDevice.BackgroundColor = SkinStyle.Current.newDeviceBG;
btnDevice.Tag = true;
}
btnDevice.AddTag ("DeviceFilePath", deviceFilePath);
btnDevice.Y = (int)btnLimmingNum / 2 * Application.GetRealHeight (80 + 10) + Application.GetRealHeight (13);
if (btnLimmingNum % 2 == 0) {
btnDevice.X = Application.GetRealWidth (13);
} else {
btnDevice.X = btnDevice.Width + Application.GetRealWidth (13 + 14);
}
btnLimmingNum++;
btnDevice.MouseUpEventHandler += (sender, e) => {
//如果之前的按键点击了,也不是配置过的目标
if (btn != null) {
if ((bool)btn.Tag) {
btn.BackgroundColor = SkinStyle.Current.newDeviceBG;
} else {
btn.BackgroundColor = SkinStyle.Current.ButtonColor;
}
}
btn = btnDevice;
btn.BackgroundColor = SkinStyle.Current.SelectedColor;
};
inVerticalscrolView.AddChidren (btnDevice);
}
foreach (string notInLocalDeviceFilePath in notInLocalDeviceList) {
string [] str = notInLocalDeviceFilePath.Split ('_');//str的格式为,前缀_设备类型_子网号_设备号_回路号
var btnDevice = new Button () {
Width = Application.GetRealWidth (250),
Height = Application.GetRealHeight (80),
TextAlignment = TextAlignment.Center,
Radius = (uint)Application.GetMinRealAverage (6),
BackgroundColor = SkinStyle.Current.PanelSettingTargetNotInLocalColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
TextColor = SkinStyle.Current.TextColor1,
Text = notInLocalDeviceFilePath,//是否是配置目标
Tag = false,
};
btnDevice.AddTag ("DeviceFilePath", notInLocalDeviceFilePath);
btnDevice.Y = (int)btnLimmingNum / 2 * Application.GetRealHeight (80 + 10) + Application.GetRealHeight (13);
if (btnLimmingNum % 2 == 0) {
btnDevice.X = Application.GetRealWidth (13);
} else {
btnDevice.X = btnDevice.Width + Application.GetRealWidth (13 + 14);
}
btnLimmingNum++;
btnDevice.MouseUpEventHandler += (sender, e) => {
//如果之前的按键点击了,也不是配置过的目标
if (btn != null) {
//if ((bool)btn.Tag) {
btn.IsSelected = false;
//} else {
//btn.IsSelected = true;
//}
}
btn = btnDevice;
btn.IsSelected = true;
};
inVerticalscrolView.AddChidren (btnDevice);
}
inVerticalscrolView.Height = (btnLimmingNum / 2 + 1) * Application.GetRealHeight (80 + 13);
}
///
/// 显示面板回路的具体配置信息
/// 这里传进来的PanelDeviceButtonKey的参数只有基本的大类、小类、子网号、设备号、回路号、模式的基本信息,
/// 后面的其他信息为面板回路的配置信息
/// 如果该面板回路为单一开关,则该条信息只有一条
/// 如果为组合,则为多条,前面的基本信息是相同的
///
public void SystemWirelessPanelButtonKeyShow (DryContact deviceLoop, Common panelDevice)
{
RemoveAll ();
currentSelectedEquipmentType = 0;
btn = null;
#region top
FrameLayout topView = new FrameLayout () {
Height = Application.GetRealHeight (98),
Width = LayoutParams.MatchParent,
BackgroundColor = SkinStyle.Current.MainColor
};
AddChidren (topView);
Button backButton = new Button () {
Height = Application.GetRealHeight (90),
Width = Application.GetRealWidth (85),
UnSelectedImagePath = "Item/Back.png",
SelectedImagePath = "Item/BackSelected.png",
Gravity = Gravity.CenterVertical,
};
backButton.MouseUpEventHandler += (sender, e) => {
(Parent as PageLayout).PageIndex -= 1;
//SystemEquipmentBase.RefreshView (panelDevice);
};
topView.AddChidren (backButton);
EditText textButton = new EditText () {
X = Application.GetRealWidth (30) + backButton.Right,
Height = Application.GetRealHeight (41),
Width = Application.GetRealWidth (400),
Text = deviceLoop.Name,
Gravity = Gravity.CenterVertical,
TextAlignment = TextAlignment.CenterLeft,
BackgroundColor = SkinStyle.Current.Transparent,
SelectedBackgroundColor = SkinStyle.Current.SysEditBox,
TextColor = SkinStyle.Current.TextColor1,
Enable = false
};
topView.AddChidren (textButton);
Button btnPositon = new Button () {
//X = Application.GetRealWidth (520),
Height = Application.GetRealHeight (90),
Width = Application.GetRealWidth (90),
UnSelectedImagePath = "Panel/Position.png",
Gravity = Gravity.CenterVertical,
X = topView.Width - Application.GetRealWidth (180)
};
if (deviceLoop.Type != DeviceType.DryContact)
topView.AddChidren (btnPositon);
btnPositon.MouseUpEventHandler += (sender, e) => {
var positionByte = Control.ControlBytesSendHasReturn (Command.ReadInstructionPanelKey, deviceLoop.SubnetID, deviceLoop.DeviceID, new byte [] { 17, deviceLoop.LoopID });
System.Threading.Tasks.Task.Run (() => {
for (int i = 0; i < 6; i++) {
positionByte [2] = positionByte [2] == 1 ? (byte)0 : (byte)1;
Control.ControlBytesSend (Command.InstructionPanelKey, deviceLoop.SubnetID, deviceLoop.DeviceID, positionByte, SendCount.Zero);
System.Threading.Thread.Sleep (500);
}
});
};
Button editor = new Button () {
Height = Application.GetRealHeight (90),
Width = Application.GetRealWidth (70),
UnSelectedImagePath = "Item/Editor.png",
SelectedImagePath = "Item/EditorSelected.png",
Gravity = Gravity.CenterVertical,
};
editor.X = topView.Width - editor.Width - Application.GetRealWidth (30);
topView.AddChidren (editor);
editor.MouseUpEventHandler += (sender, e) => {
if (editor.IsSelected) {
MainPage.Loading.Start ();
editor.IsSelected = textButton.IsSelected = textButton.Enable = false;
byte [] remakeBytes = CommonPage.MyEncodingGB2312.GetBytes (textButton.Text.Trim ());
textButton.IsSelected = editor.IsSelected = textButton.Enable = false;
System.Threading.Tasks.Task.Run (() => {
byte [] updateBytes = Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, deviceLoop.SubnetID, deviceLoop.DeviceID, new byte [] {
deviceLoop.BigClass,deviceLoop.MinClass,deviceLoop.LoopID
});
if (updateBytes == null) {
Application.RunOnMainThread (() => {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
MainPage.Loading.Hide ();
});
return;
}
byte [] uBytes = new byte [20];
Array.Copy (remakeBytes, 0, uBytes, 0, remakeBytes.Length < 20 ? remakeBytes.Length : 20);
Array.Copy (uBytes, 0, updateBytes, 3, 20 < uBytes.Length ? 20 : uBytes.Length);
var reBytes = Control.ControlBytesSendHasReturn (Command.SetDeviceLoopInfo, deviceLoop.SubnetID, deviceLoop.DeviceID, updateBytes);
if (reBytes != null) {
Application.RunOnMainThread (() => {
deviceLoop.Name = textButton.Text.Trim ();
IO.FileUtils.SaveEquipmentMessage (deviceLoop, deviceLoop.LoopID.ToString ());
MainPage.Loading.Hide ();
});
} else {
Application.RunOnMainThread (() => {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
MainPage.Loading.Hide ();
});
}
});
} else {
textButton.Enable = textButton.IsSelected = editor.IsSelected = true;
}
};
#endregion
FrameLayout deviceListView = new FrameLayout () {
Y = Application.GetRealHeight (98),
Height = Application.GetRealHeight (746),
BackgroundColor = SkinStyle.Current.SysPanelBox,
};
AddChidren (deviceListView);
System.Threading.Tasks.Task.Run (() => {
Application.RunOnMainThread (() => {
MainPage.Loading.Start ();
});
try {
targetList.Clear ();
CommonPage.DeviceList.Clear ();
//int loopCount = 1;
bool hasNotInLocalDevice = false;
ReadEnableTarget (deviceLoop, panelDevice, deviceLoop.LoopID);
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
FrameLayout viewBody = new FrameLayout () {
Height = Application.GetRealHeight (748),
};
deviceListView.AddChidren (viewBody);
int cellNumber = 0;
int cellY = Application.GetRealHeight (70);
int btnWidth = Application.GetRealWidth (173);
int btnHeight = Application.GetRealHeight (43);
int btnX = Application.GetRealWidth (50);
//---Min
Button btnModeText = new Button () {
Width = btnWidth,
Height = btnHeight,
X = btnX,
Y = cellY * cellNumber++ + 10,
TextID = R.MyInternationalizationString.Mode,
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1
};
viewBody.AddChidren (btnModeText);
string [] modeText = new string [8];///写在language里面,和写出相应的空调的参数对应值
modeText [0] = Language.StringByID (R.MyInternationalizationString.InvalidMode);
modeText [1] = Language.StringByID (R.MyInternationalizationString.SingleSwitch);
modeText [2] = Language.StringByID (R.MyInternationalizationString.SingleOpen);
modeText [3] = Language.StringByID (R.MyInternationalizationString.SingleClose);
modeText [4] = Language.StringByID (R.MyInternationalizationString.CombinedOpen);
modeText [5] = Language.StringByID (R.MyInternationalizationString.CombinedClose);
modeText [6] = Language.StringByID (R.MyInternationalizationString.Move);
modeText [7] = Language.StringByID (R.MyInternationalizationString.CombinedSwitch);
if (deviceLoop.Type == DeviceType.DryContact) {
modeText [0] = Language.StringByID (R.MyInternationalizationString.MechanicalSwitch);
modeText [3] = Language.StringByID (R.MyInternationalizationString.SingleSwitch);
modeText [1] = Language.StringByID (R.MyInternationalizationString.SingleOpen);
modeText [2] = Language.StringByID (R.MyInternationalizationString.SingleClose);
modeText [4] = Language.StringByID (R.MyInternationalizationString.CombinedOpen);
modeText [5] = Language.StringByID (R.MyInternationalizationString.CombinedClose);
modeText [6] = Language.StringByID (R.MyInternationalizationString.CombinedSwitch);
modeText [7] = Language.StringByID (R.MyInternationalizationString.MultiFunction);
}
/// [keyMode]
///00000=无效模式
///00001=单一开/关
///00002=单一开
///00003=单一关
///00004=组合开
///00005=组合关
///00006=点动
///00007=组合开/关
///00008=键分开 - 点动
///00009=键分开 - 组合
///00010=双击/单一开关
///00011=双击/组合开关
///00013=闹钟
///00014=机械开关
///00015=键分开 - 单一
///00016=短按/长点动
///00017=短按/长按
///00018=键分开 - 短按/长点动
///00019=键分开 - 短/长按
///00020=超链接
///00021=单一循环
///按键模式
Spinner spinnerMode = new Spinner () {
X = btnModeText.X + btnModeText.Width,
Y = btnModeText.Y,
Width = Application.GetRealWidth (540) - btnModeText.Width,
Height = Application.GetRealHeight (65),
TextColor = SkinStyle.Current.TextColor1
};
spinnerMode.AdapterStr = modeText;
spinnerMode.SelectedItemChanged += (sender, e) => {
MainPage.Loading.Start ("Loading..");
System.Threading.Tasks.Task.Run (() => {
try {
byte [] loopData = Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, deviceLoop.SubnetID, deviceLoop.DeviceID,
new byte [] { deviceLoop.BigClass, deviceLoop.MinClass, deviceLoop.LoopID });
if (loopData != null) {
loopData [23] = Convert.ToByte (e);
deviceLoop.Mode = Convert.ToByte (e);
Control.ControlBytesSendHasReturn (Command.SetDeviceLoopInfo, deviceLoop.SubnetID, deviceLoop.DeviceID, loopData);
IO.FileUtils.SaveEquipmentMessage (deviceLoop, deviceLoop.LoopID.ToString ());
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
this.SystemWirelessPanelButtonKeyShow (deviceLoop, panelDevice);
});
} else {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline),
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
});
}
} catch { } finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
});
}
});
};
viewBody.AddChidren (spinnerMode);
spinnerMode.CurrentRow = deviceLoop.Mode;
if (deviceLoop.Type == DeviceType.DryContact && deviceLoop.Mode == 0) {
btnMechanicalSwitch = new Button () {
X = spinnerMode.Right - Application.GetRealWidth (85),
Y = btnModeText.Y,
Width = Application.GetRealWidth (85),
Height = Application.GetRealHeight (65),
TextID = R.MyInternationalizationString.ON,
TextColor = SkinStyle.Current.TextColor1
};
viewBody.AddChidren (btnMechanicalSwitch);
btnMechanicalSwitch.MouseUpEventHandler += (sender, e) => {
MainPage.Loading.Start ("Loading..");
System.Threading.Tasks.Task.Run (() => {
try {
btnMechanicalSwitch.IsSelected = !btnMechanicalSwitch.IsSelected;
if (btnMechanicalSwitch.IsSelected) {
ReadEnableTarget (deviceLoop, panelDevice, (byte)(deviceLoop.LoopID + 100));
Application.RunOnMainThread (() => {
btnMechanicalSwitch.TextID = R.MyInternationalizationString.OFF;
showEquipments ();
MainPage.Loading.Hide ();
});
} else {
ReadEnableTarget (deviceLoop, panelDevice, deviceLoop.LoopID);
Application.RunOnMainThread (() => {
btnMechanicalSwitch.TextID = R.MyInternationalizationString.ON;
showEquipments ();
MainPage.Loading.Hide ();
});
}
} catch { } finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
});
}
});
};
}
Button btnOutput = new Button () {
Width = btnWidth,
Height = btnHeight,
X = btnX,
Y = cellY * cellNumber++ + 10,
TextID = R.MyInternationalizationString.DeviceTyep,
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1
};
deviceListView.AddChidren (btnOutput);
string [] typeText = new string []{
Language.StringByID(R.MyInternationalizationString.All),
Language.StringByID(R.MyInternationalizationString.Lights),
Language.StringByID(R.MyInternationalizationString.Curtain),
Language.StringByID(R.MyInternationalizationString.LogicModule),
// Language.StringByID(R.MyInternationalizationString.AC ),
// Language.StringByID(R.MyInternationalizationString.TerrestrialHeat),
};
var spinnerType = new Spinner () {
X = btnOutput.X + btnOutput.Width,
Y = btnOutput.Y,
Width = Application.GetRealWidth (540) - btnOutput.Width,
Height = Application.GetRealHeight (65),
TextColor = SkinStyle.Current.TextColor1
};
spinnerType.AdapterStr = typeText;
viewBody.AddChidren (spinnerType);
//显示出所有设备
var verticalScrolView = new VerticalScrolViewLayout () {
Height = Application.GetRealHeight (480),
Width = Application.GetRealWidth (540),
BackgroundColor = SkinStyle.Current.SysPanleDevicesBox,
X = btnX,
Y = cellY * cellNumber + 10,
};
viewBody.AddChidren (verticalScrolView);
inVerticalscrolView = new FrameLayout ();
verticalScrolView.AddChidren (inVerticalscrolView);
//加载所有的设备
showEquipments ();
spinnerType.SelectedItemChanged += (sender, e) => {
currentSelectedEquipmentType = e;
showEquipments (false);
};
Button btnShowEquipments = new Button () {
Width = btnWidth + Application.GetRealWidth (40),
Height = Application.GetRealHeight (50),
X = btnX,
Y = verticalScrolView.Bottom + Application.GetRealHeight (30),
TextID = R.MyInternationalizationString.AlreadyConfigured,
TextColor = SkinStyle.Current.TextColor1,
BackgroundColor = SkinStyle.Current.ButtonColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
BorderWidth = 1,
Radius = 5,
BorderColor = SkinStyle.Current.Transparent,
TextAlignment = TextAlignment.Center,
};
viewBody.AddChidren (btnShowEquipments);
Button btnEquipmnetSetting = new Button () {
Width = btnWidth - Application.GetRealWidth (20),
Height = Application.GetRealHeight (50),
X = btnX + btnShowEquipments.Width + Application.GetRealWidth (10),
Y = btnShowEquipments.Y,
BackgroundColor = SkinStyle.Current.ButtonColor,
TextColor = SkinStyle.Current.TextColor1,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
BorderWidth = 1,
Radius = 5,
BorderColor = SkinStyle.Current.Transparent,
TextID = R.MyInternationalizationString.Setting,
TextAlignment = TextAlignment.Center,
};
deviceListView.AddChidren (btnEquipmnetSetting);
btnEquipmnetSetting.MouseUpEventHandler += (sender, e) => {
if (btn == null) {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipSelectDevicSet), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
} else {
string btnTagDeviceFilePath = btn.GetTagByKey ("DeviceFilePath").ToString ();
if (notInLocalDeviceList.Contains (btnTagDeviceFilePath)) {
Alert delNotInLocalDeviceAlert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
Language.StringByID (R.MyInternationalizationString.delNotInLocalDeviceAlert),
Language.StringByID (R.MyInternationalizationString.cancel),
Language.StringByID (R.MyInternationalizationString.Delete));
delNotInLocalDeviceAlert.Show ();
delNotInLocalDeviceAlert.ResultEventHandler += (sender2, e2) => {
if (e2) {
if (btnShowEquipments.IsSelected) {
btn.RemoveFromParent ();
} else {
btn.BackgroundColor = SkinStyle.Current.ButtonColor;
btn.Tag = false;
}
btn = null;
System.Threading.Tasks.Task.Run (() => {
var data2 = targetList.Find ((obj) => {
return obj [3] + "_" + obj [4] + "_" + obj [5] == btnTagDeviceFilePath;
});
if (data2 == null) {
return;
}
data2 [2] = 0;
Control.ControlBytesSendHasReturn (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, data2);
targetList.Remove (data2);
//targetList.Add (data);
for (int i = 0; i < targetList.Count; i++) {
var bytes = targetList [i];
if (data2 [1] > 100)
bytes [1] = (byte)(i + 101);
else
bytes [1] = (byte)(i + 1);
Control.ControlBytesSendHasReturn (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, bytes);
}
targetList.Remove (data2);
});
}
};
return;
}
Common common = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (btn.GetTagByKey ("DeviceFilePath").ToString ())));
if (common == null) {
return;
}
byte [] sendBytes = new byte [9];
byte [] data = null;
if (common.Type == DeviceType.CurtainRoller || common.Type == DeviceType.CurtainTrietex) {
data = targetList.Find ((obj) => {
return obj [3] + "_" + obj [4] == common.SubnetID + "_" + common.DeviceID;
});
} else {
data = targetList.Find ((obj) => {
return obj [3] + "_" + obj [4] + "_" + obj [5] == common.SubnetID + "_" + common.DeviceID + "_" + common.LoopID;
});
}
if (data == null) {
if (deviceLoop.Type != DeviceType.DryContact) {
if (deviceLoop.Mode <= 3) {
targetList.Clear ();
sendBytes [1] = 1;
} else if (deviceLoop.Mode == 6) {
targetList.Clear ();
sendBytes [1] = 1;
} else {
sendBytes [1] = (byte)(targetList.Count + 1);
}
} else {
if (0 == deviceLoop.Mode) {
if (btnMechanicalSwitch != null && btnMechanicalSwitch.IsSelected) {
sendBytes [1] = (byte)(targetList.Count + 101);
} else
sendBytes [1] = (byte)(targetList.Count + 1);
} else if (deviceLoop.Mode <= 3) {
targetList.Clear ();
sendBytes [1] = 1;
} else {
sendBytes [1] = (byte)(targetList.Count + 1);
}
}
sendBytes [0] = deviceLoop.LoopID;
sendBytes [3] = common.SubnetID;
sendBytes [4] = common.DeviceID;
sendBytes [5] = common.LoopID;
} else {
sendBytes = data;
}
string deviceType = common.Type.ToString ();
#region setingDialog
Dialog dialog = new Dialog ();
FrameLayout dialogBodyView = new FrameLayout () {
BackgroundColor = SkinStyle.Current.DialogColor,
Width = Application.GetRealWidth (480),
Height = Application.GetRealHeight (560),
Gravity = Gravity.Center,
Radius = 5,
BorderWidth = 0,
BorderColor = SkinStyle.Current.Transparent
};
dialog.AddChidren (dialogBodyView);
Button btnEquipmentTitle = new Button () {
Height = Application.GetRealHeight (80),
TextAlignment = TextAlignment.Center,
TextID = R.MyInternationalizationString.Device,
BackgroundColor = SkinStyle.Current.DialogTitle,
TextColor = SkinStyle.Current.TextColor1
};
dialogBodyView.AddChidren (btnEquipmentTitle);
FrameLayout dialogBottomView = new FrameLayout () {
Y = dialogBodyView.Height - Application.GetRealHeight(87),
BackgroundColor = SkinStyle.Current.DialogTitle,
};
dialogBodyView.AddChidren (dialogBottomView);
Button btnBack = new Button () {
UnSelectedImagePath = "Item/PositioningDialogBack.png",
Width = Application.GetRealWidth (123),
Height = Application.GetRealHeight (87),
BackgroundColor = SkinStyle.Current.ButtonColor,
};
dialogBottomView.AddChidren (btnBack);
btnBack.MouseUpEventHandler += (senderB, eB) => {
dialog.Close ();
};
Button btnLine2 = new Button () {
Width = 1,
Height = Application.GetRealHeight (87),
BackgroundColor = SkinStyle.Current.White20Transparent,
X = btnBack.Right,
};
dialogBottomView.AddChidren (btnLine2);
Button btnSave = new Button () {
Width = dialogBottomView.Width - Application.GetRealWidth (124),
Height = Application.GetRealHeight (85),
X = btnBack.Right + 1,
Y = btnBack.Y,
TextID = R.MyInternationalizationString.SAVE,
UnSelectedImagePath = "Item/DialogSave2.png",
SelectedImagePath = "Item/DialogSave2.png",
TextColor = SkinStyle.Current.TextColor1,
BackgroundColor = SkinStyle.Current.ButtonColor,
TextAlignment = TextAlignment.Center
};
dialogBottomView.AddChidren (btnSave);
btnEquipmentTitle.Text = common.Name;
if (deviceType == DeviceType.LightDimming.ToString () || deviceType == DeviceType.LightSwitch.ToString ()|| deviceType == DeviceType.LightSwitchSocket.ToString ()) {
if (deviceType == DeviceType.LightSwitch.ToString () || deviceType == DeviceType.LightSwitchSocket.ToString ()) {
//btnEquipmentTitle.TextID = R.MyInternationalizationString.SwitchLights;
var lblChangeName = new Button () {
X = Application.GetRealWidth (20),
Y = btnEquipmentTitle.Bottom + Application.GetRealHeight (60),
Width = Application.GetRealWidth (200),
Height = Application.GetRealHeight (60),
TextID = R.MyInternationalizationString.DelayTime,
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor
};
dialogBodyView.AddChidren (lblChangeName);
var etDelayTime = new EditText () {
X = lblChangeName.Right + Application.GetRealWidth (10),
Y = lblChangeName.Y,
Width = lblChangeName.Width,
Height = lblChangeName.Height,
TextAlignment = TextAlignment.CenterLeft,
Text = " " + (sendBytes [7] * 256 + sendBytes [8]).ToString (),
TextColor = SkinStyle.Current.TextColor,
Radius = 5,
BorderColor = SkinStyle.Current.ButtonColor,
BorderWidth = 1,
};
dialogBodyView.AddChidren (etDelayTime);
var btnTest = new Button () {
X = etDelayTime.X,
Y = etDelayTime.Bottom + Application.GetRealHeight (50),
Width = Application.GetRealWidth (200),
Height = Application.GetRealHeight (60),
BackgroundColor = SkinStyle.Current.ButtonColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
BorderWidth = 1,
Radius = 5,
BorderColor = SkinStyle.Current.Transparent,
TextID = R.MyInternationalizationString.ON,
};
dialogBodyView.AddChidren (btnTest);
if (sendBytes [6] == 100) {
btnTest.IsSelected = true;
} else {
btnTest.IsSelected = false;
}
btnTest.MouseUpEventHandler += (sender3, e3) => {
btnTest.IsSelected = !btnTest.IsSelected;
if (btnTest.IsSelected) {
sendBytes [6] = 100;
btnTest.TextID = R.MyInternationalizationString.ON;
} else {
sendBytes [6] = 0;
btnTest.TextID = R.MyInternationalizationString.OFF;
}
Control.ControlBytesSend (Command.SetSingleLight, sendBytes [3], sendBytes [4], new byte [] { sendBytes [5], sendBytes [6], sendBytes [7], sendBytes [8] });
};
btnSave.MouseUpEventHandler += (sender2, e2) => {
sendBytes [2] = 0x59;
int dtime;
if (int.TryParse (etDelayTime.Text.Trim ().ToString (), out dtime)) {
if (dtime > 3600 || dtime < 0) {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterTheNumberTwo), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
return;
}
} else {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterTheNumberTwo), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
return;
}
sendBytes [7] = (byte)(Convert.ToInt32 (etDelayTime.Text.Trim ()) / 256);
sendBytes [8] = (byte)(Convert.ToInt32 (etDelayTime.Text.Trim ()) % 256);
if (hasNotInLocalDevice) {
foreach (var bytesend in targetList) {
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, bytesend);
}
}
if (!targetList.Contains (sendBytes)) {
targetList.Add (sendBytes);
}
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, sendBytes);
dialog.Close ();
showEquipments ();
};
} else if (deviceType == DeviceType.LightDimming.ToString ()) {
//btnEquipmentTitle.TextID = R.MyInternationalizationString.DimmingLights;
var lblChangeName = new Button () {
X = Application.GetRealWidth (10),
Y = btnEquipmentTitle.Bottom + Application.GetRealHeight (20),
Width = Application.GetRealWidth (200),
Height = Application.GetRealHeight (60),
TextID = R.MyInternationalizationString.DelayTime,
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor
};
dialogBodyView.AddChidren (lblChangeName);
var etDelayTime = new EditText () {
X = lblChangeName.Right + Application.GetRealWidth (10),
Y = btnEquipmentTitle.Bottom + Application.GetRealHeight (20),
Width = lblChangeName.Width,
Height = lblChangeName.Height,
TextAlignment = TextAlignment.CenterLeft,
Text = " " + (sendBytes [7] * 256 + sendBytes [8]).ToString (),
TextColor = SkinStyle.Current.TextColor,
Radius = 5,
BorderWidth = 1,
BorderColor = SkinStyle.Current.ButtonColor,
};
dialogBodyView.AddChidren (etDelayTime);
#region 进度条
bool unEnableDimmingLight = true;
if (UserConfig.Instance.UnEnableDimmingLight.Contains (sendBytes [3] + "_" + sendBytes [4] + "_" + sendBytes [5])) {
unEnableDimmingLight = false;
}
var f = new FrameLayout () {
Width = Application.GetRealWidth (540 - 150),
Height = Application.GetRealHeight (80),
X = Application.GetRealWidth (15),
Y = lblChangeName.Bottom + Application.GetRealHeight (30),
};
if (unEnableDimmingLight)
dialogBodyView.AddChidren (f);
HorizontalSeekBar horizontalSeekBar = new HorizontalSeekBar () {
Gravity = Gravity.CenterVertical,
Progress = sendBytes [6],
ThumbColor = SkinStyle.Current.SelectedColor,
};
f.AddChidren (horizontalSeekBar);
var btnMaxBrightness = new Button () {
Width = Application.GetRealWidth (100),
Height = Application.GetRealHeight (80),
X = f.Right,
Y = f.Y,
Text = sendBytes [7] * 256 + sendBytes [8] + "%",
TextColor = SkinStyle.Current.TextColor,
TextAlignment = TextAlignment.CenterLeft
};
if (unEnableDimmingLight)
dialogBodyView.AddChidren (btnMaxBrightness);
horizontalSeekBar.ProgressChanged += (s, ee) => {
sendBytes [6] = (byte)ee;
btnMaxBrightness.Text = sendBytes [6].ToString () + "%";
Control.ControlBytesSend (Command.SetSingleLight, sendBytes [3],sendBytes [4], new byte [] { sendBytes [5], sendBytes [6], 0, 0 });
};
#endregion
var btnTest = new Button () {
X = btnEquipmentTitle.X,
Y = f.Bottom + Application.GetRealHeight (30),
Width = Application.GetRealWidth (200),
Height = Application.GetRealHeight (60),
BackgroundColor = SkinStyle.Current.ButtonColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
BorderWidth = 1,
Radius = 5,
BorderColor = SkinStyle.Current.Transparent,
TextID = R.MyInternationalizationString.ON,
Gravity = Gravity.CenterHorizontal,
};
dialogBodyView.AddChidren (btnTest);
btnTest.MouseUpEventHandler += (sender3, e3) => {
btnTest.IsSelected = !btnTest.IsSelected;
if (btnTest.IsSelected) {
sendBytes [6] = 100;
btnTest.TextID = R.MyInternationalizationString.ON;
horizontalSeekBar.Progress = 100;
btnMaxBrightness.Text = "100%";
} else {
sendBytes [6] = 0;
btnTest.TextID = R.MyInternationalizationString.OFF;
horizontalSeekBar.Progress = 0;
btnMaxBrightness.Text = "0%";
}
Control.ControlBytesSend (Command.SetSingleLight, sendBytes [3],sendBytes [4], new byte [] { sendBytes [5], sendBytes [6], 0, 0 });
};
if (sendBytes [6] == 0) {
btnTest.IsSelected = false;
} else {
btnTest.IsSelected = true;
}
btnSave.MouseUpEventHandler += (sender2, e2) => {
sendBytes [2] = 0x59;
int dtime;
if (int.TryParse (etDelayTime.Text.Trim ().ToString (), out dtime)) {
if (dtime > 3600 || dtime < 0) {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterTheNumberTwo), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
return;
}
} else {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseEnterTheNumberTwo), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
return;
}
sendBytes [7] = (byte)(Convert.ToInt32 (etDelayTime.Text.Trim ()) / 256);
sendBytes [8] = (byte)(Convert.ToInt32 (etDelayTime.Text.Trim ()) % 256);
if (hasNotInLocalDevice) {
foreach (var bytesend in targetList) {
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, bytesend);
}
}
if (!targetList.Contains (sendBytes)) {
targetList.Add (sendBytes);
}
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, sendBytes);
dialog.Close ();
showEquipments ();
};
}
}
else if (deviceType == DeviceType.CurtainModel.ToString () || deviceType == DeviceType.CurtainTrietex.ToString () || deviceType == DeviceType.CurtainRoller.ToString ()) {
dialogBodyView.BackgroundColor = SkinStyle.Current.SubtitleView;
if (deviceType == DeviceType.CurtainModel.ToString ()) {
var btnOpenCurtain = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (125),
UnSelectedImagePath = "Curtain/CurtainOpen.png",
SelectedImagePath = "Curtain/CurtainOpenSelected.png",
X = btnEquipmentTitle.X,
Y = Application.GetRealHeight (255),
};
dialogBodyView.AddChidren (btnOpenCurtain);
var btnOpenLbl = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (30),
X = btnOpenCurtain.X,
Y = btnOpenCurtain.Bottom + Application.GetRealHeight (5),
TextID = R.MyInternationalizationString.Open,
TextColor = SkinStyle.Current.TextColor1,
};
dialogBodyView.AddChidren (btnOpenLbl);
var btnStopCurtain = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (125),
X = Application.GetRealWidth ((480 - 124) / 2),
Y = btnOpenCurtain.Y,
SelectedImagePath = "Curtain/CurtainTimeOutSelected.png",
UnSelectedImagePath = "Curtain/CurtainTimeOut.png",
};
dialogBodyView.AddChidren (btnStopCurtain);
var btnStopLbl = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (30),
X = btnStopCurtain.X,
Y = btnOpenLbl.Y,
TextID = R.MyInternationalizationString.Stop,
TextColor = SkinStyle.Current.TextColor1,
};
dialogBodyView.AddChidren (btnStopLbl);
var btnCloseCurtain = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (125),
X = Application.GetRealWidth (480 - 124 - 35),
Y = btnOpenCurtain.Y,
UnSelectedImagePath = "Curtain/CurtainClose.png",
SelectedImagePath = "Curtain/CurtainCloseSelected.png",
};
if (sendBytes [6] == 2) {
btnCloseCurtain.IsSelected = true;
btnStopCurtain.IsSelected = false;
btnOpenCurtain.IsSelected = false;
} else if (sendBytes [6] == 0) {
btnCloseCurtain.IsSelected = false;
btnStopCurtain.IsSelected = true;
btnOpenCurtain.IsSelected = false;
} else if (sendBytes [6] == 1) {
btnCloseCurtain.IsSelected = false;
btnStopCurtain.IsSelected = false;
btnOpenCurtain.IsSelected = true;
}
btnCloseCurtain.MouseUpEventHandler += (sender3, e3) => {
btnCloseCurtain.IsSelected = true;
btnOpenCurtain.IsSelected = false;
btnStopCurtain.IsSelected = false;
sendBytes [6] = 2;
};
btnOpenCurtain.MouseUpEventHandler += (sender3, e3) => {
btnCloseCurtain.IsSelected = false;
btnOpenCurtain.IsSelected = true;
btnStopCurtain.IsSelected = false;
sendBytes [6] = 1;
};
btnStopCurtain.MouseUpEventHandler += (sender3, e3) => {
btnCloseCurtain.IsSelected = false;
btnOpenCurtain.IsSelected = false;
btnStopCurtain.IsSelected = true;
sendBytes [6] = 0;
};
dialogBodyView.AddChidren (btnCloseCurtain);
btnStopCurtain.IsSelected = true;
var btnCloseLbl = new Button () {
Width = Application.GetRealWidth (94),
Height = Application.GetRealHeight (30),
X = btnCloseCurtain.X,
Y = btnOpenLbl.Y,
TextID = R.MyInternationalizationString.Close,
TextColor = SkinStyle.Current.TextColor1,
};
dialogBodyView.AddChidren (btnCloseLbl);
btnSave.MouseUpEventHandler += (sender2, e2) => {
if (hasNotInLocalDevice) {
foreach (var bytesend in targetList) {
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, bytesend);
}
}
if (!targetList.Contains (sendBytes)) {
targetList.Add (sendBytes);
}
sendBytes [2] = 0x5C;
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, sendBytes);
dialog.Close ();
showEquipments ();
};
} else if (deviceType == DeviceType.CurtainTrietex.ToString () || deviceType == DeviceType.CurtainRoller.ToString ()) {
var horizontalScrolViewMain = new HorizontalScrolViewLayout () {
Height = Application.GetRealHeight (78),
Y = Application.GetRealHeight (75),
ScrollEnabled = false
};
dialogBodyView.AddChidren (horizontalScrolViewMain);
var middleLayout = new FrameLayout {
Height = Application.GetRealHeight (292),
Y = horizontalScrolViewMain.Bottom,
};
dialogBodyView.AddChidren (middleLayout);
var curtainState = new Button {
Width = Application.GetRealWidth (240),
Height = LayoutParams.MatchParent,
UnSelectedImagePath = "Item/Menu.png",
SelectedImagePath = "Item/MenuSelected.png",
TextID = R.MyInternationalizationString.CurtainState,
TextAlignment = TextAlignment.Center,
IsSelected = true,
TextColor = SkinStyle.Current.TextColor1
};
horizontalScrolViewMain.AddChidren (curtainState);
var curtainProgress = new Button {
Width = Application.GetRealWidth (240),
Height = LayoutParams.MatchParent,
UnSelectedImagePath = "Item/Menu.png",
SelectedImagePath = "Item/MenuSelected.png",
TextID = R.MyInternationalizationString.CurtainProgress,
TextAlignment = TextAlignment.Center,
};
horizontalScrolViewMain.AddChidren (curtainProgress);
EventHandler handler = (sender1, e1) => {
middleLayout.RemoveAll ();
curtainState.IsSelected = true;
curtainProgress.IsSelected = false;
#region curtain status
var btnOpenCurtain = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (125),
UnSelectedImagePath = "Curtain/CurtainOpen.png",
SelectedImagePath = "Curtain/CurtainOpenSelected.png",
X = Application.GetRealWidth(20),
Y = Application.GetRealHeight (85),
};
middleLayout.AddChidren (btnOpenCurtain);
if (sendBytes [5] == 1) {
if (sendBytes [6] == 1) {
btnOpenCurtain.IsSelected = true;
}
}
var btnOpenLbl = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (30),
X = btnOpenCurtain.X,
Y = btnOpenCurtain.Bottom + Application.GetRealHeight (5),
TextID = R.MyInternationalizationString.Open,
TextColor = SkinStyle.Current.TextColor1,
};
middleLayout.AddChidren (btnOpenLbl);
var btnStopCurtain = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (125),
X = Application.GetRealWidth ((480 - 124) / 2),
Y = btnOpenCurtain.Y,
UnSelectedImagePath = "Curtain/CurtainTimeOut.png",
SelectedImagePath = "Curtain/CurtainTimeOutSelected.png",
};
middleLayout.AddChidren (btnStopCurtain);
if (sendBytes [5] == 1) {
if (sendBytes [6] == 0) {
btnStopCurtain.IsSelected = true;
}
}
var btnStopLbl = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (30),
X = btnStopCurtain.X,
Y = btnOpenLbl.Y,
TextID = R.MyInternationalizationString.Stop,
TextColor = SkinStyle.Current.TextColor1,
};
middleLayout.AddChidren (btnStopLbl);
var btnCloseCurtain = new Button () {
Width = Application.GetRealWidth (124),
Height = Application.GetRealHeight (125),
X = Application.GetRealWidth (480 - 124 - 20),
Y = btnOpenCurtain.Y,
UnSelectedImagePath = "Curtain/CurtainClose.png",
SelectedImagePath = "Curtain/CurtainCloseSelected.png",
};
middleLayout.AddChidren (btnCloseCurtain);
if (sendBytes [5] == 1) {
if (sendBytes [6] == 2) {
btnCloseCurtain.IsSelected = true;
}
}
var btnCloseLbl = new Button () {
Width = Application.GetRealWidth (94),
Height = Application.GetRealHeight (30),
X = btnCloseCurtain.X,
Y = btnOpenLbl.Y,
TextID = R.MyInternationalizationString.Close,
TextColor = SkinStyle.Current.TextColor1,
};
middleLayout.AddChidren (btnCloseLbl);
btnCloseCurtain.MouseUpEventHandler += (sender3, e3) => {
btnCloseCurtain.IsSelected = true;
btnOpenCurtain.IsSelected = false;
btnStopCurtain.IsSelected = false;
sendBytes [5] = 1;
sendBytes [6] = 2;
UpdataStatus (sendBytes);
};
btnOpenCurtain.MouseUpEventHandler += (sender3, e3) => {
btnCloseCurtain.IsSelected = false;
btnOpenCurtain.IsSelected = true;
btnStopCurtain.IsSelected = false;
sendBytes [5] = 1;
sendBytes [6] = 1;
UpdataStatus (sendBytes);
};
btnStopCurtain.MouseUpEventHandler += (sender3, e3) => {
btnCloseCurtain.IsSelected = false;
btnOpenCurtain.IsSelected = false;
btnStopCurtain.IsSelected = true;
sendBytes [5] = 1;
sendBytes [6] = 0;
UpdataStatus (sendBytes);
};
#endregion
};
curtainState.MouseUpEventHandler += handler;
EventHandler progressHandler = (sender1, e1) => {
middleLayout.RemoveAll ();
curtainProgress.IsSelected = true;
curtainState.IsSelected = false;
#region 进度条
var curtainbtnCurrentStatus = new Button () {
Width = Application.GetRealWidth (400),
Height = Application.GetRealHeight (50),
X = Application.GetRealWidth (20),
Y = Application.GetRealHeight (80),
TextAlignment = TextAlignment.CenterLeft,
Text = Language.StringByID (R.MyInternationalizationString.CurrentStatusProgress) + ":" + sendBytes [6].ToString () + "%",
};
middleLayout.AddChidren (curtainbtnCurrentStatus);
var f = new FrameLayout () {
Width = Application.GetRealWidth (540 - 192),
Height = Application.GetRealHeight (80),
X = Application.GetRealWidth (30),
Y = curtainbtnCurrentStatus.Bottom + Application.GetRealHeight (20),
};
middleLayout.AddChidren (f);
var curtainhorizontalSeekBar = new HorizontalSeekBar () {
Width = Application.GetRealWidth (540 - 193),
Height = LayoutParams.MatchParent,
Gravity = Gravity.CenterVertical,
Progress = sendBytes [6],
ThumbColor = SkinStyle.Current.ThumbColor,
};
f.AddChidren (curtainhorizontalSeekBar);
if (sendBytes [5] == 1) {
if (sendBytes [6] == 1) {
sendBytes [6] = 100;
curtainbtnCurrentStatus.Text = Language.StringByID (R.MyInternationalizationString.CurrentStatusProgress) + ":" + 100 + "%";
curtainhorizontalSeekBar.Progress = 100;
} else if (sendBytes [6] == 2) {
sendBytes [6] = 0;
curtainhorizontalSeekBar.Progress = 0;
curtainbtnCurrentStatus.Text = Language.StringByID (R.MyInternationalizationString.CurrentStatusProgress) + ":" + 0 + "%";
} else {
curtainhorizontalSeekBar.Progress = sendBytes [6];
curtainbtnCurrentStatus.Text = Language.StringByID (R.MyInternationalizationString.CurrentStatusProgress) + ":" + sendBytes [6].ToString () + "%";
}
}
var btnMaxBrightness = new Button () {
Width = Application.GetRealWidth (100),
Height = Application.GetRealHeight (40),
X = f.Right,
Y = f.Y+Application.GetRealHeight(20),
Text = "100%",
TextColor = SkinStyle.Current.TextColor1,
};
middleLayout.AddChidren (btnMaxBrightness);
curtainhorizontalSeekBar.ProgressChanged += (s, ee) => {
sendBytes [5] = 17;
sendBytes [6] = (byte)ee;
curtainhorizontalSeekBar.Progress = sendBytes [6];
curtainbtnCurrentStatus.Text = Language.StringByID (R.MyInternationalizationString.CurrentStatusProgress) + ":" + sendBytes [6].ToString () + "%";
};
#endregion
};
curtainProgress.MouseUpEventHandler += progressHandler;
if (sendBytes [5] == 1) {
handler (curtainState, null);
} else {
progressHandler (curtainProgress, null);
}
btnSave.MouseUpEventHandler += (sender2, e2) => {
if (hasNotInLocalDevice) {
foreach (var bytesend in targetList) {
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, bytesend);
}
}
if (!targetList.Contains (sendBytes)) {
targetList.Add (sendBytes);
}
sendBytes [2] = 0x5C;
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, sendBytes);
dialog.Close ();
showEquipments ();
};
}
}
else if (deviceType == DeviceType.LogicModule.ToString ()) {
Button btnTest = new Button () {
Width = Application.GetRealWidth (170),
Height = Application.GetRealHeight (70),
TextID = R.MyInternationalizationString.Test,
Gravity = Gravity.Center,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
BackgroundColor = SkinStyle.Current.ButtonColor,
TextColor = SkinStyle.Current.TextColor1
};
dialogBodyView.AddChidren (btnTest);
btnTest.MouseUpEventHandler += (sender2, e2) => {
btnTest.IsSelected = false;
};
LogicModule device = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (btn.GetTagByKey ("DeviceFilePath").ToString ())));
btnTest.MouseDownEventHandler += (sender2, e2) => {
btnTest.IsSelected = true;
Control.ControlBytesSendHasReturn (Command.SetScene, device.SubnetID, device.DeviceID, new byte [] {
device.AreaID,device.AreaSceneID});
};
btnSave.MouseUpEventHandler += (sender2, e2) => {
if (hasNotInLocalDevice) {
foreach (var bytesend in targetList) {
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, bytesend);
}
}
if (!targetList.Contains (sendBytes)) {
targetList.Add (sendBytes);
}
sendBytes [2] = 0x55;
sendBytes [6] = device.AreaSceneID;
Control.ControlBytesSend (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, sendBytes);
dialog.Close ();
showEquipments ();
};
}
dialog.Show ();
#endregion
}
};
var btnDel = new Button () {
Width = btnWidth - Application.GetRealWidth (20),
Height = Application.GetRealHeight (50),
X = btnEquipmnetSetting.X + btnEquipmnetSetting.Width + Application.GetRealWidth (10),
Y = btnShowEquipments.Y,
TextColor = SkinStyle.Current.TextColor1,
BackgroundColor = SkinStyle.Current.ButtonColor,
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
BorderWidth = 1,
Radius = 5,
BorderColor = SkinStyle.Current.Transparent,
TextID = R.MyInternationalizationString.Delete,
TextAlignment = TextAlignment.Center,
};
btnShowEquipments.MouseUpEventHandler += (sender, e) => {
btnShowEquipments.IsSelected = !btnShowEquipments.IsSelected;
if (btnShowEquipments.IsSelected) {
showEquipments (true);
} else {
//加载设备按钮
showEquipments ();
}
};
deviceListView.AddChidren (btnDel);
btnDel.MouseUpEventHandler += (sender, e) => {
if (btn == null) {
return;
}
string btnTagDeviceFilePath = btn.GetTagByKey ("DeviceFilePath").ToString ();
Common common = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (btn.GetTagByKey ("DeviceFilePath").ToString ())));
if (common == null) {
if (!notInLocalDeviceList.Contains (btnTagDeviceFilePath)) {
return;
}
} else {
btnTagDeviceFilePath = common.SubnetID + "_" + common.DeviceID + "_" + common.LoopID;
}
MainPage.Loading.Start (Language.StringByID(R.MyInternationalizationString.load));
if (btnShowEquipments.IsSelected) {
btn.RemoveFromParent ();
} else {
btn.BackgroundColor = SkinStyle.Current.ButtonColor;
btn.Tag = false;
}
btn = null;
System.Threading.Tasks.Task.Run (() => {
try {
var data = targetList.Find ((obj) => {
return obj [3] + "_" + obj [4] + "_" + obj [5] == btnTagDeviceFilePath;
});
if (data == null) {
return;
}
data [2] = 0;
Control.ControlBytesSendHasReturn (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, data);
targetList.Remove (data);
for (int i = 0; i < targetList.Count; i++) {
var bytes = targetList [i];
if (data [1] > 100)
bytes [1] = (byte)(i + 101);
else
bytes [1] = (byte)(i + 1);
Control.ControlBytesSendHasReturn (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, bytes);
}
targetList.Remove (data);
} catch(Exception ex) {
Application.RunOnMainThread (() => {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline),
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
});
Console.WriteLine ("sysPanel: " + ex.ToString ());
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
});
}
});
};
});
} catch (Exception ex) {
Console.WriteLine ("xcathc " + ex.ToString());
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
});
}
});
var sysBottomView = new FrameLayout () {
Height = Application.GetRealHeight (90),
Y = Application.GetRealHeight (844)
};
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 += (sender, e) => {
MainPage.Loading.Start (Language.StringByID(R.MyInternationalizationString.load));
System.Threading.Tasks.Task.Run (() => {
byte [] loopdData = Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, deviceLoop.SubnetID, deviceLoop.DeviceID,new byte [] { deviceLoop.BigClass, deviceLoop.MinClass, deviceLoop.LoopID });
deviceLoop.Mode = loopdData [23];
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
SystemWirelessPanelButtonKeyShow (deviceLoop, panelDevice);
});
});
};
sysBottomView.AddChidren (new Button () { Height = 1, BackgroundColor = SkinStyle.Current.White20Transparent });
}
void ReadEnableTarget (DryContact deviceLoop, Common panelDevice, byte loopID)
{
if (panelDevice.Type == DeviceType.DryContact)
return;
targetList = new List ();
byte [] enableBytes = Control.ControlBytesSendHasReturn (Command.ReadButtonKeyEnable,
deviceLoop.SubnetID, deviceLoop.DeviceID,
new byte [] { loopID });
if (enableBytes == null) {
enableBytes = new byte [panelDevice.LoopCount+2];
for (int lc = 0; lc < panelDevice.LoopCount; lc++) {
enableBytes [lc] = 1;
}
}
for (int i = 2; i < enableBytes.Length; i++) {
if (enableBytes [i] > 0) {
var enableString = Convert.ToString (enableBytes [i], 2);
for (int j = enableString.Length; j > 0; j--) {
char ch = enableString [j - 1];
if (ch == '1') {
int targetID = ((i - 2) * 8) + enableString.Length - j + 1;
if (loopID > 100)
targetID = targetID + 100;
if (deviceLoop.Type == DeviceType.ButtonPanel && deviceLoop.Mode == 6) {
targetID = targetID + 50;//点动起始索引为50
}
byte [] usefullBytes = Control.ControlBytesSendHasReturn (Command.ReadWirelessPanelButtonKey,deviceLoop.SubnetID, deviceLoop.DeviceID,
new byte [] { deviceLoop.LoopID, (byte)(targetID) });
if (usefullBytes == null) {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
var alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline),
Language.StringByID (R.MyInternationalizationString.Close), Language.StringByID (R.MyInternationalizationString.ReFresh));
alert.Show ();
alert.ResultEventHandler += (sender_alert, e_alert) => {
if (e_alert) {
this.SystemWirelessPanelButtonKeyShow (deviceLoop, panelDevice);
} else {
(Parent as PageLayout).PageIndex -= 1;
//SystemEquipmentBase.RefreshView (panelDevice);
}
};
});
return;
}
byte [] data = targetList.Find ((obj) => {
return obj [3] + "_" + obj [4] + "_" + obj [5] == usefullBytes [3] + "_" + usefullBytes [4] + "_" + usefullBytes [5];
});
if (data == null) {
int addIndex = 1;//机械开光ON区域1-20 OFF区域 101到120
if (loopID > 100) {
addIndex = 101;
}
if (usefullBytes [1] != (byte)(targetList.Count + addIndex)) {
//将间隔了无效数据行的数据移动到有效数据行末尾
var typeb = usefullBytes [2];
usefullBytes [2] = 0;
Control.ControlBytesSendHasReturn (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, usefullBytes);
usefullBytes [1] = (byte)(targetList.Count + addIndex);
usefullBytes [2] = typeb;
Control.ControlBytesSendHasReturn (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, usefullBytes);
}
targetList.Add (usefullBytes);
} else {
usefullBytes [2] = 0;
Control.ControlBytesSendHasReturn (Command.WriteWirelessPanelButtonKey, deviceLoop.SubnetID, deviceLoop.DeviceID, usefullBytes);
}
}
}
}
}
}
void UpdataStatus (byte [] sendBytes)
{
///
Common common = Newtonsoft.Json.JsonConvert.DeserializeObject (System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (btn.GetTagByKey ("DeviceFilePath").ToString ())));
if (common == null) {
return;
}
sendBytes [3] = common.SubnetID;
sendBytes [4] = common.DeviceID;
sendBytes [5] = common.LoopID;
/// /////////
if (Control.ControlBytesSendHasReturn (Command.UpdataCurtainModelStutas, sendBytes [3], sendBytes [4],
new byte [] { sendBytes [5], 1 }) == null) {
Application.RunOnMainThread (() => {
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
});
} else {
}
}
}
}