| | |
| | | { |
| | | Width = LayoutParams.MatchParent, |
| | | Height = Application.GetRealHeight(CommonPage.AppRealHeight), |
| | | BackgroundColor =ZigbeeColor.Current.GXCBackgroundColor |
| | | BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor |
| | | }; |
| | | AddChidren(midFrameLayout); |
| | | #endregion |
| | |
| | | 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); |
| | |
| | | }; |
| | | //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); |
| | | |
| | | //定义这两个东西,是为了减少判断的代码 |
| | | 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 |
| | |
| | | /// <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);
|
| | |
| | | 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)
|
| | |
| | | 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();
|
| | |
| | | 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;
|
| | | //写Log
|
| | | 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;
|
| | | //写Log
|
| | | 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 |