using System;
using System.Text.RegularExpressions;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI1Login
{
public partial class LoginPage : FrameLayout
{
public LoginPage()
{
//bodyView = new FrameLayout();
//AddChidren(bodyView);
bodyView = this;
//2020-12-22 增加点击隐藏键盘事件
bodyView.MouseDownEventHandler += (sender, e) => {
Application.HideSoftInput();
};
pm = new HttpServerRequest();
}
public override void RemoveFromParent()
{
//如果当前界面存在正在等待数据的情况,先将该动作关掉
if (waitPage != null)
{
waitPage.RemoveFromParent();
waitPage = null;
}
base.RemoveFromParent();
////2020-12-22 增加点击隐藏键盘事件
//Application.HideSoftInput();
}
#region 局部变量
///
/// 登录类型
/// 0:手机
/// 1:邮箱
///
int loginType = 0;
///
/// 登录方式
/// 0:密码
/// 1:验证码
///
int logintMode = 0;
string account = "";
string password = "";
#endregion
#region 控件列表
///
/// 等待提示
///
Loading waitPage;
///
/// 当前界面
///
FrameLayout bodyView;
///
/// 选择手机登录按钮
///
Button btnPhoneLogin;
///
/// 选择邮箱登录按钮
///
Button btnEmailLogin;
///
/// 账号子区域
///
FrameLayout accountView;
///
/// 国际区号按钮
///
Button btnGlobalRoaming;
///
/// 账号子区域里面的分割线
///
Button btnDividingLineVertical_AccountView;
///
/// 账号文本框
///
EditText etAccount;
///
/// 账号Icon按钮
///
Button btnAccountIcon;
///
/// 密码子区域
///
FrameLayout passwordView;
///
/// 密码Icon按钮
///
Button btnPasswordIcon;
///
/// 密码文本框
///
EditText etPassword;
///
/// 密码子区域里面的分割线1
///
Button btnDividingLineVertical_PasswordView1;
///
/// 密码子区域里面的分割线2
///
Button btnDividingLineVertical_PasswordView2;
///
/// 忘记密码按钮
///
Button btnForgetPassword;
///
/// 获取手机验证码按钮
///
Button btnGetVerificationCode;
///
/// 密码是否可见按钮
///
Button btnVisiblePassword;
///
/// 账号子区域底部横线
///
Button btnAccountViewBottomLine;
///
/// 密码子区域底部横线
///
Button btnPasswordViewBottomLine;
///
/// 注册按钮
///
Button btnRegister;
///
/// 验证码登录按钮
///
Button btnSwitchLoginMode;
///
/// 登录按钮
///
Button btnLogin;
///
/// 服务器请求对象
///
HttpServerRequest pm;
#endregion
string verAccount = "";
///
///
///
string registerPhone;
string registerEmail;
///
/// 手机区号
///
string phoneZoneCode = "86";
///
/// 加载视图
///
public void LoadView(UserInfo userInfo = null)
{
var btnIcon = new Button()
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(73),
Width = Application.GetMinRealAverage(62),
Height = Application.GetMinRealAverage(62),
UnSelectedImagePath = "Public/Logo.png",
};
bodyView.AddChidren(btnIcon);
var btnIcon_bg = new Button()
{
X = Application.GetRealWidth(171),
Y = Application.GetRealHeight(69),
Width = Application.GetMinRealAverage(254),
Height = Application.GetMinRealAverage(156),
UnSelectedImagePath = "Public/Logo-bg.png"
};
bodyView.AddChidren(btnIcon_bg);
#if DEBUG
btnIcon_bg.MouseUpEventHandler += (sender, e) =>
{
//ESOnVideo.Current.Test();
};
bool b = false;
btnIcon.MouseUpEventHandler += (sender, e) =>
{
//ESOnVideo.Current.Test(false);
//return;
if (b)
{
//etAccount.Text = "13375012446";
//etAccount.Text = "1033326940@qq.com";
//etAccount.Text = "18022428438";//wjc
//etAccount.Text = "13602944661";//kx
//etAccount.Text = "13226233133";//豆豆
//etAccount.Text = "18316672920";//lcg "18316672920";//hzx;// "13415629083"//cf;;
etAccount.Text = "18316120654";//tujie
// "15622703419"lwn;// "18824864143";//"464027401@qq.com"; //"2791308028@qq.com";//13697499568
}
else
{
//etAccount.Text = "15217626103";//
//etAccount.Text = "13682244600";//波哥
//etAccount.Text = "BB01010101@evoyo.com";//可视对讲
//etAccount.Text = "13168123446";
//etAccount.Text = "13676202754";//巴林服务器
etAccount.Text = "13602944661";//kx
//etAccount.Text = "18666455392";//13375012446//13602944661//tzy 18778381374
//etAccount.Text = "15971583093";// gs//tzy 274116637@qq.com//Sumant.Bhatia@havells.com 国外服务器测试
}
b = !b;
etPassword.Text = "123456";
btnLogin.IsSelected = true;
};
#endif
#region 登录方式选择
btnPhoneLogin = new Button()
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(177),
Width = Application.GetRealWidth(150),
Height = Application.GetRealHeight(40),
TextID = StringId.LoginByPhone,
TextColor = CSS_Color.MainColor,
TextAlignment = TextAlignment.CenterLeft,
TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
};
bodyView.AddChidren(btnPhoneLogin);
btnEmailLogin = new Button()
{
X = btnPhoneLogin.Right ,//+ Application.GetRealWidth(20),
Y = Application.GetRealHeight(177),
Width = Application.GetRealWidth(140),
Height = Application.GetRealHeight(40),
TextID = StringId.LoginByEmail,
TextColor = CSS_Color.PromptingColor1,
TextAlignment = TextAlignment.Center,
TextSize = CSS_FontSize.TextFontSize,
};
bodyView.AddChidren(btnEmailLogin);
#endregion
#region 账号填写
accountView = new FrameLayout()
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(232),
Width = Application.GetRealWidth(319),
Height = Application.GetRealHeight(44),
};
bodyView.AddChidren(accountView);
btnGlobalRoaming = new Button()
{
Width = Application.GetRealWidth(65),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.FirstLevelTitleColor,
Text = "+" + phoneZoneCode,
TextSize = CSS_FontSize.TextFontSize,
Enable = true,
};
//跳转国家区号选择界面
EventHandler eHandler = (sender, e) =>
{
JLCountrycode.CountryCodeView.Current.Show((countryName, code) =>
{
if (!string.IsNullOrEmpty(code))
{
phoneZoneCode = code;
btnGlobalRoaming.Text = "+" + phoneZoneCode;
}
});
};
btnGlobalRoaming.MouseUpEventHandler += eHandler;
if (loginType == 0)
{
accountView.AddChidren(btnGlobalRoaming);
}
btnDividingLineVertical_AccountView = new Button()
{
X = Application.GetRealWidth(65),
Gravity = Gravity.CenterVertical,
Width = 1,
Height = Application.GetRealHeight(20),
BackgroundColor = CSS_Color.DividingLineColor,
};
accountView.AddChidren(btnDividingLineVertical_AccountView);
etAccount = new EditText()
{
X = Application.GetRealWidth(78),
Width = Application.GetRealWidth(319 - 78),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
PlaceholderTextColor = CSS_Color.PromptingColor1,
PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber),
TextAlignment = TextAlignment.CenterLeft,
};
accountView.AddChidren(etAccount);
if (userInfo != null)
{
registerEmail = userInfo.userEmailInfo;
etAccount.Text = registerPhone = userInfo.userMobileInfo;
}
btnAccountViewBottomLine = new Button()
{
Y = Application.GetRealHeight(42),
BackgroundColor = CSS_Color.DividingLineColor,
Height = Application.GetRealHeight(1),
};
accountView.AddChidren(btnAccountViewBottomLine);
btnAccountIcon = new Button()
{
X = Application.GetRealWidth(21),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/AccountIcon.png",
};
if (loginType == 1)
{
accountView.AddChidren(btnAccountIcon);
}
#endregion
#region 密码填写
passwordView = new FrameLayout()
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(288),
Width = Application.GetRealWidth(319),
Height = Application.GetRealHeight(44),
};
bodyView.AddChidren(passwordView);
btnPasswordIcon = new Button()
{
X = Application.GetRealWidth(21),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/PasswordIcon.png",
SelectedImagePath = "LoginIcon/VerificationCodeIcon.png",
};
passwordView.AddChidren(btnPasswordIcon);
btnDividingLineVertical_PasswordView1 = new Button()
{
X = Application.GetRealWidth(65),
Gravity = Gravity.CenterVertical,
Width = 1,
Height = Application.GetRealHeight(20),
BackgroundColor = CSS_Color.DividingLineColor,
};
passwordView.AddChidren(btnDividingLineVertical_PasswordView1);
etPassword = new EditText()
{
X = Application.GetRealWidth(78),
Width = Application.GetRealWidth(61 + 84),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
PlaceholderTextColor = CSS_Color.PromptingColor1,
PlaceholderText = Language.StringByID(StringId.PlsEntryPassword),
SecureTextEntry = true,
TextAlignment = TextAlignment.CenterLeft,
};
passwordView.AddChidren(etPassword);
#region 密码登录-控件加载
btnVisiblePassword = new Button()
{
X = Application.GetRealWidth(223),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png",
SelectedImagePath = "LoginIcon/ShowPasswordIcon.png",
};
passwordView.AddChidren(btnVisiblePassword);
btnDividingLineVertical_PasswordView2 = new Button()
{
X = Application.GetRealWidth(253),
Gravity = Gravity.CenterVertical,
Width = 1,
Height = Application.GetRealHeight(20),
BackgroundColor = CSS_Color.DividingLineColor,
};
passwordView.AddChidren(btnDividingLineVertical_PasswordView2);
btnForgetPassword = new Button()
{
X = Application.GetRealWidth(263),
Width = Application.GetRealWidth(56),
TextColor = CSS_Color.FirstLevelTitleColor,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.ForgetPassword,
TextSize = 12,
};
passwordView.AddChidren(btnForgetPassword);
#endregion
#region 验证码登录-控件加载
btnGetVerificationCode = new Button()
{
X = Application.GetRealWidth(219),
Width = Application.GetRealWidth(100),
TextID = StringId.GetVerificationCode,
SelectedTextColor = CSS_Color.MainColor,
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextColor = CSS_Color.PromptingColor1,
Visible = false,
IsSelected = false,
};
passwordView.AddChidren(btnGetVerificationCode);
#endregion
btnPasswordViewBottomLine = new Button()
{
Y = Application.GetRealHeight(42),
BackgroundColor = CSS_Color.DividingLineColor,
SelectedBackgroundColor = CSS_Color.MainColor,
Height = Application.GetRealHeight(1),
};
passwordView.AddChidren(btnPasswordViewBottomLine);
#endregion
#region 注册与快捷登录
btnRegister = new Button()
{
X = Application.GetRealWidth(28),
Y = passwordView.Bottom,
Width = Application.GetRealWidth(60),
Height = Application.GetRealHeight(17 + 12 + 12),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.SingUp,
TextAlignment = TextAlignment.CenterLeft,
};
bodyView.AddChidren(btnRegister);
btnSwitchLoginMode = new Button()
{
X = Application.GetRealWidth(223 + 28),
Y = passwordView.Bottom,
Width = Application.GetRealWidth(96),
Height = Application.GetRealHeight(51),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.VerificationCodeLogin,
TextAlignment = TextAlignment.CenterRight,
};
bodyView.AddChidren(btnSwitchLoginMode);
#endregion
btnLogin = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(403),
Width = Application.GetRealWidth(220),
Height = Application.GetRealWidth(44),
Radius = (uint)Application.GetRealWidth(22),
SelectedBackgroundColor = CSS_Color.MainColor,
BackgroundColor = CSS_Color.PromptingColor1,
TextID = StringId.Login,
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.MainBackgroundColor,
TextAlignment = TextAlignment.Center,
};
bodyView.AddChidren(btnLogin);
LoadEventList();
account = etAccount.Text.Trim();
#if DEBUG1211
//本地模式
Button btnLocalMode = new Button()
{
Y = Application.GetRealHeight(600),
Height = Application.GetRealHeight(67),
Text = "Local Mode",
TextAlignment = TextAlignment.Center,
BackgroundColor = CSS_Color.MainColor,
TextColor = CSS_Color.TextualColor,
};
bodyView.AddChidren(btnLocalMode);
btnLocalMode.MouseUpEventHandler = (sender, e) =>
{
MainPage.LocalMode = true;
UserInfo.Current = new UserInfo();
MainPage.GoUserPage();
};
MainPage.Log("etAccount.TextAlignment : " + etAccount.TextAlignment.ToString());
#endif
#region 隐私政策
AddServiceAgreementControl(bodyView);
#endregion
}
#region ■ 服务协议___________________________
bool isAgreePrivacyPolicy = false;
///
/// 添加服务协议控件
///
///
private void AddServiceAgreementControl(FrameLayout frameLayout)
{
isAgreePrivacyPolicy = OnAppConfig.Instance.isAgreePrivacyPolicy;
var frameRow = new FrameLayout()
{
Height = Application.GetRealHeight(28),
Y = Application.GetRealHeight(628),
};
frameLayout.AddChidren(frameRow);
//同意按钮背景
var agreeView = new FrameLayout()
{
Height = Application.GetRealHeight(28),
Width = Application.GetRealWidth(28),
X = Application.GetRealWidth(22),
};
frameRow.AddChidren(agreeView);
if(Language.CurrentLanguage == "Chinese")
{
agreeView.X = Application.GetRealWidth(82);
}
//同意图标按钮
var agreeBtn = new Button()
{
Width = Application.GetMinRealAverage(28),
Height = Application.GetMinRealAverage(28),
UnSelectedImagePath = "Public/ChooseIcon.png",
SelectedImagePath = "Public/ChooseOnIcon.png",
IsSelected = isAgreePrivacyPolicy,
Gravity = Gravity.Center
};
agreeView.AddChidren(agreeBtn);
EventHandler eventHandler = (sender, e) =>
{
isAgreePrivacyPolicy = !isAgreePrivacyPolicy;
agreeBtn.IsSelected = isAgreePrivacyPolicy;
OnAppConfig.Instance.isAgreePrivacyPolicy = isAgreePrivacyPolicy;
OnAppConfig.Instance.SaveConfig();
};
agreeBtn.MouseUpEventHandler = eventHandler;
agreeView.MouseUpEventHandler = eventHandler;
//int btnWidth = 0;
//同意文本
var agreeTextBtn = new TextButton()
{
X = agreeView.Right,
Width = Application.GetRealWidth(28),
Height = Application.GetRealHeight(28),
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.Agree
};
frameRow.AddChidren(agreeTextBtn);
agreeTextBtn.Width = Utlis.GetRealWidthByTextButton(agreeTextBtn);
//用户协议按钮
var userAgreementBtn = new TextButton()
{
X = agreeTextBtn.Right,
Width = Application.GetRealWidth(28),
Height = Application.GetRealHeight(28),
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = "《" + Language.StringByID(StringId.UserAgreement) + "》"
};
frameRow.AddChidren(userAgreementBtn);
userAgreementBtn.Width = Utlis.GetRealWidthByTextButton(userAgreementBtn);
//和文本
var andTextBtn = new TextButton()
{
X = userAgreementBtn.Right,
Width = Application.GetRealWidth(28),
Height = Application.GetRealHeight(28),
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.And
};
frameRow.AddChidren(andTextBtn);
andTextBtn.Width = Utlis.GetRealWidthByTextButton(andTextBtn);
//隐私政策按钮
var privacyPolicyBtn = new TextButton()
{
X = andTextBtn.Right,
Width = Application.GetRealWidth(28),
Height = Application.GetRealHeight(28),
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = "《" + Language.StringByID(StringId.PrivacyPolicy) + "》"
};
frameRow.AddChidren(privacyPolicyBtn);
privacyPolicyBtn.Width = Utlis.GetRealWidthByTextButton(privacyPolicyBtn);
//打开用户协议
userAgreementBtn.MouseUpEventHandler = (sender, e) =>
{
OpenWebViewPage(false);
};
//打开隐私政策
privacyPolicyBtn.MouseUpEventHandler = (sender, e) =>
{
OpenWebViewPage(true);
};
}
///
/// OpenWebViewPage
///
/// 是否隐私政策
private void OpenWebViewPage(bool isOpenPrivacyPolicy)
{
string url = isOpenPrivacyPolicy ? Constant.URL_PRIVACYPOLICY : Constant.URL_USERAGREEMENT;
string titleStr = isOpenPrivacyPolicy ? Language.StringByID(StringId.PrivacyPolicy) : Language.StringByID(StringId.UserAgreement);
new WebViewDialog().LoadPage(titleStr, url);
}
///
/// 检测隐私协议
///
///
private bool CheckPrivacyPolicy()
{
if (isAgreePrivacyPolicy == false)
{
//请同意《用户协议》和《隐私政策》
Utlis.ShowTip(Language.StringByID(StringId.PleaseReadAndAgreePrivacyPolicyMsg));
return false;
}
return true;
}
#endregion
}
}