diff --git a/MusicPlayer/MusicPlayer/APIHandler.cs b/MusicPlayer/MusicPlayer/APIHandler.cs index cc2dc1f..a6baa0e 100644 --- a/MusicPlayer/MusicPlayer/APIHandler.cs +++ b/MusicPlayer/MusicPlayer/APIHandler.cs @@ -13,10 +13,11 @@ namespace MusicPlayer public class APIHandler { private NetworkHandler nw; - + private Image defaultCover; public APIHandler(NetworkHandler nw) { this.nw = nw; + defaultCover = Image.FromStream(nw.downloadArtwork("default-cover.png")); } public string GetSongURLByID(string id) @@ -94,26 +95,26 @@ namespace MusicPlayer return artistlist; } + public Image getAlbumCover(string album) + { + MemoryStream stream = nw.downloadArtwork(album + ".jpg"); + if(stream != null) + { + return Image.FromStream(stream); + } + return defaultCover; + } + public List GetAlbums() { List albumlist = new List(); - return albumlist; - Image def = Image.FromStream(nw.downloadArtwork("default-cover.png")); JObject o = nw.SendString("getalbums?id=hallo"); if (o["result"].ToString() == "OK") { for (int i = 0; i < o["albums"].Count(); i++) { - MemoryStream stream = nw.downloadArtwork(o["albums"][i][0].ToString() + ".jpg"); - if (stream != null) { - albumlist.Add(new Album(o["albums"][i][0].ToString(), Image.FromStream(stream))); - stream.Close(); - } - else - { - albumlist.Add(new Album(o["albums"][i][0].ToString(), def)); - } + albumlist.Add(new Album(o["albums"][i][0].ToString())); } } diff --git a/MusicPlayer/MusicPlayer/Album.cs b/MusicPlayer/MusicPlayer/Album.cs index 4d0103e..e4d3329 100644 --- a/MusicPlayer/MusicPlayer/Album.cs +++ b/MusicPlayer/MusicPlayer/Album.cs @@ -6,12 +6,10 @@ namespace MusicPlayer public class Album { public string albumnaam { get; set; } - public Image cover; - public Album(string albumnaam, Image c) + public Album(string albumnaam) { this.albumnaam = albumnaam; - this.cover = c; } } } \ No newline at end of file diff --git a/MusicPlayer/MusicPlayer/Main.cs b/MusicPlayer/MusicPlayer/Main.cs index 55feae8..de12f9c 100644 --- a/MusicPlayer/MusicPlayer/Main.cs +++ b/MusicPlayer/MusicPlayer/Main.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -16,8 +17,7 @@ namespace MusicPlayer public AudioHandler audio; public SongsTable table; - private ImageList imagelist; - + private List genres; private List artists; @@ -33,7 +33,6 @@ namespace MusicPlayer audio = new AudioHandler(this); table = new SongsTable(); - imagelist = new ImageList(); form.SongsTableView.DataSource = table; form.SongsTableView.Columns[5].Visible = false; @@ -47,11 +46,34 @@ namespace MusicPlayer private void Populate() { - form.AlbumListView.LargeImageList = imagelist; - this.api.GetAlbums().ForEach(a => { var item = form.AlbumListView.Items.Add(a.albumnaam); imagelist.Images.Add(a.albumnaam, a.cover); item.ImageKey = a.albumnaam;}); + this.api.GetAlbums().ForEach(a => { form.AlbumListView.Items.Add(a.albumnaam);}); this.api.GetArtists().ForEach(a => { artists.Add(a.naam); form.ArtistListBox.Items.Add(a.naam); }); this.api.GetGenres().ForEach(g => { genres.Add(g.name); form.GenreListBox.Items.Add(g.name); }); this.pl.GetPlaylists().ForEach(p => form.PlaylistBox.Items.Add(p.name)); + BackgroundWorker bw = new BackgroundWorker(); + bw.DoWork += new DoWorkEventHandler( + delegate (object o, DoWorkEventArgs args) + { + BackgroundWorker b = o as BackgroundWorker; + var i = 0; + ImageList imagelist = new ImageList(); + foreach (ListViewItem item in form.AlbumListView.Items) + { + imagelist.Images.Add(i.ToString(), api.getAlbumCover(item.Text)); + i++; + } + i = 0; + Action action = () => { + form.AlbumListView.LargeImageList = imagelist; + foreach (ListViewItem item in form.AlbumListView.Items) + { + item.ImageKey = i.ToString(); + i++; + } + }; + form.Invoke(action); + }); + bw.RunWorkerAsync(); } public void Repopulate() diff --git a/MusicPlayer/MusicPlayer/Program.cs b/MusicPlayer/MusicPlayer/Program.cs index 385aa17..cba1c38 100644 --- a/MusicPlayer/MusicPlayer/Program.cs +++ b/MusicPlayer/MusicPlayer/Program.cs @@ -17,7 +17,7 @@ namespace MusicPlayer Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); - NetworkHandler nw = new NetworkHandler("http://imegumii.nl"); + NetworkHandler nw = new NetworkHandler("http://jancokock.me"); APIHandler api = new APIHandler(nw); MainForm form = new MainForm(); PlaylistHandler pl = new PlaylistHandler(api);