Spring – Rev 1

Subversion Repositories:
Rev:
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Xml.Serialization;
using Configuration.Properties;

namespace Configuration
{
    [XmlRoot(ElementName = "Charge")]
    public class Charge : INotifyPropertyChanged
    {
#region Public Events & Delegates

        public event PropertyChangedEventHandler PropertyChanged;

#endregion

#region Public Enums, Properties and Fields

        [XmlElement(ElementName = "Keyboard")]
        public bool Keyboard
        {
            get => _keyboard;
            set
            {
                if (value == _keyboard)
                {
                    return;
                }

                _keyboard = value;
                OnPropertyChanged();
            }
        }

        [XmlElement(ElementName = "MouseMove")]
        public bool MouseMove
        {
            get => _mouseMove;
            set
            {
                if (value == _mouseMove)
                {
                    return;
                }

                _mouseMove = value;
                OnPropertyChanged();
            }
        }

        [XmlElement(ElementName = "MouseClick")]
        public bool MouseClick
        {
            get => _mouseClick;
            set
            {
                if (value == _mouseClick)
                {
                    return;
                }

                _mouseClick = value;
                OnPropertyChanged();
            }
        }

        [XmlElement(ElementName = "ChargeSeconds")]
        public int ChargeSeconds
        {
            get => _chargeSeconds;
            set
            {
                if (value == _chargeSeconds)
                {
                    return;
                }

                _chargeSeconds = value;
                OnPropertyChanged();
            }
        }

        [XmlElement(ElementName = "MaximumRepeats")]
        public int MaximumRepeats
        {
            get => _maximumRepeats;
            set
            {
                if (value == _maximumRepeats)
                {
                    return;
                }

                _maximumRepeats = value;
                OnPropertyChanged();
            }
        }

#endregion

#region Private Delegates, Events, Enums, Properties, Indexers and Fields

        private int _chargeSeconds = 2;

        private bool _keyboard = true;

        private int _maximumRepeats = 5;

        private bool _mouseClick;

        private bool _mouseMove;

#endregion

#region Constructors, Destructors and Finalizers

        [UsedImplicitly]
        public Charge()
        {
        }

#endregion

#region Private Methods

        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

#endregion
    }
}