using System; using System.Collections.Generic; using HDL_ON.DAL; using HDL_ON.Entity; using HDL_ON.UI; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON { public static class MainPage { /// /// BaseView /// public static FrameLayout BaseView { get; internal set; } /// /// BasePageView /// public static PageLayout BasePageView { get; set; } /// /// 用户控制父容器 /// public static UserPage UserBasePage; /// /// 版本号 /// public static string VersionString = "1.8.0"; ///// ///// 客户端类型 ///// //public static string ClientType = APIClientType.HDL_ON_PRO.ToString(); /// /// /// public static CityInfo cityInfo = new CityInfo(); /// /// 城市天气信息antion /// public static Action CityWeatherAction = null; /// /// 天气刷新action /// public static Action RefreshAir; /// /// 回退页面action 没有需要可以不用 /// public static Action ReturnRefreshAction; /// /// 无登录模式 /// public static bool NoLoginMode = false; /// /// 网络连接状态 /// 0:无网络 /// public static int InternetStatus = 2; /// /// 连接mqtt次数 /// public static int LinkHdlMqttCount = 0; /// /// 是否进入后台 /// public static bool IsEnterBackground = false; /// /// 当前分页索引 /// 0:收藏 /// 1:分类 /// 2:智能 /// 3:个人 /// public static int CurPageIndex = 9999; ///// ///// 公司代码 ///// 预留第三方定制标记 ///// 0:HDL ///// //public static int Company = 0; /// /// 右滑后退提示按钮 /// public static Button BtnBackIcon; /// /// 后退右滑了多少距离,超过一定距离才触发后退事件 /// public static int StartX = 0; /// /// 是否全面屏手机 /// public static bool Increase { get { #if __IOS__ if (Application.PhoneType > 10) { return true; } return false; #else return false; #endif } } /// /// 场景支持的功能列表 /// public static List SceneSupportFunctionList = new List { SPK.LightCCT,SPK.LightDimming,SPK.LightSwitch,SPK.LightRGB, SPK.CurtainRoller,SPK.CurtainSwitch,SPK.CurtainTrietex,SPK.CurtainDream, SPK.AcIr,SPK.AcStandard,SPK.HvacAC, SPK.FloorHeatStandard,SPK.HvacFloorHeat, SPK.AirFreshStandard,SPK.HvacAirFresh, SPK.AirSwitch, SPK.PanelSocket,SPK.ElectricSocket, SPK.MechanicalArm,SPK.IpCam_Imou, }; static List _RoomNotSupportFunctionList = null; /// /// 房间功能列表不加载的功能列表 /// public static List RoomNotSupportFunctionList { get { if (_RoomNotSupportFunctionList == null) { _RoomNotSupportFunctionList = new List(); _RoomNotSupportFunctionList.Add(SPK.EnergyStandard); //_RoomNotSupportFunctionList.Add(SPK.MusicStandard); //_RoomNotSupportFunctionList.Add(SPK.AvMusic); _RoomNotSupportFunctionList.Add(SPK.AirSwitch); _RoomNotSupportFunctionList.Add(SPK.ElectricEnergy); //_RoomNotSupportFunctionList.Add(SPK.OtherCommon); _RoomNotSupportFunctionList.Add(SPK.SensorLight); _RoomNotSupportFunctionList.AddRange(SPK.EnvironDeviceSpkList()); //_RoomNotSupportFunctionList.AddRange(SPK.ArmSensorSpkList()); } return _RoomNotSupportFunctionList; } } public static void Show() { try { Application.DesignWidth = 375; Application.DesignHeight = 667; //设置语言环境 防止string转 double出现逗号,todouble异常等问题 System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("zh-CN"); BaseView = Application.MainPage; Application.MainPage.BackgroundColor = CSS_Color.MainBackgroundColor; Language.UpdateLanguage(); //#region 测试 //var ddd = new UI.test.TestDialog(); //ddd.InitView(); //return; //#endregion if (string.IsNullOrEmpty(OnAppConfig.Instance.LastLoginUserId)) { GoLoginPage(); } else { //判断需不需要登录,有没有登录,或者登录是否过期, if (UserInfo.Current == null || !UserInfo.Current.IsLogin) { GoLoginPage(UserInfo.Current); } else { //new System.Threading.Thread(() => //{ // var pm = new DAL.Server.HttpServerRequest(); // pm.RefreshToken();//刷新Token // pm.GetHomePager();//刷新住宅信息 // pm.GetUserInfo();//刷新个人信息 //}) //{ IsBackground = true }.Start(); Common.ApiUtlis.Ins.DownloadData(); GoUserPage(false, true); } } } catch (Exception ex) { Log("root erorr : " + ex.Message); } finally { //Application.RunOnMainThread(() => { // Application.HideSoftInput(); //}); } try { CommonClass.excptionAction = (obj) => { Application.RunOnMainThread(() => { Stan.HdlMessageLogic.Current.ShowAppProgramIsError(obj); }); }; } catch (Exception ex) { } #if __ANDROID__ new System.Threading.Thread(async () => { int i = 0; while (i < 10) { try { var location_android = await HDL_ON_Android.LocationUtils.GetCurrentLocationAsync(); if (location_android != null) { MainPage.cityInfo.lat = location_android.Latitude.ToString(); MainPage.cityInfo.lon = location_android.Longitude.ToString(); new HDL_ON.DAL.Server.HttpServerRequest().GetCityWeatherInfo(MainPage.cityInfo.lon.Replace(",", "."), MainPage.cityInfo.lat.ToString().Replace(",", ".")); i = 100; Application.RunOnMainThread(() => { HomePage.LoadEvent_RefreshAir(); }); } else { i++; } } catch (Exception ex) { Log($"经纬度获取异常: {ex.Message}"); } } }) { IsBackground = true }.Start(); #endif } /// /// 进入登录界面 /// public static void GoLoginPage(UserInfo userInfo = null) { try { for (int i = 0; i < BaseView.ChildrenCount; i++) { BaseView.GetChildren(i).RemoveFromParent(); } } catch { } BaseView.BackgroundColor = CSS_Color.BackgroundColor; var fisrtView = new UI.UI1Login.LoginPage(); fisrtView.BackgroundColor = CSS_Color.MainBackgroundColor; BaseView.AddChidren(fisrtView); fisrtView.LoadView(userInfo); } /// /// 进入主页 /// /// 如果是第一次启动 检测校验密码 /// 主页显示之后触发的事件(没有住宅的话,则不会触发) public static void GoUserPage(bool downloadData, bool isFirstOpen = false, Action pageShowEvent = null) { try { for (int i = 0; i < BaseView.ChildrenCount; i++) { BaseView.GetChildren(i).RemoveFromParent(); } } catch { } #region 后退事件 BasePageView = new PageLayout(); BasePageView.ScrollEnabled = false; BasePageView.IsShowPoint = false; BasePageView.PageChange = (sender, e) => { if (e < BasePageView.ChildrenCount - 1) { BasePageView.GetChildren(BasePageView.ChildrenCount - 1).RemoveFromParent(); } try { ReturnRefreshAction?.Invoke(); ReturnRefreshAction = null; } catch (Exception ex) { Log($"后退事件异常:{ex.Message}"); } }; BaseView.AddChidren(BasePageView); var backView = new FrameLayout() { Y = Application.GetRealHeight(100), Width = Application.GetRealWidth(10), Height = Application.GetRealHeight(440), }; BaseView.AddChidren(backView); BtnBackIcon = new Button() { X = -Application.GetRealWidth(100), Gravity = Gravity.CenterVertical, Width = Application.GetRealWidth(88 / 2), Height = Application.GetRealHeight(56 / 2), UnSelectedImagePath = "Public/RightSlideBackIcon.png" }; BaseView.AddChidren(BtnBackIcon); backView.MouseMoveEventHandler = (sender, e) => { if (BasePageView.ChildrenCount <= 1) { return; } MainPage.Log($"move:{e.X}"); if (StartX == 0 && e.X < 30) { StartX = (int)e.X; } if (StartX < 30) { if (e.X < Application.GetRealWidth(100)) { BtnBackIcon.X = (int)e.X - Application.GetRealWidth(100); } } }; backView.MouseDownEventHandler = (sender, e) => { if (BasePageView.ChildrenCount <= 1) { return; } MainPage.Log($"down:{e.X}"); StartX = (int)e.X; BtnBackIcon.Y = (int)e.Y + Application.GetRealHeight(50); }; backView.MouseUpEventHandler = (sender, e) => { if (Inverter.Ins.H5Page.Parent != null) { if (Inverter.Ins.PageIndex != "1") { Inverter.Ins.PageIndex = "1"; var status = new Dictionary { ["method"] = "backPrePage", ["data"] = "" }; Inverter.Ins.H5Page.CallJS($"nativeToJs(\'{Newtonsoft.Json.JsonConvert.SerializeObject(status)}\')"); MainPage.Log($"up{e.X}"); StartX = 0; BtnBackIcon.X = -Application.GetRealWidth(100); return; } else { Inverter.Ins.PageIndex = "1"; } } MainPage.Log($"up{e.X}"); StartX = 0; BtnBackIcon.X = -Application.GetRealWidth(100); if (e.X > 70) { if (BasePageView.ChildrenCount > 1) { BasePageView.PageIndex = BasePageView.ChildrenCount - 2; } } }; backView.MouseUpOutsideEventHandler = (sender, e) => { if (Inverter.Ins.H5Page.Parent != null) { if (Inverter.Ins.PageIndex != "1") { Inverter.Ins.PageIndex = "1"; List ddd = new List(); //var status = new Dictionary { ["method"] = "status", ["data"] = ddd }; //var ddd3 = Newtonsoft.Json.JsonConvert.SerializeObject(status); var status = new Dictionary { ["method"] = "backPrePage", ["data"] = "" }; Inverter.Ins.H5Page.CallJS($"nativeToJs(\'{Newtonsoft.Json.JsonConvert.SerializeObject(status)}\')"); MainPage.Log($"up{e.X}"); StartX = 0; BtnBackIcon.X = -Application.GetRealWidth(100); return; } else { Inverter.Ins.PageIndex = "1"; } } MainPage.Log($"up{e.X}"); StartX = 0; BtnBackIcon.X = -Application.GetRealWidth(100); if (e.X > 70) { if (BasePageView.ChildrenCount > 1) { BasePageView.PageIndex = BasePageView.ChildrenCount - 2; } } }; #endregion //体验模式 if (NoLoginMode) { //跳转页面---- UserBasePage = new UserPage(); BasePageView.AddChidren(UserBasePage); UserBasePage.LoadPage(); BasePageView.PageIndex = 0; return; } //加载Loading效果 var waitPage = new Loading(); BaseView.AddChidren(waitPage); waitPage.Start(Language.StringByID(StringId.PleaseWait)); //当没有住宅时,不能让它往下走 if (UserInfo.Current.regionList.Count == 0) { waitPage.Hide(); var addResidencePage = new BindingResidencePage(); BaseView.AddChidren(addResidencePage); addResidencePage.LoadView(); return; } new System.Threading.Thread(() => { try { Entity.FunctionList.List.ClearDatas(); Entity.SpatialInfo.CurrentSpatial.Clear(); ///等待获取住宅信息 Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.Hide(); waitPage.RemoveFromParent(); waitPage = null; } //跳转页面---- UserBasePage = new UserPage(); BasePageView.AddChidren(UserBasePage); UserBasePage.LoadPage(); BasePageView.PageIndex = 0; if (isFirstOpen) { //启动密码验证 new AppUnlockPage().LoadPage(isFirstOpen); } //主页加载完成,回调事件 pageShowEvent?.Invoke(); pageShowEvent = null; }); } catch (Exception ex) { MainPage.Log($"GoUserPage : {ex.Message}"); } finally { Application.RunOnMainThread(() => { if (downloadData) { DB_ResidenceData.Instance.EixtAccount(); ///初始化app数据 Common.ApiUtlis.Ins.DownloadData(); }; }); } }).Start(); } /// /// 后退事件 /// 0:后退 /// 1:有等待界面 /// 2:无法再后退,可以执行退到桌面 /// public static int LoadEvent_BackAction() { int result = 0; Application.RunOnMainThread(() => { if (Inverter.Ins.H5Page.Parent != null) { if (Inverter.Ins.PageIndex != "1") { Inverter.Ins.PageIndex = "1"; var status = new Dictionary { ["method"] = "backPrePage", ["data"] = "" }; Inverter.Ins.H5Page.CallJS($"nativeToJs(\'{Newtonsoft.Json.JsonConvert.SerializeObject(status)}\')"); StartX = 0; BtnBackIcon.X = -Application.GetRealWidth(100); return; } else { Inverter.Ins.PageIndex = "1"; } } if (BasePageView == null || BasePageView.ChildrenCount <= 1) { result = 2;//无法再后退,可以执行退到桌面 } if (BasePageView.ChildrenCount > 1) { int index = BasePageView.ChildrenCount - 1; var view = BasePageView.GetChildren(index); if (view.GetType() == typeof(Loading)) { var loading = view as Loading; if (loading.CurStatus == false)//有一些等待界面隐藏了,但是没有移除到,需要先移除 { loading.RemoveFromParent(); result = LoadEvent_BackAction(); } else { result = 1;//正在等待某些操作 } } else { if (view != null) { if (view.Tag != null) { if (view.Tag.ToString() != "unlockpage") { view.RemoveFromParent(); } else { result = 2; } } else { view.RemoveFromParent(); } } } } else { result = 2;//无法再后退,可以执行退到桌面 } }); return result; } /// /// 自定义日志输出 /// public static void Log(string msg) { #if DEBUG Console.WriteLine(msg); #endif } /// /// 自定义日志输出 /// public static void Log(string tag,string msg) { #if DEBUG Console.WriteLine($"{tag}-->{msg}"); #endif } } }