wxr
2022-08-04 eb76239882830f3960b8800bb0f2c90ca7b3f378
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/iot_BindTipPage.cs
New file
@@ -0,0 +1,279 @@
using System;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
    public class iot_BindTipPage : FrameLayout
    {
        FrameLayout bodyView;
        /// <summary>
        /// 解绑回调
        /// </summary>
        public Action unboundAction;
        /// <summary>
        /// 绑定回调
        /// </summary>
        public Action boundAction;
        public iot_BindTipPage()
        {
            bodyView = this;
        }
        public void LoadPage(IntegratedBrand_Iot brand_Iot)
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.Bind3thIotAccount)).LoadTopView(CSS_Color.MainBackgroundColor);
            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
            var contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                BackgroundColor = CSS_Color.BackgroundColor,
                Height = Application.GetRealHeight(667 - 124)
            };
            bodyView.AddChidren(contentView);
            var btnIcon = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(25),
                Width = Application.GetRealWidth(106),
                Height = Application.GetRealWidth(106),
                UnSelectedImagePath = "Public/Logo.png",
            };
            contentView.AddChidren(btnIcon);
            var btnTipTitle = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(140),
                Width = Application.GetRealWidth(300),
                Height = Application.GetRealHeight(60),
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = 21,
                TextAlignment = TextAlignment.CenterLeft,
                IsBold = true,
                Text = "关于账号绑定的声明"
            };
            contentView.AddChidren(btnTipTitle);
            var btnTipText = new Button()
            {
                Padding =new Padding(0, Application.GetRealWidth(16), 0, Application.GetRealWidth(16)),
                Y = Application.GetRealHeight(140),
                Height = Application.GetRealHeight(340),
                IsMoreLines = true,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = 14,
                TextAlignment = TextAlignment.CenterLeft,
                Text = $"账户绑定品牌:{brand_Iot.brandName} (以下简称第三方品牌)" + "\r\n" + "\r\n" +
"您绑定第三方品牌的账号后,将授权“On Pro”使用您在第三方账号,协同管理设备,On Pro也将自动同步您在第三方品牌中添加的设备。" + "\r\n" + "\r\n" +
"为实现设备控制功能,本应用将从第三方中获取以下数据:" + "\r\n" + "\r\n" +
"1.第三方品牌上添加的部分设备列表,用于在On Pro中进行智能化控制;" + "\r\n" + "\r\n" +
"2.设备及网络信息,包括设备标志符、MAC地址、设备序列号,用于识别当前工作的设备以及进行设备控制功能。" + "\r\n" + "\r\n" +
"如果您不同意我们收集以上信息,将无法管理第三方品牌的设备。" + "\r\n" + "\r\n" +
"如需终止以上信息的收集与处理,您可以在“我的”> “绑定第三方账户”>“解除”"
            };
            contentView.AddChidren(btnTipText);
            var optionView = new FrameLayout()
            {
                Y = Application.GetRealHeight(667 - 80),
                Height = Application.GetRealHeight(90),
                Radius = (uint)Application.GetRealWidth(22),
                BackgroundColor = CSS_Color.MainBackgroundColor,
            };
            bodyView.AddChidren(optionView);
            var btnCannel = new Button()
            {
                X = Application.GetRealWidth(17),
                Y = Application.GetRealHeight(14),
                Width = Application.GetRealWidth(164),
                Height = Application.GetRealHeight(44),
                BorderColor = CSS_Color.MainColor,
                BackgroundColor = CSS_Color.MainBackgroundColor,
                BorderWidth = (uint)Application.GetRealWidth(1),
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.MainColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                Text = "返回",
                Radius = (uint)Application.GetRealHeight(22)
            };
            optionView.AddChidren(btnCannel);
            btnCannel.MouseUpEventHandler = (sender, e) => {
                this.RemoveFromParent();
            };
            var btnComfirm = new Button()
            {
                X = Application.GetRealWidth(196),
                Y = Application.GetRealHeight(14),
                Width = Application.GetRealWidth(164),
                Height = Application.GetRealHeight(44),
                TextAlignment = TextAlignment.Center,
                BackgroundColor= CSS_Color.MainColor,
                TextColor = CSS_Color.MainBackgroundColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                Text = "同意授权",
                Radius = (uint)Application.GetRealHeight(22)
            };
            optionView.AddChidren(btnComfirm);
            if (!brand_Iot.hasAuthorization)
            {
                btnComfirm.MouseUpEventHandler = (sender, e) =>
                {
                    Action action = () => {
                        brand_Iot.hasAuthorization = true;
                        boundAction?.Invoke();
                        this.RemoveFromParent();
                        var page = new Iot_BrandFunctionListPage(brand_Iot);
                        page.unboundAction = unboundAction;
                        MainPage.BasePageView.AddChidren(page);
                        page.LoadPage();
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    };
                    var page = new Iot_AuthorizedPage(brand_Iot,action);
                    page.LoadView();
                };
            }
            else
            {
                btnComfirm.Text = "解除授权";
                btnComfirm.MouseUpEventHandler = (sender, e) =>
                {
                    Dialog dialog = new Dialog()
                    {
                        BackgroundColor = CSS_Color.DialogTransparentColor1,
                    };
                    FrameLayout contentView = new FrameLayout()
                    {
                        Gravity = Gravity.Center,
                        Width = Application.GetRealWidth(305),
                        Height = Application.GetRealHeight(180),
                        BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
                        BorderColor = 0x00000000,
                        BorderWidth = 0,
                        Radius = (uint)Application.GetMinRealAverage(10),
                    };
                    dialog.AddChidren(contentView);
                    Button btnMsg = new Button()
                    {
                        Gravity = Gravity.CenterHorizontal,
                        Height = Application.GetRealHeight(70),
                        Y = Application.GetRealHeight(30),
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.SubheadingFontSize,
                        Padding = new Padding(0,Application.GetRealWidth(16),0,Application.GetRealWidth(16)),
                        Text = "撤销授权后,该品牌关联在On Pro中的设备将全部被解绑,相关使用信息合设备值也将失效",
                        IsMoreLines = true,
                    };
                    contentView.AddChidren(btnMsg);
                    Button btnLine = new Button()
                    {
                        Y = Application.GetRealHeight(125),
                        Height = Application.GetRealHeight(1),
                        BackgroundColor = CSS.CSS_Color.DividingLineColor,
                    };
                    contentView.AddChidren(btnLine);
                    Button btnConfirm = new Button()
                    {
                        Y = btnLine.Bottom,
                        Height = Application.GetRealHeight(55),
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.MainColor,
                        TextSize = CSS_FontSize.SubheadingFontSize,
                        SelectedTextColor = CSS_Color.MainBackgroundColor,
                        SelectedBackgroundColor = CSS_Color.MainColor,
                        Text = "确定撤回授权",
                    };
                    btnConfirm.SetCornerWithSameRadius(Application.GetMinRealAverage(10), HDLUtils.RectCornerBottomLeft);
                    btnConfirm.SetCornerWithSameRadius(Application.GetMinRealAverage(10), HDLUtils.RectCornerBottomRight);
                    contentView.AddChidren(btnConfirm);
                    dialog.Show();
                    btnConfirm.MouseDownEventHandler += (sender, e) =>
                    {
                        btnConfirm.IsSelected = true;
                    };
                    btnConfirm.MouseUpEventHandler += (sender, e) =>
                    {
                        var http = new HttpServerRequest();
                        var waitPage = new Loading();
                        this.AddChidren(waitPage);
                        waitPage.Start("");
                        new System.Threading.Thread(() =>
                        {
                            try
                            {
                                var pack = http.Unbound3tyIotAccount(brand_Iot.companyId);
                                if (pack != null)
                                {
                                    if (pack.Code == StateCode.SUCCESS)
                                    {
                                        Application.RunOnMainThread(() =>
                                        {
                                            btnConfirm.IsSelected = false;
                                            dialog.Close();
                                            this.RemoveFromParent();
                                            brand_Iot.hasAuthorization = false;
                                            unboundAction?.Invoke();
                                        });
                                    }
                                }
                                else
                                {
                                    dialog.Close();
                                    new Alert("", "操作失败", "").Show();
                                }
                            }
                            catch { }
                            finally
                            {
                                Application.RunOnMainThread(() => {
                                    waitPage.Hide();
                                    waitPage.RemoveFromParent();
                                });
                            }
                        })
                        { IsBackground = true }.Start();
                    };
                };
            }
        }
    }
}