cemu-DS4Windows/DS4Windows/ProfileList.cs

75 lines
2.2 KiB
C#
Raw Normal View History

2019-12-18 22:33:23 +01:00
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<ProfileEntity> profileListCol =
new ObservableCollection<ProfileEntity>();
public ObservableCollection<ProfileEntity> 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);
}
}
}
}