mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-08-18 13:31:41 +02:00
.github
Application
Browser
Configuration
Controls
Dialogs
Management
Plugins
Properties
Resources
Updates
Utils
bld
lib
TweetLib.Communication
TweetLib.Core
Application
Browser
Collections
Data
Features
Serialization
Systems
Configuration
BaseConfig.cs
FileConfigInstance.cs
IConfigInstance.cs
IConfigManager.cs
Startup
Updates
Utils
App.cs
Lib.cs
TweetLib.Core.csproj
TweetTest.System
TweetTest.Unit
subprocess
video
.gitattributes
.gitignore
LICENSE.md
Program.cs
README.md
Reporter.cs
TweetDuck.csproj
TweetDuck.sln
TweetDuck.sln.DotSettings
Version.cs
packages.config
51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace TweetLib.Core.Systems.Configuration{
|
|
public abstract class BaseConfig{
|
|
private readonly IConfigManager configManager;
|
|
|
|
protected BaseConfig(IConfigManager configManager){
|
|
this.configManager = configManager;
|
|
}
|
|
|
|
// Management
|
|
|
|
public void Save(){
|
|
configManager.GetInstanceInfo(this).Save();
|
|
}
|
|
|
|
public void Reload(){
|
|
configManager.GetInstanceInfo(this).Reload();
|
|
}
|
|
|
|
public void Reset(){
|
|
configManager.GetInstanceInfo(this).Reset();
|
|
}
|
|
|
|
// Construction methods
|
|
|
|
public T ConstructWithDefaults<T>() where T : BaseConfig{
|
|
return (T)ConstructWithDefaults(configManager);
|
|
}
|
|
|
|
protected abstract BaseConfig ConstructWithDefaults(IConfigManager configManager);
|
|
|
|
// Utility methods
|
|
|
|
protected void UpdatePropertyWithEvent<T>(ref T field, T value, EventHandler eventHandler){
|
|
if (!EqualityComparer<T>.Default.Equals(field, value)){
|
|
field = value;
|
|
eventHandler?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
|
|
protected void UpdatePropertyWithRestartRequest<T>(ref T field, T value){
|
|
if (!EqualityComparer<T>.Default.Equals(field, value)){
|
|
field = value;
|
|
configManager.TriggerProgramRestartRequested();
|
|
}
|
|
}
|
|
}
|
|
}
|