wei
2020-12-22 d07d62be7111d78b2aaa44c9cdee23a7d22b4dda
HDL_ON/UI/MainPage.cs
@@ -9,15 +9,32 @@
{
    public static class MainPage
    {
        /// <summary>
        /// BaseView
        /// </summary>
        public static FrameLayout BaseView { get; internal set; }
        /// <summary>
        /// BasePageView
        /// </summary>
        public static PageLayout BasePageView { get; set; }
        /// <summary>
        /// DisplayCompleted
        /// </summary>
        public static bool DisplayCompleted = false;
        public static UserInfo LoginUser;
        //public static UserInfo LoginUser;
        /// <summary>
        /// 版本号
        /// </summary>
        public static string VersionString = "1.0.1220";
        ///// <summary>
        ///// 客户端类型
        ///// </summary>
        //public static string ClientType = APIClientType.HDL_ON_PRO.ToString();
        public static string VersionString = "1.0.0924";
        /// <summary>
        ///
        /// </summary>
        public static Entity.CityInfo cityInfo = new Entity.CityInfo();
        /// <summary>
        /// 天气刷新action
@@ -31,13 +48,22 @@
        /// 远程模式
        /// </summary>
        public static bool IsRemote = false;
        /// <summary>
        /// 公司代码
        /// 预留第三方定制标记
        /// 0:HDL
        /// 网络连接状态
        /// 0:无网络
        /// </summary>
        public static int Company = 0;
        public static int InternetStatus = 2;
        /// <summary>
        /// 是否进入后台
        /// </summary>
        public static bool IsEnterBackground = false;
        ///// <summary>
        ///// 公司代码
        ///// 预留第三方定制标记
        ///// 0:HDL
        ///// </summary>
        //public static int Company = 0;
        /// <summary>
        /// 是否全面屏手机
@@ -69,49 +95,31 @@
                BaseView = Application.MainPage;
                Application.MainPage.BackgroundColor = CSS_Color.MainBackgroundColor;
                BusSocket.Start(6000);
                CommonPage.InitReceiveEvent();
                LoginUser = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(System.Text.Encoding.UTF8.GetString(FileUtils.ReadFile("UserInfo_File")));
                //判断需不需要登录,有没有登录,或者登录是否过期,
                if (LoginUser == null || !LoginUser.IsLogin)
                if (string.IsNullOrEmpty(OnAppConfig.Instance.LastLoginUserId))
                {
                    GoLoginPage(LoginUser);
                    GoLoginPage();
                }
                else
                {
                    if (Entity.DB_ResidenceData.residenceData.GatewayType == 1)
                    //判断需不需要登录,有没有登录,或者登录是否过期,
                    if (UserInfo.Current == null || !UserInfo.Current.IsLogin)
                    {
                        BusSocket.Start(6688);
                        CommonPage.InitReceiveEvent();
                        Control.ReadGatewayIPAddress();
                        GoLoginPage(UserInfo.Current);
                    }
                    else
                    {
                        BusSocket.Start(6000);
                        CommonPage.InitReceiveEvent();
                    }
                        new System.Threading.Thread(() =>
                        {
                            var pm = new DAL.Server.HttpServerRequest();
                            pm.RefreshToken();//刷新Token
                            pm.GetHomePager();//刷新住宅信息
                            pm.GetUserInfo();//刷新个人信息
                        })
                        { IsBackground = true }.Start();
                    new System.Threading.Thread(() =>
                    {
                        var pm =new DAL.Server.HttpServerRequest();
                        pm.GetUserInfo();//刷新个人信息
                    })
                    { IsBackground = true }.Start();
                    new System.Threading.Thread(() =>
                    {
                        var pm = new DAL.Server.HttpServerRequest();
                        pm.GetHomePager();//刷新住宅信息
                    })
                    { IsBackground = true }.Start();
                    GoUserPage();
                    //启动密码验证
                    new AppUnlockPage().LoadPage();
                    //读取音乐信息
                    UI.Music.A31MusicModel.ReadMusicStates();
#if DEBUG
                    new HDL_ON.DAL.Net.TcpListener().OpenServer(8586);
#endif
                        GoUserPage(true);
                    }
                }
            }
            catch (Exception ex)
@@ -129,7 +137,7 @@
        /// <summary>
        /// 进入登录界面
        /// </summary>
        public static void GoLoginPage(UserInfo userInfo =null)
        public static void GoLoginPage(UserInfo userInfo = null)
        {
            BaseView.RemoveAll();
            BaseView.BackgroundColor = CSS_Color.BackgroundColor;
@@ -142,36 +150,128 @@
        /// <summary>
        /// 进入主页
        /// </summary>
        public static void GoUserPage()
        /// <param name="isFirstOpen">如果是第一次启动 检测校验密码</param>
        /// <param name="pageShowEvent">主页显示之后触发的事件(没有住宅的话,则不会触发)</param>
        public static void GoUserPage(bool isFirstOpen = false, Action pageShowEvent = null)
        {
            BaseView.RemoveAll();
            BasePageView = new PageLayout();
            BasePageView.ScrollEnabled = false;
            BasePageView.IsShowPoint = false;
            BasePageView.PageChange = (sender, e) => {
                if (e < BasePageView.ChildrenCount - 1)
                {
                    MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
                }
            //加载Loading效果
            var waitPage = new Loading();
            BaseView.AddChidren(waitPage);
            waitPage.Start(Language.StringByID(StringId.PleaseWait));
                while (e < BasePageView.ChildrenCount - 1)
                {
                    BasePageView.GetChildren(BasePageView.ChildrenCount - 1).RemoveFromParent();
                }
            };
            BasePageView.MouseDownEventHandler += (sender, e) => {
                BasePageView.ScrollEnabled = true;
            };
            BasePageView.MouseUpEventHandler += (sender, e) => {
                BasePageView.ScrollEnabled = false;
            };
            BaseView.AddChidren(BasePageView);
            //当没有住宅时,不能让它往下走
            if (UserInfo.Current.regionList.Count == 0)
            {
                waitPage.Hide();
                var addResidencePage = new BindingResidencePage();
                BaseView.AddChidren(addResidencePage);
                addResidencePage.LoadView();
                return;
            }
            //跳转页面----
            var userPage = new UserPage();
            BasePageView.AddChidren(userPage);
            userPage.LoadPage();
            BasePageView.PageIndex = 0;
            new System.Threading.Thread(() =>
            {
                try
                {
                    Entity.FunctionList.List.Clear();
                    Entity.SpatialInfo.CurrentSpatial.Clear();
                    ///等待获取住宅信息
                    Application.RunOnMainThread(() =>
                    {
                        waitPage.Hide();
                        BaseView.RemoveAll();
                        BasePageView = new PageLayout();
                        BasePageView.ScrollEnabled = false;
                        BasePageView.IsShowPoint = false;
                        BasePageView.PageChange = (sender, e) =>
                        {
                            if (e < BasePageView.ChildrenCount - 1)
                            {
                                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
                            }
                            while (e < BasePageView.ChildrenCount - 1)
                            {
                                BasePageView.GetChildren(BasePageView.ChildrenCount - 1).RemoveFromParent();
                            }
                        };
                        BasePageView.MouseDownEventHandler += (sender, e) =>
                        {
                            BasePageView.ScrollEnabled = true;
                        };
                        BasePageView.MouseUpEventHandler += (sender, e) =>
                        {
                            BasePageView.ScrollEnabled = false;
                        };
                        BaseView.AddChidren(BasePageView);
                        //跳转页面----
                        var userPage = new UserPage();
                        BasePageView.AddChidren(userPage);
                        userPage.LoadPage();
                        BasePageView.PageIndex = 0;
                        if (isFirstOpen)
                        {
                            //启动密码验证
                            new AppUnlockPage().LoadPage(isFirstOpen);
                        }
                        //主页加载完成,回调事件
                        pageShowEvent?.Invoke();
                        pageShowEvent = null;
                    });
                }
                catch (Exception ex)
                {
                    MainPage.Log($"GoUserPage : {ex.Message}");
                }finally
                {
                    ///初始化app数据
                    InitializationData();
                }
            }).Start();
        }
        /// <summary>
        /// 初始化app所需要的数据
        /// </summary>
        public static void InitializationData()
        {
            new System.Threading.Thread(() =>
            {
                while (true)
                {
                    if (Entity.DB_ResidenceData.Instance == null )//|| Entity.DB_ResidenceData.residenceData.HomeGateway == null)
                    {
                        System.Threading.Thread.Sleep(100);
                    }
                    else
                    {
                        break;
                    }
                }
                //System.Threading.Thread.Sleep(2000);
                #region 读取云端数据--
                //todo数据覆盖处理
                //读取云端房间、楼层数据
                Entity.SpatialInfo.CurrentSpatial.DownloadRoomList();
                //读取云端设备数据
                Entity.FunctionList.List.DownloadFunctionList();
                //读取云端场景数据
                Entity.FunctionList.List.DownloadSceneList();
                //读取逻辑列表
                UI.UI2.Intelligence.Automation.MainView.GetLogicList();
                #endregion
            })
            { IsBackground = true }.Start();
            #region 读取本地数据
            //读取音乐信息
            UI.Music.A31MusicModel.ReadMusicStates();
            //搜索网关
            DriverLayer.Control.Ins.SearchLoaclGateway();
            #endregion
        }
        /// <summary>
@@ -183,5 +283,32 @@
            Console.WriteLine(msg);
#endif
        }
        /// <summary>
        /// 生成13位时间戳
        /// </summary>
        /// <param name="value">时间</param>
        /// <returns></returns>
        public static long GetTimestamp13bit(DateTime value)
        {
            return new DateTimeOffset(value).ToUnixTimeSeconds();
        }
        /// <summary>
        /// 获取时间
        /// </summary>
        /// <param name="timestamp"></param>
        /// <returns></returns>
        public static DateTime GetDateTime (long timestamp)
        {
            long begtime = timestamp * 10000000;
            DateTime dt_1970 = new DateTime(1970, 1, 1, 0, 0, 0);
            long tricks_1970 = dt_1970.Ticks;//1970年1月1日刻度
            long time_tricks = tricks_1970 + begtime;//日志日期刻度
            DateTime dt = new DateTime(time_tricks);//转化为DateTime
            return dt;
        }
    }
}