using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Data; namespace DS4WinWPF { public class ProfileList { private object _proLockobj = new object(); private ObservableCollection profileListCol = new ObservableCollection(); public ObservableCollection ProfileListCol { get => profileListCol; set => profileListCol = value; } public ProfileList() { BindingOperations.EnableCollectionSynchronization(profileListCol, _proLockobj); } public void Refresh() { profileListCol.Clear(); string[] profiles = Directory.GetFiles(DS4Windows.Global.appdatapath + @"\Profiles\"); foreach (string s in profiles) { if (s.EndsWith(".xml")) { ProfileEntity item = new ProfileEntity() { Name = Path.GetFileNameWithoutExtension(s) }; profileListCol.Add(item); } } } public void AddProfileSort(string profilename) { int idx = 0; bool inserted = false; foreach (ProfileEntity entry in profileListCol) { if (entry.Name.CompareTo(profilename) > 0) { profileListCol.Insert(idx, new ProfileEntity() { Name = profilename }); inserted = true; break; } idx++; } if (!inserted) { profileListCol.Add(new ProfileEntity() { Name = profilename }); } } public void RemoveProfile(string profile) { var selectedEntity = profileListCol.SingleOrDefault(x => x.Name == profile); if (selectedEntity != null) { int selectedIndex = profileListCol.IndexOf(selectedEntity); profileListCol.RemoveAt(selectedIndex); } } } }