using System; using Shared.IO; using Shared.Net; using System.Text; using System.Collections.Generic; // // 程序主入口 // //using SystemConfiguration; using System.Net; using System.IO; using Shared.SimpleControl.Phone; 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 = "20200226"; 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 } } 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, Radius = 10, IsMoreLines = true, Text = tip, TextSize = 16, }; 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 = "") { //2020-01-08 屏蔽 //if (!SystemRemote.checeInternet ()) { // Application.RunOnMainThread (() => { // MainPage.WiFiStatus = "CrabtreeAdd/WiFiUnlink.png"; // MainPage.Loading.Hide (); // }); //} //new System.Threading.Thread (() => { // requesTime = DateTime.Now; // isShowLoading = true; // while (isShowLoading) { // System.Threading.Thread.Sleep (1000); // if (requesTime == DateTime.MinValue) { // break; // } // if (requesTime.AddSeconds (30) < DateTime.Now) { // Application.RunOnMainThread (Loading.Hide); // isShowLoading = false; // } // } //}) { IsBackground = true }.Start (); #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 (); //new Alert ( "","Network abnormal, unable to connect to the Internet", Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); return new ResponsePack () { StateCode = ErrorCode.NetworkError }; } string responseString = Encoding.UTF8.GetString (bytes); //var DD = Newtonsoft.Json.Linq.JObject .Parse("GFGFDG");DD["ResponseData"]["PageData"] //var request = (HttpWebRequest)WebRequest.Create (url); //var data = Encoding.UTF8.GetBytes (dataStringJson); //request.Method = "POST"; //request.ContentLength = data.Length; //if (needHeaders) {/* 如果不需要验证Token可以不用传入 */ // request.Headers.Set (HttpRequestHeader.Authorization, LoginUser.LoginTokenString); //} //using (var stream = request.GetRequestStream ()) { // stream.Write (data, 0, data.Length); //} //var response = (HttpWebResponse)request.GetResponse (); //var responseString = new StreamReader (response.GetResponseStream ()).ReadToEnd (); try { return Newtonsoft.Json.JsonConvert.DeserializeObject (responseString); } catch (Exception ex) { Console.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 { #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) { Console.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 LoadingHide () { Application.RunOnMainThread (() => { MainPage.Loading.Hide (); }); } } }