using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace Tango.Settings
{
///
/// Represents a settings object base class.
///
public abstract class SettingsBase : INotifyPropertyChanged
{
internal Action SaveAction { get; set; }
///
/// Saves settings.
///
/// This settings instance is not registered with any settings manager.
public virtual void Save()
{
if (SaveAction == null)
{
throw new InvalidOperationException("This settings instance is not registered with any settings manager.");
}
SaveAction();
}
///
/// Occurs when a property value changes.
///
public event PropertyChangedEventHandler PropertyChanged;
///
/// Raises the property changed event.
///
/// Name of the property.
protected virtual void RaisePropertyChanged(String propName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName));
}
///
/// Raises the property changed event.
///
/// Name of the property.
protected virtual void RaisePropertyChangedAuto([CallerMemberName] string caller = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(caller));
}
}
}