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; }
///
/// 用户控制父容器
///
public static UserPage UserBasePage;
///
/// 版本号
///
public static string VersionString = "1.2.0629";
/////
///// 客户端类型
/////
//public static string ClientType = APIClientType.HDL_ON_PRO.ToString();
///
///
///
public static Entity.CityInfo cityInfo = new Entity.CityInfo();
///
/// 天气刷新action
///
public static Action RefreshAir;
///
/// 回退页面action 没有需要可以不用
///
public static Action ReturnRefreshAction;
///
/// 无登录模式
///
public static bool NoLoginMode = false;
///
/// 网络连接状态
/// 0:无网络
///
public static int InternetStatus = 2;
///
/// 是否进入后台
///
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 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();
//});
}
}
///
/// 进入登录界面
///
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 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( () =>
{
waitPage.Hide();
waitPage.RemoveFromParent();
//跳转页面----
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)
{
///初始化app数据
Common.ApiUtlis.Ins.DownloadData();
};
});
}
}).Start();
}
///
/// 后退事件
/// 0:后退
/// 1:有等待界面
/// 2:无法再后退,可以执行退到桌面
///
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.ToString() != "unlockpage")
{
view.RemoveFromParent();
}
}
}
}
else
{
result = 2;//无法再后退,可以执行退到桌面
}
});
return result;
}
///
/// 自定义日志输出
///
public static void Log(string msg)
{
#if DEBUG
Console.WriteLine(msg);
#endif
}
}
}