HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-09-30 404cdc88627f942df7944af04ee05b9d527752d6
ZigbeeApp/Shared/Phone/UserCenter/Safety/CoerceContactSettionForm.cs
@@ -8,28 +8,28 @@
    /// <summary>
    /// 联系人设置
    /// </summary>
    public class CoerceContactSettionForm : UserCenterCommonForm
    public class CoerceContactSettionForm : EditorCommonForm
    {
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalScrolViewLayout listView = null;
        /// <summary>
        /// 列表控件最多只能显示多少行控件,如果超过时,高度不再变化
        /// </summary>
        private int listViewCount = 7;
        /// <summary>
        /// 桌布控件
        /// </summary>
        private FrameLayout frameTableLayout = null;
        /// <summary>
        /// 【添加联系人】的行
        /// </summary>
        private StatuRowLayout addPersonRow = null;
        /// <summary>
        /// 电话列表
        /// </summary>
        private List<Safeguard.PushTargetInfo> listPhoneData = null;
        ///// <summary>
        ///// 列表控件
        ///// </summary>
        //private VerticalScrolViewLayout listView = null;
        ///// <summary>
        ///// 列表控件最多只能显示多少行控件,如果超过时,高度不再变化
        ///// </summary>
        //private int listViewCount = 7;
        ///// <summary>
        ///// 桌布控件
        ///// </summary>
        //private FrameLayout frameTableLayout = null;
        ///// <summary>
        ///// 【添加联系人】的行
        ///// </summary>
        //private StatuRowLayout addPersonRow = null;
        ///// <summary>
        ///// 电话列表
        ///// </summary>
        //private List<Safeguard.PushTargetInfo> listPhoneData = null;
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
@@ -37,191 +37,194 @@
        /// <param name="listData">已经存在的联系方式</param>
        public void ShowForm(List<Safeguard.PushTargetInfo> listData)
        {
            this.listPhoneData = listData;
            //this.listPhoneData = listData;
            //计算理论值
            int maxHeight = Application.GetRealHeight(180) * 7;
            this.listViewCount = maxHeight / ControlCommonResourse.ListViewRowHeight;
            ////计算理论值
            //int maxHeight = Application.GetRealHeight(180) * 7;
            //this.listViewCount = maxHeight / ControlCommonResourse.ListViewRowHeight;
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uContactSettion));
            //初始化中部信息
            this.InitMiddleFrame();
            //this.InitMiddleFrame();
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            //胁迫状态下,被通知人的联系方式
            var btnTitle = new TitleViewControl();
            btnTitle.TextColor = UserCenterColor.Current.TextGrayColor;
            btnTitle.Y = Application.GetRealHeight(40);
            btnTitle.TextID = R.MyInternationalizationString.uContactInCoerceStatu;
            bodyFrameLayout.AddChidren(btnTitle);
        ///// <summary>
        ///// 初始化中部信息
        ///// </summary>
        //private void InitMiddleFrame()
        //{
        //    //清空bodyFrame
        //    this.ClearBodyFrame();
            this.frameTableLayout = new FrameLayout();
            frameTableLayout.Y = btnTitle.Bottom;
            bodyFrameLayout.AddChidren(this.frameTableLayout);
        //    //胁迫状态下,被通知人的联系方式
        //    var btnTitle = new TitleViewControl();
        //    btnTitle.TextColor = UserCenterColor.Current.TextGrayColor;
        //    btnTitle.Y = Application.GetRealHeight(40);
        //    btnTitle.TextID = R.MyInternationalizationString.uContactInCoerceStatu;
        //    bodyFrameLayout.AddChidren(btnTitle);
            //设置中间部分信息
            this.SetMiddleInfo();
        }
        //    this.frameTableLayout = new FrameLayout();
        //    frameTableLayout.Y = btnTitle.Bottom;
        //    bodyFrameLayout.AddChidren(this.frameTableLayout);
        /// <summary>
        /// 设置中间部分信息
        /// </summary>
        private void SetMiddleInfo()
        {
            this.listView = new VerticalScrolViewLayout();
            this.listView.Height = 0;
            frameTableLayout.AddChidren(this.listView);
        //    //设置中间部分信息
        //    this.SetMiddleInfo();
        //}
            new System.Threading.Thread(() =>
            {
                Application.RunOnMainThread(() =>
                {
                    //添加联系人的明细行
                    this.AddPhoneNumList();
                    //添加【添加联系人】的行
                    this.AddAddContactPersionRow();
                });
            })
            { IsBackground = true }.Start();
        }
        ///// <summary>
        ///// 设置中间部分信息
        ///// </summary>
        //private void SetMiddleInfo()
        //{
        //    this.listView = new VerticalScrolViewLayout();
        //    this.listView.Height = 0;
        //    frameTableLayout.AddChidren(this.listView);
        /// <summary>
        /// 添加联系人的明细行
        /// </summary>
        private void AddPhoneNumList()
        {
            int heightCount = listPhoneData.Count;
            if (heightCount > listViewCount)
            {
                heightCount = listViewCount;
            }
        //    new System.Threading.Thread(() =>
        //    {
        //        Application.RunOnMainThread(() =>
        //        {
        //            //添加联系人的明细行
        //            this.AddPhoneNumList();
        //            //添加【添加联系人】的行
        //            this.AddAddContactPersionRow();
        //        });
        //    })
        //    { IsBackground = true }.Start();
        //}
            foreach (var data in listPhoneData)
            {
                //添加联系人行
                this.AddPhoneNumRowLayout(data);
            }
        }
        ///// <summary>
        ///// 添加联系人的明细行
        ///// </summary>
        //private void AddPhoneNumList()
        //{
        //    int heightCount = listPhoneData.Count;
        //    if (heightCount > listViewCount)
        //    {
        //        heightCount = listViewCount;
        //    }
        /// <summary>
        /// 添加联系人行
        /// </summary>
        /// <param name="data"></param>
        public void AddPhoneNumRowLayout(Safeguard.PushTargetInfo data)
        {
            var row = new RowLayout();
            row.Height = ControlCommonResourse.ListViewRowHeight;
            this.listView.AddChidren(row);
        //    foreach (var data in listPhoneData)
        //    {
        //        //添加联系人行
        //        this.AddPhoneNumRowLayout(data);
        //    }
        //}
            //图标
            var btnIcon = new RowLeftIconView();
            btnIcon.UnSelectedImagePath = "Account/ProfilePhotoMember.png";
            row.AddChidren(btnIcon);
        ///// <summary>
        ///// 添加联系人行
        ///// </summary>
        ///// <param name="data"></param>
        //public void AddPhoneNumRowLayout(Safeguard.PushTargetInfo data)
        //{
        //    var row = new RowLayout();
        //    row.Height = ControlCommonResourse.ListViewRowHeight;
        //    this.listView.AddChidren(row);
            //电话号码
            var btnPhone = new RowCenterView();
            btnPhone.Text = "+" + data.PushNumber.Replace("-", " ");
            row.AddChidren(btnPhone);
        //    //图标
        //    var btnIcon = new RowLeftIconView();
        //    btnIcon.UnSelectedImagePath = "Center/ProfilePhotoMember.png";
        //    row.AddChidren(btnIcon);
            //删除
            var btnDelete = new RowDeleteButton();
            row.AddRightView(btnDelete);
            btnDelete.MouseUpEventHandler += (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.ShowConfirmMsg(msg, "DeleteCoercePhoneNumber", areaCode, PNumber, row);
            };
        //    //电话号码
        //    var btnPhone = new RowCenterView();
        //    btnPhone.Text = "+" + data.PushNumber.Replace("-", " ");
        //    row.AddChidren(btnPhone);
            //新添加的时候,自动调整界面高度
            this.AutoAdjustListViewHeight();
        }
        //    //删除
        //    var btnDelete = new RowDeleteButton();
        //    row.AddRightView(btnDelete);
        //    btnDelete.MouseUpEventHandler += (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.ShowConfirmMsg(msg, "DeleteCoercePhoneNumber", areaCode, PNumber, row);
        //    };
        //    //新添加的时候,自动调整界面高度
        //    this.AutoAdjustListViewHeight();
        //}
        /// <summary>
        /// 添加【添加联系人】的行
        /// </summary>
        private void AddAddContactPersionRow()
        {
            this.addPersonRow = new StatuRowLayout();
            addPersonRow.Y = this.listView.Bottom;
            frameTableLayout.AddChidren(addPersonRow);
        ///// <summary>
        ///// 添加【添加联系人】的行
        ///// </summary>
        //private void AddAddContactPersionRow()
        //{
        //    this.addPersonRow = new StatuRowLayout();
        //    addPersonRow.Y = this.listView.Bottom;
        //    frameTableLayout.AddChidren(addPersonRow);
            //添加联系人
            var txtAddPer = new RowCenterView(false);
            txtAddPer.TextID = R.MyInternationalizationString.uAddContactPersion; ;
            addPersonRow.AddChidren(txtAddPer);
        //    //添加联系人
        //    var txtAddPer = new RowCenterView(false);
        //    txtAddPer.TextID = R.MyInternationalizationString.uAddContactPersion; ;
        //    addPersonRow.AddChidren(txtAddPer);
            //加号图标
            var btnAdd = new MostRightEmptyView();
            btnAdd.UnSelectedImagePath = "Item/Add.png";
            btnAdd.SelectedImagePath = "Item/AddSelected.png";
            addPersonRow.AddChidren(btnAdd);
        //    //加号图标
        //    var btnAdd = new MostRightEmptyView();
        //    btnAdd.UnSelectedImagePath = "Item/Add.png";
        //    btnAdd.SelectedImagePath = "Item/AddSelected.png";
        //    addPersonRow.AddChidren(btnAdd);
            addPersonRow.MouseUpEvent += (sender, e) =>
            {
                var form = new AddCoerceContactForm();
                this.AddForm(form, this.listPhoneData);
            };
        }
        //    addPersonRow.MouseUpEvent += (sender, e) =>
        //    {
        //        var form = new AddCoerceContactForm();
        //        form.AddForm(this.listPhoneData);
        //    };
        //}
        /// <summary>
        /// 删除联系人方式
        /// </summary>
        /// <param name="areaCode"></param>
        /// <param name="phone"></param>
        /// <param name="row"></param>
        public async void DeleteCoercePhoneNumber(string areaCode, string phone,RowLayout row)
        {
            bool result = await Common.LocalSafeguard.Current.DeleteCoercePhoneNumber(areaCode, phone);
            if (result == true)
            {
                Application.RunOnMainThread(() =>
                {
                    row.RemoveFromParent();
        ///// <summary>
        ///// 删除联系人方式
        ///// </summary>
        ///// <param name="areaCode"></param>
        ///// <param name="phone"></param>
        ///// <param name="row"></param>
        //public async void DeleteCoercePhoneNumber(string areaCode, string phone, RowLayout row)
        //{
        //    bool result = await Common.LocalSafeguard.Current.DeleteCoercePhoneNumber(areaCode, phone);
        //    if (result == true)
        //    {
        //        Application.RunOnMainThread(() =>
        //        {
        //            row?.RemoveFromParent();
                    //自动调整列表控件的高度
                    this.AutoAdjustListViewHeight();
        //            //自动调整列表控件的高度
        //            this.AutoAdjustListViewHeight();
                    this.LoadFormMethodByName("CoercePasswordMainForm", "InitMiddleFrame");
                });
            }
        }
        //            this.LoadFormMethodByName("CoercePasswordMainForm", "InitMiddleFrame");
        //        });
        //    }
        //}
        /// <summary>
        /// 自动调整列表控件的高度
        /// </summary>
        private void AutoAdjustListViewHeight()
        {
            if (this.listView.ChildrenCount > this.listViewCount)
            {
                //不再扩大
                return;
            }
            this.listView.Height = this.listView.ChildrenCount * ControlCommonResourse.ListViewRowHeight;
            if (this.addPersonRow != null)
            {
                //有可能是画面正在初始化的时候
                this.addPersonRow.Y = this.listView.Bottom;
            }
        }
        ///// <summary>
        ///// 自动调整列表控件的高度
        ///// </summary>
        //private void AutoAdjustListViewHeight()
        //{
        //    if (this.listView == null || this.listView.ChildrenCount > this.listViewCount)
        //    {
        //        //不再扩大
        //        return;
        //    }
        //    this.listView.Height = this.listView.ChildrenCount * ControlCommonResourse.ListViewRowHeight;
        //    if (this.addPersonRow != null)
        //    {
        //        //有可能是画面正在初始化的时候
        //        this.addPersonRow.Y = this.listView.Bottom;
        //    }
        //}
    }
}