diff --git a/MusicPlayer/App.config b/MusicPlayer/App.config index 8ca71ad..0cacbc4 100644 --- a/MusicPlayer/App.config +++ b/MusicPlayer/App.config @@ -1,6 +1,11 @@  + + +
+ + @@ -12,4 +17,14 @@ + + + + + + + blue + + + \ No newline at end of file diff --git a/MusicPlayer/Audioquarium.csproj b/MusicPlayer/Audioquarium.csproj index 05feafc..921b239 100644 --- a/MusicPlayer/Audioquarium.csproj +++ b/MusicPlayer/Audioquarium.csproj @@ -64,7 +64,6 @@ - @@ -95,7 +94,6 @@ App.xaml Code - diff --git a/MusicPlayer/Cfg.cs b/MusicPlayer/Cfg.cs deleted file mode 100644 index 4380e12..0000000 --- a/MusicPlayer/Cfg.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace Audioquarium -{ - internal class Cfg - { - public static Dictionary ConfigFile; - - #region cfg Loading and Saving - - public static void SetVariable(string varName, string varValue, ref Dictionary configDict) - { - if (configDict.ContainsKey(varName)) - configDict[varName] = varValue; - else - configDict.Add(varName, varValue); - } - - public static bool SaveConfigFile(string cfgFileName, Dictionary configDict) - { - try - { - if (File.Exists(cfgFileName)) - File.Delete(cfgFileName); - - File.WriteAllLines(cfgFileName, configDict.Select(kvp => kvp.Key + " \"" + kvp.Value + "\"").ToArray()); - return true; - } - catch - { - return false; - } - } - - private static bool LoadConfigFile(string cfgFileName, ref Dictionary returnDict) - { - if (returnDict == null) - returnDict = new Dictionary(); - if (!File.Exists(cfgFileName)) - return false; - - var lines = File.ReadAllLines(cfgFileName); - foreach (var line in lines) - { - var splitIdx = line.IndexOf(" ", StringComparison.Ordinal); - if (splitIdx < 0 || splitIdx + 1 >= line.Length) - continue; // line isn't valid? - var varName = line.Substring(0, splitIdx); - var varValue = line.Substring(splitIdx + 1); - - // remove quotes - if (varValue.StartsWith("\"")) - varValue = varValue.Substring(1); - if (varValue.EndsWith("\"")) - varValue = varValue.Substring(0, varValue.Length - 1); - - SetVariable(varName, varValue, ref returnDict); - } - return true; - } - - public static void Initial(bool error) - { - var cfgFileExists = LoadConfigFile("music_prefs.cfg", ref ConfigFile); - - if (!cfgFileExists) - { - SetVariable("Player.Color", "blue", ref ConfigFile); - SetVariable("Music.Directory1", "", ref ConfigFile); - Console.WriteLine(@"New CFG Created"); - } - SaveConfigFile("music_prefs.cfg", ConfigFile); - } - - #endregion - } -} \ No newline at end of file diff --git a/MusicPlayer/Itemsource.cs b/MusicPlayer/Itemsource.cs index 9bf9d5a..6de233f 100644 --- a/MusicPlayer/Itemsource.cs +++ b/MusicPlayer/Itemsource.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; +using System.Linq; using File = TagLib.File; namespace Audioquarium @@ -9,80 +10,42 @@ namespace Audioquarium internal class Itemsource { public static readonly List SongLibrary = new List(); + private static readonly string[] Filetypes = { "*.mp3", "*.wav", "*.aac", "*.flac", "*.wma" }; + private static string _songName; + private static string _songArtist; - public static void LoadSongs(string path) + public static int LoadSongs(string path) { var watch = new Stopwatch(); watch.Start(); SongLibrary?.Clear(); - var filetypes = new[] {"*.mp3", "*.wav", "*.aac", "*.flac", "*.wma"}; var songCount = 0; - var files = new List(); - foreach (var t in filetypes) + foreach (var t in Filetypes) files.AddRange(GetFiles(path, t)); foreach (var file in files) { try { - var tagFile = File.Create(file); + File tagFile = File.Create(file); - if (tagFile.Tag.Title == null) - { - SongLibrary?.Add(new Songs - { - Name = Path.GetFileNameWithoutExtension(file), - Artist = tagFile.Tag.FirstAlbumArtist, - Album = tagFile.Tag.Album, - Length = tagFile.Properties.Duration.ToString(@"mm\:ss"), - Track = tagFile.Tag.Track.ToString(), - FileName = tagFile.Name, - AltName = Path.GetFileNameWithoutExtension(file) - }); - } - else if (tagFile.Tag.FirstAlbumArtist == null) - { - SongLibrary?.Add(new Songs - { - Name = Path.GetFileNameWithoutExtension(file), - Artist = tagFile.Tag.Performers[0], - Album = tagFile.Tag.Album, - Length = tagFile.Properties.Duration.ToString(@"mm\:ss"), - Track = tagFile.Tag.Track.ToString(), - FileName = tagFile.Name, - AltName = Path.GetFileNameWithoutExtension(file) - }); - } - else if (tagFile.Tag.FirstAlbumArtist == null && tagFile.Tag.Title == null) - { - SongLibrary?.Add(new Songs - { - Name = Path.GetFileNameWithoutExtension(file), - Artist = tagFile.Tag.Performers[0], - Album = tagFile.Tag.Album, - Length = tagFile.Properties.Duration.ToString(@"mm\:ss"), - Track = tagFile.Tag.Track.ToString(), - FileName = tagFile.Name, - AltName = Path.GetFileNameWithoutExtension(file) - }); - } - else + _songName = tagFile.Tag.Title ?? Path.GetFileNameWithoutExtension(file); + _songArtist = tagFile.Tag.FirstAlbumArtist ?? tagFile.Tag.Performers[0]; + + SongLibrary?.Add(new Songs { - SongLibrary?.Add(new Songs - { - Name = tagFile.Tag.Title, - Artist = tagFile.Tag.FirstAlbumArtist, - Album = tagFile.Tag.Album, - Length = tagFile.Properties.Duration.ToString(@"mm\:ss"), - Track = tagFile.Tag.Track.ToString(), - FileName = tagFile.Name, - AltName = Path.GetFileNameWithoutExtension(file) - }); - } + Name = _songName, + Artist = _songArtist, + Album = tagFile.Tag.Album, + Length = tagFile.Properties.Duration.ToString(@"mm\:ss"), + Track = tagFile.Tag.Track.ToString(), + FileName = tagFile.Name, + AltName = Path.GetFileNameWithoutExtension(file) + }); songCount++; } catch @@ -93,15 +56,23 @@ public static void LoadSongs(string path) watch.Stop(); Console.WriteLine(songCount + @" songs loaded in " + watch.ElapsedMilliseconds + @" milliseconds"); + return songCount; } private static List GetFiles(string path, string pattern) { var files = new List(); - files.AddRange(Directory.GetFiles(path, pattern, SearchOption.TopDirectoryOnly)); - foreach (var directory in Directory.GetDirectories(path)) - files.AddRange(GetFiles(directory, pattern)); + try + { + files.AddRange(Directory.GetFiles(path, pattern, SearchOption.TopDirectoryOnly)); + foreach (var directory in Directory.GetDirectories(path)) + files.AddRange(GetFiles(directory, pattern)); + } + catch + { + Console.WriteLine(@"Music directory is unable to be read. File access issue?"); + } return files; } diff --git a/MusicPlayer/MainWindow.xaml b/MusicPlayer/MainWindow.xaml index 424ab03..eeef448 100644 --- a/MusicPlayer/MainWindow.xaml +++ b/MusicPlayer/MainWindow.xaml @@ -1,9 +1,9 @@  + xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" AllowsTransparency="True" + xmlns:local="clr-namespace:Audioquarium" ResizeMode="CanMinimize" Closed="MainWindow_OnClosed" + Title="Audioquarium" Height="549" MinHeight="80" MinWidth="185" Width="900"> @@ -97,7 +97,7 @@ - + @@ -106,7 +106,7 @@ - +