using System;
using Newtonsoft.Json.Linq;
using Shared.Common;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
{
public class AddUnLockMethodTip : DoorLockCommonLayout
{
/// 构造函数
///
///
public AddUnLockMethodTip(ZigBee.Device.DoorLock doorLock, MemberInfoRes accountObj, string entryType)
{
this.doorLock = doorLock;
this.curAccountObj = accountObj;
this.currentType = entryType;
BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
}
#region 变量申明
///
/// 当前门锁
///
ZigBee.Device.DoorLock doorLock;
///
/// 当前账户
///
MemberInfoRes curAccountObj;
///
/// 当前类型
///
string currentType = string.Empty;
///
/// 接收通知
///
Action action;
#endregion
///
/// UI显示
///
public void Show()
{
string currentTitle = "";
if (currentType == "password")
{
currentTitle = Language.StringByID(R.MyInternationalizationString.AddPassword);
}
else if (currentType == "fingerprint")
{
currentTitle = Language.StringByID(R.MyInternationalizationString.AddFingerprint);
}
else if (currentType == "proximity")
{
currentTitle = Language.StringByID(R.MyInternationalizationString.AddIcCard);
}
this.TopFrameLayout(this, currentTitle);
EventHandler eHandlerBack = (sender, e) =>
{
this.RemoveFromParent();
};
this.btnBack.MouseUpEventHandler += eHandlerBack;
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
this.MidFrameLayout(this);
MidFrameLayoutContent();
}
///
/// 重写移除方法
///
public override void RemoveFromParent()
{
if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null)
{
doorLock.Gateway.GwResDataAction -= action;
}
base.RemoveFromParent();
}
///
/// 中部布局
///
public void MidFrameLayoutContent()
{
var topMidFrameLayout = new FrameLayout
{
X = Application.GetRealWidth(104),
Y = Application.GetRealHeight(112),
Height = Application.GetRealHeight(873),
Width = Application.GetRealWidth(876),
};
this.midFrameLayout.AddChidren(topMidFrameLayout);
var btnPicTip1 = new Button
{
X = Application.GetRealWidth(446),
Y = Application.GetRealHeight(330),
Height = Application.GetRealHeight(76 / 2),
Width = Application.GetRealWidth(407),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
TextSize = 10,
TextAlignment = TextAlignment.CenterLeft,
};
topMidFrameLayout.AddChidren(btnPicTip1);
var btnPicTip2 = new Button
{
X = Application.GetRealWidth(446),
Y = btnPicTip1.Bottom,
Height = Application.GetRealHeight(76 / 2),
Width = Application.GetRealWidth(207),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
TextSize = 10,
TextAlignment = TextAlignment.CenterLeft,
};
topMidFrameLayout.AddChidren(btnPicTip2);
var btnPicTip3 = new Button
{
X = Application.GetRealWidth(294),
Y = Application.GetRealHeight(1089),
Height = Application.GetRealHeight(100 / 2),
Width = Application.GetRealWidth(488),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
Gravity = Gravity.CenterHorizontal,
TextSize = 14,
};
this.midFrameLayout.AddChidren(btnPicTip3);
var btnPicTip4 = new Button
{
X = Application.GetRealWidth(397),
Y = btnPicTip3.Y + Application.GetRealHeight(50),
Width = Application.GetRealWidth(288),
Height = Application.GetRealHeight(100 / 2),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
Gravity = Gravity.CenterHorizontal,
TextSize = 14,
};
this.midFrameLayout.AddChidren(btnPicTip4);
var btnPicTip5 = new Button
{
X = Application.GetRealWidth(202),
Y = Application.GetRealHeight(1388),
Height = Application.GetRealHeight(49),
Width = Application.GetRealWidth(685),
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
Gravity = Gravity.CenterHorizontal,
TextSize = 12,
};
this.midFrameLayout.AddChidren(btnPicTip5);
var nextBtn = new Button
{
X = Application.GetRealWidth(86),
Y = Application.GetRealHeight(1472),
Height = Application.GetRealHeight(127),
Width = Application.GetRealWidth(907),
Text = Language.StringByID(R.MyInternationalizationString.NextStepXm),
TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
Gravity = Gravity.CenterHorizontal,
Radius = (uint)Application.GetRealHeight(127 / 2),
TextSize = 16,
IsBold = true,
Enable = false,
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect,
};
this.midFrameLayout.AddChidren(nextBtn);
if (currentType == "password")
{
topMidFrameLayout.BackgroundImagePath = "DoorLock/AddPasswordTicPic.png";
btnPicTip1.Width = Application.GetRealWidth(307);
btnPicTip1.X = Application.GetRealWidth(500);
btnPicTip1.Y = Application.GetRealHeight(350);
btnPicTip2.X = Application.GetRealWidth(543);
btnPicTip2.Y = btnPicTip1.Bottom + Application.GetRealHeight(10);
btnPicTip2.Width = Application.GetRealWidth(207);
btnPicTip1.Text = Language.StringByID(R.MyInternationalizationString.EntryPasswordTip1);
btnPicTip2.Text = Language.StringByID(R.MyInternationalizationString.EntryPassword);
btnPicTip3.Text = Language.StringByID(R.MyInternationalizationString.EntryPasswordTip2);
btnPicTip4.Text = btnPicTip2.Text;
btnPicTip5.Text = Language.StringByID(R.MyInternationalizationString.EntryTip);
}
else if (currentType == "fingerprint")
{
topMidFrameLayout.BackgroundImagePath = "DoorLock/AddFingerprintTipPic.png";
btnPicTip1.Text = Language.StringByID(R.MyInternationalizationString.EntryFingerprintTip1);
btnPicTip2.Text = Language.StringByID(R.MyInternationalizationString.EntryFingerprint);
btnPicTip3.Text = Language.StringByID(R.MyInternationalizationString.EntryFingerprintTip2);
btnPicTip4.Text = btnPicTip2.Text;
btnPicTip1.X = Application.GetRealWidth(486);
btnPicTip1.Y = Application.GetRealHeight(320);
btnPicTip2.X = Application.GetRealWidth(543);
btnPicTip2.Width = Application.GetRealWidth(207);
btnPicTip1.X = Application.GetRealWidth(450);
btnPicTip5.Text = Language.StringByID(R.MyInternationalizationString.EntryTip);
}
else if (currentType == "proximity")
{
topMidFrameLayout.BackgroundImagePath = "DoorLock/AddIcCardTipPic.png";
btnPicTip3.Width = Application.GetRealWidth(495);
btnPicTip1.X = Application.GetRealWidth(440);
btnPicTip1.Y = Application.GetRealHeight(313);
btnPicTip2.X = Application.GetRealWidth(538);
btnPicTip2.Width = Application.GetRealWidth(207);
btnPicTip1.Text = Language.StringByID(R.MyInternationalizationString.EntryProximityTip1);
btnPicTip2.Text = Language.StringByID(R.MyInternationalizationString.EntryProximityCard);
btnPicTip3.Text = Language.StringByID(R.MyInternationalizationString.EntryProximityTip2);
btnPicTip4.Text = btnPicTip2.Text;
btnPicTip5.Text = Language.StringByID(R.MyInternationalizationString.EntryTip);
}
action = (topic, data) =>
{
var gatewayID = topic.Split('/')[0];
var jObjectdata = JObject.Parse(data);
if (jObjectdata == null)
{
return;
}
if (topic == $"{gatewayID}/DoorLock/DoorLockOperatingEventNotificationCommand")
{
var OperatingEventNotificationDatad = Newtonsoft.Json.JsonConvert.DeserializeObject(jObjectdata["Data"].ToString());
if (OperatingEventNotificationDatad != null)
{
doorLock.doorLockOperatingEventNotificationCommand = OperatingEventNotificationDatad;
}
}
if (topic == $"{gatewayID}/DoorLock/DoorLockProgrammingEventNotificationCommand")
{
var ProgrammingEventNotificationData = Newtonsoft.Json.JsonConvert.DeserializeObject(jObjectdata["Data"].ToString());
if (ProgrammingEventNotificationData != null)
{
int curMethod = -1;
if (currentType == "password")
{
curMethod = 0;
}
else if (currentType == "fingerprint")
{
curMethod = 15;
}
else if (currentType == "proximity")
{
curMethod = 3;
}
else
{
return;
}
if (ProgrammingEventNotificationData.ProgramEventSoure == curMethod)
{
doorLock.doorLockProgrammingEventNotificationCommand = ProgrammingEventNotificationData;
var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
localDoorLockObj.UserID = ProgrammingEventNotificationData.UserID;
localDoorLockObj.UnlockType = ProgrammingEventNotificationData.ProgramEventSoure;
localDoorLockObj.EntryTime = System.DateTime.Now;
//先暂时加入,等云端添加和获取真正成功后才真的加入
if (!doorLock.localDoorLockUserList.ContainsKey(localDoorLockObj.UserID))
{
doorLock.localDoorLockUserList.Add(ProgrammingEventNotificationData.UserID, localDoorLockObj);
}
Application.RunOnMainThread(() =>
{
nextBtn.Enable = true;
nextBtn.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
});
}
}
}
};
if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null)
{
doorLock.Gateway.GwResDataAction += action;
}
nextBtn.MouseDownEventHandler += (sende, e) =>
{
this.RemoveFromParent();
var entryStatusPage = new Shared.Phone.UserCenter.DoorLock.EntryStatusPage(doorLock, curAccountObj, currentType);
Shared.Phone.UserView.HomePage.Instance.AddChidren(entryStatusPage);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
entryStatusPage.Show();
};
}
}
}