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 } }