using System;
using System.Text.RegularExpressions;
using System.Threading;
using System.Collections.Generic;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI1Login
{
public partial class LoginPage
{
///
/// 加载事件
///
void LoadEventList()
{
LoadPage_SwitchLoginType();
LoadMethod_VisiblePassword();
LoadPage_SwitchLoginMode();
LoadEvent_Login();
LoadPage_SelectionEditText();
LoadPage_RegisterPage();
GetVerificationCode();
LoadMethod_ForgetPassword();
}
///
/// 点击按钮获取验证码
///
void GetVerificationCode()
{
btnGetVerificationCode.MouseUpEventHandler += (sender, e) =>
{
if (btnGetVerificationCode.IsSelected)
{
string phoneNumber = etAccount.Text.Trim();
btnGetVerificationCode.IsSelected = false;
btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1;
int time = 60;
new Thread(() =>
{
while (time < 0)
{
time--;
Application.RunOnMainThread(() =>
{
btnGetVerificationCode.Text = time.ToString() + "s";
});
Thread.Sleep(1000);
}
Application.RunOnMainThread(() =>
{
btnGetVerificationCode.IsSelected = true;
btnGetVerificationCode.TextID = StringId.GetVerificationCode;
});
})
{ IsBackground = true }.Start();
//获取验证码
pm.GetPhoneLoginVerCode(phoneNumber);
}
};
}
///
/// 切换登录类型
///
void LoadPage_SwitchLoginType()
{
//选择手机登录
btnPhoneLogin.MouseUpEventHandler += (sender, e) =>
{
#region 切换选中按钮
btnEmailLogin.TextColor = CSS_Color.PromptingColor1;
btnEmailLogin.TextSize = CSS_FontSize.TextFontSize;
btnPhoneLogin.TextColor = CSS_Color.MainColor;
btnPhoneLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber);
#endregion
#region 切换登录方式及图标
logintType = 0;
if (btnAccountIcon.Parent != null)
{
btnAccountIcon.RemoveFromParent();
}
accountView.AddChidren(btnGlobalRoaming);
//显示验证码登录方式,手机登录有验证码登录
btnSwitchLoginMode.Visible = true;
#endregion
};
//选择邮箱登录
btnEmailLogin.MouseUpEventHandler += (sender, e) =>
{
#region 切换选中按钮
btnPhoneLogin.TextColor = CSS_Color.PromptingColor1;
btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize;
btnEmailLogin.TextColor = CSS_Color.MainColor;
btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress);
#endregion
#region 切换登录类型及图标
logintType = 1;
if (btnGlobalRoaming.Parent != null)
{
btnGlobalRoaming.RemoveFromParent();
}
accountView.AddChidren(btnAccountIcon);
#endregion
//邮箱只有密码登录模式
logintMode = 0;
//密码登录
btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
passwordView.AddChidren(btnVisiblePassword);
passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
passwordView.AddChidren(btnForgetPassword);
btnPasswordIcon.IsSelected = false;
if (btnGetVerificationCode.Parent != null)
{
btnGetVerificationCode.RemoveFromParent();
}
//隐藏密码
etPassword.SecureTextEntry = true;
//隐藏验证码登录方式,邮箱登录没有验证码登录
btnSwitchLoginMode.Visible = false;
};
}
///
/// 切换登录方式
/// 验证码/密码
///
void LoadPage_SwitchLoginMode()
{
btnSwitchLoginMode.MouseUpEventHandler += (sender, e) =>
{
logintMode = logintMode == 0 ? 1 : 0;
//清除密码框文本数据
etPassword.Text = "";
//密码登录
if (logintMode == 0)
{
btnSwitchLoginMode.TextID = StringId.VerificationCodeLogin;
passwordView.AddChidren(btnVisiblePassword);
passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
passwordView.AddChidren(btnForgetPassword);
btnPasswordIcon.IsSelected = false;
if (btnGetVerificationCode.Parent != null)
{
btnGetVerificationCode.RemoveFromParent();
}
//隐藏密码
etPassword.SecureTextEntry = true;
}
//验证码登录
else if (logintMode == 1)
{
btnSwitchLoginMode.TextID = StringId.PasswordLogin;
passwordView.AddChidren(btnGetVerificationCode);
btnPasswordIcon.IsSelected = true;
if (btnVisiblePassword.Parent != null)
{
btnVisiblePassword.RemoveFromParent();
}
if (btnDividingLineVertical_PasswordView2.Parent != null)
{
btnDividingLineVertical_PasswordView2.RemoveFromParent();
}
if (btnForgetPassword.Parent != null)
{
btnForgetPassword.RemoveFromParent();
}
//验证码不需要隐藏
etPassword.SecureTextEntry = false;
}
};
}
///
/// 文本框选中事件
///
void LoadPage_SelectionEditText()
{
//当焦点在账号文本框时,文本框底线点亮
etAccount.FoucsChanged += (sender, e) =>
{
if (etAccount.Foucs)
{
btnAccountViewBottomLine.BackgroundColor = CSS_Color.MainColor;
btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
}
else
{
btnAccountViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
btnAccountViewBottomLine.Height = Application.GetRealHeight(1);
}
};
//当焦点在密码文本框时,文本框底线点亮
etPassword.FoucsChanged += (sender, e) =>
{
if (etPassword.Foucs)
{
btnPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor;
btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
}
else
{
btnPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
btnPasswordViewBottomLine.Height = Application.GetRealHeight(1);
}
};
//当焦点在账号文本框时,点击键盘回撤按键,触发的事件
etAccount.EditorEnterAction += (obj) =>
{
etPassword.Foucs = true;
};
//当焦点在密码文本框时,点击键盘回撤按键,触发的事件
etPassword.EditorEnterAction += (obj) =>
{
etPassword.Foucs = false;
};
}
///
/// 隐藏/显示密码
///
void LoadMethod_VisiblePassword()
{
btnVisiblePassword.MouseUpEventHandler += (sender, e) =>
{
btnVisiblePassword.IsSelected = !btnVisiblePassword.IsSelected;
if (btnVisiblePassword.IsSelected)
{
etPassword.SecureTextEntry = false;
}
else
{
etPassword.SecureTextEntry = true;
}
};
}
///
/// 登录按钮点击事件
///
void LoadEvent_Login()
{
btnLogin.MouseUpEventHandler += (sender, e) =>
{
if (btnLogin.IsSelected)
{
account = etAccount.Text.Trim();
password = etPassword.Text.Trim();
if (logintType == 0)
{
if (!Regex.IsMatch(account, @"^[1]+\d{9}"))
{
var tip = new Tip()
{
Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(bodyView);
return;
}
}
else
{
if (!Regex.IsMatch(account, "^[\\w-]+@[\\w-]+\\.(com|net|org|edu|mil|tv|biz|info)$"))
{
var tip = new Tip()
{
Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(bodyView);
return;
}
}
//创建登录线程
var loginThread = LoadThread_Login();
waitPage = new Loading();
new WaitPageMothed().LoadPage_WaitPage(loginThread, bodyView, waitPage);
}
};
#region 当账号密码都输入时,才能点击登录按钮
etAccount.TextChangeEventHandler += (sender, e) =>
{
if (etAccount.Text.Trim().Length > 0 && etPassword.Text.Trim().Length > 0)
{
btnLogin.IsSelected = true;
}
else
{
btnLogin.IsSelected = false;
}
};
etPassword.TextChangeEventHandler += (sender, e) =>
{
if (etAccount.Text.Trim().Length > 0 && etPassword.Text.Trim().Length > 0)
{
btnLogin.IsSelected = true;
}
else
{
btnLogin.IsSelected = false;
}
};
#endregion
}
///
/// 加载登录线程
///
Thread LoadThread_Login()
{
var loginThread = new Thread(() =>
{
try
{
//登录
var loginResult = LoadMethod_Login();
if (loginResult)
{
//获取住宅信息
var getResidencesResult = LoadMethod_GetResidences();
if (getResidencesResult)
{
/*
* Wait : 推送注册
*/
Application.RunOnMainThread(() =>
{
waitPage.RemoveFromParent();
waitPage = null;
//跳转页面----
MainPage.GoUserPage();
});
}
}
}
catch (Exception ex)
{
MainPage.Log($"LoginPage : {ex.Message}");
}
})
{ IsBackground = true };
return loginThread;
}
///
/// 调用登录接口登录
///
bool LoadMethod_Login()
{
var result = false;
//调用登录接口
var loginResult = pm.LoginByPassword(account, password);
if (loginResult.StateCode == "SUCCESS")
{
var loginDataStr = Newtonsoft.Json.Linq.JObject.FromObject(loginResult.ResponseData);
//记录用户数据
MainPage.LoginUser = new UserInfo
{
ID = (int)loginDataStr.GetValue("UserID"),
MasterID = (int)loginDataStr.GetValue("MainUserID"),
AccountType = (int)loginDataStr.GetValue("UserType"),
AccountString = account,
Password = password,
LastTime = DateTime.Now,
SIP_Account = loginDataStr.GetValue("AllVisionRegisterDevUserNameGuid").ToString(),
};
MainPage.LoginUser.SaveUserInfo();
MainPage.Log("登录成功。");
result = true;
}
//登录失败
else
{
string tipStr = "Sever erorr";
switch (loginResult.StateCode)
{
case "USERNAMEORPWDERROR":
tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
break;
case "Self:Net_Error":
tipStr = Language.StringByID(StringId.NetworkAnomaly);
break;
}
//账号或者密码错误
Application.RunOnMainThread(() =>
{
//提示原因
var tip = new Tip()
{
Text = tipStr,
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(bodyView);
btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
});
}
return result;
}
///
/// 获取住宅列表
///
bool LoadMethod_GetResidences()
{
var result = false;
var responsePack = pm.GetHomePager();
if (responsePack.StateCode == "Success")
{
var dataStr = Newtonsoft.Json.Linq.JObject.FromObject(responsePack.ResponseData);
//没有住宅
if (dataStr.GetValue("PageData").ToString() == "[]")
{
}
else
{
MainPage.LoginUser.HomeLists = new List();
foreach (var jsonData in dataStr.GetValue("PageData"))
{
var homeJsonStr = Newtonsoft.Json.Linq.JObject.FromObject(jsonData);
var home = new RegionInfoRes()
{
RegionID = homeJsonStr.GetValue("Id").ToString(),
RegionName = homeJsonStr.GetValue("RegionName").ToString(),
Name = homeJsonStr.GetValue("Name").ToString(),
};
MainPage.LoginUser.HomeLists.Add(home);
}
UserConfig.Instance.CurrentRegion = MainPage.LoginUser.HomeLists[0];
UserConfig.Instance.SaveUserConfig();
MainPage.LoginUser.SaveUserInfo();
}
result = true;
}
else
{
var tipStr = "Server erorr";
switch (responsePack.StateCode)
{
case "NoLogin":
tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
break;
}
Application.RunOnMainThread(() =>
{
//提示原因
var tip = new Tip()
{
Text = tipStr,
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(bodyView);
});
}
return result;
}
///
/// 加载注册界面
///
void LoadPage_RegisterPage()
{
btnRegister.MouseUpEventHandler += (sender, e) =>
{
//回调事件
Action callBackAction = (callBackPar_Action) =>
{
Application.RunOnMainThread(() =>
{
try
{
etAccount.Text = callBackPar_Action;
}
catch (Exception ex)
{
MainPage.Log($"login callBackAction : {ex.Message}");
}
});
};
var registerPage = new RegisterPage(callBackAction);
registerPage.Show();
registerPage.ShowDialog();
};
}
///
/// 忘记密码
///
void LoadMethod_ForgetPassword()
{
btnForgetPassword.MouseUpEventHandler += (sender, e) =>
{
Action callBackAction = (callBackPar_Action) =>
{
Application.RunOnMainThread(() =>
{
try
{
etAccount.Text = callBackPar_Action;
}
catch (Exception ex)
{
MainPage.Log($"login callBackAction : {ex.Message}");
}
});
};
var forgetPasswordDialog = new ForgetPasswordPage(callBackAction);
forgetPasswordDialog.Show();
forgetPasswordDialog.ShowDialog();
};
}
}
}