HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-30 25429f085093d89d543a0b90e30d0d62d1b7dac9
ZigbeeApp/Shared/Phone/UserCenter/Gateway/Manage/GatewayReplaceBackUpListForm.cs
New file
@@ -0,0 +1,302 @@
using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.GatewayManage
{
    /// <summary>
    /// 替换网关时,选择网关备份的列表界面
    /// </summary>
    public class GatewayReplaceBackUpListForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalListControl listView = null;
        /// <summary>
        /// 真实物理网关(新网关)
        /// </summary>
        private ZbGateway realGateway = null;
        /// <summary>
        /// 被替换的目标网关
        /// </summary>
        private string targetGwId = string.Empty;
        /// <summary>
        /// 当前选择的备份
        /// </summary>
        private BackupListNameInfo nowSelectInfo = null;
        /// <summary>
        /// 当前选择的控件
        /// </summary>
        private MostRightIconControl nowbtnSelect = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_zbGateway">真实物理网关(新网关)</param>
        /// <param name="i_zbGateway">被替换的目标网关</param>
        public void ShowForm(ZbGateway i_realGateway, string i_targetGwId)
        {
            this.realGateway = i_realGateway;
            this.targetGwId = i_targetGwId;
            //设置标题信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uSelectUseBackup));
            //初始化中部控件
            this.InitMiddleFrame();
        }
        /// <summary>
        /// 初始化中部控件
        /// </summary>
        private void InitMiddleFrame()
        {
            //清空bodyFrame
            this.ClearBodyFrame();
            var frameBack = new FrameLayout();
            frameBack.Height = Application.GetRealHeight(11);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            bodyFrameLayout.AddChidren(frameBack);
            listView = new VerticalListControl(12);
            listView.Y = frameBack.Bottom;
            listView.Height = bodyFrameLayout.Height - frameBack.Height;
            listView.BackgroundColor = UserCenterColor.Current.White;
            bodyFrameLayout.AddChidren(listView);
            HdlThreadLogic.Current.RunThread(() =>
            {
                //从云端获取数据
                this.SetBackupInfoToForm();
            });
        }
        #endregion
        #region ■ 从云端获取数据_____________________
        /// <summary>
        /// 从云端获取数据
        /// </summary>
        private void SetBackupInfoToForm()
        {
            //进度条
            this.ShowProgressBar();
            //获取自动备份的数据
            var pageAuto = HdlBackupLogic.Current.GetBackupListNameFromDB(3, this.targetGwId);
            if (pageAuto == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return;
            }
            //从云端获取数据
            var pageData = HdlBackupLogic.Current.GetBackupListNameFromDB(2, this.targetGwId);
            if (pageData == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return;
            }
            //关闭进度条
            this.CloseProgressBar();
            if (pageAuto.Count == 0 && pageData.Count == 0)
            {
                //目标网关检测不到备份数据,无法执行替换操作
                HdlMessageLogic.Current.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uTaegetGatewayNotHadBackupAndDoNotReplace));
                return;
            }
            HdlThreadLogic.Current.RunMain(() =>
            {
                listView.RemoveAll();
                listView.RecoverHeight();
                if (pageAuto.Count > 0)
                {
                    pageAuto[0].IsAutoBack = 1;
                    //添加自动备份行
                    this.AddRowlayout(pageAuto[0], pageData.Count > 0, true);
                }
                for (int i = 0; i < pageData.Count; i++)
                {
                    //添加备份行
                    this.AddRowlayout(pageData[i], i != pageData.Count - 1, false);
                }
                if (pageData.Count > 0 || pageAuto.Count > 0)
                {
                    //替换
                    var btnDownload = new BottomClickButton();
                    btnDownload.TextID = R.MyInternationalizationString.uReplace;
                    bodyFrameLayout.AddChidren(btnDownload);
                    btnDownload.ButtonClickEvent += (sender, e) =>
                    {
                        if (this.nowSelectInfo == null)
                        {
                            return;
                        }
                        //是否使用备份:{0}?
                        string msg = Language.StringByID(R.MyInternationalizationString.uSelectUseBackupConfirmMsg).Replace("{0}", this.nowbtnSelect.MainKey);
                        this.ShowMassage(ShowMsgType.Confirm, msg, () =>
                        {
                            //执行网关替换操作
                            this.DoReplaceGateway();
                        }, null, 3);
                    };
                    //调整真实高度
                    listView.AdjustRealHeightByBottomButton(Application.GetRealHeight(23));
                }
            });
        }
        #endregion
        #region ■ 添加备份行_________________________
        /// <summary>
        /// 添加备份行
        /// </summary>
        /// <param name="fileInfo"></param>
        /// <param name="addLine"></param>
        /// <param name="isAuto"></param>
        private void AddRowlayout(BackupListNameInfo fileInfo, bool addLine, bool isAuto)
        {
            var rowLayout = new RowLayoutControl(listView.rowSpace / 2);
            listView.AddChidren(rowLayout);
            //备份名字
            var txtText = rowLayout.frameTable.AddTopView(fileInfo.BackupName, 700);
            if (isAuto == true)
            {
                txtText.TextID = R.MyInternationalizationString.uAutoBackup;
            }
            //时间 2019-11-11T11:31:01
            var btnTime = rowLayout.frameTable.AddBottomView("", 600);
            if (fileInfo.CreatedOnUtc.Length >= 19)
            {
                btnTime.Text = UserCenterLogic.ConvertUtcTimeToLocalTime(fileInfo.CreatedOnUtc).ToString("yyyy.MM.dd HH:mm:ss");
            }
            //底线
            if (addLine == true)
            {
                rowLayout.frameTable.AddBottomLine();
            }
            //选择
            var btnSelect = rowLayout.frameTable.AddMostRightEmptyIcon(58, 58);
            btnSelect.UnSelectedImagePath = "Item/ItemUnSelected.png";
            btnSelect.SelectedImagePath = "Item/ItemSelected.png";
            rowLayout.frameTable.ButtonClickEvent += (sender, e) =>
            {
                btnSelect.IsSelected = !btnSelect.IsSelected;
                if (btnSelect.IsSelected == true)
                {
                    this.nowSelectInfo = fileInfo;
                    if (this.nowbtnSelect != null)
                    {
                        nowbtnSelect.IsSelected = false;
                    }
                    nowbtnSelect = btnSelect;
                    nowbtnSelect.MainKey = txtText.Text;
                }
                else
                {
                    this.nowSelectInfo = null;
                    this.nowbtnSelect = null;
                }
            };
        }
        #endregion
        #region ■ 执行网关替换操作___________________
        /// <summary>
        /// 执行网关替换操作
        /// </summary>
        private void DoReplaceGateway()
        {
            //执行更换网关
            HdlGatewayLogic.Current.DoReplaceGateway(this.realGateway, this.targetGwId, this.nowSelectInfo, (div) =>
            {
                if (div == 1)
                {
                    if (GatewayResourse.AppOldSelectGatewayId == this.targetGwId)
                    {
                        //如果被替换的网关是设备列表界面正在显示的网关的话,需要置空
                        GatewayResourse.AppOldSelectGatewayId = string.Empty;
                    }
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                         //显示成功的界面
                         this.ShowSuccessMsg();
                    });
                }
            });
        }
        /// <summary>
        /// 显示成功的界面
        /// </summary>
        private void ShowSuccessMsg()
        {
            var frameBack = new FrameLayout();
            frameBack.BackgroundColor = 0x80000000;
            this.AddChidren(frameBack);
            var frameMsg = new FrameLayout();
            frameMsg.BackgroundColor = UserCenterColor.Current.White;
            frameMsg.Width = Application.GetRealWidth(622);
            frameMsg.Height = Application.GetRealHeight(317);
            frameMsg.Radius = (uint)Application.GetRealHeight(17);
            frameMsg.Gravity = Gravity.CenterHorizontal;
            frameMsg.Y = Application.GetRealHeight(792);
            frameBack.AddChidren(frameMsg);
            //提示
            var btnTitle = new NormalViewControl(492, 65, true);
            btnTitle.Y = Application.GetRealHeight(68);
            btnTitle.Gravity = Gravity.CenterHorizontal;
            btnTitle.TextID = R.MyInternationalizationString.NormalTip;
            btnTitle.TextAlignment = TextAlignment.Center;
            btnTitle.TextColor = 0xFF333443;
            frameMsg.AddChidren(btnTitle);
            //替换网关成功
            var btnSuccess = new NormalViewControl(frameMsg.Width, Application.GetRealHeight(60), false);
            btnSuccess.Y = Application.GetRealHeight(166);
            btnSuccess.TextAlignment = TextAlignment.Center;
            btnSuccess.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnSuccess.TextID = R.MyInternationalizationString.uReplacegatewaySuccess;
            frameMsg.AddChidren(btnSuccess);
            HdlThreadLogic.Current.RunThread(() =>
            {
                System.Threading.Thread.Sleep(2000);
                HdlThreadLogic.Current.RunMain(() =>
                {
                    this.CloseForm();
                    //把网关替换一览界面也关了
                    this.CloseFormByFormName("GatewayReplaceListForm");
                });
            });
        }
        #endregion
    }
}