using FISLib.LiveVideo; using System.Linq; using Vinno.FIS.Sonopost.Common; using Vinno.FIS.Sonopost.Managers.Interfaces; using Vinno.FIS.Sonopost.Settings; using Vinno.FIS.Sonopost.Settings.Config; using Vinno.IUS.Common.Log; namespace Vinno.FIS.Sonopost.Managers { internal class ConfigManager : SonopostManager, IConfigManager { private ILiveVideoManager _liveVideoManager; private readonly object _locker = new object(); public string VCloudServerAddress { get; private set; } public int VCloudServerPort { get; private set; } public string VCloudServerName { get; private set; } public ConfigManager() { InitServerConfig(); } public void Save() { lock (_locker) { SonopostSystemSettings.Instance.Save(); SonopostUserDefinedSettings.Instance.Save(); } } public void SwitchVCloudServer(string address, int port, string vcloudServerName) { VCloudServerAddress = address; VCloudServerPort = port; VCloudServerName = vcloudServerName; } /// /// 刷新默认服务器 /// /// public void RefreshFlyinsonoServer(ServerInfoSetting newFlyinsonoServer) { if (VCloudServerName == SonopostConstants.FlyinsonoServerName) { VCloudServerAddress = newFlyinsonoServer.Host; VCloudServerPort = newFlyinsonoServer.Port; VCloudServerName = newFlyinsonoServer.DisplayName; } } public void SaveVCloudServer() { var existItem = SonopostUserDefinedSettings.Instance.ServerSetting.Servers.FirstOrDefault(x => x.Host == VCloudServerAddress && x.Port == VCloudServerPort && x.DisplayName == VCloudServerName); if (existItem != null) { SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer = existItem; } else { var serverInfo = new ServerInfoSetting(VCloudServerAddress, VCloudServerPort, false); SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer = serverInfo; SonopostUserDefinedSettings.Instance.ServerSetting.Servers.Add(serverInfo); } if (_liveVideoManager == null) { _liveVideoManager = AppManager.Instance.GetManager(); } var mainConfig = SonopostUserDefinedSettings.Instance.HardwareSetting.VideoDeviceInfoList.FirstOrDefault(x => x.Category == FISLiveChannelCategory.Main); if (mainConfig != null) { if (!string.IsNullOrWhiteSpace(mainConfig.Brand)) { var brandList = _liveVideoManager.GetBrandList(); if (brandList == null || brandList.Count == 0 || !brandList.Contains(mainConfig.Brand)) { mainConfig.Brand = null; mainConfig.Model = null; } else if (!string.IsNullOrWhiteSpace(mainConfig.Model)) { var modelList = _liveVideoManager.GetModelList(mainConfig.Brand); if (modelList == null || modelList.Count == 0 || !modelList.Contains(mainConfig.Model)) { mainConfig.Model = null; } } } } Save(); } private void InitServerConfig() { var defaultServer = SonopostUserDefinedSettings.Instance.ServerSetting.DefaultServer; VCloudServerAddress = defaultServer.Host; VCloudServerPort = defaultServer.Port; VCloudServerName = defaultServer.DisplayName; Logger.WriteLineInfo($"ConfigManager InitServerConfig:ServerAddress:{VCloudServerAddress},VCloudServerPort:{VCloudServerPort},VCloudServerName:{VCloudServerName}"); } } }