using System.ComponentModel;
using System.Xml.Serialization;

namespace MusicMetaTagger.UI
{
	public class LibraryUpdate
	{
		private bool _findCompilationTrackOrigins = true;
		private bool _genreUpdate = true;
		private bool _ratingOverwrite;
		private bool _ratingUpdate = true;
		private bool _yearUpdate = true;

		[Category("Field Options")]
		[Browsable(true)]
		[Description("Update blank ratings fields")]
		[DefaultValue(true)]
		[XmlAttribute]
		public bool RatingUpdate
		{
			get { return _ratingUpdate; }
			set
			{
				_ratingUpdate = value;
				if (!value)
					_ratingOverwrite = false;
			}
		}

		[Category("Field Options")]
		[Browsable(true)]
		[Description("Overwrite existing ratings")]
		[DefaultValue(false)]
		[XmlAttribute]
		public bool RatingOverwrite
		{
			get { return _ratingOverwrite; }
			set
			{
				_ratingOverwrite = value;
				if (value)
					_ratingUpdate = true;
			}
		}

		[Category("General")]
		[Browsable(true)]
		[Description("Try to find the original album on which a compilation track appears.")]
		[DefaultValue(true)]
		[XmlAttribute]
		public bool FindCompilationTrackOrigins
		{
			get { return _findCompilationTrackOrigins; }
			set { _findCompilationTrackOrigins = value; }
		}

		//[Category("General")]
		//[Browsable(true)]
		//[Description("As well as updating the library, also updates the underlying .MP3 file ID3 fields")]
		//[DefaultValue(true)]
		//[XmlAttribute]
		//public bool UpdateMp3Id3
		//{
		//    get { return _updateMp3Id3; }
		//    set { _updateMp3Id3 = value; }
		//}

		[Category("Field Options")]
		[Browsable(true)]
		[Description("Overwrite any existing album art")]
		[DefaultValue(false)]
		[XmlAttribute]
		public bool AlbumArtOverwrite { get; set; }

		[Category("Field Options")]
		[Browsable(true)]
		[Description("Update the year field")]
		[DefaultValue(true)]
		[XmlAttribute]
		public bool YearUpdate
		{
			get { return _yearUpdate; }
			set { _yearUpdate = value; }
		}

		[Category("Field Options")]
		[Browsable(true)]
		[Description("Overwrite any existing year value.")]
		[DefaultValue(false)]
		[XmlAttribute]
		public bool YearOverwrite { get; set; }

		[Category("Field Options")]
		[Browsable(true)]
		[Description("Update the genre field")]
		[DefaultValue(true)]
		[XmlAttribute]
		public bool GenreUpdate
		{
			get { return _genreUpdate; }
			set { _genreUpdate = value; }
		}

		[Category("Field Options")]
		[Browsable(true)]
		[Description("Overwrite any existing genre value.")]
		[DefaultValue(false)]
		[XmlAttribute]
		public bool GenreOverwrite { get; set; }
	}
}