| | |
| | | /// <summary> |
| | | /// 时间戳 |
| | | /// </summary> |
| | | public int timeLong = 0; |
| | | public long timeLong = 0; |
| | | public async void Show() |
| | | { |
| | | |
| | |
| | | { |
| | | //进来更新一次值 |
| | | logicId = logic.LogicId;
|
| | | timeValue = int.Parse(logic.Conditions[0]["DoorLockOpenDelayTime"]); |
| | | if (UserCenter.UserCenterResourse.HideOption.DoorLockNomallyOpenTimeMode == 1)
|
| | | {
|
| | | //强制变更时间模式为分钟
|
| | | timeValue = timeValue / 60;
|
| | | } |
| | | |
| | | timeLong = int.Parse(logic.Conditions[0]["TriggerTime"]); |
| | | timeValue = int.Parse(logic.Conditions[0]["DoorLockOpenDelayTime"]) / 3600; |
| | | timeLong = long.Parse(logic.Conditions[0]["TriggerTime"]); |
| | | |
| | | } |
| | | catch { } |
| | |
| | | }; |
| | | middle.AddChidren(fLayout); |
| | | #endregion |
| | | |
| | | #region 常开自动化 |
| | | ///第三块第一级父控件 |
| | | listLogicFl = new FrameLayout |
| | |
| | | } |
| | | }; |
| | | |
| | | ///显示失效设置时间文本控件 |
| | | var timeTextBtn = new Button |
| | | { |
| | | Y = Application.GetRealHeight(127 + 69), |
| | | X = Application.GetRealWidth(86),//125 |
| | | Width = Application.GetRealWidth(907),//634 + 200 |
| | | Height = Application.GetRealHeight(60), |
| | | TextSize = 15, |
| | | TextColor = ZigbeeColor.Current.LogicTextBlackColor, |
| | | }; |
| | | |
| | | if (logicId != 0) |
| | | { |
| | | ///显示失效设置时间文本控件 |
| | | var timeTextBtn = new Button |
| | | { |
| | | Y = Application.GetRealHeight(127 + 69), |
| | | X = Application.GetRealWidth(80),//125 |
| | | Width = Application.GetRealWidth(907+12),//634 + 200 |
| | | Height = Application.GetRealHeight(60), |
| | | TextSize = 15, |
| | | TextColor = ZigbeeColor.Current.LogicTextBlackColor, |
| | | }; |
| | | openModeFl.AddChidren(timeTextBtn); |
| | | |
| | | string text1 = Language.StringByID(MyInternationalizationString.timeSensitive); |
| | | string text2 = Language.StringByID(MyInternationalizationString.yearSone); |
| | | string text3 = Language.StringByID(MyInternationalizationString.monthSone); |
| | | string text4 = Language.StringByID(MyInternationalizationString.numberSone); |
| | | string text5 = Language.StringByID(MyInternationalizationString.hour1); |
| | | string text6 = Language.StringByID(MyInternationalizationString.executeSone); |
| | | string year = ""; |
| | | string month = ""; |
| | | int days = 0; |
| | | int hour = 0; |
| | | int minute = 0; |
| | | |
| | | if (_if) |
| | | { |
| | | |
| | | ///第一次进来读取网关时间; |
| | | var datetime = GetLocalTime(timeLong); |
| | | ///有时效性常开才显示时间条件文本 |
| | | var y = datetime.Year.ToString();//那一年 |
| | | var m = datetime.Month.ToString();//那一月 |
| | | var d = datetime.ToString("dd");//那一天 |
| | | var h = int.Parse(datetime.ToString("HH"));//小时 |
| | | int minute = datetime.Minute;//分钟 |
| | | timeTextBtn.Text = text1 + y + text2 + m + text3 + d + text4 + h + text5 + minute.ToString() + text6; |
| | | |
| | | year = datetime.Year.ToString();//那一年 |
| | | month = datetime.Month.ToString();//那一月 |
| | | days = int.Parse(datetime.ToString("dd"));//那一天 |
| | | hour = int.Parse(datetime.ToString("HH"));//小时 |
| | | minute = datetime.Minute;//分钟 |
| | | } |
| | | else |
| | | { |
| | | |
| | | ///有时效性常开才显示时间条件文本 |
| | | var y = DateTime.Now.Year.ToString();//那一年 |
| | | var m = DateTime.Now.Month.ToString();//那一月 |
| | | |
| | | ///在当前界面编辑显示系统时间(不能每一次编辑都去网关拿数据) |
| | | year = DateTime.Now.Year.ToString();//那一年 |
| | | month = DateTime.Now.Month.ToString();//那一月 |
| | | var d = DateTime.Now.ToString("dd");//那一天 |
| | | var h = int.Parse(DateTime.Now.ToString("HH"));//小时 |
| | | int dayInt = (h + timeValue) / 24;//算出几天后执行 |
| | | int hour = (h + timeValue) % 24;//算出几天后那个时间执行 |
| | | int days = int.Parse(d) + dayInt; |
| | | int minute = DateTime.Now.Minute;//分钟 |
| | | timeTextBtn.Text = text1 + y + text2 + m + text3 + days.ToString() + text4 + hour.ToString() + text5 + minute.ToString() + text6; |
| | | int dayInt = (h + timeValue) / 24;//设置时间+当前系统时间是否超出24小时 |
| | | hour = (h + timeValue) % 24;//设置时间+当前系统时间是否超出24小时剩下多少小时 |
| | | days = int.Parse(d) + dayInt;//当前系统天数+执行后天数 |
| | | minute = DateTime.Now.Minute;//分钟 |
| | | } |
| | | timeTextBtn.Text = text1 + year + text2 + month + text3 + days.ToString() + text4 + hour.ToString() + text5 + minute.ToString() + text6; |
| | | } |
| | | |
| | | |
| | |
| | | }; |
| | | modeFl.AddChidren(clickBtn); |
| | | clickBtn.MouseUpEventHandler += (sender, e) => |
| | | { |
| | | { |
| | | |
| | | LogicView.TipView.ShowConfrimTip(() => |
| | | {///再次确认 |
| | | LogicView.TipView.ShowInputTip(true, async (str) => |
| | | {///确认发送命令 |
| | | CommonPage.Loading.Start(); |
| | | try |
| | | { |
| | | ///xm |
| | | var result = await UserCenter.DoorLock.DoorLockCommonInfo.SetNormallyOpenModeFuncAsync(Send.CurrentDoorLock); |
| | | if (!result) |
| | | { |
| | | LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed)); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | ///因为有常开模式下才可以创建失效逻辑; |
| | | SkipView.GetLogicAll(Send.CurrentDoorLock);//删除之前所有失效逻辑 |
| | | var addResult = await SkipView.LockAddModifyLogic(int.Parse(str), Send.CurrentDoorLock);//添加一条失效逻辑 |
| | | if (addResult == 0) |
| | | { |
| | | ///可欣说如果常开模式开,创建自动化失败,那么将要发一条常开模式关闭命令; |
| | | UserCenter.DoorLock.DoorLockCommonInfo.DelNormallyOpenMode(Send.CurrentDoorLock); |
| | | ///提示失败 |
| | | LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.addFailed)); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | logicId = addResult; |
| | | timeValue = int.Parse(str); |
| | | Send.CurrentDoorLock.IsDoorLockNormallyMode = true; |
| | | _if = false; |
| | | ModeView();
|
| | | ///添加APP开启常开模式的历史记录
|
| | | UserCenter.HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(Send.CurrentDoorLock, 9001, string.Empty); |
| | | } |
| | | LogicView.TipView.ShowConfrimTip(() => |
| | | {///再次确认 |
| | | LogicView.TipView.ShowInputTip(true, async (str) => |
| | | {///确认发送命令 |
| | | CommonPage.Loading.Start(); |
| | | try |
| | | { |
| | | ///xm |
| | | var result = await UserCenter.DoorLock.DoorLockCommonInfo.SetNormallyOpenModeFuncAsync(Send.CurrentDoorLock); |
| | | if (!result) |
| | | { |
| | | LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed)); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | ///因为有常开模式下才可以创建失效逻辑; |
| | | SkipView.GetLogicAll(Send.CurrentDoorLock);//删除之前所有失效逻辑 |
| | | var addResult = await SkipView.LockAddModifyLogic(int.Parse(str), Send.CurrentDoorLock);//添加一条失效逻辑 |
| | | if (addResult == 0) |
| | | { |
| | | ///可欣说如果常开模式开,创建自动化失败,那么将要发一条常开模式关闭命令; |
| | | UserCenter.DoorLock.DoorLockCommonInfo.DelNormallyOpenMode(Send.CurrentDoorLock); |
| | | ///提示失败 |
| | | LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.addFailed)); |
| | | return; |
| | | } |
| | | else |
| | | { |
| | | logicId = addResult; |
| | | timeValue = int.Parse(str); |
| | | Send.CurrentDoorLock.IsDoorLockNormallyMode = true; |
| | | _if = false; |
| | | ModeView();
|
| | | ///添加APP开启常开模式的历史记录
|
| | | UserCenter.HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(Send.CurrentDoorLock, 9001, string.Empty); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | catch |
| | | { |
| | | } |
| | | } |
| | | catch |
| | | { |
| | | |
| | | } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | CommonPage.Loading.Hide(); |
| | | } |
| | | finally |
| | | { |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | CommonPage.Loading.Hide(); |
| | | |
| | | }); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | }); |
| | | }); |
| | | |
| | | }; |
| | | }; |
| | | } |
| | | listLogicFl.Y = fLayout.Bottom; |
| | | listLogicFl.X = Application.GetRealWidth(58); |
| | |
| | | listLogicFl.Width = Application.GetRealWidth(1022); |
| | | listLogicFl.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor; |
| | | |
| | | verticalRefresh.Y = Application.GetRealHeight(187); |
| | | verticalRefresh.Y = Application.GetRealHeight(187); |
| | | verticalRefresh.X = Application.GetRealWidth(46); |
| | | verticalRefresh.Height = listLogicFl.Height - Application.GetRealHeight(187);//动态改动上下滑动view高度; |
| | | verticalRefresh.Width = listLogicFl.Width - Application.GetRealWidth(46); |
| | |
| | | /// <param name="yes"></param> |
| | | private async void Read(bool yes) |
| | | { |
| | | if (yes) |
| | | { |
| | | CommonPage.Loading.Start(); |
| | | } |
| | | //if (yes) |
| | | // { |
| | | CommonPage.Loading.Start(); |
| | | // } |
| | | try |
| | | { |
| | | if (Common.Logic.SoneLogicList.Count == 0) |
| | |
| | | { |
| | | var dd = e.Message; |
| | | } |
| | | //自动化 |
| | | RefreshView(); |
| | | if (yes) |
| | | finally |
| | | { |
| | | CommonPage.Loading.Hide(); |
| | | Application.RunOnMainThread(() => |
| | | { |
| | | // if (yes) |
| | | // { |
| | | CommonPage.Loading.Hide(); |
| | | // } |
| | | //自动化 |
| | | RefreshView(); |
| | | |
| | | }); |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 记录左滑状态 |
| | |
| | | { |
| | | if (!SkipView.ExistLogic(logic, Send.CurrentDoorLock)) |
| | | { |
| | | ///不是该门锁自动化就不显示出来; |
| | | continue; |
| | | } |
| | | #region 自动化布局View |
| | |
| | | };
|
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 将UNIX时间戳转换成系统时间(精确到秒) |
| | | /// 时间戳转换成时间格式 |
| | | /// </summary> |
| | | /// <param name="unixTimeStamp">时间戳</param> |
| | | /// <returns></returns> |
| | | public DateTime GetLocalTime(int unixTimeStamp) |
| | | public DateTime GetLocalTime(long unixTimeStamp) |
| | | { |
| | | DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); |
| | | long lTime = long.Parse(unixTimeStamp + "0000000"); |
| | | TimeSpan toNow = new TimeSpan(lTime); |
| | | DateTime dtResult = dtStart.Add(toNow); |
| | | return dtResult; |
| | | //DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); |
| | | //long lTime = long.Parse(unixTimeStamp + "0000000"); |
| | | //TimeSpan toNow = new TimeSpan(lTime); |
| | | //DateTime dtResult = dtStart.Add(toNow); |
| | | //return dtResult; |
| | | |
| | | System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 |
| | | return startTime.AddMilliseconds(unixTimeStamp); |
| | | |
| | | } |
| | | } |
| | | } |