using BililiveRecorder.FlvProcessor;
using Newtonsoft.Json;
using NLog;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace BililiveRecorder.Core.Config
{
[JsonObject(memberSerialization: MemberSerialization.OptIn)]
public class ConfigV1 : INotifyPropertyChanged
{
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
///
/// 当前工作目录
///
[JsonIgnore]
[Utils.DoNotCopyProperty]
public string WorkDirectory { get; set; }
///
/// 房间号列表
///
[JsonProperty("roomlist")]
public List RoomList { get; set; } = new List();
///
/// 启用的功能
///
[JsonProperty("feature")]
public EnabledFeature EnabledFeature { get => _enabledFeature; set => SetField(ref _enabledFeature, value); }
///
/// 剪辑-过去的时长(秒)
///
[JsonProperty("clip_length_future")]
public uint ClipLengthFuture { get => _clipLengthFuture; set => SetField(ref _clipLengthFuture, value); }
///
/// 剪辑-将来的时长(秒)
///
[JsonProperty("clip_length_past")]
public uint ClipLengthPast { get => _clipLengthPast; set => SetField(ref _clipLengthPast, value); }
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
protected bool SetField(ref T field, T value, [CallerMemberName] string propertyName = "")
{
if (EqualityComparer.Default.Equals(field, value)) { return false; }
logger.Debug("设置 [{0}] 的值已从 [{1}] 修改到 [{2}]", propertyName, field, value);
field = value; OnPropertyChanged(propertyName); return true;
}
#endregion
private uint _clipLengthPast = 20;
private uint _clipLengthFuture = 10;
private EnabledFeature _enabledFeature = EnabledFeature.Both;
}
}