Files
mpv.net/src/MpvNet/Settings.cs
2024-01-03 06:39:25 +01:00

64 lines
1.7 KiB
C#

using System.Text;
using System.Xml.Serialization;
using System.Xml;
using System.Drawing;
namespace MpvNet;
[Serializable()]
public class AppSettings
{
public bool InputDefaultBindingsFixApplied;
public bool ShowMenuFixApplied;
public int MenuUpdateVersion;
public int Volume = 70;
public List<string> RecentFiles = new List<string>();
public Point WindowLocation;
public Point WindowPosition;
public Size WindowSize;
public string AudioDevice = "";
public string ConfigEditorSearch = "Video:";
public string Mute = "no";
public string StartupFolder = "";
}
class SettingsManager
{
public static string SettingsFile => Player.ConfigFolder + "settings.xml";
public static AppSettings Load()
{
if (!File.Exists(SettingsFile))
return new AppSettings();
try
{
XmlSerializer serializer = new XmlSerializer(typeof(AppSettings));
using FileStream fs = new FileStream(SettingsFile, FileMode.Open);
return (AppSettings)serializer.Deserialize(fs)!;
}
catch (Exception ex)
{
Terminal.WriteError(ex.ToString());
return new AppSettings();
}
}
public static void Save(object obj)
{
try
{
using XmlTextWriter writer = new XmlTextWriter(SettingsFile, Encoding.UTF8);
writer.Formatting = Formatting.Indented;
writer.Indentation = 4;
XmlSerializer serializer = new XmlSerializer(obj.GetType());
serializer.Serialize(writer, obj);
}
catch (Exception ex)
{
Terminal.WriteError(ex.ToString());
}
}
}