using System; using System.Text; using System.Collections.Generic; using System.Net; using System.IO; using Shared.SimpleControl.Phone; // // 程序主入口 // //using SystemConfiguration; namespace Shared.SimpleControl { /// /// 主页面 /// public static class MainPage { /// /// 主页面,根界面 /// public static FrameLayout MainFrameLayout { get; internal set; } public static bool Showed; static Loading loading; /// /// 显示加载界面 /// public static Loading Loading { get { if (loading == null) { loading = new Loading (); } return loading; } } //public static Button LogoButton = new Button (); public static string RequestVersion = "20200423"; public static UserInfo LoginUser; /// /// 是否是管理员权限(变更了,成员的时候,这个也为ture。为什么会声明这样变量,因为有些接口必须使用原来的Token) /// public static bool IsAdministrator { get { if (UserConfig.Instance == null || UserConfig.Instance.CurrentRegion == null) { return false; } else { return UserConfig.Instance.CurrentRegion.IsOthreShare; } } } ///// ///// 是否账号在其它设备登录了 ///// //public static bool IsOtherDevicesLogin = false; //#if __IOS__ // public static readonly string PhoneType = "iOS"; //#else // public static readonly string PhoneType = "Android"; //#endif public static string SoftPadTitle = "Crabtree"; public static string SoftTitle = "Crabtree"; public static int SoftSmsType = 0; public static string RequestSource = "1"; //0:Zigbee、1:HdlOn、2:GraphicsMonitor、3:BusproSoft、4:AgentWeb public static string LogoString = "";//"Logo/Logo.png"; public static string WiFiStatus = "CrabtreeAdd/WiFi.png";//"CrabtreeAdd/WiFi.png"; public static string RegisterLogoString = "Logo/Register_logo.png"; public static string SeviceIP = "52.172.25.151"; public static string RequestHttpsHost = "https://smarth-api.havells.com/HangZhouHdlCloudApi"; //public static string RequestHttpsHost = "https://global.hdlcontrol.com/HangZhouHdlCloudApi"; public static string RequestHttpsHostMqtt = "https://smarth-api.havells.com"; //public static string RequestHttpsHost = "https://developer.hdlcontrol.com"; public static double PixelScale { get { #if __IOS__ switch (Application.PhoneType) { case 3: case 4: case 5: case 6: case 7: case 8: case 9: return 1.0; case 10: return 1.1; case 11: case 12: return 1.2; //case 13: // return 1.3; } var widthScale = Application.CurrentWidth / 640.0f; var heightScale = Application.CurrentHeight / 1136.0f; var scale = Math.Round (System.Math.Abs (widthScale - heightScale), 2); return scale + 1; #else return 1; #endif } } /// /// 显示当前界面 /// public static void Show () { try { Showed = true; UserConfig.Instance.SkinCode = 1; if (Shared.Application.IsPad) { Application.DesignWidth = 2048; Application.DesignHeight = 1536; } else { Application.DesignWidth = 640; Application.DesignHeight = 1136; } Shared.BusSocket.Start (6000); CommonPage.InitReceiveEvent (); MainFrameLayout = Application.MainPage; MainFrameLayout.AddChidren (Loading); if (Shared.Application.IsPad) { //Pad.UserHomePage.Init (); } else { Phone.UserHomePage.Init (); #if __IOS__ //Loading.LodingBackgroundColor = 0x10777777; #else //Loading.LodingBackgroundColor = SkinStyle.Current.MainColor; #endif Loading.TextColor = 0xFFA9A9A9; Loading.LodingBackgroundColor = SkinStyle.Current.MainColor; } } catch (Exception ex) { //new Alert ("Eorr", ex.Message, "Close").Show(); } } /// /// 增加rjfi /// /// Tip. /// Time. public static void AddTip (string tip, int time = 2000) { if (MainFrameLayout == null) { return; } Application.RunOnMainThread (() => { var button = new TextView { Gravity = Gravity.Center, Width = Application.GetRealWidth (560), Height = Application.GetRealHeight (126), //BackgroundColor = SkinStyle.Current.AddTipButtonColor, BackgroundColor = SkinStyle.Current.MainColor, Radius = 10, IsMoreLines = true, Text = tip, TextSize = 16, TextColor = 0xFF000000 }; MainFrameLayout.AddChidren (button); button.MouseUpEventHandler += (sender, e) => { button.RemoveFromParent (); }; System.Threading.Tasks.Task.Run (() => { System.Threading.Thread.Sleep (time); Application.RunOnMainThread (() => { button.RemoveFromParent (); }); }); }); } static DateTime requesTime = DateTime.MinValue; static bool isShowLoading = true; /// /// 请求服务器方法 /// /// The https. /// 请求方法. /// 请求的参数. /// 是否需要包头. public static ResponsePack RequestHttps (string methodType, string dataStringJson, string urlHead = "") { ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, error) => { return true; }; #region var webClient = new WebClient (); if (urlHead == "") { urlHead = RequestHttpsHost; } //else { // webClient.Headers.Add ("CONTENT-TYPE", "application/json"); //} webClient.Headers.Add ("CONTENT-TYPE", "application/json"); string url = urlHead + methodType; if (LoginUser != null) {/* 如果不需要验证Token可以不用传入 */ webClient.Headers.Add ("Authorization", LoginUser.LoginTokenString); } byte [] bytes = null; try { bytes = webClient.UploadData (url, Encoding.UTF8.GetBytes (dataStringJson)); } catch (System.Net.WebException webEx) { //Application.RunOnMainThread (() => { // MainPage.Loading.Hide (); //}); return new ResponsePack () { StateCode = ErrorCode.NetworkError }; } string responseString = Encoding.UTF8.GetString (bytes); try { return Newtonsoft.Json.JsonConvert.DeserializeObject (responseString); } catch (Exception ex) { Utlis.WriteLine (ex.ToString ()); return new ResponsePack () { StateCode = "Data exception" }; } #endregion } /// /// 请求服务器方法 /// /// The https. /// 请求方法. /// 请求的参数. /// 是否需要包头. public static byte [] RequestHttpsReturnByte (string methodType, string dataStringJson, bool needHeaders = false, string urlHead = "") { ResponsePack revertObj = null; try { ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, error) => { return true; }; #region var webClient = new WebClient (); if (urlHead == "") { urlHead = RequestHttpsHost; } //else { // webClient.Headers.Add ("CONTENT-TYPE", "application/json"); //} webClient.Headers.Add ("CONTENT-TYPE", "application/json"); string url = urlHead + methodType; if (needHeaders && LoginUser != null) {/* 如果不需要验证Token可以不用传入 */ webClient.Headers.Add ("Authorization", LoginUser.LoginTokenString); } byte [] bytes = null; try { bytes = webClient.UploadData (url, Encoding.UTF8.GetBytes (dataStringJson)); } catch (System.Net.WebException webEx) { return bytes; } return bytes; #endregion } catch (Exception ex) { Utlis.WriteLine (ex.Message); return null; } finally { //requesTime = requesTime.AddDays(1); } } /// /// 连接服务器失败 /// public static void FailureToServer () { //Application.RunOnMainThread (() => { // new Alert ("", Language.StringByID (R.MyInternationalizationString.FailureToServer), // Language.StringByID (R.MyInternationalizationString.Close)).Show (); //}); ShowAlertOnMainThread (Language.StringByID (R.MyInternationalizationString.FailureToServer)); } /// /// 2020-01-11 弹窗提示 /// /// public static void ShowAlertOnMainThread (string mes) { Application.RunOnMainThread (() => { new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); } /// /// 设备不在线,无响应 /// public static void DeviceNotOnline () { Application.RunOnMainThread (() => { new Alert ("", Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline), Language.StringByID (R.MyInternationalizationString.Close)).Show (); MainPage.Loading.Hide (); }); } public static void LoadingStart (string showString = "") { Application.RunOnMainThread (() => { MainPage.Loading.Start (showString); }); } public static void LoadingSetText (string showString = "") { Application.RunOnMainThread (() => { MainPage.Loading.Text = showString; }); } public static void LoadingHide () { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } } }