using System;
|
using System.Collections.Generic;
|
using Shared.SimpleControl;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
public class DoorLockRelayPage : FrameLayout
|
{
|
/// <summary>
|
/// 继电器门锁页面
|
/// </summary>
|
public static DoorLockRelayPage curView;
|
//FrameLayout roomBackgroundImage;
|
LightDoorLock mLightDoorLock;
|
|
Button btnClose;
|
Button btnOpen;
|
|
Button btnCloseText;
|
Button btnOpenText;
|
|
Button btnTitle;
|
//Room room;
|
|
/// <summary>
|
/// 显示当前房间窗帘设备
|
/// </summary>
|
public DoorLockRelayPage (LightDoorLock mLightDoorLock)
|
{
|
this.mLightDoorLock = mLightDoorLock;
|
BackgroundColor = SkinStyle.Current.MainColor;
|
//room = Room;
|
curView = this;
|
}
|
|
/// <summary>
|
/// 接受数据之后更新UI
|
/// </summary>
|
/// <returns>The user lights.</returns>
|
public static void UpdateStatus (byte subnetID, byte deviceID, byte loopID, byte status)
|
{
|
Application.RunOnMainThread (() => {
|
if (curView == null) return;
|
|
if (curView.mLightDoorLock.ReadStatusSubnetID != subnetID
|
|| curView.mLightDoorLock.ReadStatusDeviceID != deviceID
|
|| curView.mLightDoorLock.ReadStatusLoopID != loopID) {
|
return;
|
}
|
|
curView.mLightDoorLock.CurrentStatus = status;
|
curView.RefreshButtonStatus ();
|
});
|
}
|
|
/// <summary>
|
/// 房间模式进入的窗帘界面
|
/// </summary>
|
/// <returns>The lights room.</returns>
|
public void showmLightDoorLocksRoom ()
|
{
|
|
#region 标题
|
var topView = new FrameLayout () {
|
Y = Application.GetRealHeight (36),
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (640),
|
};
|
AddChidren (topView);
|
|
btnTitle = new Button () {
|
TextAlignment = TextAlignment.Center,
|
Text = mLightDoorLock.Name,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextSize = 19,
|
};
|
topView.AddChidren (btnTitle);
|
|
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 (90),
|
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
|
|
AddLightDoorLock (mLightDoorLock as LightDoorLock, topView);
|
ReadDoorLockStatus ();
|
//Control.ControlBytesSendHasReturn (Command.ReadLightEquipmentAllLoopBrightness, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { });
|
|
//Control.ControlBytesSend (Command.ReadLightEquipmentAllLoopBrightness, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { mLightDoorLock.PhysicsLoopID });
|
}
|
|
/// <summary>
|
/// 加载按钮
|
/// </summary>
|
void AddLightDoorLock (LightDoorLock mmLightDoorLock, FrameLayout topView)
|
{
|
|
btnTitle.Text = mLightDoorLock.Name;
|
var mLightDoorLockView = new FrameLayout(){
|
Height = Application.GetRealHeight (1009),
|
Width = Application.GetRealWidth (640),
|
Y = topView.Bottom,
|
BackgroundColor = SkinStyle.Current.SysPanleDevicesBox,
|
};
|
AddChidren (mLightDoorLockView);
|
|
|
var lineView = new FrameLayout () {
|
Y = Application.GetRealHeight (505),
|
Height = Application.GetRealHeight (2),
|
BackgroundColor = SkinStyle.Current.UserMenuItemButton
|
};
|
mLightDoorLockView.AddChidren (lineView);
|
|
btnClose = new Button () {
|
Width = Application.GetMinRealAverage (132),
|
Height = Application.GetMinRealAverage (176),
|
X = Application.GetRealWidth (258),
|
Y = Application.GetRealHeight (137),
|
UnSelectedImagePath = "DoorLockPic/door_lock_relay_close.png",
|
SelectedImagePath = "DoorLockPic/door_lock_relay_close_select.png",
|
};
|
mLightDoorLockView.AddChidren (btnClose);
|
|
btnCloseText = new Button () {
|
Width = Application.GetMinRealAverage (640-200),
|
Height = Application.GetMinRealAverage (34),
|
X = Application.GetRealWidth (100),
|
Y = btnClose.Bottom + Application.GetRealHeight(22),
|
TextSize = 18,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextID = R.MyInternationalizationString.DoorlockClosed
|
|
};
|
mLightDoorLockView.AddChidren (btnCloseText);
|
|
|
|
btnOpen = new Button () {
|
Width = Application.GetMinRealAverage (182),
|
Height = Application.GetMinRealAverage (176),
|
X = Application.GetRealWidth (258),
|
Y = Application.GetRealHeight (634),
|
UnSelectedImagePath = "DoorLockPic/door_lock_relay_open.png",
|
SelectedImagePath = "DoorLockPic/door_lock_relay_open_select.png",
|
};
|
mLightDoorLockView.AddChidren (btnOpen);
|
|
btnOpenText = new Button () {
|
Width = Application.GetMinRealAverage (640-200),
|
Height = Application.GetMinRealAverage (34),
|
X = Application.GetRealWidth (100),
|
Y = btnOpen.Bottom + Application.GetRealHeight (22),
|
TextSize = 18,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextID = R.MyInternationalizationString.DoorlockOpen
|
};
|
mLightDoorLockView.AddChidren (btnOpenText);
|
|
|
EventHandler<MouseEventArgs> CloseEventHandler = (sender, e) => {
|
|
SetButtonIsOpenStatus (false);
|
|
Control.ControlBytesSend (Command.UpdataCurtainModelStutas, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { mmLightDoorLock.LoopID, 2 });
|
};
|
|
EventHandler<MouseEventArgs> OpenEventHandler = (sender, e) => {
|
|
SetButtonIsOpenStatus (true);
|
|
Control.ControlBytesSend (Command.UpdataCurtainModelStutas, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { mmLightDoorLock.LoopID, 1 });
|
};
|
|
|
btnClose.MouseDownEventHandler += CloseEventHandler;
|
btnCloseText.MouseDownEventHandler += CloseEventHandler;
|
|
btnOpen.MouseDownEventHandler += OpenEventHandler;
|
btnOpenText.MouseDownEventHandler += OpenEventHandler;
|
|
}
|
|
private void ReadDoorLockStatus ()
|
{
|
System.Threading.Tasks.Task.Run (() => {
|
byte [] bbb = Control.ControlBytesSendHasReturn (Command.ReadDryContactStatus, mLightDoorLock.ReadStatusSubnetID, mLightDoorLock.ReadStatusDeviceID, new byte [] { 1, mLightDoorLock.ReadStatusLoopID });
|
if (bbb != null) {
|
Application.RunOnMainThread (() => {
|
mLightDoorLock.CurrentStatus = bbb [2];
|
RefreshButtonStatus ();
|
});
|
}
|
});
|
}
|
|
|
|
private void RefreshButtonStatus()
|
{
|
if (mLightDoorLock.CurrentStatus == 1) {
|
SetButtonIsOpenStatus (true);
|
} else {
|
SetButtonIsOpenStatus (false);
|
}
|
}
|
|
private void SetButtonIsOpenStatus (bool bOpen)
|
{
|
btnOpen.IsSelected = bOpen;
|
btnClose.IsSelected = !bOpen;
|
}
|
|
///// <summary>
|
///// 结束值
|
///// </summary>
|
///// <param name="v">V.</param>
|
//void intSpped (int v)
|
//{
|
// MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.Initiating));
|
// DateTime dateTime = DateTime.Now;
|
// System.Threading.Tasks.Task.Run (() => {
|
// while (curView != null) {
|
// System.Threading.Thread.Sleep (500);
|
// var bytes = Control.ControlBytesSendHasReturn (Command.ReadmLightDoorLockStatus, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { 17 });
|
// if (bytes == null) {
|
// break;
|
// } else {
|
// if (2 <= bytes.Length && v == bytes [1]) {
|
// if (mLightDoorLock.Type == DeviceType.mLightDoorLockRoller) {
|
// (mLightDoorLock as mLightDoorLockRoller).Speed = 100 / ((DateTime.Now - dateTime).TotalMilliseconds - 300);
|
// } else if (mLightDoorLock.Type == DeviceType.mLightDoorLockTrietex) {
|
// (mLightDoorLock as mLightDoorLockTrietex).Speed = 100 / ((DateTime.Now - dateTime).TotalMilliseconds - 300);
|
// }
|
// break;
|
// }
|
// }
|
// }
|
|
// Application.RunOnMainThread (() => {
|
// MainPage.Loading.Hide ();
|
// });
|
// });
|
//}
|
|
//void stop ()
|
//{
|
// try {
|
// if (th != null) {
|
// th.Abort ();
|
// th = null;
|
// //Control.ControlBytesSend (Command.ReadmLightDoorLockStatus, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { 17 });
|
// }
|
// } catch { }
|
//}
|
|
|
|
|
}
|
}
|