mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-06-01 20:34:07 +02:00
Update SystemConfig to use FileSerializer and migrate old files
This commit is contained in:
parent
894b890fe5
commit
93c1cbd231
@ -1,43 +1,40 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using TweetDuck.Core.Utils;
|
using TweetDuck.Core.Utils;
|
||||||
|
using TweetDuck.Data.Serialization;
|
||||||
|
|
||||||
namespace TweetDuck.Configuration{
|
namespace TweetDuck.Configuration{
|
||||||
sealed class SystemConfig{
|
sealed class SystemConfig{
|
||||||
|
private static readonly FileSerializer<SystemConfig> Serializer = new FileSerializer<SystemConfig>{
|
||||||
|
OnReadUnknownProperty = (obj, property, value) => false
|
||||||
|
};
|
||||||
|
|
||||||
public static readonly bool IsHardwareAccelerationSupported = File.Exists(Path.Combine(Program.ProgramPath, "libEGL.dll")) &&
|
public static readonly bool IsHardwareAccelerationSupported = File.Exists(Path.Combine(Program.ProgramPath, "libEGL.dll")) &&
|
||||||
File.Exists(Path.Combine(Program.ProgramPath, "libGLESv2.dll"));
|
File.Exists(Path.Combine(Program.ProgramPath, "libGLESv2.dll"));
|
||||||
|
|
||||||
|
// CONFIGURATION DATA
|
||||||
|
|
||||||
|
private bool _hardwareAcceleration = true;
|
||||||
|
|
||||||
|
// SPECIAL PROPERTIES
|
||||||
|
|
||||||
public bool HardwareAcceleration{
|
public bool HardwareAcceleration{
|
||||||
get => hardwareAcceleration && IsHardwareAccelerationSupported;
|
get => _hardwareAcceleration && IsHardwareAccelerationSupported;
|
||||||
set => hardwareAcceleration = value;
|
set => _hardwareAcceleration = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly string file;
|
// END OF CONFIG
|
||||||
|
|
||||||
private bool hardwareAcceleration;
|
private readonly string file;
|
||||||
|
|
||||||
private SystemConfig(string file){
|
private SystemConfig(string file){
|
||||||
this.file = file;
|
this.file = file;
|
||||||
|
|
||||||
HardwareAcceleration = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void WriteToStream(Stream stream){
|
|
||||||
stream.WriteByte((byte)(HardwareAcceleration ? 1 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ReadFromStream(Stream stream){
|
|
||||||
HardwareAcceleration = stream.ReadByte() > 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Save(){
|
public bool Save(){
|
||||||
try{
|
try{
|
||||||
WindowsUtils.CreateDirectoryForFile(file);
|
WindowsUtils.CreateDirectoryForFile(file);
|
||||||
|
Serializer.Write(file, this);
|
||||||
using(Stream stream = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.None)){
|
|
||||||
WriteToStream(stream);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
Program.Reporter.HandleException("Configuration Error", "Could not save the system configuration file.", true, e);
|
Program.Reporter.HandleException("Configuration Error", "Could not save the system configuration file.", true, e);
|
||||||
@ -49,11 +46,20 @@ public static SystemConfig Load(string file){
|
|||||||
SystemConfig config = new SystemConfig(file);
|
SystemConfig config = new SystemConfig(file);
|
||||||
|
|
||||||
try{
|
try{
|
||||||
using(Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)){
|
Serializer.Read(file, config);
|
||||||
config.ReadFromStream(stream);
|
return config;
|
||||||
}
|
|
||||||
}catch(FileNotFoundException){
|
}catch(FileNotFoundException){
|
||||||
}catch(DirectoryNotFoundException){
|
}catch(DirectoryNotFoundException){
|
||||||
|
}catch(FormatException){
|
||||||
|
try{
|
||||||
|
using(Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read)){
|
||||||
|
config.HardwareAcceleration = stream.ReadByte() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
config.Save();
|
||||||
|
}catch(Exception e){
|
||||||
|
Program.Reporter.HandleException("Configuration Error", "Could not update the system configuration file.", true, e);
|
||||||
|
}
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
Program.Reporter.HandleException("Configuration Error", "Could not open the system configuration file. If you continue, you will lose system specific configuration such as Hardware Acceleration.", true, e);
|
Program.Reporter.HandleException("Configuration Error", "Could not open the system configuration file. If you continue, you will lose system specific configuration such as Hardware Acceleration.", true, e);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user