using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using Aurora.Frontend.Utils; namespace Aurora.Frontend.Views.Songs { public class SongsViewModel : BaseViewModel { #region Fields private string _pathName = "/Users/brandonwatson/Music/iTunes/iTunes Media/Music"; private string _extensions = ".wav,.mp3,.aiff,.flac,.m4a,.m4b,.wma"; private ObservableCollection _songsList; private Song _selectedSong; #endregion Fields #region Constructor public SongsViewModel() { _songsList = new ObservableCollection(); Initialize(); } #endregion Constructor #region Properties public ObservableCollection SongsList { get { return _songsList; } set { if (value != _songsList) { _songsList = value; OnPropertyChanged("SongList"); } } } public Song SelectedSong { get { return _selectedSong; } set { if (value != _selectedSong) { _selectedSong = value; OnPropertyChanged("SelectedSong"); } } } #endregion Properties #region Methods public void Initialize() { List musicFiles = FileSystemUtils.TraverseFoldersAsync(_pathName, _extensions); foreach (FileInfo file in musicFiles) { TagLib.File tagFile = TagLib.File.Create(file.FullName); _songsList.Add(new Song() { Title = tagFile.Tag.Title, Album = tagFile.Tag.Album, Artist = tagFile.Tag.FirstAlbumArtist }); } } #endregion Methods } }