using System;
|
using Shared.Common;
|
using ZigBee.Device;
|
|
namespace Shared.Phone.UserCenter.DoorLock
|
{
|
public class DoorLockCommonLayout : FrameLayout
|
{
|
public DoorLockCommonLayout()
|
{
|
|
}
|
#region ◆ 变量申明__________________________
|
public FrameLayout topFrameLayout = new FrameLayout { Height = Application.GetRealHeight(184), BackgroundColor = ZigbeeColor.Current.XMTopFrameLayout };
|
public FrameLayout midFrameLayout = new FrameLayout { Height = Application.GetRealHeight(1921 - 184), BackgroundColor = ZigbeeColor.Current.XMMidFrameLayout };
|
public FrameLayout bottomRadiusFrameLayout = new FrameLayout()
|
{
|
Height = Application.GetRealHeight(100),
|
Y = Application.GetRealHeight(930),
|
Radius = 17,
|
BackgroundColor = ZigbeeColor.Current.XMWhite,
|
};
|
public FrameLayout titleFrameLayout = new FrameLayout
|
{
|
Y = Application.GetRealHeight(92),
|
Height = Application.GetRealHeight(69),
|
};
|
|
/// <summary>
|
/// 标题返回布局
|
/// </summary>
|
public FrameLayout btnBackFrameLayout = new FrameLayout
|
{
|
X = Application.GetRealWidth(58),
|
Height = Application.GetRealHeight(58),
|
Width = Application.GetRealWidth(58),
|
};
|
|
/// <summary>
|
/// 标题返回按键
|
/// </summary>
|
public Button btnBack = new Button
|
{
|
Height = Application.GetRealHeight(51),
|
Width = Application.GetRealWidth(30),
|
UnSelectedImagePath = "DoorLock/Left.png",
|
};
|
|
/// <summary>
|
/// 标题下线
|
/// </summary>
|
public Button btnTitleLine = new Button
|
{
|
Y = Application.GetRealHeight(181),
|
Height = 1,
|
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMTitleLine,
|
};
|
|
/// <summary>
|
/// 弹窗取消按键
|
/// </summary>
|
public Button dialogBtnCancel = new Button
|
{
|
Width = Application.GetRealWidth(397),
|
Height = Application.GetRealHeight(127),
|
Y = Application.GetRealHeight(380),
|
TextID = R.MyInternationalizationString.Cancel,
|
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
|
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout,
|
};
|
|
|
#endregion
|
|
/// <summary>
|
/// 门锁顶部布局
|
/// </summary>
|
/// <param name="frameLayout"></param>
|
public void TopFrameLayout(FrameLayout frameLayout, string titleText)
|
{
|
this.AddChidren(topFrameLayout);
|
topFrameLayout.AddChidren(titleFrameLayout);
|
topFrameLayout.AddChidren(btnTitleLine);
|
var title = new Button()
|
{
|
TextAlignment = TextAlignment.CenterLeft,
|
Text = titleText,
|
TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
|
X = Application.GetRealWidth(161),
|
Width = Application.GetRealWidth(1080 - 161),
|
Height = Application.GetRealWidth(69),
|
TextSize = 17,
|
};
|
titleFrameLayout.AddChidren(title);
|
titleFrameLayout.AddChidren(btnBackFrameLayout);
|
btnBackFrameLayout.AddChidren(btnBack);
|
}
|
/// <summary>
|
/// 门锁中部布局
|
/// </summary>
|
/// <param name="frameLayout"></param>
|
public void MidFrameLayout(FrameLayout frameLayout)
|
{
|
//midFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCBackgroundColor;
|
midFrameLayout.Y = topFrameLayout.Bottom;
|
this.AddChidren(midFrameLayout);
|
}
|
|
/// <summary>
|
/// 门锁底部布局
|
/// </summary>
|
/// <param name="frameLayout"></param>
|
public void BottomFrameLayout(FrameLayout frameLayout)
|
{
|
var bottomFrameLayout1 = new FrameLayout()
|
{
|
Height = Application.GetRealHeight(806 - 50),
|
Y = Application.GetRealHeight(930 + 48),
|
BackgroundColor = ZigbeeColor.Current.XMWhite,
|
};
|
this.midFrameLayout.AddChidren(bottomFrameLayout1);
|
}
|
|
/// <summary>
|
/// 远程控制权限处理
|
/// </summary>
|
/// <param name="btnNext"></param>
|
public void RemotePasswordDialog(ZigBee.Device.DoorLock doorLock, Button btnNext)
|
{
|
var dialog = new Dialog { };
|
var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.BindDoorLock));
|
doorDialog.Show();
|
doorDialog.dialogMidFraFrameLayout.Width = Application.GetRealWidth(677);
|
doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(69);
|
doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(58);
|
doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(213);
|
doorDialog.dialogMidFraFrameLayout.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBorder;
|
|
var editInputPassword = new EditText()
|
{
|
Width = Application.GetRealWidth(672),
|
Height = Application.GetRealHeight(63),
|
X = Application.GetRealWidth(3),
|
Y = Application.GetRealHeight(3),
|
TextSize = 14,
|
PlaceholderTextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
|
PlaceholderText = Language.StringByID(R.MyInternationalizationString.InputUnlockPasswrd),
|
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
|
TextAlignment = TextAlignment.CenterLeft,
|
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
|
};
|
doorDialog.dialogMidFraFrameLayout.AddChidren(editInputPassword);
|
|
doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
|
{
|
btnNext.IsSelected = false;
|
dialog.Close();
|
};
|
DateTime oldTime = DateTime.MaxValue;
|
doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) =>
|
{
|
Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
|
if (DateTime.Now < ZigBee.Device.DoorLock.minValue)
|
{
|
CommonPage.Loading.Hide();
|
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AfterThirtySeconds), Direction = AMPopTipDirection.Down, CloseTime = 2 }.Show(editInputPassword);
|
return;
|
}
|
|
if (DateTime.Now >= oldTime && ZigBee.Device.DoorLock.RemoteUnlockCount == 0)
|
{
|
ZigBee.Device.DoorLock.RemoteUnlockCount = 3;
|
oldTime = DateTime.MaxValue;
|
}
|
|
if (ZigBee.Device.DoorLock.RemoteUnlockCount <= 0)
|
{
|
ZigBee.Device.DoorLock.minValue = DateTime.Now.AddSeconds(+20);
|
oldTime = ZigBee.Device.DoorLock.minValue;
|
CommonPage.Loading.Hide();
|
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AfterThirtySeconds), Direction = AMPopTipDirection.Down, CloseTime = 2 }.Show(editInputPassword);
|
return;
|
}
|
|
if (editInputPassword.Text.Length != 6)
|
{
|
ZigBee.Device.DoorLock.RemoteUnlockCount--;
|
string tipText = Language.StringByID(R.MyInternationalizationString.PasswordError) + "," + Language.StringByID(R.MyInternationalizationString.Surplus) + ZigBee.Device.DoorLock.RemoteUnlockCount.ToString() + Language.StringByID(R.MyInternationalizationString.Opportunity);
|
CommonPage.Loading.Hide();
|
new Tip() { MaxWidth = 150, Text = tipText, Direction = AMPopTipDirection.Down, CloseTime = 2 }.Show(editInputPassword);
|
return;
|
}
|
|
var verifyResult = await doorLock.VerifyPasswordAsync(editInputPassword.Text);
|
if (verifyResult != null && verifyResult.result == 0)
|
{
|
System.Threading.Thread.Sleep(500);
|
ZigBee.Device.DoorLock.RemoteUnlockPassword = editInputPassword.Text;
|
ZigBee.Device.DoorLock.minValue = DateTime.MinValue;
|
ZigBee.Device.DoorLock.RemoteUnlockCount = 3;
|
oldTime = DateTime.MaxValue;
|
CommonPage.Loading.Hide();
|
dialog.Close();
|
btnNext.IsSelected = true;
|
|
if (!UserCenterResourse.Option.DoorUnLockByRemote)
|
{
|
var dialog2 = new Dialog { };
|
var doorDialog2 = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog2, Language.StringByID(R.MyInternationalizationString.Tip));
|
doorDialog2.Show();
|
doorDialog2.dialogMidFraFrameLayout.Width = Application.GetRealWidth(674);
|
doorDialog2.dialogMidFraFrameLayout.Height = Application.GetRealHeight(115);
|
doorDialog2.dialogMidFraFrameLayout.X = Application.GetRealWidth(60);
|
doorDialog2.dialogMidFraFrameLayout.Y = Application.GetRealHeight(167);
|
doorDialog2.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.GoSetting);
|
var midText1 = new Button()
|
{
|
Width = Application.GetRealWidth(674),
|
Height = Application.GetRealHeight(115 / 2),
|
TextSize = 14,
|
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
|
TextAlignment = TextAlignment.Center,
|
TextID = R.MyInternationalizationString.RemoteUnlockBindSucessTip1,
|
};
|
doorDialog2.dialogMidFraFrameLayout.AddChidren(midText1);
|
var midText2 = new Button()
|
{
|
Width = Application.GetRealWidth(674),
|
Height = Application.GetRealHeight(115 / 2),
|
Y = Application.GetRealHeight(115 / 2),
|
TextSize = 14,
|
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
|
TextAlignment = TextAlignment.Center,
|
TextID = R.MyInternationalizationString.RemoteUnlockBindSucessTip2,
|
};
|
doorDialog2.dialogMidFraFrameLayout.AddChidren(midText2);
|
|
doorDialog2.dialogBtnCancel.MouseUpEventHandler += (sender2, e2) =>
|
{
|
dialog2.Close();
|
};
|
doorDialog2.dialogBtnConfirm.MouseUpEventHandler += async (sender2, e2) =>
|
{
|
var form = new UserCenter.UserMain.SecondAuthenticationForm();
|
form.AddForm();
|
dialog2.Close();
|
};
|
}
|
}
|
else
|
{
|
ZigBee.Device.DoorLock.RemoteUnlockCount--;
|
string tipText = Language.StringByID(R.MyInternationalizationString.OperrateFailed) + "," + Language.StringByID(R.MyInternationalizationString.Surplus) + ZigBee.Device.DoorLock.RemoteUnlockCount.ToString() + Language.StringByID(R.MyInternationalizationString.Opportunity);
|
CommonPage.Loading.Hide();
|
new Tip() { MaxWidth = 150, Text = tipText, Direction = AMPopTipDirection.Up, CloseTime = 2 }.Show((View)sender1);
|
return;
|
}
|
};
|
}
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="doorLock">门锁设备</param>
|
/// <param name="action">二次验证的结果成功后的通知</param>
|
/// <param name="progressButton">门锁开或关时进度显示</param>
|
/// <param name="btnDoorLockPic">门锁图片开/关显示</param>
|
public void RemoteUnlockRequest(ZigBee.Device.DoorLock doorLock, Action action, Button progressButton, Button btnDoorLockPic, Button btnStatus)
|
{
|
if (ZigBee.Device.DoorLock.RemoteUnlockPassword == "")
|
{
|
var dialog = new Dialog { };
|
var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.Tip));
|
doorDialog.Show();
|
doorDialog.dialogMidFraFrameLayout.Width = Application.GetRealWidth(415);
|
doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
|
doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(190);
|
doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
|
doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
|
doorDialog.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.BindRemoteUnlockDoorlock);
|
doorDialog.dialogMidFraFrameLayout.AddChidren(doorDialog.dialogMidText);
|
doorDialog.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.GoSetting);
|
doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
|
{
|
dialog.Close();
|
};
|
doorDialog.dialogBtnConfirm.MouseUpEventHandler += (sender1, e1) =>
|
{
|
var userDoorLockPage = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(doorLock);
|
Shared.Phone.UserView.HomePage.Instance.AddChidren(userDoorLockPage);
|
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
|
userDoorLockPage.Show();
|
dialog.Close();
|
};
|
return;
|
}
|
|
if (!UserCenterResourse.Option.DoorUnLockByRemote)
|
{
|
var dialog2 = new Dialog { };
|
var doorDialog2 = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog2, Language.StringByID(R.MyInternationalizationString.Tip));
|
doorDialog2.Show();
|
doorDialog2.dialogMidFraFrameLayout.Width = Application.GetRealWidth(674);
|
doorDialog2.dialogMidFraFrameLayout.Height = Application.GetRealHeight(115);
|
doorDialog2.dialogMidFraFrameLayout.X = Application.GetRealWidth(60);
|
doorDialog2.dialogMidFraFrameLayout.Y = Application.GetRealHeight(167);
|
doorDialog2.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.GoSetting);
|
var midText1 = new Button()
|
{
|
Width = Application.GetRealWidth(674),
|
Height = Application.GetRealHeight(115 / 2),
|
TextSize = 14,
|
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
|
TextAlignment = TextAlignment.Center,
|
TextID = R.MyInternationalizationString.GoPersonalCenter,
|
};
|
doorDialog2.dialogMidFraFrameLayout.AddChidren(midText1);
|
var midText2 = new Button()
|
{
|
Width = Application.GetRealWidth(674),
|
Height = Application.GetRealHeight(115 / 2),
|
Y = Application.GetRealHeight(115 / 2),
|
TextSize = 14,
|
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
|
TextAlignment = TextAlignment.Center,
|
TextID = R.MyInternationalizationString.OpenRemoteVerification,
|
};
|
doorDialog2.dialogMidFraFrameLayout.AddChidren(midText2);
|
|
doorDialog2.dialogBtnCancel.MouseUpEventHandler += (sender2, e2) =>
|
{
|
dialog2.Close();
|
};
|
doorDialog2.dialogBtnConfirm.MouseUpEventHandler += async (sender2, e2) =>
|
{
|
var form = new UserCenter.UserMain.SecondAuthenticationForm();
|
form.AddForm();
|
dialog2.Close();
|
};
|
return;
|
}
|
|
var dialog3 = new Dialog { };
|
var doorDialog3 = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog3, Language.StringByID(R.MyInternationalizationString.UnlockRequest));
|
doorDialog3.Show();
|
doorDialog3.dialogMidFraFrameLayout.Width = Application.GetRealWidth(415);
|
doorDialog3.dialogMidFraFrameLayout.Height = Application.GetRealHeight(58);
|
doorDialog3.dialogMidFraFrameLayout.X = Application.GetRealWidth(228);
|
doorDialog3.dialogMidFraFrameLayout.Y = Application.GetRealHeight(202);
|
doorDialog3.dialogMidFraFrameLayout.AddChidren(doorDialog3.dialogMidText);
|
doorDialog3.dialogMidText.Text = Language.StringByID(R.MyInternationalizationString.SureToOpenDoorLock);
|
doorDialog3.dialogMidFraFrameLayout.AddChidren(doorDialog3.dialogMidText);
|
doorDialog3.dialogBtnConfirm.Text = Language.StringByID(R.MyInternationalizationString.Confrim);
|
doorDialog3.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) =>
|
{
|
dialog3.Close();
|
};
|
doorDialog3.dialogBtnConfirm.MouseUpEventHandler += (sender1, e1) =>
|
{
|
action = async () =>
|
{
|
//远程开锁
|
progressButton.Y = Application.GetRealHeight(10);
|
btnDoorLockPic.IsSelected = true;
|
btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Opening);
|
Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
|
var remoteControlResult = await doorLock.RemoteControlAsync(ZigBee.Device.DoorLock.RemoteUnlockPassword);
|
|
if (remoteControlResult != null && remoteControlResult.responseData != null && remoteControlResult.responseData.status == 0)
|
{
|
btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Opening);
|
System.Threading.Thread.Sleep(2000);
|
btnStatus.Text = Language.StringByID(R.MyInternationalizationString.DoorLockOpen);
|
System.Threading.Thread.Sleep(3000);
|
progressButton.Y = Application.GetRealHeight(347);
|
btnDoorLockPic.IsSelected = false;
|
btnStatus.Text = Language.StringByID(R.MyInternationalizationString.CLose);
|
CommonPage.Loading.Hide();
|
}
|
else
|
{
|
progressButton.Y = Application.GetRealHeight(347);
|
btnDoorLockPic.IsSelected = false;
|
CommonPage.Loading.Hide();
|
}
|
};
|
HdlCheckLogic.Current.CheckSecondarySecurity(action);
|
dialog3.Close();
|
};
|
}
|
}
|
}
|