From 08e485d6d41d76d130273417c5d14af96977809e Mon Sep 17 00:00:00 2001 From: Yorick Rommers Date: Fri, 30 Oct 2015 20:33:23 +0100 Subject: [PATCH] Added base for playlists, puts files in dir and reads files from dir --- MusicPlayer/MusicPlayer/APIHandler.cs | 2 +- MusicPlayer/MusicPlayer/Main.cs | 5 ++- MusicPlayer/MusicPlayer/MainForm.Designer.cs | 2 +- MusicPlayer/MusicPlayer/MusicPlayer.csproj | 2 + MusicPlayer/MusicPlayer/Playlist.cs | 35 ++++++++++++++++ MusicPlayer/MusicPlayer/PlaylistHandler.cs | 43 ++++++++++++++++++++ MusicPlayer/MusicPlayer/Program.cs | 23 +---------- MusicPlayer/MusicPlayer/Song.cs | 5 +++ 8 files changed, 93 insertions(+), 24 deletions(-) create mode 100644 MusicPlayer/MusicPlayer/Playlist.cs create mode 100644 MusicPlayer/MusicPlayer/PlaylistHandler.cs diff --git a/MusicPlayer/MusicPlayer/APIHandler.cs b/MusicPlayer/MusicPlayer/APIHandler.cs index 145f02a..2a855c0 100755 --- a/MusicPlayer/MusicPlayer/APIHandler.cs +++ b/MusicPlayer/MusicPlayer/APIHandler.cs @@ -55,7 +55,7 @@ namespace MusicPlayer dynamic songs = o["songs"]; for (int i = 0; i < songs.Count; i++) { - allsongslist.Add(new Song(songs[i][0].ToString(), songs[i][3].ToString(), songs[i][5].ToString(), songs[i][4].ToString(), this)); + allsongslist.Add(new Song(songs[i][0].ToString(), songs[i][3].ToString(), songs[i][5].ToString(), songs[i][4].ToString(), songs[i][1].ToString(), (int)songs[i][9], this)); } } return allsongslist; diff --git a/MusicPlayer/MusicPlayer/Main.cs b/MusicPlayer/MusicPlayer/Main.cs index c1fc010..621a820 100755 --- a/MusicPlayer/MusicPlayer/Main.cs +++ b/MusicPlayer/MusicPlayer/Main.cs @@ -11,16 +11,18 @@ namespace MusicPlayer public APIHandler api; public MainForm form; public NetworkHandler nw; + public PlaylistHandler pl; public AudioHandler audio; private SongsTable table; - public Main(NetworkHandler nw, APIHandler api, MainForm form) + public Main(NetworkHandler nw, APIHandler api, MainForm form, PlaylistHandler pl) { this.nw = nw; this.api = api; this.form = form; form.main = this; + this.pl = pl; audio = new AudioHandler(); table = new SongsTable(); @@ -34,6 +36,7 @@ namespace MusicPlayer this.api.GetAlbums().ForEach(a => form.AlbumListView.Items.Add(a.albumnaam)); this.api.GetArtists().ForEach(a => form.ArtistListBox.Items.Add(a.naam)); this.api.GetGenres().ForEach(g => form.GenreListBox.Items.Add(g.name)); + this.pl.GetPlaylists().ForEach(p => form.PlaylistBox.Items.Add(p.name)); } public void ArtistFilter(string artist) diff --git a/MusicPlayer/MusicPlayer/MainForm.Designer.cs b/MusicPlayer/MusicPlayer/MainForm.Designer.cs index c70b9d7..bc28ba8 100644 --- a/MusicPlayer/MusicPlayer/MainForm.Designer.cs +++ b/MusicPlayer/MusicPlayer/MainForm.Designer.cs @@ -431,7 +431,7 @@ private System.Windows.Forms.Label GenreListLabel; private System.Windows.Forms.ToolStripMenuItem playlistsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem overviewToolStripMenuItem; - private System.Windows.Forms.ListBox PlaylistBox; + public System.Windows.Forms.ListBox PlaylistBox; private System.Windows.Forms.Label PlaylistListLabel; } } diff --git a/MusicPlayer/MusicPlayer/MusicPlayer.csproj b/MusicPlayer/MusicPlayer/MusicPlayer.csproj index 0f3f9af..1911bc7 100755 --- a/MusicPlayer/MusicPlayer/MusicPlayer.csproj +++ b/MusicPlayer/MusicPlayer/MusicPlayer.csproj @@ -73,6 +73,8 @@ NotificationPopup.cs + + diff --git a/MusicPlayer/MusicPlayer/Playlist.cs b/MusicPlayer/MusicPlayer/Playlist.cs new file mode 100644 index 0000000..303d2ba --- /dev/null +++ b/MusicPlayer/MusicPlayer/Playlist.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.IO; + +namespace MusicPlayer +{ + public class Playlist + { + public string name { get; } + private string basedir; + public List songs; + public Playlist(string name, string basedir) + { + this.songs = new List(); + this.name = name; + this.basedir = basedir; + } + + public void AddSong(Song s) + { + this.songs.Add(s); + } + + public void WriteToFile() + { + using (StreamWriter stw = new StreamWriter(basedir + name + ".txt")) + { + this.songs.ForEach(s => + { + stw.WriteLine(s.ToString()); + }); + } + } + } +} \ No newline at end of file diff --git a/MusicPlayer/MusicPlayer/PlaylistHandler.cs b/MusicPlayer/MusicPlayer/PlaylistHandler.cs new file mode 100644 index 0000000..e0f3450 --- /dev/null +++ b/MusicPlayer/MusicPlayer/PlaylistHandler.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace MusicPlayer +{ + public class PlaylistHandler + { + private List playlists; + private readonly string basedir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\.mpplaylists\\"; + public PlaylistHandler() + { + this.playlists = new List(); + Populate(); + } + + private void Populate() + { + try { + Directory.GetFiles(basedir).ToList().ForEach(f => + { + if (f.EndsWith(".txt")) + { + playlists.Add(new Playlist(Path.GetFileName(f.Replace(".txt","")) ,basedir)); + } + }); + } + catch (DirectoryNotFoundException) + { + Directory.CreateDirectory(basedir); + Populate(); + } + + + } + + public List GetPlaylists() + { + return playlists; + } + } +} \ No newline at end of file diff --git a/MusicPlayer/MusicPlayer/Program.cs b/MusicPlayer/MusicPlayer/Program.cs index 173d7ff..eaf250f 100755 --- a/MusicPlayer/MusicPlayer/Program.cs +++ b/MusicPlayer/MusicPlayer/Program.cs @@ -19,28 +19,9 @@ namespace MusicPlayer NetworkHandler nw = new NetworkHandler("http://www.imegumii.nl"); APIHandler api = new APIHandler(nw); -// api.GetSongsByArtist("Amon Amarth").ForEach(s => -// { -// Console.WriteLine(s.SongID); -// }); -// api.GetSongsByYear("2009").ForEach(s => -// { -// Console.WriteLine(s.Name); -// }); -// api.GetSongsByGenre("Melodic Death Metal").ForEach(s => -// { -// Console.WriteLine(s.Name); -// }); -// api.GetSongsByAlbum("Stronger").ForEach(s => -// { -// Console.WriteLine(s.Name); -// }); - api.GetAllSongs().ForEach(s => - { - Console.WriteLine(s.Name); - }); MainForm form = new MainForm(); - new Main(nw, api, form); + PlaylistHandler pl = new PlaylistHandler(); + new Main(nw, api, form,pl); Application.Run(form); } diff --git a/MusicPlayer/MusicPlayer/Song.cs b/MusicPlayer/MusicPlayer/Song.cs index 18a3bf4..aa8a637 100755 --- a/MusicPlayer/MusicPlayer/Song.cs +++ b/MusicPlayer/MusicPlayer/Song.cs @@ -48,5 +48,10 @@ namespace MusicPlayer { url = str; } + + public override string ToString() + { + return $"{this.SongID}|{this.Name}|{this.Album}|{this.Artist}|{this.Seconds}|{this.Genre}"; + } } }