[banshee: 1/27] [lastfm] First step of the split
- From: Bertrand Lorentz <blorentz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [banshee: 1/27] [lastfm] First step of the split
- Date: Sat, 22 May 2010 18:51:39 +0000 (UTC)
commit 255931fa010f013f500e8c4ecae18e0888a3a6c3
Author: Bertrand Lorentz <bertrand lorentz gmail com>
Date: Sat Jan 23 17:38:14 2010 +0100
[lastfm] First step of the split
Created a new Banshee.LastfmStreaming extension that depends on
Banshee.Lastfm. Moved all Last.fm radio bits to it.
It compiles, but probably a lot of stuff is broken for now.
Banshee.sln | 6 +
build/build.environment.mk | 2 +
configure.ac | 1 +
.../Banshee.Lastfm.Audioscrobbler/Queue.cs | 4 +-
.../Banshee.Lastfm.Radio/ILastfmInfo.cs | 10 +
.../Banshee.Lastfm.Radio/LastfmActions.cs | 154 -------------
.../Banshee.Lastfm.Radio/LastfmSource.cs | 27 +--
.../Banshee.Lastfm/Banshee.Lastfm.addin.xml | 4 +-
.../Banshee.Lastfm/Banshee.Lastfm.csproj | 5 +-
src/Extensions/Banshee.Lastfm/Makefile.am | 5 +-
.../LastfmStreamingActions.cs | 241 ++++++++++++++++++++
.../LastfmStreamingService.cs | 76 ++++++
.../LastfmTrackInfo.cs | 5 +-
.../StationEditor.cs | 3 +-
.../StationSource.cs | 7 +-
.../Banshee.LastfmStreaming.Radio}/StationType.cs | 2 +-
.../Banshee.LastfmStreaming.addin.xml | 24 ++
.../Banshee.LastfmStreaming.csproj | 84 +++++++
src/Extensions/Banshee.LastfmStreaming/Makefile.am | 17 ++
src/Extensions/Makefile.am | 1 +
20 files changed, 481 insertions(+), 197 deletions(-)
---
diff --git a/Banshee.sln b/Banshee.sln
index b7372a4..c227a74 100644
--- a/Banshee.sln
+++ b/Banshee.sln
@@ -121,6 +121,7 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Banshee.Audiobook", "src\Extensions\Banshee.Audiobook\Banshee.Audiobook.csproj", "{05148D80-6C5C-4BE5-9BD7-89613753D027}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Banshee.YouTube", "src\Extensions\Banshee.YouTube\Banshee.YouTube.csproj", "{387DC336-45F9-4263-9606-2881907D2105}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Banshee.LastfmStreaming", "src\Extensions\Banshee.LastfmStreaming\Banshee.LastfmStreaming.csproj", "{66617494-94CB-43E8-877C-A586F5A6F4EC}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{4F47D6F1-4047-4A89-AE85-3AE5EF9F2961}"
ProjectSection(SolutionItems) = postProject
@@ -257,6 +258,10 @@ Global
{6171E5DE-5B36-4AE4-8707-F6BEE0AD945B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6171E5DE-5B36-4AE4-8707-F6BEE0AD945B}.Windows|Any CPU.ActiveCfg = Windows|Any CPU
{6171E5DE-5B36-4AE4-8707-F6BEE0AD945B}.Windows|Any CPU.Build.0 = Windows|Any CPU
+ {66617494-94CB-43E8-877C-A586F5A6F4EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {66617494-94CB-43E8-877C-A586F5A6F4EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {66617494-94CB-43E8-877C-A586F5A6F4EC}.Windows|Any CPU.ActiveCfg = Debug|Any CPU
+ {66617494-94CB-43E8-877C-A586F5A6F4EC}.Windows|Any CPU.Build.0 = Debug|Any CPU
{6B73E278-23FB-4A59-9B44-AB7F0212B936}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6B73E278-23FB-4A59-9B44-AB7F0212B936}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6B73E278-23FB-4A59-9B44-AB7F0212B936}.Release|Any CPU.ActiveCfg = Debug|Any CPU
@@ -435,6 +440,7 @@ Global
{10A5B2EE-C9F0-4B7B-B79B-87B7DA9C1DC1} = {4DD1DE63-F20B-4FC3-8FDA-F0BDF4183722}
{05148D80-6C5C-4BE5-9BD7-89613753D027} = {4DD1DE63-F20B-4FC3-8FDA-F0BDF4183722}
{387DC336-45F9-4263-9606-2881907D2105} = {4DD1DE63-F20B-4FC3-8FDA-F0BDF4183722}
+ {66617494-94CB-43E8-877C-A586F5A6F4EC} = {4DD1DE63-F20B-4FC3-8FDA-F0BDF4183722}
{95374549-9553-4C1E-9D89-667755F90E12} = {4F47D6F1-4047-4A89-AE85-3AE5EF9F2961}
{C856EFD8-E812-4E61-8B76-E3583D94C233} = {4F47D6F1-4047-4A89-AE85-3AE5EF9F2961}
{C1F63FC5-4B96-48B2-B7F7-5B33FCC4F2A2} = {4F47D6F1-4047-4A89-AE85-3AE5EF9F2961}
diff --git a/build/build.environment.mk b/build/build.environment.mk
index d7c4c8e..18eb1ba 100644
--- a/build/build.environment.mk
+++ b/build/build.environment.mk
@@ -136,6 +136,8 @@ LINK_EXTENSION_PLAYQUEUE = -r:$(DIR_BIN)/Banshee.PlayQueue.dll
LINK_EXTENSION_PLAYQUEUE_DEPS = $(REF_EXTENSION_PLAYQUEUE) \
$(LINK_EXTENSION_PLAYQUEUE)
REF_EXTENSION_LASTFM = $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_MONO_MEDIA) $(LINK_LASTFM) $(LINK_LASTFM_GUI)
+LINK_EXTENSION_LASTFM = -r:$(DIR_BIN)/Banshee.Lastfm.dll
+REF_EXTENSION_LASTFM_STREAMING = $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_MONO_MEDIA) $(LINK_LASTFM) $(LINK_LASTFM_GUI) $(LINK_EXTENSION_LASTFM)
REF_EXTENSION_NOWPLAYING = $(LINK_BANSHEE_THICKCLIENT_DEPS)
LINK_EXTENSION_NOWPLAYING = -r:$(DIR_BIN)/Banshee.NowPlaying.dll
LINK_EXTENSION_NOWPLAYING_DEPS = $(REF_EXTENSION_NOWPLAYING) \
diff --git a/configure.ac b/configure.ac
index 77766e0..ee54f42 100644
--- a/configure.ac
+++ b/configure.ac
@@ -310,6 +310,7 @@ src/Extensions/Banshee.FileSystemQueue/Makefile
src/Extensions/Banshee.InternetArchive/Makefile
src/Extensions/Banshee.InternetRadio/Makefile
src/Extensions/Banshee.Lastfm/Makefile
+src/Extensions/Banshee.LastfmStreaming/Makefile
src/Extensions/Banshee.LibraryWatcher/Makefile
src/Extensions/Banshee.MiniMode/Makefile
src/Extensions/Banshee.MeeGo/Makefile
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs
index 462c602..c147b65 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs
+++ b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs
@@ -71,8 +71,8 @@ namespace Banshee.Lastfm.Audioscrobbler
this.musicbrainzid = "";
// set trackauth value, otherwise empty string is default
- if (track is LastfmTrackInfo) {
- this.track_auth = (track as LastfmTrackInfo).TrackAuth;
+ if (track is ILastfmInfo) {
+ this.track_auth = (track as ILastfmInfo).TrackAuth;
}
}
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/ILastfmInfo.cs b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/ILastfmInfo.cs
new file mode 100644
index 0000000..fa5374c
--- /dev/null
+++ b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/ILastfmInfo.cs
@@ -0,0 +1,10 @@
+
+using System;
+
+namespace Banshee.Lastfm.Radio
+{
+ public interface ILastfmInfo
+ {
+ string TrackAuth { get; }
+ }
+}
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs
index 7f82b72..f325a4f 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs
+++ b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs
@@ -60,33 +60,14 @@ namespace Banshee.Lastfm.Radio
{
this.lastfm = lastfm;
- AddImportant (
- new ActionEntry (
- "LastfmAddAction", Stock.Add,
- Catalog.GetString ("_Add Station..."),
- null, Catalog.GetString ("Add a new Last.fm radio station"), OnAddStation
- )
- );
-
Add (new ActionEntry [] {
new ActionEntry (
- "RefreshSourceAction", Stock.Refresh,
- Catalog.GetString ("Refresh"), null,
- String.Empty, OnRefreshSource
- ),
-
- new ActionEntry (
"LastfmConnectAction", null,
Catalog.GetString ("Connect"),
null, String.Empty, OnConnect
)
});
- // Translators: {0} is a type of Last.fm station, eg "Fans of" or "Similar to".
- string listen_to = Catalog.GetString ("Listen to {0} Station");
- // Translators: {0} is a type of Last.fm station, eg "Fans of" or "Similar to".
- string listen_to_long = Catalog.GetString ("Listen to the Last.fm {0} station for this artist");
-
// Artist actions
Add (new ActionEntry [] {
new ActionEntry ("LastfmArtistVisitLastfmAction", "audioscrobbler",
@@ -105,16 +86,6 @@ namespace Banshee.Lastfm.Radio
Catalog.GetString ("View Artist's Videos"), null,
Catalog.GetString ("Find videos by this artist"), OnArtistViewVideos),
- new ActionEntry ("LastfmArtistPlayFanRadioAction", StationType.Fan.IconName,
- String.Format (listen_to, String.Format ("'{0}'", Catalog.GetString ("Fans of"))), null,
- String.Format (listen_to_long, String.Format ("'{0}'", Catalog.GetString ("Fans of"))),
- OnArtistPlayFanRadio),
-
- new ActionEntry ("LastfmArtistPlaySimilarRadioAction", StationType.Similar.IconName,
- String.Format (listen_to, String.Format ("'{0}'", Catalog.GetString ("Similar to"))), null,
- String.Format (listen_to_long, String.Format ("'{0}'", Catalog.GetString ("Similar to"))),
- OnArtistPlaySimilarRadio),
-
new ActionEntry ("LastfmArtistRecommendAction", "",
Catalog.GetString ("Recommend to"), null,
Catalog.GetString ("Recommend this artist to someone"), OnArtistRecommend)
@@ -138,16 +109,6 @@ namespace Banshee.Lastfm.Radio
// Track actions
Add (new ActionEntry [] {
- new ActionEntry (
- "LastfmLoveAction", null,
- Catalog.GetString ("Love Track"), null,
- Catalog.GetString ("Mark current track as loved"), OnLoved),
-
- new ActionEntry (
- "LastfmHateAction", null,
- Catalog.GetString ("Ban Track"), null,
- Catalog.GetString ("Mark current track as banned"), OnHated),
-
new ActionEntry ("LastfmTrackVisitLastfmAction", "audioscrobbler",
Catalog.GetString ("View on Last.fm"), null,
Catalog.GetString ("View this track's Last.fm page"), OnTrackVisitLastfm),
@@ -157,18 +118,10 @@ namespace Banshee.Lastfm.Radio
Catalog.GetString ("Recommend this track to someone"), OnTrackRecommend)
});
- this["LastfmLoveAction"].IconName = "face-smile";
- this["LastfmHateAction"].IconName = "face-sad";
-
- this["LastfmLoveAction"].IsImportant = true;
- this["LastfmHateAction"].IsImportant = true;
-
actions_id = Actions.UIManager.AddUiFromResource ("GlobalUI.xml");
Actions.AddActionGroup (this);
lastfm.Connection.StateChanged += HandleConnectionStateChanged;
- Actions.SourceActions ["SourcePropertiesAction"].Activated += OnSourceProperties;
- ServiceManager.PlaybackController.SourceChanged += OnPlaybackSourceChanged;
ServiceManager.PlayerEngine.ConnectEvent (OnPlayerEvent,
PlayerEvent.StartOfStream |
PlayerEvent.EndOfStream);
@@ -180,8 +133,6 @@ namespace Banshee.Lastfm.Radio
Actions.UIManager.RemoveUi (actions_id);
Actions.RemoveActionGroup (this);
lastfm.Connection.StateChanged -= HandleConnectionStateChanged;
- Actions.SourceActions ["SourcePropertiesAction"].Activated -= OnSourceProperties;
- ServiceManager.PlaybackController.SourceChanged -= OnPlaybackSourceChanged;
ServiceManager.PlayerEngine.DisconnectEvent (OnPlayerEvent);
base.Dispose ();
}
@@ -199,42 +150,6 @@ namespace Banshee.Lastfm.Radio
lastfm.Connection.Connect ();
}
- private void OnSourceProperties (object o, EventArgs args)
- {
- Source source = Actions.SourceActions.ActionSource;
- if (source is StationSource) {
- StationEditor editor = new StationEditor (lastfm, source as StationSource);
- editor.RunDialog ();
- }
- }
-
- private void OnRefreshSource (object o, EventArgs args)
- {
- StationSource source = Actions.SourceActions.ActionSource as StationSource;
- if (source != null) {
- source.Refresh();
- }
- }
-
- private void OnLoved (object sender, EventArgs args)
- {
- LastfmTrackInfo track = ServiceManager.PlayerEngine.CurrentTrack as LastfmTrackInfo;
- if (track == null)
- return;
-
- track.Love ();
- }
-
- private void OnHated (object sender, EventArgs args)
- {
- LastfmTrackInfo track = ServiceManager.PlayerEngine.CurrentTrack as LastfmTrackInfo;
- if (track == null)
- return;
-
- track.Ban ();
- ServiceManager.PlaybackController.Next ();
- }
-
private void OnArtistVisitLastfm (object sender, EventArgs args)
{
Browser.Open (String.Format (
@@ -292,48 +207,6 @@ namespace Banshee.Lastfm.Radio
{
}*/
- private void OnArtistPlayFanRadio (object sender, EventArgs args)
- {
- StationSource fan_radio = null;
- foreach (StationSource station in lastfm.Children) {
- if (station.Type == StationType.Fan && station.Arg == CurrentArtist) {
- fan_radio = station;
- break;
- }
- }
-
- if (fan_radio == null) {
- fan_radio = new StationSource (lastfm,
- String.Format (Catalog.GetString ("Fans of {0}"), CurrentArtist),
- "Fan", CurrentArtist
- );
- lastfm.AddChildSource (fan_radio);
- }
-
- ServiceManager.SourceManager.SetActiveSource (fan_radio);
- }
-
- private void OnArtistPlaySimilarRadio (object sender, EventArgs args)
- {
- StationSource similar_radio = null;
- foreach (StationSource station in lastfm.Children) {
- if (station.Type == StationType.Similar && station.Arg == CurrentArtist) {
- similar_radio = station;
- break;
- }
- }
-
- if (similar_radio == null) {
- similar_radio = new StationSource (lastfm,
- String.Format (Catalog.GetString ("Similar to {0}"), CurrentArtist),
- "Similar", CurrentArtist
- );
- lastfm.AddChildSource (similar_radio);
- }
-
- ServiceManager.SourceManager.SetActiveSource (similar_radio);
- }
-
private void OnArtistRecommend (object sender, EventArgs args)
{
}
@@ -396,36 +269,9 @@ namespace Banshee.Lastfm.Radio
updating = true;
}
- bool have_user = (lastfm.Account != null && lastfm.Account.UserName != null);
- this["LastfmAddAction"].Sensitive = have_user;
- this["LastfmAddAction"].ShortLabel = Catalog.GetString ("_Add Station");
this["LastfmConnectAction"].Visible = lastfm.Connection.State == ConnectionState.Disconnected;
- TrackInfo current_track = ServiceManager.PlayerEngine.CurrentTrack;
- this["LastfmLoveAction"].Visible = current_track is LastfmTrackInfo;
- this["LastfmHateAction"].Visible = current_track is LastfmTrackInfo;
-
updating = false;
}
-
- private uint track_actions_id;
- private bool was_lastfm = false;
- private void OnPlaybackSourceChanged (object o, EventArgs args)
- {
- if (Actions == null || Actions.PlaybackActions == null || ServiceManager.PlaybackController == null)
- return;
-
- UpdateActions ();
-
- bool is_lastfm = ServiceManager.PlaybackController.Source is StationSource;
- Actions.PlaybackActions["PreviousAction"].Sensitive = !is_lastfm;
-
- if (is_lastfm && !was_lastfm)
- track_actions_id = Actions.UIManager.AddUiFromResource ("LastfmTrackActions.xml");
- else if (!is_lastfm && was_lastfm)
- Actions.UIManager.RemoveUi (track_actions_id);
-
- was_lastfm = is_lastfm;
- }
}
}
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs
index 1e636b4..f0037f5 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs
+++ b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs
@@ -115,13 +115,10 @@ namespace Banshee.Lastfm.Radio
InstallPreferences ();
ServiceManager.SourceManager.AddSource (this);
-
- ServiceManager.Get<DBusCommandService> ().ArgumentPushed += OnCommandLineArgument;
}
public void Dispose ()
{
- ServiceManager.Get<DBusCommandService> ().ArgumentPushed -= OnCommandLineArgument;
Connection.StateChanged -= HandleConnectionStateChanged;
ServiceManager.Get<Network> ().StateChanged -= HandleNetworkStateChanged;
Connection.Dispose ();
@@ -133,26 +130,15 @@ namespace Banshee.Lastfm.Radio
account = null;
}
- private void OnCommandLineArgument (string uri, object value, bool isFile)
- {
- if (!isFile || String.IsNullOrEmpty (uri)) {
- return;
- }
-
- // Handle lastfm:// URIs
- if (uri.StartsWith ("lastfm://")) {
- StationSource.CreateFromUrl (this, uri);
- }
- }
-
// Order by the playCount of a station, then by inverted name
public class PlayCountComparer : IComparer<Source>
{
public int Compare (Source sa, Source sb)
{
- StationSource a = sa as StationSource;
+ /*StationSource a = sa as StationSource;
StationSource b = sb as StationSource;
- return a.PlayCount.CompareTo (b.PlayCount);
+ return a.PlayCount.CompareTo (b.PlayCount);*/
+ return 1;
}
}
@@ -180,13 +166,6 @@ namespace Banshee.Lastfm.Radio
last_username = username;
last_was_subscriber = Account.Subscriber;
LastfmSource.LastUserSchema.Set (last_username);
- ClearChildSources ();
- PauseSorting ();
- foreach (StationSource child in StationSource.LoadAll (this, Account.UserName)) {
- AddChildSource (child);
- }
- ResumeSorting ();
- SortChildSources ();
}
}
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml
index bf919fa..b4af3f1 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml
+++ b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml
@@ -4,9 +4,9 @@
version="1.0"
compatVersion="1.0"
copyright="© 2008 Novell Inc. Licensed under the MIT X11 license."
- name="Last.fm Radio and Scrobbling"
+ name="Last.fm Scrobbling"
category="Online Sources"
- description="Last.fm streaming radio, scrobbling, and context pane recommendations."
+ description="Last.fm scrobbling, and context pane recommendations."
author="Gabriel Burt, Alexander Hixon, Chris Toshok, Fredrik Hedberg, Aaron Bockover, Lukas Lipka"
url="http://banshee-project.org/"
defaultEnabled="true">
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.csproj b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.csproj
index 602311f..ffa8057 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.csproj
+++ b/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.csproj
@@ -90,16 +90,13 @@
<Compile Include="Banshee.Lastfm.Radio\LastfmActions.cs" />
<Compile Include="Banshee.Lastfm.Radio\LastfmSource.cs" />
<Compile Include="Banshee.Lastfm.Radio\LastfmSourceContents.cs" />
- <Compile Include="Banshee.Lastfm.Radio\LastfmTrackInfo.cs" />
- <Compile Include="Banshee.Lastfm.Radio\StationEditor.cs" />
- <Compile Include="Banshee.Lastfm.Radio\StationSource.cs" />
- <Compile Include="Banshee.Lastfm.Radio\StationType.cs" />
<Compile Include="Banshee.Lastfm.Audioscrobbler\AudioscrobblerService.cs" />
<Compile Include="Banshee.Lastfm.Audioscrobbler\Queue.cs" />
<Compile Include="Banshee.Lastfm.Radio\LastfmColumnController.cs" />
<Compile Include="Banshee.Lastfm.Recommendations\ContextPage.cs" />
<Compile Include="Banshee.Lastfm.Recommendations\RecommendationPane.cs" />
<Compile Include="Banshee.Lastfm.Recommendations\SimilarArtistTile.cs" />
+ <Compile Include="Banshee.Lastfm.Radio\ILastfmInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Banshee.Lastfm.addin.xml">
diff --git a/src/Extensions/Banshee.Lastfm/Makefile.am b/src/Extensions/Banshee.Lastfm/Makefile.am
index 5352929..8584585 100644
--- a/src/Extensions/Banshee.Lastfm/Makefile.am
+++ b/src/Extensions/Banshee.Lastfm/Makefile.am
@@ -6,14 +6,11 @@ INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
SOURCES = \
Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs \
Banshee.Lastfm.Audioscrobbler/Queue.cs \
+ Banshee.Lastfm.Radio/ILastfmInfo.cs \
Banshee.Lastfm.Radio/LastfmActions.cs \
Banshee.Lastfm.Radio/LastfmColumnController.cs \
Banshee.Lastfm.Radio/LastfmSource.cs \
Banshee.Lastfm.Radio/LastfmSourceContents.cs \
- Banshee.Lastfm.Radio/LastfmTrackInfo.cs \
- Banshee.Lastfm.Radio/StationEditor.cs \
- Banshee.Lastfm.Radio/StationSource.cs \
- Banshee.Lastfm.Radio/StationType.cs \
Banshee.Lastfm.Recommendations/ContextPage.cs \
Banshee.Lastfm.Recommendations/RecommendationPane.cs \
Banshee.Lastfm.Recommendations/SimilarArtistTile.cs
diff --git a/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmStreamingActions.cs b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmStreamingActions.cs
new file mode 100644
index 0000000..0e59cef
--- /dev/null
+++ b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmStreamingActions.cs
@@ -0,0 +1,241 @@
+
+using System;
+using Gtk;
+
+using Mono.Unix;
+
+using Banshee.Collection;
+using Banshee.Gui;
+using Banshee.Lastfm.Radio;
+using Banshee.MediaEngine;
+using Banshee.ServiceStack;
+using Banshee.Sources;
+
+using Lastfm;
+
+namespace Banshee.LastfmStreaming.Radio
+{
+ public class LastfmStreamingActions : BansheeActionGroup
+ {
+ private LastfmSource lastfm;
+ private uint actions_id;
+
+ public LastfmStreamingActions (LastfmSource lastfm) : base (ServiceManager.Get<InterfaceActionService> (), "LastfmStreaming")
+ {
+ this.lastfm = lastfm;
+
+ AddImportant (
+ new ActionEntry (
+ "LastfmAddAction", Stock.Add,
+ Catalog.GetString ("_Add Station..."),
+ null, Catalog.GetString ("Add a new Last.fm radio station"), OnAddStation
+ )
+ );
+
+ Add (new ActionEntry [] {
+ new ActionEntry (
+ "RefreshSourceAction", Stock.Refresh,
+ Catalog.GetString ("Refresh"), null,
+ String.Empty, OnRefreshSource
+ )
+ });
+
+ // Translators: {0} is a type of Last.fm station, eg "Fans of" or "Similar to".
+ string listen_to = Catalog.GetString ("Listen to {0} Station");
+ // Translators: {0} is a type of Last.fm station, eg "Fans of" or "Similar to".
+ string listen_to_long = Catalog.GetString ("Listen to the Last.fm {0} station for this artist");
+
+ // Artist actions
+ Add (new ActionEntry [] {
+ new ActionEntry ("LastfmArtistPlayFanRadioAction", StationType.Fan.IconName,
+ String.Format (listen_to, String.Format ("'{0}'", Catalog.GetString ("Fans of"))), null,
+ String.Format (listen_to_long, String.Format ("'{0}'", Catalog.GetString ("Fans of"))),
+ OnArtistPlayFanRadio),
+
+ new ActionEntry ("LastfmArtistPlaySimilarRadioAction", StationType.Similar.IconName,
+ String.Format (listen_to, String.Format ("'{0}'", Catalog.GetString ("Similar to"))), null,
+ String.Format (listen_to_long, String.Format ("'{0}'", Catalog.GetString ("Similar to"))),
+ OnArtistPlaySimilarRadio)
+ });
+
+ // Track actions
+ Add (new ActionEntry [] {
+ new ActionEntry (
+ "LastfmLoveAction", null,
+ Catalog.GetString ("Love Track"), null,
+ Catalog.GetString ("Mark current track as loved"), OnLoved),
+
+ new ActionEntry (
+ "LastfmHateAction", null,
+ Catalog.GetString ("Ban Track"), null,
+ Catalog.GetString ("Mark current track as banned"), OnHated)
+ });
+
+ this["LastfmLoveAction"].IconName = "face-smile";
+ this["LastfmHateAction"].IconName = "face-sad";
+
+ this["LastfmLoveAction"].IsImportant = true;
+ this["LastfmHateAction"].IsImportant = true;
+
+ actions_id = Actions.UIManager.AddUiFromResource ("GlobalUI.xml");
+ Actions.AddActionGroup (this);
+
+ lastfm.Connection.StateChanged += HandleConnectionStateChanged;
+ Actions.SourceActions ["SourcePropertiesAction"].Activated += OnSourceProperties;
+ ServiceManager.PlaybackController.SourceChanged += OnPlaybackSourceChanged;
+ ServiceManager.PlayerEngine.ConnectEvent (OnPlayerEvent,
+ PlayerEvent.StartOfStream |
+ PlayerEvent.EndOfStream);
+ UpdateActions ();
+ }
+
+ public override void Dispose ()
+ {
+ Actions.UIManager.RemoveUi (actions_id);
+ Actions.RemoveActionGroup (this);
+ lastfm.Connection.StateChanged -= HandleConnectionStateChanged;
+ Actions.SourceActions ["SourcePropertiesAction"].Activated -= OnSourceProperties;
+ ServiceManager.PlaybackController.SourceChanged -= OnPlaybackSourceChanged;
+ ServiceManager.PlayerEngine.DisconnectEvent (OnPlayerEvent);
+ base.Dispose ();
+ }
+
+#region Action Handlers
+
+ private void OnAddStation (object sender, EventArgs args)
+ {
+ StationEditor ed = new StationEditor (lastfm);
+ ed.Window.ShowAll ();
+ ed.RunDialog ();
+ }
+
+ private void OnSourceProperties (object o, EventArgs args)
+ {
+ Source source = Actions.SourceActions.ActionSource;
+ if (source is StationSource) {
+ StationEditor editor = new StationEditor (lastfm, source as StationSource);
+ editor.RunDialog ();
+ }
+ }
+
+ private void OnRefreshSource (object o, EventArgs args)
+ {
+ StationSource source = Actions.SourceActions.ActionSource as StationSource;
+ if (source != null) {
+ source.Refresh();
+ }
+ }
+
+ private void OnLoved (object sender, EventArgs args)
+ {
+ LastfmTrackInfo track = ServiceManager.PlayerEngine.CurrentTrack as LastfmTrackInfo;
+ if (track == null)
+ return;
+
+ track.Love ();
+ }
+
+ private void OnHated (object sender, EventArgs args)
+ {
+ LastfmTrackInfo track = ServiceManager.PlayerEngine.CurrentTrack as LastfmTrackInfo;
+ if (track == null)
+ return;
+
+ track.Ban ();
+ ServiceManager.PlaybackController.Next ();
+ }
+
+ private void OnArtistPlayFanRadio (object sender, EventArgs args)
+ {
+ StationSource fan_radio = null;
+ foreach (StationSource station in lastfm.Children) {
+ if (station.Type == StationType.Fan && station.Arg == lastfm.Actions.CurrentArtist) {
+ fan_radio = station;
+ break;
+ }
+ }
+
+ if (fan_radio == null) {
+ fan_radio = new StationSource (lastfm,
+ String.Format (Catalog.GetString ("Fans of {0}"), lastfm.Actions.CurrentArtist),
+ "Fan", lastfm.Actions.CurrentArtist
+ );
+ lastfm.AddChildSource (fan_radio);
+ }
+
+ ServiceManager.SourceManager.SetActiveSource (fan_radio);
+ }
+
+ private void OnArtistPlaySimilarRadio (object sender, EventArgs args)
+ {
+ StationSource similar_radio = null;
+ foreach (StationSource station in lastfm.Children) {
+ if (station.Type == StationType.Similar && station.Arg == lastfm.Actions.CurrentArtist) {
+ similar_radio = station;
+ break;
+ }
+ }
+
+ if (similar_radio == null) {
+ similar_radio = new StationSource (lastfm,
+ String.Format (Catalog.GetString ("Similar to {0}"), lastfm.Actions.CurrentArtist),
+ "Similar", lastfm.Actions.CurrentArtist
+ );
+ lastfm.AddChildSource (similar_radio);
+ }
+
+ ServiceManager.SourceManager.SetActiveSource (similar_radio);
+ }
+
+#endregion
+ private void OnPlayerEvent (PlayerEventArgs args)
+ {
+ UpdateActions ();
+ }
+
+ private void HandleConnectionStateChanged (object sender, ConnectionStateChangedArgs args)
+ {
+ UpdateActions ();
+ }
+
+ private bool updating = false;
+ private void UpdateActions ()
+ {
+ lock (this) {
+ if (updating)
+ return;
+ updating = true;
+ }
+
+ bool have_user = (lastfm.Account != null && lastfm.Account.UserName != null);
+ this["LastfmAddAction"].Sensitive = have_user;
+ this["LastfmAddAction"].ShortLabel = Catalog.GetString ("_Add Station");
+
+ TrackInfo current_track = ServiceManager.PlayerEngine.CurrentTrack;
+ this["LastfmLoveAction"].Visible = current_track is LastfmTrackInfo;
+ this["LastfmHateAction"].Visible = current_track is LastfmTrackInfo;
+
+ updating = false;
+ }
+
+ private uint track_actions_id;
+ private bool was_lastfm = false;
+ private void OnPlaybackSourceChanged (object o, EventArgs args)
+ {
+ if (Actions == null || Actions.PlaybackActions == null || ServiceManager.PlaybackController == null)
+ return;
+
+ UpdateActions ();
+
+ bool is_lastfm = ServiceManager.PlaybackController.Source is StationSource;
+ Actions.PlaybackActions["PreviousAction"].Sensitive = !is_lastfm;
+
+ if (is_lastfm && !was_lastfm)
+ track_actions_id = Actions.UIManager.AddUiFromResource ("LastfmTrackActions.xml");
+ else if (!is_lastfm && was_lastfm)
+ Actions.UIManager.RemoveUi (track_actions_id);
+
+ was_lastfm = is_lastfm;
+ }
+ }
+}
diff --git a/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmStreamingService.cs b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmStreamingService.cs
new file mode 100644
index 0000000..d2b7c9b
--- /dev/null
+++ b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmStreamingService.cs
@@ -0,0 +1,76 @@
+
+using System;
+
+using Banshee.Lastfm.Radio;
+using Banshee.ServiceStack;
+using Banshee.Sources;
+
+namespace Banshee.LastfmStreaming.Radio
+{
+ public class LastfmStreamingService : IExtensionService, IDisposable
+ {
+ private LastfmSource lastfm_source = null;
+
+ public LastfmStreamingService ()
+ {
+ }
+
+ void IExtensionService.Initialize ()
+ {
+ ServiceManager.Get<DBusCommandService> ().ArgumentPushed += OnCommandLineArgument;
+
+ if (!ServiceStartup ()) {
+ ServiceManager.SourceManager.SourceAdded += OnSourceAdded;
+ }
+ }
+
+ public void Dispose ()
+ {
+ ServiceManager.Get<DBusCommandService> ().ArgumentPushed -= OnCommandLineArgument;
+ }
+
+ private void OnSourceAdded (SourceAddedArgs args)
+ {
+ if (ServiceStartup ()) {
+ ServiceManager.SourceManager.SourceAdded -= OnSourceAdded;
+ }
+ }
+
+ private bool ServiceStartup ()
+ {
+ foreach (var src in ServiceManager.SourceManager.FindSources<LastfmSource> ()) {
+ lastfm_source = src;
+ break;
+ }
+
+ if (lastfm_source == null) {
+ return false;
+ }
+
+ lastfm_source.ClearChildSources ();
+ //lastfm_source.PauseSorting ();
+ foreach (StationSource child in StationSource.LoadAll (lastfm_source, lastfm_source.Account.UserName)) {
+ lastfm_source.AddChildSource (child);
+ }
+ //lastfm_source.ResumeSorting ();
+ lastfm_source.SortChildSources ();
+ return true;
+ }
+
+ private void OnCommandLineArgument (string uri, object value, bool isFile)
+ {
+ if (!isFile || String.IsNullOrEmpty (uri)) {
+ return;
+ }
+
+ // Handle lastfm:// URIs
+ if (uri.StartsWith ("lastfm://")) {
+ StationSource.CreateFromUrl (lastfm_source, uri);
+ }
+ }
+
+ string IService.ServiceName {
+ get { return "LastfmStreamingService"; }
+ }
+ }
+}
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmTrackInfo.cs
similarity index 96%
rename from src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs
rename to src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmTrackInfo.cs
index c780a1b..545b7a2 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs
+++ b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/LastfmTrackInfo.cs
@@ -37,11 +37,12 @@ using Hyena;
using Banshee.Base;
using Banshee.Collection;
+using Banshee.Lastfm.Radio;
using Media.Playlists.Xspf;
-namespace Banshee.Lastfm.Radio
+namespace Banshee.LastfmStreaming.Radio
{
- public class LastfmTrackInfo : TrackInfo
+ public class LastfmTrackInfo : TrackInfo, ILastfmInfo
{
private StationSource station;
private Track track;
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationEditor.cs b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationEditor.cs
similarity index 98%
rename from src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationEditor.cs
rename to src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationEditor.cs
index 68e81b8..3d14a25 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationEditor.cs
+++ b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationEditor.cs
@@ -39,8 +39,9 @@ using Banshee.Database;
using Banshee.Widgets;
using Banshee.Gui.Dialogs;
+using Banshee.Lastfm.Radio;
-namespace Banshee.Lastfm.Radio
+namespace Banshee.LastfmStreaming.Radio
{
public class StationEditor : BansheeDialog
{
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationSource.cs
similarity index 98%
rename from src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs
rename to src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationSource.cs
index f584dd3..979d212 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs
+++ b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationSource.cs
@@ -49,8 +49,9 @@ using Banshee.MediaEngine;
using Banshee.Collection;
using Banshee.ServiceStack;
using Banshee.PlaybackController;
+using Banshee.Lastfm.Radio;
-namespace Banshee.Lastfm.Radio
+namespace Banshee.LastfmStreaming.Radio
{
public class StationSource : Source, ITrackModelSource, IUnmapableSource, IDisposable, IBasicPlaybackController
{
@@ -254,13 +255,13 @@ namespace Banshee.Lastfm.Radio
public override void SetStatus (string message, bool error)
{
base.SetStatus (message, error);
- LastfmSource.SetStatus (status_message, lastfm, error, ConnectionState.Connected);
+ //LastfmSource.SetStatus (status_message, error, ConnectionState.Connected);
}
public void SetStatus (string message, bool error, ConnectionState state)
{
base.SetStatus (message, error);
- LastfmSource.SetStatus (status_message, lastfm, error, state);
+ //LastfmSource.SetStatus (status_message, error, state);
}
/*public override void ShowPropertiesDialog ()
diff --git a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationType.cs b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationType.cs
similarity index 99%
rename from src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationType.cs
rename to src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationType.cs
index 6e6f466..5d05b54 100644
--- a/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationType.cs
+++ b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.Radio/StationType.cs
@@ -30,7 +30,7 @@ using System;
using System.Collections.Generic;
using Mono.Unix;
-namespace Banshee.Lastfm.Radio
+namespace Banshee.LastfmStreaming.Radio
{
public class StationType
{
diff --git a/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.addin.xml b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.addin.xml
new file mode 100644
index 0000000..c266a05
--- /dev/null
+++ b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.addin.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Addin
+ id="Banshee.LastFmStreaming"
+ version="1.0"
+ compatVersion="1.0"
+ copyright="© 2010 Novell Inc. Licensed under the MIT X11 license."
+ name="Last.fm Radio"
+ category="Online Sources"
+ description="Last.fm streaming radio."
+ author="Gabriel Burt, Alexander Hixon, Chris Toshok, Fredrik Hedberg, Aaron Bockover, Lukas Lipka, Bertrand Lorentz"
+ url="http://banshee-project.org/"
+ defaultEnabled="true">
+
+ <Dependencies>
+ <Addin id="Banshee.Services" version="1.0"/>
+ <Addin id="Banshee.ThickClient" version="1.0"/>
+ <Addin id="Banshee.Lastfm" version="1.0"/>
+ </Dependencies>
+
+ <Extension path="/Banshee/ServiceManager/Service">
+ <Source class="Banshee.LastfmStreaming.Radio.LastfmStreamingService"/>
+ </Extension>
+
+</Addin>
diff --git a/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.csproj b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.csproj
new file mode 100644
index 0000000..a80c6cf
--- /dev/null
+++ b/src/Extensions/Banshee.LastfmStreaming/Banshee.LastfmStreaming.csproj
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>9.0.21022</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{66617494-94CB-43E8-877C-A586F5A6F4EC}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <RootNamespace>Banshee.LastfmStreaming</RootNamespace>
+ <ReleaseVersion>1.3</ReleaseVersion>
+ <AssemblyName>Banshee.LastfmStreaming</AssemblyName>
+ <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\..\bin</OutputPath>
+ <DefineConstants>DEBUG</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ <CustomCommands>
+ <CustomCommands>
+ <Command type="Build" command="make" workingdir="${SolutionDir}" />
+ <Command type="Execute" command="make run" workingdir="${SolutionDir}" />
+ </CustomCommands>
+ </CustomCommands>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>none</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\..\..\bin</OutputPath>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Compile Include="Banshee.LastfmStreaming.Radio\StationEditor.cs" />
+ <Compile Include="Banshee.LastfmStreaming.Radio\StationSource.cs" />
+ <Compile Include="Banshee.LastfmStreaming.Radio\StationType.cs" />
+ <Compile Include="Banshee.LastfmStreaming.Radio\LastfmTrackInfo.cs" />
+ <Compile Include="Banshee.LastfmStreaming.Radio\LastfmStreamingActions.cs" />
+ <Compile Include="Banshee.LastfmStreaming.Radio\LastfmStreamingService.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <EmbeddedResource Include="Banshee.LastfmStreaming.addin.xml">
+ <LogicalName>Banshee.LastfmStreaming.addin.xml</LogicalName>
+ </EmbeddedResource>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <ProjectExtensions>
+ <MonoDevelop>
+ <Properties>
+ <MonoDevelop.Autotools.MakefileInfo IntegrationEnabled="true" RelativeMakefileName="Makefile.am" IsAutotoolsProject="true" RelativeConfigureInPath="../../..">
+ <BuildFilesVar Sync="true" Name="SOURCES" />
+ <DeployFilesVar />
+ <ResourcesVar Sync="true" Name="RESOURCES" />
+ <OthersVar />
+ <GacRefVar Name="LINK" Prefix="-r:" />
+ <AsmRefVar Name="LINK" Prefix="-r:" />
+ <ProjectRefVar Name="LINK" Prefix="-r:" />
+ </MonoDevelop.Autotools.MakefileInfo>
+ </Properties>
+ </MonoDevelop>
+ </ProjectExtensions>
+ <ItemGroup>
+ <ProjectReference Include="..\Banshee.Lastfm\Banshee.Lastfm.csproj">
+ <Project>{02FD8195-9796-4AF5-A9D2-D310721963F4}</Project>
+ <Name>Banshee.Lastfm</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Core\Banshee.Services\Banshee.Services.csproj">
+ <Project>{B28354F0-BA87-44E8-989F-B864A3C7C09F}</Project>
+ <Name>Banshee.Services</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Libraries\Lastfm\Lastfm.csproj">
+ <Project>{C1F63FC5-4B96-48B2-B7F7-5B33FCC4F2A2}</Project>
+ <Name>Lastfm</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\..\Core\Banshee.Core\Banshee.Core.csproj">
+ <Project>{2ADB831A-A050-47D0-B6B9-9C19D60233BB}</Project>
+ <Name>Banshee.Core</Name>
+ </ProjectReference>
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/Extensions/Banshee.LastfmStreaming/Makefile.am b/src/Extensions/Banshee.LastfmStreaming/Makefile.am
new file mode 100644
index 0000000..487ebe5
--- /dev/null
+++ b/src/Extensions/Banshee.LastfmStreaming/Makefile.am
@@ -0,0 +1,17 @@
+ASSEMBLY = Banshee.LastfmStreaming
+TARGET = library
+LINK = $(REF_EXTENSION_LASTFM_STREAMING)
+INSTALL_DIR = $(EXTENSIONS_INSTALL_DIR)
+
+SOURCES = \
+ Banshee.LastfmStreaming.Radio/LastfmStreamingActions.cs \
+ Banshee.LastfmStreaming.Radio/LastfmStreamingService.cs \
+ Banshee.LastfmStreaming.Radio/LastfmTrackInfo.cs \
+ Banshee.LastfmStreaming.Radio/StationEditor.cs \
+ Banshee.LastfmStreaming.Radio/StationSource.cs \
+ Banshee.LastfmStreaming.Radio/StationType.cs
+
+RESOURCES = Banshee.LastfmStreaming.addin.xml
+
+include $(top_srcdir)/build/build.mk
+
diff --git a/src/Extensions/Makefile.am b/src/Extensions/Makefile.am
index 23ed398..b4ff658 100644
--- a/src/Extensions/Makefile.am
+++ b/src/Extensions/Makefile.am
@@ -11,6 +11,7 @@ SUBDIRS = \
Banshee.InternetArchive \
Banshee.InternetRadio \
Banshee.Lastfm \
+ Banshee.LastfmStreaming \
Banshee.LibraryWatcher \
Banshee.MiniMode \
Banshee.MultimediaKeys \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]