xm
2020-12-14 d6fb0646531172f23648441c224cdcccd721b894
ZigbeeApp/Shared/Phone/UserCenter/Transfer/TransferingResidenceForm.cs
New file
@@ -0,0 +1,319 @@
using Shared.Common;
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter.Transfer
{
    /// <summary>
    /// 执行过户操作的界面
    /// </summary>
    public class TransferingResidenceForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 1:移交给用户  2:授权给调试人员
        /// </summary>
        private int TransferDiv = 0;
        /// <summary>
        /// 成员信息
        /// </summary>
        private AccountInfoResult memberResult = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_memberResult">账号信息</param>
        /// <param name="i_TransferDiv">1:移交给用户  2:授权给调试人员</param>
        public void ShowForm(AccountInfoResult i_memberResult, int i_TransferDiv)
        {
            this.ScrollEnabled = false;
            this.TransferDiv = i_TransferDiv;
            this.memberResult = i_memberResult;
            //设置头部信息
            base.SetTitleText(i_TransferDiv == 1
               ? Language.StringByID(R.MyInternationalizationString.HandoverToUser).Replace("{0}", string.Empty)
               : Language.StringByID(R.MyInternationalizationString.AuthorizedToCommissioningPersonnel).Replace("{0}", string.Empty));
            //初始化中部信息
            this.InitMiddleFrame();
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            //清空bodyFrame
            this.ClearBodyFrame();
            //住宅的图标
            var btnIcon1 = new PicViewControl(268, 268);
            btnIcon1.Y = Application.GetRealHeight(366);
            btnIcon1.X = Application.GetRealWidth(139);
            btnIcon1.UnSelectedImagePath = "Item/TransferOfResidenceIcon.png";
            bodyFrameLayout.AddChidren(btnIcon1);
            //住宅名字  (以中间为基准,左右间距50)
            var btnHouseName = new NormalViewControl(bodyFrameLayout.Width / 2 - Application.GetRealWidth(100), Application.GetRealHeight(110), false);
            btnHouseName.X = Application.GetRealWidth(50);
            btnHouseName.Y = btnIcon1.Bottom + Application.GetRealHeight(23);
            btnHouseName.IsBold = true;
            btnHouseName.IsMoreLines = true;
            btnHouseName.TextAlignment = TextAlignment.Center;
            btnHouseName.TextSize = 16;
            btnHouseName.Text = Config.Instance.Home.Name;
            bodyFrameLayout.AddChidren(btnHouseName);
            //头像
            var btnUserIcon = new ImageView();
            btnUserIcon.Height = this.GetPictrueRealSize(268);
            btnUserIcon.Width = this.GetPictrueRealSize(268);
            btnUserIcon.Radius = (uint)this.GetPictrueRealSize(268) / 2;
            if (memberResult.HeadImage != null)
            {
                btnUserIcon.ImageBytes = memberResult.HeadImage;
            }
            else
            {
                btnUserIcon.ImagePath = "Center/Admin.png";
            }
            btnUserIcon.Y = btnIcon1.Y;
            btnUserIcon.X = bodyFrameLayout.Width - Application.GetRealWidth(139) - this.GetPictrueRealSize(268);
            bodyFrameLayout.AddChidren(btnUserIcon);
            //昵称  (以中间为基准,左右间距50)
            var btnName = new NormalViewControl(btnHouseName.Width, btnHouseName.Height, false);
            btnName.X = btnHouseName.Right + Application.GetRealWidth(100);
            btnName.Y = btnHouseName.Y;
            btnName.IsBold = true;
            btnName.IsMoreLines = true;
            btnName.TextAlignment = TextAlignment.Center;
            btnName.TextSize = 16;
            //如果它本身就没名字的话,把他的ID作为昵称
            btnName.Text = string.IsNullOrEmpty(memberResult.UserName) == true ? memberResult.Account : memberResult.UserName;
            bodyFrameLayout.AddChidren(btnName);
            //开启连接的假想动画效果线程
            this.StartConcetionAnimeteThread(btnIcon1.Right + Application.GetRealWidth(49));
            //终止
            var btnCancel = new BottomClickButton();
            btnCancel.TextID = R.MyInternationalizationString.uTermination;
            bodyFrameLayout.AddChidren(btnCancel);
            btnCancel.ButtonClickEvent += (sender, e) =>
            {
                this.CloseForm();
            };
            //初始化消息控件
            this.InitMsgControl(btnCancel);
        }
        #endregion
        #region ■ 假想动画___________________________
        /// <summary>
        /// 开启连接的假想动画效果线程
        /// </summary>
        private void StartConcetionAnimeteThread(int XX)
        {
            //生成点号图样
            int pointXX = XX;
            for (int i = 0; i < 7; i++)
            {
                var btnPoint = new NormalViewControl(14, 8, true);
                btnPoint.Radius = (uint)Application.GetRealHeight(8) / 2;
                btnPoint.BackgroundColor = 0xffd5d5d5;
                btnPoint.Y = Application.GetRealHeight(498);
                btnPoint.X = pointXX;
                bodyFrameLayout.AddChidren(btnPoint);
                pointXX = btnPoint.Right + Application.GetRealWidth(14);
            }
            int iconSize = this.GetPictrueRealSize(24);
            var listPoint = new List<int>();
            //跳动的间距
            int intSpace = Application.GetRealWidth(14 + 14);
            for (int i = 0; i < 7; i++)
            {
                //X轴+Index*(图标大小+间距)
                listPoint.Add(XX + i * intSpace);
            }
            var btnRound = new PicViewControl(iconSize, iconSize, false);
            btnRound.Radius = (uint)iconSize / 2;
            btnRound.BackgroundColor = UserCenterColor.Current.ConcetionRoundColor;
            btnRound.X = listPoint[0];
            btnRound.Y = Application.GetRealHeight(490);
            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);
            var pra2 = new
            {
                RequestVersion = CommonPage.RequestVersion,
                RequestSource = 0,
                LoginAccessToken = Config.Instance.Token,
                HomeId = Config.Instance.Home.Id,
                TargetAccount = this.memberResult.Account
            };
            var result = UserCenterLogic.GetResultCodeByRequestHttps("App/SellHome", false, pra2, new List<string> { "NotCheck" });
            bool success = result.ToLower() == "success";
            this.CloseProgressBar();
            HdlThreadLogic.Current.RunMain(() =>
            {
                var form = new TransferResidenceResultForm();
                form.AddForm(this.memberResult, success);
                form.FinishEvent += () =>
                {
                    if (success == false)
                    {
                        //重试
                        HdlThreadLogic.Current.RunThread(() =>
                        {
                            //执行过户
                            this.DoTransferResidence();
                        });
                    }
                    else
                    {
                        //成功过户 则切换住宅
                        var listLocalHouse = HdlResidenceLogic.Current.GetAllLocalResidenceListByDirectory();
                        if (listLocalHouse.Count == 1)
                        {
                            //如果只有一个住宅,则过户之后,直接退到登陆界面
                            UserCenterLogic.ReLoginAgain(Config.Instance.Account);
                            return;
                        }
                        else
                        {
                            HdlThreadLogic.Current.RunThread(() =>
                            {
                                this.ShowProgressBar();
                                //取一个住宅id
                                string houseId = string.Empty;
                                foreach (var myHouse in listLocalHouse)
                                {
                                    houseId = myHouse.Id;
                                    if (houseId != Config.Instance.Home.Id)
                                    {
                                        //随便取一个和当前住宅不相等的ID
                                        break;
                                    }
                                }
                                //当前住宅ID
                                string nowHouseId = Config.Instance.Home.Id;
                                //切换住宅
                                bool result2 = HdlResidenceLogic.Current.SwitchResidence(houseId);
                                //删掉这个文件夹
                                HdlResidenceLogic.Current.DeleteHouseMemmory(nowHouseId);
                                if (result2 == true)
                                {
                                    HdlThreadLogic.Current.RunMain(() =>
                                    {
                                        //关闭全部的界面.直到住宅列表界面
                                        UserCenterLogic.CloseAllOpenForm("ResidenceListMainForm");
                                    });
                                }
                                this.CloseProgressBar();
                            });
                        }
                    }
                };
            });
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 初始化消息控件
        /// </summary>
        private void InitMsgControl(BottomClickButton btnCancel)
        {
            string msg = this.TransferDiv == 1
                ? Language.StringByID(R.MyInternationalizationString.uHandoverToUserPleaseWaitting)
                : Language.StringByID(R.MyInternationalizationString.uAuthorizingToDebuggingPersonnelPleaseWaitting);
            //正在移交给用户,请稍后...         正在授权给调试人员,请稍后...
            var btnMsg = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(60), false);
            btnMsg.Y = Application.GetRealHeight(916);
            btnMsg.TextAlignment = TextAlignment.Center;
            btnMsg.TextColor = UserCenterColor.Current.TextGrayColor3;
            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
    }
}