wxr
2021-06-09 ffdeae1a43e1539f9533f93d64089994db6c742b
HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/Transfer/TransferingResidencePage.cs
New file
@@ -0,0 +1,295 @@
using System;
using Shared;
using HDL_ON.UI.CSS;
using HDL_ON.Stan;
using System.Collections.Generic;
namespace HDL_ON.UI
{
    /// <summary>
    /// 执行过户操作的界面
    /// </summary>
    public class TransferingResidenceForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 成员信息
        /// </summary>
        private AccountInfoResult accountResult = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_accountResult">账号信息</param>
        public void ShowForm(AccountInfoResult i_accountResult)
        {
            this.ScrollLeftEnabled = false;
            this.accountResult = i_accountResult;
            //过户
            base.SetTitleText(Language.StringByID(StringId.Transfer));
            //初始化中部信息
            this.InitMiddleFrame();
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            //清空bodyFrame
            this.ClearBodyFrame();
            //主人的图标
            var btnAdminIcon = new ImageView();
            btnAdminIcon.Y = Application.GetRealHeight(112);
            btnAdminIcon.X = Application.GetRealWidth(48);
            btnAdminIcon.Height = this.GetPictrueRealSize(70);
            btnAdminIcon.Width = this.GetPictrueRealSize(70);
            btnAdminIcon.Radius = (uint)this.GetPictrueRealSize(70) / 2;
            btnAdminIcon.ImagePath = UserInfo.Current.headImagePagePath;
            bodyFrameLayout.AddChidren(btnAdminIcon);
            //主人名字  (以中间为基准,左右间距16)
            var btnAdminName = new NormalViewControl((btnAdminIcon.Right + btnAdminIcon.X) - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(48), false);
            btnAdminName.X = HdlControlResourse.XXLeft;
            btnAdminName.Y = btnAdminIcon.Bottom + Application.GetRealHeight(10);
            btnAdminName.IsBold = true;
            btnAdminName.IsMoreLines = true;
            btnAdminName.TextAlignment = TextAlignment.TopCenter;
            btnAdminName.TextSize = CSS_FontSize.SubheadingFontSize;
            btnAdminName.Text = string.IsNullOrEmpty(UserInfo.Current.userName) == true ? UserInfo.Current.AccountString : UserInfo.Current.userName;
            bodyFrameLayout.AddChidren(btnAdminName);
            //头像
            var imageByte = ImageUtlis.Current.ReadFile(this.accountResult.MemberHeadIcon);
            var btnUserIcon = new ImageView();
            btnUserIcon.Y = btnAdminIcon.Y;
            btnUserIcon.X = bodyFrameLayout.Width - Application.GetRealWidth(48) - this.GetPictrueRealSize(70);
            btnUserIcon.Height = this.GetPictrueRealSize(70);
            btnUserIcon.Width = this.GetPictrueRealSize(70);
            btnUserIcon.Radius = (uint)this.GetPictrueRealSize(70) / 2;
            if (imageByte != null && imageByte.Length > 0)
            {
                btnUserIcon.ImageBytes = imageByte;
            }
            else
            {
                btnUserIcon.ImagePath = "LoginIcon/2.png";
            }
            bodyFrameLayout.AddChidren(btnUserIcon);
            //昵称  (以中间为基准,左右间距50)
            var btnName = new NormalViewControl(btnAdminName.Width, btnAdminName.Height, false);
            btnName.X = bodyFrameLayout.Width - btnAdminName.X - btnAdminName.Width;
            btnName.Y = btnAdminName.Y;
            btnName.IsBold = true;
            btnName.IsMoreLines = true;
            btnName.TextAlignment = TextAlignment.TopCenter;
            btnName.TextSize = CSS_FontSize.SubheadingFontSize;
            btnName.Text = accountResult.MemberName;
            bodyFrameLayout.AddChidren(btnName);
            //开启连接的假想动画效果线程
            this.StartConcetionAnimeteThread(btnAdminIcon.Right + Application.GetRealWidth(16));
            //终止
            var btnCancel = new BottomClickButton();
            btnCancel.Y = Application.GetRealHeight(519);
            btnCancel.TextID = StringId.Terminate;
            bodyFrameLayout.AddChidren(btnCancel);
            btnCancel.ButtonClickEvent += (sender, e) =>
            {
                this.CloseForm();
            };
            //初始化消息控件
            this.InitMsgControl();
        }
        #endregion
        #region ■ 假想动画___________________________
        /// <summary>
        /// 开启连接的假想动画效果线程
        /// </summary>
        private void StartConcetionAnimeteThread(int XX)
        {
            //生成点号图样
            int pointXX = XX;
            int pointWidth = Application.GetRealWidth(4);
            int pointSpace = Application.GetRealWidth(9);
            for (int i = 0; i < 9; i++)
            {
                var btnPoint = new NormalViewControl(pointWidth, pointWidth, false);
                btnPoint.Radius = (uint)pointWidth / 2;
                btnPoint.BackgroundColor = CSS_Color.PromptingColor1;
                btnPoint.Y = Application.GetRealHeight(144);
                btnPoint.X = pointXX;
                bodyFrameLayout.AddChidren(btnPoint);
                pointXX = btnPoint.Right + pointSpace;
            }
            var listPoint = new List<int>();
            //跳动的间距
            int jumpSpace = pointWidth + pointSpace;
            for (int i = 0; i < 9; i++)
            {
                //X轴+Index*(图标大小+间距)
                listPoint.Add(XX + i * jumpSpace);
            }
            var btnRound = new IconViewControl(8);
            btnRound.Radius = (uint)btnRound.IconSize / 2;
            btnRound.BackgroundColor = CSS_Color.MainColor;
            btnRound.X = listPoint[0] - (btnRound.IconSize - pointWidth) / 2;
            btnRound.Y = Application.GetRealHeight(142);
            bodyFrameLayout.AddChidren(btnRound);
            HdlThreadLogic.Current.RunThread(() =>
            {
                int index = 1;
                while (this.Parent != null)
                {
                    System.Threading.Thread.Sleep(500);
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        if (btnRound != null)
                        {
                            btnRound.X = listPoint[index];
                            index++;
                            if (index == listPoint.Count)
                            {
                                index = 0;
                            }
                        }
                    });
                }
            });
        }
        #endregion
        #region ■ 执行过户___________________________
        /// <summary>
        /// 执行过户
        /// </summary>
        private void DoTransferResidence()
        {
            this.ShowProgressBar();
            System.Threading.Thread.Sleep(1500);
            //过户
            bool success = new DAL.Server.HttpServerRequest().TransferResidence(this.accountResult.Account);
            this.CloseProgressBar();
            HdlThreadLogic.Current.RunMain(() =>
            {
                var form = new TransferResidenceResultPage();
                form.AddForm(this.accountResult, success);
                form.FinishEvent += () =>
                {
                    if (success == false)
                    {
                        //重试
                        HdlThreadLogic.Current.RunThread(() =>
                        {
                            //执行过户
                            this.DoTransferResidence();
                        });
                    }
                    else
                    {
                        for (int i = 0; i < UserInfo.Current.regionList.Count; i++)
                        {
                            //移除当前住宅Id
                            if (UserInfo.Current.regionList[i].id == Entity.DB_ResidenceData.Instance.CurrentRegion.id)
                            {
                                UserInfo.Current.regionList.RemoveAt(i);
                                UserInfo.Current.SaveUserInfo();
                                break;
                            }
                        }
                        //关闭所有界面
                        HdlFormLogic.Current.CloseAllOpenForm();
                        if (UserInfo.Current.regionList.Count == 0)
                        {
                            //没有住宅了,返回登陆界面
                            HDLCommon.Current.Logout();
                        }
                        else
                        {
                            Entity.DB_ResidenceData.Instance.CurrentRegion = UserInfo.Current.regionList[0];
                            Entity.DB_ResidenceData.Instance.SaveResidenceData();
                            //刷新住宅数据
                            Common.ApiUtlis.Ins.DownloadData();
                            //获取主页的那个容器
                            var userPage = MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1) as UserPage;
                            if (userPage != null)
                            {
                                //刷新个人中心界面
                                MainPage.CurPageIndex = 1;
                                userPage.ChoosePersonalCenter();
                            }
                        }
                    }
                };
            });
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 初始化消息控件
        /// </summary>
        private void InitMsgControl()
        {
            string msg = Language.StringByID(StringId.IsTransferingPleaseWaitting);
            //正在过户给用户,请稍后...
            var btnMsg = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(20), false);
            btnMsg.Y = Application.GetRealHeight(288);
            btnMsg.TextAlignment = TextAlignment.Center;
            btnMsg.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
            btnMsg.Text = msg;
            bodyFrameLayout.AddChidren(btnMsg);
            HdlThreadLogic.Current.RunThread(() =>
            {
                int timeOut = 15;
                while (timeOut >= 0 && this.Parent != null)
                {
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        btnMsg.Text = msg + timeOut + "s";
                        if (timeOut == 0)
                        {
                            btnMsg.Text = msg;
                        }
                    }, ShowErrorMode.NO);
                    System.Threading.Thread.Sleep(1000);
                    timeOut--;
                }
                if (timeOut <= 0)
                {
                    //执行过户操作
                    this.DoTransferResidence();
                }
            });
        }
        #endregion
    }
}