diff --git a/ClientServerLib/ClientServerLib/CServer.cs b/ClientServerLib/ClientServerLib/CServer.cs
index d52929f0..b661b3ed 100644
--- a/ClientServerLib/ClientServerLib/CServer.cs
+++ b/ClientServerLib/ClientServerLib/CServer.cs
@@ -67,6 +67,17 @@ namespace ClientServerLib
#endregion
+ #region songs
+
+ private static GetCurrentSongDelegate getCurrentSong;
+ public static GetCurrentSongDelegate GetCurrentSong
+ {
+ internal get { return CServer.getCurrentSong; }
+ set { CServer.getCurrentSong = value; }
+ }
+
+ #endregion
+
public CServer(int port)
{
baseAddress = new Uri("http://localhost:" + port + "/");
diff --git a/ClientServerLib/ClientServerLib/CWebservice.cs b/ClientServerLib/ClientServerLib/CWebservice.cs
index 3dea559f..bb6e7584 100644
--- a/ClientServerLib/ClientServerLib/CWebservice.cs
+++ b/ClientServerLib/ClientServerLib/CWebservice.cs
@@ -84,6 +84,16 @@ namespace ClientServerLib
Stream GetImgFile(String filename);
#endregion
+
+ #region songs
+
+ [OperationContract]
+ [WebInvoke(Method = "GET",
+ ResponseFormat = WebMessageFormat.Json,
+ UriTemplate = "/getCurrentSong")]
+ SongInfo getCurrentSong();
+
+ #endregion
}
class CWebservice : ICWebservice
@@ -135,7 +145,7 @@ namespace ClientServerLib
#region photo
public bool sendPhoto(PhotoData photo)
- {
+ {
return CServer.SendPhoto(photo);
}
@@ -236,5 +246,14 @@ namespace ClientServerLib
}
#endregion
+
+ #region songs
+
+ public SongInfo getCurrentSong()
+ {
+ return CServer.GetCurrentSong();
+ }
+
+ #endregion
}
}
diff --git a/ClientServerLib/ClientServerLib/DataStructs.cs b/ClientServerLib/ClientServerLib/DataStructs.cs
index e5d5f5b4..49d441fb 100644
--- a/ClientServerLib/ClientServerLib/DataStructs.cs
+++ b/ClientServerLib/ClientServerLib/DataStructs.cs
@@ -90,4 +90,29 @@ namespace ClientServerLib
}
+
+ #region songs
+
+ public delegate SongInfo GetCurrentSongDelegate();
+
+ [DataContract]
+ public struct SongInfo
+ {
+ [DataMember]
+ public string Title;
+ [DataMember]
+ public string Artist;
+ [DataMember]
+ public Base64Image Cover;
+ [DataMember]
+ public string Genre { get; set; }
+ [DataMember]
+ public string Language { get; set; }
+ [DataMember]
+ public string Year { get; set; }
+ [DataMember]
+ public bool IsDuet { get; set; }
+ }
+
+ #endregion
}
diff --git a/Vocaluxe/Base/Server/CVocaluxeServer.cs b/Vocaluxe/Base/Server/CVocaluxeServer.cs
index 991a3139..02ff9332 100644
--- a/Vocaluxe/Base/Server/CVocaluxeServer.cs
+++ b/Vocaluxe/Base/Server/CVocaluxeServer.cs
@@ -28,6 +28,7 @@ using ClientServerLib;
using Vocaluxe.Lib.Input;
using VocaluxeLib;
using VocaluxeLib.Profile;
+using VocaluxeLib.Songs;
namespace Vocaluxe.Base.Server
{
@@ -59,6 +60,7 @@ namespace Vocaluxe.Base.Server
CServer.GetProfileList = getProfileList;
CServer.SendPhoto = sendPhoto;
CServer.GetSiteFile = getSiteFile;
+ CServer.GetCurrentSong = getCurrentSong;
_Discover = new CDiscover(CConfig.ServerPort, CCommands.BroadcastKeyword);
Controller.Init();
@@ -324,6 +326,28 @@ namespace Vocaluxe.Base.Server
#endregion
+ #region songs
+
+ private static SongInfo getCurrentSong()
+ {
+ SongInfo result = new SongInfo();
+ CSong song = CGame.GetSong();
+ if (song != null)
+ {
+ result.Title = song.Title;
+ result.Artist = song.Artist;
+ result.Genre = song.Genre.FirstOrDefault();
+ result.Language = song.Language.FirstOrDefault();
+ result.Year = song.Year;
+ result.IsDuet = song.IsDuet;
+ Image cover = Image.FromFile(song.Folder + "\\" + song.CoverFileName);
+ result.Cover = new Base64Image(cover, cover.RawFormat);
+ }
+ return result;
+ }
+
+ #endregion
+
private static string _SaveImage(Base64Image imageDate, string name, string folder)
{
Image avatarImage = imageDate.getImage();
diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj
index 0bf1a344..f37c5aa4 100644
--- a/Vocaluxe/Vocaluxe.csproj
+++ b/Vocaluxe/Vocaluxe.csproj
@@ -344,6 +344,12 @@
Edit your profile
+
+ Display informations about the current song
+ +
@@ -117,6 +124,37 @@
+
+