using System;
using System.Collections.Generic;
using Shared.Common;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
{
public class TimeSettignPage : DoorLockCommonLayout, ZigBee.Common.IStatus
{
#region 上报数据处理
///
/// 处理变化事件
///
///
///
public void DeviceInfoChange(CommonDevice tempDevice, string typeTag)
{
if (typeTag == "DeviceStatusReport" && tempDevice != null)
{
if (tempDevice != null)
{
if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint
&& tempDevice.DeviceAddr == doorLock.DeviceAddr)
{
if (tempDevice.DeviceStatusReport != null && tempDevice.DeviceStatusReport.AttriBute != null)
{
var dataReport = tempDevice.DeviceStatusReport.AttriBute[0];
if (tempDevice.DeviceStatusReport.CluterID == 10 && dataReport.AttributeId == 0)
{
CurentDoorLockTime = DoorLockCommonInfo.GetLocalTime(dataReport.AttriButeData);
Application.RunOnMainThread(() =>
{
waitGetDoorLockTime = DateTime.MaxValue;
textDisplayDate.Text = CurentDoorLockTime.Year + Language.StringByID(R.MyInternationalizationString.Year) + CurentDoorLockTime.Month + Language.StringByID(R.MyInternationalizationString.Month) + CurentDoorLockTime.Day + Language.StringByID(R.MyInternationalizationString.Day);
if (CurentDoorLockTime.Minute < 10)
{
textDisplayTime.Text = CurentDoorLockTime.Hour + ":" + "0" + CurentDoorLockTime.Minute;
}
else
{
textDisplayTime.Text = CurentDoorLockTime.Hour + ":" + CurentDoorLockTime.Minute;
}
CommonPage.Loading.Hide();
});
}
}
}
}
}
}
#endregion
#region 构造函数
///
/// 构造函数
///
///
public TimeSettignPage(ZigBee.Device.DoorLock doorLock, string timeType)
{
this.doorLock = doorLock;
setTimeType = timeType;
BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
//读门锁时区时间
DoorLockCommonInfo.GetDoorLockZoneTime();
ZigBee.Device.ZbGateway.StatusList.Add(this);
}
#endregion
#region UI内容
#region 变量申明
///
/// 当前门锁
///
ZigBee.Device.DoorLock doorLock;
///
/// 设置时间类型
///
string setTimeType = "";
///
/// 当前门锁时间
///
DateTime CurentDoorLockTime;
///
/// 显示日期的文本
///
Button textDisplayDate;
///
/// 显示时间的文本
///
Button textDisplayTime;
///
/// 本地变量“年”
///
int curYear = 0;
///
/// 本地变量“月”
///
int curMonth = 0;
///
/// 本地变量“日”
///
int curDay = 0;
///
/// 本地变量“时”
///
int curHour = 0;
///
/// 本地变量“分”
///
int curMin = 0;
///
/// 本地变量“秒”
///
int curSec = 0;
///
/// 设置时间的Action
///
public Action timeSetAction;
///
/// 等待获取门锁时的等待时间
///
DateTime waitGetDoorLockTime = DateTime.MaxValue;
#endregion
///
/// UI显示
///
public void Show()
{
if (setTimeType == "ValidTime")
{
this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.ValidTime));
}
else if (setTimeType == "InValidTime")
{
this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.InValidTime));
}
else
{
this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.DoorLockTime));
}
EventHandler eHandlerBack = (sender, e) =>
{
this.RemoveFromParent();
};
this.btnBack.MouseUpEventHandler += eHandlerBack;
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
this.MidFrameLayout(this);
MidFrameLayoutContent();
}
///
/// 中部布局
///
public void MidFrameLayoutContent()
{
if (setTimeType == "DoorLockTime")
{
ReadDoorlockTime();
}
var zoneFrameLayout = new FrameLayout()
{
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
this.midFrameLayout.AddChidren(zoneFrameLayout);
if (setTimeType == "DoorLockTime")
{
zoneFrameLayout.Height = Application.GetRealHeight(150) + 1;
AddDoorLocksTimeRow(zoneFrameLayout);
}
else
{
zoneFrameLayout.Height = Application.GetRealHeight(0);
}
var midTopFrameLayout = new FrameLayout()
{
Y = zoneFrameLayout.Bottom,
};
this.midFrameLayout.AddChidren(midTopFrameLayout);
var dtNow = DoorLockCommonInfo.DoorlockZoneTime;// DateTime.Now;
for (int i = 0; i < 2; i++)
{
#region MidTopFrameLayout UI
var rowLayout = new FrameLayout()
{
Height = Application.GetRealHeight(127 + 23),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
midTopFrameLayout.AddChidren(rowLayout);
var btnDateTime = new Button()
{
Width = Application.GetRealWidth(560),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(58),
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
TextAlignment = TextAlignment.CenterLeft,
TextSize = 12,
};
rowLayout.AddChidren(btnDateTime);
var textDisplayDateFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(333),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(620),
};
rowLayout.AddChidren(textDisplayDateFrameLayout);
var btnNextFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(116),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(956),
};
rowLayout.AddChidren(btnNextFrameLayout);
var btnNext = new Button()
{
Width = Application.GetRealWidth(58),
Height = Application.GetRealHeight(58),
UnSelectedImagePath = "Item/RightNext.png",
SelectedImagePath = "Item/Down.png",
};
btnNextFrameLayout.AddChidren(btnNext);
var btnLine = new FrameLayout()
{
Width = Application.GetRealWidth(965),
Height = 1,
X = Application.GetRealWidth(58),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
midTopFrameLayout.AddChidren(btnLine);
#endregion
#region 显示处理
if (i == 0)
{
btnDateTime.Y = textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = Application.GetRealHeight(50);
btnLine.Y = Application.GetRealHeight(23 + 127);
textDisplayDate = new Button()
{
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
TextAlignment = TextAlignment.CenterRight,
TextSize = 12,
Text = "_" + Language.StringByID(R.MyInternationalizationString.Year) + "_" + Language.StringByID(R.MyInternationalizationString.Month) + "_" + Language.StringByID(R.MyInternationalizationString.Day),
};
textDisplayDateFrameLayout.AddChidren(textDisplayDate);
if (setTimeType != "DoorLockTime")
{
btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Date);
if (setTimeType == "ValidTime")
{
textDisplayDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
}
else if (setTimeType == "InValidTime")
{
textDisplayDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
}
}
else
{
btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.CurrentDate);
}
}
else if (i == 1)
{
rowLayout.Y = 1 + Application.GetRealHeight(150);
btnDateTime.Y = textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = Application.GetRealHeight(50);
btnLine.Y = Application.GetRealHeight(40 + 127 + 127);
textDisplayTime = new Button()
{
TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
TextAlignment = TextAlignment.CenterRight,
TextSize = 12,
Text = "00:00",
};
textDisplayDateFrameLayout.AddChidren(textDisplayTime);
if (setTimeType != "DoorLockTime")
{
btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Time);
if (setTimeType == "ValidTime")
{
if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute < 10)
{
textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour + ":" + "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
}
else
{
textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour + ":" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
}
}
else if (setTimeType == "InValidTime")
{
if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute < 10)
{
textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour + ":" + "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
}
else
{
textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour + ":" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
}
}
}
else
{
btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.CurrentTime);
}
btnLine.Visible = false;
}
#endregion
#region 事件处理
int curIndex = i;
EventHandler hander = (sender, e) =>
{
ClickHandle(curIndex, dtNow);
};
rowLayout.MouseDownEventHandler += hander;
btnDateTime.MouseDownEventHandler += hander;
textDisplayDateFrameLayout.MouseDownEventHandler += hander;
btnNextFrameLayout.MouseDownEventHandler += hander;
btnNext.MouseDownEventHandler += hander;
if (curIndex == 0)
{
textDisplayDate.MouseDownEventHandler += hander;
}
else
{
textDisplayTime.MouseDownEventHandler += hander;
}
#endregion
}
btnCancel.MouseUpEventHandler += (sender1, e1) =>
{
this.shadowRadiusFrameLayout.RemoveFromParent();
};
btnFinish.MouseUpEventHandler += (sender1, e1) =>
{
if (setTimeType == "DoorLockTime")
{
DoorLockTimeFinishHandle();
}
};
this.shadowRadiusFrameLayout.MouseUpEventHandler += (sender1, e1) =>
{
this.shadowRadiusFrameLayout.RemoveFromParent();
};
if (setTimeType == "DoorLockTime")
{
if (CurentDoorLockTime != null && CurentDoorLockTime.Year != 1)
{
waitGetDoorLockTime = DateTime.MaxValue;
CommonPage.Loading.Hide();
}
}
}
#endregion
#region 时区
///
/// 添加【门锁时间】行(门锁专用)
///
///
private void AddDoorLocksTimeRow(FrameLayout zoneFrameLayout)
{
//门锁时间
var rowLayout = new FrameLayout()
{
Height = Application.GetRealHeight(150),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
zoneFrameLayout.AddChidren(rowLayout);
//当前时区
var btnCurZone = new Button()
{
Width = Application.GetRealWidth(560),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(58),
TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
TextAlignment = TextAlignment.CenterLeft,
TextSize = 12,
Y = Application.GetRealHeight(46),
Text = Language.StringByID(R.MyInternationalizationString.CurZone),
};
rowLayout.AddChidren(btnCurZone);
//哪个时区
var textZone = new Button()
{
Width = Application.GetRealWidth(333),
Height = Application.GetRealHeight(58),
X = Application.GetRealWidth(689),
Y = Application.GetRealHeight(46),
TextAlignment = TextAlignment.CenterRight,
TextColor = Shared.Common.ZigbeeColor.Current.XMGray4,
TextSize = 14,
};
rowLayout.AddChidren(textZone);
textZone.Text = zoneData();
textZone.MouseDownEventHandler += (sender, e) =>
{
//1、入网后先获取门锁在网关中的时区时间
var curDateTime = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockZoneTime();
//2、将时间设置到网关中
var dateTime = new DateTime(curDateTime.Year, curDateTime.Month, curDateTime.Day, curDateTime.Hour, curDateTime.Minute, curDateTime.Second);
var setTimestamp = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(dateTime);
doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp));
};
var btnLine = new FrameLayout()
{
Width = Application.GetRealWidth(965),
Height = 1,
X = Application.GetRealWidth(58),
Y = Application.GetRealHeight(150),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
zoneFrameLayout.AddChidren(btnLine);
}
///
/// 时区数据
///
///
private string zoneData()
{
string zoneText = "";
int num = 0;
var gwZone = DoorLockCommonInfo.CaculateTimeZone(Common.Config.Instance.Home.Longitude);
if (int.Parse(gwZone) != 0)
{
num = int.Parse(gwZone.Substring(1));
}
if (gwZone.Contains('+'))
{
if (num == 0)
{
zoneText = Language.StringByID(R.MyInternationalizationString.CurZoneText0);
}
else
{
zoneText = EastZoneList(num - 1);
}
}
else if (gwZone.Contains('-'))
{
zoneText = WestZoneList(num - 1);
}
else
{
zoneText = Language.StringByID(R.MyInternationalizationString.CurZoneText0);
}
return zoneText;
}
///
/// 转换东区
///
///
///
private string EastZoneList(int x)
{
var numString = new string[]
{
Language.StringByID(R.MyInternationalizationString.CurZoneText1),
Language.StringByID(R.MyInternationalizationString.CurZoneText2),
Language.StringByID(R.MyInternationalizationString.CurZoneText3),
Language.StringByID(R.MyInternationalizationString.CurZoneText4),
Language.StringByID(R.MyInternationalizationString.CurZoneText5),
Language.StringByID(R.MyInternationalizationString.CurZoneText6),
Language.StringByID(R.MyInternationalizationString.CurZoneText7),
Language.StringByID(R.MyInternationalizationString.CurZoneText8),
Language.StringByID(R.MyInternationalizationString.CurZoneText9),
Language.StringByID(R.MyInternationalizationString.CurZoneText10),
Language.StringByID(R.MyInternationalizationString.CurZoneText11),
Language.StringByID(R.MyInternationalizationString.CurZoneText12)
};
var strChnNamesList = new List(numString);
return strChnNamesList[x];
}
///
/// 转换西区
///
///
///
private string WestZoneList(int x)
{
var numString = new string[]
{
Language.StringByID(R.MyInternationalizationString.WestZoneText1),
Language.StringByID(R.MyInternationalizationString.WestZoneText2),
Language.StringByID(R.MyInternationalizationString.WestZoneText3),
Language.StringByID(R.MyInternationalizationString.WestZoneText4),
Language.StringByID(R.MyInternationalizationString.WestZoneText5),
Language.StringByID(R.MyInternationalizationString.WestZoneText6),
Language.StringByID(R.MyInternationalizationString.WestZoneText7),
Language.StringByID(R.MyInternationalizationString.WestZoneText8),
Language.StringByID(R.MyInternationalizationString.WestZoneText9),
Language.StringByID(R.MyInternationalizationString.WestZoneText10),
Language.StringByID(R.MyInternationalizationString.WestZoneText11),
Language.StringByID(R.MyInternationalizationString.WestZoneText12)
};
var strChnNamesList = new List(numString);
return strChnNamesList[x];
}
///
/// 获取时区
/// currentLon:"+"为东区,“-”为西区
///
///
///
public static String CaculateTimeZone(double currentLon)
{
int timeZone;
int shangValue = (int)(currentLon / 15);
double yushuValue = Math.Abs(currentLon % 15);
if (yushuValue <= 7.5)
{
timeZone = shangValue;
}
else
{
timeZone = shangValue + (currentLon > 0 ? 1 : -1);
}
return timeZone >= 0 ? "+" + Math.Abs(timeZone) : "-" + Math.Abs(timeZone);
}
///
/// 获取所在时区的时间
///
///
///
public static int GetLocalTime(int unix)
{
var gwZone = CaculateTimeZone(Common.Config.Instance.Home.Longitude);
var data = unix + 8 * 3600;
return data;
}
#endregion
#region 门锁时间
///
/// 读取门锁时间
///
private void ReadDoorlockTime()
{
CommonPage.Loading.Start("");
// 只有重新启动时会慢,然后其他时刻都是有值的
new System.Threading.Thread(() =>
{
while (this.Parent != null)
{
if (DateTime.Now > waitGetDoorLockTime)
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
CommonPage.Loading.Hide();
});
}
//读门锁时间
//等待10秒,没有收到提示超时退出
waitGetDoorLockTime = DateTime.Now.AddSeconds(+5);
doorLock.ReadAttri(ZigBee.Device.Cluster_ID.DoorLock, ZigBee.Device.AttriButeId.DoorLock);
System.Threading.Thread.Sleep(5 * 1000);
}
})
{ IsBackground = true }.Start();
}
///
/// 门锁时间确认按钮处理
///
private void DoorLockTimeFinishHandle()
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
var curDateTime = new DateTime(curYear, curMonth, curDay, curHour, curMin, curSec);
var setTimestamp = DoorLockCommonInfo.GetUnixTimeStamp(curDateTime);
Application.RunOnMainThread(() =>
{
CommonPage.Loading.Start("");
});
var rectifyResult = await doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp));
if (rectifyResult != null && rectifyResult.setWritableValueResponData != null)
{
Application.RunOnMainThread(() =>
{
if (rectifyResult.setWritableValueResponData.Status == 0)
{
doorLock.ReadAttri(ZigBee.Device.Cluster_ID.DoorLock, ZigBee.Device.AttriButeId.DoorLock);
System.Threading.Thread.Sleep(1000);
this.shadowRadiusFrameLayout.RemoveFromParent();
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RectifyFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish);
}
});
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish);
});
}
}
catch { }
finally
{
Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); });
}
});
}
#endregion
#region 公共事件处理
///
/// 事件处理
///
private void ClickHandle(int curIndex, DateTime dtNow)
{
this.midFrameLayout.AddChidren(this.shadowRadiusFrameLayout);
this.bottomRadiusFrameLayout.RemoveAll();
this.BottomRadiusFrameLayout(this);
var mUIPickerView = new UIPickerView()
{
X = Application.GetRealWidth(0),
Height = Application.GetRealHeight(440),
};
this.bottomRadiusFrameLayout.AddChidren(mUIPickerView);
if (curIndex == 0)
{
//日期
if (setTimeType != "DoorLockTime")
{
this.btnBottomTitle.TextID = R.MyInternationalizationString.Date;
}
else
{
this.btnBottomTitle.TextID = R.MyInternationalizationString.CurrentDate;
}
mUIPickerView.Y = Application.GetRealWidth(245);
var mList1 = new List();
var mList2 = new List();
var mList3 = new List();
var oldMonth = dtNow.Month;
int year = dtNow.Year + 1;
int days = DateTime.DaysInMonth(dtNow.Year, dtNow.Month);
for (int y = dtNow.Year - 9; y < dtNow.Year + 1; y++)
{
mList1.Add(y.ToString());
}
for (int m = 1; m < 13; m++)
{
if (Language.CurrentLanguage == "Chinese")
{
mList2.Add(m.ToString() + "月");
}
else
{
mList2.Add(m.ToString());
}
}
for (int d = 1; d < days + 1; d++)
{
if (Language.CurrentLanguage == "Chinese")
{
mList3.Add(d.ToString() + "日");
}
else
{
mList3.Add(d.ToString());
}
}
if (setTimeType != "DoorLockTime")
{
mUIPickerView.setNPicker(mList2, mList3, null);
mUIPickerView.setCurrentItems(dtNow.Month - 1, dtNow.Day - 1, 0);
curMonth = dtNow.Month;
curDay = dtNow.Day;
if (setTimeType == "ValidTime")
{
DoorLockCommonInfo.ValidDateYear = dtNow.Year;
DoorLockCommonInfo.ValidDateMonth = curMonth;
DoorLockCommonInfo.ValidDateDay = curDay;
}
else
{
DoorLockCommonInfo.InValidDateYear = dtNow.Year;
DoorLockCommonInfo.InValidDateMonth = curMonth;
DoorLockCommonInfo.InValidDateDay = curDay;
}
var btnOk = new Button
{
X = Application.GetRealWidth(919),
Y = Application.GetRealHeight(40),
Height = Application.GetRealHeight(58),
Width = Application.GetRealWidth(101),
Text = Language.StringByID(R.MyInternationalizationString.Complete),
TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
TextSize = 14,
};
this.bottomRadiusFrameLayout.AddChidren(btnOk);
btnOk.MouseUpEventHandler += (sender1, e1) =>
{
if (setTimeType == "ValidTime")
{
string nowValue1 = DateTime.Now.ToString("yyyyMMdd");
string nowValue2 = dtNow.Year.ToString() + curMonth.ToString().PadLeft(2, '0') + curDay.ToString().PadLeft(2, '0');
if (nowValue1.CompareTo(nowValue2) == 1)
{
var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoLessThanCurrentTime);
this.ShowMassage(ShowMsgType.Error, mess);
return;
}
//检查时间
var flage = this.CheckValidTime(dtNow.Year, curMonth, curDay,
DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
if (flage == false)
{
var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoMoreThanInValidTime);
this.ShowMassage(ShowMsgType.Error, mess);
return;
}
DoorLockCommonInfo.ValidDateYear = dtNow.Year;
DoorLockCommonInfo.ValidDateMonth = curMonth;
DoorLockCommonInfo.ValidDateDay = curDay;
}
else
{
//检查时间
var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
dtNow.Year, curMonth, curDay,
DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
if (flage == false)
{
var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime);
this.ShowMassage(ShowMsgType.Error, mess);
return;
}
DoorLockCommonInfo.InValidDateYear = dtNow.Year;
DoorLockCommonInfo.InValidDateMonth = curMonth;
DoorLockCommonInfo.InValidDateDay = curDay;
}
if (timeSetAction != null)
{
timeSetAction();
}
this.shadowRadiusFrameLayout.RemoveFromParent();
MidFrameLayoutContent();
};
}
else
{
mUIPickerView.setNPicker(mList1, mList2, mList3);
mUIPickerView.setCurrentItems(9, dtNow.Month - 1, dtNow.Day - 1);
curYear = dtNow.Year;
curMonth = dtNow.Month;
curDay = dtNow.Day;
if (CurentDoorLockTime != null)
{
curHour = CurentDoorLockTime.Hour;
curMin = CurentDoorLockTime.Minute;
curSec = CurentDoorLockTime.Second;
}
else
{
curHour = dtNow.Hour;
curMin = dtNow.Minute;
curSec = dtNow.Second;
}
}
Action dAction = () =>
{
if (curMonth != oldMonth)
{
oldMonth = curMonth;
days = DateTime.DaysInMonth(curYear, curMonth);
mList3.Clear();
for (int d = 1; d < days + 1; d++)
{
if (Language.CurrentLanguage == "Chinese")
{
mList3.Add(d.ToString() + "日");
}
else
{
mList3.Add(d.ToString());
}
}
if (setTimeType != "DoorLockTime")
{
mUIPickerView.setNPicker(mList2, mList3, null);
mUIPickerView.setCurrentItems(curMonth - 1, curDay - 1, 0);
}
else
{
mUIPickerView.setNPicker(mList1, mList2, mList3);
mUIPickerView.setCurrentItems(9, curMonth - 1, curDay - 1);
}
}
};
mUIPickerView.OnSelectChangeEvent += (y, m, d) =>
{
if (setTimeType != "DoorLockTime")
{
curYear = dtNow.Year;
curMonth = y + 1;
curDay = m + 1;
}
else
{
switch (y)
{
case 0:
curYear = dtNow.Year - 9;
break;
case 1:
curYear = dtNow.Year - 8;
break;
case 2:
curYear = dtNow.Year - 7;
break;
case 3:
curYear = dtNow.Year - 6;
break;
case 4:
curYear = dtNow.Year - 5;
break;
case 5:
curYear = dtNow.Year - 4;
break;
case 6:
curYear = dtNow.Year - 3;
break;
case 7:
curYear = dtNow.Year - 2;
break;
case 8:
curYear = dtNow.Year - 1;
break;
default:
curYear = dtNow.Year;
break;
}
curMonth = m + 1;
curDay = d + 1;
}
dAction();
};
}
if (curIndex == 1)
{
//时间
if (setTimeType != "DoorLockTime")
{
this.btnBottomTitle.TextID = R.MyInternationalizationString.Time;
}
else
{
this.btnBottomTitle.TextID = R.MyInternationalizationString.CurrentTime;
}
mUIPickerView.Y = Application.GetRealWidth(245);
var mList1 = new List();
var mList2 = new List();
for (int h = 0; h < 24; h++)
{
if (h < 10)
{
mList1.Add("0" + h.ToString());
}
else
{
mList1.Add(h.ToString());
}
}
for (int m = 0; m < 60; m++)
{
if (m < 10)
{
mList2.Add("0" + m.ToString());
}
else
{
mList2.Add(m.ToString());
}
}
mUIPickerView.setNPicker(mList1, mList2, null);
mUIPickerView.setCurrentItems(dtNow.Hour, dtNow.Minute, 0);
if (CurentDoorLockTime != null)
{
curYear = CurentDoorLockTime.Year;
curMonth = CurentDoorLockTime.Month;
curDay = CurentDoorLockTime.Day;
}
else
{
curYear = dtNow.Year;
curMonth = dtNow.Month;
curDay = dtNow.Day;
}
curHour = dtNow.Hour;
curMin = dtNow.Minute;
curSec = dtNow.Second;
mUIPickerView.OnSelectChangeEvent += (h, m, s) =>
{
curHour = h;
curMin = m;
curSec = dtNow.Second;
};
if (setTimeType == "ValidTime")
{
DoorLockCommonInfo.ValidDateHour = curHour;
DoorLockCommonInfo.ValidDateMinute = curMin;
DoorLockCommonInfo.ValidDateSecond = curSec;
}
else
{
DoorLockCommonInfo.InValidDateHour = curHour;
DoorLockCommonInfo.InValidDateMinute = curMin;
DoorLockCommonInfo.InValidDateSecond = curSec;
}
if (setTimeType != "DoorLockTime")
{
var btnOk = new Button
{
X = Application.GetRealWidth(919),
Y = Application.GetRealHeight(40),
Height = Application.GetRealHeight(58),
Width = Application.GetRealWidth(101),
Text = Language.StringByID(R.MyInternationalizationString.Complete),
TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
TextSize = 14,
};
this.bottomRadiusFrameLayout.AddChidren(btnOk);
btnOk.MouseUpEventHandler += (sender1, e1) =>
{
if (setTimeType == "ValidTime")
{
var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
curHour, curMin, curSec,
DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
if (flage == false)
{
var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoMoreThanInValidTime);
this.ShowMassage(ShowMsgType.Error, mess);
return;
}
DoorLockCommonInfo.ValidDateHour = curHour;
DoorLockCommonInfo.ValidDateMinute = curMin;
DoorLockCommonInfo.ValidDateSecond = curSec;
}
else
{
//检查时间
var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
curHour, curMin, curSec);
if (flage == false)
{
var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime);
this.ShowMassage(ShowMsgType.Error, mess);
return;
}
DoorLockCommonInfo.InValidDateHour = curHour;
DoorLockCommonInfo.InValidDateMinute = curMin;
DoorLockCommonInfo.InValidDateSecond = curSec;
}
if (timeSetAction != null)
{
timeSetAction();
}
this.shadowRadiusFrameLayout.RemoveFromParent();
MidFrameLayoutContent();
};
}
}
}
///
/// 检查时间
///
///
private bool CheckValidTime(int validYear, int validMoth, int validDay, int validHour, int validMinute, int validSecond
, int inValidYear, int inValidMoth, int inValidDay, int inValidHour, int inValidMinute, int inValidSecond)
{
//生效时间
string nowValue1 = validYear.ToString()
+ validMoth.ToString().PadLeft(2, '0')
+ validDay.ToString().PadLeft(2, '0')
+ validHour.ToString().PadLeft(2, '0')
+ validMinute.ToString().PadLeft(2, '0')
+ validSecond.ToString().PadLeft(2, '0');
//失效时间
string nowValue2 = inValidYear.ToString()
+ inValidMoth.ToString().PadLeft(2, '0')
+ inValidDay.ToString().PadLeft(2, '0')
+ inValidHour.ToString().PadLeft(2, '0')
+ inValidMinute.ToString().PadLeft(2, '0')
+ inValidSecond.ToString().PadLeft(2, '0');
var aaaa = nowValue1.CompareTo(nowValue2);
if (nowValue1.CompareTo(nowValue2) == 1)
{
return false;
}
return true;
}
#endregion
#region 移除方法
///
/// 重写移除方法
///
public override void RemoveFromParent()
{
ZbGateway.StatusList.Remove(this);
base.RemoveFromParent();
}
#endregion
}
}