From 98ceb6bd2021f9ff136cda27eef28676dd7b5d92 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 21 五月 2020 13:24:02 +0800 Subject: [PATCH] 最后的版本 --- ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs | 213 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 149 insertions(+), 64 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs b/ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs index 4c51329..ca7438c 100755 --- a/ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs +++ b/ZigbeeApp/Shared/Phone/Device/Logic/SoneLogicList.cs @@ -16,7 +16,7 @@ } /// 缁欏緪姊呭埛鏂扮晫闈㈢敤鐨� - public Action<bool> action; + public Action<bool> action; ///绗簩鍧楃涓�绾х埗鎺т欢 FrameLayout fLayout = new FrameLayout(); ///绗笁鍧楃涓�绾х埗鎺т欢 @@ -31,9 +31,17 @@ /// 璁板綍閫変腑鏃堕棿 /// </summary> public int timeValue = 0; + /// <summary> + /// 鏍囪鏄剧ず鎵ц鏃ユ湡(鐢ㄧ綉鍏崇殑锛岃繕鏄敤绯荤粺鐨勬椂闂�) + /// </summary> + public bool _if = false; + /// <summary> + /// 鏃堕棿鎴� + /// </summary> + public long timeLong = 0; public async void Show() { - + #region 鐣岄潰鐨勫竷灞�浠g爜 UserView.HomePage.Instance.ScrollEnabled = false;//閿佷綇宸︽粦 TopView view = new TopView(); @@ -60,18 +68,21 @@ this.AddChidren(middle); #endregion //鏄父寮�妯″紡鍐嶅幓璇诲彇 + if (Send.CurrentDoorLock.IsDoorLockNormallyMode) { //杩涙潵鏇存柊涓�娆� //鏌ユ壘鏄惁瀛樺湪鏃舵晥鎬ц嚜鍔ㄥ寲锛涙湁鐨勮瘽灏辫繑鍥炶嚜鍔ㄥ寲瀵硅薄; - var logic = await SkipView.GetLogicIfon(); + var logic = await SkipView.GetLogicIfon(Send.CurrentDoorLock); if (logic != null) { try { //杩涙潵鏇存柊涓�娆″�� - logicId = logic.LogicId; - timeValue = int.Parse(logic.Conditions[0]["DoorLockOpenDelayTime"]); + logicId = logic.LogicId; + timeValue = int.Parse(logic.Conditions[0]["DoorLockOpenDelayTime"]) / 3600; + timeLong = long.Parse(logic.Conditions[0]["TriggerTime"]); + } catch { } } @@ -86,8 +97,8 @@ BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; middle.AddChidren(fLayout); - ModeView(); #endregion + #region 甯稿紑鑷姩鍖� ///绗笁鍧楃涓�绾х埗鎺т欢 listLogicFl = new FrameLayout @@ -100,7 +111,7 @@ }; middle.AddChidren(listLogicFl); listLogicFl.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft); - + ModeView(); ///娣诲姞甯稿紑鑷姩鍖栫殑鐖舵帶浠� var addLogicfL = new FrameLayout { @@ -162,7 +173,11 @@ actionsInfo.Add("LinkType", 8); actionsInfo.Add("DeviceAddr", Send.CurrentDoorLock.DeviceAddr); actionsInfo.Add("Epoint", "200"); - actionsInfo.Add("PassData", "055704010113");//榛樿闂ㄩ攣甯稿叧 + actionsInfo.Add("PassData", "055704010113");//榛樿闂ㄩ攣甯稿叧 + Dictionary<string, string> accounts = new Dictionary<string, string>(); + accounts.Add("Type", "8"); + accounts.Add("Option4", Send.CurrentDoorLock.DeviceAddr.ToString());//鐢ㄤ簬鍒ゆ柇璇嗗埆鏄摢涓棬閿�; + accounts.Add("Option2", Send.CurrentDoorLock.DeviceEpoint.ToString()); //new涓�涓柊閫昏緫瀵硅薄锛� //鏂板闂ㄩ攣甯稿紑妯″紡鑷姩鍖栧叆鍙o紱 Common.Logic.CurrentLogic = new Common.Logic(); @@ -170,7 +185,8 @@ Common.Logic.CurrentLogic.LogicType = 2;//鏍囪閫昏緫绫诲瀷 Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.openmode); Common.Logic.CurrentLogic.Conditions.Add(timeConditionsInfo);//娣诲姞鏉′欢 - Common.Logic.CurrentLogic.Actions.Add(actionsInfo);//娣诲姞鐩爣 + Common.Logic.CurrentLogic.Actions.Add(actionsInfo);//娣诲姞鐩爣 + Common.Logic.CurrentLogic.Accounts.Add(accounts); var oneLogic = new OneLogic(); UserView.HomePage.Instance.AddChidren(oneLogic); UserView.HomePage.Instance.PageIndex += 1; @@ -215,7 +231,7 @@ /// <summary> /// 甯稿紑妯″紡寮�鍏冲垏鎹㈠浘鏍囩晫闈� /// </summary> - public void ModeView() + public void ModeView() { fLayout.RemoveAll(); @@ -264,10 +280,12 @@ { if (logicId != 0) { + ///鏈夊彲鑳藉彧鏈夊父寮�妯″紡锛屾病鏈夋椂鏁堟�ц嚜鍔ㄥ寲 Send.DelLogic(logicId); } Send.CurrentDoorLock.IsDoorLockNormallyMode = false; + _if = false; ModeView(); } else @@ -286,33 +304,59 @@ } }; - ///鏄剧ず澶辨晥璁剧疆鏃堕棿鏂囨湰鎺т欢 - var timeTextBtn = new Button - { - Y = Application.GetRealHeight(127 + 69), - X = Application.GetRealWidth(125), - Width = Application.GetRealWidth(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); - ///鏈夋椂鏁堟�у父寮�鎵嶆樉绀烘椂闂存潯浠舵枃鏈� - var y = DateTime.Now.Year.ToString();//閭d竴骞� - var m = DateTime.Now.Month.ToString();//閭d竴鏈� - var d = DateTime.Now.ToString("dd");//閭d竴澶� - var h = int.Parse(DateTime.Now.ToString("HH"));//褰撳墠绯荤粺鏃堕棿 - int dayInt = (h + timeValue) / 24;//绠楀嚭鍑犲ぉ鍚庢墽琛� - int hour = (h + timeValue) % 24;//绠楀嚭鍑犲ぉ鍚庨偅涓椂闂存墽琛� - int days = int.Parse(d) + dayInt; + 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.executeSone); - timeTextBtn.Text = text1 + y + text2 + m + text3 + days.ToString() + text4 + hour.ToString() + text5; + 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); + ///鏈夋椂鏁堟�у父寮�鎵嶆樉绀烘椂闂存潯浠舵枃鏈� + year = datetime.Year.ToString();//閭d竴骞� + month = datetime.Month.ToString();//閭d竴鏈� + days = int.Parse(datetime.ToString("dd"));//閭d竴澶� + hour = int.Parse(datetime.ToString("HH"));//灏忔椂 + minute = datetime.Minute;//鍒嗛挓 + } + else + { + + + ///鍦ㄥ綋鍓嶇晫闈㈢紪杈戞樉绀虹郴缁熸椂闂�(涓嶈兘姣忎竴娆$紪杈戦兘鍘荤綉鍏虫嬁鏁版嵁) + year = DateTime.Now.Year.ToString();//閭d竴骞� + month = DateTime.Now.Month.ToString();//閭d竴鏈� + var d = DateTime.Now.ToString("dd");//閭d竴澶� + var h = int.Parse(DateTime.Now.ToString("HH"));//灏忔椂 + 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; } @@ -367,27 +411,26 @@ }; modeFl.AddChidren(clickBtn); clickBtn.MouseUpEventHandler += (sender, e) => - { + { - LogicView.TipView.ShowConfrimTip(() => - - {///鍐嶆纭 + LogicView.TipView.ShowConfrimTip(() => + {///鍐嶆纭 LogicView.TipView.ShowInputTip(true, async (str) => - {///纭鍙戦�佸懡浠� + {///纭鍙戦�佸懡浠� CommonPage.Loading.Start(); - try - { + try + { ///xm var result = await UserCenter.DoorLock.DoorLockCommonInfo.SetNormallyOpenModeFuncAsync(Send.CurrentDoorLock); - if (!result) - { - LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed)); - return; - } - else - { + if (!result) + { + LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.openFailed)); + return; + } + else + { ///鍥犱负鏈夊父寮�妯″紡涓嬫墠鍙互鍒涘缓澶辨晥閫昏緫锛� - SkipView.GetLogicAll();//鍒犻櫎涔嬪墠鎵�鏈夊け鏁堥�昏緫 + SkipView.GetLogicAll(Send.CurrentDoorLock);//鍒犻櫎涔嬪墠鎵�鏈夊け鏁堥�昏緫 var addResult = await SkipView.LockAddModifyLogic(int.Parse(str), Send.CurrentDoorLock);//娣诲姞涓�鏉″け鏁堥�昏緫 if (addResult == 0) { @@ -397,12 +440,18 @@ LogicView.TipView.ShowFlashTip(Language.StringByID(MyInternationalizationString.addFailed)); return; } - logicId = addResult; - timeValue = int.Parse(str); - Send.CurrentDoorLock.IsDoorLockNormallyMode = true; - ModeView(); - //娣诲姞App寮�鍚父寮�妯″紡鐨勫巻鍙茶褰� - UserCenter.HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog(Send.CurrentDoorLock, 9001, string.Empty); + 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 @@ -423,23 +472,27 @@ }; } - listLogicFl.Y = fLayout.Bottom; listLogicFl.X = Application.GetRealWidth(58); listLogicFl.Height = Application.GetRealHeight(Method.H - 184) - fLayout.Height; listLogicFl.Width = Application.GetRealWidth(1022); listLogicFl.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor; + + verticalRefresh.Y = Application.GetRealHeight(187); + verticalRefresh.X = Application.GetRealWidth(46); + verticalRefresh.Height = listLogicFl.Height - Application.GetRealHeight(187);//鍔ㄦ�佹敼鍔ㄤ笂涓嬫粦鍔╲iew楂樺害; + verticalRefresh.Width = listLogicFl.Width - Application.GetRealWidth(46); } /// <summary> /// 璇诲彇鑷姩鍖栧垪琛ㄦ暟鎹紱 /// </summary> /// <param name="yes"></param> - private async void Read( bool yes) + private async void Read(bool yes) { - if (yes) - { - CommonPage.Loading.Start(); - } + //if (yes) + // { + CommonPage.Loading.Start(); + // } try { if (Common.Logic.SoneLogicList.Count == 0) @@ -454,8 +507,11 @@ if (logic.LogicType != 2) { continue; + } + if (SkipView.ExistLogic(logic, Send.CurrentDoorLock)) + { + Common.Logic.SoneLogicList.Add(logic); } - Common.Logic.SoneLogicList.Add(logic); } } } @@ -464,13 +520,20 @@ { var dd = e.Message; } - //鑷姩鍖� - RefreshView(); - if (yes) + finally { - CommonPage.Loading.Hide(); + Application.RunOnMainThread(() => + { + // if (yes) + // { + CommonPage.Loading.Hide(); + // } + //鑷姩鍖� + RefreshView(); + }); } + } /// <summary> /// 璁板綍宸︽粦鐘舵�� @@ -485,6 +548,11 @@ verticalRefresh.RemoveAll(); foreach (var logic in Common.Logic.SoneLogicList) { + if (!SkipView.ExistLogic(logic, Send.CurrentDoorLock)) + { + ///涓嶆槸璇ラ棬閿佽嚜鍔ㄥ寲灏变笉鏄剧ず鍑烘潵; + continue; + } #region 鑷姩鍖栧竷灞�View ///鑷姩鍖栫埗鎺т欢 var fLayoutLogic = new FrameLayout @@ -575,7 +643,7 @@ TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; logicRow.AddRightView(edit); - + ///鍒犻櫎 var del = new Button { @@ -608,6 +676,7 @@ else { //閫昏緫鍏� + logic.IsEnable = 0; typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png"; typeBjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor; } @@ -641,6 +710,22 @@ }; } } - + /// <summary> + /// 鏃堕棿鎴宠浆鎹㈡垚鏃堕棿鏍煎紡 + /// </summary> + /// <param name="unixTimeStamp">鏃堕棿鎴�</param> + /// <returns></returns> + 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; + + System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 褰撳湴鏃跺尯 + return startTime.AddMilliseconds(unixTimeStamp); + + } } } -- Gitblit v1.8.0