using System;
using System.Collections.Generic;
using Shared.SimpleControl;
namespace Shared.SimpleControl.Phone
{
public class DoorLockRelayPage : FrameLayout
{
///
/// 继电器门锁页面
///
public static DoorLockRelayPage curView;
//FrameLayout roomBackgroundImage;
LightDoorLock mLightDoorLock;
Button btnClose;
Button btnOpen;
Button btnCloseText;
Button btnOpenText;
Button btnTitle;
//Room room;
///
/// 显示当前房间窗帘设备
///
public DoorLockRelayPage (LightDoorLock mLightDoorLock)
{
this.mLightDoorLock = mLightDoorLock;
BackgroundColor = SkinStyle.Current.MainColor;
//room = Room;
curView = this;
}
///
/// 接受数据之后更新UI
///
/// The user lights.
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 ();
});
}
///
/// 房间模式进入的窗帘界面
///
/// The lights room.
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 });
}
///
/// 加载按钮
///
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 CloseEventHandler = (sender, e) => {
SetButtonIsOpenStatus (false);
Control.ControlBytesSend (Command.UpdataCurtainModelStutas, mLightDoorLock.SubnetID, mLightDoorLock.DeviceID, new byte [] { mmLightDoorLock.LoopID, 2 });
};
EventHandler 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;
}
/////
///// 结束值
/////
///// V.
//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 { }
//}
}
}