using System; using System.Collections.Generic; using Shared.SimpleControl; namespace Shared { [System.Serializable] public class UserConfig { public static string configFile = "UserConfig"; static UserConfig instance; public static UserConfig Instance { get { if (instance == null) { try { var userConfigBytes = IO.FileUtils.ReadFile (configFile); var userConfigString = CommonPage.MyEncodingUTF8.GetString (userConfigBytes); UserConfig temp = null; if (userConfigString != null) { temp = Newtonsoft.Json.JsonConvert.DeserializeObject (userConfigString); } if (temp == null) { instance = new UserConfig { }; instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Projector); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.DoorLock); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.FreshAir); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Sensor); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Environmental); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.MusicModel); //instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.UniversalDevice); } else { instance = temp; } } catch{ instance = new UserConfig { }; instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Projector); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.DoorLock); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.FreshAir); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Sensor); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.Environmental); instance.HideDeviceTypes.Add (SimpleControl.R.MyInternationalizationString.MusicModel); } } return instance; } } public int internetStatus = 2; byte [] GetUserConfigBytes () { return CommonPage.MyEncodingUTF8.GetBytes (Newtonsoft.Json.JsonConvert.SerializeObject (this)); } public void RefreshUserConfig () { instance = null; } public void SaveUserConfig () { IO.FileUtils.WriteFileByBytes (configFile, GetUserConfigBytes ()); } //public void RefeshUserConfig() //{ //} /// /// 存放不用调光功能的调光设备 /// public List UnEnableDimmingLight = new List (); /// /// 插座开关列表 /// public List SocketList = new List (); /// /// 手机appID /// public string tokenID = string.Empty; /// /// 手机别名 /// public string phoneName = string.Empty; /// /// 用户界面进入时是否显示的是全局场景界面 /// public bool SceneOfGloba = false; /// /// 保存远程连接的网络设备文件名 /// public string RemoteModeFile = string.Empty; /// /// 是否展开房间灯光列表 /// public bool ShowRoomLightList = true; /// /// 是否展开房间窗帘列表 /// public bool ShowRoomCurtainList = true; /// /// 隐藏没有场景的房间 /// public bool HideInvalidRoomScene = false; public List HideDeviceTypes = new List (); public Dictionary SkinVision = new Dictionary (); public Dictionary DowlaodSkinVision = new Dictionary (); /// /// 当前使用的皮肤 /// public string CurrentSkinName { get { string skinPath = "Phone"; if (SkinCode == 0) { skinPath = "Phone"; } else if (SkinCode == 1) { skinPath = "Phone2"; } return skinPath; } } public string VersionNumber { get { return MainPage.RequestVersion; } } public string TipVersionBackup = string.Empty; /// /// 安防密码 /// public string ArmPW = "85521566"; /// /// 是否显示场景列表 /// public bool ShowAlternativeScene = true; //门锁密码保存 public Dictionary RemoteDoorLockPasswordList = new Dictionary (); //public string CountryCode = "CN"; /// /// /// public int SkinCode = 1; /// /// 住宅列表 /// public List HomeLists = new List (); /// /// 当前住宅 /// RegionInfoRes currentRegion = new RegionInfoRes (); public RegionInfoRes CurrentRegion { set { currentRegion = value; CheckIfNeedGetMasterAccountToken (); //切换住宅 设置本地加密Key SetLocalEncryptKey (); } get { if (currentRegion == null) { currentRegion = new RegionInfoRes (); } return currentRegion; } } /// /// 网关详细信息 /// public HomeGatewayInfo HomeGateway; /// /// 检测住宅是否绑定了网关 /// gatewayId 判空 /// /// public bool CheckWhetherGatewayIdNotNull () { if (HomeGateway != null && !string.IsNullOrEmpty (HomeGateway.gatewayId)) { return true; } else { return false; } } /// /// 检测住宅是否绑定了网关 /// /// public bool CheckHomeGatewaysNotEmpty () { if (HomeGateway != null && !string.IsNullOrEmpty (HomeGateway.mac)) { return true; } else { return false; } } /// /// /// public string GatewayMAC { get { if (CheckHomeGatewaysNotEmpty ()) { return HomeGateway.mac; } else { return ""; } } set { if (CheckHomeGatewaysNotEmpty()) { HomeGateway.mac = value; } else { //2020-01-11 if (HomeGateway != null) { HomeGateway.mac = value; } else { HomeGateway = new HomeGatewayInfo () { mac = value}; } } } } /// /// 更新设置当前住宅网关 /// 2020-01-11 /// /// public void SetNowHomeGateways (List mGatewayDataList) { try { if (currentRegion != null) { if (mGatewayDataList != null && mGatewayDataList.Count > 0) { var mMacList = new List (); foreach (var mGatewayRes in mGatewayDataList) { var mac = new HomeGateways (); mac.GatewayUniqueId = mGatewayRes.GatewayUniqueId; mMacList.Add (mac); } //HomeGateways = mMacList; } } } catch { } } //public List RometoUserInfoKeys = new List (); /// /// 本地通信加密Key /// public string LocalEncryptKey = string.Empty; /// /// 是否加密密码验证通过 /// public bool EncryptedPasswordCorrect = true; /// /// 是否加密 /// public bool IsLocalEncrypt = false; /// /// 设置为默认加密,并计算加密Key /// private void SetLocalEncryptKey () { if (currentRegion != null) { IsLocalEncrypt = true; GenerateLocalEncryptionKey (); //LocalEncryptKey = CommonPage.MyEncodingUTF8.GetString (GenerateLocalEncryptionKey ()); } } /// /// 获取16位的key byte [] /// /// public byte [] GenerateLocalEncryptionKey () { byte [] aseKey = new byte [16]; try { //生成加密Key byte [] homeId = System.Text.Encoding.ASCII.GetBytes (currentRegion.Id); Array.Copy (homeId, 0, aseKey, 0, 16 < homeId.Length ? 16 : homeId.Length); LocalEncryptKey = System.Text.Encoding.ASCII.GetString (aseKey); return aseKey; } catch { return aseKey; } } public string MasterAccountToken = ""; public string MasterAccountRequestBaseUrl = ""; /// /// 是否获取中 /// 2020-01-11 /// bool bGetting = false; //public static List LocalFiles = IO.FileUtils.ReadFiles (); /// /// 获取控制分享项目(住宅)请求信息 /// /// /// public void CheckIfNeedGetMasterAccountToken () { if (bGetting) return; ////2020-01-08 判断是否分享过来的住宅 //if (currentRegion != null && currentRegion.IsOthreShare) { // //MainPage.IsAdministrator = UserConfig.Instance.CurrentRegion.IsOthreShare; // //请求主账号token // System.Threading.Tasks.Task.Run (() => { // try { // bGetting = true; // var requestObj = new GetSharedHomeApiControlObj () { // LoginAccessToken = MainPage.LoginUser.LoginTokenString, // MainAccountId = currentRegion.MainUserDistributedMark, // SharedHid = currentRegion.Id, // }; // var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); // var revertObj = MainPage.RequestHttps (API.GetSharedHomeApiControl, requestJson); // if (revertObj.StateCode.ToUpper () == StateCode.SUCCESS) { // var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject (revertObj.ResponseData.ToString ()); // if (responseDataObj != null) { // MasterAccountToken = responseDataObj.RequestToken; // MasterAccountRequestBaseUrl = responseDataObj.RequestBaseUrl; // } // } // } catch { // } finally { // bGetting = false; // } // }); //} } } }