Added PageContainer to dynamically load pages within the main content. Added player component to control music playback(Half functional). Added playback changed event not the player service.
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Collections.ObjectModel;
 | |
| using System.IO;
 | |
| using Aurora.Backend.Models;
 | |
| using Aurora.Backend.Utils;
 | |
| 
 | |
| namespace Aurora.Backend.Services
 | |
| {
 | |
|     public class LibraryService : BaseService<LibraryService>
 | |
|     {
 | |
|         #region Fields
 | |
|         private string _pathName = "/Users/brandonwatson/Music/iTunes/iTunes Media/Music";
 | |
|         private string _extensions = ".wav,.mp3,.aiff,.flac,.m4a,.m4b,.wma";
 | |
|         private Dictionary<string, BaseMedia> _library;
 | |
| 
 | |
| 
 | |
|         #endregion Fields
 | |
| 
 | |
|         public LibraryService()
 | |
|         {
 | |
|             _library = new Dictionary<string, BaseMedia>();
 | |
|             LoadLibrary();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the songs.
 | |
|         /// </summary>
 | |
|         /// <returns>The songs.</returns>
 | |
|         public ObservableCollection<BaseMedia> GetLibrary()
 | |
|         {
 | |
|             ObservableCollection<BaseMedia> collection = new ObservableCollection<BaseMedia>();
 | |
|             foreach (KeyValuePair<string, BaseMedia> pair in _library)
 | |
|             {
 | |
|                 collection.Add(pair.Value);
 | |
|             }
 | |
| 
 | |
|             return collection;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Loads library from files.
 | |
|         /// </summary>
 | |
|         private void LoadLibrary()
 | |
|         {
 | |
|             //Get songs
 | |
|             List<FileInfo> musicFiles = FileSystemUtils.TraverseFoldersAsync(_pathName, _extensions);
 | |
| 
 | |
|             foreach (FileInfo file in musicFiles)
 | |
|             {
 | |
|                 TagLib.File tagFile = TagLib.File.Create(file.FullName);
 | |
| 
 | |
|                 BaseMedia song = new LocalAudio(file)
 | |
|                 {
 | |
|                     Title = tagFile.Tag.Title,
 | |
|                     Album = tagFile.Tag.Album,
 | |
|                     Artist = tagFile.Tag.FirstAlbumArtist
 | |
|                 };
 | |
| 
 | |
|                 _library.Add(song.Id, song);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |