xm
2020-07-21 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d
ZigbeeApp/Shared/Phone/UserCenter/Safety/CoercePswAddContactForm.cs
New file
@@ -0,0 +1,256 @@
using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.Safety
{
    /// <summary>
    /// 添加胁迫联系人
    /// </summary>
    public class CoercePswAddContactForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 添加联系方式的事件
        /// </summary>
        public Action AddPhoneEvent = null;
        /// <summary>
        /// 信息提示控件
        /// </summary>
        private NormalViewControl btnErrorMsg = null;
        /// <summary>
        /// 电话列表
        /// </summary>
        private List<Safeguard.PushTargetInfo> listPhoneData = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="listData"></param>
        public void ShowForm(List<Safeguard.PushTargetInfo> listData)
        {
            this.listPhoneData = listData;
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAddContactPersion));
            var btnIcon = new MostRightIconControl(69, 69);
            btnIcon.UnSelectedImagePath = "Item/PhoneBook.png";
            topFrameLayout.AddChidren(btnIcon);
            btnIcon.InitControl();
            btnIcon.ButtonClickEvent += ((sender, e) =>
            {
                Contacts.ContactAction = (phoneName, phoneNum) =>
                {
                    if (string.IsNullOrEmpty(phoneName) == true)
                    {
                        return;
                    }
                    //手机号检测
                    if (this.CheckPhoneNumber("86", phoneNum, phoneName) == false)
                    {
                        return;
                    }
                    //保存联系人
                    this.SaveCoercePhoneNumber("86", phoneNum, phoneName);
                };
                Contacts.Open();
            });
            //初始化中部信息
            this.InitMiddleFrame();
            //重写底层返回按键事件
            this.BackButtonClickEvent = (sender) =>
            {
                this.AddPhoneEvent = null;
                this.CloseForm();
            };
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            //清空bodyFrame
            this.ClearBodyFrame();
            var frameBack = new FrameLayout();
            frameBack.Height = Application.GetRealHeight(328);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            bodyFrameLayout.AddChidren(frameBack);
            //地区码
            var btnArea = new NormalViewControl(127, 60, true);
            btnArea.X = ControlCommonResourse.XXLeft;
            btnArea.Y = Application.GetRealHeight(57);
            btnArea.Text = "+86";
            btnArea.TextAlignment = TextAlignment.Center;
            btnArea.TextColor = UserCenterColor.Current.TextGrayColor1;
            frameBack.AddChidren(btnArea);
            //目前只针对+86
            //btnArea.ButtonClickEvent += (sender, e) =>
            //{
            //    var form = new AreaCodeSelectForm();
            //    form.AddForm();
            //    form.FinishSelectEvent += (code) =>
            //    {
            //        btnArea.Text = "+" + code;
            //    };
            //};
            //电话输入框
            var txtPhone = new TextInputControl(Application.GetRealWidth(634), btnArea.Height, false);
            txtPhone.X = btnArea.Right + Application.GetRealWidth(35);
            txtPhone.Y = btnArea.Y;
            txtPhone.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uPleaseInputPhoneNumber);
            frameBack.AddChidren(txtPhone);
            //取消图标
            var btnCancel1 = new MostRightIconControl(69, 69);
            btnCancel1.Gravity = Gravity.Frame;
            btnCancel1.Y = Application.GetRealHeight(23);
            btnCancel1.UnSelectedImagePath = "Item/CancelIcon.png";
            frameBack.AddChidren(btnCancel1);
            btnCancel1.InitControl();
            btnCancel1.ButtonClickEvent += (sender, e) =>
            {
                txtPhone.Text = string.Empty;
            };
            //线
            var btnLine = new NormalViewControl(Application.GetRealWidth(965), ControlCommonResourse.BottomLineHeight, false);
            btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
            btnLine.Y = Application.GetRealHeight(150);
            btnLine.Gravity = Gravity.CenterHorizontal;
            frameBack.AddChidren(btnLine);
            //联动线的状态
            txtPhone.btnLine = btnLine;
            //备注
            var txtNote = new TextInputControl(Application.GetRealWidth(740), txtPhone.Height, false);
            txtNote.X = ControlCommonResourse.XXLeft;
            txtNote.Y = btnLine.Bottom + Application.GetRealHeight(60);
            txtNote.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uPlesaeInputNoteInformation);
            frameBack.AddChidren(txtNote);
            //取消图标
            var btnCancel2 = new MostRightIconControl(69, 69);
            btnCancel2.Gravity = Gravity.Frame;
            btnCancel2.Y = btnLine.Bottom + Application.GetRealHeight(29);
            btnCancel2.UnSelectedImagePath = "Item/CancelIcon.png";
            frameBack.AddChidren(btnCancel2);
            btnCancel2.InitControl();
            btnCancel2.ButtonClickEvent += (sender, e) =>
            {
                txtNote.Text = string.Empty;
            };
            //信息提示
            this.btnErrorMsg = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(60), false);
            btnErrorMsg.X = ControlCommonResourse.XXLeft;
            btnErrorMsg.Y = frameBack.Bottom + Application.GetRealHeight(29);
            btnErrorMsg.TextColor = 0xfff75858;
            btnErrorMsg.TextSize = 12;
            bodyFrameLayout.AddChidren(btnErrorMsg);
            //完成
            var btnFinish = new BottomClickButton();
            btnFinish.TextID = R.MyInternationalizationString.uFinish;
            bodyFrameLayout.AddChidren(btnFinish);
            btnFinish.ButtonClickEvent += (sender, e) =>
            {
                //手机号检测
                if (this.CheckPhoneNumber(btnArea.Text.Substring(1), txtPhone.Text.Trim(), txtNote.Text.Trim()) == false)
                {
                    return;
                }
                //执行保存手机操作
                this.SaveCoercePhoneNumber(btnArea.Text.Substring(1), txtPhone.Text.Trim(), txtNote.Text.Trim());
            };
        }
        #endregion
        #region ■ 添加联系人方式_____________________
        /// <summary>
        /// 变更联系人方式
        /// </summary>
        /// <param name="areaCode"></param>
        /// <param name="phoneNum"></param>
        /// <param name="strNote"></param>
        private async void SaveCoercePhoneNumber(string areaCode, string phoneNum, string strNote)
        {
            var listPhone = new List<string>();
            listPhone.Add(areaCode + "-" + phoneNum);
            var listNote = new List<string>();
            listNote.Add(strNote);
            //变更
            var result = await HdlSafeguardLogic.Current.SetCoercePhoneNumber(listPhone, listNote);
            if (result == false)
            {
                return;
            }
            this.CloseForm();
            //调用回调函数
            this.AddPhoneEvent?.Invoke();
            this.AddPhoneEvent = null;
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 检测手机号
        /// </summary>
        /// <param name="areaCode"></param>
        /// <param name="phone"></param>
        /// <param name="strNote"></param>
        private bool CheckPhoneNumber(string areaCode, string phone,string strNote)
        {
            //输入为空
            if (phone == string.Empty)
            {
                //请输入手机号
                btnErrorMsg.Text = Language.StringByID(R.MyInternationalizationString.uPleaseInputPhoneNumber);
                return false;
            }
            if (strNote == string.Empty)
            {
                //请输入备注内容
                btnErrorMsg.Text = Language.StringByID(R.MyInternationalizationString.uPlesaeInputNoteInformation);
                return false;
            }
            //检测手机号格式
            if (HdlCheckLogic.Current.CheckPhoneNumber(phone, areaCode) == false)
            {
                //这不是一个有效的手机号
                btnErrorMsg.Text = Language.StringByID(R.MyInternationalizationString.uThisIsNotPhoneNumberType);
                return false;
            }
            foreach (var data in this.listPhoneData)
            {
                if (data.PushNumber == areaCode + "-" + phone)
                {
                    //联系方式已经存在
                    btnErrorMsg.Text = Language.StringByID(R.MyInternationalizationString.uThePhoneNumIsRepeat);
                    return false;
                }
            }
            btnErrorMsg.Text = string.Empty;
            return true;
        }
        #endregion
    }
}