From b621c50182f42a095b75fc08584240905e22d944 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期三, 24 三月 2021 15:24:20 +0800
Subject: [PATCH] 2021-03-24 1.修改时间选择控件不调用系统的时间选择器,实现自定义时间选择器。   2.优化注册和忘记密码页面,增加倒计时和重发按钮功能

---
 Crabtree/SmartHome/UI/SimpleControl/R.cs                                  |    5 
 Crabtree/ON/Assets/Language.ini                                           |    2 
 Crabtree/ON.Ios/Resources/Language.ini                                    |    3 
 Crabtree/SmartHome/UI/SimpleControl/Phone/Register/ForgotPassword.cs      |   83 +++++++++++
 Crabtree/.vs/SmartHome/xs/UserPrefs.xml                                   |   15 +-
 Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs         |  220 +++++++++++++++++++++++-------
 Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountRegistration.cs |   85 +++++++++++
 Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs        |    7 
 8 files changed, 344 insertions(+), 76 deletions(-)

diff --git a/Crabtree/.vs/SmartHome/xs/UserPrefs.xml b/Crabtree/.vs/SmartHome/xs/UserPrefs.xml
index ccee2f0..ddaa76b 100644
--- a/Crabtree/.vs/SmartHome/xs/UserPrefs.xml
+++ b/Crabtree/.vs/SmartHome/xs/UserPrefs.xml
@@ -1,15 +1,12 @@
 锘�<Properties StartupConfiguration="{1D83BF28-BA88-4152-BA41-D7EFE90A5437}|Default">
   <MonoDevelop.Ide.ItemProperties.ON.Droid PreferredExecutionTarget="Android.Android_Accelerated_Oreo" />
   <MonoDevelop.Ide.Workbench>
-    <Files>
-      <File FileName="SmartHome/UI/SimpleControl/Phone/Schedule/Method.cs" Line="83" Column="20" />
-    </Files>
     <Pads>
       <Pad Id="ProjectPad">
         <State name="__root__">
           <Node name="SmartHome" expanded="True">
-            <Node name="ON.Droid" expanded="True" selected="True">
-              <Node name="Properties" expanded="True" />
+            <Node name="ON.Droid" expanded="True">
+              <Node name="Assets" expanded="True" />
             </Node>
             <Node name="Shared" expanded="True">
               <Node name="DLL" expanded="True" />
@@ -26,8 +23,12 @@
               <Node name="UI" expanded="True">
                 <Node name="SimpleControl" expanded="True">
                   <Node name="Phone" expanded="True">
+                    <Node name="Register" expanded="True" />
                     <Node name="Scene" expanded="True" />
-                    <Node name="Schedule" expanded="True" />
+                    <Node name="Schedule" expanded="True">
+                      <Node name="Method.cs" selected="True" />
+                    </Node>
+                    <Node name="User" expanded="True" />
                   </Node>
                 </Node>
               </Node>
@@ -45,7 +46,7 @@
     <String>IosService/IosService.csproj</String>
     <String>DroidService/DroidService.csproj</String>
   </DisabledProjects>
-  <MonoDevelop.Ide.Workspace ActiveConfiguration="Release|iPhone" />
+  <MonoDevelop.Ide.Workspace ActiveConfiguration="Debug|iPhone" />
   <MonoDevelop.Ide.ItemProperties.ON.Ios automaticSigning="False" PreferredExecutionTarget="MonoDevelop.IPhone.IPhoneDeviceTarget.00008030-00014C392121802E" />
   <MonoDevelop.Ide.DebuggingService.Breakpoints>
     <BreakpointStore>
diff --git a/Crabtree/ON.Ios/Resources/Language.ini b/Crabtree/ON.Ios/Resources/Language.ini
index aeb2229..66da5b3 100644
--- a/Crabtree/ON.Ios/Resources/Language.ini
+++ b/Crabtree/ON.Ios/Resources/Language.ini
@@ -1110,6 +1110,7 @@
 20059=Device and scene data are successfully synchronized to the cloud!
 20060=Failed to sync the device and scene data to the cloud!
 20061=Do you want to synchronize all local devices and scenes to the cloud? This will be used for schedule and alexa control functions.
+20062=Resend
 
 [Chinese]
 1=浣犲ソ
@@ -2222,7 +2223,7 @@
 20059=Device and scene data are successfully synchronized to the cloud!
 20060=Failed to sync the device and scene data to the cloud!
 20061=Do you want to synchronize all local devices and scenes to the cloud? This will be used for schedule and alexa control functions.
-
+20062=Resend
 
 [Czech]
 1=Nazdar
diff --git a/Crabtree/ON/Assets/Language.ini b/Crabtree/ON/Assets/Language.ini
index fd38bf9..e5ca076 100644
--- a/Crabtree/ON/Assets/Language.ini
+++ b/Crabtree/ON/Assets/Language.ini
@@ -1110,6 +1110,7 @@
 20059=Device and scene data are successfully synchronized to the cloud!
 20060=Failed to sync the device and scene data to the cloud!
 20061=Do you want to synchronize all local devices and scenes to the cloud? This will be used for schedule and alexa control functions.
+20062=Resend
 
 [Chinese]
 1=浣犲ソ
@@ -2222,6 +2223,7 @@
 20059=Device and scene data are successfully synchronized to the cloud!
 20060=Failed to sync the device and scene data to the cloud!
 20061=Do you want to synchronize all local devices and scenes to the cloud? This will be used for schedule and alexa control functions.
+20062=Resend
 
 
 [Czech]
diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs
index 6200b11..8e90dce 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountLogin.cs
@@ -83,8 +83,8 @@
             //etAccount.Text = "18824864143";
 
             //etAccount.Text = "cjl@hdlchina.com.cn";
-            //etAccount.Text = "2791308028@qq.com";
-            etAccount.Text = "858539859@qq.com";
+            etAccount.Text = "2791308028@qq.com";
+            //etAccount.Text = "858539859@qq.com";
 #endif
 
             accountView.AddChidren (etAccount);
@@ -138,7 +138,8 @@
             };
 #if DEBUG
             //etPasswrod.Text = "123456";
-            etPasswrod.Text = "123456-Aa";
+            //etPasswrod.Text = "123456-Aa";
+            etPasswrod.Text = "123456-Bb";
 #endif
             passwrodView.AddChidren (etPasswrod);
 
diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountRegistration.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountRegistration.cs
index 27137d9..c6686a3 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountRegistration.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/AccountRegistration.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Text.RegularExpressions;
+using System.Threading;
 
 namespace Shared.SimpleControl.Phone
 {
@@ -157,7 +158,9 @@
         /// </summary>
         /// <param name="account">璐﹀彿 閭鎴栬�呮墜鏈哄彿</param>
         /// <param name="isPhone">鏄惁鏄墜鏈�</param>
-        void SendVerificationCode (string account, bool isPhone = true)
+        /// <param name="isResend"></param>
+        /// <param name="btnResend"></param>
+        void SendVerificationCode (string account, bool isPhone = true, bool isResend = false, Button btnResend = null)
         {
             MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load));
             System.Threading.Tasks.Task.Run (() => {
@@ -165,9 +168,14 @@
                     var requestRevertObj = HttpServerRequest.Current.VerificationCodeSend (VerifyType.REGISTER_USER, account);
                     if (requestRevertObj.Code == StateCode.SUCCESS) {
                         Application.RunOnMainThread (() => {
-                            // isPhone 鏄惁鏄墜鏈�
-                            InitSMSView (account, false);
-                            bodyPageView.PageIndex = bodyPageView.ChildrenCount - 1;
+                            if (isResend) {
+                                //濡傛灉鏄噸鍙戠殑
+                                StartCountdown (btnResend);
+                            } else {
+                                // isPhone 鏄惁鏄墜鏈�
+                                InitSMSView (account, false);
+                                bodyPageView.PageIndex = bodyPageView.ChildrenCount - 1;
+                            }
                         });
                     } else {
                         //鎻愮ず閿欒
@@ -328,9 +336,12 @@
             mobileChencView.AddChidren (btnTitle);
 
             EditText etCode = new EditText () {
-                Width = Application.GetRealWidth (500),
+                //Width = Application.GetRealWidth (500),
+                //Height = Application.GetRealWidth (85),
+                //Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth (390),
                 Height = Application.GetRealWidth (85),
-                Gravity = Gravity.CenterHorizontal,
+                X = Application.GetRealWidth (70),
                 Y = btnTitle.Bottom,
                 BorderWidth = 1,
                 Radius = 5,
@@ -339,6 +350,33 @@
                 TextColor = SkinStyle.Current.TextColor1
             };
             mobileChencView.AddChidren (etCode);
+
+            Button btnResend = new Button () {
+                Y = btnTitle.Bottom,
+                X = etCode.Right + Application.GetRealWidth (10),
+                Width = Application.GetRealWidth (100),
+                Height = Application.GetRealWidth (85),
+                BackgroundColor = SkinStyle.Current.MainColor,
+                SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
+                //TextID = R.MyInternationalizationString.Resend,
+                Text = "Resend",
+                TextColor = SkinStyle.Current.TextColor1,
+                Radius = 5,
+                BorderColor = SkinStyle.Current.Transparent,
+                BorderWidth = 0,
+                TextSize = 15,
+                TextAlignment = TextAlignment.Center,
+            };
+            mobileChencView.AddChidren (btnResend);
+            btnResend.MouseDownEventHandler += (sender, e) => {
+                btnResend.IsSelected = true;
+            };
+            btnResend.MouseUpEventHandler += (sender, e) => {
+                btnResend.IsSelected = false;
+                Resend (mAccount, btnResend);
+            };
+            StartCountdown (btnResend);
+
 
             Button btnConfirem = new Button () {
                 Gravity = Gravity.CenterHorizontal,
@@ -442,6 +480,41 @@
 
         }
 
+        /// <summary>
+        /// 閲嶅彂
+        /// </summary>
+        void Resend (string account, Button btnResend)
+        {
+            SendVerificationCode (account, false, true, btnResend);
+        }
 
+        /// <summary>
+        /// 寮�濮嬭鏃�
+        /// </summary>
+        /// <param name="btnResend"></param>
+        void StartCountdown (Button btnResend)
+        {
+            if (btnResend == null) return;
+
+            btnResend.Enable = false;
+            int time = 60;
+
+            //2.1鑾峰彇楠岃瘉鐮佸�掕鏃�
+            new Thread (() => {
+                while (time > 0) {
+                    time--;
+                    Application.RunOnMainThread (() => {
+                        btnResend.Text = time.ToString () + "s";
+                    });
+                    Thread.Sleep (1000);
+                }
+                Application.RunOnMainThread (() => {
+                    //鍥炲鑾峰彇鐭俊鎸夐挳浜嬩欢
+                    btnResend.Enable = true;
+                    btnResend.TextID = R.MyInternationalizationString.Resend;
+                });
+            }) { IsBackground = true }.Start ();
+        }
     }
+
 }
\ No newline at end of file
diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/ForgotPassword.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/ForgotPassword.cs
index 4f5c8a7..f34c1b0 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/ForgotPassword.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/ForgotPassword.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using System.Text.RegularExpressions;
+using System.Threading;
 
 namespace Shared.SimpleControl.Phone
 {
@@ -160,7 +161,7 @@
         /// </summary>
         /// <param name="account">璐﹀彿 閭鎴栬�呮墜鏈哄彿</param>
         /// <param name="isPhone">鏄惁鏄墜鏈�</param>
-        void SendVerificationCode (string account, bool isPhone = true)
+        void SendVerificationCode (string account, bool isPhone = true, bool isResend = false, Button btnResend = null)
         {
             MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load));
             System.Threading.Tasks.Task.Run (() => {
@@ -168,8 +169,14 @@
                     var requestRevertObj = HttpServerRequest.Current.VerificationCodeSend (VerifyType.FIND_PASSWORD, account);
                     if (requestRevertObj.Code.ToUpper () == StateCode.SUCCESS) {
                         Application.RunOnMainThread (() => {
-                            InitSMSView (account, false);
-                            bodyPageView.PageIndex = bodyPageView.ChildrenCount - 1;
+                          
+                            if (isResend) {
+                                //濡傛灉鏄噸鍙戠殑
+                                StartCountdown (btnResend);
+                            } else {
+                                InitSMSView (account, false);
+                                bodyPageView.PageIndex = bodyPageView.ChildrenCount - 1;
+                            }
                         });
                     } else {
                         //鎻愮ず閿欒
@@ -271,9 +278,10 @@
             mobileChencView.AddChidren (btnTitle);
 
             EditText etCode = new EditText () {
-                Width = Application.GetRealWidth (500),
+                Width = Application.GetRealWidth (390),
                 Height = Application.GetRealWidth (85),
-                Gravity = Gravity.CenterHorizontal,
+                //Gravity = Gravity.CenterHorizontal,
+                X = Application.GetRealWidth (70),
                 Y = btnTitle.Bottom,
                 BorderWidth = 1,
                 Radius = 5,
@@ -282,6 +290,32 @@
                 TextColor = SkinStyle.Current.TextColor1
             };
             mobileChencView.AddChidren (etCode);
+
+            Button btnResend = new Button () {
+                Y = btnTitle.Bottom,
+                X = etCode.Right + Application.GetRealWidth (10),
+                Width = Application.GetRealWidth (100),
+                Height = Application.GetRealWidth (85),
+                BackgroundColor = SkinStyle.Current.MainColor,
+                SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
+                //TextID = R.MyInternationalizationString.Resend,
+                Text = "Resend",
+                TextColor = SkinStyle.Current.TextColor1,
+                Radius = 5,
+                BorderColor = SkinStyle.Current.Transparent,
+                BorderWidth = 0,
+                TextSize = 15,
+                TextAlignment = TextAlignment.Center,
+            };
+            mobileChencView.AddChidren (btnResend);
+            btnResend.MouseDownEventHandler += (sender, e) => {
+                btnResend.IsSelected = true;
+            };
+            btnResend.MouseUpEventHandler += (sender, e) => {
+                btnResend.IsSelected = false;
+                Resend (mAccount, btnResend);
+            };
+            StartCountdown (btnResend);
 
             Button btnConfirem = new Button () {
                 Y = etCode.Bottom + Application.GetRealWidth (50),
@@ -366,6 +400,45 @@
 
 
         }
+
+        /// <summary>
+        /// 閲嶅彂
+        /// </summary>
+        void Resend (string account, Button btnResend)
+        {
+            SendVerificationCode (account, false, true, btnResend);
+        }
+
+        /// <summary>
+        /// 寮�濮嬭鏃�
+        /// </summary>
+        /// <param name="btnResend"></param>
+        void StartCountdown (Button btnResend)
+        {
+            if (btnResend == null) return;
+
+            btnResend.Enable = false;
+            int time = 60;
+
+            //2.1鑾峰彇楠岃瘉鐮佸�掕鏃�
+            new Thread (() =>
+            {
+                while (time > 0) {
+                    time--;
+                    Application.RunOnMainThread (() =>
+                    {
+                        btnResend.Text = time.ToString () + "s";
+                    });
+                    Thread.Sleep (1000);
+                }
+                Application.RunOnMainThread (() =>
+                {
+                    //鍥炲鑾峰彇鐭俊鎸夐挳浜嬩欢
+                    btnResend.Enable = true;
+                    btnResend.TextID = R.MyInternationalizationString.Resend;
+                });
+            }) { IsBackground = true }.Start ();
+        }
     }
 
 
diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs
index e96a79f..6046110 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/AddSchedule.cs
@@ -177,65 +177,69 @@
             timeView.AddChidren (btnTimelbl);
 
             btnTimelbl.MouseUpEventHandler += (timeSender, eee) => {
-                var dialog = new Dialog ();
-                var chooseTimeBodyView = new FrameLayout () {
-                };
-                dialog.AddChidren (chooseTimeBodyView);
 
-                var chooseTime = new TimeView () {
-                    Y = Application.GetRealHeight (1136 - 420 - 90),
-                    Height = Application.GetRealHeight (420),
-                    BackgroundColor = 0xFFD7D7D7,
-                    //BackgroundColor = SkinStyle.Current.ViewColor,
-                };
-                chooseTimeBodyView.AddChidren (chooseTime);
+                ShowTimePickerView (btnTimelbl);
+                return;
 
-                var bottomView = new FrameLayout () {
-                    Y = chooseTime.Bottom,
-                    Height = Application.GetRealHeight (90) + 1,
-                    BackgroundColor = 0xFFD7D7D7,
-                };
-                chooseTimeBodyView.AddChidren (bottomView);
+                //var dialog = new Dialog ();
+                //var chooseTimeBodyView = new FrameLayout () {
+                //};
+                //dialog.AddChidren (chooseTimeBodyView);
 
-                var btnCloseTime = new Button () {
-                    Y = 1,
-                    Width = Application.GetRealWidth (320),
-                    BackgroundColor = SkinStyle.Current.ViewColor,
-                    TextID = R.MyInternationalizationString.Close,
-                    TextAlignment = TextAlignment.Center,
-                    TextColor = SkinStyle.Current.TextColor1,
-                };
-                bottomView.AddChidren (btnCloseTime);
-                btnCloseTime.MouseUpEventHandler += (ddf, dddf) => {
-                    chooseTimeBodyView.RemoveAll ();
-                    chooseTimeBodyView.RemoveFromParent ();
-                    dialog.Close ();
-                };
+                //var chooseTime = new TimeView () {
+                //    Y = Application.GetRealHeight (1136 - 420 - 90),
+                //    Height = Application.GetRealHeight (420),
+                //    BackgroundColor = 0xFFD7D7D7,
+                //    //BackgroundColor = SkinStyle.Current.ViewColor,
+                //};
+                //chooseTimeBodyView.AddChidren (chooseTime);
 
-                var btnSaveTime = new Button () {
-                    X = btnCloseTime.Right + 1,
-                    Y = 1,
-                    Width = Application.GetRealWidth (320),
-                    TextID = R.MyInternationalizationString.SAVE,
-                    BackgroundColor = SkinStyle.Current.ViewColor,
-                    TextAlignment = TextAlignment.Center,
-                    TextColor = SkinStyle.Current.TextColor1,
-                };
-                bottomView.AddChidren (btnSaveTime);
-                btnSaveTime.MouseUpEventHandler += (sender3, e3) => {
-                    // var chooseHour = chooseTime.Hour - timerTemp.TimeZone;
-                    var chooseTimeString = chooseTime.Hour.ToString ().PadLeft (2, '0') + ":" + chooseTime.Minute.ToString ().PadLeft (2, '0');
-                    //if (chooseTime.Hour > 12) {
-                    //    chooseTimeString = (chooseTime.Hour -12) + ":" + chooseTime.Minute + " PM";
-                    //} else {
-                    //    chooseTimeString = chooseTime.Hour + ":" + chooseTime.Minute + " AM";
-                    //}
-                    btnTimelbl.Text = chooseTimeString;
-                    dialog.Close ();
-                };
+                //var bottomView = new FrameLayout () {
+                //    Y = chooseTime.Bottom,
+                //    Height = Application.GetRealHeight (90) + 1,
+                //    BackgroundColor = 0xFFD7D7D7,
+                //};
+                //chooseTimeBodyView.AddChidren (bottomView);
+
+                //var btnCloseTime = new Button () {
+                //    Y = 1,
+                //    Width = Application.GetRealWidth (320),
+                //    BackgroundColor = SkinStyle.Current.ViewColor,
+                //    TextID = R.MyInternationalizationString.Close,
+                //    TextAlignment = TextAlignment.Center,
+                //    TextColor = SkinStyle.Current.TextColor1,
+                //};
+                //bottomView.AddChidren (btnCloseTime);
+                //btnCloseTime.MouseUpEventHandler += (ddf, dddf) => {
+                //    chooseTimeBodyView.RemoveAll ();
+                //    chooseTimeBodyView.RemoveFromParent ();
+                //    dialog.Close ();
+                //};
+
+                //var btnSaveTime = new Button () {
+                //    X = btnCloseTime.Right + 1,
+                //    Y = 1,
+                //    Width = Application.GetRealWidth (320),
+                //    TextID = R.MyInternationalizationString.SAVE,
+                //    BackgroundColor = SkinStyle.Current.ViewColor,
+                //    TextAlignment = TextAlignment.Center,
+                //    TextColor = SkinStyle.Current.TextColor1,
+                //};
+                //bottomView.AddChidren (btnSaveTime);
+                //btnSaveTime.MouseUpEventHandler += (sender3, e3) => {
+                //    // var chooseHour = chooseTime.Hour - timerTemp.TimeZone;
+                //    var chooseTimeString = chooseTime.Hour.ToString ().PadLeft (2, '0') + ":" + chooseTime.Minute.ToString ().PadLeft (2, '0');
+                //    //if (chooseTime.Hour > 12) {
+                //    //    chooseTimeString = (chooseTime.Hour -12) + ":" + chooseTime.Minute + " PM";
+                //    //} else {
+                //    //    chooseTimeString = chooseTime.Hour + ":" + chooseTime.Minute + " AM";
+                //    //}
+                //    btnTimelbl.Text = chooseTimeString;
+                //    dialog.Close ();
+                //};
 
 
-                dialog.Show ();
+                //dialog.Show ();
             };
             #endregion
 
@@ -729,6 +733,116 @@
             };
 
         }
+
+        /// <summary>
+        /// 鑷畾涔塗imePickerView
+        /// 2021-03-24
+        /// </summary>
+        void ShowTimePickerView (Button btnTimelbl)
+        {
+            var chooseTimeString = "00:00";
+            var dialog = new Dialog ();
+            var chooseTimeBodyView = new FrameLayout () {
+            };
+            dialog.AddChidren (chooseTimeBodyView);
+
+            var chooseTime = new UIPickerView () {
+                Y = Application.GetRealHeight (1136 - 420 - 90),
+                Height = Application.GetRealHeight (420),
+                BackgroundColor = 0xFFD7D7D7,
+                //BackgroundColor = SkinStyle.Current.ViewColor,
+            };
+            chooseTimeBodyView.AddChidren (chooseTime);
+
+            var bottomView = new FrameLayout () {
+                Y = chooseTime.Bottom,
+                Height = Application.GetRealHeight (90) + 1,
+                BackgroundColor = 0xFFD7D7D7,
+            };
+            chooseTimeBodyView.AddChidren (bottomView);
+
+            var btnCloseTime = new Button () {
+                Y = 1,
+                Width = Application.GetRealWidth (320),
+                BackgroundColor = SkinStyle.Current.ViewColor,
+                TextID = R.MyInternationalizationString.Close,
+                TextAlignment = TextAlignment.Center,
+                TextColor = SkinStyle.Current.TextColor1,
+            };
+            bottomView.AddChidren (btnCloseTime);
+            btnCloseTime.MouseUpEventHandler += (ddf, dddf) => {
+                chooseTimeBodyView.RemoveAll ();
+                chooseTimeBodyView.RemoveFromParent ();
+                dialog.Close ();
+            };
+
+            var btnSaveTime = new Button () {
+                X = btnCloseTime.Right + 1,
+                Y = 1,
+                Width = Application.GetRealWidth (320),
+                TextID = R.MyInternationalizationString.SAVE,
+                BackgroundColor = SkinStyle.Current.ViewColor,
+                TextAlignment = TextAlignment.Center,
+                TextColor = SkinStyle.Current.TextColor1,
+            };
+            bottomView.AddChidren (btnSaveTime);
+            btnSaveTime.MouseUpEventHandler += (sender3, e3) => {
+                btnTimelbl.Text = chooseTimeString;
+                dialog.Close ();
+            };
+
+            var nowDateTime = DateTime.Now;
+            var hour = nowDateTime.Hour;
+            //hourStr
+            var hourStr = hour.ToString();
+            if (hour < 10) {
+                hourStr = "0" + hour;
+            }
+
+            var minute = nowDateTime.Minute;
+            //minuteStr
+            var minuteStr = minute.ToString ();
+            if (minute < 10) {
+                minuteStr = "0" + minute;
+            }
+            var hourList = new List<string> ();
+            for (int i = 0; i < 24; i++) {
+                if (i < 10) {
+                    var a = "0" + i.ToString ();
+                    hourList.Add (a);
+                } else {
+                    hourList.Add (i.ToString ());
+                }
+
+            }
+
+            var minuteList = new List<string> ();
+            for (int i = 0; i < 60; i++) {
+                if (i < 10) {
+                    var a = "0" + i.ToString ();
+                    minuteList.Add (a);
+                } else {
+                    minuteList.Add (i.ToString ());
+                }
+
+            }
+
+            chooseTime.setNPicker (hourList, minuteList, null);
+            chooseTime.setCurrentItems (hour, minute, 0);
+            chooseTimeString = hourStr + ":" + minuteStr;
+
+            //string selectde = "";
+            chooseTime.OnSelectChangeEvent += (s1, s2, s3) => {
+                var hourV = hourList [s1];
+                var minuteV = minuteList [s2];
+                chooseTimeString = hourV + ":" + minuteV;
+
+            };
+
+            dialog.Show ();
+
+        }
+
         /// <summary>
         /// 鍔犺浇鎴块棿璁惧鍒楄〃鐣岄潰
         /// </summary>
diff --git a/Crabtree/SmartHome/UI/SimpleControl/R.cs b/Crabtree/SmartHome/UI/SimpleControl/R.cs
index 84d984b..df420a9 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/R.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/R.cs
@@ -1204,7 +1204,10 @@
         /// Do you want to synchronize all local devices and scenes to the cloud? This will be used for timer and alexa voice control functions.
         /// </summary>
         public const int DoYouWantToSynchronizeToTheCloud = 20061;
-
+        /// <summary>
+        /// Resend
+        /// </summary>
+        public const int Resend = 20062;
         #endregion
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0