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
|
{
|
/// <summary>
|
/// BaseView
|
/// </summary>
|
public static FrameLayout BaseView { get; internal set; }
|
/// <summary>
|
/// BasePageView
|
/// </summary>
|
public static PageLayout BasePageView { get; set; }
|
/// <summary>
|
/// 用户控制父容器
|
/// </summary>
|
public static UserPage UserBasePage;
|
/// <summary>
|
/// 版本号
|
/// </summary>
|
public static string VersionString = "1.2.1130";
|
///// <summary>
|
///// 客户端类型
|
///// </summary>
|
//public static string ClientType = APIClientType.HDL_ON_PRO.ToString();
|
|
/// <summary>
|
///
|
/// </summary>
|
public static Entity.CityInfo cityInfo = new Entity.CityInfo();
|
/// <summary>
|
/// 天气刷新action
|
/// </summary>
|
public static Action RefreshAir;
|
/// <summary>
|
/// 回退页面action 没有需要可以不用
|
/// </summary>
|
public static Action ReturnRefreshAction;
|
/// <summary>
|
/// 无登录模式
|
/// </summary>
|
public static bool NoLoginMode = false;
|
/// <summary>
|
/// 网络连接状态
|
/// 0:无网络
|
/// </summary>
|
public static int InternetStatus = 2;
|
/// <summary>
|
/// 是否进入后台
|
/// </summary>
|
public static bool IsEnterBackground = false;
|
/// <summary>
|
/// 当前分页索引
|
/// 0:收藏
|
/// 1:分类
|
/// 2:智能
|
/// 3:个人
|
/// </summary>
|
public static int CurPageIndex = 9999;
|
|
///// <summary>
|
///// 公司代码
|
///// 预留第三方定制标记
|
///// 0:HDL
|
///// </summary>
|
//public static int Company = 0;
|
|
/// <summary>
|
/// 右滑后退提示按钮
|
/// </summary>
|
public static Button BtnBackIcon;
|
/// <summary>
|
/// 后退右滑了多少距离,超过一定距离才触发后退事件
|
/// </summary>
|
public static int StartX = 0;
|
/// <summary>
|
/// 是否全面屏手机
|
/// </summary>
|
public static bool Increase
|
{
|
get
|
{
|
#if __IOS__
|
if (Application.PhoneType>10)
|
{
|
return true;
|
}
|
return false;
|
#else
|
return false;
|
#endif
|
}
|
}
|
|
/// <summary>
|
/// 场景支持的功能列表
|
/// </summary>
|
public static List<string> SceneSupportFunctionList = new List<string> {
|
SPK.LightCCT,SPK.LightDimming,SPK.LightSwitch,SPK.LightRGB,
|
SPK.CurtainRoller,SPK.CurtainSwitch,SPK.CurtainTrietex,
|
SPK.AcIr,SPK.AcStandard,SPK.HvacAC,
|
SPK.FloorHeatStandard,SPK.HvacFloorHeat,
|
SPK.AirFreshStandard,SPK.HvacAirFresh,
|
SPK.AirSwitch,
|
};
|
|
|
static List<string> _RoomNotSupportFunctionList = null;
|
/// <summary>
|
/// 房间功能列表不加载的功能列表
|
/// </summary>
|
public static List<string> RoomNotSupportFunctionList
|
{
|
get {
|
if(_RoomNotSupportFunctionList == null)
|
{
|
_RoomNotSupportFunctionList = new List<string>();
|
_RoomNotSupportFunctionList.Add(SPK.EnergyStandard);
|
_RoomNotSupportFunctionList.Add(SPK.MusicStandard);
|
_RoomNotSupportFunctionList.Add(SPK.AvMusic);
|
_RoomNotSupportFunctionList.Add(SPK.AirSwitch);
|
_RoomNotSupportFunctionList.Add(SPK.ElectricEnergy);
|
_RoomNotSupportFunctionList.AddRange(SPK.EnvironDeviceSpkList());
|
_RoomNotSupportFunctionList.AddRange(SPK.ArmSensorSpkList());
|
}
|
return _RoomNotSupportFunctionList;
|
}
|
}
|
|
|
|
public static void Show()
|
{
|
try
|
{
|
Application.DesignWidth = 375;
|
Application.DesignHeight = 667;
|
|
BaseView = Application.MainPage;
|
Application.MainPage.BackgroundColor = CSS_Color.MainBackgroundColor;
|
|
|
//#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();
|
//});
|
}
|
}
|
|
/// <summary>
|
/// 进入登录界面
|
/// </summary>
|
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);
|
}
|
|
/// <summary>
|
/// 进入主页
|
/// </summary>
|
/// <param name="isFirstOpen">如果是第一次启动 检测校验密码</param>
|
/// <param name="pageShowEvent">主页显示之后触发的事件(没有住宅的话,则不会触发)</param>
|
public static void GoUserPage(bool downloadData , bool isFirstOpen = false, Action pageShowEvent = null)
|
{
|
BaseView.RemoveAll();
|
#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) => {
|
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) => {
|
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(async () =>
|
{
|
try
|
{
|
Entity.FunctionList.List.Clear();
|
Entity.SpatialInfo.CurrentSpatial.Clear();
|
///等待获取住宅信息
|
Application.RunOnMainThread( () =>
|
{
|
if (waitPage != null)
|
{
|
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();
|
}
|
|
/// <summary>
|
/// 后退事件
|
/// 0:后退
|
/// 1:有等待界面
|
/// 2:无法再后退,可以执行退到桌面
|
/// </summary>
|
public static int LoadEvent_BackAction()
|
{
|
int result = 0;
|
Application.RunOnMainThread(() =>
|
{
|
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;
|
}
|
|
|
/// <summary>
|
/// 自定义日志输出
|
/// </summary>
|
public static void Log(string msg)
|
{
|
#if DEBUG
|
Console.WriteLine(msg);
|
#endif
|
}
|
|
|
}
|
|
}
|