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}");
}
}
}