12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Runtime.CompilerServices;
- using InABox.Core;
- namespace InABox.Core
- {
- public class DFLayoutEmbeddedMediaValues : IEnumerable<DFLayoutEmbeddedMediaValue>, INotifyPropertyChanged
- {
- private readonly List<DFLayoutEmbeddedMediaValue> _values = new List<DFLayoutEmbeddedMediaValue>();
- public DFLayoutEmbeddedMediaValue[] Values => _values.ToArray();
- public List<byte[]> AsByteArrays
- {
- get => _values.Select(x => x?.Data).OfType<byte[]>().ToList();
- set
- {
- _values.Clear();
- foreach (var bytes in value)
- _values.Add(new DFLayoutEmbeddedMediaValue() { ID = Guid.Empty, Data = bytes});
- OnPropertyChanged(nameof(Values));
- }
- }
-
- public void Load(String serialized)
- {
- _values.Clear();
- List<string> values = Serialization.Deserialize<List<string>>(serialized) ?? new List<string>();
- foreach (string s in values)
- {
- if (!String.IsNullOrWhiteSpace(s))
- {
- var externaldata = Serialization.Deserialize<(Guid, byte[])>(s);
- if (externaldata.Item1 != Guid.Empty)
- {
- _values.Add(new DFLayoutEmbeddedMediaValue()
- {
- ID = externaldata.Item1,
- Thumbnail = externaldata.Item2
- });
- }
- }
- }
- }
- public override String ToString()
- {
- List<String> results = new List<string>();
- foreach (var value in _values)
- results.Add(value.ToString());
- return Serialization.Serialize(results);
- }
-
- public IEnumerator<DFLayoutEmbeddedMediaValue> GetEnumerator() => _values.GetEnumerator();
- IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
- public void Add(DFLayoutEmbeddedMediaValue value)
- {
- _values.Add(value);
- OnPropertyChanged(nameof(Values));
- }
- public void Remove(DFLayoutEmbeddedMediaValue value)
- {
- if (_values.Contains(value))
- {
- _values.Remove(value);
- OnPropertyChanged(nameof(Values));
- }
- }
- public void Clear()
- {
- _values.Clear();
- OnPropertyChanged(nameof(Values));
- }
- public event PropertyChangedEventHandler? PropertyChanged;
- protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
- protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = "")
- {
- if (EqualityComparer<T>.Default.Equals(field, value)) return false;
- field = value;
- OnPropertyChanged(propertyName);
- return true;
- }
- }
- }
|