2008-03-26 Aaron Bockover Banshee 1.0 Alpha 2 (0.98.2) Released 2008-03-26 Aaron Bockover * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea.dll.config: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationArea.cs: Change the default DllImport for libX11 directly to libX11.so.6 and then provide a .config file map that distributors could override if necessary 2008-03-26 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: Some code clean up and render the idle logo when there is no video playing * src/Libraries/Hyena.Gui/Hyena.Gui/EntryInsertAction.cs: Avoid an NRE in the merge code 2008-03-26 Gabriel Burt * src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs: Port fix for Artist tag saving from stable. * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs: Remove artist/album readonly warning, whitespace fixes. 2008-03-26 Gabriel Burt * NEWS: Update for forthcoming 0.98.2 release. 2008-03-26 Sebastian Dröge * build/m4/banshee/notify-sharp.m4: * src/Extensions/Banshee.NotificationArea/Makefile.am: * configure.ac: Allow building against an external notify-sharp if one is found. This is especially important as the next notification-daemon release in a few days changes the DBus API and a newer notify-sharp is required then. 2008-03-25 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/AlbumListView.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtistListView.cs: Start playing when activated. Fixes BGO #524412. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs: Catch exceptions with loading artwork. Catches 'no data in image' error. 2008-03-25 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Emergency fix0rz!!1! 2008-03-25 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Don't display 'Add Station' action when on a station source. 2008-03-25 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Use QueueDraw. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: New QueueDraw method so that new rendering model will properly update. 2008-03-25 Aaron Bockover * build/Makefile.am: Removed the old .pc file, SUBDIRS the new pkg-config * build/pkg-config/Makefile.am: Generate .pc files from the .pc.in files * build/pkg-config/banshee-1-core.pc.in: * build/pkg-config/banshee-1-hyena-gui.pc.in: * build/pkg-config/banshee-1-hyena.pc.in: * build/pkg-config/banshee-1-lastfm-gui.pc.in: * build/pkg-config/banshee-1-lastfm.pc.in: * build/pkg-config/banshee-1-mono-media.pc.in: * build/pkg-config/banshee-1-services.pc.in: * build/pkg-config/banshee-1-thickclient.pc.in: .pc files that represent the entire assembly layout of the core Banshee Media Framework * configure.ac: Bumped version 2008-03-25 Gabriel Burt * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: Change icon to application-multimedia. Not perfect, but at least not confusing with the play button. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Override clear, calling base and resetting the first_order_id, fixing bug in IndexOf that was causing playback issues with smart playlists. * src/Libraries/Hyena/Hyena.Data/ArrayModelCache.cs: * src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs: Remove lock around Clear method since now done in subclass. 2008-03-25 Wouter Bolsterlee reviewed by: Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Correctly guard against null SourceView instances, so that non-Nereid clients without a SourceView do not instantly crash upon startup. Patch suggested by Gabriel Burt on IRC. 2008-03-25 Aaron Bockover * src/Clients/Nereid/Nereid/PlayerInterface.cs: Set the source on the track view column controller when it changes * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/PersistentColumnController.cs: Preliminary work to allow column settings to persist against each primary source; all settings go to the default save location for now * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Set the FillAlpha when rendering the sort rectangle for the column so it blends with the row rules * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: Render the row rule with a set FillAlpha 2008-03-25 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs: In FindOrCreate methods, cache the last result to avoid looking up an artist and album for each track in an album. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Within the Save method make sure the artist and album are up to date and in the database. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Album/artist creation now done in DatabaseTrackInfo. * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs: Re-enable editing of artist/albums. * src/Libraries/Hyena/Hyena.Data/ArrayModelCache.cs: Forgot to put threading fix in this when previously updated DictionaryModelCache. 2008-03-25 Gabriel Burt * 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/DatabaseAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/LibraryArtistInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: * src/Core/Banshee.Services/Makefile.am: Rename LibraryArtistInfo class to DatabaseArtistInfo. 2008-03-25 Gabriel Burt * src/Core/Banshee.Core/Resources/translators.xml: Updated. * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: Don't allow renaming or searching. 2008-03-24 Gabriel Burt This patch fixes issues with smart playlist/search date fields not working right/at all. Also adds support for different widgets within one field on the smart playlist editor dialog (eg absolute dates vs relative dates for date fields). * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Use new TimeSpanQueryValue for DurationField, and use RelativeTimeSpanQueryValue in addition to DateQueryValue for LastPlayed/Skipped. * src/Core/Banshee.Services/Banshee.SmartPlaylist/Migrator.cs: Use new RelativeTimeSpanQueryValue class. * src/Core/Banshee.ThickClient/Banshee.Query.Gui/SmartPlaylistQueryValueEntry.cs: Avoid crashing if there are no smart playlists. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/DateQueryValueEntry.cs: Old code moved mostly to *TimeSpanQueryValueEntry, replaced with an actual abs date entry. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/NullQueryValueEntry.cs: Empty, if the user has selected this 'operator', no more UI is needed. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryTermBox.cs: Handle QueryFields having multiple ValueTypes (each with their own set of operators). This allows us to have both relative dates and absolute date widegts for one field (LastPlayed, say). * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryTermsBox.cs: When creating a new row, set it to the previous row's field/operator. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryValueEntry.cs: Connect new QueryValue types to their Entry types. Add static lookup method. * src/Libraries/Hyena/Hyena.Query/DateQueryValue.cs: Move the relative/TimeSpan code out. * src/Libraries/Hyena.Gui/Makefile.am: * src/Libraries/Hyena/Hyena.Query/NullQueryValue.cs: New QueryValue class with one operator to see if a value is null. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/RelativeTimeSpanQueryValueEntry.cs: * src/Libraries/Hyena.Gui/Hyena.Query.Gui/TimeSpanQueryValueEntry.cs: New classes, mostly a copy of the old DateQueryValueEntry code, with an entry and a units (factors) dropdown (and an "ago" label for the Relative one). * src/Libraries/Hyena/Hyena.Query/QueryField.cs: Instead of QueryFields having one ValueType, make it an array. * src/Libraries/Hyena/Hyena.Query/QueryTermNode.cs: * src/Libraries/Hyena/Hyena.Query/QueryValue.cs: Handle multiple ValueTypes. * src/Libraries/Hyena/Hyena.Query/QueryOperator.cs: If the Label is null return the Name. Useful for debugging with adding new operators. * src/Libraries/Hyena/Makefile.am: * src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs: * src/Libraries/Hyena/Hyena.Query/RelativeTimeSpanQueryValue.cs: New files for representing time spans in queries. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSourceContents.cs: Use new ExtensionCacheRoot. 2008-03-24 Aaron Bockover * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Use InstalledApplicationData to build the catalog path for gettext and initialize it (whoops) (BGO #523047) * src/Core/Banshee.Core/Banshee.Base/Paths.cs: Added InstalledApplicationPrefix, InstalledApplicationDataRoot, and InstalledApplicationData properties that are detected at runtime based on the path of the entry assembly (used to figure out datadir, basically, without having to hardcode the paths at compile time) 2008-03-24 Aaron Bockover * src/Clients/Nereid/Nereid/Client.cs: Implement new ClientId property * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Support a stack of client objects; ideally we'll be able to run multiple clients in a single application instance (think mini mode) - this is probably not well thought out, but it's a start * src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs: Added a new base Client class that is not GUI based * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/PersistentColumnController.cs: Support loading/saving the column widths * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Set up some good visibility defaults for the columns * src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs: Extend the new Client class and push itself into the application client stack * src/Libraries/Hyena.Gui/Hyena.Data.Gui/SortableColumn.cs: Some new ctor signatures * src/Libraries/Hyena.Gui/Hyena.Data.Gui/Column.cs: Some new ctor signatures and removed the IsVisible property * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnController.cs: Added a QueueUpdate method * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Call QueueUpdate on the column controller when a column is resized 2008-03-24 Aaron Bockover * src/Core/Banshee.Core/Banshee.Base/CoverArtSpec.cs: Use XDG_CACHE_HOME as the base directory for the album art disk cache * src/Core/Banshee.Core/Banshee.Base/Paths.cs: Changed some other paths to use XDG_CACHE_HOME, especially for extension caches * src/Core/Banshee.Core/Banshee.Base/XdgBaseDirectorySpec.cs: Moved the XDG code into its own class from Paths * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs: Ensure the artwork cache directory gets created if it doesn't exist * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs: Use the new ExtensionCacheRoot path 2008-03-24 Aaron Bockover * libbanshee/gst-playback-0.10.c: Disable the equalizer temporarily as it is causing a few audio problems for some people and is not properly implemented in the pipeline (BGO #523878) 2008-03-24 Aaron Bockover * libbanshee/gst-playback-0.10.c: * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VisualisationConfigBox.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.mdp: * src/Extensions/Banshee.NowPlaying/Makefile.am: Reverted Alexander Hixon's visualization patches from 2008-03-23 since a number of people have been reporting playback issues after this landed - also it had no review 2008-03-21 Gabriel Burt * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs: Attempt to fix compiler error for older versions of mono. 2008-03-23 Alexander Hixon * libbanshee/gst-playback-0.10.c: Fix up some tab to space formatting. 2008-03-23 Alexander Hixon * src/Extensions/Banshee.NowPlaying/Makefile.am: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.mdp: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VisualisationConfigBox.cs: Add a new cool-looking visualisation switcher bar to the top of the visualisation display. Hides away if we watch video. * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs: * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: * libbanshee/gst-playback-0.10.c: Add support for multiple visualisations, with configurable sizes. 2008-03-22 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Moved the ColumnHeaderCellText.HasSort determination from PaintHeaderCell into RegenerateColumnCache. This means we run that code less often. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Fixed stupid bug in rendering which I can't believe I missed. Better, faster, stronger. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Regenerate the column cache after the sort column changes so that we re-assign the HasSort properties of the ColumnHeaderCellText 2008-03-22 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/Column.cs: Added MaxWidth property (currently not used anywhere). * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Began reworking the column layout code. Columns will now resize themselves to take up the header width. No logic yet for min or max column widths: that's tommorrow! 2008-03-22 Alexander Hixon * libbanshee/gst-playback-0.10.c: Hookup the 'goom' visualisation element to the playbin so we can watch wicked things during Now Playing for an audio track. We'd probably want to go throught the element registry to find a suitable element later. 2008-03-21 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_DragAndDrop.cs: Fixed rendering issue when dragging ends. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: New column sorting effect. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Fixed column resize cursor appearing when the mouse is over the list. 2008-03-21 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Minor improvements to rendering. Vertical resizing is now much more efficient, only rendering new rows that com into view as a result of resizing (rather than rendering everything on every pass). * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Minor improvements to rendering. 2008-03-21 Gabriel Burt This patch implements actually updating the play/skip counts and last played/skipped stamps. * src/Clients/Nereid/Nereid/PlayerInterface.cs: Update the status bar when the active source is Updated. * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Add IncrementSkipCount method and LastSkipped property, and update LastSkipped and LastPlayed within their respective Increment methods. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Save the track after incremting its play/skip count. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add a LastSkippedStamp column to CoreTracks. * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: When opening a new track or uri, if there is a currently playing song, if it's over half way done, call IncrementPlayCount on it, otherwise call IncrementSkipCount. * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: Add a NOTE about refactoring to allow models to provide the random track functionality. * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Add LastSkipped query field and sorting. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Add a Last Skipped column. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmTrackInfo.cs: Within IncrementPlayCount override call the base method. 2008-03-21 Aaron Bockover This commit should make Banshee look better on darker themes * src/Clients/Nereid/Nereid/Client.cs: Allow ignoring the gtkrc if --no-gtkrc is passed; nice for debugging * src/Clients/Nereid/Nereid/PlayerInterface.cs: Remove the subtle midtone coloring since I can't figure out a reliable way to make it work on darker themes and lighter themes; GTK themes seriously suck and I hate them and where in the hell is GTK 3. Seriously. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Hacky version of the mid tone stuff since it's absolutely necessary here * src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs: Set a GLib log handler when in --debug mode * src/Core/Banshee.Widgets/Banshee.Widgets/SearchEntry.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs: Get a proper mid tone using the base and text colors * src/Core/Banshee.Widgets/Banshee.Widgets/StreamPositionLabel.cs: Render text using the foreground, not text colors, like other text that should be rendered on background and not base * src/Libraries/Hyena.Gui/Hyena.Data.Gui/CellContext.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnHeaderCellText.cs: Allow rendering text in the cell as foreground or text colors * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Fixed some small rendering/theme issues; do not render a highlight under the sorted column since it looks like ass on some themes and I'm tired of GTK themes * src/Libraries/Hyena.Gui/Hyena.Gui/CairoExtensions.cs: * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: Add some color foo * src/Libraries/Hyena.Gui/Hyena.Gui/ShadingTestWindow.cs: Just something I'm working on, nothing interesting, never used 2008-03-21 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Override QueueDraw to use our own methods. (Fixes bug where hiding/showing columns did not update list) 2008-03-21 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Added some rendering fixes, hook up the Pixmap canvases. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Rendering of the list is now done to an off-screen Pixmap. This is done so that we can recycle pixels when scrolling the list: the contents of the pixmap are shifted up or down by the amount of scrolling, and only the newly visible rows are rendered in place. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Don't paint everything when we're scrolling vertically. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: Paint everything when the model changes. * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/Theme.cs: * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: Add DrawListBackground, re-ordered some methods to match their execution order for readability. 2008-03-21 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/QueryBuilder.cs: * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/QueryBuilderModel.cs: Remove. 2008-03-21 Alexander Hixon * src/Core/Banshee.Widgets/Banshee.Widgets/VolumeButton.cs: Patch missing from previous revision. 2008-03-21 Alexander Hixon * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/PreferencesDialog.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/AboutDialog.cs: Unbreak builds for people using newer versions of Gtk#. 2008-03-20 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Better polymorphism, removed unnessisary qualifications. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Better polymorphism. 2008-03-20 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: This fixes the header disapearing if you switch to and from the Now Playing source. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Whitespace. 2008-03-20 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TerseTrackListView.cs: Started a new track view that can be very narrow and won't have columns; think, 'is this what a detachable play queue looks like?' * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellTrack.cs: Started a cell renderer for showing a track in a list with a single column * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/BetaReleaseViewOverlay.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Get rid of the preview release overlay thingy. It sucked. 2008-03-20 Scott Peterson * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Better polymorphism. 2008-03-20 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Minor rendering fix when reordering columns. 2008-03-20 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Patch from Michael Miceli adding a composer column to the TrackListView, fixes BGO #523666. * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Add a Composer sort case. 2008-03-20 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Fixed rendering in with non-composited window managers. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Got rid of private method - instead use Gdk.Rectangle.Contains() 2008-03-20 Scott Peterson * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs: Got rid of padding stuff. That will be taken care of in AnimatedVBox. 2008-03-20 Scott Peterson This gets rid of the 5 (count 'em: five) GdkWindows we were using to render the ListView. We now render everything to the GdkWindow of the ListView's parent. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: ListWindow is no more. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs: Use Style to paint the layout rather than the Drawable. This is not ideal, but nessisary so we can clip. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnHeaderCellText.cs: Moved triangle-drawing code into the Theme. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_DragAndDrop.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: InvalidateListWindow is now InvalidateList. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Replaced five input-output GdkWidows with one input-only GdkWindow. Also improved RowsInView calculation. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Changed the math to account for just one GdkWindow, got rid of unnessisary method ShowHideHeader(). * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Rework of rendering. Everything draws to a single GdkWindow. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Changed the math to account for just one GdkWindow. Split the OnButtonPressEvent and OnButtonReleaseEvent methods into methods specific to the header and list. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Clip to the clipping box. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/CellContext.cs: Add a clip property for the clipping box. * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/Theme.cs: Added DrawRectangle. Split DrawFrame into DrawFrameBackground and DrawFrameBorder. * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: Added DrawRectangle. Split DrawFrame into DrawFrameBackground and DrawFrameBorder. Misc rendering improvements. 2008-03-20 Alexander Hixon * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Revert change from previous revision. 2008-03-20 Alexander Hixon * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs: Added left padding, so it doesn't look so bad on fullscreen. Also made addition to code comment from previous commit, and some evil whitespace. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Patch to fix small bug introduced in r3487 where the missing pixbuf icon would be displayed as an album cover type when it shouldn't be (ie the black box around the icon). * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Slightly more awesome status bar text, shamelessly ported from stable. * src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs: Removed more mentions of 'songs' and replaced with 'media'. 2008-03-20 Alexander Hixon * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs: Stop hiding the job tile host, so that any ease-out animations that occur with only a single widget in the host display correctly, instead of being completely hidden. 2008-03-20 Gabriel Burt * src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks/BookmarksService.cs: Work around issue with CanSeek being equal to false for a bit after the engine loads the song we want to jump within. 2008-03-19 Gabriel Burt Patch from Bertrand Lorentz porting the Bookmarks plugin. * build/build.environment.mk: * configure.ac: * src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.addin.xml: * src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.mdp: * src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks/BookmarksService.cs: * src/Extensions/Banshee.Bookmarks/Makefile.am: * src/Extensions/Banshee.Bookmarks/Resources/BookmarksMenu.xml: * src/Extensions/Extensions.mds: * src/Extensions/Makefile.am: Port the Bookmarks plugin to trunk. 2008-03-19 Gabriel Burt * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: * src/Core/Banshee.Services/Banshee.Sources/Source.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Lots of 'song' to 'item' changes. 2008-03-19 Gabriel Burt * src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs: Take the title from the filename if needed. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Display a video icon for missing video 'album art'. * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Change 'song' to 'item' in a few places. 2008-03-19 Aaron Bockover * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: Added a TrackStarted event that will always be raised, even if the playback controller did not transition to the track, but most importantly it will _always_ be raised after the Transition event; this allows users to connect to both events to determine if the track that is playing was manually played or not * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: Activate the now playing source if the user manually started playing a track with a video stream; uses the nice transition/track start stuff noted above 2008-03-19 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Stubbed some stuff out to allow showing separator rows; not complete * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs: Pack the video widget into a rounded frame to look sexy * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: Respect ShowStroke * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/ThemeContext.cs: Added ShowStroke property * src/Libraries/Hyena.Gui/Hyena.Widgets/RoundedFrame.cs: Allow setting a custom fill color and the ability to hide the border/stroke 2008-03-19 Aaron Bockover * build/m4/banshee/gstreamer.m4: Link gstinterfaces and gstvideo libraries * libbanshee/gst-playback-0.10.c: First pass at hopefully properly implementing the GstXOverlay stuff; adds video rough video support to the pipeline/player engine * src/Core/Banshee.Services/Banshee.MediaEngine/NullPlayerEngine.cs: * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs: * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Implement a few video related features to allow setting/exposing to a GdkWindow for video support * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: Send the GdkWindow/Video calls into the player engine - binds the pipeline XOverlay to a window in the UI * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: Managed GdkWindow and video slab display widget thingy that can be drawn on by an engine 2008-03-18 Gabriel Burt * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Forgot to make the db schema changes in the InitializeFreshDatabase method. 2008-03-18 Aaron Bockover * src/Clients/Nereid/Nereid/PlayerInterface.cs: Hide the view container when the source doesn't support custom contents or has a track model * src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs: * src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Fix up the source ordering to allow for some play * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Changed the argument to have MA spew its guts to --debug-addins * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Changed to reflect the Nereid source contents properties and hide the source contents header since it's pointless for Last.fm * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs: Stubbed out the basics for the new 'Now Playing' source that will be used to display video, visualizations, and other data related to the currently playing track * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: Basic placeholder GdkWindow to be used to render video 2008-03-18 Gabriel Burt * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Set ShowBrowser to the same value as our Parent, by default. So playlists under VideoLibrary will not show the browser. 2008-03-18 Gabriel Burt This commit makes it easy/possible to create playlists and smart playlists on any PrimarySource. * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add PrimarySourceID column to Core[Smart]Playlists. * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Load and save PrimarySourceID. * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistCore.cs: Handle loading smart playlists from various primary sources. * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: * src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade: * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: Change Music to Media where appropriate. * src/Core/Banshee.Services/Banshee.Playlist/PlaylistFileUtil.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: When creating new playlists, create them with the correct primary source. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView_DragAndDrop.cs: This needs to be fixed up - the 'New Playlist' playlist that appears when you drag tracks over the SourceView only displays for the Music Library atm. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Update to new PlaylistSource ctor. 2008-03-18 Gabriel Burt * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: If a file contains video, put it in the VideoLibrary instead of the MusicLibrary. * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs: * src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs: New files. VideoLibrarySource turns off the browser. * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: Changed to not be music specific. Subclassed by new Music/VideoLibrarySource classes. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: * src/Core/Banshee.Services/Banshee.Library/ThreadPoolImportSource.cs: Update SourceManager.Library references to SourceManager.MusicLibrary. * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Create VideoLibrarySource. * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Rename Library property to MusicLibrary, and add VideoLibrary property. * src/Core/Banshee.ThickClient/Banshee.Gui/IconThemeUtils.cs: Check the executing assembly for the resource file if it's not found in the given assembly. * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Rename ImportMusicAction to ImportAction. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Change icon to normal playlist icon for now since the Music Library now uses our old icon. Listen for events on the VideoLibrary too. 2008-03-18 Sebastian Dröge * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: * src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs: Change the unit of the preamp setting into dB, otherwise the scale next to it is confusing. 2008-03-18 Gabriel Burt * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: Fix delete from library code so that remove tracks from database is only called once per Range. 2008-03-17 Aaron Bockover * src/Core/Banshee.Services/Banshee.Sources/MessageAction.cs: Non-GUI action that can be attached to a SourceMessage * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Added SourceMessage support to replace the Message.* properties; supports a stack of messages * src/Core/Banshee.Services/Banshee.Sources/SourceMessage.cs: Message class replacing all of the Message.* properties * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedMessageBar.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Updated to use the new Source/SourceMessage changes * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedBox.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedHBox.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedVBox.cs: Some code clean ups and the ability to remove all widgets at once * src/Libraries/Hyena.Gui/Hyena.Widgets/MessageBar.cs: Minor rendering fix 2008-03-17 Gabriel Burt * src/Core/Banshee.Widgets/Banshee.Widgets/RatingEntry.cs: Add ability preview-on-hover, but keep it disabled for now. 2008-03-16 Aaron Bockover * src/Core/Banshee.Core/Banshee.Collection/TrackMediaAttributes.cs: Defined a starting set of general flags that can be used to describe the track, including VideoStream, AudioStream, Podcast, AudioBook, etc. * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Added a MediaAttributes property * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Override MediaAttributes and bind it to the Attributes column * src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs: Detect and merge some MediaAttributes into the track (i.e. if taglib says the file has audio and/or video streams, apply those as attributes) * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Added the first schema changes using the migrator now that we have actually made a release, we don't want to break users' database; add a column called Attributes to CoreTracks * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: NotifyTracksAdded a little more frequently than we do right now * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteUtils.cs: Special case Enum types so that we can convert integer values in the database to the enum values they represent if a bound property's type is an enum 2008-03-16 Scott Peterson Added animated layout widgets to Hyena.Gui * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Cast the shutdown handlers in the foreach statement. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost. cs: User jobs now use the fancy fancy AnimatedVBox. * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/Actor.cs: Added an overload for Rest which takes a new duration. * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/Choreographer.cs: A static class which provides math-o-magical easing equations. * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/Stage.cs: Added an overload for Rest which takes a new duration and &= the ActorStepHandlers together to fix a theoretical bug. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedBox.cs: A base class for doing animated packing. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedHBox.cs: A container for animatedly packing widgets into a horizontal box. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedVBox.cs: A container for animatedly packing widgets into a vertical box. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedWidget.cs: An internal class used by the AnimatedBox classes * src/Libraries/Hyena.Gui/Makefile.am: * src/Core/Banshee.Services/Banshee.Services.mdp: * src/Libraries/Hyena.Gui/Hyena.Gui.mdp: 2008-03-16 Wouter Bolsterlee * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/AboutDialog.cs: Use a real en dash for date ranges. This is 2008 and we do speak Unicode nowadays! :) 2008-03-14 Aaron Bockover * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Define a property for the icon name that is expected to be in the GTK icon theme; set this value to the new media-player-banshee icon name (used to be music-player-banshee, changed to avoid conflicts) * src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/GtkNotificationAreaBox.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: Remove all hardcoded references to music-player-banshee, the old icon name, and replaced with the new Application property 2008-03-13 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Fix mono 1.2.4 build issue. 2008-03-14 Scott Peterson * src/Libraries/Mono.Media/Mono.Media.mdp: Removed unnessisary reference. 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 ArgumentOutOfRangeException 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/X11Notification