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