using System;
using System.Collections.Generic;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI1Login
{
public partial class RegisterPage : Dialog
{
#region 控件列表
///
/// 等待提示
///
Loading waitPage;
///
/// 当前界面
///
FrameLayout bodyView;
///
/// 选择手机登录按钮
///
Button btnPhoneLogin;
///
/// 选择邮箱登录按钮
///
Button btnEmailLogin;
///
/// 账号子区域
///
FrameLayout accountView;
///
/// 国际区号按钮
///
Button btnGlobalRoaming;
///
/// 账号子区域里面的分割线
///
Button btnDividingLineVertical_AccountView;
///
/// 账号文本框
///
EditText etAccount;
///
/// 账号Icon按钮
///
Button btnAccountIcon;
///
/// 账号子区域底部横线
///
Button btnVerificationCodeViewBottomLine;
///
/// 密码子区域
///
FrameLayout passwordView;
///
/// 密码Icon按钮
///
Button btnPasswordIcon;
///
/// 密码文本框
///
EditText etPassword;
///
/// 密码子区域里面的分割线1
///
Button btnDividingLineVertical_PasswordView1;
///
/// 密码是否可见按钮
///
Button btnVisiblePassword;
///
/// 密码子区域底部横线
///
Button btnPasswordViewBottomLine;
///
/// 确认密码子区域
///
FrameLayout repeatPasswordView;
///
/// 确认密码Icon按钮
///
Button btnRepeatPasswordIcon;
///
/// 确认密码文本框
///
EditText etRepeatPassword;
///
/// 确认密码子区域里面的分割线1
///
Button btnRepeatDividingLineVertical_PasswordView1;
///
/// 确认密码是否可见按钮
///
Button btnRepeatVisiblePassword;
///
/// 确认密码子区域底部横线
///
Button btnRepeatPasswordViewBottomLine;
///
/// 验证码子区域
///
FrameLayout verificationCodeView;
///
/// 验证码图标
///
Button btnVerificationCodeIcon;
///
/// 验证码子区域分割线
///
Button btnDividingLineVertical_VerificationCodeView1;
///
/// 验证码文本输入框
///
EditText etVerificationCode;
///
/// 获取验证码按钮
///
Button btnGetVerificationCode_Phone;
///
/// 获取验证码按钮
///
Button btnGetVerificationCode_Mail;
///
/// 验证码子区域底部分割线
///
Button btnAccountViewBottomLine;
///
/// 注册按钮
///
Button btnRegister;
#endregion
#region 局部变量列表
///
/// 账号类型
/// 0:手机
/// 1:邮箱
///
int accountType = 0;
///
/// 手机号码是否有效
///
bool ValidMobileNumber = false;
///
/// 密码是否有效
///
bool ValidPassword = false;
///
/// 服务器请求对象
///
HttpServerRequest pm;
///
/// 回调事件
///
//Action callbackAction;
///
/// 注册类型
/// 0:手机
/// 1:邮箱
///
int registerType;
string registerPhone;
string registerEmail;
#endregion
public RegisterPage()
{
bodyView = new FrameLayout()
{
BackgroundColor = CSS_Color.BackgroundColor,
};
AddChidren(bodyView);
pm = new HttpServerRequest();
}
//public RegisterPage(Action action)
//{
// bodyView = new FrameLayout()
// {
// BackgroundColor = CSS_Color.MainBackgroundColor,
// };
// AddChidren(bodyView);
// pm = new HttpServerRequest();
// callbackAction = action;
//}
public void ShowDialog()
{
new TopViewDiv(this, bodyView, Language.StringByID(StringId.Register)).LoadTopView();
//new PublicAssmebly().LoadTopView(this, bodyView, Language.StringByID(StringId.Register));
#region 注册方式选择
btnPhoneLogin = new Button()
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(112),
Width = Application.GetRealWidth(120),
Height = Application.GetRealHeight(40),
TextID = StringId.RegisterByPhone,
TextColor = CSS_Color.MainColor,
TextAlignment = TextAlignment.CenterLeft,
TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
};
bodyView.AddChidren(btnPhoneLogin);
btnEmailLogin = new Button()
{
X = btnPhoneLogin.Right,
Y = Application.GetRealHeight(112),
Width = Application.GetRealWidth(100),
Height = Application.GetRealHeight(40),
TextID = StringId.RegisterByEmail,
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(167),
Width = Application.GetRealWidth(319),
Height = Application.GetRealHeight(44),
};
bodyView.AddChidren(accountView);
btnGlobalRoaming = new Button()
{
Width = Application.GetRealWidth(57),
X = Application.GetRealWidth(9),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
Text = "+86",
TextSize = CSS_FontSize.TextFontSize,
};
if (accountType == 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(49),
Width = Application.GetRealWidth(319 - 78),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
PlaceholderTextColor = CSS_Color.PromptingColor1,
PlaceholderText = Language.StringByID(StringId.PlsEntryPhoneNumber),
};
accountView.AddChidren(etAccount);
btnAccountViewBottomLine = new Button()
{
Y = Application.GetRealHeight(42),
BackgroundColor = CSS_Color.DividingLineColor,
Height = Application.GetRealHeight(1),
};
accountView.AddChidren(btnAccountViewBottomLine);
btnAccountIcon = new Button()
{
X = Application.GetRealWidth(9),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/AccountIcon.png",
};
if (accountType == 1)
{
accountView.AddChidren(btnAccountIcon);
}
#endregion
#region 密码填写
passwordView = new FrameLayout()
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(223),
Width = Application.GetRealWidth(319),
Height = Application.GetRealHeight(44),
};
bodyView.AddChidren(passwordView);
btnPasswordIcon = new Button()
{
X = Application.GetRealWidth(9),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/PasswordIcon.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(49),
Width = Application.GetRealWidth(319 - 78),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
PlaceholderTextColor = CSS_Color.PromptingColor1,
PlaceholderText = Language.StringByID(StringId.PlsRegisterPassword),
SecureTextEntry = true,
};
passwordView.AddChidren(etPassword);
#region 密码登录-控件加载
btnVisiblePassword = new Button()
{
X = Application.GetRealWidth(295),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png",
SelectedImagePath = "LoginIcon/ShowPasswordIcon.png",
};
passwordView.AddChidren(btnVisiblePassword);
#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 确认密码填写
repeatPasswordView = new FrameLayout()
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(279),
Width = Application.GetRealWidth(319),
Height = Application.GetRealHeight(44),
};
bodyView.AddChidren(repeatPasswordView);
btnRepeatPasswordIcon = new Button()
{
X = Application.GetRealWidth(9),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/PasswordIcon.png",
};
repeatPasswordView.AddChidren(btnRepeatPasswordIcon);
//btnRepeatDividingLineVertical_PasswordView1 = new Button()
//{
// X = Application.GetRealWidth(65),
// Gravity = Gravity.CenterVertical,
// Width = 1,
// Height = Application.GetRealHeight(20),
// BackgroundColor = CSS_Color.DividingLineColor,
//};
//repeatPasswordView.AddChidren(btnRepeatDividingLineVertical_PasswordView1);
etRepeatPassword = new EditText()
{
X = Application.GetRealWidth(49),
Width = Application.GetRealWidth(319 - 78),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
PlaceholderTextColor = CSS_Color.PromptingColor1,
PlaceholderText = Language.StringByID(StringId.PlsRegisterRepeatPassword),
SecureTextEntry = true,
};
repeatPasswordView.AddChidren(etRepeatPassword);
#region 密码登录-控件加载
btnRepeatVisiblePassword = new Button()
{
X = Application.GetRealWidth(295),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/HidePasswordIcon.png",
SelectedImagePath = "LoginIcon/ShowPasswordIcon.png",
};
repeatPasswordView.AddChidren(btnRepeatVisiblePassword);
#endregion
btnRepeatPasswordViewBottomLine = new Button()
{
Y = Application.GetRealHeight(42),
BackgroundColor = CSS_Color.DividingLineColor,
SelectedBackgroundColor = CSS_Color.MainColor,
Height = Application.GetRealHeight(1),
};
repeatPasswordView.AddChidren(btnRepeatPasswordViewBottomLine);
#endregion
#region 验证码填写
verificationCodeView = new FrameLayout()
{
X = Application.GetRealWidth(28),
Y = Application.GetRealHeight(335),
Width = Application.GetRealWidth(319),
Height = Application.GetRealHeight(44),
};
bodyView.AddChidren(verificationCodeView);
btnVerificationCodeIcon = new Button()
{
X = Application.GetRealWidth(9),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(20),
Height = Application.GetMinRealAverage(20),
UnSelectedImagePath = "LoginIcon/VerificationCodeIcon.png",
};
verificationCodeView.AddChidren(btnVerificationCodeIcon);
//btnDividingLineVertical_VerificationCodeView1 = new Button()
//{
// X = Application.GetRealWidth(65),
// Gravity = Gravity.CenterVertical,
// Width = 1,
// Height = Application.GetRealHeight(20),
// BackgroundColor = CSS_Color.DividingLineColor,
//};
//verificationCodeView.AddChidren(btnDividingLineVertical_VerificationCodeView1);
etVerificationCode = new EditText()
{
X = Application.GetRealWidth(49),
Width = Application.GetRealWidth(61 + 84),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
PlaceholderTextColor = CSS_Color.PromptingColor1,
PlaceholderText = Language.StringByID(StringId.PlsEntryVerificationCode),
};
verificationCodeView.AddChidren(etVerificationCode);
btnGetVerificationCode_Phone = new Button()
{
X = Application.GetRealWidth(219),
Width = Application.GetRealWidth(100),
TextID = StringId.GetVerificationCode,
SelectedTextColor = CSS_Color.MainColor,
TextColor = CSS_Color.PromptingColor1,
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
};
verificationCodeView.AddChidren(btnGetVerificationCode_Phone);
btnGetVerificationCode_Mail = new Button()
{
X = Application.GetRealWidth(219),
Width = Application.GetRealWidth(100),
TextID = StringId.GetVerificationCode,
SelectedTextColor = CSS_Color.MainColor,
TextColor = CSS_Color.PromptingColor1,
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Visible = false
};
verificationCodeView.AddChidren(btnGetVerificationCode_Mail);
btnVerificationCodeViewBottomLine = new Button()
{
Y = Application.GetRealHeight(42),
BackgroundColor = CSS_Color.DividingLineColor,
SelectedBackgroundColor = CSS_Color.MainColor,
Height = Application.GetRealHeight(1),
};
verificationCodeView.AddChidren(btnVerificationCodeViewBottomLine);
#endregion
btnRegister = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(421),
Width = Application.GetRealWidth(220),
Height = Application.GetRealHeight(44),
Radius = (uint)Application.GetRealHeight(22),
SelectedBackgroundColor = CSS_Color.MainColor,
BackgroundColor = CSS_Color.PromptingColor1,
TextID = StringId.Register,
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.MainBackgroundColor,
TextAlignment = TextAlignment.Center,
};
bodyView.AddChidren(btnRegister);
LoadEventList();
}
///
/// 注册成功之后自动登录
///
void LoadEvent_AutoLogin(string account, string password)
{
Dialog dialog = new Dialog();
FrameLayout frame = new FrameLayout()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(198),
Width = Application.GetRealWidth(288),
Height = Application.GetRealHeight(206),
BackgroundColor = CSS_Color.MainBackgroundColor,
Radius = (uint)Application.GetRealWidth(12),
BorderWidth = 0,
BorderColor = 0x00000000,
};
dialog.AddChidren(frame);
Button btnAccountText = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(40),
Height = Application.GetRealHeight(17 + 14 + 14),
IsMoreLines = true,
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
Text = account,
};
frame.AddChidren(btnAccountText);
Button btnTipRegisterSuccess = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(123),
Height = Application.GetRealHeight(30),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextID = StringId.CongratulationsRegistration,
};
frame.AddChidren(btnTipRegisterSuccess);
Button btnAutoLoginTip = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = btnTipRegisterSuccess.Bottom,
Height = Application.GetRealHeight(17 + 8),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.AutomaticallyLogin,
};
frame.AddChidren(btnAutoLoginTip);
Button btnHeadImage = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(150),
Width = Application.GetRealWidth(84),
Height = Application.GetRealWidth(84),
Radius = (uint)Application.GetRealWidth(42),
BorderColor = 0x00000000,
BorderWidth = 0,
UnSelectedImagePath = "LoginIcon/2.png",
};
dialog.AddChidren(btnHeadImage);
dialog.Show();
new Thread(() =>
{
Thread.Sleep(1500);
Application.RunOnMainThread(() =>
{
//创建登录线程
var loginThread = LoadThread_Login(account, password);
waitPage = new Loading();
new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage);
dialog.Close();
});
})
{ IsBackground = true }.Start();
}
#region 登录线程部分
///
/// 加载登录线程
///
Thread LoadThread_Login(string account,string password)
{
var loginThread = new Thread(() =>
{
try
{
//登录
var loginResult = LoadMethod_Login(account,password);
if (loginResult)
{
//获取住宅信息
var getResidencesResult = LoadMethod_GetResidences();
if (getResidencesResult)
{
/*
* Wait : 推送注册
*/
Application.RunOnMainThread(() =>
{
waitPage.RemoveFromParent();
waitPage = null;
//跳转页面----
MainPage.GoUserPage();
});
}
}
}
catch (Exception ex)
{
MainPage.Log($"LoginPage : {ex.Message}");
}
})
{ IsBackground = true };
return loginThread;
}
///
/// 调用登录接口登录
///
bool LoadMethod_Login(string account, string password)
{
var result = false;
//调用登录接口
var loginResult = pm.LoginByPassword(account, password);
if (loginResult.StateCode.ToUpper() == "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,
userName = loginDataStr.GetValue("Remark").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 = 1,
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 == "Success")
{
}
else
{
var tipStr = "Server erorr";
switch (responsePack)
{
case "NoLogin":
tipStr = Language.StringByID(StringId.InvalidLoginCertificate);
break;
}
Application.RunOnMainThread(() =>
{
//提示原因
var tip = new Tip()
{
Text = tipStr,
CloseTime = 1,
Direction = AMPopTipDirection.None
};
tip.Show(bodyView);
});
}
return result;
}
#endregion
}
}