wxr
2020-04-21 f718d23a262a5a8e1241fdeaeb4153399f95e79d
HDL_ON/UI/UI1-Login/RegisterPage.cs
New file
@@ -0,0 +1,731 @@
using System;
using System.Collections.Generic;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI1Login
{
    public partial class RegisterPage : Dialog
    {
        #region 控件列表
        /// <summary>
        /// 等待提示
        /// </summary>
        Loading waitPage;
        /// <summary>
        /// 当前界面
        /// </summary>
        FrameLayout bodyView;
        /// <summary>
        /// 选择手机登录按钮
        /// </summary>
        Button btnPhoneLogin;
        /// <summary>
        /// 选择邮箱登录按钮
        /// </summary>
        Button btnEmailLogin;
        /// <summary>
        /// 账号子区域
        /// </summary>
        FrameLayout accountView;
        /// <summary>
        /// 国际区号按钮
        /// </summary>
        Button btnGlobalRoaming;
        /// <summary>
        /// 账号子区域里面的分割线
        /// </summary>
        Button btnDividingLineVertical_AccountView;
        /// <summary>
        /// 账号文本框
        /// </summary>
        EditText etAccount;
        /// <summary>
        /// 账号Icon按钮
        /// </summary>
        Button btnAccountIcon;
        /// <summary>
        /// 账号子区域底部横线
        /// </summary>
        Button btnVerificationCodeViewBottomLine;
        /// <summary>
        /// 密码子区域
        /// </summary>
        FrameLayout passwordView;
        /// <summary>
        /// 密码Icon按钮
        /// </summary>
        Button btnPasswordIcon;
        /// <summary>
        /// 密码文本框
        /// </summary>
        EditText etPassword;
        /// <summary>
        /// 密码子区域里面的分割线1
        /// </summary>
        Button btnDividingLineVertical_PasswordView1;
        /// <summary>
        /// 密码是否可见按钮
        /// </summary>
        Button btnVisiblePassword;
        /// <summary>
        /// 密码子区域底部横线
        /// </summary>
        Button btnPasswordViewBottomLine;
        /// <summary>
        /// 确认密码子区域
        /// </summary>
        FrameLayout repeatPasswordView;
        /// <summary>
        /// 确认密码Icon按钮
        /// </summary>
        Button btnRepeatPasswordIcon;
        /// <summary>
        /// 确认密码文本框
        /// </summary>
        EditText etRepeatPassword;
        /// <summary>
        /// 确认密码子区域里面的分割线1
        /// </summary>
        Button btnRepeatDividingLineVertical_PasswordView1;
        /// <summary>
        /// 确认密码是否可见按钮
        /// </summary>
        Button btnRepeatVisiblePassword;
        /// <summary>
        /// 确认密码子区域底部横线
        /// </summary>
        Button btnRepeatPasswordViewBottomLine;
        /// <summary>
        /// 验证码子区域
        /// </summary>
        FrameLayout verificationCodeView;
        /// <summary>
        /// 验证码图标
        /// </summary>
        Button btnVerificationCodeIcon;
        /// <summary>
        /// 验证码子区域分割线
        /// </summary>
        Button btnDividingLineVertical_VerificationCodeView1;
        /// <summary>
        /// 验证码文本输入框
        /// </summary>
        EditText etVerificationCode;
        /// <summary>
        /// 获取验证码按钮
        /// </summary>
        Button btnGetVerificationCode;
        /// <summary>
        /// 验证码子区域底部分割线
        /// </summary>
        Button btnAccountViewBottomLine;
        /// <summary>
        /// 注册按钮
        /// </summary>
        Button btnRegister;
        #endregion
        #region  局部变量列表
        /// <summary>
        /// 账号类型
        /// 0:手机
        /// 1:邮箱
        /// </summary>
        int accountType = 0;
        /// <summary>
        /// 手机号码是否有效
        /// </summary>
        bool ValidMobileNumber = false;
        /// <summary>
        /// 密码是否有效
        /// </summary>
        bool ValidPassword = false;
        /// <summary>
        /// 服务器请求对象
        /// </summary>
        HttpServerRequest pm;
        /// <summary>
        /// 回调事件
        /// </summary>
        //Action callbackAction;
        /// <summary>
        /// 注册类型
        /// 0:手机
        /// 1:邮箱
        /// </summary>
        int registerType;
        #endregion
        public RegisterPage()
        {
            bodyView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.BackgroundColor,
            };
            AddChidren(bodyView);
            pm = new HttpServerRequest();
        }
        //public RegisterPage(Action action)
        //{
        //    bodyView = new FrameLayout()
        //    {
        //        BackgroundColor = CSS_Color.MainBackgroundColor,
        //    };
        //    AddChidren(bodyView);
        //    pm = new HttpServerRequest();
        //    callbackAction = action;
        //}
        public void ShowDialog()
        {
            new TopViewDiv(this, bodyView, Language.StringByID(StringId.Register)).LoadTopView();
            //new PublicAssmebly().LoadTopView(this, bodyView, Language.StringByID(StringId.Register));
            #region 注册方式选择
            btnPhoneLogin = new Button()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(112),
                Width = Application.GetRealWidth(120),
                Height = Application.GetRealHeight(40),
                TextID = StringId.LoginByPhone,
                TextColor = CSS_Color.MainColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
            };
            bodyView.AddChidren(btnPhoneLogin);
            btnEmailLogin = new Button()
            {
                X = btnPhoneLogin.Right,
                Y = Application.GetRealHeight(112),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealHeight(40),
                TextID = StringId.LoginByEmail,
                TextColor = CSS_Color.PromptingColor1,
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.TextFontSize,
            };
            bodyView.AddChidren(btnEmailLogin);
            #endregion
            #region 账号填写
            accountView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(167),
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
            bodyView.AddChidren(accountView);
            btnGlobalRoaming = new Button()
            {
                Width = Application.GetRealWidth(57),
                X = Application.GetRealWidth(9),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = "+86",
                TextSize = CSS_FontSize.TextFontSize,
            };
            if (accountType == 0)
            {
                accountView.AddChidren(btnGlobalRoaming);
            }
            //btnDividingLineVertical_AccountView = new Button()
            //{
            //    X = Application.GetRealWidth(65),
            //    Gravity = Gravity.CenterVertical,
            //    Width = 1,
            //    Height = Application.GetRealHeight(20),
            //    BackgroundColor = CSS_Color.DividingLineColor,
            //};
            //accountView.AddChidren(btnDividingLineVertical_AccountView);
            etAccount = new EditText()
            {
                X = Application.GetRealWidth(49),
                Width = Application.GetRealWidth(319 - 78),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                PlaceholderTextColor = CSS_Color.PromptingColor1,
                PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber),
            };
            accountView.AddChidren(etAccount);
            btnAccountViewBottomLine = new Button()
            {
                Y = Application.GetRealHeight(42),
                BackgroundColor = CSS_Color.DividingLineColor,
                Height = Application.GetRealHeight(1),
            };
            accountView.AddChidren(btnAccountViewBottomLine);
            btnAccountIcon = new Button()
            {
                X = Application.GetRealWidth(9),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(20),
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = "LoginIcon/AccountIcon.png",
            };
            if (accountType == 1)
            {
                accountView.AddChidren(btnAccountIcon);
            }
            #endregion
            #region 密码填写
            passwordView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(223),
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
            bodyView.AddChidren(passwordView);
            btnPasswordIcon = new Button()
            {
                X = Application.GetRealWidth(9),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(20),
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = "LoginIcon/PasswordIcon.png",
            };
            passwordView.AddChidren(btnPasswordIcon);
            //btnDividingLineVertical_PasswordView1 = new Button()
            //{
            //    X = Application.GetRealWidth(65),
            //    Gravity = Gravity.CenterVertical,
            //    Width = 1,
            //    Height = Application.GetRealHeight(20),
            //    BackgroundColor = CSS_Color.DividingLineColor,
            //};
            //passwordView.AddChidren(btnDividingLineVertical_PasswordView1);
            etPassword = new EditText()
            {
                X = Application.GetRealWidth(49),
                Width = Application.GetRealWidth(319 - 78),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                PlaceholderTextColor = CSS_Color.PromptingColor1,
                PlaceholderText = Language.StringByID(StringId.PlsRegisterPassword),
                SecureTextEntry = true,
            };
            passwordView.AddChidren(etPassword);
            #region 密码登录-控件加载
            btnVisiblePassword = new Button()
            {
                X = Application.GetRealWidth(295),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(20),
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png",
                SelectedImagePath = "LoginIcon/ShowPasswordIcon.png",
            };
            passwordView.AddChidren(btnVisiblePassword);
            #endregion
            btnPasswordViewBottomLine = new Button()
            {
                Y = Application.GetRealHeight(42),
                BackgroundColor = CSS_Color.DividingLineColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                Height = Application.GetRealHeight(1),
            };
            passwordView.AddChidren(btnPasswordViewBottomLine);
            #endregion
            #region 确认密码填写
            repeatPasswordView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(279),
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
            bodyView.AddChidren(repeatPasswordView);
            btnRepeatPasswordIcon = new Button()
            {
                X = Application.GetRealWidth(9),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(20),
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = "LoginIcon/PasswordIcon.png",
            };
            repeatPasswordView.AddChidren(btnRepeatPasswordIcon);
            //btnRepeatDividingLineVertical_PasswordView1 = new Button()
            //{
            //    X = Application.GetRealWidth(65),
            //    Gravity = Gravity.CenterVertical,
            //    Width = 1,
            //    Height = Application.GetRealHeight(20),
            //    BackgroundColor = CSS_Color.DividingLineColor,
            //};
            //repeatPasswordView.AddChidren(btnRepeatDividingLineVertical_PasswordView1);
            etRepeatPassword = new EditText()
            {
                X = Application.GetRealWidth(49),
                Width = Application.GetRealWidth(319 - 78),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                PlaceholderTextColor = CSS_Color.PromptingColor1,
                PlaceholderText = Language.StringByID(StringId.PlsRegisterRepeatPassword),
                SecureTextEntry = true,
            };
            repeatPasswordView.AddChidren(etRepeatPassword);
            #region 密码登录-控件加载
            btnRepeatVisiblePassword = new Button()
            {
                X = Application.GetRealWidth(295),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(20),
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png",
                SelectedImagePath = "LoginIcon/ShowPasswordIcon.png",
            };
            repeatPasswordView.AddChidren(btnRepeatVisiblePassword);
            #endregion
            btnRepeatPasswordViewBottomLine = new Button()
            {
                Y = Application.GetRealHeight(42),
                BackgroundColor = CSS_Color.DividingLineColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                Height = Application.GetRealHeight(1),
            };
            repeatPasswordView.AddChidren(btnRepeatPasswordViewBottomLine);
            #endregion
            #region 验证码填写
            verificationCodeView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(335),
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
            bodyView.AddChidren(verificationCodeView);
            btnVerificationCodeIcon = new Button()
            {
                X = Application.GetRealWidth(9),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(20),
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = "LoginIcon/VerificationCodeIcon.png",
            };
            verificationCodeView.AddChidren(btnVerificationCodeIcon);
            //btnDividingLineVertical_VerificationCodeView1 = new Button()
            //{
            //    X = Application.GetRealWidth(65),
            //    Gravity = Gravity.CenterVertical,
            //    Width = 1,
            //    Height = Application.GetRealHeight(20),
            //    BackgroundColor = CSS_Color.DividingLineColor,
            //};
            //verificationCodeView.AddChidren(btnDividingLineVertical_VerificationCodeView1);
            etVerificationCode = new EditText()
            {
                X = Application.GetRealWidth(49),
                Width = Application.GetRealWidth(61 + 84),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                PlaceholderTextColor = CSS_Color.PromptingColor1,
                PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
            };
            verificationCodeView.AddChidren(etVerificationCode);
            btnGetVerificationCode = new Button()
            {
                X = Application.GetRealWidth(219),
                Width = Application.GetRealWidth(100),
                TextID = StringId.GetVerificationCode,
                SelectedTextColor = CSS_Color.MainColor,
                TextColor = CSS_Color.PromptingColor1,
                TextAlignment = TextAlignment.CenterRight,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            };
            verificationCodeView.AddChidren(btnGetVerificationCode);
            btnVerificationCodeViewBottomLine = new Button()
            {
                Y = Application.GetRealHeight(42),
                BackgroundColor = CSS_Color.DividingLineColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                Height = Application.GetRealHeight(1),
            };
            verificationCodeView.AddChidren(btnVerificationCodeViewBottomLine);
            #endregion
            btnRegister = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(421),
                Width = Application.GetRealWidth(220),
                Height = Application.GetRealHeight(44),
                Radius = (uint)Application.GetRealHeight(22),
                SelectedBackgroundColor = CSS_Color.MainColor,
                BackgroundColor = CSS_Color.PromptingColor1,
                TextID = StringId.Register,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.MainBackgroundColor,
                TextAlignment = TextAlignment.Center,
            };
            bodyView.AddChidren(btnRegister);
            LoadEventList();
        }
        /// <summary>
        /// 注册成功之后自动登录
        /// </summary>
        void LoadEvent_AutoLogin(string account, string password)
        {
            Dialog dialog = new Dialog();
            FrameLayout frame = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(198),
                Width = Application.GetRealWidth(288),
                Height = Application.GetRealHeight(206),
                BackgroundColor = CSS_Color.MainBackgroundColor,
                Radius = (uint)Application.GetRealWidth(12),
                BorderWidth = 0,
                BorderColor = 0x00000000,
            };
            dialog.AddChidren(frame);
            Button btnAccountText = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(40),
                Height = Application.GetRealHeight(17 + 14 + 14),
                IsMoreLines = true,
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
                Text = account,
            };
            frame.AddChidren(btnAccountText);
            Button btnTipRegisterSuccess = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(123),
                Height = Application.GetRealHeight(30),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = StringId.CongratulationsRegistration,
            };
            frame.AddChidren(btnTipRegisterSuccess);
            Button btnAutoLoginTip = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = btnTipRegisterSuccess.Bottom,
                Height = Application.GetRealHeight(17 + 8),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextID = StringId.AutomaticallyLogin,
            };
            frame.AddChidren(btnAutoLoginTip);
            Button btnHeadImage = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(150),
                Width = Application.GetRealWidth(84),
                Height = Application.GetRealWidth(84),
                Radius = (uint)Application.GetRealWidth(42),
                BorderColor = 0x00000000,
                BorderWidth = 0,
                UnSelectedImagePath = "LoginIcon/2.png",
            };
            dialog.AddChidren(btnHeadImage);
            dialog.Show();
            new Thread(() =>
            {
                Thread.Sleep(1500);
                Application.RunOnMainThread(() =>
                {
                    //创建登录线程
                    var loginThread = LoadThread_Login(account, password);
                    waitPage = new Loading();
                    new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage);
                });
            })
            { IsBackground = true }.Start();
        }
        #region 登录线程部分
        /// <summary>
        /// 加载登录线程
        /// </summary>
        Thread LoadThread_Login(string account,string password)
        {
            var loginThread = new Thread(() =>
            {
                try
                {
                    //登录
                    var loginResult = LoadMethod_Login(account,password);
                    if (loginResult)
                    {
                        //获取住宅信息
                        var getResidencesResult = LoadMethod_GetResidences();
                        if (getResidencesResult)
                        {
                            /*
                             * Wait : 推送注册
                             */
                            Application.RunOnMainThread(() =>
                            {
                                waitPage.RemoveFromParent();
                                waitPage = null;
                                //跳转页面----
                                MainPage.GoUserPage();
                            });
                        }
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"LoginPage : {ex.Message}");
                }
            })
            { IsBackground = true };
            return loginThread;
        }
        /// <summary>
        /// 调用登录接口登录
        /// </summary>
        bool LoadMethod_Login(string account, string password)
        {
            var result = false;
            //调用登录接口
            var loginResult = pm.LoginByPassword(account, password);
            if (loginResult.StateCode.ToUpper() == "SUCCESS")
            {
                var loginDataStr = Newtonsoft.Json.Linq.JObject.FromObject(loginResult.ResponseData);
                //记录用户数据
                MainPage.LoginUser = new UserInfo
                {
                    ID = (int)loginDataStr.GetValue("UserID"),
                    masterID = (int)loginDataStr.GetValue("MainUserID"),
                    accountType = (int)loginDataStr.GetValue("UserType"),
                    accountString = account,
                    password = password,
                    lastTime = DateTime.Now,
                    SIP_Account = loginDataStr.GetValue("AllVisionRegisterDevUserNameGuid").ToString(),
                    userName = loginDataStr.GetValue("Remark").ToString(),
                };
                MainPage.LoginUser.SaveUserInfo();
                MainPage.Log("登录成功。");
                result = true;
            }
            //登录失败
            else
            {
                string tipStr = "Sever erorr";
                switch (loginResult.StateCode)
                {
                    case "USERNAMEORPWDERROR":
                        tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
                        break;
                    case "Self:Net_Error":
                        tipStr = Language.StringByID(StringId.NetworkAnomaly);
                        break;
                }
                //账号或者密码错误
                Application.RunOnMainThread(() =>
                {
                    //提示原因
                    var tip = new Tip()
                    {
                        Text = tipStr,
                        CloseTime = 3,
                        Direction = AMPopTipDirection.None
                    };
                    tip.Show(bodyView);
                    btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
                    btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
                });
            }
            return result;
        }
        /// <summary>
        /// 获取住宅列表
        /// </summary>
        bool LoadMethod_GetResidences()
        {
            var result = false;
            var responsePack = pm.GetHomePager();
            if (responsePack == "Success")
            {
            }
            else
            {
                var tipStr = "Server erorr";
                switch (responsePack)
                {
                    case "NoLogin":
                        tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
                        break;
                }
                Application.RunOnMainThread(() =>
                {
                    //提示原因
                    var tip = new Tip()
                    {
                        Text = tipStr,
                        CloseTime = 3,
                        Direction = AMPopTipDirection.None
                    };
                    tip.Show(bodyView);
                });
            }
            return result;
        }
        #endregion
    }
}