Просмотр исходного кода

Fixed albumcover load on startup

Janco Kock 10 лет назад
Родитель
Сommit
68ca3af5ff

+ 13 - 12
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<Album> GetAlbums()
         {
             List<Album> albumlist = new List<Album>();
-            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()));
                 }
             }
 

+ 1 - 3
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;
         }
     }
 }

+ 27 - 5
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<string> genres;
         private List<string> 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()

+ 1 - 1
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);