陈嘉乐
2020-12-03 0f2e0147e8990e913d16d99bc1b94fb6bc53abd7
HDL_ON/UI/UI1-Login/SelectServerDialog.cs
New file
@@ -0,0 +1,161 @@
using System;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
    /// <summary>
    /// SelectServerDialog
    /// 服务器选择页面
    /// </summary>
    public class SelectServerDialog : Dialog
    {
        /// <summary>
        ///
        /// </summary>
        FrameLayout bodyView;
        /// <summary>
        /// 选择事件
        /// </summary>
        Action selectAction;
        /// <summary>
        ///
        /// </summary>
        public SelectServerDialog(Action selectAction)
        {
            bodyView = new FrameLayout();
            this.selectAction = selectAction;
        }
        /// <summary>
        ///
        /// </summary>
        public void LoadPage()
        {
            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
            this.AddChidren(bodyView);
            //加载顶部菜单栏
            new TopViewDiv(this, bodyView, Language.StringByID(StringId.PleaseSelectCountryOrRegion)).LoadTopView();
            //加载服务器区域选择
            AddRegionalSelectionView();
            //Show
            this.Show();
        }
        /// <summary>
        /// 加载区域选择View
        /// </summary>
        void AddRegionalSelectionView()
        {
            VerticalScrolViewLayout VerticalScrolViewMiddle = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = bodyView.Height - Application.GetRealHeight(64),
            };
            bodyView.AddChidren(VerticalScrolViewMiddle);
            var waitPage = new Loading();
            waitPage.Start("Please wait...");
            System.Threading.Tasks.Task.Run(() =>
            {
                try
                {
                    var dataList = new List<GlobalRegionListRes>();
                    var requestJson = HttpUtil.GetSignRequestJson(new GetRegionListObj() { regionMark = HttpUtil.RegionMark });
                    var revertObj = HttpUtil.RequestHttpsPost(NewAPI.API_POST_GlobalRegionList, requestJson, HttpUtil.GlobalRequestHttpsHost);
                    if (revertObj.Code == StateCode.SUCCESS)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GlobalRegionListRes>>(revertObj.Data.ToString());
                            if (responseDataObj != null)
                            {
                                dataList = responseDataObj;
                                if (dataList != null && dataList.Count > 0)
                                {
                                    foreach (var data in dataList)
                                    {
                                        AddRowView(data, VerticalScrolViewMiddle);
                                    }
                                }
                            }
                        });
                    }
                    else
                    {
                        //提示错误
                        IMessageCommon.Current.ShowErrorInfoAlter(revertObj.Code);
                    }
                }
                catch
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        waitPage.Hide();
                    });
                }
            });
        }
        /// <summary>
        /// 加载区域选择RowView
        /// </summary>
        /// <param name="mGlobalRegion"></param>
        /// <param name="VerticalScrolViewMiddle"></param>
        void AddRowView(GlobalRegionListRes mGlobalRegion, VerticalScrolViewLayout VerticalScrolViewMiddle)
        {
            var rowView = new FrameLayout()
            {
                Height = Application.GetRealHeight(44),
            };
            VerticalScrolViewMiddle.AddChidren(rowView);
            var urlBtn = new Button()
            {
                X = Application.GetRealWidth(16),
                Height = rowView.Height,
                Width = Application.GetRealWidth(200),
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextAlignment = TextAlignment.CenterLeft
            };
            rowView.AddChidren(urlBtn);
            //var lineView = new LineView();
            //rowView.AddChidren(lineView);
            //lineView.Y = rowView.Height - lineView.Height;
            EventHandler<MouseEventArgs> eHandler = (sender, e) =>
            {
                UserInfo.Current.RequestHttpsHost = mGlobalRegion.regionUrl;
                UserInfo.Current.GlobalRegion = mGlobalRegion;
                UserInfo.Current.SaveUserInfo();
                //关闭页面
                this.Close();
                selectAction?.Invoke();
            };
            rowView.MouseUpEventHandler += eHandler;
            urlBtn.MouseUpEventHandler += eHandler;
            urlBtn.Text = mGlobalRegion.regionName;
            if (mGlobalRegion.regionUrl == UserInfo.Current.RequestHttpsHost)
            {
                urlBtn.TextColor = CSS_Color.MainColor;
            }
        }
    }
}