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{} } 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 bool CheckHomeGateways () { if (CurrentRegion != null && CurrentRegion.HomeGateways != null && CurrentRegion.HomeGateways.Count > 0) { return true; } else { return false; } } public bool CheckHomeGatewaysNotEmpty () { if (CheckHomeGateways () && !string.IsNullOrEmpty (currentRegion.HomeGateways [0].GatewayUniqueId)) { return true; } else { return false; } } public bool CheckThisHomeGatewaysNotEmpty (RegionInfoRes mRegionInfoRes) { if (mRegionInfoRes != null && mRegionInfoRes.HomeGateways != null && mRegionInfoRes.HomeGateways.Count > 0 && !string.IsNullOrEmpty (mRegionInfoRes.HomeGateways [0].GatewayUniqueId)) { return true; } else { return false; } } //public List GatewayList = new List (); //public List GatewayMACList { // get { // List macList = new List (); // foreach (var mac in GatewayList) { // macList.Add (mac.GatewayUniqueId); // } // return macList; // } //} //public string GatewayMAC = ""; public string GatewayMAC { get { if (CheckHomeGatewaysNotEmpty ()) { return currentRegion.HomeGateways [0].GatewayUniqueId; } else { return ""; } } set { if (CheckHomeGateways ()) { currentRegion.HomeGateways [0].GatewayUniqueId = value; } else { //2020-01-11 if (currentRegion != null) { var mHomeGateways = new HomeGateways () { GatewayUniqueId = value }; var mList = new List (); mList.Add (mHomeGateways); currentRegion.HomeGateways = mList; } } } } /// /// 更新设置当前住宅网关 /// 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); } currentRegion.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 () == "SUCCESS") { var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject (revertObj.ResponseData.ToString ()); if (responseDataObj != null) { MasterAccountToken = responseDataObj.RequestToken; MasterAccountRequestBaseUrl = responseDataObj.RequestBaseUrl; } } } catch { } finally { bGetting = false; } }); } } } }