xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI1-Login/RegisterPage.cs
@@ -1,5 +1,8 @@
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;
@@ -24,6 +27,36 @@
        /// 选择邮箱登录按钮
        /// </summary>
        Button btnEmailLogin;
        #region 服务器选择
        /// <summary>
        /// 服务器区域
        /// </summary>
        FrameLayout serverView;
        /// <summary>
        /// 服务器Icon按钮
        /// </summary>
        Button btnServerIcon;
        /// <summary>
        /// 服务器文本框
        /// </summary>
        Button btnServerText;
        ///// <summary>
        ///// 服务器文本框
        ///// </summary>
        //EditText etServer;
        ///// <summary>
        ///// 服务器子区域里面的分割线1
        ///// </summary>
        //Button btnLineVertical_server;
        /// <summary>
        ///服务器go按钮
        /// </summary>
        Button btnServerGo;
        /// <summary>
        /// 服务器子区域底部横线
        /// </summary>
        Button btnServerBottomLine;
        #endregion
        /// <summary>
        /// 账号子区域
        /// </summary>
@@ -47,7 +80,7 @@
        /// <summary>
        /// 账号子区域底部横线
        /// </summary>
        Button btnAccountViewBottomLine;
        Button btnVerificationCodeViewBottomLine;
        /// <summary>
        /// 密码子区域
        /// </summary>
@@ -116,11 +149,15 @@
        /// <summary>
        /// 获取验证码按钮
        /// </summary>
        Button btnGetVerificationCode;
        Button btnGetVerificationCode_Phone;
        /// <summary>
        /// 获取验证码按钮
        /// </summary>
        Button btnGetVerificationCode_Mail;
        /// <summary>
        /// 验证码子区域底部分割线
        /// </summary>
        Button btnVerificationCodeViewBottomLine;
        Button btnAccountViewBottomLine;
        /// <summary>
        /// 注册按钮
        /// </summary>
@@ -129,12 +166,12 @@
        #endregion
        #region  局部变量列表
        /// <summary>
        /// 账号类型
        /// 0:手机
        /// 1:邮箱
        /// </summary>
        int accountType = 0;
        ///// <summary>
        ///// 账号类型
        ///// 0:手机
        ///// 1:邮箱
        ///// </summary>
        //int accountType = 0;
        /// <summary>
        /// 手机号码是否有效
        /// </summary>
@@ -150,40 +187,80 @@
        /// <summary>
        /// 回调事件
        /// </summary>
        Action<string> callbackAction;
        //Action callbackAction;
        /// <summary>
        /// 注册类型
        /// 0:手机
        /// 1:邮箱
        /// </summary>
        int registerType;
        int registerType = 0;
        /// <summary>
        /// 手机区号
        /// </summary>
        string phoneZoneCode = "86";
        /// <summary>
        /// 是否选择过服务器
        /// </summary>
        bool isSelectServer;
        string registerPhone;
        string registerEmail;
        /// <summary>
        /// 是否点击了返回,用于屏蔽EditText失去焦点检测事件
        /// </summary>
        bool isHitBack;
        #endregion
        public RegisterPage()
        {
            bodyView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.BackgroundColor,
            };
            AddChidren(bodyView);
            pm = new HttpServerRequest();
        }
        /// <summary>
        /// 回调事件
        /// 账号,密码,是否手机
        /// account,password,isPhone
        /// </summary>
        Action<string, string, bool> AutoLoginAction;
        public RegisterPage(Action<string> action)
        /// <summary>
        ///
        /// </summary>
        /// <param name="autoLoginAction">注册成功回调事件</param>
        public RegisterPage(Action<string, string, bool> autoLoginAction)
        {
            AutoLoginAction = autoLoginAction;
            bodyView = new FrameLayout()
            {
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            AddChidren(bodyView);
            //2020-12-22 增加点击隐藏键盘事件
            bodyView.MouseDownEventHandler += (sender, e) => {
                Application.HideSoftInput();
            };
            pm = new HttpServerRequest();
            callbackAction = action;
        }
        //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();
            Action backAction = () =>
            {
                isHitBack = true;
                //2020-12-22 增加点击隐藏键盘事件
                Application.HideSoftInput();
            };
            new TopViewDiv(this, bodyView, Language.StringByID(StringId.Register)).LoadTopView(backAction);
            //new PublicAssmebly().LoadTopView(this, bodyView, Language.StringByID(StringId.Register));
            #region 注册方式选择
@@ -193,7 +270,7 @@
                Y = Application.GetRealHeight(112),
                Width = Application.GetRealWidth(120),
                Height = Application.GetRealHeight(40),
                TextID = StringId.LoginByPhone,
                TextID = StringId.RegisterByPhone,
                TextColor = CSS_Color.MainColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
@@ -206,19 +283,79 @@
                Y = Application.GetRealHeight(112),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealHeight(40),
                TextID = StringId.LoginByEmail,
                TextID = StringId.RegisterByEmail,
                TextColor = CSS_Color.PromptingColor1,
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.TextFontSize,
            };
            bodyView.AddChidren(btnEmailLogin);
            if(Language.CurrentLanguage!= "Chinese")
            {
                btnPhoneLogin.Width = Application.GetRealWidth(180);
                btnEmailLogin.Width = Application.GetRealWidth(180);
            }
            #endregion
            #region 服务器选择
            serverView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(167),
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
            bodyView.AddChidren(serverView);
            btnServerIcon = new Button()
            {
                X = Application.GetRealWidth(9),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(20),
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = "LoginIcon/Server.png",
            };
            serverView.AddChidren(btnServerIcon);
            btnServerText = new Button()
            {
                X = Application.GetRealWidth(49),
                Width = Application.GetRealWidth(319 - 78),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.TextFontSize,
                TextID = StringId.PleaseSelectCountryOrRegion,
            };
            serverView.AddChidren(btnServerText);
            #region 密码登录-控件加载
            btnServerGo = new Button()
            {
                X = Application.GetRealWidth(303),
                Gravity = Gravity.CenterVertical,
                Width = Application.GetMinRealAverage(16),
                Height = Application.GetMinRealAverage(16),
                UnSelectedImagePath = "Public/Right.png",
            };
            serverView.AddChidren(btnServerGo);
            #endregion
            btnServerBottomLine = new Button()
            {
                Y = Application.GetRealHeight(42),
                BackgroundColor = CSS_Color.DividingLineColor,
                SelectedBackgroundColor = CSS_Color.MainColor,
                Height = Application.GetRealHeight(1),
            };
            serverView.AddChidren(btnServerBottomLine);
            #endregion
            int topPadding = Application.GetRealHeight(12);
            #region 账号填写
            accountView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(167),
                Y = serverView.Bottom + topPadding,
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
@@ -230,10 +367,23 @@
                X = Application.GetRealWidth(9),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = "+86",
                Text = "+" + phoneZoneCode,
                TextSize = CSS_FontSize.TextFontSize,
            };
            if (accountType == 0)
            //跳转国家区号选择界面
            EventHandler<MouseEventArgs> eHandler = (sender, e) => {
                JLCountrycode.CountryCodeView.Current.Show((countryName, code) => {
                    if (!string.IsNullOrEmpty(code))
                    {
                        phoneZoneCode = code;
                        btnGlobalRoaming.Text = "+" + phoneZoneCode;
                    }
                });
            };
            btnGlobalRoaming.MouseUpEventHandler += eHandler;
            if (registerType == 0)
            {
                accountView.AddChidren(btnGlobalRoaming);
            }
@@ -257,6 +407,7 @@
                TextSize = CSS_FontSize.TextFontSize,
                PlaceholderTextColor = CSS_Color.PromptingColor1,
                PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber),
                IsNumberKeyboardType = true
            };
            accountView.AddChidren(etAccount);
@@ -276,7 +427,7 @@
                Height = Application.GetMinRealAverage(20),
                UnSelectedImagePath = "LoginIcon/AccountIcon.png",
            };
            if (accountType == 1)
            if (registerType == 1)
            {
                accountView.AddChidren(btnAccountIcon);
            }
@@ -286,7 +437,7 @@
            passwordView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(223),
                Y = accountView.Bottom + topPadding,
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
@@ -352,7 +503,7 @@
            repeatPasswordView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(279),
                Y = passwordView.Bottom + topPadding,
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
@@ -420,7 +571,8 @@
            verificationCodeView = new FrameLayout()
            {
                X = Application.GetRealWidth(28),
                Y = Application.GetRealHeight(335),
                Y = repeatPasswordView.Bottom + topPadding,
                //Y = Application.GetRealHeight(335),
                Width = Application.GetRealWidth(319),
                Height = Application.GetRealHeight(44),
            };
@@ -455,10 +607,11 @@
                TextSize = CSS_FontSize.TextFontSize,
                PlaceholderTextColor = CSS_Color.PromptingColor1,
                PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
                IsNumberKeyboardType = true
            };
            verificationCodeView.AddChidren(etVerificationCode);
            btnGetVerificationCode = new Button()
            btnGetVerificationCode_Phone = new Button()
            {
                X = Application.GetRealWidth(219),
                Width = Application.GetRealWidth(100),
@@ -468,7 +621,20 @@
                TextAlignment = TextAlignment.CenterRight,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            };
            verificationCodeView.AddChidren(btnGetVerificationCode);
            verificationCodeView.AddChidren(btnGetVerificationCode_Phone);
            btnGetVerificationCode_Mail = 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,
                Visible = false
            };
            verificationCodeView.AddChidren(btnGetVerificationCode_Mail);
            btnVerificationCodeViewBottomLine = new Button()
            {
@@ -484,10 +650,11 @@
            btnRegister = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(421),
                Y = verificationCodeView.Bottom + Application.GetRealHeight(42),
                //Y = Application.GetRealHeight(421),
                Width = Application.GetRealWidth(220),
                Height = Application.GetRealHeight(44),
                Radius = (uint)Application.GetRealHeight(22),
                Height = Application.GetRealWidth(44),
                Radius = (uint)Application.GetRealWidth(22),
                SelectedBackgroundColor = CSS_Color.MainColor,
                BackgroundColor = CSS_Color.PromptingColor1,
                TextID = StringId.Register,
@@ -499,5 +666,209 @@
            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);
                    dialog.Close();
                    var isPhone = registerType == 0;
                    AutoLoginAction?.Invoke(account, password, isPhone);
                });
            })
            { 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.Code == StateCode.SUCCESS)
        //    {
        //        var revertData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserLoginRes>(loginResult.Data.ToString());
        //        // UserInfo.Current = new UserInfo
        //        //{
        //        //    userType = revertData.userType,
        //        //    accountString = account,
        //        //    password = password,
        //        //    lastTime = DateTime.Now,
        //        //    ID = revertData.userId,
        //        //    loginTokenString = revertData.headerPrefix + revertData.accessToken,
        //        //    refreshToken = revertData.refreshToken,
        //        //    userName = revertData.name
        //        //};
        //        UserInfo.Current.userType = revertData.userType;
        //        UserInfo.Current.AccountString = account;
        //        //UserInfo.Current.password = password;
        //        UserInfo.Current.LastTime = DateTime.Now;
        //        UserInfo.Current.ID = revertData.userId;
        //        UserInfo.Current.LoginTokenString = revertData.headerPrefix + revertData.accessToken;
        //        UserInfo.Current.RefreshToken = revertData.refreshToken;
        //        UserInfo.Current.userName = revertData.name;
        //        UserInfo.Current.SaveUserInfo();
        //        MainPage.Log("登录成功。");
        //        result = true;
        //    }
        //    else
        //    {
        //        //登录失败
        //        IMessageCommon.Current.ShowErrorInfoAlter(loginResult.Code);
        //        Application.RunOnMainThread(() =>
        //        {
        //            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 == StateCode.SUCCESS)
        //    {
        //        //2020-11-13 待确认,没有住宅,不算登录成功
        //        if (UserInfo.Current.regionList != null && UserInfo.Current.regionList.Count > 0)
        //        {
        //            result = true;
        //        }
        //    }
        //    else
        //    {
        //        IMessageCommon.Current.ShowErrorInfoAlter(responsePack);
        //    }
        //    return result;
        //}
        //#endregion
    }
}