From 23532fa8ad34c89b6d24b01eaef6475fd0aad898 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期三, 15 四月 2020 18:08:24 +0800 Subject: [PATCH] ??????? --- ZigbeeApp/Shared/Phone/Login/AccountLogin.cs | 2405 +++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 1,632 insertions(+), 773 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Login/AccountLogin.cs b/ZigbeeApp/Shared/Phone/Login/AccountLogin.cs index 88dedda..ff07e07 100755 --- a/ZigbeeApp/Shared/Phone/Login/AccountLogin.cs +++ b/ZigbeeApp/Shared/Phone/Login/AccountLogin.cs @@ -133,7 +133,7 @@ { Width = LayoutParams.MatchParent, Height = Application.GetRealHeight(CommonPage.AppRealHeight), - BackgroundColor =ZigbeeColor.Current.GXCBackgroundColor + BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor }; AddChidren(midFrameLayout); #endregion @@ -173,774 +173,9 @@ Gravity = Gravity.CenterHorizontal, TextID = R.MyInternationalizationString.AppName, TextColor = ZigbeeColor.Current.GXCTextWhiteColor, - TextSize=16 + TextSize = 16 }; midFrameLayout.AddChidren(logoName); - - phoneEmailForm = new PhoneEmailForm(); - phoneEmailForm.Init(midFrameLayout); - - - //閿欒鎻愮ずBtn - loginErrorBtn = new Button() - { - X = Application.GetRealWidth(242), - Y = Application.GetRealHeight(740), - Width = Application.GetRealWidth(700), - Height = Application.GetRealHeight(58), - TextColor = ZigbeeColor.Current.GXCTextRed, - TextAlignment = TextAlignment.CenterLeft, - TextSize=CommonFormResouce.TextSize, - IsBold=true - }; - midFrameLayout.AddChidren(loginErrorBtn); - - accountPwdFL = new FrameLayout() - { - Y = Application.GetRealHeight(801), - Height = Application.GetRealHeight(553), - Width = Application.GetRealWidth(942), - Gravity = Gravity.CenterHorizontal, - BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, - Radius = (uint)Application.GetRealHeight(17) - }; - midFrameLayout.AddChidren(accountPwdFL); - - AddPhoneOrEmailFL(accountPwdFL, "Phone"); - - forgotPasswordBtn = new Button() - { - X = Application.GetRealWidth(CommonPage.AppRealWidth - 115 - 250), - Y = Application.GetRealHeight(1198), - Width = Application.GetRealWidth(250), - Height = Application.GetRealHeight(58), - TextID = R.MyInternationalizationString.ForgotPWD_1, - TextSize = CommonFormResouce.loginTextSize, - TextColor = Shared.Common.ZigbeeColor.Current.GXCTextGrayColor, - TextAlignment = TextAlignment.CenterRight - }; - midFrameLayout.AddChidren(forgotPasswordBtn); - - loginBtn = new Button() - { - Y = Application.GetRealHeight(1293), - Width = Application.GetRealWidth(688), - Height = Application.GetRealHeight(127), - Gravity = Gravity.CenterHorizontal, - TextID = R.MyInternationalizationString.Login, - TextSize = 16, - TextColor = ZigbeeColor.Current.GXCTextGrayColor, - SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor, - SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor, - BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor, - Radius = (uint)Application.GetRealHeight(127 / 2), - Enable = false, - IsBold=true - }; - midFrameLayout.AddChidren(loginBtn); - - loginByCodeBtn = new Button() - { - X=Application.GetRealWidth(98), - Y = Application.GetRealHeight(1466), - Width = Application.GetRealWidth(300), - Height = Application.GetRealHeight(49), - TextID = R.MyInternationalizationString.LoginByCode, - TextColor = ZigbeeColor.Current.GXCTextGrayColor, - TextAlignment = TextAlignment.CenterLeft, - TextSize = CommonFormResouce.loginTextSize - }; - midFrameLayout.AddChidren(loginByCodeBtn); - - registerBtn = new Button() - { - X = Application.GetRealWidth(738), - Y = Application.GetRealHeight(1466), - Width = Application.GetRealWidth(244), - Height = Application.GetRealHeight(49), - TextID = R.MyInternationalizationString.Register, - TextColor = ZigbeeColor.Current.GXCTextGrayColor, - TextAlignment = TextAlignment.CenterRight, - TextSize = CommonFormResouce.loginTextSize - }; - midFrameLayout.AddChidren(registerBtn); - - wechatBtn = new Button - { - X = Application.GetRealWidth(395), - Y = Application.GetRealHeight(1737), - Width = Application.GetMinRealAverage(115), - Height = Application.GetMinRealAverage(115), - UnSelectedImagePath = "Account/Wechat.png", - Gravity=Gravity.CenterHorizontal - }; - midFrameLayout.AddChidren(wechatBtn); - - qqBtn = new Button - { - X = Application.GetRealWidth(567), - Y = Application.GetRealHeight(1737), - Width = Application.GetMinRealAverage(115), - Height = Application.GetMinRealAverage(115), - UnSelectedImagePath = "Account/QQ.png" - }; - //midFrameLayout.AddChidren(qqBtn); - - #endregion - - BindEvent(); - - if (account.Contains("@") == true) - { - SelectPhoneOrEmail_MouseUpEvent(phoneEmailForm.SelectedEmail, null); - } - } - - #endregion - - #region 鈼� 缁戝畾浜嬩欢_________________________ - - /// <summary> - /// 缁戝畾鎸夐挳浜嬩欢 - /// </summary> - private void BindEvent() - { - //閫夋嫨鎵嬫満閭 - phoneEmailForm.SelectedPhone.MouseUpEventHandler += SelectPhoneOrEmail_MouseUpEvent; - phoneEmailForm.SelectedEmail.MouseUpEventHandler += SelectPhoneOrEmail_MouseUpEvent; - //鐧诲綍浜嬩欢 - loginBtn.MouseUpEventHandler += LoginBtnEvent; - //鐭俊鐧诲綍 - loginByCodeBtn.MouseUpEventHandler += LoginByCode; - //娉ㄥ唽浜嬩欢 - registerBtn.MouseUpEventHandler += Register; - //蹇樿瀵嗙爜 - forgotPasswordBtn.MouseUpEventHandler += ForgetPWD_MouseUpEvent; - //wechat - wechatBtn.MouseUpEventHandler += LoginByWechat; - //qq - qqBtn.MouseUpEventHandler += LoginByQQ; - } - - #endregion - - #region 鈼� 鐧诲綍____________________________ - - /// <summary> - /// 鐧诲綍浜嬩欢 - /// </summary> - /// <param name="sender">Sender.</param> - /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> - private void LoginBtnEvent(object sender,MouseEventArgs mouseEventArgs) - { - if (phoneEmailForm.SelectedPhone.IsSelected) - { - Login(phoneRow.AccountET.Text.Trim(), phonePwdRow.PasswrodET.Text.Trim()); - } - else - { - Login(emailRow.AccountET.Text.Trim(), emailPwdRow.PasswrodET.Text.Trim()); - } - - } - - /// <summary> - /// 鐧诲綍 - /// </summary> - /// <param name="accountStr">Account.</param> - /// <param name="passwordStr">Password.</param> - private void Login(string accountStr, string passwordStr) - { - //Application.RunOnMainThread( () => - //{ - Action action = async () => - { - try - { - if(CheckAccount(accountStr)==false) - { - return; - } - - CommonPage.Loading.Start(Language.StringByID(R.MyInternationalizationString.Logining)); - - var requestObj = new SendDataToServer.LoginObj - { - Account = accountStr, - Password = passwordStr, - Source = CommonPage.Source, - Company = CommonPage.Company - }; - var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj); - var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/Login", System.Text.Encoding.UTF8.GetBytes(requestJson)); - if (revertObj == null) - { - CommonPage.Instance.FailureToServer(); - CommonPage.Loading.Hide(); - return; - } - var stateCodeStr = revertObj.StateCode.ToUpper(); - //Error 涓嶈兘鐩存帴浠庢湇鍔″櫒鍙栵紝鍙兘鏍规嵁鐘舵�佺爜閫愪竴鍒ゆ柇 - if (stateCodeStr == "SUCCESS") - { - if (revertObj.ResponseData == null) - { - return; - } - - HomePage.Instance.ShowLoginLoadView(); - - new System.Threading.Thread(async () => - { - //瀛樺偍鏁版嵁 - var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString()); - var revertData = responseDataObj; - Config.ReFresh(); - //鏍囪涓婁竴娆℃槸涓嶆槸鍚屼竴涓处鍙风櫥闄� - UserCenter.UserCenterResourse.ResidenceOption.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid; - Config.Instance.Account = revertData.Account; - Config.Instance.Password = passwordStr; - Config.Instance.MD5PWD = revertData.MD5PWD; - Config.Instance.Guid = revertData.Guid; - Config.Instance.LoginDateTime = DateTime.Now; - Config.Instance.LoginToken = revertData.Token; - if (Config.Instance.AccountList.Find((obj) => obj == revertData.Account) == null) - { - Config.Instance.AccountList.Add(revertData.Account); - } - Config.Instance.Save(); - - var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); - var homes = await House.GetHomeLists(); - //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ - await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); - //鍚姩ZigBee - ZigBee.Common.Application.Init(); - - UserCenter.HdlRoomLogic.Current.InitAllRoom(); - Application.RunOnMainThread(() => - { - CommonPage.Loading.Hide(); - this.RemoveFromParent(); - CommonPage.Instance.RemoveViewByTag("Login"); - UserPage.Instance.Fresh(); - }); - }) - { IsBackground = true }.Start(); - } - else if (stateCodeStr == "NOTVERIFY") - { - CommonPage.Loading.Hide(); - //鏈縺娲� - loginErrorBtn.TextID = R.MyInternationalizationString.NOTVERIFY; - } - else if (stateCodeStr == "NOTENABLE") - { - CommonPage.Loading.Hide(); - //璇ョ敤鎴峰睘浜庤皟璇曡处鍙凤紝骞舵湭鍚敤 - loginErrorBtn.TextID = R.MyInternationalizationString.NOTENABLE; - } - else if (stateCodeStr == "USERNAMEORPWDERROR") - { - CommonPage.Loading.Hide(); - //璐﹀彿鎴栧瘑鐮侀敊璇� - loginErrorBtn.TextID = R.MyInternationalizationString.USERNAMEORPWDERROR; - } - else if (stateCodeStr == "ACCOUNTNOEXISTS") - { - CommonPage.Loading.Hide(); - //璐﹀彿涓嶅瓨鍦� - loginErrorBtn.TextID = R.MyInternationalizationString.ACCOUNTNOEXISTS; - } - else if (stateCodeStr == "YOUDATANOISLOCALREGION") - { - CommonPage.Loading.Hide(); - //涓嶅湪鏈尯鍩燂紝闇�瑕侀噸瀹氬悜鍖哄煙鍚庡啀娆¤姹傜櫥褰� - if (revertObj.ResponseData == null) - { - return; - } - var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginLocalRegionRes>(revertObj.ResponseData.ToString()); - CommonPage.RequestHttpsHost = responseDataObj.RegionServer; - //鍐嶆鐧诲綍 - Login(accountStr, passwordStr); - } - else - { - loginErrorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; - } - } - catch (Exception ex) - { - System.Console.WriteLine($"鐧诲綍澶辫触--{ex.Message}"); - CommonPage.Loading.Hide(); - CommonPage.Instance.FailureToServer(); - } - finally - { - //CommonPage.Loading.Hide(); - } - //}); - }; - action(); - } - - /// <summary> - /// CheckAccount - /// </summary> - /// <param name="accountStr"></param> - /// <returns></returns> - private bool CheckAccount(string accountStr) - { - if (phoneEmailForm.SelectedEmail.IsSelected) - { - if (AccountLogic.Instance.CheckEmail(accountStr) == false) - { - loginErrorBtn.TextID = R.MyInternationalizationString.TheEmailError; - return false; - } - } - else - { - if (AccountLogic.Instance.CheckPhone(accountStr) == false) - { - loginErrorBtn.TextID = R.MyInternationalizationString.ThePhoneError; - return false; - } - } - return true; - } - - /// <summary> - /// 閫氳繃楠岃瘉鐮佺櫥褰� - /// </summary> - /// <param name="sender">Sender.</param> - /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> - private void LoginByCode(object sender,MouseEventArgs mouseEventArgs) - { - //this.RemoveFromParent(); - var loginByCodePage = new AccountLoginByCode(); - CommonPage.Instance.AddChidren(loginByCodePage); - loginByCodePage.Show(); - } - - /// <summary> - /// wechat鐧诲綍 - /// </summary> - /// <param name="sender"></param> - /// <param name="mouseEventArgs"></param> - private void LoginByWechat(object sender, MouseEventArgs mouseEventArgs) - { -#if Android - //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), - // Language.StringByID(R.MyInternationalizationString.LoginByWechat), - // Language.StringByID(R.MyInternationalizationString.Cancel), - // Language.StringByID(R.MyInternationalizationString.Confrim)); - //alert.Show(); - //alert.ResultEventHandler += (send, e) => - //{ - //if (e) - //{ - com.hdl.home.Application.WXLogin(); - com.hdl.home.WXEntryActivity.RespAction = (authStr) => - { - if (authStr == null) - { - - } - else - { - new System.Threading.Thread(async () => - { - var re = await isBindAuthAsync(authStr); - if (re) - { - Application.RunOnMainThread(() => - { - //鐩存帴鐧诲綍 - HomePage.Instance.ShowLoginLoadView(); - }); - var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); - var homes = await House.GetHomeLists(); - //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ - await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); - //鍚姩ZigBee - ZigBee.Common.Application.Init(); - UserCenter.HdlRoomLogic.Current.InitAllRoom(); - Application.RunOnMainThread(() => - { - this.RemoveFromParent(); - CommonPage.Instance.RemoveViewByTag("Login"); - UserPage.Instance.Fresh(); - }); - } - else - { - var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); - Application.RunOnMainThread(() => - { - var registerPage = new AccountRegister(); - Shared.Common.CommonPage.Instance.AddChidren(registerPage); - registerPage.OpenID = authRes.openid; - registerPage.Show(); - }); - } - }) - { IsBackground = true }.Start(); - } - }; - //} - //}; -#endif - -#if iOS - Home.IOS.AppDelegate.WXLogin(); - Home.IOS.AppDelegate.RespAction = (authStr) => - { - if (authStr == null) - { - - } - else - { - new System.Threading.Thread(async () => - { - - var re = await isBindAuthAsync(authStr); - if (re) - { - //鐩存帴鐧诲綍 - //this.RemoveFromParent(); - - //UserPage.Instance.Fresh(); - var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); - var homes = await House.GetHomeLists(); - //鍚姩ZigBee - ZigBee.Common.Application.Init(); - //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ - await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); - UserCenter.HdlRoomLogic.Current.InitAllRoom(); - Application.RunOnMainThread(() => - { - this.RemoveFromParent(); - UserPage.Instance.Fresh(); - }); - } - else - { - var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); - Application.RunOnMainThread(() => - { - var registerPage = new AccountRegister(); - Shared.Common.CommonPage.Instance.AddChidren(registerPage); - registerPage.OpenID = authRes.openid; - registerPage.Show(); - }); - } - }) - { IsBackground = true }.Start(); - } - }; -#endif - - - - } - - /// <summary> - /// qq鐧诲綍 - /// </summary> - /// <param name="sender"></param> - /// <param name="mouseEventArgs"></param> - private void LoginByQQ(object sender, MouseEventArgs mouseEventArgs) - { - - } - - /// <summary> - /// 鏄惁宸茬粦瀹� - /// </summary> - /// <param name="authStr"></param> - /// <returns></returns> - private async System.Threading.Tasks.Task<bool> isBindAuthAsync(string authStr) - { - var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); - var auth = new SendDataToServer.AuthUser() - { - AccessToken = authRes.access_token, - RefreshToken = authRes.refresh_token, - OpenID = authRes.openid - }; - //鑾峰彇寰俊鏄电О - var strUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + authRes.access_token; - strUrl += "&openid=" + authRes.openid; - var byteData = await Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(strUrl, null, null, "GET"); - if (byteData == null) - { - return false; - } - var receipData = System.Text.Encoding.UTF8.GetString(byteData); - var nickData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserCenter.NicknameInfo>(receipData); - auth.UserName = nickData.nickname; - - var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(auth); - var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/InsertOrUpdateAuthUser", System.Text.Encoding.UTF8.GetBytes(requestJson)); - if (revertObj == null) - { - return false; - } - var stateCodeStr = revertObj.StateCode.ToUpper(); - if (stateCodeStr == "SUCCESS") - { - var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString()); - var revertData = responseDataObj; - //鏍囪涓婁竴娆℃槸涓嶆槸鍚屼竴涓处鍙风櫥闄� - UserCenter.UserCenterResourse.ResidenceOption.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid; - Config.Instance.Account = revertData.Account; - Config.Instance.MD5PWD = revertData.MD5PWD; - Config.Instance.Guid = revertData.Guid; - Config.Instance.LoginDateTime = DateTime.Now; - if (Config.Instance.AccountList.Find((obj) => obj == revertData.Account) == null) - { - Config.Instance.AccountList.Add(revertData.Account); - } - Config.Instance.Save(); - return true; - } - else - { - return false; - } - } - - /// <summary> - /// phone/email 閫夋嫨 - /// </summary> - /// <param name="sender"></param> - /// <param name="mouseEventArgs"></param> - private void SelectPhoneOrEmail_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) - { - phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false; - phoneEmailForm.SelectedPhone.IsBold = phoneEmailForm.SelectedEmail.IsBold = false; - loginBtn.Enable = loginBtn.IsSelected = false; - loginErrorBtn.Text = string.Empty; - (sender as Button).IsSelected = (sender as Button).IsBold = true; - if((sender as Button).Tag.ToString()=="Phone") - { - AddPhoneOrEmailFL(accountPwdFL, "Phone"); - } - else - { - AddPhoneOrEmailFL(accountPwdFL, "Email"); - } - } - /// <summary> - /// AddPhoneOrEmailFL - /// </summary> - /// <param name="accountPwdFrameLayout"></param> - /// <param name="phoneOrEmail"></param> - private void AddPhoneOrEmailFL(FrameLayout accountPwdFrameLayout,string phoneOrEmail) - { - if (phoneOrEmail == "Phone") - { - if (phoneRow != null) - { - phoneRow.Visible = true; - phonePwdRow.Visible = true; - if (emailRow != null) - { - emailRow.Visible = false; - emailPwdRow.Visible = false; - } - this.Pwd_TextChange(phonePwdRow); - return; - } - phoneRow = new PhoneLoginRowForm(); - phoneRow.Init(accountPwdFrameLayout, this, this.oldInputPhone, 29, 29); - phoneRow.AccountET.TextChangeEventHandler += Account_TextChange; - - phonePwdRow = new PwdLoginRowForm(); - phonePwdRow.Init(accountPwdFrameLayout, 29, 225); - phonePwdRow.PasswrodET.TextChangeEventHandler += (sender, e) => - { - this.Pwd_TextChange(phonePwdRow); - }; - } - else - { - if (emailRow != null) - { - emailRow.Visible = true; - emailPwdRow.Visible = true; - if (phoneRow != null) - { - phoneRow.Visible = false; - phonePwdRow.Visible = false; - } - this.Pwd_TextChange(emailPwdRow); - return; - } - emailRow = new EmailLoginRowForm(); - emailRow.Init(accountPwdFrameLayout, this.oldInputEmail, 29, 29); - emailRow.AccountET.TextChangeEventHandler += Account_TextChange; - - emailPwdRow = new PwdLoginRowForm(); - emailPwdRow.Init(accountPwdFrameLayout, 29, 225); - emailPwdRow.PasswrodET.TextChangeEventHandler += (sender, e) => - { - this.Pwd_TextChange(emailPwdRow); - }; - } - } - #endregion - - - #region 鈼� 蹇樿瀵嗙爜________________________ - /// <summary> - /// 蹇樿瀵嗙爜 - /// </summary> - private void ForgetPWD_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) - { - var forgot = new AccountForgetPWD(); - CommonPage.Instance.AddChidren(forgot); - forgot.Show(); - } - - #endregion - - #region 鈼� 娉ㄥ唽_____________________________ - - /// <summary> - /// 娉ㄥ唽 - /// </summary> - /// <param name="sender">Sender.</param> - /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> - private void Register(object sender,MouseEventArgs mouseEventArgs) - { - var registerPage = new AccountRegister(); - CommonPage.Instance.AddChidren(registerPage); - registerPage.Show(); - } - - #endregion - - #region 鈼� 璐﹀彿瀵嗙爜鐩戝惉______________________ - /// <summary> - /// 璐﹀彿鐩戝惉 - /// </summary> - /// <param name="sender">Sender.</param> - /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> - private void Account_TextChange(object sender,string mouseEventArgs) - { - loginErrorBtn.Text = string.Empty; - } - - /// <summary> - /// 瀵嗙爜鐩戝惉浜嬩欢 - /// </summary> - /// <param name="pwdRow">Sender.</param> - private void Pwd_TextChange(PwdLoginRowForm pwdRow) - { - loginErrorBtn.Text = string.Empty; - string pswText = pwdRow.PasswrodET.Text.Trim(); - if (1 <= pswText.Length && pswText.Length <= 16 && (phoneRow.AccountET.Text.Trim().Length > 0 || emailRow?.AccountET.Text.Trim().Length>0)) - { - loginBtn.Enable = loginBtn.IsSelected = true; - } - else if (pswText.Length > 16) - { - pwdRow.PasswrodET.Text = pswText.Substring(0, 16); - if (phoneRow.AccountET.Text.Trim().Length > 0 || emailRow?.AccountET.Text.Trim().Length > 0) - { - loginBtn.Enable = loginBtn.IsSelected = true; - } - } - else - { - loginBtn.Enable = loginBtn.IsSelected = false; - } - } - - - #endregion - - - - - #region 鈻� 鍙橀噺澹版槑___________________________ - - /// <summary> - /// 鎵嬫満璐﹀彿鐧婚檰鐨勬帶浠跺鍣� - /// </summary> - private FrameLayout frameAccLoginPhoneback = null; - /// <summary> - /// 閭璐﹀彿鐧婚檰鐨勬帶浠跺鍣� - /// </summary> - private FrameLayout frameEmailLoginPhoneback = null; - - #endregion - - #region 鈻� 鍒濆鍖朹____________________________ - - /// <summary> - /// 鐣岄潰鏄剧ず - /// </summary> - /// <param name="account">鐧婚檰璐﹀彿</param> - public void ShowForm(string account = "") - { - if (Config.Instance.IsLogin == true) - { - return; - } - CommonPage.Instance.IsDrawerLockMode = true; - this.Tag = "Login"; - - //鐣岄潰涓婇儴鐨勯粦鑹插浘鐗� - var btnTopBlackPic = new NormalViewControl(this.Width, Application.GetRealHeight(619), false); - btnTopBlackPic.UnSelectedImagePath = "Account/Logo_loginBG.png"; - this.AddChidren(btnTopBlackPic); - - //涓棿娴呯櫧鑹茬殑鑳屾櫙 - var frameMidBack = new FrameLayout(); - frameMidBack.Y = btnTopBlackPic.Bottom; - frameMidBack.Height = this.Height - btnTopBlackPic.Bottom; - frameMidBack.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; - this.AddChidren(frameMidBack); - - //HdlHome鐨勫浘鏍� - var btnLogoIcon = new PicViewControl(184, 184); - btnLogoIcon.Y = Application.GetRealHeight(230); - btnLogoIcon.UnSelectedImagePath = "Account/Logo_White.png"; - btnLogoIcon.Gravity = Gravity.CenterHorizontal; - this.AddChidren(btnLogoIcon); - //Hdl Home - var btnLogoName = new NormalViewControl(300, 69, true); - btnLogoName.Y = btnLogoIcon.Bottom; - btnLogoName.Gravity = Gravity.CenterHorizontal; - btnLogoName.TextID = R.MyInternationalizationString.AppName; - btnLogoName.TextColor = ZigbeeColor.Current.GXCTextWhiteColor; - btnLogoName.TextSize = 16; - this.AddChidren(btnLogoName); - - //鎵嬫満鍙�,閭鐨勮彍鍗曟帶浠� - int defultIndex = account.Contains("@") == false ? 1 : 2; - var sitchControl = new Controls.PhoneEmailSelectControl(); - sitchControl.Y = Application.GetRealHeight(559); - this.AddChidren(sitchControl); - sitchControl.SelectMenuEvent += (selectIndex) => - { - //鎵嬫満鍙� - if (selectIndex == 1) - { - } - //閭 - else if (selectIndex == 2) - { - } - }; - //鎵ц鍒濆鍖� - sitchControl.InitControl(ZigbeeColor.Current.GXCButtonSelectedColor, defultIndex); - phoneEmailForm = new PhoneEmailForm(); phoneEmailForm.Init(midFrameLayout); @@ -1051,12 +286,728 @@ }; //midFrameLayout.AddChidren(qqBtn); + //娣诲姞鏈嶅姟鍗忚鎺т欢 + //this.AddServiceAgreementControl(phoneEmailBGFL); + + #endregion + BindEvent(); if (account.Contains("@") == true) { SelectPhoneOrEmail_MouseUpEvent(phoneEmailForm.SelectedEmail, null); + } + } + + #endregion + + #region 鈼� 缁戝畾浜嬩欢_________________________ + + /// <summary> + /// 缁戝畾鎸夐挳浜嬩欢 + /// </summary> + private void BindEvent() + { + //閫夋嫨鎵嬫満閭 + phoneEmailForm.SelectedPhone.MouseUpEventHandler += SelectPhoneOrEmail_MouseUpEvent; + phoneEmailForm.SelectedEmail.MouseUpEventHandler += SelectPhoneOrEmail_MouseUpEvent; + //鐧诲綍浜嬩欢 + loginBtn.MouseUpEventHandler += LoginBtnEvent; + //鐭俊鐧诲綍 + loginByCodeBtn.MouseUpEventHandler += LoginByCode; + //娉ㄥ唽浜嬩欢 + registerBtn.MouseUpEventHandler += Register; + //蹇樿瀵嗙爜 + forgotPasswordBtn.MouseUpEventHandler += ForgetPWD_MouseUpEvent; + //wechat + wechatBtn.MouseUpEventHandler += LoginByWechat; + //qq + qqBtn.MouseUpEventHandler += LoginByQQ; + } + + #endregion + + #region 鈼� 鐧诲綍____________________________ + + /// <summary> + /// 鐧诲綍浜嬩欢 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void LoginBtnEvent(object sender, MouseEventArgs mouseEventArgs) + { + //妫�娴嬮殣绉佸崗璁� + if (this.CheckPrivacyPolicy() == false) + { + return; + } + if (phoneEmailForm.SelectedPhone.IsSelected) + { + Login(phoneRow.AccountET.Text.Trim(), phonePwdRow.PasswrodET.Text.Trim()); + } + else + { + Login(emailRow.AccountET.Text.Trim(), emailPwdRow.PasswrodET.Text.Trim()); + } + + } + + /// <summary> + /// 鐧诲綍 + /// </summary> + /// <param name="accountStr">Account.</param> + /// <param name="passwordStr">Password.</param> + private void Login(string accountStr, string passwordStr) + { + //Application.RunOnMainThread( () => + //{ + Action action = async () => + { + try + { + if (CheckAccount(accountStr) == false) + { + return; + } + + CommonPage.Loading.Start(Language.StringByID(R.MyInternationalizationString.Logining)); + + var requestObj = new SendDataToServer.LoginObj + { + Account = accountStr, + Password = passwordStr, + Source = CommonPage.Source, + Company = CommonPage.Company + }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj); + var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/Login", System.Text.Encoding.UTF8.GetBytes(requestJson)); + if (revertObj == null) + { + CommonPage.Instance.FailureToServer(); + CommonPage.Loading.Hide(); + return; + } + var stateCodeStr = revertObj.StateCode.ToUpper(); + //Error 涓嶈兘鐩存帴浠庢湇鍔″櫒鍙栵紝鍙兘鏍规嵁鐘舵�佺爜閫愪竴鍒ゆ柇 + if (stateCodeStr == "SUCCESS") + { + if (revertObj.ResponseData == null) + { + return; + } + + HomePage.Instance.ShowLoginLoadView(); + + new System.Threading.Thread(async () => + { + //瀛樺偍鏁版嵁 + var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString()); + var revertData = responseDataObj; + Config.ReFresh(); + //鏍囪涓婁竴娆℃槸涓嶆槸鍚屼竴涓处鍙风櫥闄� + UserCenter.UserCenterResourse.ResidenceOption.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid; + Config.Instance.Account = revertData.Account; + Config.Instance.Password = passwordStr; + Config.Instance.MD5PWD = revertData.MD5PWD; + Config.Instance.Guid = revertData.Guid; + Config.Instance.LoginDateTime = DateTime.Now; + Config.Instance.LoginToken = revertData.Token; + Config.Instance.Save(); + + var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); + var homes = await House.GetHomeLists(); + //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ + await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); + //鍚姩ZigBee + ZigBee.Common.Application.Init(); + + UserCenter.HdlRoomLogic.Current.InitAllRoom(); + Application.RunOnMainThread(() => + { + CommonPage.Loading.Hide(); + this.RemoveFromParent(); + CommonPage.Instance.RemoveViewByTag("Login"); + UserPage.Instance.Fresh(); + }); + }) + { IsBackground = true }.Start(); + } + else if (stateCodeStr == "NOTVERIFY") + { + CommonPage.Loading.Hide(); + //鏈縺娲� + loginErrorBtn.TextID = R.MyInternationalizationString.NOTVERIFY; + } + else if (stateCodeStr == "NOTENABLE") + { + CommonPage.Loading.Hide(); + //璇ョ敤鎴峰睘浜庤皟璇曡处鍙凤紝骞舵湭鍚敤 + loginErrorBtn.TextID = R.MyInternationalizationString.NOTENABLE; + } + else if (stateCodeStr == "USERNAMEORPWDERROR") + { + CommonPage.Loading.Hide(); + //璐﹀彿鎴栧瘑鐮侀敊璇� + loginErrorBtn.TextID = R.MyInternationalizationString.USERNAMEORPWDERROR; + } + else if (stateCodeStr == "ACCOUNTNOEXISTS") + { + CommonPage.Loading.Hide(); + //璐﹀彿涓嶅瓨鍦� + loginErrorBtn.TextID = R.MyInternationalizationString.ACCOUNTNOEXISTS; + } + else if (stateCodeStr == "YOUDATANOISLOCALREGION") + { + CommonPage.Loading.Hide(); + //涓嶅湪鏈尯鍩燂紝闇�瑕侀噸瀹氬悜鍖哄煙鍚庡啀娆¤姹傜櫥褰� + if (revertObj.ResponseData == null) + { + return; + } + var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginLocalRegionRes>(revertObj.ResponseData.ToString()); + CommonPage.RequestHttpsHost = responseDataObj.RegionServer; + //鍐嶆鐧诲綍 + Login(accountStr, passwordStr); + } + else + { + loginErrorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; + } + } + catch (Exception ex) + { + System.Console.WriteLine($"鐧诲綍澶辫触--{ex.Message}"); + CommonPage.Loading.Hide(); + CommonPage.Instance.FailureToServer(); + } + finally + { + //CommonPage.Loading.Hide(); + } + //}); + }; + action(); + } + + /// <summary> + /// CheckAccount + /// </summary> + /// <param name="accountStr"></param> + /// <returns></returns> + private bool CheckAccount(string accountStr) + { + if (phoneEmailForm.SelectedEmail.IsSelected) + { + if (AccountLogic.Instance.CheckEmail(accountStr) == false) + { + loginErrorBtn.TextID = R.MyInternationalizationString.TheEmailError; + return false; + } + } + else + { + if (AccountLogic.Instance.CheckPhone(accountStr) == false) + { + loginErrorBtn.TextID = R.MyInternationalizationString.ThePhoneError; + return false; + } + } + return true; + } + + /// <summary> + /// 閫氳繃楠岃瘉鐮佺櫥褰� + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void LoginByCode(object sender, MouseEventArgs mouseEventArgs) + { + //妫�娴嬮殣绉佸崗璁� + if (this.CheckPrivacyPolicy() == false) + { + return; + } + //this.RemoveFromParent(); + var loginByCodePage = new AccountLoginByCode(); + CommonPage.Instance.AddChidren(loginByCodePage); + loginByCodePage.Show(); + } + + /// <summary> + /// wechat鐧诲綍 + /// </summary> + /// <param name="sender"></param> + /// <param name="mouseEventArgs"></param> + private void LoginByWechat(object sender, MouseEventArgs mouseEventArgs) + { + //妫�娴嬮殣绉佸崗璁� + if (this.CheckPrivacyPolicy() == false) + { + return; } +#if Android + //var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), + // Language.StringByID(R.MyInternationalizationString.LoginByWechat), + // Language.StringByID(R.MyInternationalizationString.Cancel), + // Language.StringByID(R.MyInternationalizationString.Confrim)); + //alert.Show(); + //alert.ResultEventHandler += (send, e) => + //{ + //if (e) + //{ + com.hdl.home.Application.WXLogin(); + com.hdl.home.WXEntryActivity.RespAction = (authStr) => + { + if (authStr == null) + { + + } + else + { + new System.Threading.Thread(async () => + { + var re = await isBindAuthAsync(authStr); + if (re) + { + Application.RunOnMainThread(() => + { + //鐩存帴鐧诲綍 + HomePage.Instance.ShowLoginLoadView(); + }); + var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); + var homes = await House.GetHomeLists(); + //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ + await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); + //鍚姩ZigBee + ZigBee.Common.Application.Init(); + UserCenter.HdlRoomLogic.Current.InitAllRoom(); + Application.RunOnMainThread(() => + { + this.RemoveFromParent(); + CommonPage.Instance.RemoveViewByTag("Login"); + UserPage.Instance.Fresh(); + }); + } + else + { + var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); + Application.RunOnMainThread(() => + { + var registerPage = new AccountRegister(); + Shared.Common.CommonPage.Instance.AddChidren(registerPage); + registerPage.OpenID = authRes.openid; + registerPage.Show(); + }); + } + }) + { IsBackground = true }.Start(); + } + }; + //} + //}; +#endif + +#if iOS + Home.IOS.AppDelegate.WXLogin(); + Home.IOS.AppDelegate.RespAction = (authStr) => + { + if (authStr == null) + { + + } + else + { + new System.Threading.Thread(async () => + { + + var re = await isBindAuthAsync(authStr); + if (re) + { + //鐩存帴鐧诲綍 + //this.RemoveFromParent(); + + //UserPage.Instance.Fresh(); + var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); + var homes = await House.GetHomeLists(); + //鍚姩ZigBee + ZigBee.Common.Application.Init(); + //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ + await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); + UserCenter.HdlRoomLogic.Current.InitAllRoom(); + Application.RunOnMainThread(() => + { + this.RemoveFromParent(); + UserPage.Instance.Fresh(); + }); + } + else + { + var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); + Application.RunOnMainThread(() => + { + var registerPage = new AccountRegister(); + Shared.Common.CommonPage.Instance.AddChidren(registerPage); + registerPage.OpenID = authRes.openid; + registerPage.Show(); + }); + } + }) + { IsBackground = true }.Start(); + } + }; +#endif + + + + } + + /// <summary> + /// qq鐧诲綍 + /// </summary> + /// <param name="sender"></param> + /// <param name="mouseEventArgs"></param> + private void LoginByQQ(object sender, MouseEventArgs mouseEventArgs) + { + + } + + /// <summary> + /// phone/email 閫夋嫨 + /// </summary> + /// <param name="sender"></param> + /// <param name="mouseEventArgs"></param> + private void SelectPhoneOrEmail_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) + { + phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false; + phoneEmailForm.SelectedPhone.IsBold = phoneEmailForm.SelectedEmail.IsBold = false; + loginBtn.Enable = loginBtn.IsSelected = false; + loginErrorBtn.Text = string.Empty; + (sender as Button).IsSelected = (sender as Button).IsBold = true; + if ((sender as Button).Tag.ToString() == "Phone") + { + AddPhoneOrEmailFL(accountPwdFL, "Phone"); + } + else + { + AddPhoneOrEmailFL(accountPwdFL, "Email"); + } + } + /// <summary> + /// AddPhoneOrEmailFL + /// </summary> + /// <param name="accountPwdFrameLayout"></param> + /// <param name="phoneOrEmail"></param> + private void AddPhoneOrEmailFL(FrameLayout accountPwdFrameLayout, string phoneOrEmail) + { + if (phoneOrEmail == "Phone") + { + if (phoneRow != null) + { + phoneRow.Visible = true; + phonePwdRow.Visible = true; + if (emailRow != null) + { + emailRow.Visible = false; + emailPwdRow.Visible = false; + } + this.Pwd_TextChange(phonePwdRow); + return; + } + phoneRow = new PhoneLoginRowForm(); + phoneRow.Init(accountPwdFrameLayout, this, this.oldInputPhone, 29, 29); + phoneRow.AccountET.TextChangeEventHandler += Account_TextChange; + + phonePwdRow = new PwdLoginRowForm(); + phonePwdRow.Init(accountPwdFrameLayout, 29, 225); + phonePwdRow.PasswrodET.TextChangeEventHandler += (sender, e) => + { + this.Pwd_TextChange(phonePwdRow); + }; + } + else + { + if (emailRow != null) + { + emailRow.Visible = true; + emailPwdRow.Visible = true; + if (phoneRow != null) + { + phoneRow.Visible = false; + phonePwdRow.Visible = false; + } + this.Pwd_TextChange(emailPwdRow); + return; + } + emailRow = new EmailLoginRowForm(); + emailRow.Init(accountPwdFrameLayout, this.oldInputEmail, 29, 29); + emailRow.AccountET.TextChangeEventHandler += Account_TextChange; + + emailPwdRow = new PwdLoginRowForm(); + emailPwdRow.Init(accountPwdFrameLayout, 29, 225); + emailPwdRow.PasswrodET.TextChangeEventHandler += (sender, e) => + { + this.Pwd_TextChange(emailPwdRow); + }; + } + } + #endregion + + + #region 鈼� 蹇樿瀵嗙爜________________________ + /// <summary> + /// 蹇樿瀵嗙爜 + /// </summary> + private void ForgetPWD_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) + { + //妫�娴嬮殣绉佸崗璁� + if (this.CheckPrivacyPolicy() == false) + { + return; + } + var forgot = new AccountForgetPWD(); + CommonPage.Instance.AddChidren(forgot); + forgot.Show(); + } + + #endregion + + #region 鈼� 娉ㄥ唽_____________________________ + + /// <summary> + /// 娉ㄥ唽 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void Register(object sender, MouseEventArgs mouseEventArgs) + { + //妫�娴嬮殣绉佸崗璁� + if (this.CheckPrivacyPolicy() == false) + { + return; + } + var registerPage = new AccountRegister(); + CommonPage.Instance.AddChidren(registerPage); + registerPage.Show(); + } + + #endregion + + #region 鈼� 璐﹀彿瀵嗙爜鐩戝惉______________________ + /// <summary> + /// 璐﹀彿鐩戝惉 + /// </summary> + /// <param name="sender">Sender.</param> + /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param> + private void Account_TextChange(object sender, string mouseEventArgs) + { + loginErrorBtn.Text = string.Empty; + } + + /// <summary> + /// 瀵嗙爜鐩戝惉浜嬩欢 + /// </summary> + /// <param name="pwdRow">Sender.</param> + private void Pwd_TextChange(PwdLoginRowForm pwdRow) + { + loginErrorBtn.Text = string.Empty; + string pswText = pwdRow.PasswrodET.Text.Trim(); + if (1 <= pswText.Length && pswText.Length <= 16 && (phoneRow.AccountET.Text.Trim().Length > 0 || emailRow?.AccountET.Text.Trim().Length > 0)) + { + loginBtn.Enable = loginBtn.IsSelected = true; + } + else if (pswText.Length > 16) + { + pwdRow.PasswrodET.Text = pswText.Substring(0, 16); + if (phoneRow.AccountET.Text.Trim().Length > 0 || emailRow?.AccountET.Text.Trim().Length > 0) + { + loginBtn.Enable = loginBtn.IsSelected = true; + } + } + else + { + loginBtn.Enable = loginBtn.IsSelected = false; + } + } + + + #endregion + + + + + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 閿欒鎻愮ず鎺т欢 + /// </summary> + private NormalViewControl btnErrorMsg = null; + /// <summary> + /// 鏄惁鍚屾剰闅愮鍗忚 + /// </summary> + private bool isAgreePrivacyPolicy = true; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐣岄潰鏄剧ず + /// </summary> + /// <param name="account">鐧婚檰璐﹀彿</param> + public void ShowForm(string account = "") + { + if (Config.Instance.IsLogin == true) + { + return; + } + CommonPage.Instance.IsDrawerLockMode = true; + this.Tag = "Login"; + + //鐣岄潰涓婇儴鐨勯粦鑹插浘鐗� + var btnTopBlackPic = new NormalViewControl(this.Width, Application.GetRealHeight(619), false); + btnTopBlackPic.UnSelectedImagePath = "Account/Logo_loginBG.png"; + this.AddChidren(btnTopBlackPic); + + //涓棿娴呯櫧鑹茬殑鑳屾櫙 + var frameMidBack = new FrameLayout(); + frameMidBack.Y = btnTopBlackPic.Bottom; + frameMidBack.Height = this.Height - btnTopBlackPic.Bottom; + frameMidBack.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor; + this.AddChidren(frameMidBack); + + //HdlHome鐨勫浘鏍� + var btnLogoIcon = new PicViewControl(184, 184); + btnLogoIcon.Y = Application.GetRealHeight(230); + btnLogoIcon.UnSelectedImagePath = "Account/Logo_White.png"; + btnLogoIcon.Gravity = Gravity.CenterHorizontal; + this.AddChidren(btnLogoIcon); + //Hdl Home + var btnLogoName = new NormalViewControl(300, 69, true); + btnLogoName.Y = btnLogoIcon.Bottom; + btnLogoName.Gravity = Gravity.CenterHorizontal; + btnLogoName.TextID = R.MyInternationalizationString.AppName; + btnLogoName.TextColor = ZigbeeColor.Current.GXCTextWhiteColor; + btnLogoName.TextAlignment = TextAlignment.Center; + btnLogoName.TextSize = 16; + this.AddChidren(btnLogoName); + + //1:鎵嬫満鍙� 2锛氶偖绠� + int selectIndex = account.Contains("@") == false ? 1 : 2; + + //鍒濆鍖� 鎵嬫満璐﹀彿鐧婚檰绐楀彛 + var frameAccLoginPhoneback = this.InitAccoutLoginWindow(frameMidBack, selectIndex == 1 ? account : string.Empty, 1); + //鍒濆鍖� 閭璐﹀彿鐧婚檰绐楀彛 + var frameEmailLoginPhoneback = this.InitAccoutLoginWindow(frameMidBack, selectIndex == 1 ? string.Empty : account, 2); + //鍒濆鍖� 鎵嬫満璐﹀彿楠岃瘉鐮佺櫥闄嗙獥鍙� + var frameAccCodeLoginPhoneback = this.InitCodeLoginWindow(frameMidBack, selectIndex == 1 ? account : string.Empty, 1); + //鍒濆鍖� 閭璐﹀彿楠岃瘉鐮佺櫥闄嗙獥鍙� + var frameEmailCodeLoginPhoneback = this.InitCodeLoginWindow(frameMidBack, selectIndex == 1 ? string.Empty : account, 2); + + //瀹氫箟杩欎袱涓笢瑗�,鏄负浜嗗噺灏戝垽鏂殑浠g爜 + var framePhone = frameAccLoginPhoneback; + var frameEmail = frameEmailLoginPhoneback; + + //閭,鎵嬫満鍙风殑鍒囨崲鎺т欢 + var sitchControl = new Controls.PhoneEmailSelectControl(); + sitchControl.Y = Application.GetRealHeight(559); + this.AddChidren(sitchControl); + sitchControl.SelectMenuEvent += (selectMenu) => + { + selectIndex = selectMenu; + //鎵嬫満鍙� + if (selectIndex == 1) + { + framePhone.Visible = true; + frameEmail.Visible = false; + } + //閭 + else if (selectIndex == 2) + { + framePhone.Visible = false; + frameEmail.Visible = true; + } + }; + //鎵ц鍒濆鍖� + sitchControl.InitControl(ZigbeeColor.Current.GXCButtonSelectedColor, selectIndex); + + //閿欒鎻愮ず鎺т欢 + this.btnErrorMsg = new NormalViewControl(700, 60, true); + btnErrorMsg.Y = frameAccLoginPhoneback.Y - Application.GetRealHeight(60 + 3); + btnErrorMsg.X = Application.GetRealWidth(288); + btnErrorMsg.TextColor = ZigbeeColor.Current.GXCTextRed; + btnErrorMsg.IsBold = true; + frameMidBack.AddChidren(btnErrorMsg); + + //楠岃瘉鐮佺櫥闄� + //1:璐﹀彿鐧婚檰 2:楠岃瘉鐮佺櫥闄� + int codeDiv = 1; + var btnLoginByCode = new NormalViewControl(300, 100, true); + btnLoginByCode.X = Application.GetRealWidth(98); + btnLoginByCode.Y = frameAccLoginPhoneback.Bottom + Application.GetRealHeight(21); + btnLoginByCode.TextID = R.MyInternationalizationString.LoginByCode; + btnLoginByCode.TextColor = UserCenterColor.Current.TextGrayColor3; + btnLoginByCode.TextSize = 12; + frameMidBack.AddChidren(btnLoginByCode); + btnLoginByCode.ButtonClickEvent += (sender, e) => + { + if (codeDiv == 1) + { + //楠岃瘉鐮佺櫥闄� + codeDiv = 2; + btnLoginByCode.TextID = R.MyInternationalizationString.LoginByAccountPWD; //璐﹀彿鐧婚檰 + //璐﹀彿鐧婚檰鐨勪袱涓笢瑗块殣钘� + frameAccLoginPhoneback.Visible = false; + frameEmailLoginPhoneback.Visible = false; + //鏇挎崲杩欎袱涓笢瑗� + framePhone = frameAccCodeLoginPhoneback; + frameEmail = frameEmailCodeLoginPhoneback; + } + else + { + //璐﹀彿鐧婚檰 + codeDiv = 1; + btnLoginByCode.TextID = R.MyInternationalizationString.LoginByCode;//楠岃瘉鐮佺櫥闄� + //楠岃瘉鐮佺櫥闄嗙殑涓や釜涓滆タ闅愯棌 + frameAccCodeLoginPhoneback.Visible = false; + frameEmailCodeLoginPhoneback.Visible = false; + //鏇挎崲杩欎袱涓笢瑗� + framePhone = frameAccLoginPhoneback; + frameEmail = frameEmailLoginPhoneback; + } + //鍒锋柊鑿滃崟 + sitchControl.SetSelectIndex(1); + }; + + //娉ㄥ唽鐢ㄦ埛 + var btnRegister = new NormalViewControl(244, 100, true); + btnRegister.Y = btnLoginByCode.Y; + btnRegister.X = frameMidBack.Width - Application.GetRealWidth(98 + 244); + btnRegister.TextID = R.MyInternationalizationString.Register; + btnRegister.TextColor = UserCenterColor.Current.TextGrayColor3; + btnRegister.TextSize = 12; + btnRegister.TextAlignment = TextAlignment.CenterRight; + frameMidBack.AddChidren(btnRegister); + btnRegister.ButtonClickEvent += (sender, e) => + { + var registerPage = new AccountRegister(); + CommonPage.Instance.AddChidren(registerPage); + registerPage.Show(); + }; + + //寰俊鍥炬爣 + var btnWebChat = new IconViewControl(115); + btnWebChat.Y = frameMidBack.Height - Application.GetRealHeight(69) - btnWebChat.IconSize; + btnWebChat.UnSelectedImagePath = "Account/Wechat.png"; + btnWebChat.Gravity = Gravity.CenterHorizontal; + frameMidBack.AddChidren(btnWebChat); + btnWebChat.ButtonClickEvent += (sender, e) => + { + //寰俊鐧婚檰 + this.LoginByWechat(); + }; + + //娣诲姞鏈嶅姟鍗忚鎺т欢 + // this.AddServiceAgreementControl(frameMidBack); } #endregion @@ -1069,13 +1020,20 @@ /// <param name="frameMidBack">涓棿娴呰壊鐨勮儗鏅鍣�</param> /// <param name="i_account">鐧婚檰璐﹀彿</param> /// <param name="i_div">1:鎵嬫満鍙� 2:閭</param> - private void InitAccoutLoginWindow(FrameLayout frameMidBack, string i_account, int i_div) + private FrameLayout InitAccoutLoginWindow(FrameLayout frameMidBack, string i_account, int i_div) { + //鐧婚檰鎸夐挳 + BottomClickButton btnLogin = null; + //璐﹀彿杈撳叆妗� + TextInputControl txtAccount = null; + //瀵嗙爜杈撳叆妗� + TextInputControl txtPsw = null; //瀹瑰櫒 var frameBack = new FrameLayout(); frameBack.Height = Application.GetRealHeight(620); frameBack.Y = Application.GetRealHeight(181); frameMidBack.AddChidren(frameBack); + frameBack.Visible = false; //鐧借壊鑳屾櫙 var frameWhiteBack = new FrameLayout(); frameWhiteBack.Width = Application.GetRealWidth(942); @@ -1099,7 +1057,7 @@ btnAccountIcon.UnSelectedImagePath = "Account/Account.png"; rowAccount.AddChidren(btnAccountIcon); //璐﹀彿杈撳叆妗� - var txtAccount = new TextInputControl(600, 92, true); + txtAccount = new TextInputControl(600, 92, true); txtAccount.X = btnAccountIcon.Right + Application.GetRealWidth(35); txtAccount.Gravity = Gravity.CenterVertical; if (i_div == 1) @@ -1116,11 +1074,42 @@ txtAccount.PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor; txtAccount.Text = i_account; rowAccount.AddChidren(txtAccount); + txtAccount.TextChangeEventHandler += (sender, e) => + { + //闅愯棌閿欒鎻愮ず + if (this.btnErrorMsg.Visible == true) + { + this.btnErrorMsg.Visible = false; + } + if (txtAccount.Text.Trim().Length > 0 && txtPsw.Text.Length > 0) + { + //鑳藉鐧婚檰 + if (btnLogin.CanClick == false) { btnLogin.CanClick = true; } + return; + } + //涓嶈兘鐐瑰嚮 + if (btnLogin.CanClick == true) { btnLogin.CanClick = false; } + }; + //搴曠嚎 var btnAccountLine = new NormalViewControl(rowAccount.Width, 1, false); btnAccountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor; - btnAccountLine.Y = rowAccount.Height - 1; + btnAccountLine.Y = rowAccount.Height - 2; rowAccount.AddChidren(btnAccountLine); + txtAccount.FoucsChanged += (sender, focusEvent) => + { + //鐒︾偣杩涘叆鏃�,搴曠嚎棰滆壊鍙樻洿 + if (focusEvent.Focus) + { + btnAccountLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor; + btnAccountLine.Height = 2; + } + else + { + btnAccountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor; + btnAccountLine.Height = 1; + } + }; //瀵嗙爜琛� var rowPassword = new FrameLayout(); @@ -1135,19 +1124,889 @@ btnPswIcon.Gravity = Gravity.CenterVertical; btnPswIcon.UnSelectedImagePath = "Account/Password.png"; rowPassword.AddChidren(btnPswIcon); - //璐﹀彿杈撳叆妗� - var txtPsw = new TextInputControl(600, 92, true); + //瀵嗙爜杈撳叆妗� + txtPsw = new TextInputControl(600, 92, true); txtPsw.X = txtAccount.X; txtPsw.Gravity = Gravity.CenterVertical; txtPsw.PlaceholderText = Language.StringByID(R.MyInternationalizationString.PleaseInputPWD); txtPsw.PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor; txtPsw.SecureTextEntry = true; rowPassword.AddChidren(txtPsw); + txtPsw.TextChangeEventHandler += (sender, e) => + { + txtAccount.TextChangeEventHandler(sender, e); + }; + //闅愯棌鎴栬�呮樉绀哄瘑鐮佺殑鍥炬爣 + var btnHiden = new IconViewControl(92); + btnHiden.X = rowPassword.Width - Application.GetRealWidth(46) - btnHiden.IconSize; + btnHiden.SelectedImagePath = "Account/UnhidePwd.png"; + btnHiden.UnSelectedImagePath = "Account/HidePwd.png"; + btnHiden.Gravity = Gravity.CenterVertical; + rowPassword.AddChidren(btnHiden); + btnHiden.ButtonClickEvent += (sender, e) => + { + txtPsw.SecureTextEntry = !txtPsw.SecureTextEntry; + btnHiden.IsSelected = !btnHiden.IsSelected; + }; + //搴曠嚎 var btnPswLine = new NormalViewControl(rowPassword.Width, 1, false); btnPswLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor; - btnPswLine.Y = rowPassword.Height - 1; + btnPswLine.Y = rowPassword.Height - 2; rowPassword.AddChidren(btnPswLine); + txtPsw.FoucsChanged += (sender, focusEvent) => + { + //鐒︾偣杩涘叆鏃�,搴曠嚎棰滆壊鍙樻洿 + if (focusEvent.Focus) + { + btnPswLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor; + btnPswLine.Height = 2; + } + else + { + btnPswLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor; + btnPswLine.Height = 1; + } + }; + + //蹇樿瀵嗙爜? + var btnForgot = new NormalViewControl(250, 90, true); + btnForgot.Y = rowPassword.Bottom + Application.GetRealHeight(15); + btnForgot.X = frameWhiteBack.Width - Application.GetRealWidth(250 + 35); + btnForgot.TextSize = 12; + btnForgot.TextColor = UserCenterColor.Current.TextGrayColor3; + btnForgot.TextAlignment = TextAlignment.CenterRight; + btnForgot.TextID = R.MyInternationalizationString.ForgotPWD_1; + frameWhiteBack.AddChidren(btnForgot); + btnForgot.ButtonClickEvent += (sender, e) => + { + var forgot = new AccountForgetPWD(); + CommonPage.Instance.AddChidren(forgot); + forgot.Show(); + }; + + //鐧婚檰鎸夐挳 + btnLogin = new BottomClickButton(688); + btnLogin.Gravity = Gravity.BottomCenter; + btnLogin.TextID = R.MyInternationalizationString.Login; + btnLogin.oldBackgroundColor = btnLogin.BackgroundColor; + frameBack.AddChidren(btnLogin); + btnLogin.CanClick = false; + btnLogin.ButtonClickEvent += (sender, e) => + { + //璐﹀彿瀵嗙爜鐧婚檰 + this.LoginByAccountAndPsw(txtAccount.Text.Trim(), txtPsw.Text, i_div); + }; + + return frameBack; + } + + #endregion + + #region 鈻� 鍒濆鍖栭獙璇佺爜鐧婚檰绐楀彛_______________ + + /// <summary> + /// 鍒濆鍖栭獙璇佺爜鐧婚檰绐楀彛 + /// </summary> + /// <param name="frameMidBack">涓棿娴呰壊鐨勮儗鏅鍣�</param> + /// <param name="i_account">鐧婚檰璐﹀彿</param> + /// <param name="i_div">1:鎵嬫満鍙� 2:閭</param> + private FrameLayout InitCodeLoginWindow(FrameLayout frameMidBack, string i_account, int i_div) + { + //鐧婚檰鎸夐挳 + BottomClickButton btnLogin = null; + //璐﹀彿杈撳叆妗� + TextInputControl txtAccount = null; + //瀵嗙爜杈撳叆妗� + TextInputControl txtVerCode = null; + //褰撳墠杈撳叆鐨勮处鍙�(闃叉鍙戦�侀獙璇佺爜涔嬪悗,淇敼璐﹀彿) + string nowInputAccount = string.Empty; + //鏄惁宸茬粡鍙戦�佷簡楠岃瘉鐮� + bool hadSendCode = false; + + //瀹瑰櫒 + var frameBack = new FrameLayout(); + frameBack.Height = Application.GetRealHeight(620); + frameBack.Y = Application.GetRealHeight(181); + frameMidBack.AddChidren(frameBack); + frameBack.Visible = false; + //鐧借壊鑳屾櫙 + var frameWhiteBack = new FrameLayout(); + frameWhiteBack.Width = Application.GetRealWidth(942); + frameWhiteBack.Height = Application.GetRealHeight(553); + frameWhiteBack.BackgroundColor = UserCenterColor.Current.White; + frameWhiteBack.Radius = (uint)Application.GetRealHeight(17); + frameWhiteBack.Gravity = Gravity.CenterHorizontal; + frameBack.AddChidren(frameWhiteBack); + + //璐﹀彿琛� + var rowAccount = new FrameLayout(); + rowAccount.Y = Application.GetRealHeight(29); + rowAccount.Width = Application.GetRealWidth(884); + rowAccount.Height = Application.GetRealHeight(138); + rowAccount.Gravity = Gravity.CenterHorizontal; + frameWhiteBack.AddChidren(rowAccount); + if (i_div == 2) + { + //璐﹀彿鍥炬爣 + var btnAccountIcon = new IconViewControl(92); + btnAccountIcon.X = Application.GetRealWidth(69); + btnAccountIcon.Gravity = Gravity.CenterVertical; + btnAccountIcon.UnSelectedImagePath = "Account/Account.png"; + rowAccount.AddChidren(btnAccountIcon); + } + else + { + //鍦板尯鐮� + var btnArea = new NormalViewControl(139, 60, true); + btnArea.TextColor = UserCenterColor.Current.TextGrayColor1; + btnArea.TextAlignment = TextAlignment.CenterRight; + btnArea.Text = "+86"; + btnArea.Gravity = Gravity.CenterVertical; + rowAccount.AddChidren(btnArea); + } + //璐﹀彿杈撳叆妗� + txtAccount = new TextInputControl(600, 92, true); + txtAccount.X = Application.GetRealWidth(193); + txtAccount.Gravity = Gravity.CenterVertical; + if (i_div == 1) + { + //鎵嬫満鍙� + txtAccount.IsNumberKeyboardType = true; + txtAccount.PlaceholderText = Language.StringByID(R.MyInternationalizationString.PleaseInputPhoneNum); + } + else + { + //閭 + txtAccount.PlaceholderText = Language.StringByID(R.MyInternationalizationString.PleaseInputEmail); + } + txtAccount.PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor; + txtAccount.Text = i_account; + rowAccount.AddChidren(txtAccount); + txtAccount.TextChangeEventHandler += (sender, e) => + { + //闅愯棌閿欒鎻愮ず + if (this.btnErrorMsg.Visible == true) + { + this.btnErrorMsg.Visible = false; + } + //蹇呴』瑕佸彂閫佹垚鍔熸墠琛� + if (hadSendCode = true && txtAccount.Text.Trim().Length > 0 && txtVerCode.Text.Length > 0) + { + //鑳藉鐧婚檰 + if (btnLogin.CanClick == false) { btnLogin.CanClick = true; } + return; + } + //涓嶈兘鐐瑰嚮 + if (btnLogin.CanClick == true) { btnLogin.CanClick = false; } + }; + //搴曠嚎 + var btnAccountLine = new NormalViewControl(rowAccount.Width, 1, false); + btnAccountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor; + btnAccountLine.Y = rowAccount.Height - 2; + rowAccount.AddChidren(btnAccountLine); + txtAccount.FoucsChanged += (sender, focusEvent) => + { + //鐒︾偣杩涘叆鏃�,搴曠嚎棰滆壊鍙樻洿 + if (focusEvent.Focus) + { + btnAccountLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor; + btnAccountLine.Height = 2; + } + else + { + btnAccountLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor; + btnAccountLine.Height = 1; + } + }; + + //楠岃瘉鐮佽 + var rowVerCode = new FrameLayout(); + rowVerCode.Y = rowAccount.Bottom + Application.GetRealHeight(58); + rowVerCode.Width = rowAccount.Width; + rowVerCode.Height = rowAccount.Height; + rowVerCode.Gravity = Gravity.CenterHorizontal; + frameWhiteBack.AddChidren(rowVerCode); + //璐﹀彿鍥炬爣 + var btnCodeIcon = new IconViewControl(92); + btnCodeIcon.X = Application.GetRealWidth(69); + btnCodeIcon.Gravity = Gravity.CenterVertical; + btnCodeIcon.UnSelectedImagePath = "Account/Code.png"; + rowVerCode.AddChidren(btnCodeIcon); + //楠岃瘉鐮佽緭鍏ユ + txtVerCode = new TextInputControl(350, 92, true); + txtVerCode.X = btnCodeIcon.Right + Application.GetRealWidth(35); + txtVerCode.Gravity = Gravity.CenterVertical; + txtVerCode.PlaceholderText = Language.StringByID(R.MyInternationalizationString.PleaseInputVerificationCode); + txtVerCode.PlaceholderTextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor; + txtVerCode.SecureTextEntry = true; + rowVerCode.AddChidren(txtVerCode); + txtVerCode.TextChangeEventHandler += (sender, e) => + { + txtAccount.TextChangeEventHandler(sender, e); + }; + //绔栫嚎 + var btnLine2 = new NormalViewControl(1, Application.GetRealHeight(66), false); + btnLine2.X = Application.GetRealWidth(611); + btnLine2.Gravity = Gravity.CenterVertical; + btnLine2.BackgroundColor = ZigbeeColor.Current.GXCLineColor; + rowVerCode.AddChidren(btnLine2); + //鑾峰彇楠岃瘉鐮� + var btnSendCode = new NormalViewControl(250, 70, true); + btnSendCode.X = btnLine2.Right + Application.GetRealWidth(36); + btnSendCode.Gravity = Gravity.CenterVertical; + btnSendCode.TextID = R.MyInternationalizationString.SendVerificationCode; + btnSendCode.TextColor = UserCenterColor.Current.TextGrayColor3; + btnSendCode.TextAlignment = TextAlignment.Center; + btnSendCode.IsBold = true; + rowVerCode.AddChidren(btnSendCode); + btnSendCode.ButtonClickEvent += async (sender, e) => + { + //妫�娴嬭緭鍏ョ殑璐﹀彿 + nowInputAccount = txtAccount.Text.Trim(); + if (this.CheckInputAccount("86", nowInputAccount, i_div) == false) + { + return; + } + //鍙戦�侀獙璇佺爜 + hadSendCode = await this.SendVerCode(btnSendCode, nowInputAccount, i_div); + }; + + //搴曠嚎 + var btnCodeLine = new NormalViewControl(rowVerCode.Width, 1, false); + btnCodeLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor; + btnCodeLine.Y = rowVerCode.Height - 2; + rowVerCode.AddChidren(btnCodeLine); + txtVerCode.FoucsChanged += (sender, focusEvent) => + { + //鐒︾偣杩涘叆鏃�,搴曠嚎棰滆壊鍙樻洿 + if (focusEvent.Focus) + { + btnCodeLine.BackgroundColor = ZigbeeColor.Current.GXCSelectedLineColor; + btnCodeLine.Height = 2; + } + else + { + btnCodeLine.BackgroundColor = ZigbeeColor.Current.GXCGrayLineColor; + btnCodeLine.Height = 1; + } + }; + + //蹇樿瀵嗙爜? + var btnForgot = new NormalViewControl(250, 90, true); + btnForgot.Y = rowVerCode.Bottom + Application.GetRealHeight(15); + btnForgot.X = frameWhiteBack.Width - Application.GetRealWidth(250 + 35); + btnForgot.TextSize = 12; + btnForgot.TextColor = UserCenterColor.Current.TextGrayColor3; + btnForgot.TextAlignment = TextAlignment.CenterRight; + btnForgot.TextID = R.MyInternationalizationString.ForgotPWD_1; + frameWhiteBack.AddChidren(btnForgot); + btnForgot.ButtonClickEvent += (sender, e) => + { + var forgot = new AccountForgetPWD(); + CommonPage.Instance.AddChidren(forgot); + forgot.Show(); + }; + + //鐧婚檰鎸夐挳 + btnLogin = new BottomClickButton(688); + btnLogin.Gravity = Gravity.BottomCenter; + btnLogin.TextID = R.MyInternationalizationString.Login; + btnLogin.oldBackgroundColor = btnLogin.BackgroundColor; + frameBack.AddChidren(btnLogin); + btnLogin.CanClick = false; + btnLogin.ButtonClickEvent += (sender, e) => + { + //楠岃瘉鐮佺櫥闄� + this.LoginByVerCode(nowInputAccount, txtVerCode.Text.Trim(), i_div); + }; + return frameBack; + } + + #endregion + + #region 鈻� 鏈嶅姟鍗忚___________________________ + + /// <summary> + /// 娣诲姞鏈嶅姟鍗忚鎺т欢 + /// </summary> + /// <param name="frameBack"></param> + private void AddServiceAgreementControl(FrameLayout frameBack) + { + var frameRow = new FrameLayout(); + frameRow.Height = Application.GetMinRealAverage(110); + frameRow.Y = Application.GetRealHeight(959); + frameRow.Gravity = Gravity.CenterHorizontal; + + //瀛椾綋鎬诲搴� + int fontWidth = 0; + int btnWidth = 0; +#if Android + //鐗规畩鐨勮宸�� + int speceilValue = Application.GetRealWidth(20); +#endif +#if iOS + //鐗规畩鐨勮宸�� + int speceilValue = Application.GetRealWidth(10); +#endif + //鎴戝凡闃呰骞跺悓鎰� + var btnMsg1 = new NormalViewControl(100, 90, true); + btnMsg1.Gravity = Gravity.CenterVertical; + btnMsg1.Y = Application.GetRealHeight(968); + btnMsg1.TextSize = 12; + btnMsg1.TextColor = UserCenterColor.Current.TextGrayColor1; + btnMsg1.TextID = R.MyInternationalizationString.uMyHadReadAndAgree; + //璁$畻鐪熷疄瀹藉害 + btnWidth = btnMsg1.GetRealWidthByText(); + btnMsg1.Width = btnWidth; + fontWidth += btnWidth; + + //銆婇殣绉佹潈鏀跨瓥銆� + var btnMsg2 = new NormalViewControl(100, 90, true); + btnMsg2.Gravity = Gravity.CenterVertical; + btnMsg2.TextSize = 12; + btnMsg2.TextColor = 0xFF4A90E2; + btnMsg2.Text = "銆�" + Language.StringByID(R.MyInternationalizationString.uPrivacyPolicy) + "銆�"; + //璁$畻鐪熷疄瀹藉害 + btnWidth = btnMsg2.GetRealWidthByText(); + btnMsg2.Width = btnWidth; + fontWidth += btnWidth; + btnMsg2.ButtonClickEvent += (sender, e) => + { + var form = new UserCenter.Abount.SLAForm(); + this.AddChidren(form); + form.InitTopFrameLayout(); + form.InitBodyFrameLayout(); + form.ShowForm(); + }; + + //鍜� + var btnMsg3 = new NormalViewControl(100, 90, true); + btnMsg3.Gravity = Gravity.CenterVertical; + btnMsg3.TextSize = 12; + btnMsg3.TextColor = UserCenterColor.Current.TextGrayColor1; + btnMsg3.TextID = R.MyInternationalizationString.uAnd; + //璁$畻鐪熷疄瀹藉害 + btnWidth = btnMsg3.GetRealWidthByText(); + btnMsg3.Width = btnWidth; + fontWidth += btnWidth; + + //銆婃湇鍔℃潯娆俱�� + var btnMsg4 = new NormalViewControl(100, 90, true); + btnMsg4.Gravity = Gravity.CenterVertical; + btnMsg4.TextSize = 12; + btnMsg4.TextColor = 0xFF4A90E2; + btnMsg4.Text = "銆�" + Language.StringByID(R.MyInternationalizationString.uTermsOfService) + "銆�"; + //璁$畻鐪熷疄瀹藉害 + btnWidth = btnMsg4.GetRealWidthByText(); + btnMsg4.Width = btnWidth; + fontWidth += btnWidth; + btnMsg4.ButtonClickEvent += (sender, e) => + { + btnMsg2.ButtonClickEvent(null, null); + }; + + //鍥炬爣 + var btnIcon = new IconBigViewControl(42, 42); + btnIcon.UnSelectedImagePath = "Item/Check1.png"; + btnIcon.SelectedImagePath = "Item/Check1Selected.png"; + + //璁$畻琛屾帶浠剁殑瀹藉害 + frameRow.Width = fontWidth + Application.GetMinRealAverage(42) + Application.GetRealWidth(23) - speceilValue * 3; + frameBack.AddChidren(frameRow); + + //鍥炬爣鎺т欢鍒濆鍖� + frameRow.AddChidren(btnIcon); + btnIcon.InitControl(); + btnIcon.X = -btnIcon.XOffset; + btnIcon.UseClickStatu = false; + btnIcon.ButtonClickEvent += (sender, e) => + { + btnIcon.IsSelected = !btnIcon.IsSelected; + isAgreePrivacyPolicy = btnIcon.IsSelected; + }; + + btnMsg1.X = btnIcon.btnIcon.Width + Application.GetRealWidth(23); + frameRow.AddChidren(btnMsg1); + btnMsg2.Y = btnMsg1.Y; + btnMsg2.X = btnMsg1.Right - speceilValue; + frameRow.AddChidren(btnMsg2); + btnMsg3.X = btnMsg2.Right - speceilValue; + btnMsg3.Y = btnMsg1.Y; + frameRow.AddChidren(btnMsg3); + btnMsg4.X = btnMsg3.Right - speceilValue; + btnMsg4.Y = btnMsg1.Y; + frameRow.AddChidren(btnMsg4); + } + + #endregion + + #region 鈻� 璐﹀彿瀵嗙爜鐧婚檰_______________________ + + /// <summary> + /// 璐﹀彿瀵嗙爜鐧婚檰 + /// </summary> + /// <param name="i_account">璐﹀彿</param> + /// <param name="i_psw">瀵嗙爜</param> + /// <param name="i_div">1:鎵嬫満鍙� 2:閭</param> + private void LoginByAccountAndPsw(string i_account, string i_psw, int i_div) + { + //妫�娴嬭处鍙� + if (this.CheckInputAccount(string.Empty, i_account, i_div) == false) + { + return; + } + + //鐧婚檰涓�.... + CommonPage.Loading.Start(Language.StringByID(R.MyInternationalizationString.Logining)); + + HdlThreadLogic.Current.RunThread(async () => + { + //鐧婚檰鍙傛暟 + var pra = new SendDataToServer.LoginObj(); + pra.Account = i_account; + pra.Password = i_psw; + pra.Source = CommonPage.Source; + pra.Company = CommonPage.Company; + + //璁块棶鎺ュ彛 + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(pra); + var result = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/Login", System.Text.Encoding.UTF8.GetBytes(requestJson)); + + //澶勭悊鐧婚檰鎴愬姛鐨勬暟鎹� + this.AdjustLoginSuccessData(result, pra, i_account, i_psw, i_div); + }); + } + + /// <summary> + /// 妫�娴嬭緭鍏ョ殑璐﹀彿 + /// </summary> + /// <param name="i_areaCode">鍦板尯鐮�</param> + /// <param name="i_account">璐﹀彿</param> + /// <param name="i_div">1:鎵嬫満鍙� 2:閭</param> + /// <returns></returns> + private bool CheckInputAccount(string i_areaCode, string i_account, int i_div) + { + if (i_div == 1) + { + //妫�娴嬫墜鏈� + if (i_areaCode != string.Empty && AccountLogic.Instance.CheckPhoneWithZone(i_account, i_areaCode) == false) + { + btnErrorMsg.TextID = R.MyInternationalizationString.ThePhoneError; + return false; + } + //妫�娴嬫墜鏈� + if (i_areaCode == string.Empty && AccountLogic.Instance.CheckPhone(i_account) == false) + { + btnErrorMsg.TextID = R.MyInternationalizationString.ThePhoneError; + return false; + } + } + else + { + //妫�娴嬮偖绠� + if (AccountLogic.Instance.CheckEmail(i_account) == false) + { + btnErrorMsg.TextID = R.MyInternationalizationString.TheEmailError; + return false; + } + } + return true; + } + + #endregion + + #region 鈻� 寰俊鐧婚檰___________________________ + + /// <summary> + /// 寰俊鐧诲綍 + /// </summary> + private void LoginByWechat() + { +#if Android + com.hdl.home.Application.WXLogin(); + com.hdl.home.WXEntryActivity.RespAction = (authStr) => + { +#endif +#if iOS + Home.IOS.AppDelegate.WXLogin(); + Home.IOS.AppDelegate.RespAction = (authStr) => + { +#endif + if (authStr == null) + { + return; + } + HdlThreadLogic.Current.RunThread(async () => + { + //鏄惁宸茬粡缁戝畾 + var re = await isBindAuthAsync(authStr); + if (re) + { + Application.RunOnMainThread(() => + { + //鐩存帴鐧诲綍 + HomePage.Instance.ShowLoginLoadView(); + }); + var resultRegID = await Shared.Common.CommonPage.Instance.PushRegID(); + var homes = await House.GetHomeLists(); + //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ + await UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread(); + //鍚姩ZigBee + ZigBee.Common.Application.Init(); + + Application.RunOnMainThread(() => + { + this.RemoveFromParent(); + CommonPage.Instance.RemoveViewByTag("Login"); + UserPage.Instance.Fresh(); + }); + } + else + { + var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); + Application.RunOnMainThread(() => + { + var registerPage = new AccountRegister(); + CommonPage.Instance.AddChidren(registerPage); + registerPage.OpenID = authRes.openid; + registerPage.Show(); + }); + } + }); + }; + } + + /// <summary> + /// 鏄惁宸茬粦瀹� + /// </summary> + /// <param name="authStr"></param> + /// <returns></returns> + private async System.Threading.Tasks.Task<bool> isBindAuthAsync(string authStr) + { + var authRes = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.AuthUserRes>(authStr); + var auth = new SendDataToServer.AuthUser() + { + AccessToken = authRes.access_token, + RefreshToken = authRes.refresh_token, + OpenID = authRes.openid + }; + //鑾峰彇寰俊鏄电О + var strUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + authRes.access_token; + strUrl += "&openid=" + authRes.openid; + var byteData = await Common.CommonPage.Instance.DoRequestZigbeeHttpsInterface(strUrl, null, null, "GET"); + if (byteData == null) + { + return false; + } + var receipData = System.Text.Encoding.UTF8.GetString(byteData); + var nickData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserCenter.NicknameInfo>(receipData); + auth.UserName = nickData.nickname; + + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(auth); + var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/InsertOrUpdateAuthUser", System.Text.Encoding.UTF8.GetBytes(requestJson)); + if (revertObj == null) + { + return false; + } + var stateCodeStr = revertObj.StateCode.ToUpper(); + if (stateCodeStr == "SUCCESS") + { + var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString()); + var revertData = responseDataObj; + //鏍囪涓婁竴娆℃槸涓嶆槸鍚屼竴涓处鍙风櫥闄� + UserCenter.UserCenterResourse.ResidenceOption.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid; + Config.Instance.Account = revertData.Account; + Config.Instance.MD5PWD = revertData.MD5PWD; + Config.Instance.Guid = revertData.Guid; + Config.Instance.LoginDateTime = DateTime.Now; + Config.Instance.Save(); + return true; + } + else + { + return false; + } + } + + #endregion + + #region 鈻� 楠岃瘉鐮佺櫥闄哶________________________ + + /// <summary> + /// 楠岃瘉鐮佺櫥闄� + /// </summary> + /// <param name="i_account">璐﹀彿</param> + /// <param name="i_verCode">楠岃瘉鐮�</param> + /// <param name="i_div">1:鎵嬫満鍙� 2:閭</param> + private async void LoginByVerCode(string i_account, string i_verCode, int i_div) + { + var pra = new SendDataToServer.LoginValidCodeOBJ() + { + Account = i_account, + Code = i_verCode, + Language = CommonPage.ZigBeeLanguage, + AreaCode = int.Parse(CommonPage.PhoneZoneStr) + }; + var result = await CommonFormResouce.LoginByCode(pra); + //澶勭悊鐧婚檰鎴愬姛鐨勬暟鎹� + this.AdjustLoginSuccessData(result, pra, i_account, string.Empty, i_div); + } + + /// <summary> + /// 鍙戦�侀獙璇佺爜 + /// </summary> + /// <param name="btnSendCode">鍙戦�佹寜閽�</param> + /// <param name="account">璐﹀彿</param> + /// <param name="i_div">1:鎵嬫満鍙� 2:閭</param> + /// <returns></returns> + private async System.Threading.Tasks.Task<bool> SendVerCode(NormalViewControl btnSendCode, string account, int i_div) + { + //涓嶈兘鍐嶇偣鍑� + btnSendCode.CanClick = false; + + int companyInt = 0; + if (CommonPage.PhoneZoneStr == "86" || i_div == 2) + { + companyInt = CommonPage.Company; + } + else + { + companyInt = CommonPage.CompanyForINTERNETION; + } + var reqDtoSignPhone = new SendDataToServer.LoginSendVerCodeObj() + { + Account = account, + Company = companyInt, + AreaCode = int.Parse(CommonPage.PhoneZoneStr), + Language = CommonPage.ZigBeeLanguage + }; + var requestRevertObj = await CommonFormResouce.LoginSendVerCode(reqDtoSignPhone); + if (requestRevertObj == null) + { + //璇锋眰鏈嶅姟鍣ㄥけ璐� + CommonPage.Instance.FailureToServer(); + return false; + } + var stateCodeStr = requestRevertObj.StateCode.ToUpper(); + if (stateCodeStr == "SUCCESS") + { + //寮�鍚彂閫侀獙璇佺爜鐨勫�掕鏃� + this.StartSendVerCodeTimeOutThread(btnSendCode); + return true; + } + if (stateCodeStr == "PARAMETEROREMPTY") + { + //鎻愪緵鐨勫弬鏁伴敊璇� + btnErrorMsg.TextID = R.MyInternationalizationString.PARAMETEROREMPTY; + } + else if (stateCodeStr == "ACCOUNTNOEXISTS") + { + //璐﹀彿涓嶅瓨鍦� + btnErrorMsg.TextID = R.MyInternationalizationString.ACCOUNTNOEXISTS; + } + else if (stateCodeStr == "SENDFAIL") + { + //楠岃瘉鐮佸彂閫佸け璐� + btnErrorMsg.TextID = R.MyInternationalizationString.SENDFAIL; + } + else + { + //璇锋眰鏈嶅姟鍣ㄥけ璐� + btnErrorMsg.TextID = R.MyInternationalizationString.RequestServerFailed; + //鍐橪og + IMessageCommon.Current.GetMsgByRequestName("ZigbeeUsers/LoginSendVerCode", requestRevertObj, reqDtoSignPhone); + } + + HdlThreadLogic.Current.RunThread(() => + { + //鍙戦�佸け璐ュ悗,5绉掍箣鍚庢墠鑳藉啀娆″彂閫� + int i = 0; + while (i <= 5) + { + i++; + System.Threading.Thread.Sleep(1000); + } + btnSendCode.CanClick = true; + }); + + return false; + } + + /// <summary> + /// 寮�鍚彂閫侀獙璇佺爜鐨勫�掕鏃� + /// </summary> + /// <param name="btnSendCode"></param> + private void StartSendVerCodeTimeOutThread(NormalViewControl btnSendCode) + { + HdlThreadLogic.Current.RunThread(() => + { + //鍚庨噸鍙� + string strText = Language.StringByID(R.MyInternationalizationString.SendVerificationCodeAgain); + int time = 60; + while (time > 0 && btnSendCode.Parent != null) + { + HdlThreadLogic.Current.RunMain(() => + { + btnSendCode.Text = time + "s" + strText; + }); + time--; + } + //鍊掕鏃跺畬鎴愪箣鍚�,鍙互鍐嶆鐐瑰嚮 + btnSendCode.CanClick = true; + btnSendCode.TextID = R.MyInternationalizationString.SendVerificationCode;//鑾峰彇楠岃瘉鐮� + }); + } + + #endregion + + #region 鈻� 澶勭悊鐧婚檰鎴愬姛鐨勬暟鎹甠________________ + + /// <summary> + /// 澶勭悊鐧婚檰鎴愬姛鐨勬暟鎹� + /// </summary> + /// <param name="revertObj">浜戠杩斿洖鐨勬暟鎹�</param> + /// <param name="pra">鎺ュ彛璇锋眰鍙傛暟</param> + /// <param name="i_account">璐﹀彿</param> + /// <param name="i_psw">瀵嗙爜锛岄獙璇佺爜鐧婚檰鏃�,璁剧疆涓� string.Empty</param> + /// <param name="i_div">1:鎵嬫満鍙� 2:閭</param> + private async void AdjustLoginSuccessData(Common.ResponseEntity.ResponsePack revertObj, object pra, + string i_account, string i_psw, int i_div) + { + if (revertObj == null) + { + HdlThreadLogic.Current.RunMain(() => + { + //璇锋眰鏈嶅姟鍣ㄥけ璐� + CommonPage.Instance.FailureToServer(); + CommonPage.Loading.Hide(); + }); + return; + } + var stateCodeStr = revertObj.StateCode.ToUpper(); + //Error 涓嶈兘鐩存帴浠庢湇鍔″櫒鍙栵紝鍙兘鏍规嵁鐘舵�佺爜閫愪竴鍒ゆ柇 + if (stateCodeStr == "SUCCESS") + { + HdlThreadLogic.Current.RunMain(() => + { + //鏄剧ず鍚姩椤� + HomePage.Instance.ShowLoginLoadView(); + }); + //瀛樺偍鏁版嵁 + var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginRes>(revertObj.ResponseData.ToString()); + var revertData = responseDataObj; + Config.ReFresh(); + //鏍囪涓婁竴娆℃槸涓嶆槸鍚屼竴涓处鍙风櫥闄� + UserCenterResourse.ResidenceOption.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid; + Config.Instance.Account = revertData.Account; + Config.Instance.Password = i_psw; + Config.Instance.MD5PWD = revertData.MD5PWD; + Config.Instance.Guid = revertData.Guid; + Config.Instance.LoginDateTime = DateTime.Now; + Config.Instance.LoginToken = revertData.Token; + Config.Instance.Save(); + + var resultRegID = await CommonPage.Instance.PushRegID(); + var homes = await House.GetHomeLists(); + //鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼ + await UserCenterLogic.InitUserCenterMenmoryAndThread(); + //鍚姩ZigBee + ZigBee.Common.Application.Init(); + + HdlThreadLogic.Current.RunMain(() => + { + CommonPage.Loading.Hide(); + this.RemoveFromParent(); + CommonPage.Instance.RemoveViewByTag("Login"); + UserPage.Instance.Fresh(); + }); + return; + } + //鍏抽棴杞湀鐨� + HdlThreadLogic.Current.RunMain(() => + { + CommonPage.Loading.Hide(); + if (stateCodeStr == "NOTVERIFY") + { + //鏈縺娲� + btnErrorMsg.TextID = R.MyInternationalizationString.NOTVERIFY; + } + else if (stateCodeStr == "NOTENABLE") + { + //璇ョ敤鎴峰睘浜庤皟璇曡处鍙凤紝骞舵湭鍚敤 + btnErrorMsg.TextID = R.MyInternationalizationString.NOTENABLE; + } + else if (stateCodeStr == "PARAMETEROREMPTY") + { + //鎻愪緵鐨勫弬鏁伴敊璇� + btnErrorMsg.TextID = R.MyInternationalizationString.PARAMETEROREMPTY; + } + else if (stateCodeStr == "VALIDCODEANDPHONENOEQUAL") + { + //楠岃瘉鐮侀敊璇紝璇烽噸鏂拌緭鍏� + btnErrorMsg.TextID = R.MyInternationalizationString.VALIDCODEANDPHONENOEQUAL; + } + else if (stateCodeStr == "USERNAMEORPWDERROR") + { + //璐﹀彿鎴栧瘑鐮侀敊璇� + btnErrorMsg.TextID = R.MyInternationalizationString.USERNAMEORPWDERROR; + } + else if (stateCodeStr == "ACCOUNTNOEXISTS") + { + //璐﹀彿涓嶅瓨鍦� + btnErrorMsg.TextID = R.MyInternationalizationString.ACCOUNTNOEXISTS; + } + else if (stateCodeStr == "NORECORD" && i_psw == string.Empty) + { + //璇峰厛鑾峰彇楠岃瘉鐮� + btnErrorMsg.TextID = R.MyInternationalizationString.NORECORD; + } + else if (stateCodeStr == "YOUDATANOISLOCALREGION") + { + //涓嶅湪鏈尯鍩燂紝闇�瑕侀噸瀹氬悜鍖哄煙鍚庡啀娆¤姹傜櫥褰� + var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.UserLoginLocalRegionRes>(revertObj.ResponseData.ToString()); + CommonPage.RequestHttpsHost = responseDataObj.RegionServer; + if (i_psw != string.Empty) + { + //鍐嶆鐧诲綍 + this.LoginByAccountAndPsw(i_account, i_psw, i_div); + } + } + else + { + btnErrorMsg.TextID = R.MyInternationalizationString.RequestServerFailed; + //鍐橪og + if (pra is SendDataToServer.LoginObj) + { + ((SendDataToServer.LoginObj)pra).Password = "*********"; + IMessageCommon.Current.GetMsgByRequestName("ZigbeeUsers/Login", revertObj, pra); + } + else + { + IMessageCommon.Current.GetMsgByRequestName("ZigbeeUsers/LoginValidCode", revertObj, pra); + } + } + }); + } + + #endregion + + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 妫�娴嬮殣绉佸崗璁� + /// </summary> + /// <returns></returns> + private bool CheckPrivacyPolicy() + { + if (isAgreePrivacyPolicy == false) + { + //璇峰厛闃呰骞跺悓鎰忋�婇殣绉佹潈鏀跨瓥銆嬪拰銆婃湇鍔℃潯娆俱�� + var btnMsg = new ShowMsgControl(ShowMsgType.Remind, Language.StringByID(R.MyInternationalizationString.uPleaseReadAndAgreePrivacyPolicyMsg)); + btnMsg.Show(); + return false; + } + return true; } #endregion -- Gitblit v1.8.0