using System;
using System.Collections.Generic;
using HDL_ON.DAL;
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; }
///
/// DisplayCompleted
///
public static bool DisplayCompleted = false;
//public static UserInfo LoginUser;
///
/// 版本号
///
public static string VersionString = "1.0.0924";
/////
///// 客户端类型
/////
//public static string ClientType = APIClientType.HDL_ON_PRO.ToString();
///
///
///
public static Entity.CityInfo cityInfo = new Entity.CityInfo();
///
/// 天气刷新action
///
public static Action RefreshAir;
///
/// 无登录模式
///
public static bool NoLoginMode = false;
///
/// 远程模式
///
public static bool IsRemote = false;
///
/// 网络连接状态
/// 0:无网络
///
public static int InternetStatus = 2;
///
/// 是否进入后台
///
public static bool IsEnterBackground = false;
/////
///// 公司代码
///// 预留第三方定制标记
///// 0:HDL
/////
//public static int Company = 0;
///
/// 是否全面屏手机
///
public static bool Increase
{
get
{
#if __IOS__
if (Application.PhoneType>10)
{
return true;
}
return false;
#else
return false;
#endif
}
}
public static void Show()
{
try
{
Application.DesignWidth = 375;
Application.DesignHeight = 667;
BaseView = Application.MainPage;
Application.MainPage.BackgroundColor = CSS_Color.MainBackgroundColor;
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();
GoUserPage(true);
}
}
}
catch (Exception ex)
{
Log("root erorr : " + ex.Message);
}
finally
{
//Application.RunOnMainThread(() => {
// Application.HideSoftInput();
//});
}
}
///
/// 进入登录界面
///
public static void GoLoginPage(UserInfo userInfo = null)
{
BaseView.RemoveAll();
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 isFirstOpen = false, Action pageShowEvent = null)
{
//加载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.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();
}
///
/// 初始化app所需要的数据
///
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();
#endregion
})
{ IsBackground = true }.Start();
#region 读取本地数据
//读取音乐信息
UI.Music.A31MusicModel.ReadMusicStates();
//搜索网关
DriverLayer.Control.Ins.SearchLoaclGateway();
#endregion
}
///
/// 自定义日志输出
///
public static void Log(string msg)
{
#if DEBUG
Console.WriteLine(msg);
#endif
}
///
/// 生成13位时间戳
///
/// 时间
///
public static long GetTimestamp13bit(DateTime value)
{
return new DateTimeOffset(value).ToUnixTimeSeconds();
}
///
/// 获取时间
///
///
///
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;
}
}
}