using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter.Safety
{
///
/// 编辑胁迫密码的界面
///
public class CoercePswEditorForm : EditorCommonForm
{
#region ■ 变量声明___________________________
///
/// 用户账号
///
private int pswNo = 5;
///
/// 密码
///
private string password = string.Empty;
///
/// 密码提示
///
private string passwordTip = string.Empty;
///
/// 联系人的列表控件
///
private FrameListControl listPhoneView = null;
///
/// 信息控件
///
private InformationEditorControl tableContr = null;
///
/// 密码控件
///
private NormalViewControl btnPassword = null;
///
/// 当前的联系人列表
///
private List listPhoneData = null;
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
/// 用户密码
/// 用户密码提示
public void ShowForm(string i_password, string i_passwordTip)
{
this.password = i_password;
this.passwordTip = i_passwordTip;
this.ScrollEnabled = false;
//设置头部信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uCoercePassword));
//初始化中部信息
this.InitMiddleFrame(i_password);
}
///
/// 初始化中部信息
///
/// 用户密码
private void InitMiddleFrame(string i_password)
{
//清空bodyFrame
this.ClearBodyFrame();
var listBackControl = new VerticalFrameControl();
listBackControl.Height = bodyFrameLayout.Height;
bodyFrameLayout.AddChidren(listBackControl);
var frameback = new FrameLayout();
frameback.Y = Application.GetRealHeight(179);
frameback.Height = Application.GetRealHeight(395);
frameback.Width = Application.GetRealWidth(717);
frameback.Gravity = Gravity.CenterHorizontal;
frameback.BackgroundImagePath = "Safeguard/SafeguardPasswordGround.png";
listBackControl.frameTable.AddChidren(frameback);
//当前使用密码
var btnNowTip = new NormalViewControl(frameback.Width, Application.GetRealHeight(50), false);
btnNowTip.Y = Application.GetRealHeight(81);
btnNowTip.TextSize = 12;
btnNowTip.TextAlignment = TextAlignment.Center;
btnNowTip.TextColor = UserCenterColor.Current.TextGrayColor3;
btnNowTip.TextID = R.MyInternationalizationString.uNowUsePassword;
frameback.AddChidren(btnNowTip);
this.btnPassword = new NormalViewControl(frameback.Width, Application.GetRealHeight(90), false);
btnPassword.TextAlignment = TextAlignment.Center;
btnPassword.Y = Application.GetRealHeight(150);
btnPassword.TextSize = 24;
btnPassword.TextColor = 0xfffc744b;
btnPassword.Text = i_password;
btnPassword.IsBold = true;
frameback.AddChidren(btnPassword);
//初始化列表控件
this.InitListViewControl(listBackControl);
}
///
/// 初始化列表控件
///
private void InitListViewControl(VerticalFrameControl listBackControl)
{
//初始化桌布
this.tableContr = new InformationEditorControl();
var listView = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1025);
//备注信息
string caption = Language.StringByID(R.MyInternationalizationString.uNoteInformation);
var rowNote = new FrameCaptionInputControl(caption, passwordTip, listView.rowSpace / 2);
rowNote.txtInput.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uPlesaeInputNoteInformation);
rowNote.txtInput.MaxByte = 90;
listView.AddChidren(rowNote);
rowNote.InitControl();
rowNote.AddBottomLine();
rowNote.txtInput.FinishInputEvent += async () =>
{
if (rowNote.Text == string.Empty)
{
rowNote.Text = passwordTip;
return;
}
if (passwordTip != rowNote.Text)
{
//修改密码备注
await this.EditorPassworTip(password, rowNote.Text, true);
}
};
//修改密码
var rowPsw = new FrameRowControl(listView.rowSpace / 2);
listView.AddChidren(rowPsw);
rowPsw.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uChangedPassword), 300);
rowPsw.AddRightArrow();
rowPsw.AddBottomLine();
rowPsw.ButtonClickEvent += (sender, e) =>
{
var form = new CoercePswAddNewForm();
form.AddForm(rowNote.Text);
form.PasswordChangedEvent += (newPassword) =>
{
this.btnPassword.Text = newPassword;
this.password = newPassword;
};
};
//初始化联系人控件
this.InitPhoneControl(listView);
//重写底层的返回按键事件
this.BackButtonClickEvent = async (sender) =>
{
sender.CanClick = false;
if (rowNote.Text == string.Empty || passwordTip == rowNote.Text)
{
this.CloseForm();
}
else
{
//修改密码备注
var result = await this.EditorPassworTip(password, rowNote.Text, false);
sender.CanClick = true;
if (result == true)
{
this.CloseForm();
}
}
};
}
#endregion
#region ■ 初始化联系人控件___________________
///
/// 初始化联系人控件
///
private void InitPhoneControl(FrameListControl listTableView)
{
//联系人的列表控件
if (listPhoneView == null)
{
this.listPhoneView = new FrameListControl();
listPhoneView.rowSpace = listTableView.rowSpace;
listPhoneView.Height = Application.GetRealHeight(200);
listTableView.AddChidren(listPhoneView);
listPhoneView.Y -= listTableView.rowSpace;
}
else
{
this.listPhoneView.RemoveAll();
}
HdlThreadLogic.Current.RunThread(async () =>
{
//开启进度条
this.ShowProgressBar();
//获取联系方式
var result = await HdlSafeguardLogic.Current.GetCoercePhoneNumber();
if (result == null)
{
//关闭进度条
this.CloseProgressBar(ShowReLoadMode.YES);
return;
}
//关闭进度条
this.CloseProgressBar();
HdlThreadLogic.Current.RunMain(() =>
{
this.listPhoneData = new List();
//联系人
var rowContact = new FrameRowControl(this.listPhoneView.rowSpace / 2);
rowContact.UseClickStatu = false;
listPhoneView.AddChidren(rowContact);
rowContact.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uContactPersion), 300);
var btnAdd = rowContact.AddMostRightEmptyIcon(81, 81);
btnAdd.UnSelectedImagePath = "Item/Add.png";
rowContact.ButtonClickEvent += (sender, e) =>
{
var form = new CoercePswAddContactForm();
form.AddForm(listPhoneData);
form.AddPhoneEvent += () =>
{
//重新刷新
this.InitPhoneControl(listTableView);
};
};
if (result.Actions.Count > 0)
{
listPhoneData = result.Actions[0].PushTarget;
foreach (var data in listPhoneData)
{
//添加联系人行
this.AddPhoneNumRowLayout(data);
}
}
else
{
//没有联系人的话,添加个底线
rowContact.AddBottomLine();
}
//调整桌布大小
this.AdjustPhoneContrlTable();
});
});
}
///
/// 调整桌布大小
///
private void AdjustPhoneContrlTable()
{
//调整桌布
listPhoneView.AdjustRealHeight();
tableContr.FinishInitControl(false, true);
}
#endregion
#region ■ 添加联系人行_______________________
///
/// 添加联系人行
///
///
private void AddPhoneNumRowLayout(ZigBee.Device.Safeguard.PushTargetInfo data)
{
var strArry = data.PushNumber.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
if (strArry.Length != 2)
{
return;
}
string areaCode2 = strArry[0];
string phoneNum = strArry[1];
string strPhone = "+" + areaCode2 + " " + phoneNum;
if (phoneNum.Length >= 11)
{
phoneNum = phoneNum.Substring(0, 3) + "".PadLeft(phoneNum.Length - 7, '*') + phoneNum.Substring(phoneNum.Length - 4, 4);
strPhone = "+" + areaCode2 + " " + phoneNum;
}
else if (phoneNum.Length >= 5)
{
//或许这是国外的手机吧
phoneNum = phoneNum.Substring(0, 3) + "".PadLeft(phoneNum.Length - 5, '*') + phoneNum.Substring(phoneNum.Length - 2, 2);
strPhone = "+" + areaCode2 + " " + phoneNum;
}
var rowContact = new RowLayoutControl();
rowContact.MainKeys = strPhone;
this.listPhoneView.AddChidren(rowContact);
rowContact.frameTable.UseClickStatu = false;
//联系方式
rowContact.frameTable.AddLeftCaption(strPhone + " (" + data.PushNumberNote + ")", 800);
rowContact.frameTable.AddBottomLine();
//删除
var btnDetete = rowContact.AddDeleteControl();
btnDetete.ButtonClickEvent += (sender, e) =>
{
string[] Arry = data.PushNumber.Split(new string[] { "-" }, StringSplitOptions.RemoveEmptyEntries);
string PNumber = string.Empty;
string areaCode = string.Empty;
if (Arry.Length == 1)
{
PNumber = Arry[0];
}
else
{
areaCode = Arry[0];
PNumber = Arry[1];
}
string msg = Language.StringByID(R.MyInternationalizationString.uShowDoDeleteMsg);
this.ShowMassage(ShowMsgType.Confirm, msg, () =>
{
//删除联系人方式
this.DeleteCoercePhoneNumber(areaCode, PNumber, rowContact);
});
};
}
///
/// 删除联系人方式
///
///
///
///
public async void DeleteCoercePhoneNumber(string areaCode, string phone, RowLayoutControl rowContact)
{
bool result = await HdlSafeguardLogic.Current.DeleteCoercePhoneNumber(areaCode, phone);
if (result == true)
{
bool canMove = false;
for (int i = 0; i < this.listPhoneView.ChildrenCount; i++)
{
var myRow = this.listPhoneView.GetChildren(i) as RowLayoutControl;
if (myRow != null && myRow.MainKeys == rowContact.MainKeys)
{
//循环到了当前控件
canMove = true;
continue;
}
if (canMove == true)
{
//它之后的控件全部往上移动
myRow.Y -= rowContact.Height;
}
}
rowContact.RemoveFromParent();
//移除缓存
string checkKeys = areaCode + "-" + phone;
for (int i = 0; i < this.listPhoneData.Count; i++)
{
if (listPhoneData[i].PushNumber == checkKeys)
{
listPhoneData.RemoveAt(i);
}
}
//调整桌布大小
this.AdjustPhoneContrlTable();
}
}
#endregion
#region ■ 修改备注___________________________
///
/// 修改密码备注
///
/// 用户密码
/// 用户密码提示
private async System.Threading.Tasks.Task EditorPassworTip(string i_password, string i_passwordTip, bool ShowMsg)
{
var result = await HdlSafeguardLogic.Current.AddPassWordTips(this.pswNo, i_password, i_passwordTip);
if (result == true)
{
if (ShowMsg == true)
{
//修改备注信息成功!
string msg = Language.StringByID(R.MyInternationalizationString.uEditorNoteInformationSuccess);
this.ShowMassage(ShowMsgType.Tip, msg);
}
this.passwordTip = i_passwordTip;
}
return result;
}
#endregion
}
}