mirror of
https://github.com/cemu-project/DS4Windows.git
synced 2024-12-01 13:34:20 +01:00
75 lines
2.2 KiB
C#
75 lines
2.2 KiB
C#
|
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|