From bd46c57c77c276014db3192a4e2cc96e23c93202 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 21 二月 2020 13:08:47 +0800 Subject: [PATCH] 先上传个版本吧 --- ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs | 242 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 187 insertions(+), 55 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs index 1ab6e14..424eb2f 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs @@ -29,6 +29,7 @@ CurentDoorLockTime = Shared.Phone.UserCenter.DoorLock.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) { @@ -38,6 +39,7 @@ { textDisplayTime.Text = CurentDoorLockTime.Hour + ":" + CurentDoorLockTime.Minute; } + CommonPage.Loading.Hide(); }); } } @@ -58,19 +60,59 @@ ZigBee.Device.ZbGateway.StatusList.Add(this); } - #region 鈼� 鍙橀噺鐢虫槑__________________________ + #region 鍙橀噺鐢虫槑 + /// <summary> + /// 褰撳墠闂ㄩ攣 + /// </summary> ZigBee.Device.DoorLock doorLock; + /// <summary> + /// 璁剧疆鏃堕棿绫诲瀷 + /// </summary> string setTimeType = ""; + /// <summary> + /// 褰撳墠闂ㄩ攣鏃堕棿 + /// </summary> DateTime CurentDoorLockTime; + /// <summary> + /// 鏄剧ず鏃ユ湡鐨勬枃鏈� + /// </summary> Button textDisplayDate; + /// <summary> + /// 鏄剧ず鏃堕棿鐨勬枃鏈� + /// </summary> Button textDisplayTime; + /// <summary> + /// 鏈湴鍙橀噺鈥滃勾鈥� + /// </summary> int curYear = 0; + /// <summary> + /// 鏈湴鍙橀噺鈥滄湀鈥� + /// </summary> int curMonth = 0; + /// <summary> + /// 鏈湴鍙橀噺鈥滄棩鈥� + /// </summary> int curDay = 0; + /// <summary> + /// 鏈湴鍙橀噺鈥滄椂鈥� + /// </summary> int curHour = 0; + /// <summary> + /// 鏈湴鍙橀噺鈥滃垎鈥� + /// </summary> int curMin = 0; + /// <summary> + /// 鏈湴鍙橀噺鈥滅鈥� + /// </summary> int curSec = 0; + /// <summary> + /// 璁剧疆鏃堕棿鐨凙ction + /// </summary> public Action timeSetAction; + /// <summary> + /// 绛夊緟鑾峰彇闂ㄩ攣鏃剁殑绛夊緟鏃堕棿 + /// </summary> + DateTime waitGetDoorLockTime = DateTime.MaxValue; #endregion /// <summary> @@ -109,17 +151,30 @@ this.MidFrameLayout(this); MidFrameLayoutContent(); } - + /// <summary> + /// 涓儴甯冨眬 + /// </summary> public void MidFrameLayoutContent() { if (setTimeType == "DoorLockTime") { + 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); } @@ -129,16 +184,17 @@ var MidTopFrameLayout = new FrameLayout() { - BackgroundColor = ZigbeeColor.Current.XMWhite, }; this.midFrameLayout.AddChidren(MidTopFrameLayout); var dtNow = DateTime.Now; for (int i = 0; i < 2; i++) { + #region MidTopFrameLayout UI var rowLayout = new FrameLayout() { - Height = Application.GetRealHeight(58), + Height = Application.GetRealHeight(127 + 23), + BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite, }; MidTopFrameLayout.AddChidren(rowLayout); @@ -173,7 +229,7 @@ { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), - UnSelectedImagePath = "Item/Next.png", + UnSelectedImagePath = "Item/RightNext.png", SelectedImagePath = "Item/Down.png", }; btnNextFrameLayout.AddChidren(btnNext); @@ -181,21 +237,17 @@ var btnLine = new FrameLayout() { Width = Application.GetRealWidth(965), - Height = Application.GetRealHeight(5), + Height = 1, X = Application.GetRealWidth(58), BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine, - }; MidTopFrameLayout.AddChidren(btnLine); + #endregion - if (setTimeType != "DoorLockTime") - { - textDisplayDateFrameLayout.Width = 0; - } - + #region 鏄剧ず澶勭悊 if (i == 0) { - rowLayout.Y = Application.GetRealHeight(50); + btnDateTime.Y = textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = Application.GetRealHeight(50); btnLine.Y = Application.GetRealHeight(23 + 127); textDisplayDate = new Button() @@ -206,11 +258,18 @@ Text = "_" + Language.StringByID(R.MyInternationalizationString.Year) + "_" + Language.StringByID(R.MyInternationalizationString.Month) + "_" + Language.StringByID(R.MyInternationalizationString.Day), }; textDisplayDateFrameLayout.AddChidren(textDisplayDate); - //textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = btnDateTime.Y; 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 { @@ -219,7 +278,8 @@ } else if (i == 1) { - rowLayout.Y = Application.GetRealHeight(200); + 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() { @@ -229,26 +289,52 @@ Text = "00:00", }; textDisplayDateFrameLayout.AddChidren(textDisplayTime); - //textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = btnDateTime.Y; 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<MouseEventArgs> hander = (sender, e) => { 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); @@ -264,7 +350,7 @@ this.btnBottomTitle.TextID = R.MyInternationalizationString.CurrentDate; } - mUIPickerView.Y = Application.GetRealWidth(110); + mUIPickerView.Y = Application.GetRealWidth(245); var mList1 = new List<string>(); var mList2 = new List<string>(); var mList3 = new List<string>(); @@ -273,17 +359,31 @@ int year = dtNow.Year + 1; int days = DateTime.DaysInMonth(dtNow.Year, dtNow.Month); - for (int y = dtNow.Year - 10; y < dtNow.Year + 1; y++) + for (int y = dtNow.Year - 9; y < dtNow.Year + 1; y++) { mList1.Add(y.ToString()); } for (int m = 1; m < 13; m++) { - mList2.Add(m.ToString()); + if (Language.CurrentLanguage == "Chinese") + { + mList2.Add(m.ToString() + "鏈�"); + } + else + { + mList2.Add(m.ToString()); + } } - for (int d = 1; d < days; d++) + for (int d = 1; d < days + 1; d++) { - mList3.Add(d.ToString()); + if (Language.CurrentLanguage == "Chinese") + { + mList3.Add(d.ToString() + "鏃�"); + } + else + { + mList3.Add(d.ToString()); + } } if (setTimeType != "DoorLockTime") @@ -312,7 +412,7 @@ Height = Application.GetRealHeight(58), Width = Application.GetRealWidth(101), Text = Language.StringByID(R.MyInternationalizationString.Complete), - TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + TextColor = Shared.Common.ZigbeeColor.Current.XMOrange, TextSize = 14, }; this.bottomRadiusFrameLayout.AddChidren(btnOk); @@ -335,12 +435,13 @@ timeSetAction(); } this.shadowRadiusFrameLayout.RemoveFromParent(); + MidFrameLayoutContent(); }; } else { mUIPickerView.setNPicker(mList1, mList2, mList3); - mUIPickerView.setCurrentItems(dtNow.Year, dtNow.Month - 1, dtNow.Day - 1); + mUIPickerView.setCurrentItems(9, dtNow.Month - 1, dtNow.Day - 1); curYear = dtNow.Year; curMonth = dtNow.Month; curDay = dtNow.Day; @@ -368,7 +469,14 @@ for (int d = 1; d < days + 1; d++) { - mList3.Add(d.ToString()); + if (Language.CurrentLanguage == "Chinese") + { + mList3.Add(d.ToString() + "鏃�"); + } + else + { + mList3.Add(d.ToString()); + } } if (setTimeType != "DoorLockTime") @@ -379,7 +487,7 @@ else { mUIPickerView.setNPicker(mList1, mList2, mList3); - mUIPickerView.setCurrentItems(curYear, curMonth - 1, curDay - 1); + mUIPickerView.setCurrentItems(9, curMonth - 1, curDay - 1); } } }; @@ -412,7 +520,7 @@ this.btnBottomTitle.TextID = R.MyInternationalizationString.CurrentTime; } - mUIPickerView.Y = Application.GetRealWidth(95); + mUIPickerView.Y = Application.GetRealWidth(245); var mList1 = new List<string>(); var mList2 = new List<string>(); for (int h = 0; h < 24; h++) @@ -483,7 +591,7 @@ Height = Application.GetRealHeight(58), Width = Application.GetRealWidth(101), Text = Language.StringByID(R.MyInternationalizationString.Complete), - TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + TextColor = Shared.Common.ZigbeeColor.Current.XMOrange, TextSize = 14, }; this.bottomRadiusFrameLayout.AddChidren(btnOk); @@ -506,6 +614,7 @@ timeSetAction(); } this.shadowRadiusFrameLayout.RemoveFromParent(); + MidFrameLayoutContent(); }; } } @@ -515,44 +624,63 @@ 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 += async (sender1, e1) => + btnFinish.MouseUpEventHandler += (sender1, e1) => { if (setTimeType == "DoorLockTime") - { - var curDateTime = new DateTime(curYear, curMonth, curDay, curHour, curMin, curSec); - var setTimestamp = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(curDateTime); - try - { - CommonPage.Loading.Start(""); - var rectifyResult = await doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp)); - if (rectifyResult != null && rectifyResult.setWritableValueResponData != null) + { + System.Threading.Tasks.Task.Run(async () => { + try { - if (rectifyResult.setWritableValueResponData.Status == 0) + var curDateTime = new DateTime(curYear, curMonth, curDay, curHour, curMin, curSec); + var setTimestamp = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(curDateTime); + Application.RunOnMainThread(() => { + CommonPage.Loading.Start(""); + }); + var rectifyResult = await doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp)); + if (rectifyResult != null && rectifyResult.setWritableValueResponData != null) { - this.shadowRadiusFrameLayout.RemoveFromParent(); + 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 { - new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RectifyFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish); + Application.RunOnMainThread(() => { + new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish); + }); } } - else - { - new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish); + catch { } + finally + { + Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); }); } - } - catch { } - finally - { - System.Threading.Thread.Sleep(3000); - CommonPage.Loading.Hide(); - } + }); } }; this.shadowRadiusFrameLayout.MouseUpEventHandler += (sender1, e1) => @@ -560,13 +688,17 @@ this.shadowRadiusFrameLayout.RemoveFromParent(); }; - //绛夊緟浠庨棬閿佷笂闈㈠姞杞藉嚭鐨勬椂闂� - //System.Threading.Thread.Sleep(1500); - //CommonPage.Loading.Hide(); - + if (setTimeType == "DoorLockTime") + { + if (CurentDoorLockTime != null && CurentDoorLockTime.Year != 1) + { + waitGetDoorLockTime = DateTime.MaxValue; + CommonPage.Loading.Hide(); + } + } } - #region 鈼� 鎺ュ彛瀹炵幇__________________________ + #region 鎺ュ彛瀹炵幇 /// <summary> /// 澶勭悊鍙樺寲浜嬩欢 --灏嗗純鐢� 鏀圭敤DeviceInfoChange() /// </summary> -- Gitblit v1.8.0