using System;
|
using Newtonsoft.Json.Linq;
|
using Shared.Common;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.DoorLock
|
{
|
public class AddUnLockMethodFailedTip : DoorLockCommonLayout, ZigBee.Common.IStatus
|
{
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="doorLock"></param>
|
public AddUnLockMethodFailedTip(ZigBee.Device.DoorLock doorLock, string entryType)
|
{
|
this.doorLock = doorLock;
|
this.currentType = entryType;
|
BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
|
}
|
|
#region ◆ 变量申明__________________________
|
ZigBee.Device.DoorLock doorLock;
|
string currentType = string.Empty;
|
Action<string, string> action;//接收通知
|
DateTime waitTime;//等待接收录入用户成功的时间
|
#endregion
|
|
/// <summary>
|
/// UI显示
|
/// </summary>
|
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
|
{
|
currentTitle = Language.StringByID(R.MyInternationalizationString.AddIcCard);
|
}
|
this.TopFrameLayout(this, currentTitle);
|
|
EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
|
{
|
if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null)
|
{
|
doorLock.Gateway.GwResDataAction -= action;
|
}
|
|
this.RemoveFromParent();
|
};
|
this.btnBack.MouseUpEventHandler += eHandlerBack;
|
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
|
this.MidFrameLayout(this);
|
|
MidFrameLayoutContent();
|
}
|
|
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(81 / 2),
|
Width = Application.GetRealWidth(407),
|
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
|
TextSize = 10,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
topMidFrameLayout.AddChidren(btnPicTip1);
|
|
var btnPicTip2 = new Button
|
{
|
X = Application.GetRealWidth(446),
|
Y = btnPicTip1.Bottom,
|
Height = Application.GetRealHeight(81 / 2),
|
Width = Application.GetRealWidth(207),
|
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
|
TextSize = 10,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
topMidFrameLayout.AddChidren(btnPicTip2);
|
|
var btnPicTip3 = new Button
|
{
|
X = Application.GetRealWidth(294),
|
Y = Application.GetRealHeight(1089),
|
Height = Application.GetRealHeight(173 / 2),
|
Width = Application.GetRealWidth(488),
|
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
|
Gravity = Gravity.CenterHorizontal,
|
TextSize = 14,
|
};
|
this.midFrameLayout.AddChidren(btnPicTip3);
|
|
var btnPicTip4 = new Button
|
{
|
X = Application.GetRealWidth(397),
|
Y = btnPicTip3.Bottom,
|
Width = Application.GetRealWidth(288),
|
Height = Application.GetRealHeight(173 / 2),
|
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
|
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(674),
|
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
|
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.NextStep),
|
TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
|
Gravity = Gravity.CenterHorizontal,
|
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
|
Radius = 10,
|
TextSize = 20,
|
Visible = false,
|
};
|
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
|
{
|
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<ZigBee.Device.DoorLock.DoorLockOperatingEventNotificationCommand>(jObjectdata["Data"].ToString());
|
if (OperatingEventNotificationDatad != null)
|
{
|
doorLock.doorLockOperatingEventNotificationCommand = OperatingEventNotificationDatad;
|
}
|
}
|
if (topic == $"{gatewayID}/DoorLock/DoorLockProgrammingEventNotificationCommand")
|
{
|
var ProgrammingEventNotificationData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZigBee.Device.DoorLock.DoorLockProgrammingEventNotificationCommand>(jObjectdata["Data"].ToString());
|
if (ProgrammingEventNotificationData != null)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
nextBtn.Visible = true;
|
});
|
doorLock.doorLockProgrammingEventNotificationCommand = ProgrammingEventNotificationData;
|
var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
|
localDoorLockObj.UserID = ProgrammingEventNotificationData.UserID;
|
localDoorLockObj.UnlockType = ProgrammingEventNotificationData.ProgramEventSoure;
|
var entryTime = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetLocalTime(ProgrammingEventNotificationData.ZigbeeLocalTime);
|
localDoorLockObj.EntryTime = entryTime;
|
doorLock.localDoorLockUserList.Add(ProgrammingEventNotificationData.UserID, localDoorLockObj);
|
}
|
}
|
};
|
|
if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null)
|
{
|
doorLock.Gateway.GwResDataAction += action;
|
}
|
|
nextBtn.MouseDownEventHandler += (sende, e) =>
|
{
|
waitTime = DateTime.Now;
|
doorLock.doorLockProgrammingEventNotificationCommand = null;
|
new System.Threading.Thread(async () =>
|
{
|
while ((DateTime.Now - waitTime).TotalMilliseconds < 5000)
|
{
|
await System.Threading.Tasks.Task.Delay(10);
|
if (doorLock.doorLockProgrammingEventNotificationCommand != null)
|
{
|
//var entryStatusPage = new Shared.Phone.UserCenter.DoorLock.EntryStatusPage(doorLock,accountObj, currentType);
|
//Shared.Phone.UserView.HomePage.Instance.AddChidren(entryStatusPage);
|
//Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
|
//entryStatusPage.Show();
|
//this.RemoveFromParent();
|
break;
|
}
|
}
|
|
if ((DateTime.Now - waitTime).TotalMilliseconds > 5000)
|
{
|
var addUnLockMethodFailedTip = new Shared.Phone.UserCenter.DoorLock.AddUnLockMethodFailedTip(doorLock, currentType);
|
Shared.Phone.UserView.HomePage.Instance.AddChidren(addUnLockMethodFailedTip);
|
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
|
addUnLockMethodFailedTip.Show();
|
this.RemoveFromParent();
|
}
|
})
|
{ IsBackground = true }.Start();
|
};
|
|
btnPicTip1.MouseDownEventHandler += (sende, e) =>
|
{
|
nextBtn.Visible = true;
|
};
|
}
|
|
|
#region ◆ 接口实现__________________________
|
/// <summary>
|
/// 处理变化事件 --将弃用 改用DeviceInfoChange()
|
/// </summary>
|
/// <returns>The changed.</returns>
|
/// <param name="common">Common.</param>
|
public void Changed(CommonDevice common)
|
{
|
|
}
|
/// <summary>
|
/// 处理变化事件
|
/// </summary>
|
/// <param name="common"></param>
|
/// <param name="typeTag"></param>
|
public void DeviceInfoChange(CommonDevice common, string typeTag)
|
{
|
}
|
/// <summary>
|
/// Changeds the IL ogic status.
|
/// </summary>
|
/// <param name="logic">Logic.</param>
|
public void ChangedILogicStatus(ZigBee.Device.Logic logic)
|
{
|
}
|
/// <summary>
|
/// Changeds the IS cene status.
|
/// </summary>
|
/// <param name="scene">Scene.</param>
|
public void ChangedISceneStatus(Scene scene)
|
{
|
}
|
#endregion
|
}
|
}
|