Ver Fonte

Merge remote-tracking branch 'origin/gui' into gui

Kenneth van Ewijk há 10 anos atrás
pai
commit
c20a20534b

+ 12 - 2
MusicPlayer/MusicPlayer/APIHandler.cs

@@ -5,6 +5,8 @@ using System.Text;
 using System.Threading.Tasks;
 using MusicPlayer;
 using Newtonsoft.Json.Linq;
+using System.IO;
+using System.Drawing;
 
 namespace MusicPlayer
 {
@@ -95,13 +97,21 @@ namespace MusicPlayer
         public List<Album> GetAlbums()
         {
             List<Album> albumlist = new List<Album>();
-
+            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++)
                 {
-                    albumlist.Add(new Album(o["albums"][i][0].ToString()));
+                    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));
+                    }
                 }
             }
 

+ 7 - 2
MusicPlayer/MusicPlayer/Album.cs

@@ -1,12 +1,17 @@
-namespace MusicPlayer
+
+using System.Drawing;
+
+namespace MusicPlayer
 {
     public class Album
     {
         public string albumnaam { get; set; }
+        public Image cover;
 
-        public Album(string albumnaam)
+        public Album(string albumnaam, Image c)
         {
             this.albumnaam = albumnaam;
+            this.cover = c;
         }
     }
 }

+ 5 - 1
MusicPlayer/MusicPlayer/Main.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Forms;
 
 namespace MusicPlayer
 {
@@ -15,6 +16,7 @@ namespace MusicPlayer
         public AudioHandler audio;
 
         private SongsTable table;
+        private ImageList imagelist;
 
         public Main(NetworkHandler nw, APIHandler api, MainForm form, PlaylistHandler pl)
         {
@@ -26,6 +28,7 @@ namespace MusicPlayer
 
             audio = new AudioHandler();
             table = new SongsTable();
+            imagelist = new ImageList();
             form.SongsTableView.DataSource = table;
             form.SongsTableView.Columns[5].Visible = false;
             Populate();
@@ -33,7 +36,8 @@ namespace MusicPlayer
 
         private void Populate()
         {
-            this.api.GetAlbums().ForEach(a => form.AlbumListView.Items.Add(a.albumnaam));
+            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.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));

+ 35 - 0
MusicPlayer/MusicPlayer/NetworkHandler.cs

@@ -2,6 +2,7 @@
 using System.Text;
 using System.Net.Sockets;
 using System.Threading;
+using System.Web;
 using System.Net;
 using System.IO;
 using Newtonsoft.Json.Linq;
@@ -40,6 +41,40 @@ namespace MusicPlayer
             streamResponse.Close();
             streamRead.Close();
             return o;
+        }
+
+        public MemoryStream downloadArtwork(string album)
+        {
+            try
+            {
+                WebRequest req = WebRequest.Create((ip + "/music/artwork/"+album).Replace(" ", "%20"));
+                WebResponse response = req.GetResponse();
+                Stream stream = response.GetResponseStream();

+                //Download in chuncks
+                byte[] buffer = new byte[1024];
                //Get Total Size
+                int dataLength = (int)response.ContentLength;
+                //Download to memory
+                MemoryStream memStream = new MemoryStream();
+                while (true)
+                {
+                    //Try to read the data
+                    int bytesRead = stream.Read(buffer, 0, buffer.Length);
+                    if (bytesRead == 0)
+                    {
+                        break;
+                    }
+                    else
+                    {
                        memStream.Write(buffer, 0, bytesRead);
+                    }
+                }
                //Clean up
+                stream.Close();
+
+                //Convert the downloaded stream to a byte array
+                return memStream;
+            }
+            catch (Exception)
+            {
                return null;
+            }
         }
     }
 }

+ 1 - 1
MusicPlayer/MusicPlayer/Program.cs

@@ -17,7 +17,7 @@ namespace MusicPlayer
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
 
-            NetworkHandler nw = new NetworkHandler("http://www.imegumii.nl");
+            NetworkHandler nw = new NetworkHandler("http://jancokock.me");
             APIHandler api = new APIHandler(nw);
             MainForm form = new MainForm();
             PlaylistHandler pl = new PlaylistHandler(api);