2008-03-13 Aaron Bockover Banshee 1.0 Alpha 1 (0.98.1) Released 2008-03-13 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs: Disable one broken pre-defined smart playlist, and ensure the others are refreshed/reloaded when 'selected for use'. 2008-03-13 Aaron Bockover * NEWS: Updated for 0.98.1 * configure.ac: Require Mono 1.2.2, oops 2008-03-13 Gabriel Burt * src/Libraries/Hyena/Hyena/DateTimeUtil.cs: Super ugly hack to work around ArguemtnOutOfRangeException thrown by DateTime parser. 2008-03-13 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Add Banshee Group radio station as a default. 2008-03-13 Aaron Bockover * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Protect against NRE when comparing track objects 2008-03-13 James Willcox * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Correctly update after cover art appears 2008-03-13 Gabriel Burt * src/Extensions/Banshee.Lastfm/Resources/audioscrobbler.png: Replace 24x24 version with 22x22 version. 2008-03-13 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: Disable repeat modes in the UI since they are not actually implemented in the playback controller at this time 2008-03-13 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Patch from Alexander Hixon fixing the Audioscrobbler now-playing delay issue, properly listens for the account being updated to update links/actions. * src/Core/Banshee.Core/Resources/contributors.xml: Add Michael Monreal to Artists. 2008-03-13 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Avoid GtkCritical warning by checking that the TreeIter is not Zero before setting a value on it. Fixes bug with closing the Error Source. 2008-03-13 Gabriel Burt * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteUtils.cs: Patch from Scott Peterson fixing up some DateTime/SQL related issues. 2008-03-13 Aaron Bockover * configure.ac: * src/AssemblyInfo.cs.in: * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Expose a display version in assembly metadata and API * src/Core/Banshee.Core/Banshee.Base/ProductInformation.cs: Fix small bug * src/Core/Banshee.Core/Resources/contributors.xml: Updated * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/AboutDialog.cs: Some minor fixes and cosmetic polish; the link works again 2008-03-12 Aaron Bockover * src/Core/Banshee.Core/Banshee.Base/Paths.cs: Redefine LegacyApplicationData to mean the previous ApplicationData, not the one from when we were using ~/.gnome2/banshee * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs: Migrate cover art from the new LegacyApplicationData path * src/Core/Banshee.Services/Makefile.am: Fixed build 2008-03-12 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs: Rename LibraryAlbumInfo to DatabaseAlbumInfo. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Change all DateTime.MinValue stamps to NULL. * src/Extensions/Banshee.Lastfm/Makefile.am: Alphabetize. * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteUtils.cs: Serialize and unserialze DateTime.MinValue as NULL. * src/nuke-core-tables: Update to new config subdir. 2008-03-12 Gabriel Burt * src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade: * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs: Disable artist/album editing and add note explaining they are disabled for the preview release. * src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs: * src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs: Save all metadata possible back to files, and add notes about keeping these two classes in sync. 2008-03-12 Scott Peterson * src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs: Don't copy the old db file unless it exists. 2008-03-12 Aaron Bockover * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Make CanPlay false if there is a stream error on the track * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationType.cs: Change some of the icons for now 2008-03-12 Aaron Bockover * src/Core/Banshee.Core/Banshee.Base/Paths.cs: Change the application data directory to banshee-1; create the directory if it doesn't exist; added ExtensionsData to Paths * src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs: Copy the old library to the new path if it exists - this will allow both old and new Banshee series to fully coexist * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs: Use the ExtensionsData path 2008-03-12 Aaron Bockover Yes. I made all the build stuff refer to Banshee as banshee-1 instead of banshee-preview. This includes all paths, launchers, and even gconf keys. 2008-03-12 Aaron Bockover * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs: Fixed the null check, actually works now * src/Clients/Nereid/Nereid/ViewContainer.cs: Add a 'Help' menu item to the bottom of the search entry filter menu * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Add a menu item that takes the user to the documentation on the Wiki for query/search syntaxt and examples * src/Core/Banshee.Widgets/Banshee.Widgets/SearchEntry.cs: Expose the Menu * src/Libraries/Lastfm/Lastfm/Account.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Hook up the web browser stuff again so account links work * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginDialog.cs: Add the account signup button back * src/Libraries/Lastfm/Lastfm/Browser.cs: Fixed up to work again 2008-03-12 Aaron Bockover * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs: Added an all-singing, all-dancing GNOME entry service; currently this just hooks up Gnome.Url.Show (gnome-open) to Banshee.Web.Browser; ideally Process.Start would work properly, but it's got some issues, even though it does use xdg-open (which gnome-open should use); gnome-open is also a bit more backwards compatible and may be necessary on SLED, for instance; phew. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Fixed the playback indication for database tracks (BGO #520503) * src/Core/Banshee.Services/Banshee.Web/Browser.cs: Implemented an OpenHandler to allow extensions to override the default way of opening a link in a browser * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GConfConfigurationClient.cs: Renamed namespace from Banshee.Gnome to Banshee.GnomeBackend since there is a possibility of conflicts with the standard Gnome namespace * build/build.rules.mk: Add some rules to filter out duplicate references that will be passed to the compiler due to the dependency chain in the build environment; makes debugging easier even though the compiler would filter this out by itself; also put hard target dependencies on assemblies that are referenced in bin/; hopefully will help some occasional build problems 2008-03-12 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Call RefreshAndReload on smart playlist Refresh action. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs: Call RefreshAndReload when loading the smart playlists if we just migrated them. 2008-03-12 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/ICacheableItem.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Add a CacheModelId property to Track/Artist/Album classes, and rename SourceEntryId to CacheEntryId. 2008-03-11 Gabriel Burt This commit cleans up and speeds up reloading. * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/ArtistListDatabaseModel.cs: Listen for Selection.Changed event and reload the track model with the appropriate ReloadTrigger argument. * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: Add a Reload method that takes a ReloadTrigger argument identifying what caused the reload (user query, artist or album filter) so each can be handled optimally. Should fix performance regressions introduced in yesterday's bug fixes. * src/Core/Banshee.Services/Banshee.Collection/SelectAllSelection.cs: If there is only one real item and it's selected, then AllSelected = true. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add a bunch more indexes to CoreTracks. * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Do not call lower() within ORDER BY fragments for track sorting. This means it will be case sensitive for now. Sqlite's lower() method doesn't work with non-LATIN characters, and it's slow. We need to add columns where we store the result of lowercasing Album, Artist, and Title in C#. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Add a new Refresh method that actually regenerates the smart playlist entries, since this doesn't need to happen on every Reload. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Move the complicated Reload logic into the *ListDatabaseModels. Get rid of FilteredDuration/FileSize properties. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: * src/Core/Banshee.Services/Banshee.Sources/IFileSizeAggregator.cs: * src/Core/Banshee.Services/Banshee.Sources/IDurationAggregator.cs: Remove Filtered* properties - we never display both, so might was well not require it or bother to calculate the un-filtered version. * src/Libraries/Hyena/Hyena.Data/IFilterable.cs: Remove Refilter method. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Fix bug with default sort column where it was based on your column order. * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs: Call new Refresh method on SmartPlaylistSources. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Remove selection-changed source reload code - that's handled internally by the *ListDatabaseModels now. * src/Libraries/Hyena/Hyena.Data/ModelCache.cs: Change Reload to return void. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Use slightly faster INSERT INTO pattern, and don't automatically Save/RestoreSelection and UpdateAggregates within Reload. 2008-03-11 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Gui/CairoExtensions.cs: Do not crash if the native Cairo pop/push group functions do not exist 2008-03-11 Aaron Bockover * build/build.rules.mk: * build/m4/banshee/gtk-sharp.m4: * configure.ac: Check for Gtk# 2.10 or better and define HAVE_GTK_2_10 on all the assemblies; this will allow the build to succeed on Gtk# 2.8 * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/GtkNotificationAreaBox.cs: Do not build if we don't HAVE_GTK_2_10, since GtkStatusIcon was introduced in that version; we only use GtkStatusIcon as a fallback if we are not running on X11/Unix anyway (i.e. it's mainly used for Windows) * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Do not try to instantiate GtkNotificationAreaBox if we don't HAVE_GTK_2_10; and since now we are not guaranteed to have some sort of INotificationAreaBox, properly dispose the notification area service if we never get a reference to one (i.e. running on not X11/Unix and not Gtk# 2.10+) 2008-03-11 Aaron Bockover * src/Clients/Nereid/Nereid/PlayerInterface.cs: Remove a bad line where I set the colormap of the window to be RGBA for no reason; I was playing around one night and committed this awful thing; SORRY 2008-03-11 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Gui/PangoCairoHelper.cs: Wrap the Pango Cairo calls we care about so we'll build and run on GTK 2.8 again, which is quite important (yay SLED) * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/BetaReleaseViewOverlay.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Use the new Hyena.Gui.PangoCairoHelper API * src/Libraries/Hyena.Gui/Hyena.Data.Gui/CairoHelper.cs: Nuked 2008-03-11 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationType.cs: * src/Extensions/Banshee.Lastfm/Makefile.am: New tag, recommended, neighbour, and personal icons. * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginForm.cs: Do not update the account information until the Close button is pressed. 2008-03-11 Gabriel Burt * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Removed Equals and GetHashCode override that ignored type differences, and caused the playqueue to disappear if you had a smartplaylist of the same id. 2008-03-10 Gabriel Burt * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: Fix scrolling to jump to the first selected item only if a selected item is not already in view. If the model count < the visible rows, scroll to the top. 2008-03-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnController.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: Default the sort of the TrackList to sort by Artist. 2008-03-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeModelProvider.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/ICacheableItem.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Rename CacheId to SourceEntryId, only require T : ICacheableItem in *ModelCache classes, and set the SourceEntryId in SqliteModelCache. * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: Remove cruft. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Comment out logging. 2008-03-10 Gabriel Burt * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Fix bug with inconsistent table name in SQL. 2008-03-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs: Add CacheId property that can be used to uniqued ID an item within a list. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Notify the Library about the metadata-refreshed tracks after closing the user job so it doesn't look like it's hung. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: SpawnFromMain a few methods. * src/Core/Banshee.Services/Banshee.Database/BansheeModelCache.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeModelProvider.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: * src/Libraries/Hyena/Makefile.am: * src/Libraries/Hyena/Hyena.Data.Sqlite/ICacheableItem.cs: New interface containing CacheId property that *ModelCache and *ModelProvider classes require. 2008-03-10 Aaron Bockover * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Change AudiblyEqual to TrackEqual since it makes more sense; make the base comparison compare the track URIs * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Override TrackEqual and use database IDs for comparisons since that is much more efficient; not complete however; renamed DbId to TrackId * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Changed to use TrackId instead of DbId 2008-03-10 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs: Patch from Lukas Lipka to use the stop icon instead of close icon in the UserJobTile widget (BGO #520342) 2008-03-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Fix smart playlists to work with new ReloadTrack override. 2008-03-10 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: Use the new Ready state instead of Initialized * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs: Do not allow state transitions unless the engine is setting itself to the ready state; send the idle state automatically once the engine sends the ready state; all engines must transition to ready before anything else * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Handle the NotReady state in much the same way Idle is handled; some generic code cleanup * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineState.cs: Removed Initialized state in favor of Ready, added the NotReady state, which is the default state for all engines; engines must manually transition to the Ready state before any other state changes can occur * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Set the playing track when PlayerEngineEvent.StartOfStream is raised; do not set the playing track manually when querying the model 2008-03-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: 2008-03-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/ArtistListDatabaseModel.cs: Add override to Reload method with options for suppressing notification and filtering. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Remove RateLimitedFilter method, rework Reload to do suffice. Remove cruft. Call track model's Reload with arguments to suppress notification and artist/album filtering. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Remove cruft, call PruneArtistsAlbums from within OnTracksDeleted * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Simplify Selection changed handler to just call Reload on the source. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/ISourceContents.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/ObjectListSourceContents.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs: Change to use ISource instead of Source. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Prevent unnecessary Selection.Changed raising. * src/Libraries/Hyena/Hyena.Collections/Selection.cs: Add ToString override for debugging. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Do ++count so Library gets refreshed on even 500s instead of N*500 + 1. 2008-03-10 Aaron Bockover * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Removed all of the excessive [potential] thread spawning; it will be moved to where it is actually necessary (it is not necessary in most cases, is overkill, and can cause unexpected problems); this fixes the regression in the Play Queue 2008-03-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Fix the build. 2008-03-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: Now depends on the Artist model, resets the artist filter at each reload, exposes CacheId and ClearCache. * src/Core/Banshee.Services/Banshee.Collection.Database/ArtistListDatabaseModel.cs: Expose CacheId property and ClearCache method. * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: Keep references to the artist/album models and regenerate the artist/album filter for each reload. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Reset the count to 0 when finished importing. * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Whitespace. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Avoid triggering the Reloaded event when reloading it twice in a row - no flicker. OnTracksRemoved now reloads the current source, but not the library etc. New PruneArtistsAlbums method that deletes artists/albums from the cache that have been removed from the library. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Rename TracksRemoved event to TracksDeleted for clarity/parity with method names. Override PruneArtistsAlbums method. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Fix reloading when selection changes. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: TracksRemoved event renamed to TracksDeleted for clarity. 2008-03-10 Gabriel Burt * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Avoid unnecessary db queries in saving/restoring selection. Fix bugs with IndexOf method. * src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs: Add lock around Clear command. 2008-03-07 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_DragAndDrop.cs: Calculate the row index for reordering * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Render a line to indicate the row reordering index 2008-03-07 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_DragAndDrop.cs: Some minor fixes and cleanups 2008-03-07 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_DragAndDrop.cs: Added another partial class for drag and drop specific stuff for the view; implement variable velocity scrolling when dragging rows in the view; it's awesome; added a Reorderable property, but it does not do anything yet (other than the awesome scrolling) * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Moved some DnD code into the new partial class * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Set Reorderable and ForceDragSourceSet properties * src/Core/Banshee.ThickClient/Banshee.Gui.DragDrop/DragDropTarget.cs: Removed the model selection target * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView_DragAndDrop.cs: Use the model selection target from hyena * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs: Fixed a crasher/NRE 2008-03-07 Aaron Bockover * src/Libraries/Hyena/Hyena/ConsoleCrayon.cs: Added Hutch's terminfo changes to do all the coloring properly 2008-03-06 Gabriel Burt * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: * src/Core/Banshee.Core/Banshee.Streaming/CommonTags.cs: * src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add Composer, Copyright, LicenseUri, and Comment columns to CoreTracks. * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Add Composer field. 2008-03-06 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs: Add ToString override for debugging purposes. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Scroll to the top if artist or album selection changes to all selected. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: When refreshing the view for the model, scroll to the first selected item if possible. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: * src/Libraries/Hyena/Hyena.Data/ModelCache.cs: Add locks to make thread-safe, solves (at least some) spurious browser issues people have been seeing. 2008-03-06 Aaron Bockover * src/Core/Banshee.Widgets/Banshee.Widgets/StreamPositionLabel.cs: Render the buffering progress bar using the GTK styles, take care of the pango layout manually instead of using a GtkLabel to be able to render the text in two colors, depending on the progress bar * build/build.rules.mk: Do not pass -warnaserror if mono is older than 1.2.4 since there appear to be some fake warnings raised with the older gmcs compiler * build/m4/shamrock/mono.m4: Added a method to detect the mono version but not bail if it wasn't met, and set a result * configure.ac: Check for at least mono 1.2.4 and export the result 2008-03-05 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/BetaReleaseViewOverlay.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Use the allocation passed to Render to do the maths * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Expose ListAllocation as a protected property 2008-03-05 Aaron Bockover Lots of build fixes, preparing for the release * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Always update the addin registry so new/changed addins are rescanned * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Workaround for a mono 1.2.4 bug 2008-03-05 Gabriel Burt * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Small but powerful fix - was not clearing the selection between reloads at all. 2008-03-05 Gabriel Burt * src/Core/Banshee.Services/Banshee.Base/RateLimiter.cs: Change to prevent the method from being called while it is still running, queueing another run to happen when the current one finishes, instead of specifying a specific rate limit. * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/ArtistListDatabaseModel.cs: Set HasSelectAllItem on cache to true. * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: Avoid parsing the user query if it hasn't changed since we last parsed it. Add SuppressReloads method so we can update both the album and artist filter before doing a Reload, and add a ClearArtistAlbumFilters method that directly, quickly does that. * src/Core/Banshee.Services/Banshee.Collection/AlbumListModel.cs: * src/Core/Banshee.Services/Banshee.Collection/ArtistListModel.cs: * src/Core/Banshee.Services/Banshee.Collection/BansheeListModel.cs: * src/Core/Banshee.Services/Banshee.Collection/TrackListModel.cs: Create the selection object within each subclass so that Album and Artist models can create a SelectAllSelection. * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Collection/SelectAllSelection.cs: New class that makes sure the first item is selected as the AllSelected = true state. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Override new ReloadTrackModel method which is called by DatabaseSource's RateLimitedReload and RateLimitedFilter methods. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Add RateLimitedFilter method for spawning off the filter handler. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Updated to work with SelectAllSelection and to trigger two track model updates when the artist model changes - one that is not filtered by any artists or albums, and one that is filtered by the artist/album selection, if any. * src/Libraries/Hyena/Hyena.Collections/Selection.cs: Change AllSelected and SelectAll to be virtual, add a MaxIndex getter. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Update the SaveSelection and RestoreSelection code to work with artist/album selections that have a first (fake) item "All *". 2008-03-05 Gabriel Burt * src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs: Ignore deprecation warning. 2008-03-05 Aaron Bockover * build/build.rules.mk: Turned on -warnaserror and only show the bold compiling message if the terminal supports colors and is a tty * src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/CairoHelper.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: Fixed warnings 2008-03-05 Gabriel Burt * src/Core/Banshee.Core/Resources/COPYING: Update to 2008. * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Fix warnings. 2008-03-04 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs: Replace confusing constructors with static FindOrCreate methods. Should fix an issue with finding/creating/associating new albums too. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Use new FindOrCreate methods. 2008-03-04 Gabriel Burt * src/Libraries/Hyena/Hyena.Data/ISelectable.cs: Forgot to commit new file. 2008-03-04 Gabriel Burt This commit fixes a long standing bug in trunk - selections now persist across source reloads (assuming the tracks are still in the source/not filtered). * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: Add a bool CachesJoinTableEntries property so Smart Playlists can use the join table but fill the CoreCache with TrackIDS not EntryIDS - needed, since their EntryIDs don't last long b/c they are wiped/created anew every time its Reloaded. * src/Core/Banshee.Services/Banshee.Collection/BansheeListModel.cs: Don't clear the selection on reload. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Override CachesJoinTableEntries to false. * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/ArtistListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Check model.CachesJoinTableEntries instead of JoinTable != null. * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Whitespace. * src/Libraries/Hyena/Hyena.Data.Sqlite/ICacheableDatabaseModel.cs: Inherit from ISelectable and add CachesJoinTableEntries property. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: SaveSelection before a Reload and RestoreSelection afterward. * src/Libraries/Hyena/Hyena.Data/ModelCache.cs: * src/Libraries/Hyena/Hyena.Data/ArrayModelCache.cs: * src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs: Update to use Int64s where appropriate. * src/Libraries/Hyena/Hyena.Data/IListModel.cs: Inherit from ISelectable. * src/Libraries/Hyena/Hyena.Data/ModelSelection.cs: Comment out unimplemented IndexOf method. * src/Libraries/Hyena/Makefile.am: New ISelectable interface. 2008-03-04 Gabriel Burt This commit adds more granular events for when tracks are added, changed, and removed to each track's PrimarySource. Playlists etc can listen for these events, and only reload when necessary (still work to do on this front). Reloads happen not in the main thread, so actions (like rating 4800 songs at once) return quickly, but other sources may take a second or few to be updated. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: In Save method, trigger PrimarySource's TrackAdded or Changed method as appropriate. * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: Cache the unfiltered query string. * src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs: Call OnImportFinished even if cancelled. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add CoreRemovedTracks table. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Pass false to DatabaseTrackInfo.Save method, and manually trigger TracksAdded event every 500 songs or when finished/cancelled. * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: Use RemoveTrackRange instead of remove_track_command. * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Add stamps for tracking when last handled Tracks* events, add count commands for use in determining if an event affects this source. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: Handle TracksChanged and TracksRemoved events from our PrimarySource parent. Right now we just always trigger a Reload, but these handlers are ripe for optimizations that will avoid Reloads unless absolutely necessary. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Trigger the Track* events on the primary source when adding/changing/removing tracks. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add TracksAdded, TracksChanged, and TracksRemoved methods. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Make SetParentSource a virtual method. * src/Core/Banshee.Services/Banshee.Collection/BansheeListModel.cs: * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Make sure GUI-related events are handled in the main loop. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: Turn DateTime values into integers. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Add another override for Query/Query/Execute (HyenaSqliteCommand, params). * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Cache the reload command. 2008-03-04 Aaron Bockover * src/Libraries/Hyena/Hyena/Log.cs: Added InformationTimer methods akin to DebugTimer methods that will work without --debug mode * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Use InformationTimer instead of DebugTimer to show the overall startup time; set the addin cache path to just be the application data path, since Mono.Addins creates its own subdirectory underneath * src/Core/Banshee.Services/Banshee.Services.addins: Scan Extensions and Backends directories for addins * build/build.environment.mk: Define EXTENSIONS_INSTALL_DIR, BACKENDS_INSTALL_DIR * src/Backends/Banshee.GStreamer/Makefile.am: * src/Backends/Banshee.Gnome/Makefile.am: * src/Backends/Banshee.Unix/Makefile.am: * src/Extensions/Banshee.Lastfm/Makefile.am: * src/Extensions/Banshee.MultimediaKeys/Makefile.am: * src/Extensions/Banshee.NotificationArea/Makefile.am: * src/Extensions/Banshee.PlayQueue/Makefile.am: * src/Extensions/Banshee.Skins/Makefile.am: Set the INSTALL_DIR to either EXTENSIONS_INSTALL_DIR or BACKENDS_INSTALL_DIR so addins are a bit more organized in the install/packages * src/Extensions/Makefile.am: Disable the skins extension 2008-03-04 Aaron Bockover * src/Libraries/Hyena/Hyena/ConsoleCrayon.cs: A workaround for the somewhat broken terminfo driver for setting console colors in System.Console on Mono. If xterm and tty is detected, ANSI control codes will be used to color the console, otherwise if the runtime is not mono and the OS is not unix, the regular System.Console API will be used * src/Libraries/Hyena/Hyena/Log.cs: Use Hyena.ConsoleCrayon instead of System.Console to set/reset the terminal colors 2008-03-03 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs: Catch Web exceptions in Love and Ban methods, avoiding crashing. 2008-03-03 Gabriel Burt This patch fixes a poor assumption made quite a while ago that for playlists put the TrackID into the CoreCache table, which if you had a song in a playlist twice would make it impossible to remove one and not the other. * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/ArtistListDatabaseModel.cs: Fix reload fragments to use the track_model's JoinTable etc when needed. * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: Add JoinTable, JoinPrimaryKey, and JoinColumn properties that allow the model to specify that it joins, for example, the CoreTracks table with the CoreCache table via the CorePlaylistEntries table. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add a EntryID primary key to CoreSmartPlaylistEntries, and create an index for it. * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Add JoinPrimaryKey virtual property, and set the Join* properties. * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: Fix AddTrackRange method to work with track model's that have a join table. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Change INSERT to add NULL so primary key automatically set. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Implement RemoveTrack by calling RemoveTrackRange with an appropriate Range. Add ReloadPrimarySource method that reloads the current source's "nearest" PrimarySource - either itself, its parent, or all PrimarySources. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Remove RemoveTrack method - fully implemented in DatabaseSource. * src/Libraries/Hyena/Hyena.Data.Sqlite/ICacheableDatabaseModel.cs: Add Join properties. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Handle models that specify a JoinTable. 2008-03-02 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: Activate the repeat action when it's loaded from configuration 2008-03-02 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/BetaReleaseViewOverlay.cs: Fix some small bugs; do not show with --debug passed 2008-03-02 Alexander Hixon * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Add a null check before sorting out dependencies, so we don't bomb out on creating a new simple Smart Playlist. 2008-03-01 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/BetaReleaseViewOverlay.cs: A sweet overlay thingy that draws some big warning/welcome for users about the state of trunk/preview release * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Render the hot overlay * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Expose some properties as protected * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/Stage.cs: Fix a bug when iterating actors in the stage by creating a copy to iterate; this allows actor step handlers to modify the stage actors * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/Theme.cs: Added DrawPie * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/ThemeContext.cs: Add some more state properties 2008-03-01 Scott Peterson * src/Libraries/Hyena/Hyena.Query/QueryNode.cs: Got rid of unnecessary condition. 2008-03-01 Scott Peterson * src/Libraries/Hyena/Hyena.Query/QueryNode.cs: Added methods to search a QueryNode tree for values of a given type either by depth or breadth. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Consume the new QueryNode.SearchForValues method. 2008-03-01 Scott Peterson * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Fixed typo. 2008-03-01 Scott Peterson * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Implements new HasDepenencies property. * src/Core/Banshee.Services/Banshee.Sources/ITrackModelSource.cs: Added HasDependencies property. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: The public Children property is now a ReadOnlyCollection since other code has no business modifying the collection directly. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: No longer reload a child source if it has dependencies (the dependencies will trigger a reload of the source which depends on them). * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Overrided Equals and GetHashCode to compare DbId. * src/Core/Banshee.Services/Banshee.Query/SmartPlaylistQueryValue.cs: Implements new abstract member Resolve(). Used to turn a DbId into a SmartPlaylistSource. * src/Core/Banshee.Services/Banshee.Query/PlaylistQueryValue.cs: Implements new abstract memeber Resolve () (right now it just returns null b/c we don't use the ObjectValue of a PlaylistQueryValue. In the future, this may change). * src/Core/Banshee.Services/Banshee.Query/AbstractPlaylistQueryValue.cs: Added abstract query value to handle the OperatorSet overload used by both SmartPlaylistQueryValue and PlaylistQueryValue. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs: Made to use generics and addded GetSmartPlaylistFromDbId () method. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Now keeps track of SmartPlaylistSources on which it depends. Used for listening to dependencies' Update events. * src/Libraries/Hyena/Hyena.Query/IntegerQueryValue.cs: SetValue made virtual. * src/Libraries/Hyena/Hyena.Query/IntegerKeyedObjectQueryValue.cs: New abstract class which allows an IntegerObjectValue to map to an object. 2008-02-29 Scott Peterson * src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs: Fixed warnings. 2008-02-29 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Show the FilteredFileSize in the status message, like we show the FilteredDuration. 2008-02-29 Alexander Hixon * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs: Modify the LastfmTrackInfo object, and add in the new trackauth variable in the constructor and associated property. We get the trackauth value from the track returned from Last.fm (lastfm:trackauth). * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Only submit NowPlaying tracks if the track is more than 30 seconds in length and the user has enabled scrobbling of tracks. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs: Support the new TrackAuth property in LastfmTrackInfo, submit that and the correct source code if the track was from radio, otherwise say it was from the library. * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Lots of cleanups to do with HACKING guidelines, trying to send stuff when we're not allowed to (ie not connected), and *heaps* of logic/name cleanups. * src/Libraries/Mono.Media/Media.Playlists.Xspf/Track.cs: Expose some lame kind of method to get extra key values. 2008-02-28 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Fix calculation figuring out whether or not the click is on the expander. 2008-02-28 Gabriel Burt * src/Core/Banshee.Services/Banshee.Base/RateLimiter.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryBox.cs: * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryLimitBox.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginDialog.cs: * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginForm.cs: Fix warnings. 2008-02-28 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Add a Save (bool notify) method so processes that are triggering lots of Save's can avoid notifying the track's PrimarySource until they choose to - eg in the metadata refresh process. * src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs: Add comment to PRAGMA cache_size call. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add indices to Core[Smart]PlaylistEntries, and use track.Save (false) when updating the metadata. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Set Library.Importing = true/false around the import process. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Add ReloadChildren method. Add RateSelectedTracks method. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add Importing property that when set true increases the period between TrackUpdated calls to 5 s (from the normal 0.25 s). Fix bug where Reload always reloaded all children - not something we want to do when the user is searching, say. Explicitly call ReloadChildren where needed. * src/Core/Banshee.Services/Banshee.Base/RateLimiter.cs: Make more thread safe. * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: Add an ActiveSource convenience property. * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Use ActiveSource property. * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Use new ActiveSource property, and call RateSelectedTracks to rate entire selection Ranges at a time - much much faster. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: Make Execute and WaitForResult internal methods. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Put locks on the current command around Query/Execute calls to prevent a thread from calling the same command before an earlier thread gets its result. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Avoid checking the cache table more times than necessary. 2008-02-28 Aaron Bockover * src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs: Added a new base version of TrackInfoMerge that allows you to switch priority/fallback values to prefer either the database track or the taglib file data * src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs: Move the migration consumer stuff out, make the migrator accessible to others * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Use a UserJob to report the migration track scanning progress * src/Core/Banshee.Services/Banshee.ServiceStack/IInitializeService.cs: A simple interface that will tell the service manager to call initialize on it after registering; this allows other objects to listen for the service before the service actually does anything * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Support IInitializeService.Initialize * src/Core/Banshee.Services/Banshee.ServiceStack/UserJob.cs: Added some more ctor overrides to make it easier to use * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeDbFormatMigratorMonitor.cs: A UI for reporting the migration progress in the database layer * src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs: Connect to the database migration layer and use the new UI to report progress * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Draw a bubble, shouldn't commit this, in a hurry * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/CellContext.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Fixed up to use the new Hyena.Gui.Theming API * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListViewGraphics.cs: Nuked * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkColors.cs: * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/Theme.cs: * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/ThemeContext.cs: New simple theme API that will make doing the custom drawing easier than the crappy ListViewGraphics bloated/hard to use API 2008-02-27 Aaron Bockover * src/Core/Banshee.Services/Banshee.Base/ThreadAssist.cs: Do not set the main thread automatically and instead require an explicit call to a new InitializeMainThread method just for sanity to avoid possible race * src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs: Call ThreadAssist.InitializeMainThread * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Enable the database URI pre-check when importing, minor clean up, wrap the commits in database transactions, and do an explicit save on the LibraryAlbumInfo (not sure if this is correct) * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs: Fixed a big threading bug - the actual user job/manager API is designed to be consumed from many threads, and the UI host for the jobs has to manage threading; this fixes some odd UI behavior after library imports * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs: Use generic/type-safe service manager methods * src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs: Some clean up, remove an anonymous method to make more readable 2008-02-27 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Fix up last SourceView commit. 2008-02-27 Aaron Bockover * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Added a generic Contains method so Contains checks can be type safe just like the generic Get service calls * src/Core/Banshee.Services/Banshee.ServiceStack/TestUserJob.cs: Added a method to spawn a few test user jobs which is useful for debugging the user job API and host tile display * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs: When the magic command line argument is passed, spawn the test jobs * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Only render the focus row if the view actually has focus * src/Libraries/Hyena/Hyena.CommandLine/CommandLineParser.cs: Fix a minor crasher bug 2008-02-27 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Do not activate a Source when its expander is clicked. 2008-02-27 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: Created UI actions for repeat mode functionality; this is where the repeat mode can be accessed and is stored/loaded from configuration; the UI actions are set up here * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/RepeatActionButton.cs: A special button that syncs its state with the PlaybackRepeatActions and presents the actions as a popup menu * src/Clients/Nereid/Nereid/PlayerInterface.cs: Make the footer actually a Gtk.Toolbar, pack the new RepeatActionButton, and do some allocation magic to ensure the status bar is always centered on the toolbar; moved the only two schema items that are still at the client level into here * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeIconFactory.cs: Added the media-repeat icons into the stock * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs: Load the PlaybackRepeatActions as a child set of actions * src/Clients/Nereid/Nereid/PlayerWindowSchema.cs: Removed * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Added a ToolbarFooter object * src/Libraries/Hyena/Hyena/StringUtil.cs: Added UnderCaseToCamelCase method that does the opposite of what CamelCaseToUnderCaseDoes; use a StringBuilder for the latter * tests/Hyena/StringUtilTests.cs: Added some tests for the above two methods 2008-02-27 Gabriel Burt * src/Clients/Nereid/Nereid/PlayerInterface.cs: Remove unnecessary Show. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs: Add the inner VBox to the Alignment...hard for it to show otherwise. 2008-02-27 Gabriel Burt * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Improve the metadata refresh process - use the existing OnSlow* calls in the migrator, don't die if a track can't be refreshed, etc. 2008-02-27 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Add and comment out an implementation for 'New Smart Playlist From Search'. It works, but the smart playlist Editor needs to be changed to accept conditions with no field (eg implying search-all-default-fields). * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Comment out 'New Smart Playlist From Search' item. 2008-02-27 Gabriel Burt * src/Core/Banshee.Services/Banshee.Services.mdp: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.mdp: * src/Libraries/Lastfm.Gui/Lastfm.Gui.mdp: * src/Libraries/Lastfm/Lastfm.mdp: * src/Libraries/Mono.Media/Mono.Media.mdp: Fix MD build. * src/Extensions/Banshee.Lastfm/Makefile.am: Remove non-existant file. 2008-02-27 Alexander Hixon * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Support lazy authentication. Also implement retrying if sending a 'Now Playing' track failed. Slightly more detailed logging is also added. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Removed a useless boolean value. Also implemented lazy connecting before queuing tracks. 2008-02-27 Alexander Hixon * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Only scrobble tracks if the 'Enable song reporting' checkbox is active. 2008-02-27 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs: Fix crasher - don't update GTK outside the main thread. 2008-02-26 Gabriel Burt This commit brings back a thread-safe database layer. Unfortunately, that currently means switching back to the deprecated Mono.Data.SqliteClient library. Mono.Data.Sqlite does not allow executing a command in one thread and reading it in another, where M.D.SqliteClient does. * Makefile.am: Add BANSHEE_DEV_MONO_OPTIONS env var to enable setting --profile=default:stat for example to run with make run. * build/build.environment.mk: Depend on Mono.Data.SqliteClient again. Mono.Data.Sqlite requires that even reading the results of a query must be done in the same thread that ran the query/owns the connection. * src/Core/Banshee.Core/Banshee.IO/Provider.cs: Clean up. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/Migrator.cs: * src/Core/Banshee.Services/Banshee.Configuration/DatabaseConfigurationClient.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: New HyenaSqliteConnection API. * src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs: Get rid of unused ctor and execute useful performance-related PRAGMAs. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Use HyenaSqliteConnection's utility methods, new API. Add UserJob to rescan a user's songs when migrating over in order to get fields we now store in the database - like Disc, etc. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Get rid of ProxyToMain call. * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Add null check. * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Reorder loading of Library, Library playlists. * src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs: Use Mono.Data.SqliteClient. * src/Core/Banshee.Services/Banshee.ServiceStack/UserJob.cs: Avoid duplication in ctors. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Increase the delay betwen refreshes. * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs: Get rid of ProxyToMain calls. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Do not login to Last.fm radio until a source is activated. * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: Convert longs in a different way that M.D.SqliteClient likes. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: Combined with QueuedSqliteCommand code, meant to be called by threaded/queued HyenaSqliteConnection. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Combined with QueuedSqliteDatabase code (from F-Spot's copy). Supports blocking other threads during transactions and has no busy-waits. 2008-02-26 Aaron Bockover * ChangeLog: Fixed all the improper formatting that has been committed to this file lately. Wrote a guide that describes the proper formatting procedure for this file http://banshee-project.org/ChangeLogForDevelopers * HACKING: Updated with above link 2008-02-25 Alexander Hixon * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Attempt to queue the currently playing track when we dispose the service, in case it's scrobbable, but the user quit before hitting the next button to send it off to the server. It gets queued until next start. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Fix TrackInfoDisplay by making sure we pass the correct EventMasks so that we don't bombard the user with cover art on track change, if the user had shown the cover art popup previously in the session. Also fixes hiding the cover art popup after the correct amount of time. * src/Libraries/Lastfm/Lastfm/RadioConnection.cs: * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: * src/Libraries/Lastfm/Lastfm/LastfmCore.cs: Remove Account from constructors for RadioConnection and AudioscrobblerConnection. Also get the Connections to reference LastfmCore.Account rather than keeping track of their own copy. 2008-02-24 Alexander Hixon * src/Libraries/Lastfm/Lastfm/RadioConnection.cs: * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Remove class- based UserAgent properties, values and constructor arguments. Use LastfmCore.UserAgent instead. * src/Libraries/Lastfm/Lastfm/LastfmCore.cs: Simplify UserAgent's setter, and update instance creation to reflect changes in ctor definitions. 2008-02-23 Alexander Hixon * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/TrackInfoPopup.cs: Decrease spacing between time and progress bar. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: * src/Libraries/Lastfm/Lastfm/LastfmCore.cs: Use LastfmCore as a singleton to access Last.fm classes. * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Provide support for user agent when sending requests to Audioscrobbler servers. Can be passed via ctor or by setting the UserAgent property. Also marked ctor as internal. * src/Libraries/Lastfm/Lastfm/RadioConnection.cs: Added UserAgent property. Marked ctor as internal. * src/Libraries/Lastfm/Lastfm/Account.cs: Remove the static Account instance, since it's now provided by LastfmCore as a singleton. 2008-02-23 Scott Peterson * src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs, * src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs: Renamed DoImport to ImportCore as per Framework Design Guidelines, also slapped the new keyword onto the static AmarokPlayerImportSource.CanImport property to get rid of the warning about it hiding a base member of the same name (which it should). 2008-02-23 Alexander Hixon * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: Get track duration and progress information before showing the popup and relying on the fact that we're playing to determine the progress label text. Showing the popup during a paused song now works. * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/TrackInfoPopup.cs: Add some padding around the TrackInfoDisplay to pretty things up slightly and line up the cover art. * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginForm.cs: Don't try to run Account.Save if the username or password haven't changed since the time the dialog was opened till the time it closed. Prevents reconnecting if you simply open the dialog and close it again. 2008-02-23 Alexander Hixon * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/TrackInfoPopup.cs: Added LinearProgress hotness. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedSeekSlider.cs: Fixed a bug where the user would change tracks while a track was mid-way through being buffered, and the first track's buffering result would cover up the song duration/progress information. 2008-02-23 Alexander Hixon * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Rewrote the SongTimer class to use PlayerEngine.Position. Doesn't rely on PlayerEngineState events anymore. This also means that SongTimer works well while listening to songs on Last.fm. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs: * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Implement MusicBrainzId property and using that data to generate requests to Last.fm. Currently isn't attached to any real data source, so the ID is always empty. 2008-02-23 Alexander Hixon * src/Core/Banshee.ThickClient/Banshee.Gui/BaseClientWindow.cs: Port fix across from stable so that using Alt+F4 to close the main window works again. 2008-02-23 Alexander Hixon * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Remove a few bits of commented code. Added Stock.Properties icon for the Configure menu item. * src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: Added Ctrl+E keyboard shortcut for equalizer window. * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: Added Stock.Preferences icon for Preferences menu item. * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Added E keyboard shortcut for track editor dialog. 2008-02-23 Alexander Hixon * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Use the static instance of Account shared by others, rather than creating a seperate instance. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Added support for keeping track of network connection state and automatically connecting. Also included better debugging messages. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Fix queuing tracks that have actually been played long enough but were not submitted. Also added a few simple checks to see if the current track attempting to be queued is null or has been listened to for less than one second. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs: Send tracks with the correct original play-start time (instead of double-universal time). * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Make sure that errors when POSTing the current track being listened to aren't displayed to the user via the HIG message dialog - log them silently to console instead. 2008-02-22 Alexander Hixon * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Use a slightly less brain-dead method of checking the total length of the track played. Skipping through a track but playing the correct length for inclusion on a Last.fm profile now works correctly. Also added support for sending NowPlaying information. * src/Libraries/Lastfm/Lastfm/Account.cs: Create an 'Instance' property for use via multiple modules. * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Uncommented and exposed NowPlaying method, so that Last.fm lists the current track as playing. 2008-02-22 Alexander Hixon * src/Extensions/Banshee.Audioscrobbler: Mark this as removed in SVN. Accidentally missed in previous revision. * src/Extensions/Banshee.Lastfm/Resources/AudioscrobblerMenu.xml: Added missing file, enables Audioscrobbler extension service to load without error. 2008-02-22 Alexander Hixon * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml: Cleaned version of the Audioscrobbler plugin from stable. Glue to hook up player engine and AudioscrobblerConnection logic lives here. * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: * src/Libraries/Lastfm/Lastfm/IQueue.cs: Seperate out web bits and queue interface into our Last.fm library. Uses version 1.2 of the Last.fm protocol. * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: Added 'Tools' menu. 2008-02-22 Scott Peterson * src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs: Minor fix for fetching the UserJob's Title. 2008-02-22 Scott Peterson * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs, * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: HyenaSqliteConnection.GetSchema now returns an IDictionary rather than a Dictionary. 2008-02-22 Scott Peterson * src/Core/Banshee.Services/Banshee.Library/ImportSourceManager.cs, * src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs: Minor change to Amarok's CanImport property name. 2008-02-21 Gabriel Burt * build/build.environment.mk: * configure.ac: * src/Clients/Nereid/Nereid/Client.cs: * src/Extensions/Banshee.Skins/Banshee.Skins.addin.xml: * src/Extensions/Banshee.Skins/Banshee.Skins.mdp: * src/Extensions/Banshee.Skins/Banshee.Skins/SkinManager.cs: * src/Extensions/Banshee.Skins/Makefile.am: * src/Extensions/Banshee.Skins/Resources/GlobalUI.xml: * src/Extensions/Makefile.am: New extension for switching skins (*.gtkrc files under ~/.config/plugins/skins/). 2008-02-21 Gabriel Burt * src/Libraries/Hyena/Hyena.Query/DateQueryValue.cs: Make the regex static. * src/Libraries/Lastfm/Lastfm.Data/DataEntryCollection.cs: * src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs: Enforce the Root as being a XmlElement, and if it doesn't have a child element of the requied name, see if it has an attribute. 2008-02-21 Gabriel Burt * src/Libraries/Hyena/Hyena.Query/DateQueryValue.cs: Cleanup. 2008-02-21 Gabriel Burt * build/build.environment.mk: Add Mono.Unix dep to Hyena so strings can be translated, like they already could be in Hyena.Gui. * src/Core/Banshee.Services/Banshee.Base/RateLimiter.cs: Add option to not run wrapped method immediately, but to have a delay first. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Implement DependsOn using depth-first scan of the ConditionTree. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Set a 10ms delay before responding to OnTrackUpdated. * src/Core/Banshee.ThickClient/Banshee.Query.Gui/SmartPlaylistQueryValueEntry.cs: Check if Editor.CurrentlyEditing is set, and if so, do not put the current playlist or ones that depend on it in the dropdown. * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs: Expose through a public static property what Smart Playlist is currently being edited. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryBox.cs: Add and use a Gtk.Entry if the query is more complicated than our GUI can handle. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryTermBox.cs: Clean. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryTermsBox.cs: Make methods protected instead of public, throw exception if unable to handle the QueryNode given. * src/Libraries/Hyena/Hyena.Query/DateQueryValue.cs: Support parsing and generating relative-date user queries. * src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs: Put a space between the file size and its unit. * src/Libraries/Hyena/Hyena.Query/IntegerQueryValue.cs: Change the default alias for the Equal operator to "=" instead of "==". * src/Libraries/Hyena/Hyena.Query/QueryListNode.cs: Use ' or ' instead of ', ' to separate OR'd nodes in generated user queries. * src/Libraries/Hyena/Hyena.Query/UserQueryParser.cs: Add a static Parse method for convenience. 2008-02-21 Scott Peterson * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Changed it so that the "Sort Children" option appears only if there are two or more children of a source: a list of one is always sorted :) 2008-02-21 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Add DateUpdated property and update it in Save method. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Rename DiscNumber to Disc to avoid automatic column creation. Fix issue with DateUpdatedStamp not being created, and use DateAdded as its default value for migrated tracks. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Use the Source property on DatabaseTrackInfo instead of SourceId. Remove reload call to Library since it saving the tracks automatically triggers it now. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Increase minimum time between reloads. * src/Core/Banshee.Services/Banshee.Sources/ErrorSource.cs: Implement IUnmapableSource. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add TracksUpdated event. * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Try to popdown the menu before rating. * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Add custom context menu for ErrorSource. * src/Libraries/Hyena/Hyena/Log.cs: Make log type string all the same length so they line up better. 2008-02-21 Scott Peterson This commit begins to port the player migration namespace from stable into trunk. I've only done the Amarok importer as a proof-of-concept and I haven't tested it. This commit is more about laying out the namespace/object design for the player migration stuff for critique. What is presented here in this patch is subject to change if anyone wants to massage it a little more. Otherwise I'll go ahead with porting/testing the other player migrators. So please provide feedback! * src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs: Added a base class for IImportSources which will perform a single-method import operation in a ThreadPool thread. * src/Core/Banshee.Services/Banshee.Library/ImportSourceManager.cs: Added Amarok importer to import sources. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Created a new public method AddTrackToLibrary, which contains the logic for adding a track to the library and hooking up the related Artist and Album infos. * src/Core/Banshee.Services/Banshee.PlayerMigration/AmarokPlayerImportSource.cs: Ported the Amarok importer from stable. NOTE: I don't have Amarok - and it's 3am - so I haven't tested this. It needs testing! SOMEONE TEST THIS!!! 2008-02-20 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs: If possible, set album art on the lists of tracks. Unfortunately the Last.fm feed for recently loved songs doesn't include the album name, so no cover art there. * src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs: Add new Entry types for Artist data. * src/Libraries/Lastfm/Makefile.am: * src/Libraries/Lastfm/Lastfm.Data/LastfmArtistData.cs: Expose artist-related data. 2008-02-20 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs: Fix numbering. 2008-02-20 Gabriel Burt * src/Core/Banshee.Services/Banshee.Web/Browser.cs: Add implementation, gleaned from MonoDevelop. * src/Core/Banshee.Widgets/Makefile.am: * src/Core/Banshee.Widgets/Banshee.Widgets/MenuTile.cs: Subclass of Tile that overrides the OnButtonPress so it can be used to pop up a menu. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Add actions and handlers for artists, albums, and tracks that go to various websites (Last.fm, Wikipedia) and other fun things. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs: Add two lists: 10 most recently played songs, and 10 most recently loved. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationType.cs: Break types out into public static variables. * src/Extensions/Banshee.Lastfm/Resources/GlobalUI.xml: Add Popups for artists, albums, and tracks. Currently only tracks is actually used. * src/Libraries/Lastfm/Makefile.am: * src/Libraries/Lastfm/Lastfm.Data/UserData.cs: * src/Libraries/Lastfm/Lastfm.Data/LastfmUserData.cs: Move to LastfmUserData, and change API - expose as properites data that doesn't take any arguments. Cache results in a local dictionary to avoid hitting the network every time property is accessed. * src/Libraries/Lastfm/Lastfm.Data/LastfmData.cs: Add Refresh method that will ignore the cache. * src/Libraries/Lastfm/Lastfm/RadioConnection.cs: Add comment with unimplemented xmlrpc methods. * src/Libraries/Lastfm/Test.cs: Update to new API. 2008-02-20 Gabriel Burt This commit adds a CorePrimarySources table and a SourceID column to the CoreTracks table, allowing non-Library tracks to be stored there (and therefore benefit from our searching, playlist, smart playlist, and view code). * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.Services/Banshee.Base/RateLimiter.cs: Allow specifying a min_interval on each rate-limited execute. * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Rename to DatabaseTrackInfo, add SourceId property. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add new CorePrimarySources table, add SourceID to CoreTracks, remove unique constraint on CorePlaylistEntries. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: When importing set the SourceId on the new DatabaseTrackInfos. * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: Refactor a lot of logic into PrimarySource, and inherit from it. * src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistFileUtil.cs: Use shorter way of getting a specific service from the ServiceManager. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: New class to be subclassed by LibrarySource, DaapSource, DapSource, etc - a way of reusing CoreTracks and all associated goodness for non-Library tracks. * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Add Library convenience property. * src/Core/Banshee.Services/Banshee.Services.mdp: * src/Core/Banshee.Services/Makefile.am: Updated * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Use DatabaseTrackInfo. * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: Avoid problem in Mono.Data.Sqlite in getting Int64 value. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Add convience methods for Query, Execute, ExecuteReader that accept the same parameters as the HyenaSqliteCommand ctor does, allowing Query("select x from y where ?", z) instead of Query(new HyenaSqliteCommand ("select x from y where ?", z)). * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Add try/catch around Load method to avoid crashing and provide debugging if there are issues loading a row into an object. 2008-02-20 Aaron Bockover * src/Core/Banshee.Services/Banshee.MediaEngine/NullPlayerEngine.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/MessageBar.cs: Minor fixes for Windows * win-deps/Mono.Addins.dll.config: Added the .config for Mono.Addins 2008-02-20 Aaron Bockover * src/Clients/Nereid/Nereid/PlayerInterface.cs: If control is being held down when the source view activates a row, set the source to be the playback source, but do not play the first song in that source - this means that ctrl+double-clicking a source will 'queue' that source to play next * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Make sure the editor button works on all database sources * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Because the ctrl+click behavior is strange on this use of the tree view, override it and emulate the row activation * src/Libraries/Hyena.Gui/Hyena.Gui/GtkUtilities.cs: Support reading modifier states from Gdk.EventButton as well; make the array params 2008-02-20 Aaron Bockover * src/Core/Banshee.Services/Banshee.Library/ImportSourceManager.cs: Fixed loading after Scott's commit, defer the loading of these import objects until they are actually needed to improve theoretical startup speed * src/Core/Banshee.Services/Banshee.Library/IImportSource.cs: Added the CanImport member that Scott used in IExtensionImportSource * src/Core/Banshee.Services/Banshee.Library/IExtensionImportSource.cs: Removed, no sense in having this interface * src/Core/Banshee.Services/Banshee.Library/HomeDirectoryImportSource.cs: * src/Core/Banshee.ThickClient/Banshee.Library.Gui/FileImportSource.cs: * src/Core/Banshee.ThickClient/Banshee.Library.Gui/FolderImportSource.cs: Implement CanImport 2008-02-19 Scott Peterson * src/Core/Banshee.Services/Banshee.Library/IExtensionImportSource.cs: Added copyright name. 2008-02-19 Scott Peterson * src/Core/Banshee.Services/Banshee.Library/IExtensionImportSource.cs: Added the IExtensionImportSource interface which extends the IImportSource interface to include bool CanImport { get; }. This means that an extension-provided import source will only be added to the list if the import source can be imported. Such a check might entail determining whether Beagle is installed, or a particular file (other music player's db) is present, &c.. * src/Core/Banshee.Services/Banshee.Library/ImportSourceManager.cs: Made to use the new IExtensionImportSource when adding extension sources to the list of availible import sources. 2008-02-19 Aaron Bockover * src/Clients/Nereid/Nereid/PlayerInterface.cs: Apply the window default background to override the toolbar background instead of just a flat colored rectangle; should play nicer with some themes * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Apply a default background and override OnUnrealized and OnUnmapped * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Remove WidgetFlags.Realized in OnUnrealized 2008-02-19 Aaron Bockover * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Added the skip song feature back 2008-02-19 Aaron Bockover * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: Ported the show/hide TrackInfoPopup/tooltip when the mouse cursor is over the notification area icon * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/TrackInfoPopup.cs: Ported the TrackInfoPopup/tooltip to use the new TrackInfoDisplay * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Implemented proper managed resource disposing and set the current track on size allocation * src/Clients/Nereid/Nereid/PlayerInterface.cs: Set the title of the window to the track information * src/Core/Banshee.ThickClient/Banshee.Gui/BaseClientWindow.cs: Added a TitleChanged event and an UpdateTitle abstract method * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/GtkNotificationAreaBox.cs: Set the tooltip to the primary window's title, track it when it changes * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/INotificationAreaBox.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Added a proxy method for player engine events * src/Extensions/Banshee.NotificationArea/Notifications/Notification.cs: Do not crash when Widget is null 2008-02-19 Aaron Bockover * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Ported notification bubbles. Hawt. 4 u snorp lol. * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs: Added constant VolumeDelta and SkipDelta public fields * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs: Don't use the redundant string parameter version of ServiceManager.Get * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/GtkNotificationAreaBox.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/INotificationAreaBox.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: Added a Widget property for the notifications to use * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationArea.cs: Ignore some other crappy warnings 2008-02-19 Gabriel Burt * src/Core/Banshee.Services/Banshee.Playlists.Formats/M3uPlaylistFormat.cs: * src/Core/Banshee.Services/Banshee.Playlists.Formats/PlsPlaylistFormat.cs: Uncomment out Save methods, and modify to work with TrackListModel. * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: Work on ImportPlaylistAction - still not enabled/working. * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Add ExportPlaylistAction handler. * src/Core/Banshee.ThickClient/Makefile.am: * src/Core/Banshee.ThickClient/Banshee.Playlist.Gui/PlaylistExportDialog.cs: Ported from stable. * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Add Export playlist action to source context menu and edit menu. 2008-02-19 Gabriel Burt * src/Clients/Nereid/Nereid/PlayerInterface.cs: Fix bug in getting sources' custom views. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.mdp: * src/Extensions/Banshee.Lastfm/Makefile.am: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs: New class, shows how sources can set custom views. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Set the custom view, allow activating. 2008-02-19 Gabriel Burt * src/Extensions/Banshee.Lastfm/Resources/Banshee.Lastfm.addin.xml: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.mdp: * src/Extensions/Banshee.Lastfm/Makefile.am: Move the addin.xml file up from Resources. 2008-02-19 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/ISourceContents.cs: New interface. * src/Clients/Nereid/Nereid/PlayerInterface.cs: When the ActiveSource is changed, call ISourceContents.ResetSource on the current SourceContents. Check the new source for a NereidSourceContents property and use it if it exists (allowing Sources to define custom views). And finally call ISourceContents.SetSource on the new SourceContents. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/CompositeTrackListView.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Move to Banshee.Sources.Gui and implement ISourceContents. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/ObjectListSourceContents.cs: New class that wraps a ObjectListView in a ScrolledWindow and implements ISourceContents. * src/Clients/Nereid/Nereid/ViewContainer.cs: Defined Contents as a ISourceContents not a Widget. * src/Core/Banshee.ThickClient/Makefile.am: Updated. 2008-02-19 Aaron Bockover This commit adds most of the functionality of the notification area back, and adds a new layer of cross platform support, so it should work on Windows with limited functionality since Windows doesn't support what the raw X11 version can * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Clients/Nereid/Nereid/PlayerWindowSchema.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/BaseClientWindow.cs: Moved some windowing/state functionality into BaseClientWindow; includes stuff like ToggleVisibility * src/Core/Banshee.ThickClient/Banshee.Gui/GtkElementsService.cs: Expose PrimaryWindow as BaseClientWindow and added the PrimaryCloseHandler * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Major refactor of the notification area; get most of the basic interaction functionality working again (clicking the icon, toggling window visibility, popup menu; push the actual notification area down a level into the new INotificationAreaBox abstraction, implementing common events in the service layer * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/INotificationAreaBox.cs: An interface to expose common functionality of the area boxes so that the service can implement common functionality once * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: An advanced INotificationAreaBox implementation that supports more events on the notification area; this is functionally on par with Banshee stable but will only work on X11; when it fails, GtkNotificationAreaBox will work * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/GtkNotificationAreaBox.cs: An INotificationAreaBox implementation that wraps GtkStatusIcon; this is a very basic one since the GtkStatusApi is extremely limited due to cross platform support; only the context menu and left click are supported, but it will work on Windows 2008-02-18 Aaron Bockover * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Removed duplicate using declaration * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Added a property to get the LastfmActions * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: When the lastfm error is account related, add a message action to allow the user to enter their account details * src/Libraries/Hyena.Gui/Hyena.Widgets/MessageBar.cs: Fix a few bugs * src/Libraries/Lastfm/Lastfm/RadioConnection.cs: Lots of tabs->spaces 2008-02-18 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: Disable the extension manager UI for now 2008-02-18 Aaron Bockover * src/Extensions/Banshee.Lastfm/Resources/GlobalUI.xml: Hide the love/ban from the menu since it doesn't make sense yet * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Hide menu items that don't apply when the source is not library-based 2008-02-18 Aaron Bockover * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Implement love/hate actions * src/Extensions/Banshee.Lastfm/Resources/GlobalUI.xml: Add love/hate buttons to the header * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeIconFactory.cs: Allow new theme icons to be mapped into stock publicly 2008-02-18 Aaron Bockover * src/Libraries/Lastfm/Lastfm/RadioConnection.cs: Make the network connection handshake run in a thread again 2008-02-18 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedMessageBar.cs: Set some default spacing * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListViewGraphics.cs: Add a version of DrawFrame that takes a color * src/Libraries/Hyena.Gui/Hyena.Widgets/MessageBar.cs: Draw our nice rounded frame and set a good default padding 2008-02-18 Aaron Bockover * src/Clients/Nereid/Nereid/ViewContainer.cs: Pack a ConnectedMessageBar * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceIconResolver.cs: Pulled the icon resolver out of SourceRowRenderer since sources may have multiple icons and it's useful outside of the renderer * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedMessageBar.cs: Works against a number of standardized Message.* properties that can be set on a source's PropertyStore; this allows sources to communicate status messages easily to the user * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Use the new Message.* properties to communicate status messages to the user * src/Libraries/Hyena/Hyena.Data/PropertyStore.cs: Added RemoveStartingWith * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/Actor.cs: Added a CanExpire property; reset the percentage to 0 when it reaches 1 and the actor is not allowed to expire * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedImage.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/MessageBar.cs: Ported/moved from Banshee.Widgets; AnimatedImage works better and uses Hyena.Gui.Theatrics * src/Libraries/Hyena.Gui/Hyena.Widgets/RoundedFrame.cs: Send the expose events to children * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Sources/ErrorSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Updated to reflect the property name change from IconName to Icon.Name 2008-02-18 Scott Peterson * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Changed LoadAll method to return IEnumerable rather than List. Since the method is only ever iterated over, we can do away with the List object. 2008-02-17 Gabriel Burt * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Avoid hitting the model/database when clicking where there is no row. 2008-02-17 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Add Genre columsn to CoreTracks, and support it as a query field, query order, and ListView column. 2008-02-17 Gabriel Burt * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Change LastPlayed and DateAdded order names. * src/Core/Banshee.Services/Banshee.SmartPlaylist/Migrator.cs: Wrap the migration in a transaction, print error message if it fails. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs: Only initialize if the migration was successful. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryLimitBox.cs: BansheeQuery's Orders array has nulls in it to indicate where separators would be nice - actually implement those in the ComboBox. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Improve comment. 2008-02-16 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Only keep the last five played or skipped songs. 2008-02-16 Gabriel Burt * src/Libraries/Lastfm/Test.cs: * src/Libraries/Lastfm.Gui/Test.cs: Add tests. 2008-02-16 Gabriel Burt * src/Libraries/Lastfm/Lastfm/Connection.cs: * src/Libraries/Lastfm/Lastfm/RadioConnection.cs: Rename to RadioConnection.cs * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Use RadioConnection. 2008-02-16 Gabriel Burt * src/Extensions/Banshee.Lastfm/*: Grr, overwrote Aaron's last fixes with my svn mv, since I'd initiated it locally before svn up'ing his changes. 2008-02-16 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm: Move Banshee.Lastfm to Banshee.Lastfm.Radio in preparation for merging the Audioscrobbler and Recommendations plugins. 2008-02-16 Gabriel Burt This commit adds support for most of the user-particular data feeds Audioscrobbler offers into Lastfm.dll, our Banshee-independent Lastfm library. * src/Libraries/Lastfm/Lastfm.Data/LastfmDataCollection.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopTracks.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopArtists.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopData.cs: * src/Libraries/Lastfm/Lastfm.Data/Profile.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopAlbums.cs: Removed files. * src/Libraries/Lastfm/Test.cs: * src/Libraries/Lastfm.Gui/Test.cs: Moved test to Lastfm.Gui. * src/Libraries/Lastfm/Lastfm.Data/DataCore.cs: New static class for doing initialization and settings. * src/Libraries/Lastfm/Lastfm.Data/DataEntryCollection.cs: New class that wraps a XmlNodeList. * src/Libraries/Lastfm/Makefile.am: Updates, add make test rule. * src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs: Move all DataEntry subclasses here. There are too many to have in separate classes (and the header/code ratio is really high). * src/Libraries/Lastfm/Lastfm.Data/UserData.cs: Wrap almost all of the Last.fm data feeds that pertain to a particular user. * src/Libraries/Lastfm/Lastfm.Data/LastfmData.cs: Update for DataCore changes, and instantiate and wrap a DataEntryCollection. 2008-02-16 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Set RowSensitivePropertyName to 'CanPlay' * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Added a RowSensitivePropertyName property, defaulting to 'Sensitive'; objects in the model will be queried for this property to indicate whether the object is sensitive (enabled) or not; render the row's sensitivity * src/Libraries/Lastfm/Lastfm/Connection.cs: Clear the password if invalid 2008-02-16 Aaron Bockover * src/Libraries/Lastfm/Lastfm/Account.cs: Renamed Username to UserName * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmActions.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmSource.cs: * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginForm.cs: * src/Libraries/Lastfm/Lastfm/Connection.cs: Use the UserName property * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationSource.cs: Store the MD5 hashed last.fm password * src/Libraries/Hyena/Hyena/CryptoUtil.cs: Moved some MD5 methods from Last.fm to here * tests/Hyena/CryptoUtilTests.cs: Tests for CryptoUtil 2008-02-16 Aaron Bockover * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Fixed bug with the new NullPlayerEngine fallback loading 2008-02-16 Aaron Bockover * src/Core/Banshee.Core/Banshee.Base/PlatformHacks.cs: Only run these hacks if we are on Unix, and don't crash even if we are and they fail * src/Core/Banshee.Services/Banshee.MediaEngine/NullPlayerEngine.cs: A fake engine that does nothing, used to allow Banshee to at least start up on Windows without libbanshee * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Load the NullPlayerEngine if no real engines could be loaded * src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs: Disable DBus support if BusG.Init fails * src/Libraries/Hyena.Gui/Hyena.Data.Gui/CairoHelper.cs: Do not P/Invoke to get the cairo context, instead use Gdk.CairoHelper 2008-02-16 Aaron Bockover * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Added a necessary null check and return default (T) for the generic Query method that Scott introduced - fixes the bug everyone has been complaining about 2008-02-16 Aaron Bockover Moved Nereid from Core/ to Clients/; fixed up a lot of MonoDevelop stuff 2008-02-15 Aaron Bockover * build/build.environment.mk: Link against ICSharpCode.SharpZipLib * configure.ac: Check for Mono.Data.Sqlite instead of Mono.Data.SqliteClient 2008-02-15 Gabriel Burt * src/Libraries/Lastfm/Lastfm.Data/UserTopArtists.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopData.cs: * src/Libraries/Lastfm/Lastfm.Data/Profile.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopAlbums.cs: * src/Libraries/Lastfm/Lastfm.Data/UserData.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopTracks.cs: Remove unnecessary usings. 2008-02-15 Gabriel Burt * src/Libraries/Lastfm/Lastfm/Connection.cs: Fix warnings. * src/Libraries/Lastfm/Makefile.am: * src/Libraries/Lastfm/Lastfm.Data: Add new namespace. * src/Libraries/Lastfm/Lastfm.Data/DataEntry.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopArtists.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopData.cs: * src/Libraries/Lastfm/Lastfm.Data/LastfmDataCollection.cs: * src/Libraries/Lastfm/Lastfm.Data/LastfmData.cs: * src/Libraries/Lastfm/Lastfm.Data/Profile.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopAlbums.cs: * src/Libraries/Lastfm/Lastfm.Data/UserData.cs: * src/Libraries/Lastfm/Lastfm.Data/UserTopTracks.cs: New files that expose Last.fm metadata. 2008-02-14 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmActions.cs: Handle SourcePropertiesAction for LastfmSource and StationSources. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/LastfmSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationSource.cs: Set HasProperties = true so Edit Properties action shows up. 2008-02-14 Gabriel Burt * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteUtils.cs: Forgot to svn add. 2008-02-14 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/StationSource.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: * src/Libraries/Hyena/Hyena.mdp: * src/Libraries/Hyena/Makefile.am: The last commit reverted some of scottp's changes due to svn mv'ing files that weren't up to date. 2008-02-14 Gabriel Burt 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 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. 2008-02-13 Scott Peterson * src/Core/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Made to use new generic Query method and added GetProperty, SetProperty and ClearProperty. These methods allow you to store/retrieve properties from the database that are not defined in the type T. Suppose you write an extension that needs to keep persistant data on a per-track basis for every track in the library. Rather than define it's own table and join it with CoreTracks, the extension could call LibraryTrackInfo.Provider.GetProperty and SetProperty. This will be used by the iTunes importer at least. * src/Core/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: Added DbColumn class for lightweight column descrption, made to use new SqliteUtils class for simple operations, and protected some constructors. * src/Core/Hyena/Hyena.Data.Sqlite/SqliteUtils.cs: Common sqlite-related functions. * src/Core/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Replaced QueryInt32 and QueryString with a new generic Query method. Added ColumnExists(string table_name, string column_name) method. Also reworked the way GetSchema works. * src/Core/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs, * src/Core/Banshee.Services/Banshee.Configuration/DatabaseConfigurationClient.cs, * src/Core/Banshee.Services/Banshee.SmartPlaylist/Migrator.cs: Made to use new generic Query method. * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs: Took advantage of the fact that DbColumn-bound members can now be DateTime or TimeSpan. 2008-02-11 Gabriel Burt * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Remove debugging WriteLines. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Add CanRefresh property that is true if ordered by random. * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Add RefreshSmartPlaylist action to the source toolbar and context menu. * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Fix whitespace, add and handle RefreshSmartPlaylist action. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Plugin.cs: Get rid of old PluginModuleEntry. 2008-02-11 Gabriel Burt * src/Libraries/Lastfm.Gui/Makefile.am: Forgot to commit this. 2008-02-11 Gabriel Burt * build/build.environment.mk: Add System.Web to Lastfm deps. * src/Core/Banshee.Services/Banshee.Streaming/RadioTrackInfo.cs: Fix broken build; Xspf is now in Mono.Media. * src/Libraries/Lastfm/Last.FM.mdp: Rename. * src/Libraries/Lastfm/Lastfm/Account.cs: Add Updated event. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm/Connection.cs: * src/Libraries/Lastfm/Makefile.am: * src/Libraries/Lastfm/Lastfm/Connection.cs: Move Connection class out of extension, pull out Banshee dependencies. * src/Libraries/Mono.Media/Playlists.Xspf/LinkEntry.cs: * src/Libraries/Mono.Media/Playlists.Xspf/MetaEntry.cs: * src/Libraries/Mono.Media/Playlists.Xspf/Playlist.cs: * src/Libraries/Mono.Media/Playlists.Xspf/Track.cs: * src/Libraries/Mono.Media/Playlists.Xspf/W3CDateTime.cs: * src/Libraries/Mono.Media/Playlists.Xspf/XmlUtil.cs: * src/Libraries/Mono.Media/Playlists.Xspf/XspfBaseObject.cs: Fix headers and namespaces. 2008-02-11 Gabriel Burt * build/build.environment.mk: * configure.ac: * src/Libraries/Makefile.am: * src/Libraries/Mono.Media/Makefile.am: Create Mono.Media library. * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Playlists.Formats.Xspf/*: Move to Mono.Media, so it can be used by Lastfm library. 2008-02-11 Gabriel Burt * configure.ac: * src/Extensions/Banshee.LastFM/*: Rename to Banshee.Lastfm. 2008-02-11 Gabriel Burt * src/Libraries/*: Update svn:ignore 2008-02-11 Gabriel Burt * src/Makefile.am: * src/Libraries/Makefile.am: New directory for what was Extras in stable. * build/build.environment.mk: * configure.ac: * src/Libraries/Lastfm/*: * src/Libraries/Lastfm.Gui/*: Bring Last.FM library over from stable, and rip out the Gnome.Keyring dependency. * src/Extensions/Banshee.LastFM/*: Bring Last.FM plugin over from stable. Not part of the default build yet; lots of porting still to do. 2008-02-11 Gabriel Burt * src/Extensions/Banshee.LastFM/*: Copy from stable. 2008-02-11 Aaron Bockover * src/Core/Nereid/Nereid/Client.cs: Load custom gtkrc files from either the user config (~/.config/banshee/gtkrc) or any custom gtkrc shipped with the application * src/Core/Nereid/Nereid/PlayerInterface.cs: Get rid of some whitespace 2008-02-11 Aaron Bockover * src/Core/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Draw a bottom border on the dragging column 2008-02-11 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/CompositeTrackListView.cs: Major fix that reparents the artist/album/track views when switching browser positions instead of destroying them and rebuilding; fixes a slew of issues with events when switching positions, is much cleaner overall, and probably has some positive (minor) memory implications. Sweet. 2008-02-10 Gabriel Burt * src/Core/Hyena.Gui/Hyena.Query.Gui/QueryTermsBox.cs: Fix warning. 2008-02-10 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.AudioProfiles.Gui/ProfileComboBoxConfigurable.cs: * src/Core/Banshee.ThickClient/Banshee.AudioProfiles.Gui/ProfileConfigurationDialog.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/CompositeTrackListView.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: * src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerWindow.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/PlaylistMenuItem.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/GtkElementsService.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: * src/Core/Banshee.ThickClient/Banshee.Library.Gui/ImportDialog.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: * src/Core/Banshee.ThickClient/Banshee.ThickClient.mdp: * src/Core/Banshee.ThickClient/Makefile.am: More warnings fixed 2008-02-10 Gabriel Burt This commit greatly improves the smart playlist editor, both in terms of coming up to par with what we have in stable, and in terms of doing that in a clean way. You'll need to blow away your current trunk db to have your smart playlists remigrated. Limits to smart playlists now are functional. You can create and edit smart playlits. * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: Move GetSort method to BansheeQuery to provide consistent sorting for smart playlists too. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Make LimitCriterion a TEXT field and get rid of OrderDir. Database change, no migration, so run src/nuke-core-tables. * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Add public static QueryOrder and QueryLimit arrays that define the types of sorting and limiting smart playlists can handle. Break QueryFields into separate public static variables in addition to providing FieldSet. Within static constructor, translate Hyena query operators. * src/Core/Banshee.Services/Banshee.Query/SmartPlaylistQueryValue.cs: Inherit from PlaylistQueryValue. * src/Core/Banshee.Services/Banshee.SmartPlaylist/Migrator.cs: Get rid of OrderDir, migrate old smart playlists to use new QueryLimit/Order classes. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Add QueryOrder, Limit, and LimitValue properties that, if all set, define how a smart playlist is limited. Move list of Orders to BansheeQuery. * src/Core/Banshee.ThickClient/Banshee.Query.Gui/BansheeQueryBox.cs: Add SmartPlaylistQueryValueEntry mapping, and instantiate base class (QueryBox) with BansheeQuery's FieldSet, Orders, and Limits. * src/Core/Hyena.Gui/Hyena.Query.Gui/StringQueryValueEntry.cs: * src/Core/Banshee.ThickClient/Banshee.Query.Gui/PlaylistQueryValueEntry.cs: Specify a fixed widths for value entries. * src/Core/Banshee.ThickClient/Banshee.Query.Gui/SmartPlaylistQueryValueEntry.cs: Exact same thing as PlaylistQueryValueEntry - should probably be merged or factored out. * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs: Update to work with QueryLimit/Order classes and save/restore the limit/order. Update the predefined playlists, though I think they're still broken atm. * src/Core/Banshee.ThickClient/Makefile.am: Add new class. * src/Core/Hyena.Gui/Hyena.Query.Gui/DateQueryValueEntry.cs: Make sure query value and gui are in sync, and set a default combo box value. * src/Core/Hyena.Gui/Hyena.Query.Gui/FileSizeQueryValueEntry.cs: Similar to date value entry, provide a dropdown with MB, GB, etc. * src/Core/Banshee.ThickClient/Banshee.Query.Gui/RatingQueryValueEntry.cs: * src/Core/Hyena.Gui/Hyena.Query.Gui/IntegerQueryValueEntry.cs: Make sure the query value is in sync with the gui. * src/Core/Hyena.Gui/Hyena.Query.Gui/QueryBox.cs: Contains a QueryTermsBox and a QueryLimitBox. Provides the main GUI interface that the smart playlist Editor deals with. * src/Core/Hyena.Gui/Hyena.Query.Gui/QueryLimitBox.cs: New class, a HBox that contains widgetry to limit a smart playlist. * src/Core/Hyena.Gui/Hyena.Query.Gui/QueryTermBox.cs: Instead of defining this as a HBox with field, op, value across it, make QueryTermBox not actually a widet, and put its components into their respective VBoxes so that each column is always the same width. * src/Core/Hyena.Gui/Hyena.Query.Gui/QueryTermsBox.cs: New file, a HBox containing VBoxes for field, op, value, and button columns filled by the components of one or more QueryTermBoxes. * src/Core/Hyena.Gui/Hyena.Query.Gui/QueryValueEntry.cs: Set spacing, define default width for entries, and add FileSize entry mapping. * src/Core/Hyena.Gui/Makefile.am: Add new classes. * src/Core/Hyena/Hyena.Query/DateQueryValue.cs: Only offer GreaterThan and LessThan operators, for now at least. * src/Core/Hyena/Hyena.Query/FileSizeQueryValue.cs: Define SetValue method. * src/Core/Hyena/Hyena.Query/QueryLimit.cs: New class used to create named, labelized limit criteria (row based and not). Smart playlists use this to LIMIT their membership if needed. Current, non row-based Limits aren't implemented. * src/Core/Hyena/Hyena.Query/QueryOrder.cs: New class used to create a list of named, labelized orderings. Used in Banshee to give a list of orderings ("selected by") when you limit a smart playlist. * src/Core/Hyena/Hyena.Query/QueryValue.cs: Add ToString override. * src/Core/Hyena/Makefile.am: New files. 2008-02-10 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/PersistentColumnController.cs: Preserve the hard-coded order when loading the column orders and no order could be loaded from configuration * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Make the column titles translatable 2008-02-10 Aaron Bockover * src/Core/Hyena.Gui/Hyena.Data.Gui/ColumnController.cs: * src/Core/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: * src/Core/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Fixed some really bad compiler warnings and made more progress on column show/hide support through the columns menu; visibility now persists * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: * src/Core/Hyena.Gui/Hyena.Data.Gui/ColumnHeaderCellText.cs: * src/Core/Hyena.Gui/Hyena.Data.Gui/ObjectListView.cs: * src/Core/Hyena.Gui/Hyena.Query.Gui/QueryTermBox.cs: * src/Core/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: * src/Core/Hyena/Hyena.Query/XmlQueryParser.cs: * src/Core/Hyena/Hyena.SExpEngine/ListFunctionSet.cs: Cleaned up more compiler warnings 2008-02-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs: Fixed/disabled more compiler warnings. 2008-02-10 Aaron Bockover * src/Core/Banshee.Services/Banshee.Database/BansheeModelProvider.cs: * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: * src/Core/Banshee.Services/Banshee.Playlists.Formats.Xspf/Playlist.cs: * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Fixed more compiler warnings 2008-02-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Fix some compiler warnings. 2008-02-10 Aaron Bockover * src/Core/Banshee.Services/Banshee.AudioProfiles/ProfileConfiguration.cs: * src/Core/Banshee.Services/Banshee.AudioProfiles/ProfileManager.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/ArtistListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs: * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: * src/Core/Banshee.Services/Banshee.PlaybackController/ICanonicalPlaybackController.cs: Cleaned up a lot of compiler warnings 2008-02-10 Alan McGovern * src/Dap/Banshee.DapCore/Banshee.DapCore/AsyncDevice.cs: Fixed build issue 2008-02-10 Alan McGovern * src/Dap/Banshee.DapCore/Banshee.DapCore/AsyncDevice.cs: Cosmetic changes and fixed a typo in UploadTrack 2008-02-10 Alan McGovern * src/Dap/Banshee.DapCore/Makefile.am * src/Dap/Banshee.DapCore/Banshee.DapCore/AsyncDevice.cs: Added wrapper to make the calls to devices asynchronous 2008-02-10 Alan McGovern * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/Device.cs: Commented out my changes because i can't make em compile ;) 2008-02-10 Alan McGovern * src/Dap/Banshee.DapCore/Banshee.DapCore/IDevice.cs * src/Dap/Banshee.DapCore/Banshee.DapCore/AbstractDevice.cs * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/Device.cs: Updated the interface, implemented the abstract class and made MassStorage inherit from AbstractDevice. 2008-02-10 Scott Peterson * src/Core/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Assures that all rows in view are rendered. 2008-02-09 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Do not show the 'sort children' menu item if the source does not have children (thanks Scott) 2008-02-09 Aaron Bockover This commit adds initial support to load/save the column settings in the track list; it is not yet complete, also it adds a popup menu for the columns, but it's not done yet and doesn't work * src/Core/Hyena/Hyena/StringUtil.cs: * src/Backends/Banshee.Gnome/Banshee.Gnome/GConfConfigurationClient.cs: * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: * src/Core/Banshee.Core/Banshee.Base/StringUtil.cs: Moved StringUtil into Hyena * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/PersistentColumnController.cs: A wrapper around ColumnController that loads and saves through Banshee.Configuration * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Use PersistentColumnController to load and save settings * src/Core/Hyena.Gui/Hyena.Data.Gui/Column.cs: Added an Id property * src/Core/Hyena.Gui/Hyena.Data.Gui/ColumnController.cs: Added IndexOf and EnableColumnMenu * src/Core/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Added a popup menu for selecting which columns are visible * src/Core/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Fixed reordering logic to work with columns which aren't visible and added right click on the header 2008-02-10 Ruben Vermeersch * src/Dap/Banshee.Dap.MassStorage: Added. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage: Added. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.addin.xml: Added. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.mdp: Added. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/Device.cs: Added. * src/Dap/Banshee.Dap.MassStorage/Makefile.am: Added. Added a basic Banshee.Dap.MassStorage extension which will be the first device class to be ported, used to test the stack. * src/Dap/Banshee.DapCore/Banshee.DapCore/AbstractDevice.cs: Added. * src/Dap/Banshee.DapCore/Banshee.DapCore/DapCore.cs: Store the extension nodes, not the types themselves. 2008-02-09 Ruben Vermeersch Moved the Banshee.DapCore extension out of src/Extensions/ and into src/Dap/. This folder will house all media device addins. * configure.ac: * src/Dap: Added. * src/Dap/Banshee.DapCore: Copied from src/Extensions/Banshee.DapCore. * src/Dap/Banshee.DapCore/Banshee.DapCore/DeviceClassNode.cs: Removed. * src/Dap/Makefile.am: Added. * src/Extensions/Banshee.DapCore: Removed. * src/Extensions/Banshee.DapCore/Banshee.DapCore: Removed. * src/Extensions/Banshee.DapCore/Banshee.DapCore.mdp: Removed. * src/Extensions/Banshee.DapCore/Banshee.DapCore/DapCore.cs: Removed. * src/Extensions/Banshee.DapCore/Banshee.DapCore/HalCore.cs: Removed. * src/Extensions/Banshee.DapCore/Banshee.DapCore/IDevice.cs: Removed. * src/Extensions/Banshee.DapCore/Makefile.am: Removed. * src/Extensions/Banshee.DapCore/Resources: Removed. * src/Extensions/Banshee.DapCore/Resources/Banshee.DapCore.addin.xml: Removed. * src/Extensions/Banshee.DapCore/hal-sharp: Removed. * src/Extensions/Banshee.DapCore/hal-sharp/Device.cs: Removed. * src/Extensions/Banshee.DapCore/hal-sharp/Manager.cs: Removed. * s