banshee r3236 - in trunk/banshee: . build src src/Backends/Banshee.GStreamer/Banshee.GStreamer src/Backends/Banshee.Unix/Banshee.IO.Unix src/Core src/Core/Banshee.Core src/Core/Banshee.Core/Banshee.Base src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Core/Banshee.Configuration src/Core/Banshee.Core/Banshee.IO src/Core/Banshee.Services src/Core/Banshee.Services/Banshee.Collection src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Library src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz src/Core/Banshee.Services/Banshee.Metadata.Rhapsody src/Core/Banshee.Services/Banshee.Networking src/Core/Banshee.Services/Banshee.PlaybackController src/Core/Banshee.Services/Banshee.ServiceStack src/Core/Banshee.Services/Banshee.SmartPlaylist src/Core/Banshee.Services/Banshee.Sources src/Core/Banshee.Services/Banshee.Streaming src/Core/Banshee.Services/Banshee.Web src/Core/Banshee.ThickC lient src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Core/Banshee.ThickClient/Banshee.Gui src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs src/Core/Banshee.ThickClient/Banshee.Gui.Widgets src/Core/Banshee.ThickClient/Banshee.Sources.Gui src/Core/Banshee.ThickClient/Resources src/Core/Hyena src/Core/Hyena.Gui src/Extensions src/Extensions/Banshee.Lastfm src/Extensions/Banshee.Lastfm/Banshee.Lastfm src/Extensions/Banshee.Lastfm/Resources src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys src/Libraries src/Libraries/Hyena src/Libraries/Hyena.Gui src/Libraries/Hyena/Hyena src/Libraries/Hyena/Hyena.Data src/Libraries/Lastfm src/Libraries/Lastfm.Gui src/Libraries/Lastfm/Lastfm src/Libraries/Mono.Media src/Libraries/Mono.Media/Media.Playlists.Xspf src/Libraries/Mono.Media/Playlists.Xspf
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3236 - in trunk/banshee: . build src src/Backends/Banshee.GStreamer/Banshee.GStreamer src/Backends/Banshee.Unix/Banshee.IO.Unix src/Core src/Core/Banshee.Core src/Core/Banshee.Core/Banshee.Base src/Core/Banshee.Core/Banshee.Collection src/Core/Banshee.Core/Banshee.Configuration src/Core/Banshee.Core/Banshee.IO src/Core/Banshee.Services src/Core/Banshee.Services/Banshee.Collection src/Core/Banshee.Services/Banshee.Collection.Database src/Core/Banshee.Services/Banshee.Library src/Core/Banshee.Services/Banshee.MediaEngine src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz src/Core/Banshee.Services/Banshee.Metadata.Rhapsody src/Core/Banshee.Services/Banshee.Networking src/Core/Banshee.Services/Banshee.PlaybackController src/Core/Banshee.Services/Banshee.ServiceStack src/Core/Banshee.Services/Banshee.SmartPlaylist src/Core/Banshee.Services/Banshee.Sources src/Core/Banshee.Services/Banshee.Streaming src/Core/Banshee.Services/Banshee.Web src/Core/Banshee.ThickC lient src/Core/Banshee.ThickClient/Banshee.Collection.Gui src/Core/Banshee.ThickClient/Banshee.Gui src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs src/Core/Banshee.ThickClient/Banshee.Gui.Widgets src/Core/Banshee.ThickClient/Banshee.Sources.Gui src/Core/Banshee.ThickClient/Resources src/Core/Hyena src/Core/Hyena.Gui src/Extensions src/Extensions/Banshee.Lastfm src/Extensions/Banshee.Lastfm/Banshee.Lastfm src/Extensions/Banshee.Lastfm/Resources src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys src/Libraries src/Libraries/Hyena src/Libraries/Hyena.Gui src/Libraries/Hyena/Hyena src/Libraries/Hyena/Hyena.Data src/Libraries/Lastfm src/Libraries/Lastfm.Gui src/Libraries/Lastfm/Lastfm src/Libraries/Mono.Media src/Libraries/Mono.Media/Media.Playlists.Xspf src/Libraries/Mono.Media/Playlists.Xspf
- Date: Thu, 14 Feb 2008 18:07:58 +0000 (GMT)
Author: gburt
Date: Thu Feb 14 18:07:56 2008
New Revision: 3236
URL: http://svn.gnome.org/viewvc/banshee?rev=3236&view=rev
Log:
2008-02-14 Gabriel Burt <gabriel burt gmail com>
The Last.fm extension can actually play music now. Still need to port the
status bar. Also, moved Hyena and Hyena.Gui out of Core and into Libraries.
* build/build.environment.mk: Libraries/Lastfm depends on Libraries/Hyena
for logging.
* configure.ac:
* src/Banshee.mds:
* src/Core/Banshee.Core/Makefile.am:
* src/Core/Core.mds: Reflect new organization.
* src/Libraries/Hyena/Makefile.am:
* src/Libraries/Hyena/Hyena.mdp:
* src/Core/Banshee.Core/Banshee.Core.mdp:
* src/Core/Banshee.Core/Banshee.Base/Log.cs:
* src/Libraries/Hyena/Hyena/Log.cs: Move Log to Hyena, replace
ApplicationContext dep with Debugging property.
* src/Core/Banshee.Core/Banshee.Collection/UnknownTrackInfo.cs:
* src/Core/Banshee.Core/Banshee.Collection/SampleTrackInfo.cs:
* src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs:
* src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs:
* src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Add/use properties
for all attributes - the flags are way to painful an API.
* src/Core/Banshee.Services/Banshee.Services.mdp:
* src/Core/Banshee.Services/Banshee.Sources/Source.cs: Fix whitespace. If
the defining assembly for a source is not Banshee.Services, record it for
use when retrieving resources.
* src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs:
* src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs:
* src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs:
* src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys/MultimediaKeysService.cs:
* src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs:
* src/Backends/Banshee.Unix/Banshee.IO.Unix/Directory.cs:
* src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs:
* src/Core/Banshee.Core/Banshee.IO/Provider.cs:
* src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs:
* src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs:
* src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs:
* src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs:
* src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs:
* src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs:
* src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs:
* src/Core/Banshee.Services/Banshee.Networking/NetworkDetect.cs:
* src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs:
* src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs:
* src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs:
* src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs:
* src/Core/Banshee.Services/Banshee.Web/Browser.cs: Add using Hyena.
* src/Core/Banshee.Core/Banshee.Base/ApplicationContext.cs: Add static
ctor that sets Hyena.Log.Debugging.
* src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs:
* src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/AboutDialog.cs:
* src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/GladeDialog.cs: Add
ctor from stable.
* src/Core/Banshee.ThickClient/Banshee.Gui/IconThemeUtils.cs: Support
loading resources from arbitrary assemblies (eg from extensions).
* src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs:
Specify the Source's defining assembly as the assembly to load the icon
resource from.
* src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml:
* src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Add
RefreshSmartPlaylist action to the Edit menu, and add a BelowAddToPlaylist
placeholder in the track context menu.
* src/Core/Makefile.am:
* src/Core/Hyena.Gui/*:
* src/Core/Hyena/*: Move Hyena* to src/Libraries
* src/Libraries/Makefile.am:
* src/Libraries/Libraries.mds: Add Hyena and Hyena.Gui.
* src/Extensions/Extensions.mds: Add Banshee.Lastfm.
* src/Extensions/Makefile.am: Add Banshee.Lastfm to the build.
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm.mdp: Reflect new/removed
files.
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMSource.cs:
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmSource.cs:
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMTrackInfo.cs:
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmTrackInfo.cs:
* src/Extensions/Banshee.Lastfm/Resources/Banshee.LastFM.addin.xml:
* src/Extensions/Banshee.Lastfm/Resources/Banshee.Lastfm.addin.xml:
Lower case fm.
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmActions.cs:
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmTrackListModel.cs:
New List<TrackInfo> based model.
* src/Extensions/Banshee.Lastfm/Resources/Actions.xml:
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Plugin.cs: Removed.
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationEditor.cs:
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationSource.cs: Update
headers, fix creation/saving, use new model.
* src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationType.cs: Update
header.
* src/Extensions/Banshee.Lastfm/Makefile.am:
* src/Extensions/Banshee.Lastfm/Resources/ActiveSourceUI.xml:
* src/Extensions/Banshee.Lastfm/Resources/GlobalUI.xml: New action
resources.
* src/Libraries/Hyena/Hyena.Data/IFilterable.cs:
* src/Libraries/Hyena/Hyena.Data/ISortable.cs: Whitespace.
* src/Libraries/Hyena/Hyena.Data/PropertyStore.cs: Whitespace, reorder
some logic.
* src/Libraries/Lastfm.Gui/Lastfm.Gui.mdp:
* src/Libraries/Lastfm/Lastfm.mdp:
* src/Libraries/Mono.Media/Mono.Media.mdp: New mdp files.
* src/Libraries/Lastfm/Lastfm/Account.cs: Remove abstract class modifier.
* src/Libraries/Lastfm/Lastfm/Connection.cs: Use Hyena.Log for logging msgs.
* src/Libraries/Mono.Media/Makefile.am:
* src/Libraries/Mono.Media/Playlists.Xspf/*:
* src/Libraries/Mono.Media/Media.Playlists.Xspf/*: Change namespace to
Media.Playlists.Xspf. Merge fix for not-quite-compliant Last.fm Playlist
files from stable.
Added:
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.dll.config.in (props changed)
- copied unchanged from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Plugins.LastFM.dll.config.in
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.mdp (contents, props changed)
- copied, changed from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Plugins.LastFM.mdp
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmActions.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmSource.cs
- copied, changed from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMSource.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmTrackInfo.cs
- copied, changed from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMTrackInfo.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmTrackListModel.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/ActiveSourceUI.xml
trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Banshee.Lastfm.addin.xml (contents, props changed)
- copied, changed from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Banshee.LastFM.addin.xml
trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/GlobalUI.xml (contents, props changed)
- copied, changed from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Actions.xml
trunk/banshee/src/Libraries/Hyena/ (props changed)
- copied from r3233, /trunk/banshee/src/Core/Hyena/
trunk/banshee/src/Libraries/Hyena.Gui/ (props changed)
- copied from r3233, /trunk/banshee/src/Core/Hyena.Gui/
trunk/banshee/src/Libraries/Hyena/Hyena/Log.cs (contents, props changed)
- copied, changed from r3233, /trunk/banshee/src/Core/Banshee.Core/Banshee.Base/Log.cs
trunk/banshee/src/Libraries/Lastfm.Gui/Lastfm.Gui.mdp
trunk/banshee/src/Libraries/Libraries.mds
trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/
- copied from r3233, /trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/
trunk/banshee/src/Libraries/Mono.Media/Mono.Media.mdp
Removed:
trunk/banshee/src/Core/Banshee.Core/Banshee.Base/Log.cs
trunk/banshee/src/Core/Hyena/
trunk/banshee/src/Core/Hyena.Gui/
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMSource.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMTrackInfo.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Plugin.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Plugins.LastFM.dll.config.in
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Plugins.LastFM.mdp
trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Actions.xml
trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Banshee.LastFM.addin.xml
trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/
Modified:
trunk/banshee/ChangeLog
trunk/banshee/build/build.environment.mk
trunk/banshee/configure.ac
trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
trunk/banshee/src/Backends/Banshee.Unix/Banshee.IO.Unix/Directory.cs
trunk/banshee/src/Banshee.mds
trunk/banshee/src/Core/Banshee.Core/Banshee.Base/ApplicationContext.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/SampleTrackInfo.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/UnknownTrackInfo.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs
trunk/banshee/src/Core/Banshee.Core/Banshee.Core.mdp
trunk/banshee/src/Core/Banshee.Core/Banshee.IO/Provider.cs
trunk/banshee/src/Core/Banshee.Core/Makefile.am
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Networking/NetworkDetect.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Services.mdp
trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/Source.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs
trunk/banshee/src/Core/Banshee.Services/Banshee.Web/Browser.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/AboutDialog.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/GladeDialog.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/IconThemeUtils.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs
trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml
trunk/banshee/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml
trunk/banshee/src/Core/Core.mds
trunk/banshee/src/Core/Makefile.am
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationEditor.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationSource.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationType.cs
trunk/banshee/src/Extensions/Banshee.Lastfm/Makefile.am
trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys/MultimediaKeysService.cs
trunk/banshee/src/Extensions/Extensions.mds
trunk/banshee/src/Extensions/Makefile.am
trunk/banshee/src/Libraries/Hyena/Hyena.Data/IFilterable.cs
trunk/banshee/src/Libraries/Hyena/Hyena.Data/ISortable.cs
trunk/banshee/src/Libraries/Hyena/Hyena.Data/PropertyStore.cs
trunk/banshee/src/Libraries/Hyena/Hyena.mdp
trunk/banshee/src/Libraries/Hyena/Makefile.am
trunk/banshee/src/Libraries/Lastfm/Lastfm.mdp
trunk/banshee/src/Libraries/Lastfm/Lastfm/Account.cs
trunk/banshee/src/Libraries/Lastfm/Lastfm/Connection.cs
trunk/banshee/src/Libraries/Makefile.am
trunk/banshee/src/Libraries/Mono.Media/Makefile.am
trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/LinkEntry.cs
trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/MetaEntry.cs
trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Playlist.cs
trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Track.cs
trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/W3CDateTime.cs
trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/XmlUtil.cs
trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/XspfBaseObject.cs
Modified: trunk/banshee/build/build.environment.mk
==============================================================================
--- trunk/banshee/build/build.environment.mk (original)
+++ trunk/banshee/build/build.environment.mk Thu Feb 14 18:07:56 2008
@@ -49,19 +49,32 @@
#REF_GNOME_KEYRING = $(LINK_DBUS) $(LINK_MONO_POSIX)
#LINK_GNOME_KEYRING = -r:$(DIR_GNOME_KEYRING)/Gnome.Keyring.dll
#LINK_GNOME_KEYRING_DEPS = $(REF_GNOME_KEYRING) $(LINK_GNOME_KEYRING)
-#
-REF_LASTFM = $(LINK_SYSTEM) $(LINK_SYSTEM_WEB) $(LINK_MONO_MEDIA) $(LINK_MONO_POSIX)
+
+# Hyena
+REF_HYENA = $(LINK_SYSTEM) $(LINK_SQLITE)
+LINK_HYENA = -r:$(DIR_BIN)/Hyena.dll
+LINK_HYENA_DEPS = $(REF_HYENA) $(LINK_HYENA)
+
+# Hyena.Gui
+REF_HYENA_GUI = $(LINK_HYENA_DEPS) $(LINK_MONO_POSIX) $(LINK_CAIRO) $(LINK_GTK)
+LINK_HYENA_GUI = -r:$(DIR_BIN)/Hyena.Gui.dll
+LINK_HYENA_GUI_DEPS = $(REF_HYENA_GUI) $(LINK_HYENA_GUI)
+
+# Lastfm
+REF_LASTFM = $(LINK_SYSTEM) $(LINK_SYSTEM_WEB) $(LINK_MONO_MEDIA) $(LINK_MONO_POSIX) $(LINK_HYENA)
LINK_LASTFM = -r:$(DIR_BIN)/Lastfm.dll
LINK_LASTFM_DEPS = $(REF_LASTFM) $(LINK_LASTFM)
+# Lastfm.Gui
REF_LASTFM_GUI = $(LINK_GLIB) $(LINK_GTK) $(LINK_LASTFM_DEPS)
LINK_LASTFM_GUI = -r:$(DIR_BIN)/Lastfm.Gui.dll
LINK_LASTFM_GUI_DEPS = $(REF_LASTFM_GUI) $(LINK_LASTFM_GUI)
+# Mono.Media
REF_MONO_MEDIA = $(LINK_SYSTEM)
LINK_MONO_MEDIA = -r:$(DIR_BIN)/Mono.Media.dll
LINK_MONO_MEDIA_DEPS = $(REF_MONO_MEDIA) $(LINK_MONO_MEDIA)
-#
+
#DIR_MUSICBRAINZ = $(DIR_LIBRARIES)/MusicBrainz
#MONO_BASE_PATH += $(DIR_MUSICBRAINZ)
#REF_MUSICBRAINZ = $(LINK_SYSTEM)
@@ -70,13 +83,6 @@
# Core
-REF_HYENA = $(LINK_SYSTEM) $(LINK_SQLITE)
-LINK_HYENA = -r:$(DIR_BIN)/Hyena.dll
-LINK_HYENA_DEPS = $(REF_HYENA) $(LINK_HYENA)
-
-REF_HYENA_GUI = $(LINK_HYENA_DEPS) $(LINK_MONO_POSIX) $(LINK_CAIRO) $(LINK_GTK)
-LINK_HYENA_GUI = -r:$(DIR_BIN)/Hyena.Gui.dll
-LINK_HYENA_GUI_DEPS = $(REF_HYENA_GUI) $(LINK_HYENA_GUI)
REF_BANSHEE_CORE = $(LINK_HYENA_DEPS) $(LINK_MONO_POSIX) $(LINK_GLIB) \
$(LINK_DBUS) $(LINK_TAGLIB) $(LINK_MONO_ADDINS_DEPS)
@@ -114,7 +120,7 @@
REF_EXTENSION_MULTIMEDIAKEYS = $(LINK_BANSHEE_SERVICES_DEPS)
REF_EXTENSION_NOTIFICATIONAREA = $(LINK_BANSHEE_THICKCLIENT_DEPS)
REF_EXTENSION_PLAYQUEUE = $(LINK_BANSHEE_THICKCLIENT_DEPS)
-REF_EXTENSION_LASTFM = $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_LAST_FM) -r:System.Data -r:System.Web -r:System.Xml
+REF_EXTENSION_LASTFM = $(LINK_BANSHEE_THICKCLIENT_DEPS) $(LINK_MONO_MEDIA) $(LINK_LASTFM) $(LINK_LASTFM_GUI)
# Build rules
# Ignoring 0278 due to a bug in gmcs:
Modified: trunk/banshee/configure.ac
==============================================================================
--- trunk/banshee/configure.ac (original)
+++ trunk/banshee/configure.ac Thu Feb 14 18:07:56 2008
@@ -121,8 +121,6 @@
src/AssemblyInfo.cs
src/Core/Makefile
-src/Core/Hyena/Makefile
-src/Core/Hyena.Gui/Makefile
src/Core/Banshee.Core/Makefile
src/Core/Banshee.Services/Makefile
src/Core/Banshee.ThickClient/Makefile
@@ -140,9 +138,11 @@
src/Backends/Banshee.Unix/Makefile
src/Libraries/Makefile
-src/Libraries/Mono.Media/Makefile
+src/Libraries/Hyena/Makefile
+src/Libraries/Hyena.Gui/Makefile
src/Libraries/Lastfm/Makefile
src/Libraries/Lastfm.Gui/Makefile
+src/Libraries/Mono.Media/Makefile
src/Extensions/Makefile
src/Extensions/Banshee.Audioscrobbler/Makefile
Modified: trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs
==============================================================================
--- trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs (original)
+++ trunk/banshee/src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs Thu Feb 14 18:07:56 2008
@@ -30,6 +30,7 @@
using System.Collections;
using System.Runtime.InteropServices;
using Mono.Unix;
+using Hyena;
using Hyena.Data;
using Banshee.Base;
Modified: trunk/banshee/src/Backends/Banshee.Unix/Banshee.IO.Unix/Directory.cs
==============================================================================
--- trunk/banshee/src/Backends/Banshee.Unix/Banshee.IO.Unix/Directory.cs (original)
+++ trunk/banshee/src/Backends/Banshee.Unix/Banshee.IO.Unix/Directory.cs Thu Feb 14 18:07:56 2008
@@ -31,6 +31,7 @@
using System.Collections.Generic;
using Mono.Unix;
+using Hyena;
using Banshee.Base;
namespace Banshee.IO.Unix
Modified: trunk/banshee/src/Banshee.mds
==============================================================================
--- trunk/banshee/src/Banshee.mds (original)
+++ trunk/banshee/src/Banshee.mds Thu Feb 14 18:07:56 2008
@@ -10,10 +10,12 @@
<Execute type="None" entry="Core" />
<Execute type="None" entry="Engines" />
<Execute type="None" entry="Extensions" />
+ <Execute type="None" entry="Libraries" />
</StartMode>
<Entries>
<Entry filename="Core/Core.mds" />
<Entry filename="Backends/Backends.mds" />
<Entry filename="Extensions/Extensions.mds" />
+ <Entry filename="Libraries/Libraries.mds" />
</Entries>
-</Combine>
\ No newline at end of file
+</Combine>
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Base/ApplicationContext.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Base/ApplicationContext.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Base/ApplicationContext.cs Thu Feb 14 18:07:56 2008
@@ -27,6 +27,8 @@
//
using System;
+
+using Hyena;
using Hyena.CommandLine;
namespace Banshee.Base
@@ -66,5 +68,9 @@
public static System.Globalization.CultureInfo InternalCultureInfo {
get { return culture_info; }
}
+
+ static ApplicationContext () {
+ Log.Debugging = Debugging;
+ }
}
}
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/SampleTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/SampleTrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/SampleTrackInfo.cs Thu Feb 14 18:07:56 2008
@@ -42,7 +42,8 @@
Duration = TimeSpan.FromSeconds (182);
Year = 1965;
- Attributes |= TrackAttributes.CanPlay | TrackAttributes.CanSaveToDatabase;
+ CanPlay = true;
+ CanSaveToDatabase = true;
}
}
}
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs Thu Feb 14 18:07:56 2008
@@ -63,14 +63,17 @@
private int skip_count;
private DateTime last_played;
- private TrackAttributes attributes;
-
private StreamPlaybackError playback_error = StreamPlaybackError.None;
public TrackInfo ()
{
}
+ public virtual void IncrementPlayCount ()
+ {
+ PlayCount++;
+ }
+
public override string ToString ()
{
return String.Format ("{0} - {1} (on {2}) <{3}> [{4}]", ArtistName, TrackTitle,
@@ -220,22 +223,27 @@
set { last_played = value; }
}
- public virtual TrackAttributes Attributes {
- get { return attributes; }
- protected set { attributes = value; }
- }
-
public virtual StreamPlaybackError PlaybackError {
get { return playback_error; }
set { playback_error = value; }
}
+
+ private bool can_save_to_database = true;
+ public bool CanSaveToDatabase {
+ get { return can_save_to_database; }
+ set { can_save_to_database = value; }
+ }
+ private bool is_live = false;
public bool IsLive {
- get { return (Attributes & TrackAttributes.IsLive) == TrackAttributes.IsLive; }
+ get { return is_live; }
+ set { is_live = value; }
}
+ private bool can_play = true;
public bool CanPlay {
- get { return (Attributes & TrackAttributes.CanPlay) == TrackAttributes.CanPlay; }
+ get { return can_play; }
+ set { can_play = value; }
}
// Generates a{sv} of self according to http://wiki.xmms2.xmms.se/index.php/Media_Player_Interfaces#.22Metadata.22
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/UnknownTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/UnknownTrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/UnknownTrackInfo.cs Thu Feb 14 18:07:56 2008
@@ -37,7 +37,7 @@
public UnknownTrackInfo(SafeUri uri)
{
Uri = uri;
- Attributes |= TrackAttributes.IsLive;
+ IsLive = true;
}
}
}
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs Thu Feb 14 18:07:56 2008
@@ -29,6 +29,7 @@
using System;
using Mono.Addins;
+using Hyena;
using Banshee.Base;
namespace Banshee.Configuration
@@ -99,4 +100,4 @@
client.Set<T> (@namespace, key, value);
}
}
-}
\ No newline at end of file
+}
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Core.mdp
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Core.mdp (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Core.mdp Thu Feb 14 18:07:56 2008
@@ -40,7 +40,6 @@
<File name="Banshee.Collection/IBasicTrackInfo.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Configuration.Schema/ImportSchema.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Configuration.Schema/LibrarySchema.cs" subtype="Code" buildaction="Compile" />
- <File name="Banshee.Base/Log.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Base/ProductInformation.cs" subtype="Code" buildaction="Compile" />
<File name="Resources/contributors.xml" subtype="Code" buildaction="EmbedAsResource" />
<File name="Resources/translators.xml" subtype="Code" buildaction="EmbedAsResource" />
@@ -82,4 +81,4 @@
<AsmRefVar />
<ProjectRefVar />
</MonoDevelop.Autotools.MakefileInfo>
-</Project>
\ No newline at end of file
+</Project>
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.IO/Provider.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.IO/Provider.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.IO/Provider.cs Thu Feb 14 18:07:56 2008
@@ -30,6 +30,7 @@
using System.Reflection;
using Mono.Addins;
+using Hyena;
using Banshee.Base;
using Banshee.Configuration;
Modified: trunk/banshee/src/Core/Banshee.Core/Makefile.am
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Makefile.am (original)
+++ trunk/banshee/src/Core/Banshee.Core/Makefile.am Thu Feb 14 18:07:56 2008
@@ -6,7 +6,6 @@
Banshee.Base/CoverArtSpec.cs \
Banshee.Base/FileNamePattern.cs \
Banshee.Base/Localization.cs \
- Banshee.Base/Log.cs \
Banshee.Base/NamingUtil.cs \
Banshee.Base/Paths.cs \
Banshee.Base/PlatformHacks.cs \
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs Thu Feb 14 18:07:56 2008
@@ -66,7 +66,6 @@
public LibraryTrackInfo () : base ()
{
- Attributes |= TrackAttributes.CanPlay;
}
public override void Save ()
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs Thu Feb 14 18:07:56 2008
@@ -32,6 +32,7 @@
using System.Threading;
using Mono.Unix;
+using Hyena;
using Banshee.IO;
using Banshee.Base;
using Banshee.ServiceStack;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs Thu Feb 14 18:07:56 2008
@@ -31,6 +31,7 @@
using Mono.Unix;
+using Hyena;
using Banshee.Base;
using Banshee.Sources;
using Banshee.ServiceStack;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs Thu Feb 14 18:07:56 2008
@@ -178,7 +178,7 @@
protected void OnTagFound (StreamTag tag)
{
if (tag.Equals (StreamTag.Zero) || current_track == null ||
- current_track.Attributes & TrackAttributes.IsLive == 0) {
+ !current_track.IsLive) {
return;
}
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs Thu Feb 14 18:07:56 2008
@@ -34,6 +34,7 @@
using Mono.Unix;
using Mono.Addins;
+using Hyena;
using Banshee.Base;
using Banshee.Streaming;
using Banshee.ServiceStack;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs Thu Feb 14 18:07:56 2008
@@ -33,6 +33,7 @@
using System.Text;
using System.Collections.Generic;
+using Hyena;
using Banshee.Base;
using Banshee.Metadata;
using Banshee.Kernel;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs Thu Feb 14 18:07:56 2008
@@ -34,6 +34,7 @@
using System.Text.RegularExpressions;
using System.Collections.Generic;
+using Hyena;
using Banshee.Base;
using Banshee.Collection;
using Banshee.Metadata;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Networking/NetworkDetect.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Networking/NetworkDetect.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Networking/NetworkDetect.cs Thu Feb 14 18:07:56 2008
@@ -29,6 +29,8 @@
using System;
using System.Collections;
using Mono.Unix;
+
+using Hyena;
using Banshee.Base;
namespace Banshee.Networking
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs Thu Feb 14 18:07:56 2008
@@ -28,6 +28,7 @@
using System;
+using Hyena;
using Hyena.Collections;
using Banshee.Base;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs Thu Feb 14 18:07:56 2008
@@ -33,6 +33,7 @@
using NDesk.DBus;
using org.freedesktop.DBus;
+using Hyena;
using Banshee.Base;
namespace Banshee.ServiceStack
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs Thu Feb 14 18:07:56 2008
@@ -32,6 +32,7 @@
using Mono.Addins;
+using Hyena;
using Banshee.Base;
using Banshee.AudioProfiles;
using Banshee.Sources;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Services.mdp
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Services.mdp (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Services.mdp Thu Feb 14 18:07:56 2008
@@ -61,13 +61,6 @@
<File name="Banshee.Playlists.Formats/PlaylistFormatDescription.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Playlists.Formats/PlaylistParser.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Playlists.Formats/PlsPlaylistFormat.cs" subtype="Code" buildaction="Compile" />
- <File name="Banshee.Playlists.Formats.Xspf/LinkEntry.cs" subtype="Code" buildaction="Compile" />
- <File name="Banshee.Playlists.Formats.Xspf/MetaEntry.cs" subtype="Code" buildaction="Compile" />
- <File name="Banshee.Playlists.Formats.Xspf/Playlist.cs" subtype="Code" buildaction="Compile" />
- <File name="Banshee.Playlists.Formats.Xspf/Track.cs" subtype="Code" buildaction="Compile" />
- <File name="Banshee.Playlists.Formats.Xspf/W3CDateTime.cs" subtype="Code" buildaction="Compile" />
- <File name="Banshee.Playlists.Formats.Xspf/XmlUtil.cs" subtype="Code" buildaction="Compile" />
- <File name="Banshee.Playlists.Formats.Xspf/XspfBaseObject.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Web/Browser.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Streaming/RadioTrackInfo.cs" subtype="Code" buildaction="Compile" />
<File name="Banshee.Equalizer/EqualizerSetting.cs" subtype="Code" buildaction="Compile" />
@@ -151,4 +144,4 @@
<AsmRefVar />
<ProjectRefVar />
</MonoDevelop.Autotools.MakefileInfo>
-</Project>
\ No newline at end of file
+</Project>
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs Thu Feb 14 18:07:56 2008
@@ -5,6 +5,7 @@
using Mono.Unix;
+using Hyena;
using Hyena.Query;
using Banshee.Base;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs Thu Feb 14 18:07:56 2008
@@ -34,6 +34,7 @@
using Mono.Unix;
+using Hyena;
using Hyena.Query;
using Hyena.Data.Sqlite;
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/Source.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/Source.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Sources/Source.cs Thu Feb 14 18:07:56 2008
@@ -27,6 +27,7 @@
//
using System;
+using System.Reflection;
using System.Text;
using System.Collections;
using System.Collections.Generic;
@@ -44,36 +45,43 @@
public abstract class Source : ISource
{
private Source parent;
- private PropertyStore properties = new PropertyStore();
- private List<Source> child_sources = new List<Source>();
+ private PropertyStore properties = new PropertyStore ();
+ private List<Source> child_sources = new List<Source> ();
public event EventHandler Updated;
public event EventHandler UserNotifyUpdated;
public event SourceEventHandler ChildSourceAdded;
public event SourceEventHandler ChildSourceRemoved;
- protected Source(string generic_name, string name, int order)
+ protected Source (string generic_name, string name, int order)
{
GenericName = generic_name;
Name = name;
Order = order;
-
+
+ // If this source is not defined in Banshee.Services, set its
+ // ResourceAssembly to the assembly where it is defined.
+ Assembly asm = Assembly.GetAssembly (this.GetType ());//Assembly.GetCallingAssembly ();
+ if (asm != Assembly.GetExecutingAssembly ()) {
+ Properties.Set<Assembly> ("ResourceAssembly", asm);
+ }
+
properties.PropertyChanged += OnPropertyChanged;
}
- protected void OnSetupComplete()
+ protected void OnSetupComplete ()
{
- if(this is ITrackModelSource) {
+ if (this is ITrackModelSource) {
ITrackModelSource tm_source = (ITrackModelSource)this;
tm_source.TrackModel.Parent = this;
- ServiceManager.DBusServiceManager.RegisterObject(tm_source.TrackModel);
+ ServiceManager.DBusServiceManager.RegisterObject (tm_source.TrackModel);
tm_source.ArtistModel.Parent = this;
- ServiceManager.DBusServiceManager.RegisterObject(tm_source.ArtistModel);
+ ServiceManager.DBusServiceManager.RegisterObject (tm_source.ArtistModel);
tm_source.AlbumModel.Parent = this;
- ServiceManager.DBusServiceManager.RegisterObject(tm_source.AlbumModel);
+ ServiceManager.DBusServiceManager.RegisterObject (tm_source.AlbumModel);
}
}
@@ -90,17 +98,17 @@
#region Public Methods
- public virtual void Activate()
+ public virtual void Activate ()
{
}
- public virtual void Deactivate()
+ public virtual void Deactivate ()
{
}
- public virtual void Rename(string newName)
+ public virtual void Rename (string newName)
{
- properties.SetString("Name", newName);
+ properties.SetString ("Name", newName);
}
public virtual bool AcceptsInputFromSource (Source source)
@@ -122,9 +130,9 @@
this.parent = parent;
}
- public virtual void AddChildSource(Source child)
+ public virtual void AddChildSource (Source child)
{
- lock(Children) {
+ lock (Children) {
child.SetParentSource (this);
child_sources.Add (child);
OnChildSourceAdded (child);
@@ -141,7 +149,7 @@
child_sources.Remove (child);
if (ServiceManager.SourceManager.ActiveSource == child) {
- ServiceManager.SourceManager.SetActiveSource(ServiceManager.SourceManager.DefaultSource);
+ ServiceManager.SourceManager.SetActiveSource (ServiceManager.SourceManager.DefaultSource);
}
OnChildSourceRemoved (child);
@@ -150,8 +158,8 @@
public virtual void ClearChildSources ()
{
- lock(Children) {
- while(child_sources.Count > 0) {
+ lock (Children) {
+ while (child_sources.Count > 0) {
RemoveChildSource (child_sources[child_sources.Count - 1]);
}
}
@@ -192,39 +200,39 @@
#region Protected Methods
- protected virtual void OnChildSourceAdded(Source source)
+ protected virtual void OnChildSourceAdded (Source source)
{
SourceEventHandler handler = ChildSourceAdded;
- if(handler != null) {
- SourceEventArgs args = new SourceEventArgs();
+ if (handler != null) {
+ SourceEventArgs args = new SourceEventArgs ();
args.Source = source;
- handler(args);
+ handler (args);
}
}
- protected virtual void OnChildSourceRemoved(Source source)
+ protected virtual void OnChildSourceRemoved (Source source)
{
SourceEventHandler handler = ChildSourceRemoved;
- if(handler != null) {
- SourceEventArgs args = new SourceEventArgs();
+ if (handler != null) {
+ SourceEventArgs args = new SourceEventArgs ();
args.Source = source;
- handler(args);
+ handler (args);
}
}
- protected virtual void OnUpdated()
+ protected virtual void OnUpdated ()
{
EventHandler handler = Updated;
- if(handler != null) {
- handler(this, EventArgs.Empty);
+ if (handler != null) {
+ handler (this, EventArgs.Empty);
}
}
- protected virtual void OnUserNotifyUpdated()
+ protected virtual void OnUserNotifyUpdated ()
{
EventHandler handler = UserNotifyUpdated;
- if(handler != null) {
- handler(this, EventArgs.Empty);
+ if (handler != null) {
+ handler (this, EventArgs.Empty);
}
}
@@ -232,9 +240,9 @@
#region Private Methods
- private void OnPropertyChanged(object o, PropertyChangeEventArgs args)
+ private void OnPropertyChanged (object o, PropertyChangeEventArgs args)
{
- OnUpdated();
+ OnUpdated ();
}
#endregion
@@ -264,18 +272,18 @@
}
public string Name {
- get { return properties.GetString("Name"); }
- set { properties.SetString("Name", value); }
+ get { return properties.GetString ("Name"); }
+ set { properties.SetString ("Name", value); }
}
public string GenericName {
- get { return properties.GetString("GenericName"); }
- set { properties.SetString("GenericName", value); }
+ get { return properties.GetString ("GenericName"); }
+ set { properties.SetString ("GenericName", value); }
}
public int Order {
- get { return properties.GetInteger("Order"); }
- set { properties.SetInteger("Order", value); }
+ get { return properties.GetInteger ("Order"); }
+ set { properties.SetInteger ("Order", value); }
}
public virtual bool ImplementsCustomSearch {
@@ -287,18 +295,18 @@
}
public virtual string FilterQuery {
- get { return properties.GetString("FilterQuery"); }
- set { properties.SetString("FilterQuery", value); }
+ get { return properties.GetString ("FilterQuery"); }
+ set { properties.SetString ("FilterQuery", value); }
}
public TrackFilterType FilterType {
- get { return (TrackFilterType)properties.GetInteger("FilterType"); }
- set { properties.SetInteger("FilterType", (int)value); }
+ get { return (TrackFilterType)properties.GetInteger ("FilterType"); }
+ set { properties.SetInteger ("FilterType", (int)value); }
}
public virtual bool Expanded {
- get { return properties.GetBoolean("Expanded"); }
- set { properties.SetBoolean("Expanded", value); }
+ get { return properties.GetBoolean ("Expanded"); }
+ set { properties.SetBoolean ("Expanded", value); }
}
public virtual bool? AutoExpand {
@@ -359,7 +367,7 @@
}
string IService.ServiceName {
- get { return DBusServiceManager.MakeDBusSafeString(Name) + "Source"; }
+ get { return DBusServiceManager.MakeDBusSafeString (Name) + "Source"; }
}
IDBusExportable IDBusExportable.Parent {
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs Thu Feb 14 18:07:56 2008
@@ -30,7 +30,8 @@
using System.Threading;
using System.Collections.Generic;
-using Playlists.Xspf;
+using Hyena;
+using Media.Playlists.Xspf;
using Banshee.Base;
using Banshee.Collection;
@@ -52,7 +53,7 @@
protected RadioTrackInfo()
{
- Attributes |= TrackAttributes.IsLive | TrackAttributes.CanPlay;
+ IsLive = true;
}
public RadioTrackInfo(Track track) : this()
Modified: trunk/banshee/src/Core/Banshee.Services/Banshee.Web/Browser.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Services/Banshee.Web/Browser.cs (original)
+++ trunk/banshee/src/Core/Banshee.Services/Banshee.Web/Browser.cs Thu Feb 14 18:07:56 2008
@@ -29,6 +29,7 @@
using System;
using Mono.Unix;
+using Hyena;
using Banshee.Base;
using Banshee.ServiceStack;
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs Thu Feb 14 18:07:56 2008
@@ -35,6 +35,7 @@
using Gdk;
+using Hyena;
using Banshee.Base;
using Banshee.ServiceStack;
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/AboutDialog.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/AboutDialog.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/AboutDialog.cs Thu Feb 14 18:07:56 2008
@@ -33,6 +33,7 @@
using Gtk;
using Mono.Unix;
+using Hyena;
using Banshee.Base;
namespace Banshee.Gui.Dialogs
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/GladeDialog.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/GladeDialog.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/GladeDialog.cs Thu Feb 14 18:07:56 2008
@@ -36,6 +36,10 @@
public GladeDialog(string name) : base(name)
{
}
+
+ public GladeDialog(string name, Glade.XML resource) : base(name, resource)
+ {
+ }
public virtual ResponseType Run()
{
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs Thu Feb 14 18:07:56 2008
@@ -34,6 +34,7 @@
using Gtk;
using Cairo;
+using Hyena;
using Hyena.Gui;
using Hyena.Gui.Theatrics;
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs Thu Feb 14 18:07:56 2008
@@ -30,6 +30,7 @@
using Mono.Unix;
using Gtk;
+using Hyena;
using Banshee.Base;
using Banshee.ServiceStack;
using Banshee.Streaming;
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs Thu Feb 14 18:07:56 2008
@@ -28,6 +28,7 @@
using System;
+using Hyena;
using Banshee.Base;
using Banshee.ServiceStack;
using Banshee.Gui.Dialogs;
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/IconThemeUtils.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/IconThemeUtils.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Gui/IconThemeUtils.cs Thu Feb 14 18:07:56 2008
@@ -34,8 +34,7 @@
{
public static class IconThemeUtils
{
- private static Assembly assembly = Assembly.GetExecutingAssembly ();
- private static string [] resource_names;
+ private static Assembly executing_assembly = Assembly.GetExecutingAssembly ();
public static bool HasIcon (string name)
{
@@ -44,8 +43,13 @@
public static Gdk.Pixbuf LoadIcon (int size, params string [] names)
{
+ return LoadIcon (executing_assembly, size, names);
+ }
+
+ public static Gdk.Pixbuf LoadIcon (Assembly assembly, int size, params string [] names)
+ {
for (int i = 0; i < names.Length; i++) {
- Gdk.Pixbuf pixbuf = LoadIcon (names[i], size, i == names.Length - 1);
+ Gdk.Pixbuf pixbuf = LoadIcon (assembly, names[i], size, i == names.Length - 1);
if (pixbuf != null) {
return pixbuf;
}
@@ -56,13 +60,19 @@
public static Gdk.Pixbuf LoadIcon (string name, int size)
{
- return LoadIcon (name, size, true);
+ return LoadIcon (executing_assembly, name, size, true);
}
public static Gdk.Pixbuf LoadIcon (string name, int size, bool fallBackOnResource)
{
+ return LoadIcon (executing_assembly, name, size, fallBackOnResource);
+ }
+
+ public static Gdk.Pixbuf LoadIcon (Assembly assembly, string name, int size, bool fallBackOnResource)
+ {
+ Gdk.Pixbuf pixbuf = null;
try {
- Gdk.Pixbuf pixbuf = IconTheme.Default.LoadIcon (name, size, (IconLookupFlags)0);
+ pixbuf = IconTheme.Default.LoadIcon (name, size, (IconLookupFlags)0);
if (pixbuf != null) {
return pixbuf;
}
@@ -72,27 +82,23 @@
if (!fallBackOnResource) {
return null;
}
-
+
+ assembly = assembly ?? executing_assembly;
+
+ string desired_resource_name = String.Format ("{0}.png", name);
+ string desired_resource_name_with_size = String.Format ("{0}-{1}.png", name, size);
+
try {
- if (resource_names == null) {
- resource_names = assembly.GetManifestResourceNames ();
- }
-
- string desired_resource_name = name + ".png";
- string desired_resource_name_with_size = String.Format ("{0}-{1}.png", name, size);
-
- foreach (string resource_name in resource_names) {
- if (resource_name == desired_resource_name) {
- return new Gdk.Pixbuf (assembly, desired_resource_name);
- } else if (resource_name == desired_resource_name_with_size) {
- return new Gdk.Pixbuf (assembly, desired_resource_name_with_size);
- }
- }
-
- return null;
- } catch {
- return null;
- }
+ if (assembly.GetManifestResourceInfo (desired_resource_name) != null)
+ return new Gdk.Pixbuf (assembly, desired_resource_name);
+ } catch {}
+
+ try {
+ if (assembly.GetManifestResourceInfo (desired_resource_name_with_size) != null)
+ return new Gdk.Pixbuf (assembly, desired_resource_name_with_size);
+ } catch {}
+
+ return null;
}
}
}
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs Thu Feb 14 18:07:56 2008
@@ -27,6 +27,7 @@
//
using System;
+using System.Reflection;
using Gtk;
using Gdk;
using Pango;
@@ -183,27 +184,26 @@
private Gdk.Pixbuf ResolveSourceIcon (Source source)
{
- Hyena.Data.PropertyStore properties = source.Properties;
Gdk.Pixbuf icon = source.Properties.Get<Gdk.Pixbuf> ("IconPixbuf");
if (icon != null) {
return icon;
}
- Type icon_type = properties.GetType ("IconName");
-
+ Type icon_type = source.Properties.GetType ("IconName");
+ Assembly asm = source.Properties.Get<Assembly> ("ResourceAssembly");
if(icon_type == typeof (string)) {
- icon = Banshee.Gui.IconThemeUtils.LoadIcon (22, properties.GetString ("IconName"));
+ icon = Banshee.Gui.IconThemeUtils.LoadIcon (asm, 22, source.Properties.GetString ("IconName"));
} else if (icon_type == typeof (string [])) {
- icon = Banshee.Gui.IconThemeUtils.LoadIcon (22, properties.GetStringList ("IconName"));
+ icon = Banshee.Gui.IconThemeUtils.LoadIcon (asm, 22, source.Properties.GetStringList ("IconName"));
}
-
+
if (icon == null) {
icon = Banshee.Gui.IconThemeUtils.LoadIcon (22, "image-missing");
}
if (icon != null) {
- properties.Set<Gdk.Pixbuf> ("IconPixbuf", icon);
+ source.Properties.Set<Gdk.Pixbuf> ("IconPixbuf", icon);
}
return icon;
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml Thu Feb 14 18:07:56 2008
@@ -8,5 +8,15 @@
<ImportSource class="Banshee.Library.Gui.FolderImportSource"/>
<ImportSource class="Banshee.Library.Gui.FileImportSource"/>
</Extension>
+
+ <ExtensionPoint path="/Banshee/ThickClient/ActionGroup">
+ <Description>Defines a new action group, possibly in conjunction with a Source extension.</Description>
+ <ExtensionNode name="ActionGroup"/>
+ </ExtensionPoint>
+
+ <ExtensionPoint path="/Banshee/ThickClient/SourceView">
+ <Description>Defines a new action group, possibly in conjunction with a Source extension.</Description>
+ <ExtensionNode name="ActionGroup"/>
+ </ExtensionPoint>
</Addin>
Modified: trunk/banshee/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml
==============================================================================
--- trunk/banshee/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml (original)
+++ trunk/banshee/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml Thu Feb 14 18:07:56 2008
@@ -36,6 +36,7 @@
<menuitem name="DeleteTracksFromDrive" action="DeleteTracksFromDriveAction"/>
<separator/>
<menuitem name="RenameSource" action="RenameSourceAction"/>
+ <menuitem name="RefreshSmartPlaylist" action="RefreshSmartPlaylistAction"/>
<!--<menuitem name="ExportPlaylist" action="ExportPlaylistAction"/>-->
<menuitem name="SourceProperties" action="SourcePropertiesAction"/>
<menuitem name="UnmapSource" action="UnmapSourceAction"/>
@@ -117,6 +118,7 @@
<popup name="TrackContextMenu" action="TrackContextMenuAction">
<placeholder name="AboveAddToPlaylist"/>
<menu name="AddToPlaylist" action="AddToPlaylistAction"></menu>
+ <placeholder name="BelowAddToPlaylist"/>
<separator/>
<menuitem name="RemoveTracks" action="RemoveTracksAction"/>
<menuitem name="RemoveTracksFromLibrary" action="RemoveTracksFromLibraryAction"/>
Modified: trunk/banshee/src/Core/Core.mds
==============================================================================
--- trunk/banshee/src/Core/Core.mds (original)
+++ trunk/banshee/src/Core/Core.mds Thu Feb 14 18:07:56 2008
@@ -2,8 +2,6 @@
<Configurations active="Debug">
<Configuration name="Debug" ctype="CombineConfiguration">
<Entry build="True" name="Banshee.Widgets" configuration="Debug" />
- <Entry build="True" name="Hyena" configuration="Debug" />
- <Entry build="True" name="Hyena.Gui" configuration="Debug" />
<Entry build="True" name="Banshee.Services" configuration="Debug" />
<Entry build="True" name="Banshee.Core" configuration="Debug" />
<Entry build="True" name="Nereid" configuration="Debug" />
@@ -13,8 +11,6 @@
<StartMode startupentry="Nereid" single="True">
<Execute type="None" entry="Banshee.Widgets" />
<Execute type="None" entry="Banshee.Base" />
- <Execute type="None" entry="Hyena" />
- <Execute type="None" entry="Hyena.Gui" />
<Execute type="None" entry="Banshee.Services" />
<Execute type="None" entry="Banshee.Core" />
<Execute type="None" entry="Nereid" />
@@ -22,11 +18,9 @@
</StartMode>
<Entries>
<Entry filename="Banshee.Widgets/Banshee.Widgets.mdp" />
- <Entry filename="Hyena/Hyena.mdp" />
- <Entry filename="Hyena.Gui/Hyena.Gui.mdp" />
<Entry filename="Banshee.Services/Banshee.Services.mdp" />
<Entry filename="Banshee.Core/Banshee.Core.mdp" />
<Entry filename="Nereid/Nereid.mdp" />
<Entry filename="Banshee.ThickClient/Banshee.ThickClient.mdp" />
</Entries>
-</Combine>
\ No newline at end of file
+</Combine>
Modified: trunk/banshee/src/Core/Makefile.am
==============================================================================
--- trunk/banshee/src/Core/Makefile.am (original)
+++ trunk/banshee/src/Core/Makefile.am Thu Feb 14 18:07:56 2008
@@ -1,6 +1,4 @@
SUBDIRS = \
- Hyena \
- Hyena.Gui \
Banshee.Core \
Banshee.Services \
Banshee.Widgets \
Copied: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.mdp (from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Plugins.LastFM.mdp)
==============================================================================
--- /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Plugins.LastFM.mdp (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm.mdp Thu Feb 14 18:07:56 2008
@@ -8,20 +8,19 @@
</Configuration>
</Configurations>
<Contents>
- <File name="./Plugin.cs" subtype="Code" buildaction="Compile" />
- <File name="./Editor.cs" subtype="Code" buildaction="Compile" />
- <File name="./LastFMSource.cs" subtype="Code" buildaction="Compile" />
- <File name="./LastFMTrackInfo.cs" subtype="Code" buildaction="Compile" />
- <File name="./Connection.cs" subtype="Code" buildaction="Compile" />
- <File name="./StationSource.cs" subtype="Code" buildaction="Compile" />
- <File name="./StationType.cs" subtype="Code" buildaction="Compile" />
- <File name="./data/Actions.xml" subtype="Code" buildaction="EmbedAsResource" />
- <File name="./data/lastfm.glade" subtype="Code" buildaction="EmbedAsResource" />
- <File name="./data/audioscrobbler.png" subtype="Code" buildaction="EmbedAsResource" />
- <File name="./data/loved.png" subtype="Code" buildaction="EmbedAsResource" />
- <File name="./data/people.png" subtype="Code" buildaction="EmbedAsResource" />
- <File name="./data/person.png" subtype="Code" buildaction="EmbedAsResource" />
- <File name="./data/recommended.png" subtype="Code" buildaction="EmbedAsResource" />
+ <File name="./Banshee.Lastfm/LastfmActions.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Banshee.Lastfm/LastfmSource.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Banshee.Lastfm/LastfmTrackInfo.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Banshee.Lastfm/StationEditor.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Banshee.Lastfm/StationSource.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Banshee.Lastfm/StationType.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Resources/Actions.xml" subtype="Code" buildaction="EmbedAsResource" />
+ <File name="./Resources/lastfm.glade" subtype="Code" buildaction="EmbedAsResource" />
+ <File name="./Resources/audioscrobbler.png" subtype="Code" buildaction="EmbedAsResource" />
+ <File name="./Resources/loved.png" subtype="Code" buildaction="EmbedAsResource" />
+ <File name="./Resources/people.png" subtype="Code" buildaction="EmbedAsResource" />
+ <File name="./Resources/person.png" subtype="Code" buildaction="EmbedAsResource" />
+ <File name="./Resources/recommended.png" subtype="Code" buildaction="EmbedAsResource" />
</Contents>
<References>
<ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
Added: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmActions.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmActions.cs Thu Feb 14 18:07:56 2008
@@ -0,0 +1,253 @@
+//
+// LastfmActions.cs
+//
+// Authors:
+// Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2007-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using Gtk;
+
+using Mono.Unix;
+
+using Lastfm;
+using Lastfm.Gui;
+using SortType = Hyena.Data.SortType;
+
+using Banshee.Base;
+using Banshee.Sources;
+using Banshee.Widgets;
+using Banshee.MediaEngine;
+using Banshee.Database;
+using Banshee.Configuration;
+using Banshee.ServiceStack;
+using Banshee.Gui;
+
+namespace Banshee.Lastfm
+{
+ public class LastfmActions : BansheeActionGroup
+ {
+ private LastfmSource source;
+
+ private ActionButton love_button;
+ private ActionButton hate_button;
+ private bool last_track_was_lastfm = false;
+
+ private InterfaceActionService action_service;
+ private uint actions_id;
+ private ActionGroup actions;
+
+ public LastfmActions (LastfmSource source) : base ("Lastfm")
+ {
+ action_service = ServiceManager.Get<InterfaceActionService> ();
+ this.source = source;
+
+ 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 (
+ "LastfmConnectAction", null,
+ Catalog.GetString ("Connect"),
+ null, String.Empty, OnConnect
+ ),
+ new ActionEntry (
+ "LastfmSortAction", "gtk-sort-descending",
+ Catalog.GetString ("Sort Stations by"),
+ null, String.Empty, null
+ ),
+ new ActionEntry (
+ "LastfmLoveAction", "face-smile",
+ Catalog.GetString ("Love Track"), null,
+ Catalog.GetString ("Mark current track as loved"), OnLoved
+ ),
+ new ActionEntry (
+ "LastfmHateAction", "face-sad",
+ Catalog.GetString ("Ban Track"), null,
+ Catalog.GetString ("Mark current track as banned"), OnHated
+ )
+ });
+
+ Add (
+ new RadioActionEntry [] {
+ new RadioActionEntry (
+ "LastfmSortStationsByNameAction", null,
+ Catalog.GetString ("Station Name"),
+ null, "", 0
+ ),
+ new RadioActionEntry (
+ "LastfmSortStationsByPlayCountAction", null,
+ Catalog.GetString ("Total Play Count"),
+ null, "", 1
+ ),
+ new RadioActionEntry (
+ "LastfmSortStationsByTypeAction", null,
+ Catalog.GetString ("Station Type"),
+ null, "", 2
+ )
+ },
+ Array.IndexOf (LastfmSource.ChildComparers, source.ChildComparer),
+ delegate (object sender, ChangedArgs args) {
+ source.ChildComparer = LastfmSource.ChildComparers[args.Current.Value];
+ source.SortChildSources ();
+ }
+ );
+
+ actions_id = action_service.UIManager.AddUiFromResource ("GlobalUI.xml");
+
+ source.Connection.StateChanged += HandleConnectionStateChanged;
+
+ /*Globals.ActionManager["LastfmLoveAction"].IsImportant = true;
+ Globals.ActionManager["LastfmHateAction"].IsImportant = true;
+ Globals.ActionManager["LastfmLoveAction"].Visible = false;
+ Globals.ActionManager["LastfmHateAction"].Visible = false;
+ ActionButton love_button = new ActionButton (actions.GetAction ("LastfmLoveAction"));
+ love_button.Pixbuf = IconThemeUtils.LoadIcon ("face-smile", 22);
+ love_button.Padding = 1;
+ ActionButton hate_button = new ActionButton (actions.GetAction ("LastfmHateAction"));
+ hate_button.Pixbuf = IconThemeUtils.LoadIcon ("face-sad", 22);
+ hate_button.Padding = 1;
+ InterfaceElements.ActionButtonBox.PackStart (love_button, false, false, 0);
+ InterfaceElements.ActionButtonBox.PackStart (hate_button, false, false, 0);*/
+
+ /*PlayerEngineCore.EventChanged += delegate (object o, PlayerEngineEventArgs args) {
+ if (args.Event == PlayerEngineEvent.TrackInfoUpdated) {
+ if (PlayerEngineCore.CurrentTrack is LastfmTrackInfo) {
+ if (!last_track_was_lastfm) {
+ this["LastfmLoveAction"].Visible = true;
+ this["LastfmHateAction"].Visible = true;
+ last_track_was_lastfm = true;
+ }
+ } else {
+ if (last_track_was_lastfm) {
+ this["LastfmLoveAction"].Visible = false;
+ this["LastfmHateAction"].Visible = false;
+ last_track_was_lastfm = false;
+ }
+ }
+ }
+ };*/
+
+ UpdateActions ();
+
+ action_service.AddActionGroup (this);
+ }
+
+ public override void Dispose ()
+ {
+ //InterfaceElements.ActionButtonBox.Remove (love_button);
+ //InterfaceElements.ActionButtonBox.Remove (hate_button);
+
+ //Globals.ActionManager.UI.RemoveUi (actions_id);
+ //Globals.ActionManager.UI.RemoveActionGroup (actions);
+ actions = null;
+
+ base.Dispose ();
+ }
+
+#region Action Handlers
+
+ private void OnAddStation (object sender, EventArgs args)
+ {
+ StationEditor ed = new StationEditor (source);
+ ed.Window.ShowAll ();
+ ed.RunDialog ();
+ }
+
+ private void OnConnect (object sender, EventArgs args)
+ {
+ source.Connection.Connect ();
+ }
+
+ private void OnChangeStation (object sender, EventArgs args)
+ {
+ (ServiceManager.SourceManager.ActiveSource as StationSource).ChangeToThisStation ();
+ }
+
+ private void OnRefreshStation (object sender, EventArgs args)
+ {
+ (ServiceManager.SourceManager.ActiveSource as StationSource).Refresh ();
+ }
+
+ private void OnLoved (object sender, EventArgs args)
+ {
+ LastfmTrackInfo track = null;//PlayerEngineCore.CurrentTrack as LastfmTrackInfo;
+ if (track == null)
+ return;
+
+ track.Love ();
+ }
+
+ private void OnHated (object sender, EventArgs args)
+ {
+ LastfmTrackInfo track = null; //PlayerEngineCore.CurrentTrack as LastfmTrackInfo;
+ if (track == null)
+ return;
+
+ track.Ban ();
+ action_service.GlobalActions ["NextAction"].Activate ();
+ }
+
+ public void ShowLoginDialog ()
+ {
+ AccountLoginDialog dialog = new AccountLoginDialog (source.Account, true);
+ dialog.SaveOnEdit = true;
+ if (source.Account.Username == null) {
+ dialog.AddSignUpButton ();
+ }
+ dialog.Run ();
+ dialog.Destroy ();
+ }
+
+#endregion
+
+ 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 = (source.Account.Username != null);
+ this["LastfmAddAction"].Sensitive = have_user;
+ this["LastfmSortAction"].Sensitive = have_user;
+ this["LastfmConnectAction"].Visible = source.Connection.State == ConnectionState.Disconnected;
+
+ updating = false;
+ }
+ }
+}
Copied: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmSource.cs (from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMSource.cs)
==============================================================================
--- /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMSource.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmSource.cs Thu Feb 14 18:07:56 2008
@@ -1,82 +1,120 @@
-/***************************************************************************
- * LastFMSource.cs
- *
- * Copyright (C) 2007-2008 Novell, Inc.
- * Written by Gabriel Burt <gabriel burt gmail com>
- ****************************************************************************/
-
-/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
+//
+// LastfmSource.cs
+//
+// Authors:
+// Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2007-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using Mono.Unix;
-using Gtk;
+
+using Lastfm;
+using Hyena.Data;
+using SortType = Hyena.Data.SortType;
using Banshee.Base;
using Banshee.Collection;
using Banshee.Configuration;
-using Banshee.Widgets;
using Banshee.Sources;
using Banshee.MediaEngine;
+using Banshee.ServiceStack;
+using Banshee.Networking;
-using Last.FM.Gui;
-
namespace Banshee.Lastfm
{
- public class LastFMSource : Source
+ public class LastfmSource : Source, IDisposable
{
- static string lastfm = "Last.fm";
- public LastFMSource () : base (lastfm, 150)
+ private const string lastfm = "Last.fm";
+
+ private Connection connection;
+ public Connection Connection {
+ get { return connection; }
+ }
+
+ private Account account;
+ public Account Account {
+ get { return account; }
+ }
+
+ private LastfmActions actions;
+
+ public LastfmSource () : base (lastfm, lastfm, 150)
{
+ account = new Account ();
+
+ // We don't automatically connect to Last.fm, but load the last Last.fm
+ // username we used so we can load the user's stations.
+ account.Username = LastUserSchema.Get ();
+ account.Password = "nicoleh";
+
+ connection = new Connection (account, Banshee.Web.Browser.UserAgent);
+ connection.UpdateNetworkState (NetworkDetect.Instance.Connected);
+ NetworkDetect.Instance.StateChanged += delegate (object o, NetworkStateChangedArgs args) {
+ connection.UpdateNetworkState (args.Connected);
+ };
+
+ Initialize ();
+
+ Properties.SetString ("ActiveSourceUIResource", "ActiveSourceUI.xml");
+ Properties.SetString ("GtkActionPath", "/LastfmSourcePopup");
+ Properties.SetString ("IconName", "audioscrobbler");
+ Properties.SetString ("SourcePropertiesActionLabel", Catalog.GetString ("Edit Last.fm Settings"));
+
+ actions = new LastfmActions (this);
+
+ ServiceManager.SourceManager.AddSource (this);
}
public void Initialize ()
{
- Connection.Instance.StateChanged += HandleConnectionStateChanged;
+ Connection.StateChanged += HandleConnectionStateChanged;
UpdateUI ();
}
- protected override void OnDispose ()
+ public void Dispose ()
{
- Connection.Instance.StateChanged -= HandleConnectionStateChanged;
- ClearChildSources ();
+ Connection.StateChanged -= HandleConnectionStateChanged;
+ //ClearChildSources ();
}
- public override void ClearChildSources ()
+ /*public override void ClearChildSources ()
{
lock (Children) {
foreach (StationSource child in Children) {
- if (SourceManager.ContainsSource (child))
- SourceManager.RemoveSource (child);
+ //if (SourceManager.ContainsSource (child))
+ // SourceManager.RemoveSource (child);
child.Dispose ();
}
}
base.ClearChildSources ();
- }
+ }*/
- public override void AddChildSource (ChildSource source)
+ /*public override void AddChildSource (ChildSource source)
{
base.AddChildSource (source);
SortChildSources ();
@@ -87,18 +125,8 @@
{
base.RemoveChildSource (source);
source.Updated -= HandleChildUpdated;
- }
+ }*/
- public override void ShowPropertiesDialog ()
- {
- AccountLoginDialog dialog = new AccountLoginDialog (true);
- dialog.SaveOnEdit = true;
- if (Connection.Instance.Username == null) {
- dialog.AddSignUpButton ();
- }
- dialog.Run ();
- dialog.Destroy ();
- }
// Order by the playCount of a station, then by inverted name
public class PlayCountComparer : IComparer<Source>
@@ -127,14 +155,14 @@
public static IComparer<Source> [] ChildComparers = new IComparer<Source> [] {
new NameComparer (), new PlayCountComparer (), new TypeComparer ()
};
- public static SortOrder [] child_orders = new SortOrder [] {
- SortOrder.Ascending, SortOrder.Descending, SortOrder.Ascending
+ public static SortType [] child_orders = new SortType [] {
+ SortType.Ascending, SortType.Descending, SortType.Ascending
};
public IComparer<Source> ChildComparer {
get {
if (child_comparer == null) {
- int i = (int) LastFMPlugin.StationSortSchema.Get ();
+ int i = (int) StationSortSchema.Get ();
ChildComparer = ChildComparers [i];
}
return child_comparer;
@@ -143,29 +171,48 @@
child_comparer = value;
int i = Array.IndexOf (ChildComparers, child_comparer);
child_order = child_orders[i];
- LastFMPlugin.StationSortSchema.Set (i);
+ StationSortSchema.Set (i);
}
}
private bool sorting = false;
private IComparer<Source> child_comparer;
- private SortOrder child_order;
- public override void SortChildSources (IComparer<Source> comparer, SortOrder order)
+ private SortType child_order;
+ public override void SortChildSources (IComparer<Source> comparer, bool asc)
{
- lock (TracksMutex) {
+ lock (this) {
if (sorting)
return;
sorting = true;
}
- base.SortChildSources (comparer, order);
+ base.SortChildSources (comparer, asc);
ChildComparer = comparer;
sorting = false;
}
public void SortChildSources ()
{
- SortChildSources (ChildComparer, child_order);
+ SortChildSources (ChildComparer, child_order == SortType.Ascending);
+ }
+
+ private string last_username;
+ public void SetUsername (string username)
+ {
+ if (username != last_username) {
+ last_username = username;
+ LastfmSource.LastUserSchema.Set (last_username);
+ ClearChildSources ();
+ sorting = true;
+ foreach (StationSource child in StationSource.LoadAll (this, Account.Username)) {
+ if (!child.Type.SubscribersOnly || Connection.Subscriber) {
+ AddChildSource (child);
+ //SourceManager.AddSource (child);
+ }
+ }
+ sorting = false;
+ SortChildSources ();
+ }
}
/*public override void Activate ()
@@ -173,45 +220,27 @@
InterfaceElements.ActionButtonBox.PackStart (add_button, false, false, 0);
}*/
- public override string ActionPath {
- get { return "/LastFMSourcePopup"; }
- }
-
- private static string properties_label = Catalog.GetString ("Edit Last.fm Settings");
- public override string SourcePropertiesLabel {
- get { return properties_label; }
+ public override bool CanSearch {
+ get { return false; }
}
- public override bool SearchEnabled {
- get { return false; }
+ public override int Count {
+ get { return 0; }
}
- public override bool CanWriteToCD {
- get { return false; }
- }
-
- public override bool ShowPlaylistHeader {
- get { return false; }
- }
-
public override bool? AutoExpand {
- get { return LastFMPlugin.ExpandedSchema.Get (); }
+ get { return ExpandedSchema.Get (); }
}
public override bool Expanded {
- get { return LastFMPlugin.ExpandedSchema.Get (); }
- set { LastFMPlugin.ExpandedSchema.Set (value); }
+ get { return ExpandedSchema.Get (); }
+ set { ExpandedSchema.Set (value); }
}
public override bool CanActivate {
get { return false; }
}
- private Gdk.Pixbuf icon = Gdk.Pixbuf.LoadFromResource ("audioscrobbler.png");
- public override Gdk.Pixbuf Icon {
- get { return icon; }
- }
-
private void HandleConnectionStateChanged (object sender, ConnectionStateChangedArgs args)
{
UpdateUI ();
@@ -222,43 +251,34 @@
SortChildSources ();
}
- private string last_username;
- private bool updating = false;
private void UpdateUI ()
{
- lock (TracksMutex) {
- if (updating)
- return;
- updating = true;
- }
-
- bool have_user = (Connection.Instance.Username != null);
- Globals.ActionManager["LastFMAddAction"].Sensitive = have_user;
- Globals.ActionManager["LastFMSortAction"].Sensitive = have_user;
- Globals.ActionManager["LastFMConnectAction"].Visible = Connection.Instance.State == ConnectionState.Disconnected;
+ bool have_user = (Account.Username != null);
if (have_user) {
- if (Connection.Instance.Username != last_username) {
- last_username = Connection.Instance.Username;
- LastFMPlugin.LastUserSchema.Set (last_username);
- ClearChildSources ();
- sorting = true;
- foreach (StationSource child in StationSource.LoadAll (Connection.Instance.Username)) {
- if (!child.Type.SubscribersOnly || Connection.Instance.Subscriber) {
- AddChildSource (child);
- SourceManager.AddSource (child);
- }
- }
- sorting = false;
- SortChildSources ();
- }
+ SetUsername (Account.Username);
} else {
ClearChildSources ();
}
- Name = (Connection.Instance.State == ConnectionState.Connected ) ? lastfm : Catalog.GetString ("Last.fm (Disconnected)");
+ Name = (Connection.State == ConnectionState.Connected ) ? lastfm : Catalog.GetString ("Last.fm (Disconnected)");
OnUpdated ();
- updating = false;
}
+
+ public static readonly SchemaEntry<bool> EnabledSchema = new SchemaEntry<bool> (
+ "plugins.lastfm", "enabled", false, "Extension enabled", "Last.fm extension enabled"
+ );
+
+ public static readonly SchemaEntry<int> StationSortSchema = new SchemaEntry<int> (
+ "plugins.lastfm", "station_sort", 0, "Station sort criteria", "Last.fm station sort criteria. 0 = name, 1 = play count, 2 = type"
+ );
+
+ public static readonly SchemaEntry<string> LastUserSchema = new SchemaEntry<string> (
+ "plugins.lastfm", "username", "", "Last.fm user", "Last.fm username"
+ );
+
+ public static readonly SchemaEntry<bool> ExpandedSchema = new SchemaEntry<bool> (
+ "plugins.lastfm", "expanded", false, "Last.fm expanded", "Last.fm expanded"
+ );
}
}
Copied: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmTrackInfo.cs (from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMTrackInfo.cs)
==============================================================================
--- /trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastFMTrackInfo.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmTrackInfo.cs Thu Feb 14 18:07:56 2008
@@ -1,30 +1,30 @@
-/***************************************************************************
- * LastFMTrackInfo.cs
- *
- * Copyright (C) 2007 Novell, Inc.
- * Written by Gabriel Burt <gabriel burt gmail com>
- ****************************************************************************/
-
-/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
+//
+// LastfmTrackInfo.cs
+//
+// Authors:
+// Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2007-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
using System;
using System.IO;
@@ -35,17 +35,17 @@
using Banshee.Base;
using Banshee.Collection;
-using Banshee.Playlists.Formats.Xspf;
+using Media.Playlists.Xspf;
namespace Banshee.Lastfm
{
- public class LastFMTrackInfo : TrackInfo
+ public class LastfmTrackInfo : TrackInfo
{
private StationSource station;
private Track track;
private bool loved, hated;
- public LastFMTrackInfo ()
+ public LastfmTrackInfo ()
{
CanSaveToDatabase = false;
}
@@ -63,30 +63,31 @@
get { return hated; }
}
- public LastFMTrackInfo (Track track, StationSource station)
+ public LastfmTrackInfo (Track track, StationSource station)
{
this.station = station;
Uri = new SafeUri (track.Locations[0]);
- Artist = track.Creator;
- Title = track.Title;
- Album = track.Album;
+ ArtistName = track.Creator;
+ TrackTitle = track.Title;
+ AlbumTitle = track.Album;
Duration = track.Duration;
- TrackNumber = track.TrackNumber;
+ TrackNumber = (int) track.TrackNumber;
XspfTrack = track;
+
CanSaveToDatabase = false;
}
public override void IncrementPlayCount ()
{
station.PlayCount++;
- station.Commit ();
+ station.Save ();
}
public void Love ()
{
loved = true; hated = false;
ThreadAssist.Spawn (delegate {
- Connection.Instance.Love (this);
+ station.LastfmSource.Connection.Love (ArtistName, TrackTitle);
});
}
@@ -94,7 +95,7 @@
{
loved = false; hated = true;
ThreadAssist.Spawn (delegate {
- Connection.Instance.Ban (this);
+ station.LastfmSource.Connection.Ban (ArtistName, TrackTitle);
});
}
}
Added: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmTrackListModel.cs
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmTrackListModel.cs Thu Feb 14 18:07:56 2008
@@ -0,0 +1,95 @@
+//
+// LastfmTrackListModell.cs
+//
+// Authors:
+// Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+using Banshee.Collection;
+
+namespace Banshee.Lastfm
+{
+ public class LastfmTrackListModel : TrackListModel, IEnumerable<TrackInfo>
+ {
+ private List<TrackInfo> tracks = new List<TrackInfo> ();
+
+ public LastfmTrackListModel () : base ()
+ {
+ }
+
+ public override void Clear()
+ {
+ tracks.Clear ();
+ }
+
+ public override void Reload()
+ {
+ OnReloaded ();
+ }
+
+ public void Add (TrackInfo track)
+ {
+ tracks.Add (track);
+ }
+
+ public void Remove (TrackInfo track)
+ {
+ tracks.Remove (track);
+ }
+
+ public bool Contains (TrackInfo track)
+ {
+ return IndexOf (track) != -1;
+ }
+
+ public override TrackInfo this[int index] {
+ get { return (index < tracks.Count) ? tracks[index] : null; }
+ }
+
+ public override int Count {
+ get { return tracks.Count; }
+ }
+
+ public override int IndexOf (TrackInfo track)
+ {
+ return tracks.IndexOf (track);
+ }
+
+ public IEnumerator<TrackInfo> GetEnumerator ()
+ {
+ foreach (TrackInfo track in tracks) {
+ yield return track;
+ }
+ }
+
+ IEnumerator IEnumerable.GetEnumerator ()
+ {
+ return GetEnumerator ();
+ }
+ }
+}
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationEditor.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationEditor.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationEditor.cs Thu Feb 14 18:07:56 2008
@@ -1,30 +1,30 @@
-/***************************************************************************
- * StationEditor.cs
- *
- * Copyright (C) 2007-2008 Novell, Inc.
- * Written by Gabriel Burt <gabriel burt gmail com>
- ****************************************************************************/
-
-/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
+//
+// StationEditor.cs
+//
+// Authors:
+// Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2007-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
using System;
using System.Collections;
@@ -46,6 +46,7 @@
const string dialog_name = "StationSourceEditorDialog";
const string dialog_resource = "lastfm.glade";
+ private LastfmSource lastfm;
private StationSource source;
[Widget] private Gtk.Entry name_entry;
@@ -54,9 +55,10 @@
[Widget] private Gtk.Label arg_label;
[Widget] private Gtk.Button ok_button;
- public StationEditor (StationSource source) : base (dialog_name, new Glade.XML (
+ public StationEditor (LastfmSource lastfm, StationSource source) : base (dialog_name, new Glade.XML (
System.Reflection.Assembly.GetExecutingAssembly (), dialog_resource, dialog_name, "banshee"))
{
+ this.lastfm = lastfm;
this.source = source;
SourceName = source.Name;
Arg = source.Arg;
@@ -64,9 +66,10 @@
Dialog.Title = Catalog.GetString ("Edit Station");
}
- public StationEditor () : base (dialog_name, new Glade.XML (
+ public StationEditor (LastfmSource lastfm) : base (dialog_name, new Glade.XML (
System.Reflection.Assembly.GetExecutingAssembly (), dialog_resource, dialog_name, "banshee"))
{
+ this.lastfm = lastfm;
Initialize ();
Dialog.Title = Catalog.GetString ("New Station");
}
@@ -88,7 +91,7 @@
int active_type = 0;
int i = 0;
foreach (StationType type in StationType.Types) {
- if (!type.SubscribersOnly || Connection.Instance.Subscriber) {
+ if (!type.SubscribersOnly || lastfm.Connection.Subscriber) {
type_combo.AppendText (type.Label);
if (source != null && type == source.Type) {
active_type = i;
@@ -123,14 +126,15 @@
ThreadAssist.Spawn (delegate {
if (source == null) {
- source = new StationSource (name, type.Name, arg);
- LastFMPlugin.Instance.Source.AddChildSource (source);
- SourceManager.AddSource (source);
+ source = new StationSource (lastfm, name, type.Name, arg);
+ lastfm.AddChildSource (source);
+ //LastFMPlugin.Instance.Source.AddChildSource (source);
+ //ServiceManager.SourceManager.AddSource (source);
} else {
source.Rename (name);
source.Type = type;
source.Arg = arg;
- source.Commit ();
+ source.Save ();
//source.Refresh ();
}
});
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationSource.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationSource.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationSource.cs Thu Feb 14 18:07:56 2008
@@ -1,56 +1,70 @@
-/***************************************************************************
- * StationSource.cs
- *
- * Copyright (C) 2007 Novell, Inc.
- * Written by Gabriel Burt <gabriel burt gmail com>
- ****************************************************************************/
-
-/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
+//
+// StationSource.cs
+//
+// Authors:
+// Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2007-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
using System;
-using System.IO;
using System.Data;
+using System.IO;
using System.Collections.Generic;
using System.Threading;
using Mono.Unix;
using Gtk;
+using Hyena;
+using Hyena.Data.Sqlite;
+using Lastfm;
+using ConnectionState = Lastfm.ConnectionState;
+
using Banshee.Base;
using Banshee.Widgets;
using Banshee.Database;
using Banshee.Sources;
using Banshee.Metadata;
using Banshee.MediaEngine;
-using Banshee.Playlists.Formats.Xspf;
+using Banshee.Collection;
+using Banshee.ServiceStack;
namespace Banshee.Lastfm
{
- public class StationSource : Source
+ public class StationSource : Source, ITrackModelSource, IUnmapableSource, IDisposable
{
- private static readonly Gdk.Pixbuf refresh_pixbuf = IconThemeUtils.LoadIcon (22, Stock.Refresh);
- private static readonly Gdk.Pixbuf error_pixbuf = IconThemeUtils.LoadIcon (22, Stock.DialogError);
+ //private static readonly Gdk.Pixbuf refresh_pixbuf = IconThemeUtils.LoadIcon (22, Stock.Refresh);
+ //private static readonly Gdk.Pixbuf error_pixbuf = IconThemeUtils.LoadIcon (22, Stock.DialogError);
+
+ private static string generic_name = Catalog.GetString ("Last.fm Station");
+
+ private LastfmTrackListModel track_model;
+
+ //private HighlightMessageArea status_bar;
- private List<TrackInfo> tracks = new List<TrackInfo> ();
- private HighlightMessageArea status_bar;
+ private LastfmSource lastfm;
+ public LastfmSource LastfmSource {
+ get { return lastfm; }
+ }
private string station;
public string Station {
@@ -63,10 +77,9 @@
get { return type; }
set {
type = value;
- if (icon != null) {
- icon.Dispose ();
- icon = null;
- }
+
+ if (type.IconName != null)
+ Properties.SetString ("IconName", type.IconName);
}
}
@@ -85,78 +98,87 @@
private int dbid;
// For StationSources that already exist in the db
- protected StationSource (int dbId, string name, string type, string arg, int playCount) : base (name, 150)
+ protected StationSource (LastfmSource lastfm, int dbId, string name, string type, string arg, int playCount) : base (generic_name, name, 150)
{
+ this.lastfm = lastfm;
dbid = dbId;
Type = StationType.FindByName (type);
Arg = arg;
PlayCount = playCount;
Station = Type.GetStationFor (arg);
- PlayerEngineCore.StateChanged += OnPlayerStateChanged;
- Connection.Instance.StateChanged += HandleConnectionStateChanged;
-
- BuildInterface ();
+ Initialize ();
}
- public StationSource (string name, string type, string arg) : base (name, 150)
+ public StationSource (LastfmSource lastfm, string name, string type, string arg) : base (generic_name, name, 150)
{
+ this.lastfm = lastfm;
Type = StationType.FindByName (type);
Arg = arg;
Station = Type.GetStationFor (arg);
- DbCommand command = new DbCommand (@"
- INSERT INTO LastfmStations
- (Creator, Name, Type, Arg, PlayCount)
- VALUES (:creator, :name, :type, :arg, :play_count)",
- "creator", Connection.Instance.Username,
- "name", Name,
- "type", Type.ToString (),
- "arg", Arg,
- "play_count", PlayCount
- );
+ Save ();
- dbid = Globals.Library.Db.Execute (command);
+ Initialize ();
+ }
+
+ private void Initialize ()
+ {
+ track_model = new LastfmTrackListModel ();
- PlayerEngineCore.StateChanged += OnPlayerStateChanged;
- Connection.Instance.StateChanged += HandleConnectionStateChanged;
+ ServiceManager.PlayerEngine.StateChanged += OnPlayerStateChanged;
+ lastfm.Connection.StateChanged += HandleConnectionStateChanged;
- BuildInterface ();
+ Properties.SetString ("ActiveSourceUIResource", "ActiveSourceUI.xml");
+ Properties.SetString ("GtkActionPath", "/LastfmStationSourcePopup");
+ Properties.SetString ("SourcePropertiesActionLabel", Catalog.GetString ("Edit Last.fm Station"));
+ Properties.SetString ("UnmapSourceActionLabel", Catalog.GetString ("Delete Last.fm Station"));
+
+ //box = new VBox ();
+ //status_bar = new HighlightMessageArea ();
+ //status_bar.BorderWidth = 5;
+ //status_bar.LeftPadding = 15;
+ //status_bar.Hide ();
+ UpdateUI (lastfm.Connection.State);
}
- private void BuildInterface ()
+ public void Dispose ()
{
- //box = new VBox ();
- status_bar = new HighlightMessageArea ();
- status_bar.BorderWidth = 5;
- status_bar.LeftPadding = 15;
- status_bar.Hide ();
- UpdateUI (Connection.Instance.State);
- }
-
- protected override void OnDispose ()
- {
- PlayerEngineCore.StateChanged -= OnPlayerStateChanged;
- Connection.Instance.StateChanged -= HandleConnectionStateChanged;
- }
-
- public override void Commit ()
- {
- DbCommand command = new DbCommand (@"
- UPDATE LastfmStations
- SET
- Name = :name,
- Type = :type,
- Arg = :arg,
- PlayCount = :play_count
- WHERE StationID = :station_id",
- "name", Name,
- "type", Type.ToString (),
- "arg", Arg,
- "play_count", PlayCount,
- "station_id", dbid
+ ServiceManager.PlayerEngine.StateChanged -= OnPlayerStateChanged;
+ lastfm.Connection.StateChanged -= HandleConnectionStateChanged;
+ }
+
+ public virtual void Save ()
+ {
+ if (dbid <= 0)
+ Create ();
+ else
+ Update ();
+
+ OnUpdated ();
+ }
+
+ private void Create ()
+ {
+ HyenaSqliteCommand command = new HyenaSqliteCommand (
+ @"INSERT INTO LastfmStations (Creator, Name, Type, Arg, PlayCount)
+ VALUES (?, ?, ?, ?, ?)",
+ lastfm.Account.Username, Name,
+ Type.ToString (), Arg, PlayCount
+ );
+
+ dbid = ServiceManager.DbConnection.Execute (command);
+ }
+
+ private void Update ()
+ {
+ HyenaSqliteCommand command = new HyenaSqliteCommand (
+ @"UPDATE LastfmStations
+ SET Name = ?, Type = ?, Arg = ?, PlayCount = ?
+ WHERE StationID = ?",
+ Name, Type.ToString (), Arg, PlayCount, dbid
);
- Globals.Library.Db.Execute (command);
+ ServiceManager.DbConnection.Execute (command);
Station = Type.GetStationFor (Arg);
OnUpdated ();
@@ -165,23 +187,24 @@
private bool shuffle;
public override void Activate ()
{
- shuffle = (Globals.ActionManager["ShuffleAction"] as ToggleAction).Active;
- (Globals.ActionManager["ShuffleAction"] as ToggleAction).Active = false;
+ base.Activate ();
+ //shuffle = (action_service.GlobalActions ["ShuffleAction"] as ToggleAction).Active;
+ //(action_service.GlobalActions ["ShuffleAction"] as ToggleAction).Active = false;
//Globals.ActionManager["ShuffleAction"].Sensitive = false;
- if (show_status)
+ /*if (show_status)
status_bar.Show ();
else
- status_bar.Hide ();
+ status_bar.Hide ();*/
- Globals.ActionManager["PreviousAction"].Sensitive = false;
- InterfaceElements.MainContainer.PackEnd (status_bar, false, false, 0);
+ //action_service.GlobalActions ["PreviousAction"].Sensitive = false;
+ //InterfaceElements.MainContainer.PackEnd (status_bar, false, false, 0);
// We lazy load the Last.fm connection, so if we're not already connected, do it
- if (Connection.Instance.State == ConnectionState.Connected)
+ if (lastfm.Connection.State == ConnectionState.Connected)
TuneAndLoad ();
- else if (Connection.Instance.State == ConnectionState.Disconnected)
- Connection.Instance.Connect ();
+ else if (lastfm.Connection.State == ConnectionState.Disconnected)
+ lastfm.Connection.Connect ();
}
private void TuneAndLoad ()
@@ -199,28 +222,28 @@
public override void Deactivate ()
{
- (Globals.ActionManager["ShuffleAction"] as ToggleAction).Active = shuffle;
+ //(Globals.ActionManager["ShuffleAction"] as ToggleAction).Active = shuffle;
//Globals.ActionManager["ShuffleAction"].Sensitive = true;
- Globals.ActionManager["PreviousAction"].Sensitive = true;
- InterfaceElements.MainContainer.Remove (status_bar);
+ //Globals.ActionManager["PreviousAction"].Sensitive = true;
+ //InterfaceElements.MainContainer.Remove (status_bar);
}
// Last.fm requires you to 'tune' to a station before requesting a track list/playing it
public bool ChangeToThisStation ()
{
- if (Connection.Instance.Station == Station)
+ if (lastfm.Connection.Station == Station)
return false;
- LogCore.Instance.PushDebug (String.Format ("Tuning Last.fm to {0}", Name), null);
+ Log.Debug (String.Format ("Tuning Last.fm to {0}", Name), null);
SetStatus (Catalog.GetString ("Tuning Last.fm to {0}."), false);
- StationError error = Connection.Instance.ChangeStationTo (Station);
+ StationError error = lastfm.Connection.ChangeStationTo (Station);
if (error == StationError.None) {
- LogCore.Instance.PushDebug (String.Format ("Successfully tuned Last.fm to {0}", station), null);
+ Log.Debug (String.Format ("Successfully tuned Last.fm to {0}", station), null);
return true;
} else {
- LogCore.Instance.PushDebug (String.Format ("Failed to tune Last.fm to {0}", Name), Connection.ErrorMessageFor (error));
+ Log.Debug (String.Format ("Failed to tune Last.fm to {0}", Name), Connection.ErrorMessageFor (error));
SetStatus (String.Format (
// Translators: {0} is an error message sentence from Connection.cs.
Catalog.GetString ("Failed to tune in station. {0}"), Connection.ErrorMessageFor (error)), true
@@ -232,35 +255,35 @@
bool show_status = false;
private void SetStatus (string message, bool error)
{
- ThreadAssist.ProxyToMain (delegate {
+ /*ThreadAssist.ProxyToMain (delegate {
show_status = true;
string status_name = String.Format ("<i>{0}</i>", GLib.Markup.EscapeText (Name));
status_bar.Message = String.Format ("<big>{0}</big>", String.Format (GLib.Markup.EscapeText (message), status_name));
status_bar.Pixbuf = error ? error_pixbuf : refresh_pixbuf;
status_bar.ShowCloseButton = true;
status_bar.Show ();
- });
+ });*/
}
private void HideStatus ()
{
- ThreadAssist.ProxyToMain (delegate {
+ /*ThreadAssist.ProxyToMain (delegate {
show_status = false;
status_bar.Hide ();
- });
+ });*/
}
- public override void ShowPropertiesDialog ()
+ /*public override void ShowPropertiesDialog ()
{
Editor ed = new Editor (this);
ed.RunDialog ();
- }
+ }*/
/*private bool playback_requested = false;
public override void StartPlayback ()
{
if (CurrentTrack != null) {
- PlayerEngineCore.OpenPlay (CurrentTrack);
+ ServiceManager.PlayerEngine.OpenPlay (CurrentTrack);
} else if (playback_requested == false) {
playback_requested = true;
Refresh ();
@@ -271,7 +294,7 @@
public TrackInfo CurrentTrack {
get { return GetTrack (current_track); }
set {
- int i = tracks.IndexOf (value);
+ int i = track_model.IndexOf (value);
if (i != -1)
current_track = i;
}
@@ -282,12 +305,12 @@
}
private TrackInfo GetTrack (int track_num) {
- return (track_num > tracks.Count - 1) ? null : tracks[track_num];
+ return (track_num > track_model.Count - 1) ? null : track_model[track_num];
}
private int TracksLeft {
get {
- int left = tracks.Count - current_track - 1;
+ int left = track_model.Count - current_track - 1;
return (left < 0) ? 0 : left;
}
}
@@ -296,7 +319,7 @@
public void Refresh ()
{
lock (this) {
- if (refreshing || Connection.Instance.Station != Station) {
+ if (refreshing || lastfm.Connection.Station != Station) {
return;
}
refreshing = true;
@@ -307,23 +330,24 @@
}
ThreadAssist.Spawn (delegate {
- Playlist playlist = Connection.Instance.LoadPlaylistFor (Station);
+ Media.Playlists.Xspf.Playlist playlist = lastfm.Connection.LoadPlaylistFor (Station);
if (playlist != null) {
if (playlist.TrackCount == 0) {
SetStatus (Catalog.GetString ("No new songs available for {0}."), true);
} else {
List<TrackInfo> new_tracks = new List<TrackInfo> ();
- foreach (Track track in playlist.Tracks) {
- TrackInfo ti = new LastFMTrackInfo (track, this);
+ foreach (Media.Playlists.Xspf.Track track in playlist.Tracks) {
+ TrackInfo ti = new LastfmTrackInfo (track, this);
new_tracks.Add (ti);
- lock (TracksMutex) {
- tracks.Add (ti);
+ lock (track_model) {
+ track_model.Add (ti);
}
}
HideStatus ();
ThreadAssist.ProxyToMain (delegate {
- OnTrackAdded (null, new_tracks);
+ //OnTrackAdded (null, new_tracks);
+ track_model.Reload ();
OnUpdated ();
/*if (playback_requested) {
@@ -340,23 +364,13 @@
});
}
- private void ClearTracks ()
- {
- lock (TracksMutex) {
- if (tracks.Count > 0) {
- OnTrackRemoved (null, tracks);
- tracks.Clear ();
- }
- }
- }
-
private void OnPlayerStateChanged (object o, PlayerEngineStateArgs args)
{
- if (args.State == PlayerEngineState.Loaded && tracks.Contains (PlayerEngineCore.CurrentTrack)) {
- CurrentTrack = PlayerEngineCore.CurrentTrack;
+ if (args.State == PlayerEngineState.Loaded && track_model.Contains (ServiceManager.PlayerEngine.CurrentTrack)) {
+ CurrentTrack = ServiceManager.PlayerEngine.CurrentTrack;
- lock (TracksMutex) {
- foreach (TrackInfo track in tracks) {
+ lock (track_model) {
+ foreach (TrackInfo track in track_model) {
if (track == CurrentTrack)
break;
if (track.CanPlay) {
@@ -381,110 +395,138 @@
{
if (state == ConnectionState.Connected) {
HideStatus ();
- if (this == SourceManager.ActiveSource) {
+ if (this == ServiceManager.SourceManager.ActiveSource) {
TuneAndLoad ();
}
} else {
- ClearTracks ();
+ track_model.Clear ();
SetStatus (Connection.MessageFor (state), state != ConnectionState.Connecting);
+ OnUpdated ();
}
}
- public override bool Unmap ()
+ public override string GetStatusText ()
{
- Globals.Library.Db.Execute (String.Format (
- @"DELETE FROM LastfmStations
- WHERE StationID = '{0}'",
- dbid
- ));
- Parent.RemoveChildSource (this);
- SourceManager.RemoveSource (this);
- return true;
+ return String.Format (
+ Catalog.GetPluralString ("{0} song played", "{0} songs played", PlayCount), PlayCount
+ );
+ }
+
+#region ITrackModelSource Implementation
+
+ public TrackListModel TrackModel {
+ get { return track_model; }
+ }
+
+ public AlbumListModel AlbumModel {
+ get { return null; }
}
- protected override bool UpdateName (string oldName, string newName)
+ public ArtistListModel ArtistModel {
+ get { return null; }
+ }
+
+ public void Reload ()
{
- Name = newName;
- Commit ();
- return true;
+ track_model.Reload ();
}
-
- public override bool SearchEnabled {
- get { return false; }
+
+ public void RemoveSelectedTracks ()
+ {
}
-
- public override bool CanWriteToCD {
- get { return false; }
+
+ public void DeleteSelectedTracks ()
+ {
+ throw new Exception ("Should not call DeleteSelectedTracks on StationSource");
}
-
- public override bool ShowPlaylistHeader {
+
+ public bool CanRemoveTracks {
get { return false; }
}
- public override string ActionPath {
- get { return "/LastFMStationSourcePopup"; }
+ public bool CanDeleteTracks {
+ get { return false; }
}
- public override IEnumerable<TrackInfo> Tracks {
- get { return tracks; }
+ public bool ConfirmRemoveTracks {
+ get { return false; }
+ }
+
+ public bool ShowBrowser {
+ get { return false; }
}
- private static string unmap_label = Catalog.GetString ("Delete Last.fm Station");
- public override string UnmapLabel {
- get { return unmap_label; }
+#endregion
+
+#region IUnmapableSource Implementation
+
+ public bool Unmap ()
+ {
+ ServiceManager.DbConnection.Execute (String.Format (
+ @"DELETE FROM LastfmStations
+ WHERE StationID = '{0}'",
+ dbid
+ ));
+ Parent.RemoveChildSource (this);
+ ServiceManager.SourceManager.RemoveSource (this);
+ return true;
}
- private static string generic_name = Catalog.GetString ("Last.fm Station");
- public override string GenericName {
- get { return generic_name; }
+ public bool CanUnmap {
+ get { return true; }
}
- private static string properties_label = Catalog.GetString ("Edit Last.fm Station");
- public override string SourcePropertiesLabel {
- get { return properties_label; }
+ public bool ConfirmBeforeUnmap {
+ get { return true; }
}
- private Gdk.Pixbuf icon;
- public override Gdk.Pixbuf Icon {
- get {
- if (icon == null && Type != null && Type.IconName != null) {
- icon = IconThemeUtils.LoadIcon (22, Type.IconName);
- if (icon == null) {
- icon = Gdk.Pixbuf.LoadFromResource (Type.IconName + ".png");
- }
- }
- return icon;
- }
+#endregion
+
+ public override void Rename (string newName)
+ {
+ base.Rename (newName);
+ Save ();
+ }
+
+ public override bool CanSearch {
+ get { return false; }
}
- public static List<StationSource> LoadAll (string creator)
+ public override int Count {
+ get { return 0; }
+ }
+
+ public static List<StationSource> LoadAll (LastfmSource lastfm, string creator)
{
List<StationSource> stations = new List<StationSource> ();
- DbCommand command = new DbCommand (
- "SELECT StationID, Name, Type, Arg, PlayCount FROM LastfmStations WHERE Creator = :creator",
- "creator", creator
+ HyenaSqliteCommand command = new HyenaSqliteCommand (
+ "SELECT StationID, Name, Type, Arg, PlayCount FROM LastfmStations WHERE Creator = ?",
+ creator
);
- IDataReader reader = Globals.Library.Db.Query (command);
-
- while (reader.Read ()) {
- try {
- stations.Add (new StationSource (
- (int) reader[0], (string) reader[1], (string) reader[2], (string) reader[3], (int) reader[4]
- ));
- } catch (Exception e) {
- LogCore.Instance.PushWarning ("Error Loading Last.fm Station", e.ToString (), false);
+ using (IDataReader reader = ServiceManager.DbConnection.ExecuteReader (command)) {
+ while (reader.Read ()) {
+ try {
+ stations.Add (new StationSource (lastfm,
+ Convert.ToInt32 (reader[0]),
+ reader[1] as string,
+ reader[2] as string,
+ reader[3] as string,
+ Convert.ToInt32 (reader[4])
+ ));
+ } catch (Exception e) {
+ Log.Warning ("Error Loading Last.fm Station", e.ToString (), false);
+ }
}
}
- reader.Dispose ();
// Create some default stations if the user has none
if (stations.Count == 0) {
- stations.Add (new StationSource (Catalog.GetString ("Recommended"), "Recommended", creator));
- stations.Add (new StationSource (Catalog.GetString ("Personal"), "Personal", creator));
- stations.Add (new StationSource (Catalog.GetString ("Loved"), "Loved", creator));
- stations.Add (new StationSource (Catalog.GetString ("Neighbors"), "Neighbor", creator));
+ stations.Add (new StationSource (lastfm, Catalog.GetString ("Recommended"), "Recommended", creator));
+ stations.Add (new StationSource (lastfm, Catalog.GetString ("Personal"), "Personal", creator));
+ stations.Add (new StationSource (lastfm, Catalog.GetString ("Loved"), "Loved", creator));
+ stations.Add (new StationSource (lastfm, Catalog.GetString ("Neighbors"), "Neighbor", creator));
}
return stations;
@@ -492,8 +534,8 @@
static StationSource ()
{
- if (!Globals.Library.Db.TableExists ("LastfmStations")) {
- Globals.Library.Db.Execute (@"
+ if (!ServiceManager.DbConnection.TableExists ("LastfmStations")) {
+ ServiceManager.DbConnection.Execute (@"
CREATE TABLE LastfmStations (
StationID INTEGER PRIMARY KEY,
Creator STRING NOT NULL,
@@ -505,11 +547,11 @@
");
} else {
try {
- Globals.Library.Db.QuerySingle ("SELECT PlayCount FROM LastfmStations LIMIT 1");
+ ServiceManager.DbConnection.QueryInt32 ("SELECT PlayCount FROM LastfmStations LIMIT 1");
} catch {
- LogCore.Instance.PushDebug ("Adding new database column", "Table: LastfmStations, Column: PlayCount INTEGER");
- Globals.Library.Db.Execute ("ALTER TABLE LastfmStations ADD PlayCount INTEGER");
- Globals.Library.Db.Execute ("UPDATE LastfmStations SET PlayCount = 0");
+ Log.Debug ("Adding new database column", "Table: LastfmStations, Column: PlayCount INTEGER");
+ ServiceManager.DbConnection.Execute ("ALTER TABLE LastfmStations ADD PlayCount INTEGER");
+ ServiceManager.DbConnection.Execute ("UPDATE LastfmStations SET PlayCount = 0");
}
}
}
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationType.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationType.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationType.cs Thu Feb 14 18:07:56 2008
@@ -1,34 +1,34 @@
-/***************************************************************************
- * StationType.cs
- *
- * Copyright (C) 2007 Novell, Inc.
- * Written by Gabriel Burt <gabriel burt gmail com>
- ****************************************************************************/
-
-/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
+//
+// StationType.cs
+//
+// Authors:
+// Gabriel Burt <gburt novell com>
+//
+// Copyright (C) 2007-2008 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
using System;
using System.Collections.Generic;
-using Mono.Gettext;
+using Mono.Unix;
namespace Banshee.Lastfm
{
Modified: trunk/banshee/src/Extensions/Banshee.Lastfm/Makefile.am
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.Lastfm/Makefile.am (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Makefile.am Thu Feb 14 18:07:56 2008
@@ -3,18 +3,20 @@
LINK = $(REF_EXTENSION_LASTFM)
SOURCES = \
- Banshee.Lastfm/Editor.cs \
Banshee.Lastfm/Connection.cs \
- Banshee.Lastfm/Plugin.cs \
- Banshee.Lastfm/LastFMSource.cs \
- Banshee.Lastfm/LastFMTrackInfo.cs \
+ Banshee.Lastfm/LastfmActions.cs \
+ Banshee.Lastfm/LastfmSource.cs \
+ Banshee.Lastfm/LastfmTrackInfo.cs \
+ Banshee.Lastfm/LastfmTrackListModel.cs \
+ Banshee.Lastfm/StationEditor.cs \
Banshee.Lastfm/StationSource.cs \
Banshee.Lastfm/StationType.cs
RESOURCES = \
- Resources/Banshee.LastFM.addin.xml \
+ Resources/Banshee.Lastfm.addin.xml \
Resources/lastfm.glade \
- Resources/Actions.xml \
+ Resources/ActiveSourceUI.xml \
+ Resources/GlobalUI.xml \
Resources/audioscrobbler.png \
Resources/recommended.png
Added: trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/ActiveSourceUI.xml
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/ActiveSourceUI.xml Thu Feb 14 18:07:56 2008
@@ -0,0 +1,7 @@
+<ui>
+ <toolbar name="HeaderToolbar">
+ <placeholder name="SourceActions">
+ <toolitem name="LastfmAdd" action="LastfmAddAction"/>
+ </placeholder>
+ </toolbar>
+</ui>
Copied: trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Banshee.Lastfm.addin.xml (from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Banshee.LastFM.addin.xml)
==============================================================================
--- /trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Banshee.LastFM.addin.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Banshee.Lastfm.addin.xml Thu Feb 14 18:07:56 2008
@@ -1,4 +1,4 @@
-<Addin id="Banshee.LastFM">
+<Addin id="Banshee.Lastfm">
<Dependencies>
<Addin id="Banshee.Services" version="1.0"/>
@@ -6,7 +6,7 @@
</Dependencies>
<Extension path="/Banshee/SourceManager/Source">
- <Source class="Banshee.LastFM.LastFMSource"/>
+ <Source class="Banshee.Lastfm.LastfmSource"/>
</Extension>
</Addin>
Copied: trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/GlobalUI.xml (from r3228, /trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Actions.xml)
==============================================================================
--- /trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/Actions.xml (original)
+++ trunk/banshee/src/Extensions/Banshee.Lastfm/Resources/GlobalUI.xml Thu Feb 14 18:07:56 2008
@@ -1,19 +1,27 @@
<ui>
- <popup name="LastFMSourcePopup" action="LastFMSourcePopupAction">
- <menuitem name="Add" action="LastFMAddAction" />
- <menu name='SortPlaylist' action='LastFMSortAction'>
- <menuitem name='SortStationByName' action='LastFMSortStationsByNameAction' />
- <menuitem name='SortStationByPlayCount' action='LastFMSortStationsByPlayCountAction' />
- <menuitem name='SortStationByType' action='LastFMSortStationsByTypeAction' />
+ <popup name="LastfmSourcePopup" action="LastfmSourcePopupAction">
+ <menuitem name="LastfmAdd" action="LastfmAddAction" />
+ <menu name='SortPlaylist' action='LastfmSortAction'>
+ <menuitem name='SortStationByName' action='LastfmSortStationsByNameAction' />
+ <menuitem name='SortStationByPlayCount' action='LastfmSortStationsByPlayCountAction' />
+ <menuitem name='SortStationByType' action='LastfmSortStationsByTypeAction' />
</menu>
- <menuitem name="Connect" action="LastFMConnectAction" />
+ <menuitem name="Connect" action="LastfmConnectAction" />
<separator />
- <menuitem name="SelectedSourceProperties" action="SelectedSourcePropertiesAction" />
+ <menuitem name="SourceProperties" action="SourcePropertiesAction" />
</popup>
- <popup name="LastFMStationSourcePopup" action="LastFMStationSourcePopupAction">
+
+ <popup name="LastfmStationSourcePopup" action="LastfmStationSourcePopupAction">
<menuitem name="RenameSource" action="RenameSourceAction" />
<menuitem name="UnmapSource" action="UnmapSourceAction" />
<separator />
- <menuitem name="SelectedSourceProperties" action="SelectedSourcePropertiesAction" />
+ <menuitem name="SourceProperties" action="SourcePropertiesAction" />
+ </popup>
+
+ <popup name="TrackContextMenu" action="TrackContextMenuAction">
+ <placeholder name="BelowAddToPlaylist">
+ <menuitem name="LastfmLove" action="LastfmLoveAction"></menuitem>
+ <menuitem name="LastfmHate" action="LastfmHateAction"></menuitem>
+ </placeholder>
</popup>
</ui>
Modified: trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys/MultimediaKeysService.cs
==============================================================================
--- trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys/MultimediaKeysService.cs (original)
+++ trunk/banshee/src/Extensions/Banshee.MultimediaKeys/Banshee.MultimediaKeys/MultimediaKeysService.cs Thu Feb 14 18:07:56 2008
@@ -33,6 +33,7 @@
using NDesk.DBus;
+using Hyena;
using Banshee.Base;
using Banshee.ServiceStack;
Modified: trunk/banshee/src/Extensions/Extensions.mds
==============================================================================
--- trunk/banshee/src/Extensions/Extensions.mds (original)
+++ trunk/banshee/src/Extensions/Extensions.mds Thu Feb 14 18:07:56 2008
@@ -4,6 +4,7 @@
<Entry build="True" name="Banshee.NotificationArea" configuration="Debug" />
<Entry build="True" name="Banshee.MultimediaKeys" configuration="Debug" />
<Entry build="True" name="Banshee.PlayQueue" configuration="Debug" />
+ <Entry build="False" name="Banshee.Lastfm" configuration="Debug" />
<Entry build="True" name="Banshee.DapCore" configuration="Debug" />
<Entry build="True" name="Banshee.Dap.MassStorage" configuration="Debug" />
</Configuration>
@@ -18,7 +19,8 @@
<Entry filename="Banshee.NotificationArea/Banshee.NotificationArea.mdp" />
<Entry filename="Banshee.MultimediaKeys/Banshee.MultimediaKeys.mdp" />
<Entry filename="Banshee.PlayQueue/Banshee.PlayQueue.mdp" />
+ <Entry filename="Banshee.Lastfm/Banshee.Lastfm.mdp" />
<Entry filename="../Dap/Banshee.DapCore/Banshee.DapCore.mdp" />
<Entry filename="../Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.mdp" />
</Entries>
-</Combine>
\ No newline at end of file
+</Combine>
Modified: trunk/banshee/src/Extensions/Makefile.am
==============================================================================
--- trunk/banshee/src/Extensions/Makefile.am (original)
+++ trunk/banshee/src/Extensions/Makefile.am Thu Feb 14 18:07:56 2008
@@ -1,5 +1,6 @@
SUBDIRS = \
Banshee.Audioscrobbler \
+ Banshee.Lastfm \
Banshee.MultimediaKeys \
Banshee.NotificationArea \
Banshee.PlayQueue
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Data/IFilterable.cs
==============================================================================
--- /trunk/banshee/src/Core/Hyena/Hyena.Data/IFilterable.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Data/IFilterable.cs Thu Feb 14 18:07:56 2008
@@ -30,7 +30,7 @@
{
public interface IFilterable
{
- void Refilter();
+ void Refilter ();
string Filter { get; set; }
int UnfilteredCount { get; }
}
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Data/ISortable.cs
==============================================================================
--- /trunk/banshee/src/Core/Hyena/Hyena.Data/ISortable.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Data/ISortable.cs Thu Feb 14 18:07:56 2008
@@ -30,7 +30,7 @@
{
public interface ISortable
{
- void Sort(ISortableColumn column);
+ void Sort (ISortableColumn column);
ISortableColumn SortColumn { get; }
}
}
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Data/PropertyStore.cs
==============================================================================
--- /trunk/banshee/src/Core/Hyena/Hyena.Data/PropertyStore.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Data/PropertyStore.cs Thu Feb 14 18:07:56 2008
@@ -112,7 +112,7 @@
if(object_store == null) {
object_store = new Dictionary<string, object>();
}
-
+
if(object_store.ContainsKey(name)) {
old_value = (T)object_store[name];
if (value.Equals (old_value))
@@ -188,7 +188,7 @@
public Type GetType(string name)
{
lock(this) {
- return !Contains(name) ? null : object_store[name].GetType();
+ return Contains(name) ? object_store[name].GetType() : null;
}
}
}
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.mdp
==============================================================================
--- /trunk/banshee/src/Core/Hyena/Hyena.mdp (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.mdp Thu Feb 14 18:07:56 2008
@@ -75,6 +75,7 @@
<File name="Hyena.Data/DictionaryModelCache.cs" subtype="Code" buildaction="Compile" />
<File name="Hyena.Query/AliasedObjectSet.cs" subtype="Code" buildaction="Compile" />
<File name="Hyena/StringUtil.cs" subtype="Code" buildaction="Compile" />
+ <File name="Hyena/Log.cs" subtype="Code" buildaction="Compile" />
</Contents>
<References>
<ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
@@ -91,4 +92,4 @@
<AsmRefVar />
<ProjectRefVar />
</MonoDevelop.Autotools.MakefileInfo>
-</Project>
\ No newline at end of file
+</Project>
Copied: trunk/banshee/src/Libraries/Hyena/Hyena/Log.cs (from r3233, /trunk/banshee/src/Core/Banshee.Core/Banshee.Base/Log.cs)
==============================================================================
--- /trunk/banshee/src/Core/Banshee.Core/Banshee.Base/Log.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena/Log.cs Thu Feb 14 18:07:56 2008
@@ -29,7 +29,7 @@
using System;
using System.Collections.Generic;
-namespace Banshee.Base
+namespace Hyena
{
public delegate void LogNotifyHandler (LogNotifyArgs args);
@@ -93,10 +93,16 @@
private static Dictionary<uint, DateTime> timers = new Dictionary<uint, DateTime> ();
private static uint next_timer_id = 1;
+
+ private static bool debugging = false;
+ public static bool Debugging {
+ get { return debugging; }
+ set { debugging = value; }
+ }
private static void Commit (LogEntryType type, string message, string details, bool showUser)
{
- if (type == LogEntryType.Debug && !ApplicationContext.Debugging) {
+ if (type == LogEntryType.Debug && !Debugging) {
return;
}
@@ -137,28 +143,28 @@
public static void Debug (string message, string details)
{
- if (ApplicationContext.Debugging) {
+ if (Debugging) {
Commit (LogEntryType.Debug, message, details, false);
}
}
public static void Debug (string message)
{
- if (ApplicationContext.Debugging) {
+ if (Debugging) {
Debug (message, null);
}
}
public static void DebugFormat (string format, params object [] args)
{
- if (ApplicationContext.Debugging) {
+ if (Debugging) {
Debug (String.Format (format, args));
}
}
public static uint DebugTimerStart (string message)
{
- if (!ApplicationContext.Debugging) {
+ if (!Debugging) {
return 0;
}
@@ -168,7 +174,7 @@
public static uint DebugTimerStart ()
{
- if (!ApplicationContext.Debugging) {
+ if (!Debugging) {
return 0;
}
@@ -179,7 +185,7 @@
public static void DebugTimerPrint (uint id)
{
- if (!ApplicationContext.Debugging) {
+ if (!Debugging) {
return;
}
@@ -188,7 +194,7 @@
public static void DebugTimerPrint (uint id, string message)
{
- if (!ApplicationContext.Debugging) {
+ if (!Debugging) {
return;
}
Modified: trunk/banshee/src/Libraries/Hyena/Makefile.am
==============================================================================
--- /trunk/banshee/src/Core/Hyena/Makefile.am (original)
+++ trunk/banshee/src/Libraries/Hyena/Makefile.am Thu Feb 14 18:07:56 2008
@@ -67,6 +67,7 @@
Hyena.SExpEngine/TreeNode.cs \
Hyena.SExpEngine/UtilityFunctionSet.cs \
Hyena/IUndoAction.cs \
+ Hyena/Log.cs \
Hyena/StringUtil.cs \
Hyena/Timer.cs \
Hyena/UndoManager.cs \
Added: trunk/banshee/src/Libraries/Lastfm.Gui/Lastfm.Gui.mdp
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Libraries/Lastfm.Gui/Lastfm.Gui.mdp Thu Feb 14 18:07:56 2008
@@ -0,0 +1,23 @@
+<Project name="Lastfm.Gui" fileversion="2.0" language="C#" clr-version="Net_2_0" ctype="DotNetProject">
+ <Configurations active="Debug">
+ <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+ <Output directory="./" assembly="Lastfm" />
+ <Build debugmode="True" target="Library" />
+ <Execution runwithwarnings="True" consolepause="True" runtime="MsNet" clr-version="Net_2_0" />
+ <CodeGeneration compiler="Csc" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" mainclass="" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+ </Configuration>
+ </Configurations>
+ <Contents>
+ <File name="./Lastfm.Gui/AccountLoginDialog.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Lastfm.Gui/AccountLoginForm.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Lastfm.Gui/Badge.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Lastfm.Gui/LinkButton.cs" subtype="Code" buildaction="Compile" />
+ </Contents>
+ <References>
+ <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+ <ProjectReference type="Project" localcopy="False" refto="Gnome.Keyring" />
+ <ProjectReference type="Gac" localcopy="True" refto="gnome-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ </References>
+</Project>
Modified: trunk/banshee/src/Libraries/Lastfm/Lastfm.mdp
==============================================================================
--- trunk/banshee/src/Libraries/Lastfm/Lastfm.mdp (original)
+++ trunk/banshee/src/Libraries/Lastfm/Lastfm.mdp Thu Feb 14 18:07:56 2008
@@ -1,25 +1,20 @@
-<Project name="Last.FM" fileversion="2.0" language="C#" clr-version="Net_2_0" ctype="DotNetProject">
+<Project name="Lastfm" fileversion="2.0" language="C#" clr-version="Net_2_0" ctype="DotNetProject">
<Configurations active="Debug">
<Configuration name="Debug" ctype="DotNetProjectConfiguration">
- <Output directory="./" assembly="Last.FM" />
+ <Output directory="./" assembly="Lastfm" />
<Build debugmode="True" target="Library" />
<Execution runwithwarnings="True" consolepause="True" runtime="MsNet" clr-version="Net_2_0" />
<CodeGeneration compiler="Csc" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" mainclass="" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
</Configuration>
</Configurations>
<Contents>
- <File name="./Last.FM/Account.cs" subtype="Code" buildaction="Compile" />
- <File name="./Last.FM/Browser.cs" subtype="Code" buildaction="Compile" />
- <File name="./Last.FM.Gui/AccountLoginDialog.cs" subtype="Code" buildaction="Compile" />
- <File name="./Last.FM.Gui/AccountLoginForm.cs" subtype="Code" buildaction="Compile" />
- <File name="./Last.FM.Gui/Badge.cs" subtype="Code" buildaction="Compile" />
- <File name="./Last.FM.Gui/LinkButton.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Lastfm/Account.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Lastfm/Browser.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Lastfm/Connection.cs" subtype="Code" buildaction="Compile" />
</Contents>
<References>
<ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
<ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
- <ProjectReference type="Project" localcopy="False" refto="Gnome.Keyring" />
<ProjectReference type="Gac" localcopy="True" refto="gnome-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
</References>
-</Project>
\ No newline at end of file
+</Project>
Modified: trunk/banshee/src/Libraries/Lastfm/Lastfm/Account.cs
==============================================================================
--- trunk/banshee/src/Libraries/Lastfm/Lastfm/Account.cs (original)
+++ trunk/banshee/src/Libraries/Lastfm/Lastfm/Account.cs Thu Feb 14 18:07:56 2008
@@ -34,7 +34,7 @@
namespace Lastfm
{
- public abstract class Account
+ public class Account
{
public event EventHandler Updated;
Modified: trunk/banshee/src/Libraries/Lastfm/Lastfm/Connection.cs
==============================================================================
--- trunk/banshee/src/Libraries/Lastfm/Lastfm/Connection.cs (original)
+++ trunk/banshee/src/Libraries/Lastfm/Lastfm/Connection.cs Thu Feb 14 18:07:56 2008
@@ -36,9 +36,10 @@
using System.Xml;
using System.Web;
+using Hyena;
using Mono.Unix;
-using Playlists.Xspf;
+using Media.Playlists.Xspf;
namespace Lastfm
{
@@ -109,7 +110,7 @@
return;
state = value;
- //LogCore.Instance.PushDebug (String.Format ("Last.fm State Changed to {0}", state), null, false);
+ Log.Debug (String.Format ("Last.fm State Changed to {0}", state), null);
StateChangedHandler handler = StateChanged;
if (handler != null) {
handler (this, new ConnectionStateChangedArgs (state));
@@ -211,9 +212,9 @@
try {
stream = GetXspfStream (url);
pl.Load (stream);
- //LogCore.Instance.PushDebug (String.Format ("Adding {0} Tracks to Last.fm Station {1}", pl.TrackCount, station), null);
+ Log.Debug (String.Format ("Adding {0} Tracks to Last.fm Station {1}", pl.TrackCount, station), null);
} catch (System.Net.WebException e) {
- //LogCore.Instance.PushWarning ("Error Loading Last.fm Station", e.Message, false);
+ Log.Warning ("Error Loading Last.fm Station", e.Message, false);
return null;
} catch (Exception e) {
string body = "Unable to get body";
@@ -222,10 +223,10 @@
body = strm.ReadToEnd ();
}
} catch {}
- /*LogCore.Instance.PushWarning (
+ Log.Warning (
"Error loading station",
String.Format ("Exception:\n{0}\n\nResponse Body:\n{1}", e.ToString (), body), false
- );*/
+ );
return null;
}
@@ -277,11 +278,11 @@
// Set us as connecting, assuming the connection attempt wasn't changed out from under us
if (ParseHandshake (new StreamReader (stream).ReadToEnd ()) && session != null) {
State = ConnectionState.Connected;
- //LogCore.Instance.PushDebug (String.Format ("Logged into Last.fm as {0}", Username), null, false);
+ Log.Debug (String.Format ("Logged into Last.fm as {0}", account.Username), null);
return;
}
} catch (Exception e) {
- //LogCore.Instance.PushDebug ("Error in Last.fm Handshake", e.ToString (), false);
+ Log.Debug ("Error in Last.fm Handshake", e.ToString ());
}
// Must not have parsed correctly
@@ -293,7 +294,7 @@
private bool ParseHandshake (string content)
{
- //LogCore.Instance.PushDebug ("Got Last.fm Handshake Response", content, false);
+ Log.Debug ("Got Last.fm Handshake Response", content);
string [] lines = content.Split (new Char[] {'\n'});
foreach (string line in lines) {
string [] opts = line.Split (new Char[] {'='});
@@ -303,11 +304,11 @@
if (opts[1].ToLower () == "failed") {
session = null;
State = ConnectionState.InvalidAccount;
- /*LogCore.Instance.PushWarning (
+ Log.Warning (
Catalog.GetString ("Failed to Login to Last.fm"),
Catalog.GetString ("Either your username or password is invalid."),
false
- );*/
+ );
return false;
}
Added: trunk/banshee/src/Libraries/Libraries.mds
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Libraries/Libraries.mds Thu Feb 14 18:07:56 2008
@@ -0,0 +1,25 @@
+<Combine name="Core" fileversion="2.0">
+ <Configurations active="Debug">
+ <Configuration name="Debug" ctype="CombineConfiguration">
+ <Entry build="True" name="Hyena" configuration="Debug" />
+ <Entry build="True" name="Hyena.Gui" configuration="Debug" />
+ <Entry build="True" name="Lastfm" configuration="Debug" />
+ <Entry build="True" name="Lastfm.Gui" configuration="Debug" />
+ <Entry build="True" name="Mono.Media" configuration="Debug" />
+ </Configuration>
+ </Configurations>
+ <StartMode startupentry="Nereid" single="True">
+ <Execute type="None" entry="Hyena" />
+ <Execute type="None" entry="Hyena.Gui" />
+ <Execute type="None" entry="Lastfm" />
+ <Execute type="None" entry="Lastfm.Gui" />
+ <Execute type="None" entry="Mono.Media" />
+ </StartMode>
+ <Entries>
+ <Entry filename="Hyena/Hyena.mdp" />
+ <Entry filename="Hyena.Gui/Hyena.Gui.mdp" />
+ <Entry filename="Lastfm/Lastfm.mdp" />
+ <Entry filename="Lastfm.Gui/Lastfm.Gui.mdp" />
+ <Entry filename="Mono.Media/Mono.Media.mdp" />
+ </Entries>
+</Combine>
Modified: trunk/banshee/src/Libraries/Makefile.am
==============================================================================
--- trunk/banshee/src/Libraries/Makefile.am (original)
+++ trunk/banshee/src/Libraries/Makefile.am Thu Feb 14 18:07:56 2008
@@ -1,4 +1,6 @@
SUBDIRS = \
+ Hyena \
+ Hyena.Gui \
Mono.Media \
Lastfm \
Lastfm.Gui
Modified: trunk/banshee/src/Libraries/Mono.Media/Makefile.am
==============================================================================
--- trunk/banshee/src/Libraries/Mono.Media/Makefile.am (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Makefile.am Thu Feb 14 18:07:56 2008
@@ -3,13 +3,13 @@
LINK = $(REF_MONO_MEDIA)
SOURCES = \
- Playlists.Xspf/LinkEntry.cs \
- Playlists.Xspf/MetaEntry.cs \
- Playlists.Xspf/Playlist.cs \
- Playlists.Xspf/Track.cs \
- Playlists.Xspf/W3CDateTime.cs \
- Playlists.Xspf/XmlUtil.cs \
- Playlists.Xspf/XspfBaseObject.cs
+ Media.Playlists.Xspf/LinkEntry.cs \
+ Media.Playlists.Xspf/MetaEntry.cs \
+ Media.Playlists.Xspf/Playlist.cs \
+ Media.Playlists.Xspf/Track.cs \
+ Media.Playlists.Xspf/W3CDateTime.cs \
+ Media.Playlists.Xspf/XmlUtil.cs \
+ Media.Playlists.Xspf/XspfBaseObject.cs
include $(top_srcdir)/build/build.mk
Modified: trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/LinkEntry.cs
==============================================================================
--- /trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/LinkEntry.cs (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/LinkEntry.cs Thu Feb 14 18:07:56 2008
@@ -28,7 +28,7 @@
using System;
-namespace Playlists.Xspf
+namespace Media.Playlists.Xspf
{
public struct LinkEntry
{
Modified: trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/MetaEntry.cs
==============================================================================
--- /trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/MetaEntry.cs (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/MetaEntry.cs Thu Feb 14 18:07:56 2008
@@ -28,7 +28,7 @@
using System;
-namespace Playlists.Xspf
+namespace Media.Playlists.Xspf
{
public struct MetaEntry
{
Modified: trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Playlist.cs
==============================================================================
--- /trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/Playlist.cs (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Playlist.cs Thu Feb 14 18:07:56 2008
@@ -32,7 +32,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
-namespace Playlists.Xspf
+namespace Media.Playlists.Xspf
{
public class Playlist : XspfBaseObject
{
@@ -57,14 +57,20 @@
}
private void Load(XmlDocument doc)
- {
+ {
XmlNamespaceManager xmlns = new XmlNamespaceManager(doc.NameTable);
xmlns.AddNamespace("xspf", XspfNamespace);
XmlNode playlist_node = doc.SelectSingleNode("/xspf:playlist", xmlns);
-
+
if(playlist_node == null) {
- throw new ApplicationException("Not a valid XSPF playlist");
+ // Hack to work with files that don't have a namespace on the <playlist> node, like Last.fm
+ xmlns.AddNamespace("xspf", String.Empty);
+ playlist_node = doc.SelectSingleNode("/xspf:playlist", xmlns);
+
+ if(playlist_node == null) {
+ throw new ApplicationException("Not a valid XSPF playlist");
+ }
}
XmlAttribute version_attr = playlist_node.Attributes["version"];
Modified: trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Track.cs
==============================================================================
--- /trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/Track.cs (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/Track.cs Thu Feb 14 18:07:56 2008
@@ -31,7 +31,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
-namespace Playlists.Xspf
+namespace Media.Playlists.Xspf
{
public class Track : XspfBaseObject
{
Modified: trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/W3CDateTime.cs
==============================================================================
--- /trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/W3CDateTime.cs (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/W3CDateTime.cs Thu Feb 14 18:07:56 2008
@@ -29,7 +29,7 @@
using System;
using System.Text.RegularExpressions;
-namespace Playlists.Xspf
+namespace Media.Playlists.Xspf
{
public struct W3CDateTime: IComparable
{
Modified: trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/XmlUtil.cs
==============================================================================
--- /trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/XmlUtil.cs (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/XmlUtil.cs Thu Feb 14 18:07:56 2008
@@ -30,7 +30,7 @@
using System.Xml;
using System.Collections.Generic;
-namespace Playlists.Xspf
+namespace Media.Playlists.Xspf
{
internal static class XmlUtil
{
Modified: trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/XspfBaseObject.cs
==============================================================================
--- /trunk/banshee/src/Libraries/Mono.Media/Playlists.Xspf/XspfBaseObject.cs (original)
+++ trunk/banshee/src/Libraries/Mono.Media/Media.Playlists.Xspf/XspfBaseObject.cs Thu Feb 14 18:07:56 2008
@@ -31,7 +31,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
-namespace Playlists.Xspf
+namespace Media.Playlists.Xspf
{
public abstract class XspfBaseObject
{
Added: trunk/banshee/src/Libraries/Mono.Media/Mono.Media.mdp
==============================================================================
--- (empty file)
+++ trunk/banshee/src/Libraries/Mono.Media/Mono.Media.mdp Thu Feb 14 18:07:56 2008
@@ -0,0 +1,27 @@
+<Project name="Mono.Media" fileversion="2.0" language="C#" clr-version="Net_2_0" ctype="DotNetProject">
+ <Configurations active="Debug">
+ <Configuration name="Debug" ctype="DotNetProjectConfiguration">
+ <Output directory="./" assembly="Mono.Media" />
+ <Build debugmode="True" target="Library" />
+ <Execution runwithwarnings="True" consolepause="True" runtime="MsNet" clr-version="Net_2_0" />
+ <CodeGeneration compiler="Csc" warninglevel="4" optimize="True" unsafecodeallowed="False" generateoverflowchecks="True" mainclass="" generatexmldocumentation="False" ctype="CSharpCompilerParameters" />
+ </Configuration>
+ </Configurations>
+ <Contents>
+ <File name="./Lastfm/Account.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Lastfm/Browser.cs" subtype="Code" buildaction="Compile" />
+ <File name="./Lastfm/Connection.cs" subtype="Code" buildaction="Compile" />
+ <File name="Mono.Media/Banshee.Playlists.Formats.Xspf/LinkEntry.cs" subtype="Code" buildaction="Compile" />
+ <File name="Mono.Media/Banshee.Playlists.Formats.Xspf/MetaEntry.cs" subtype="Code" buildaction="Compile" />
+ <File name="Mono.Media/Banshee.Playlists.Formats.Xspf/Playlist.cs" subtype="Code" buildaction="Compile" />
+ <File name="Mono.Media/Banshee.Playlists.Formats.Xspf/Track.cs" subtype="Code" buildaction="Compile" />
+ <File name="Mono.Media/Banshee.Playlists.Formats.Xspf/W3CDateTime.cs" subtype="Code" buildaction="Compile" />
+ <File name="Mono.Media/Banshee.Playlists.Formats.Xspf/XmlUtil.cs" subtype="Code" buildaction="Compile" />
+ <File name="Mono.Media/Banshee.Playlists.Formats.Xspf/XspfBaseObject.cs" subtype="Code" buildaction="Compile" />
+ </Contents>
+ <References>
+ <ProjectReference type="Gac" localcopy="True" refto="System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
+ <ProjectReference type="Gac" localcopy="True" refto="gnome-sharp, Version=2.8.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
+ </References>
+</Project>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]