2008-06-05 Aaron Bockover * libbanshee/banshee-player-pipeline.c: Enable the plugin installer support * libbanshee/banshee-player-private.h: * libbanshee/banshee-player-missing-elements.c: Keep the missing element details list preserved throughout the instance and allow showing the installer for each different missing codec, but only once per codec 2008-06-05 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Avoid NRE. 2008-06-05 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Fix bug in migrating download preference for feeds. 2008-06-05 Gabriel Burt * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Fix bug with our cell_context.Drawable going missing b/c we weren't transferring it to the new cell_context within OnStyleSet. 2008-06-05 Gabriel Burt * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtJob.cs: Set DelayShow = true to avoid it popping up so briefly so often. 2008-06-05 Gabriel Burt * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Remove some verbose logging. * src/Extensions/Banshee.Podcasting/Resources/GlobalUI.xml: * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Add the Subscribe to Podcast menu item to the Media menu. 2008-06-05 Gabriel Burt * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: Only try 5 unplayable items instead of 20 before stopping playback. 2008-06-04 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellPositiveInt.cs: Prevent NRE (BGO #536724). 2008-06-04 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: Use Gtk.Rc.GetStyleByPaths to grab the GtkTreeView style directly and attach it to our ListView; this is the proper "fix" to bug (BGO #534731), though the bug in LP is again, still quite valid * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListViewBase.cs: Reverted the hacky version of my theme fix from earlier today 2008-06-04 Gabriel Burt * src/Libraries/Migo/Migo.Syndication/FeedManager.cs: Get rid of some racy wait handle usage that was causing shutdown to freeze sometimes. 2008-06-04 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: * src/Libraries/Migo/Migo.Syndication/RssParser.cs: Fix bug with earlier fix for guids that would cause some duplicates under some circumstances. 2008-06-04 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Fix bug with link we were generating for the Last.fm track page (BGO #536682). 2008-06-04 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Remove the icon from the Source Rename action (BGO #536559). 2008-06-04 Aaron Bockover * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_DragAndDrop.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListViewBase.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: A pretty disgusting hack that forces the style of our source view GtkTreeView into our custom ListView widget so at least the ListView will end up with the same color set as the GtkTreeView; this is a giant and ugly hack that works around a pretty serious bug in some of Ubuntu's themes where the selection background color is different for GtkTreeView widgets than for other widgets causing inconsistency and usability issues when reading text on the darker background (BGO #534731); https://bugs.launchpad.net/ubuntu/+source/human-theme/+bug/237261 The only reason I opted to work around this downstream bug was that some users reported it difficult to read text due to the contrast issue, so I view this as a usability problem more than a cosmetic one. 2008-06-04 Gabriel Burt * src/Core/Banshee.Services/Banshee.MediaProfiles/MediaProfileManager.cs: Avoid NRE, fixes BGO #536234. 2008-06-04 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: * src/Libraries/Migo/Migo.Syndication/FeedItem.cs: * src/Libraries/Migo/Migo.Syndication/Feed.cs: Fix bug with the guid we use for identifying podcast items. Some feeds don't give a guid for items, so we were using the , but that isn't unique. Instead, fall back to using a combination of the title and pubdate. Fixes BGO #536555. * src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Comment out the eq actions. 2008-06-04 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedSeekSlider.cs: When the widget is created and the engine is in the paused state, synthesize an engine iterate event so the correct state is reflected in the slider and label (BGO #536564) * src/Core/Banshee.Widgets/Banshee.Widgets/StreamPositionLabel.cs: Implement OnSizeRequested to properly do size requisitioning (BGO #536564) * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/TrackInfoPopup.cs: Updated to reflect small API change 2008-06-04 Aaron Bockover * src/Core/Banshee.Services/Banshee.Sources/ISource.cs: * src/Core/Banshee.Services/Banshee.Sources/Source.cs: * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Disabled exporting of the source manager and its children over DBus since there are issues that need to be worked out in NDesk DBus itself before this can be useful and working (BGO #536526) * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedSeekSlider.cs: Expose the StreamPositionLabel * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/TrackInfoPopup.cs: Set FormatString on the slider's label to small, not bold; fix padding and spacing after dropping unnecessary alignment 2008-06-03 Gabriel Burt * src/Libraries/Migo/Migo.Syndication/RssParser.cs: If we fail to load a XML document b/c it's invalid, remove any non-linebreak control characters from it and try loading it again. 2008-06-03 Aaron Bockover * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Remove the Iterate event from the event mask * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: Do not update the popup since now all of its children do their own state/event handling * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/TrackInfoPopup.cs: Removed a bunch of crappy legacy code for showing the position/duration via the label and progress bar; replaced with our standard SeekSlider widget in horizontal mode (BGO #536396) 2008-06-03 Gabriel Burt * src/Libraries/Migo/Migo.Syndication/RssParser.cs: If a XML blob isn't valid XML, log the actual error so we have a hope of fixing or working around the problem. 2008-06-03 Gabriel Burt * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtJob.cs: Avoid issue with last_scan being MinValue and trying to subtract retry_every from it. Also, wrap the entire fetch loop in a try/catch to make sure we exit the user job and log any exception. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Don't stop the entire migration because one track fails. Log the exception, and keep going. 2008-06-03 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Fixed focus bug with metacity (BGO #531187) * src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapInfoBar.cs: Use only the normal background color and create a darker version of that to do the subtle gradient behind the bar (BGO #536052) 2008-06-03 Gabriel Burt * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtJob.cs: * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs: Remove verbose logging. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedSeekSlider.cs: Fix bug where stream position label didn't return to 'Idle' when playback was stopped. 2008-06-03 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Reconfigure the window when we're shown so we'll fullscreen to the proper monitor (whatever monitor the parent is on) (BGO #535982) 2008-06-03 Aaron Bockover * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: In Play (), always call OnPlayWhenIdleRequest if we are in the idle state, otherwise call Play on the base engine (BGO #534472) * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseImportManager.cs: Also add mpga to the white list 2008-06-03 Aaron Bockover * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Remove the footer widget property after destroying the widget to avoid a property notification cycle * src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapInfoBar.cs: Wrap UpdateUsage in an exception catch/log * src/Backends/Banshee.Hal/Banshee.HalBackend/HardwareManager.cs: Catch any exceptions that HAL might through (particularly if the device no longer exists) when adding devices (BGO #528957) * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseImportManager.cs: Added oga and ogv file extensions to the white list (BGO #532561) * src/Extensions/Banshee.BooScript/Resources/vorbis-oga-extension.boo: Added a sample script that will change the Vorbis profile to write files with a .oga extension instead of a .ogg (BGO #532561) 2008-06-03 Gabriel Burt * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Get rid of unnecessary Save call; DatabaseTrackInfo already calls save when you set the Rating. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Expose rating and some other members as protected so subclasses can set it without triggering the save (eg to load initial state). * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodTrackInfo.cs: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpTrackInfo.cs: Hacky fix for BGO #535898, use the protected rating member instead of the Rating property to initialize the rating, to avoid callign Save when we didn't mean to. 2008-06-03 Aaron Bockover * src/Clients/Nereid/Nereid/Client.cs: Use ?? 2008-06-03 Aaron Bockover * src/Clients/Halie/Halie/Client.cs: Translate a few query fields to be more familiar, allow setting volume and seeking, support window hiding * src/Clients/Nereid/Nereid/Client.cs: Added --help and --version displays * src/Core/Banshee.ThickClient/Banshee.Gui/IClientWindow.cs: Added Hide () * src/Libraries/Hyena/Hyena.Collections/CollectionExtensions.cs: Added some Join methods * src/Libraries/Hyena/Hyena.CommandLine/Layout.cs: Support displaying specific sets of groups * src/Libraries/Hyena/Hyena.CommandLine/CommandLineParser.cs: Added a ContainsStart method * src/Libraries/Hyena/Hyena.CommandLine/LayoutGroup.cs: Added index support 2008-06-03 Gabriel Burt * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtJob.cs: * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs: And recommit the patch, now that Aaron approves. :) 2008-06-03 Gabriel Burt * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtJob.cs: * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs: Revert last commit, apparently abock has some grand plans he didn't tell me about. 2008-06-03 Gabriel Burt * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtJob.cs: * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtService.cs: Add a CoverArtDownloads table to keep track of when we last tried to download cover art for an album and if we were successful. With this information, we can avoid trying to download artwork for an album more than once a week. Fixes BGO #535988. Should also fix issue with the cover art job saying it's at 100% while it keeps going for many more minutes. 2008-06-03 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellFileSize.cs: Avoid NRE, fix BGO #536148. 2008-06-03 Jordi Mas * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs: Add GetString to localizable strings * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs: Add GetString to localizable strings 2008-06-02 Gabriel Burt * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtJob.cs: Don't display cover art as we download, but do show the same Network icon as shown for the podcast download job. Fixes BGO #535989. 2008-06-02 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingEntry.cs: Only set the rating when the mouse is released; fix some small issues with leave notify on the menu item (BGO #535338) 2008-06-02 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Patch from Bertrand Lorentz fixing BGO #536306; stop listening for player engine events after we're disposed. 2008-06-02 Aaron Bockover * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: Added Boyd's panel icon sizing code from Tomboy so we display the best icon for a given panel size, only scaling if we're in SVG territory; this is so hot I think I'll make my panel like KDE now (BGO #526333) * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.addin.xml: Make the Now Playing extension required for now * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/TrackInfoPopup.cs: Set the window hint to notification to prevent compiz from doing strange things with the windows when they are mapped/unmapped (BGO #526326) * src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinView.cs: Do not show addins where the category starts with 'required:' * src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs: Avoid possible NRE (BGO #532215) 2008-06-02 Aaron Bockover * src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs: Switch to the FSQ source when items get added to it, set it as the next playback source if the --play-enqueued argument has been passed either locally or remotely 2008-06-02 Jordi Mas * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Add GetString to localizable strings 2008-06-02 Aaron Bockover * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdDuplicator.cs: Bootstrapper for locating and running an IDiscDuplicator extension * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs: Implement disc duplication by calling into AudioCdDiscDuplicator if it is supported * src/Core/Banshee.Services/Banshee.Hardware/IDiscDuplicator.cs: Interface to expose disc duplication support * src/Core/Banshee.Services/Banshee.Services.addin.xml: Define a DiscDuplicator extension point * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/Brasero.cs: * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs: Expose Brasero functionality internally * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/DiscDuplicator.cs: Implement an IDiscDuplicator that first tries to use Brasero and falls back to nautilus-cd-burner * src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml: Implement the DiscDuplicator extension point * data/banshee-1.desktop.in.in: Change the Name field to 'Banshee' to eliminate redundancy between Name and GenericNam 2008-06-02 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Avoid NRE, fixes BGO #535909. 2008-06-02 Gabriel Burt * src/Clients/Nereid/Nereid/ViewContainer.cs: Add the separator back between the filter options and the Help item. Attempt to fix the "GdkWindow unexpectedly destroyed" warnings (and related partial UI freezing) by hiding the old content, adding and showing the new content, and then removing the old content when switching source contents. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs: Remove WriteLine cruft. 2008-06-02 Aaron Bockover * src/Core/Banshee.Core/Banshee.Base/PlatformHacks.cs: Removed the gdk_set_program_class call since it's GUI code and not even really a platform hack * src/Core/Banshee.Core/Makefile.am: * src/Core/Banshee.Core/Banshee.Core.dll.config: Removed .config, not needed * src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs: Replaced the PlatformHacks.GdkSetProgramClass call with the proper Gdk.Global.ProgramClass property setter 2008-06-02 Sebastian Dröge * src/Core/Banshee.Core/Banshee.Core.dll.config: * src/Core/Banshee.Widgets/Banshee.Widgets.dll.config: Only add the required dllmaps. 2008-06-02 Jordi Mas * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Add GetString to localizable strings 2008-06-02 Sebastian Dröge * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: Rename local variable from db to scale as it holds a scale factor which was calculated from a db value and not the other way around. * src/Core/Banshee.Services/Banshee.Equalizer/EqualizerManager.cs: * src/Core/Banshee.Services/Banshee.Equalizer/EqualizerSetting.cs: 0dB is passthrough and should be used as default value. 1dB will make the sound a bit louder and can already lead to clipping in rare situations. * src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs: Make the preamp levels more consistent with the eq levels and don't always do (level / 10) * 10. 2008-06-02 Sebastian Dröge * src/Core/Banshee.Core/Banshee.Core.dll.config: * src/Core/Banshee.Core/Makefile.am: * src/Core/Banshee.Widgets/Banshee.Widgets.dll.config: * src/Core/Banshee.Widgets/Makefile.am: Add some missing dllmaps. 2008-05-30 Aaron Bockover Banshee 1.0 RC1 (0.99.3) Released 2008-05-30 Aaron Bockover * src/Extensions/Banshee.NotificationArea/Makefile.am: Build fix 2008-05-30 Aaron Bockover * configure.ac: Bump to RC1 * src/Extensions/Banshee.CoverArt/Banshee.CoverArt/CoverArtJob.cs: Remove redundant status message part 2008-05-30 Aaron Bockover * src/Clients/Nereid/Nereid/ViewContainer.cs: * src/Core/Banshee.Widgets/Banshee.Widgets/SearchEntry.cs: Make the filter menu work by inserting a query part when items are selected * libbanshee/banshee-player-pipeline.c: Disabled the equalizer yet again because the element is still too buggy in GStreamer causing static 2008-05-30 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/Queue.cs: Don't use Hyena.DateTimeUtil since it has a bug with timezone/daylight-savings that reports times an hour off in some cases. Should fix BGO #528195. 2008-05-30 Aaron Bockover * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs: Show the correct number of songs that are ripping in the status area * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Clients/Nereid/Nereid/ViewContainer.cs: Removed disk usage stuff and added footer widget support * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodTrackInfo.cs: * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/DatabaseRebuilder.cs: * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/UnsupportedDatabaseView.cs: Ported the database rebuilder and the unsupported database UI from 0.13.x so now unsupported databases can be rebuilt and users will at least know their shitty iPod won't work in Banshee because they used it with shitty iTunes. Buy an MTP device. * src/Dap/Banshee.Dap.Ipod/ThemeIcons/scalable/devices/*.svg: Added the vector versions of the iPods * src/Dap/Banshee.Dap/Banshee.Dap/MediaGroupSource.cs: * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Support the new DapInfoBar in the footer of the source to show the stats on audio, video, and data usage for each DAP * src/Dap/Banshee.Dap/Makefile.am: * src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapInfoBar.cs: Sweet display for showing disk usage stats * src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapPropertiesDisplay.cs: Start of a GUI page for DAPs, not really used yet except for the iPod when the database can't be read * src/Core/Banshee.Widgets/Banshee.Widgets/MessagePane.cs: Cleaned up to derive directly from table, less window hackery * src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs: Added support for converting terabytes and petabytes (IT WILL HAPPEN ONE DAY - GOOGLE ALREADY PROCESSES 20PB/day - JUST WAIT) * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellRating.cs: Fix NRE * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/Theme.cs: * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/RoundedFrame.cs: Support setting a pattern as the background for the rounded frame background * src/Libraries/Hyena.Gui/Hyena.Widgets/SegmentedBar.cs: More fixes, support horizontal padding, greadly simplified the segment rendering by using two pattern passes instead of N pattern passes, fixes bugs where a segment was shorter than the radius causing strange shit to happen 2008-05-30 Gabriel Burt * src/Clients/Nereid/Nereid/ViewContainer.cs: Remove the fields listed in the menu that popped up when you clicked the icon next to the search entry, since they did nothing. Will probably be added back later, and made to prepend "artist" etc fields. 2008-05-30 Gabriel Burt * src/Libraries/Hyena/Hyena.Collections/Selection.cs: Don't clear the FocusedIndex when we clear the selection - they shouldn't be so tightly linked. Fixes bug with pressing enter not playing the focused song. Fixes BGO #535587. 2008-05-30 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: Respect copy-to-library when dragging FileSystemQueue items to the library. 2008-05-30 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add property defining whether we support playlists or not. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastSource.cs: For now, at least, we don't support playlists. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Show the Add to Play Queue option if the source is a db source, not just if it's a library source. * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Hide playlist-related actions unless the primary source SupportsPlaylists. 2008-05-30 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Save and restore the expanded state of all primary sources. 2008-05-29 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinTile.cs: Make some text translatable. * src/Core/Banshee.Services/Banshee.Preferences/Page.cs: Change "Manage Extensions" tab to "Extensions". 2008-05-29 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.Services/Banshee.Sources/Source.cs: * src/Core/Banshee.Services/Banshee.Collection/AlbumListModel.cs: * src/Core/Banshee.Services/Banshee.Collection/TrackListModel.cs: * src/Core/Banshee.Services/Banshee.Collection/BansheeListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Remove a bunch of crufty code and replace a bunch of NIEXs with Log.Error. 2008-05-29 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Don't pulse the podcasts source when feeds are changes, just when items are added. * src/Libraries/Migo/Migo.Syndication/FeedUpdateTask.cs: If the feed hasn't been updated since we last checked, pass notify=false to feed.Save. * src/Libraries/Migo/Migo.Syndication/Feed.cs: Don't raise FeedsChanged when DownloadStatus set, just in Save and Delete. Add override to Save that takes bool notify arg. 2008-05-29 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Don't throw an exception when CopyTo isn't implemented, but log a warning. 2008-05-29 Gabriel Burt * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Move the NeedsReload methods into DatabaseSource so they can be used by PrimarySource and others. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Only reload when track(s) change if needed, otherwise just invalidate the cache. Should help some with performance/CPU usage when changing songs. 2008-05-29 Gabriel Burt * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Fix crasher in save-selection by being properly defensive and not assuming the item pointed to by the selection focus is still in the model. 2008-05-29 Gabriel Burt * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Fix bug where if the play queue was empty but you double clicked on it, it would go recursive/eat all your RAM. Should fix BGO #535369. 2008-05-29 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add a bool IsLocal property. If it's false and you drag tracks to a LibrarySource, it will ask the owning PrimarySource to copy the file to a given location by calling its CopyTrackTo method defined here (and implemented in each non-local subclass). * src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs: Reload the FSQ on start to make sure it shows itself if it had saved items. Also, set IsLocal = true so dragging files between the libraries and it doesn't do a file copy. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Fix bug with importing to the Library not just from the audio folders. Implement CopyTrackTo. * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Add commented out CopyTrackTo skeleton. * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Implement CopyToTrack - the nicest implementation in a way, because we get granular progress updates. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Add some NRE defense and debugging for a NRE I saw but don't understand. * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: Set IsLocal = true, and fix up AddTrack method so that if the file is from a IsLocal PrimarySource it just 'moves' it (eg changes the PrimarySourceId) but otherwise it asks the owning PrimarySource to copy the file to a location in the library folder. * src/Core/Banshee.Services/Banshee.MediaEngine/TranscoderService.cs: Set the updatd MimeType on the file after transcoding it. * src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs: Add a BuildFull convenience overload. 2008-05-29 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Widgets/SegmentedBar.cs: Add label support 2008-05-29 Gabriel Burt * src/Clients/Nereid/Nereid/PlayerInterface.cs: Fix crasher introduced by yesterday's keybinding fix. Thanks to wfarr for catching it. 2008-05-29 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs: Small rounding fix * src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerWindow.cs: Ported from glade, some fixes * src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: Only allow one instance of the equalizer to be shown; present the open version if exists * src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade: Removed the equalizer * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs * libbanshee/banshee-player-equalizer.c: White space cleanup * libbanshee/banshee-player-pipeline.c: White space cleanup and removed a redundant element link 2008-05-29 Gabriel Burt * src/Clients/Halie/Halie/Client.cs: Don't turn strings that start with *:// into local file paths. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Add method for creating a station given a lastfm:// url. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Listen for command line file arguments starting in lastfm:// and try to create new stations for them. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Handle feed:// command line files, subscribing to them. * src/Core/Banshee.Core/Banshee.Base/CoverArtSpec.cs: Add TODO 2008-05-29 Sebastian Dröge * libbanshee/banshee-player-equalizer.c: (bp_equalizer_set_gain), (bp_equalizer_get_bandrange), (bp_equalizer_get_nbands), (bp_equalizer_get_frequencies): * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: Get the number of frequency bands from the element and always take the complete gain range. Guard against some possible crashes and don't return an array that is allocated on the stack to the caller who provided us with a correctly allocated array already. * libbanshee/banshee-player-pipeline.c: (_bp_pipeline_construct): Some cleanup and only use the capsfilter hack with equalizer versions that had the clipping bug on integer samples. 2008-05-28 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcastStatusIndicator.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastItemView.cs: Change grey to mean the podcast item is old, and the blue indicator to mean the podcast item has been downloaded. Different than iTunes, but then so are we. (Plus we let you stream podcast items). * src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView_DragAndDrop.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceModel.cs: * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: Fix up drag and droppability for sources and tracks. Fix bug with sources having a border drawn around them when a dnd is cancelled. Only allowed but not-yet-functional dnd is from DapSource subclass (eg Music) to a library. 2008-05-28 Aaron Bockover * src/Clients/Nereid/Nereid/Client.cs: Force the gtk-menu-popup-delay setting to be 225ms (the GTK+ default value) to avoid a nasty bug when it is possibly set to 0ms by some gtkrc files (BGO #524706) 2008-05-28 Aaron Bockover * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdService.cs: Split audio CD preferences into a separate tab * src/Core/Banshee.Services/Banshee.Preferences/Collection.cs: * src/Core/Banshee.Services/Banshee.Preferences/Root.cs: Ensure sections and pages actually get inserted in the proper sort order * src/Libraries/Hyena/Hyena.Collections/CollectionExtensions.cs: * src/Libraries/Hyena/Hyena.Collections/Tests/RangeCollectionTests.cs: Moved SortedInsert into a new CollectionExtensions helper class 2008-05-28 Aaron Bockover * src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs: Load from the local instance argument queue at startup * src/Clients/Halie/Halie/Client.cs: Handle some crasher cases * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Work around a shitty managed DBus bug where sending an empty dictionary will crash - related to the other shitty null bug 2008-05-28 Gabriel Burt * src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs: Fix bug with removing all items and the ListView crashing. 2008-05-28 Aaron Bockover * src/Extensions/Banshee.FileSystemQueue/Banshee.FileSystemQueue/FileSystemQueueSource.cs: The new file system queue, much like the old local queue - not finished but mostly working * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Fixed source order * src/Clients/Halie/Halie/Client.cs: Support presenting the main window * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Clients/Nereid/Nereid/Client.cs: Call NotifyStartupComplete in case an instance was already running and the new process exits quickly; this prevents GTK/GDK/GNOME from spinning a cursor if the process was started through a GUI launcher * src/Core/Banshee.ThickClient/Banshee.Gui/IClientWindow.cs: New interface for client windows to expose remote functionality * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Added support for an AutoAddSource property - if it's set to false an extension source will not get added automatically to the source manager * src/Core/Banshee.Services/Banshee.ServiceStack/IDBusObjectName.cs: An interface that can be used to override the export name of a remote object * src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs: Support IDBusObjectName interface naming 2008-05-28 Gabriel Burt * src/Clients/Nereid/Nereid/PlayerInterface.cs: Add the AccelGroup back as soon as the focus leaves the focused Gtk.Entry. Fixes bug where if you searched, then click to select a track, and hit a keybinding, it wouldn't work until the second press. Thanks to Jorge Castro for investigating. 2008-05-28 Aaron Bockover * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Listen to the new DBusCommandService * src/Clients/Halie/Halie/Client.cs: Proxy files to the DBusCommandService * src/Core/Banshee.Services/Banshee.ServiceStack/DBusCommandService.cs: A light weight remote object that raises events for command line arguments and files that can be pushed into it * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Register the DBusCommandService * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Use InternalName 2008-05-28 Aaron Bockover * src/Clients/Halie/Halie/Client.cs: Added command line support for mostly fully controlling the engine and the playback controller 2008-05-28 Gabriel Burt * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Only set the AcceptableMimeTypes if they are null/haven't been set. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Parse the .is_audio_player output_formats key. The last fix required to close BGO #531769. 2008-05-28 Gabriel Burt * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Only load files from the audio_folders directories. 2008-05-28 Gabriel Burt * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs: Set the FileSize for just-ripped tracks. Fixes BGO #532077. 2008-05-28 Gabriel Burt * src/Libraries/Hyena/Hyena.Query/QueryField.cs: Fix bug with querying and smart playlists with "genre!:rock" would still match Rock. Fixes BGO #533143. 2008-05-28 Gabriel Burt * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenControls.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedSeekSlider.cs: Add method to disconnect the seek slider so it's not still listening for player engine events and trying to update itself after it's been destroyed. Fixes BGO #535213. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryTermBox.cs: Be more defensive to avoid ArrayIndexOutOfBounds. Fixes BGO #535269; 2008-05-28 Aaron Bockover * src/Clients/Halie/Halie/Client.cs: A new Banshee client that runs only only the console and proxies command line arguments into DBus calls to communicate with and control an already running Banshee client * src/Core/Banshee.Services/Banshee.ServiceStack/DBusConnection.cs: Moved the connection logic out of the service since it needs to be used before any services start at the client level for single instance reasons * src/Core/Banshee.Services/Banshee.ServiceStack/DBusServiceManager.cs: Cleaned up, use DBusConnection * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: * src/Core/Banshee.Services/Banshee.PlaybackController/IPlaybackController.cs: * src/Core/Banshee.Services/Banshee.PlaybackController/IPlaybackControllerService.cs: Worked around stupid issues in NDesk dbus so the controller actually works as a remote object now * src/Libraries/Hyena/Hyena.CommandLine/CommandLineParser.cs: Added an Arguments property and added internal logic to keep sort order preserved on the arguments so they can be iterated over in proper order 2008-05-28 Gabriel Burt * src/Extensions/Banshee.CoverArt/CoverArtJob.cs: * src/Extensions/Banshee.CoverArt/Makefile.am: * src/Extensions/Banshee.CoverArt/CoverArtService.cs: Fix the build and put C# files in their proper namespace directory. 2008-05-28 James Willcox * src/Extensions/Extensions.mds: * src/Extensions/Banshee.CoverArt/CoverArtJob.cs: * src/Extensions/Banshee.CoverArt/Banshee.CoverArt.addin.xml: * src/Extensions/Banshee.CoverArt/Banshee.CoverArt.mdp: * src/Extensions/Banshee.CoverArt/CoverArtService.cs: * src/Extensions/Makefile.am: Add Banshee.CoverArt extension which allows user-initiated and automatic cover art fetching for the entire MusicLibrary. * src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs: Close the response when we're done with it, fixes some timeout issues when fetching many things at a time. * src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedQueryJob.cs: Don't assume Track.Uri is set * build/build.environment.mk: Add refs for Banshee.CoverArt extension * configure.ac: 2008-05-28 Alexander Hixon * src/Core/Banshee.ThickClient/Banshee.Equalizer.Gui/EqualizerView.cs: Fix small bug where when loading presets from the EQ editor caused the manager to set the dB value for the preamp to 10 times what the value should have been. 2008-05-27 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellStatusIndicator.cs: Fix bug where pixbuf wasn't centered in the cell 2008-05-27 Aaron Bockover * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcastStatusIndicator.cs: Added support for the classic new item blue ball * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastItemView.cs: Implemented a cell data handler to set the opacity on text renderers * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastTrackInfo.cs: Implemented a StatusText cell and some helper properties * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastSource.cs: Added a Status column * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Added a virtual ColumnCellDataProvider method that is called as soon as a data item is bound to a cell so the view can configure the cell * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Added an opacity property 2008-05-27 Gabriel Burt * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Change InternalName from banshee to banshee-1, so we actually set the process name correctly, register the right name with MMKeys, etc. 2008-05-27 Gabriel Burt * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs: Fix bug with not saving the rating when set from either the context menu or the notification menu. 2008-05-27 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs: Support changing the renderer on columns * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellStatusIndicator.cs: Renamed to Status indicator instead of Playback indicator * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs: Updated to reflect rename of the indicator object * src/Libraries/Hyena.Gui/Hyena.Data.Gui/Column.cs: Support removing and clearing renderers * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcast.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/PodcastSubscribeDialog.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastSource.cs: Load the podcast icons from the theme, not as resources * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcastStatusIndicator.cs: A custom indicator renderer to show podcast item status 2008-05-27 Gabriel Burt * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingEntry.cs: Fix bug where preview-on-hover stars weren't cleared before showing the track context menu (or notification menu) so you'd see whatever hover stars had been there the last time you opened it (even if for another track). Fixes BGO #534460. 2008-05-27 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/IDatabaseTrackModelCache.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Fix two bugs, one I introduced in my last big podcast commit that made the play queue keep repeating the same song, and another more subtle one, in our implementation of IndexOf for findind the index of an item in playlists. Fixes BGO #534863. 2008-05-27 Aaron Bockover * src/Core/Banshee.Services/Banshee.Equalizer/EqualizerManager.cs: Handle when the equalizer XML file does not exist 2008-05-27 Michael Monreal * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastActions.cs: Use gtk-add instead of gtk-new icon in the podcast source to match the Last.fm source. Fixes BGO #534817. 2008-05-27 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastTrackInfo.cs: Return the item's PubDate as the ReleaseDate. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: If the current track is a podcast item, display "from X published Y" instead of "by X from Z". 2008-05-25 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastUnheardFilterView.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs: Fix the build. 2008-05-25 Gabriel Burt This patch adds another filter to the podcast browser - the ability to filter on all/new/old items. The default is to only show New Items, in keeping with the most common use case of podcast users. Items are marked as old after being played. They can be marked old manually via the Edit menu and track context menu, or by selecting one or more items and pressing y. * *.mdp: MonoDevelop changed some attributes across all these. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Add hack to be able to not handle FeedItem changes when doing bulk ops. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastQuery.cs: New class, commented out, will replace BansheeQuery when in podcasting. Zero work done on it so far. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastSourceContents.cs: Add another filter list view with three options: All Items, New Items, and Old Items. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastActions.cs: Change the Mark as Old keybinding to y (ala gmail archive). Implement mark old/new. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSourceContents.cs: Move go Banshee.Podcasting.Gui namespace directory. Add the all/new/old filter view. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSource.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Models/PodcastItemModel.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Models/PodcastFeedModel.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Views/PodcastFeedView.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Views/PodcastItemView.cs: Move to namespace directories. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellUnheard.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastUnheardFilterView.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastUnheardFilterModel.cs: New classes to implement the all/new/old filter. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastTrackInfo.cs: Override IncrementPlayCount and set the item as old (if not already set) when incremented. Catch exceptions in processing file w/ taglib#. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastSource.cs: Move PodcastListModel out of here. Create the all/new/old filter model and add it to the FilterModels. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastTrackListModel.cs: Moved out of PodcastSource into its own file. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastFeedModel.cs: DatabaseBrowsableListModel renamed to DatabaseFilterListModel, and ItemToFilterValue made protected. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.mdp: * src/Extensions/Banshee.Podcasting/Makefile.am: Reflect new files and moevs. * src/Extensions/Banshee.Podcasting/Resources/ActiveSourceUI.xml: Add track actions to the Edit menu (not just the track context menu). * src/Core/Banshee.ThickClient/Banshee.Gui/PersistentPaneController.cs: Use String.Format not +, properly handle setting a new Paned when one was already set (stop listening to old one's events), avoid saving when the value hasn't changed. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Give parent class a name for us (albumartist) for unique gconf position entries * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs: Take a name in the ctor so we can save positions in gconf per filtered-list type (eg podcast and albumartist, atm). Go back and implement packing the N filter views into Gtk.Paneds. Refactor LayoutLeft/Top code to be the same. * src/Core/Banshee.Services/Banshee.Collection/IFilterListModel.cs: New interface. * src/Core/Banshee.Services/Banshee.Collection/AlbumListModel.cs: Implement Clear. * src/Core/Banshee.Services/Banshee.Collection/BrowsableListModel.cs: * src/Core/Banshee.Services/Banshee.Collection/FilterListModel.cs: Rename, made to not require that the filter model itself be database backed (eg the all/new/old model is just an in-memory enum model). * src/Core/Banshee.Services/Banshee.Collection/BansheeListModel.cs: Comment out (should remove) virtual implementations that just threw NIE. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs: Move ICacheableItem up (to parent class of *TrackInfo). * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseBrowsableListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseFilterListModel.cs: Rename. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Handle the provider.Where clause being empty, add spaces around AND'd sql filter fragments from our filtering models. * src/Core/Banshee.Services/Banshee.Services.mdp: * src/Core/Banshee.Services/Makefile.am: New/moved files. * src/Libraries/Migo/Migo.Syndication/MigoModelProvider.cs: * src/Libraries/Migo/Migo.Syndication/MigoItem.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeModelCache.cs: Add using Hyena.Data because ICacheableItem moved there. * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Cosmetic changes, getting ready to refactor so sources can set/customize the fields they can be queried with. * src/Core/Banshee.Core/Banshee.Collection/AlbumInfo.cs: * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: * src/Core/Banshee.Core/Banshee.Collection/ArtistInfo.cs: Add empty ctor, inherit from CacheableItem. * src/Core/Banshee.Core/Makefile.am: * src/Core/Banshee.Core/Banshee.Core.mdp: * src/Core/Banshee.Core/Banshee.Collection/CacheableItem.cs: New class, just a simple implementation of ICacheableItem. * src/Core/Banshee.Core/Resources/translators.xml: Updated. * src/Core/Banshee.Core/Banshee.Base/CoverArtSpec.cs: Check that the escaped artist/album strings aren't empty either (not just null). * src/Libraries/Mtp/Mtp/MtpDevice.cs: Move LIBMTP_Init into static ctor, get rid of internal method that called it; wouldn't want to call it twice. * src/Libraries/Hyena/Hyena.Collections/Selection.cs: Add convenience properties for FirstIndex and LastIndex. * src/Libraries/Hyena/Hyena.mdp: * src/Libraries/Hyena/Makefile.am: * src/Libraries/Hyena/Hyena.Data.Sqlite/ICacheableItem.cs: * src/Libraries/Hyena/Hyena.Data/ICacheableItem.cs: Moved here from Hyena.Data.Sqlite. * src/Libraries/Hyena/Hyena.Data/ICacheableModel.cs: Inherit ISelctable. * src/Libraries/Hyena/Hyena.Data/ArrayModelCache.cs: * src/Libraries/Hyena/Hyena.Data/ModelCache.cs: * src/Libraries/Hyena/Hyena.Data/DictionaryModelCache.cs: Specify that T must be ICacheableItem. * src/Libraries/Hyena/Hyena.Data.Sqlite/ICacheableDatabaseModel.cs: Inheritance from ISelectable moved to parent interface. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: When restoring the selection across a reload, restore the focused index as well, if possible. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCell.cs: If the item to bind is null, set the bound object and parent object to null too. * src/Libraries/Hyena.Gui/Hyena.Widgets/AccordionPane.cs: New class, completely not done (or really started). Would be great to refactor the awesome column sizing code out of ListView so could be used by this. The idea is a new Paned-type widget with N children with min/max/relative widths etc all set, and resizing one will resize others to their min width, etc. * src/Libraries/Migo/Migo.Syndication/FeedItem.cs: Add an index to IsRead since we'll be filtering on it a lot. * data/mimetypes.txt: Add video/ogg and video/x-theora. 2008-05-25 Gabriel Burt * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Be more careful about NREs in the metadata migration. And, in case we do hit an unexpected exception, close the user-job so it doesn't stay up forever. 2008-05-23 Sebastian Dröge * libbanshee/banshee-player-pipeline.c: (_bp_pipeline_construct): Enable the equalizer again and workaround the clipping bug that will be fixed with gst-plugins-good 0.10.10. Also don't leak some elements if the equalizer plugin is not installed. 2008-05-22 Aaron Bockover Banshee 1.0 Beta 2 (0.99.2) Released 2008-05-22 Gabriel Burt * src/Libraries/Migo/Migo.Syndication/FeedItem.cs: Fix issue with feed item Guids being empty so we'd have duplicates of items. 2008-05-22 Gabriel Burt * src/Clients/Nereid/Nereid/PlayerInterface.cs: Don't set the PersistentColumnController within the composite_view check, move it to TrackListView so it's more general. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/PersistentColumnController.cs: Set loaded to false whenever reloading the source's settings. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: When setting the model, also set the source on the controller if it's a PersistentColumnController. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Fix bug with column cache not being invalidated, which caused checkboxes to try to show up in the music library after ejecting an audio cd, causing a crash. Also, don't do anything if we're already set to the controller in question. * src/Libraries/Hyena/Hyena.Data/ColumnDescription.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs: Comment out verbose logging. 2008-05-22 Aaron Bockover * configure.ac: Bumped to 1.0 Beta 2 (0.99.2) 2008-05-22 Gabriel Burt * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdService.cs: Improve eject-when-done-importing label. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellFileSize.cs: Display nothing for file sizes == 0. * src/Core/Banshee.Core/Resources/contributors.xml: Add and alphabetize names. * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/Brasero.cs: Add ... at end of Write to CD label. * NEWS: Updated for forthcoming 0.99.2 release. 2008-05-22 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Added a SelectionChanged event * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Allow the placeholders in the edit menu above the add to playlist entry * src/Core/Banshee.Core/Banshee.Base/Paths.cs: Added FindProgramInPath * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/Brasero.cs: A quick hack to allow launching selected tracks in Brasero as an audio CD project * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GnomeService.cs: Load Brasero support if it's found on the system 2008-05-22 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Offset the cell damage areas by the view adjustment values 2008-05-22 Gabriel Burt There were some pretty big performance issues with podcasting if you had quite a few items in your library. The two issues were not having proper indices (to join CoreTracks.ExternalID = PodcastItems.ItemID for example) and hitting the database to get Migo.Feed/FeedItem/FeedEnclosure objects when we already had them cached in our MigoModelProviders' dictionaries. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Schedule a delegate job to reload the feeds on startup. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add an index on CoreTracks for the ExternalID column. * src/Core/Banshee.Core/Makefile.am: * src/Core/Banshee.Core/Banshee.Core.mdp: * src/Core/Banshee.Core/Banshee.Kernel/DelegateJob.cs: New class for running parameterless methods/delegates as a Job. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Add a CreateIndex convenience method, and make FetchSingle virtual * src/Libraries/Migo/Migo.Syndication/FeedItem.cs: * src/Libraries/Migo/Migo.Syndication/FeedEnclosure.cs: * src/Libraries/Migo/Migo.Syndication/Feed.cs: Add indices, speeds up podcast queries a whole lot. * src/Libraries/Migo/Migo.Syndication/MigoModelProvider.cs: Override FetchSingle to pull directly from the dictionary and avoid the DB entirely if possible (happens very frequently). * src/Libraries/Migo/Migo.Syndication/FeedManager.cs: Only download 2 feeds at at time, not 4. 2008-05-22 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellCheckBox.cs: Save and reset the bound object on motion/pointer leave to a hover object variable and draw the checkbox as prelit if that's set 2008-05-22 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSourceContents.cs: * src/Core/Banshee.ThickClient/Banshee.ThickClient.mdp: * src/Core/Banshee.ThickClient/Makefile.am: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/ListBrowserSourceContents.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSourceContents.cs: Rename ListBrowserSourceContents to FilteredListSourceContents. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellDuration.cs: Right align durations. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Avoid passing null string to gtk. 2008-05-22 James Willcox * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTiles.cs: Set tooltips on the status label since it frequently gets ellipsized 2008-05-21 Scott Peterson * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: * src/Libraries/Migo/Migo/Migo.Syndication/FeedManager.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Feed.cs: Add IsSubscribed to Feed and modified migration code to use true as the default. 2008-05-21 Scott Peterson * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSourceContents.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Add null checks to avoid NRE. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: Removed rendering canvases. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Removed rendering canvases and fixed some bugaboos with cell event proxying. 2008-05-21 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcast.cs: Replace the disc image for 'All Podcasts' with the podcast icon. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/PodcastSubscribeDialog.cs: If the user has some text on the clipboard that starts with http, automatically put that in the url entry. Make the dialog a big wider. 2008-05-21 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: When migrating old podcast data, call SyncWithFeedItem to get a bunch of good settings (Genre, MediaAttributes, etc). 2008-05-21 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSource.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Models/PodcastFeedModel.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseBrowsableListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs: Change BrowsableListModels to automatically filter on any 'upstream' filters (ones defined before them), so upshot is albums filters on artists again. 2008-05-21 Gabriel Burt * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Migrate podcast feeds and items from 0.13.2 podcast plugin. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSource.cs: Allow sorting on download status and published date, make the default PubDate descending. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs: Allow defining the sort direction in addition to the default sort column. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Add an override for GetTrackForUri method. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Expose SortQuery via protected property, and make GenerateSortQueryPart virtual. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Skip items with non-local URIs. * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Add FileSize sorting. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Add QueryEnumerable methods. * src/Libraries/Migo/Migo/Migo.Syndication/FeedItem.cs: * src/Libraries/Migo/Migo/Migo.Syndication/FeedEnclosure.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Feed.cs: Create the model within the Init function. 2008-05-21 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: Fixed rendering problem with sort arrow if the first column was sorted. 2008-05-21 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Fixed first column being unsortable. 2008-05-21 Aaron Bockover * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdDiscModel.cs: Added an EnabledCount property * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs: Added a check box column to control the RipEnabled property on each CD track; when the EnabledCount on the model is zero, disable the rip action * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdTrackInfo.cs: When RipEnabled is set or unset, increment or decrement the EnabledCount on the model if the value actually changes * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: NRE protection * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Do not layout text if it's null or empty 2008-05-21 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/IInteractiveCell.cs: Added a PointerLeaveEvent method * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Save last cell reference so it can be sent a pointer leave event when the pointer focuses on another cell or leaves the widget entirely; computer proper cell damage rectangles for when Scott fixes area redrawing * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellRating.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellCheckBox.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListViewTestModule.cs: Implemented PointerLeaveEvent 2008-05-21 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Headers.cs: Make sure that a columns max height is not less that its min height. This fixes some aweful bugs. 2008-05-21 Mike Urbanski * src/Libraries/Migo/Makefile.am: * src/Libraries/Migo/Migo.mdp: * src/Libraries/Migo/Migo/Migo.TaskCore/AsyncCommandQueue/CommandQueueManager.cs: Added CommandQueueManager. * src/Libraries/Migo/Migo/Migo.TaskCore/GroupStatusManager.cs: * src/Libraries/Migo/Migo/Migo.TaskCore/GroupProgressManager.cs: * src/Libraries/Migo/Migo/Migo.TaskCore/AsyncCommandQueue/AsyncCommandQueue.cs: * src/Libraries/Migo/Migo/Migo.TaskCore/Migo.TaskCore.Collections/TaskCollection.cs: * src/Libraries/Migo/Migo/Migo.TaskCore/TaskGroup.cs: * src/Libraries/Migo/Migo/Migo.TaskCore/Task.cs: * src/Libraries/Migo/Migo/Migo.DownloadCore/DownloadManager.cs: * src/Libraries/Migo/Migo/Migo.DownloadCore/DownloadGroupStatusManager.cs: * src/Libraries/Migo/Migo/Migo.DownloadCore/HttpFileDownloadTask.cs: * src/Libraries/Migo/Migo/Migo.Syndication/FeedsManager.cs: Transparent architectural changes to promote looser coupling between TaskCore components (i.e. removing hacketry.) 2008-05-21 Aaron Bockover * src/Core/Banshee.Services/Banshee.Metadata/MetadataServiceJob.cs: Return the full HttpWebResponse instead of the response stream * src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs: Updated to reflect API change above * src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs: Updated to reflect API change above and to check the content type on the response to ensure it's text/xml - Rhapsody now redirects to the best-match HTML page if there is no exact match - before they just gave a 404 response 2008-05-21 Gabriel Burt * src/Extensions/Banshee.Lastfm/Makefile.am: Reorder. * src/Extensions/Banshee.Podcasting/Resources/GlobalUI.xml: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastActions.cs: Add Download All action to podcast context menu. * src/Libraries/Migo/Migo/Migo.Syndication/FeedEnclosure.cs: Avoid queueing the download if we're already download. 2008-05-20 Gabriel Burt With the amazing help of Scott Peterson, we have knocked out two subtle, but annoying Last.fm bugs. * src/Extensions/Banshee.NotificationArea/Resources/NotificationAreaMenu.xml: Add placeholder. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Implement IBasicPlaybackController, so that if we are selected as the new playback source and asked to play First or Next, we will as soon as we've loaded some songs (and we're still the playback source). * src/Extensions/Banshee.Lastfm/Makefile.am: * src/Extensions/Banshee.Lastfm/Resources/LastfmTrackActions.xml: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Load some TrackActions when we're the playback source (specifically, put Love/Hate in the notification menu). * src/Core/Banshee.Services/Banshee.Services.mdp: * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Collection/IHasTrackSelection.cs: Removed. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: TODO note. 2008-05-20 Gabriel Burt * src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs: Disable writing metadata to file for video files for now, since TagLib# seems to run at 100% and consume lots of memory when we try. 2008-05-20 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellRating.cs: Tell the renderer what opacities we like * src/Libraries/Hyena.Gui/Hyena.Gui/RatingRenderer.cs: Take the color opacities from the argument stack instead of hard coding * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingEntry.cs: Set desired opacities and added an AlwaysShowEmptyStars property; moved the motion event handler to an internal HandleMotionNotify method * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs: Proxy the menu's motion notify event to the entry so we get the sweet preview; do not activate the menu when we set the rating so the menu stays visible and we can see the rating actually changed 2008-05-20 Gabriel Burt This commit fixes a major (though one-line) bug with threading that should fix "xcb" related crashes. It improves podcast support, including automatically switching to Now Playing for videos and supporting Media RSS feeds. * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: Also switch to Now Playing if the trackinfo is updated and it is a video. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: Delay refreshing the feeds, and don't try to download artwork if feed not fetched. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastActions.cs: Implement deleting a podcast feed, feed context menu. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSource.cs: Show a message if the user creates a playlist under the Podcast source. Should be allowed, but doesn't work properly yet, so we don't allow it. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastTrackInfo.cs: Set the LicenseUri and MediaAttributes. * src/Extensions/Banshee.Podcasting/Resources/GlobalUI.xml: Add a context menu just for the All Podcasts item. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellFileSize.cs: Right align and always show one decimal point. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastImageFetchJob.cs: * src/Core/Banshee.Services/Banshee.Metadata/IMetadataLookupJob.cs: * src/Core/Banshee.Services/Banshee.Metadata/MetadataService.cs: * src/Core/Banshee.Services/Banshee.Metadata/MetadataSettings.cs: * src/Core/Banshee.Services/Banshee.Metadata/IMetadataProvider.cs: * src/Core/Banshee.Services/Banshee.Metadata/BaseMetadataProvider.cs: * src/Core/Banshee.Services/Banshee.Metadata/MetadataServiceJob.cs: * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzMetadataProvider.cs: * src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs: * src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyMetadataProvider.cs: * src/Core/Banshee.Services/Banshee.Metadata.Rhapsody/RhapsodyQueryJob.cs: * src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedMetadataProvider.cs: * src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedQueryJob.cs: * src/Core/Banshee.Services/Banshee.Services.mdp: Get rid of MetadataSettings and use NetworkDetect. Don't lookup if podcast MediaAttribute set. Fix bug with calling GTK+ things from the metadata update thread; probably the cause of the xcb crashes. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Trim artist and album names when set. * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs: Don't ignore media engine tags if the current track is not a local file. This lets GStreamer tell us the streaming file is a video so Now Playing can switch to itself. * src/Core/Banshee.Core/Banshee.Collection/IBasicTrackInfo.cs: Add ArtworkId and MediaAttributes properties. * src/Core/Banshee.Core/Banshee.Collection/LicenseInfo.cs: New file, not in build. Idea is to parse and represent Creative Commons license info. * src/Core/Banshee.Core/Banshee.Streaming/StreamTagger.cs: Handle the VideoCodec tag, setting the VideoStream attribute. * src/Libraries/Hyena/Hyena/StringUtil.cs: * src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs: Allow specifying that one decimal point should always been shown. By default, we hide the decimal point and tenths place if the number is within 0.05 of an int. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Make Delete methods virtual, add LIMIT 1 to FetchFirstMatching, and use DeleteCommand property instead of field. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Add a protected Pango.Alignment property. * src/Libraries/Migo/Makefile.am: * src/Libraries/Migo/Migo.mdp: * src/Libraries/Migo/Migo/Migo.Syndication/XmlUtils.cs: Removed, code moved into RssParser. * src/Libraries/Migo/Migo/Migo.Syndication/FeedItem.cs: Add LicenseUri property, and fix loading of the enclosure. * src/Libraries/Migo/Migo/Migo.Syndication/FeedEnclosure.cs: Tweaks. * src/Libraries/Migo/Migo/Migo.Syndication/RssParser.cs: Merge the code from XmlUtils into here, add more namespaces so can pull out Creative Commons LicenseUri and can pull the highest bitrate if there is no tag - eg for The Onion News Network. Should probably allow setting global or per-podcast preference for preferred quality if there are ever options. * src/Libraries/Migo/Migo/Migo.Syndication/MigoModelProvider.cs: Make Delete methods override; as 'new' they weren't working. * src/Libraries/Migo/Migo/Migo.Syndication/Feed.cs: Get rid of TTL and Interval properties, replace with UpdatePeriodMinutes property. Fix Delete method. * configure.ac: Enable the podcast extension by default. 2008-05-19 Aaron Bockover * build/build.rules.mk: Set ENABLE_TESTS as a define variable; this will allow unit tests to be compiled in only if Nunit is available and we are not building a release * Tons of files: Surgery to move unit tests into the proper assemblies instead of one big test assembly hack job thing; some stuff is still broken and incomplete 2008-05-19 Aaron Bockover * tests/Hyena/RangeCollectionTests.cs: Use a SortedInsert method instead of Add*N + Sort for the reference collection so it's a little faster; reduce the iterations to 75k to appease Gabe 2008-05-19 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkRenderer.cs: Added native handle NULL checks when checking for null against a Gdk.Pixbuf; for some reason we sometimes get a managed GdkPixbuf object that wraps a NULL native GdkPixbuf pointer - possibly a bug in Gdk# - though it only seems to happen when image data comes from the Net, so it could just be a case of bad things happening with bad image data 2008-05-18 Gabriel Burt * tests/Makefile.am: Patch from Bertrand Lorentz that forces tests to be run in Italian with timezone = Chicago, apparently fixing failures for him. 2008-05-17 Gabriel Burt Massive commit that brings Podcasting back to the land of the living. Our internal classes for doing track filtering and showing the browsers have been made generic, so that Podcasting can use all of them to show its Browser (with a single Podcast filter). I still do NOT recommend users use this; it needs more work to migrate 0.13.2 podcasting data, and probably has bugs that will eat your children. * src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackShuffleActions.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Update to use new BansheeActionGroup ctor and properties. * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Implement empty FilterModels property. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastService_Interface.cs: Listen to the events offered up in Migo, grab podcast artwork, and move most of the action-related code into PodcastActions.cs. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastImageFetchJob.cs: New MetadataServiceJob subclass for fetching podcast artwork. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastCore_Interface.cs: Renamed to PodcastService. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPodcast.cs: Hot new renderer for podcasts, showing artwork, name, and when last updated. Duplicates a ton of code with ColumnCellAlbum, should be refactored. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/ColumnCellPublished.cs: Override for ColumnCellDateTime to just print the short date. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastActions.cs: New class, a BansheeActionGroup subclass, for registering and handling podcast actions. Quite a few actions aren't implemented yet (like mark new/old and delete podcast). * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/PodcastFeedPropertiesDialog.cs: Get rid of bold titles, make casing consistent, don't put ""s around the description. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/PodcastSubscribeDialog.cs: Casing, grammer, get rid of expander. * src/Extensions/Banshee.Podcasting/Makefile.am: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastItem.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastTrackInfo.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/PodcastPropertiesDialog.cs: PodcastItem renamed to PodcastTrackInfo, pulls more data from FeedItem and the enclosure/file. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/ColumnCells/PixbufColumnCell.cs: Add new ctor required by new ColumnController business. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/ColumnCells/ItemActivityColumnCell.cs: Add new ctor, get rid of Video and New Item icons; just show download status * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSourceContents.cs: Change to be a ListBrowserSourceContents subclass, which is what CompositeTrackListView inherit from too. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSource.cs: Change to inherit from LibrarySource, add a XML column controller property to add Published and Download Status columns. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Models/PodcastFeedModel.cs: Change to inherit from DatabaseBrowsableListModel, which goes against the db and knows how to filter the track model. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Views/PodcastFeedView.cs: Change to inherit from TrackFilterListView and to use the new Podcast renderer. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Views/PodcastItemView.cs: Fix up columns, names. * src/Extensions/Banshee.Podcasting/Resources/ActiveSourceUI.xml: Use the normal TrackContextMenu for podcast items, but add some things to it when podcast source is active. * src/Extensions/Banshee.Podcasting/Resources/GlobalUI.xml: Get rid of PodcastItemViewPopup, add several normal Library-source context menu items, remove some items from PodcastFeedPopup that didn't make sense. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.addin.xml: Update copyright info. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.mdp: Lots of new files, ref TagLib, System.Xml, gdk. * src/Clients/Nereid/Nereid/PlayerInterface.cs: Fix assumptions regarding composite_view, and get rid of IHasTrackSelection crap. * src/Core/Banshee.Services/Banshee.Metadata.Embedded/EmbeddedQueryJob.cs: * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: * src/Core/Banshee.Services/Banshee.Metadata.MusicBrainz/MusicBrainzQueryJob.cs: * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodTrackInfo.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Rename TrackInfo.ArtistAlbumId to ArtworkId. * src/Dap/Banshee.Dap/Banshee.Dap/MediaGroupSource.cs: Fix delete from drive action label, reload after intialized. * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Add the two media sources before loading, avoiding ThreadAssist nastiness. * src/nuke-gconf-keys: New scriptlet for clearing your banshee-1 gconf keys, for testing from a clean slate. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs: Add ability to set a default column-id. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/AlbumListView.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtistListView.cs: Inherit from TrackFilterListView, getting rid of a lot of dupe code. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellFileSize.cs: New column cell renderer for file sizes. Should be changed to always spit out one decimal point and to right align, for scanability. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Move RowActivated handler here from Nereid.PlayerInterface, so that any TrackListView instance/subclass will start playing when you double click on a row. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackFilterListView.cs: New class, refactored Album and Artist code here. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellDuration.cs: Don't display anything if duration is zero. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs: Add FileSize column, make duration column a bit smaller by default. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellDateTime.cs: Add DateTimeFormat to control what format of date/time string is used. * src/Core/Banshee.ThickClient/Banshee.ThickClient.mdp: Add new files. * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: Add ShowContextMenu method, take the interface_action_service in the ctor and expose through Actions property. * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Get rid of awful TrackSelector crap. * src/Core/Banshee.ThickClient/Makefile.am: Updates. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/ListBrowserSourceContents.cs: Refactored out of CompositeTrackSourceContents, made generic so can be used with any ITrackModelSource with its arbitrary FilterModels. Means we can have different types of browsers for different sources (Music Library vs Podcasts, for instance) and they share a lot of code, and the top/left preference. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Inherit from ListBrowserSourceContents. * src/Core/Banshee.Services/Banshee.Metadata/MetadataServiceJob.cs: Fix bug where files were used before they were fully downloaded by saving to a temp file and moving once finished writing. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.Services/Banshee.Sources/ITrackModelSource.cs: Get rid of AlbumModel and ArtistModel, replaced by generic FilterModels. * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add the conditions intead of setting them, meaning we can play nicely with other conditions instead of racing. * src/Core/Banshee.Services/Banshee.Collection/BrowsableListModel.cs: New abstract subclass of BansheeListModel, that defines the Selection as a SelectAllSelection. * src/Core/Banshee.Services/Banshee.Collection/BansheeListModel.cs: Add FocusedItem getter, and make RaiseReloaded public. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs: Inherit from DatabaseBrowsableListModel * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseBrowsableListModel.cs: New abstract class for filter models. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Sort of lame, but put the actual Provider.Save/Refresh calls inside virtual methods so that PodcastTrackInfo can use its own provider. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Get rid of ReloadTrigger enum, replaced by just passing in the actual IFilterModel that triggered the reload (if any). Reload algorithm made generic, uses the ITrackModelSource's list of FilterModels, so will work with 0 - N filter models (used by PodcastSource to filter just on Podcast, atm). Get rid of built-in album/artist assumptions. * src/Core/Banshee.Services/Banshee.Services.mdp: New files. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: New migration, drop any podcast tables created using the 1.0 series - 0.13.2 data shouldn't be affected - so we can start over. Add an ExternalId column to CoreTracks. * src/Core/Banshee.Services/Banshee.Database/BansheeModelCache.cs: Don't require BansheeModelProvider since SqliteModelProvider suffices fine. * src/Core/Banshee.Services/Makefile.am: New files. * src/Core/Banshee.Core/Resources/translators.xml: Updated. * src/Core/Banshee.Core/Banshee.Base/CoverArtSpec.cs: Make the actual escaping code public (so we can use it to make podcast artwork ids). Log a message stating where the album art directory is. * src/Libraries/Hyena/Hyena.Collections/Selection.cs: Add a FocusedIndex property, factored out of ListView, so that we can get to it so long as we can get to the Selection, instead of having to get to the ListView. * src/Libraries/Hyena/Hyena/Log.cs: Add WarningFormat. * src/Libraries/Hyena/Hyena.Query/RelativeTimeSpanQueryValue.cs: Added convenience factory method RelativeToNow. * src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs: Determine the best factor after having our value set. * src/Libraries/Hyena/Hyena.Data/IFilterable.cs: Rename Filter to UserQuery. * src/Libraries/Hyena/Hyena.Data/IListModel.cs: Add non-generic IListModel interface. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Make Save, Load, and Delete methods virtual, change FetchFirstMatching to not duplicate FetchAllMatching code, change both to accept params, fix bug with Refresh, and add protected PrimaryKeyFor method. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/IListView.cs: Add non-generic interface. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCell.cs: Add useful debugging logging if a specified property doesn't exist. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Change to use Selection.FocusedIndex. * src/Libraries/Migo/Migo.mdp: * src/Libraries/Migo/Makefile.am: New files, only build if --enable-podcast set. * src/Libraries/Migo/Migo/Migo.Net/AsyncWebClient.cs: Add a public static UsreAgent property so we can set it to Banshee.Web.Browser.UserAgent. Get rid of many try {} catch {} statements to avoid swallowing exceptions. * src/Libraries/Migo/Migo/Migo.TaskCore/AsyncCommandQueue/AsyncCommandQueue.cs: * src/Libraries/Migo/Migo/Migo.DownloadCore/DownloadManager.cs: * src/Libraries/Migo/Migo/Migo.TaskCore/TaskGroup.cs: Fix formatting, logging. * src/Libraries/Migo/Migo/Migo.DownloadCore/HttpFileDownloadTask.cs: Don't set the UserAgent here. * src/Libraries/Migo/Migo/Migo.Syndication/FeedsManager.cs: Separated most of this code out into FeedManager and EnclosureManager. This class was trying to be too many things to too many users. * src/Libraries/Migo/Migo/Migo.Syndication/XmlUtils.cs: Add GetNamespaceManager method, and GetITunesDuration method. * src/Libraries/Migo/Migo/Migo.Syndication/FeedItem.cs: Default active to true, change provider to be a MigoModelProvider, add static Exists (guid) method, many of fixes. * src/Libraries/Migo/Migo/Migo.Syndication/FeedEnclosure.cs: Change provider and inherit from MigoItem, fix up SetFileImpl method, database properties, etc. * src/Libraries/Migo/Migo/Migo.Syndication/Feed.cs: Inherit from MigoItem, uset MigoModelProvider, fix up db properties, add method that starts automatically downloading any new items when appropriate. * src/Libraries/Migo/Migo/Migo.Syndication/Rfc822DateTime.cs: Fix so parses some dates it wasn't parsing before. * src/Libraries/Migo/Migo/Migo.Syndication/OpmlParser.cs: New class, not at all finished, for parsing OPML files. * src/Libraries/Migo/Migo/Migo.Syndication/RssParser.cs: Get the image url from itunes:image first, since it's probably higher quality. Get the keywords and category properties too. Get the duration for enclosures, if set. * src/Libraries/Migo/Migo/Migo.Syndication/MigoModelProvider.cs: A subclass of SqliteModelProvider with an interesting twist: every item that is retrieved is cached in a Dictionary indexed by DbId, which allows us to combine the power of Migo's downloading ability (which wouldn't work if there were multiple instances of a FeedItem, for example, that all represented the same actual item/db row, with the power of SqliteModelProvider for finding items. So you can do Feed.Provider.FetchAllMatch ("LastDownloadedAt < ?', some datetime) and be returned the already-instantiated objects. * src/Libraries/Migo/Migo/Migo.Syndication/FeedUpdateTask.cs: Fixed up. * src/Libraries/Migo/Migo/Migo.Syndication/EventArgs/FeedItemEventArgs.cs: Chagned, but I don't think this is used anymore. Should be culled. * src/Libraries/Migo/Migo/Migo.Syndication/FeedManager.cs: * src/Libraries/Migo/Migo/Migo.Syndication/EnclosureManager.cs: New classes taking over for things FeedsManager did before (namely, managing downloads and firing off events). * src/Libraries/Migo/Migo/Migo.Syndication/MigoItem.cs: Simple abstract class that implements ICacheableItem and has an abstract DbId property. * build/build.environment.mk: Tidy up MIGO deps. * tests/Makefile.am: Add Migo/XmlTests. * tests/Migo/XmlTests.cs: Add tests for itunes:duration parsing and Rfc822DateTime parsing. * tests/BansheeTests.cs: add TransformPair struct. 2008-05-17 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs: Added Genre list population back to the track editor (BGO #533530) 2008-05-17 Aaron Bockover * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Bind to a private rating field and call Save in the property setter * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs: Add the rating column with the new hot rating cell 2008-05-17 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/Column.cs: FIxed improper ctor chain; set Min/MaxWidth if a cell is ISizeRequestCell when packing by calling GetSize on the cell * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCell.cs: Allow setting BoundObject on a cell, added a BoundObjectParent that can be used to track which data item (instead of which data property on an item) is being bound * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellCheckBox.cs: Implemented a check box interactive cell renderer that binds to boolean properties * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellRating.cs: Implemented a rating cell renderer based on the new rating renderer * src/Libraries/Hyena.Gui/Hyena.Data.Gui/IInteractiveCell.cs: Interface for cells that would like to have keyboard/mouse events proxied to them * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ISizeRequestCell.cs: Interface for cells that actually care about their size and refuse to adapt to what the view can provide * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Implemented first pass at cell level interaction - namely through ProxyEventToCell which currently supports transforming and proxying Gdk.EventButton and Gdk.EventMotion events from the view to a cell; also fix a bunch of potential NRE when the model selection is null * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Fix a bunch of potential NRE when the model selection is null * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListViewTestModule.cs: Started a test module for stressing functionality of the ListView * src/Libraries/Hyena.Gui/Hyena.Gui/RatingRenderer.cs: A new renderer to do all drawing/logic for things that want to embed a rating * src/Libraries/Hyena.Gui/Hyena.Widgets/ComplexMenuItem.cs: Moved to Hyena.Widgets * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingEntry.cs: Moved to Hyena.Widgets and largely rewritten to use the new RatingRenderer * src/Libraries/Hyena.Gui/Hyena.Widgets/RatingMenuItem.cs: Moved to Hyena.Widgets and do not call into the EventBox rendering hack since the RatingEntry no longer derives from EventBox * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs: * src/Core/Banshee.ThickClient/Banshee.Query.Gui/RatingQueryValueEntry.cs: * src/Core/Banshee.Widgets/Banshee.Widgets/CustomActionProxy.cs: * src/Core/Banshee.Widgets/Banshee.Widgets/RatingActionProxy.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Updated to reflect the move of Rating stuff to Hyena.Gui 2008-05-17 Aaron Bockover * src/Libraries/Hyena/Hyena.Collections/RangeCollection.cs: Made the indexer code more sexy so it doesn't look like I wrote it at 4:30 in the morning, ensure that negative indexes throw IOORE * tests/Hyena/RangeCollectionTests.cs: Added an indexer stress test and some extra specific tests for ensuring IndexOutOfRange is thrown when it should be 2008-05-17 Aaron Bockover * src/Libraries/Hyena/Hyena.Collections/RangeCollection.cs: Fixed the horribly broken indexer that looked like a late night copy and paste of the IndexOf logic but never worked - we don't use it, so it's never been a problem, but the unit test had always complained - yay tests * tests/Hyena/RangeCollectionTests.cs: Improved test for the indexer 2008-05-17 Aaron Bockover Patch from Bertrand Lorentz (BGO #533099) * src/Libraries/Hyena/Hyena.Collections/RangeCollection.cs: Fix a dyslexia bug in the NET_1_1 version of the array resize code * build/build.rules.mk: Define NET_2_0 on the build so we end up using the better version of RangeCollection - whoops * tests/Hyena/RangeCollectionTests.cs: Added test to check for the NET_1_1 array resize bug fixed above 2008-05-14 Aaron Bockover * src/Core/Banshee.Core/Banshee.Base/FileNamePattern.cs: Added %year% from stable 2008-05-14 Aaron Bockover * src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs: Defined a column controller for video sources * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellPlaybackIndicator.cs: Added the proper ctor * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs: Made the default column properties instance properties since they can now be modified and should not be global * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: If a source has an XML column controller definition but not a column controller object, load the object from the XML and persist/use it * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/XmlColumnController.cs: A new column controller that extends the default controller and allows new columns to be fully defined, existing ones to be modified or removed * src/Libraries/Hyena.Gui/Hyena.Data.Gui/SortableColumn.cs: Allow SortKey to be set * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceComboBox.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Use a common cell layout data handler delegate 2008-05-13 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/DefaultColumnController.cs: Implemented a proper default column controller with the columns as static properties so derived implementations don't have to redefine common columns * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Use the new DefaultColumnController; check the active source (walking up to the root parent) for a column controller to use instead of the default; if none found, use the default * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmColumnController.cs: Implement a custom column controller for Last.fm derived * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Set LastfmColumnController on the source * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: Make SetModel virtual * data/audio-profiles/wavpack.xml.in: Small fix to the pipeline * src/Core/Banshee.Core/Resources/contributors.xml: Added the Andy 2008-05-12 Gabriel Burt * src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs: Patch from Nicholas Parker working around bug in TagLib# where setting the genre to string [] {null} would crash. * tests/Banshee.Core/TaglibReadWriteTests.cs: Unit test for above fix. 2008-05-09 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceComboBox.cs: Set ParentWidget on the renderer to self * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs: Fixed small selection rendering regression and fix the state calculation for when the widget is a combo box and is prelit but not showing the menu 2008-05-09 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceComboBox.cs: Moved from MiniMode; use the new SourceModel and use the SourceRowRenderer * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceModel.cs: Pulled out model specific code from SourceView into a new TreeModel subclass that SourceView and SourceComboBox can use * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs: Implemented proper CellRendererState -> StateType mapping so the renderer works properly inside other widgets (i.e. GtkComboBox); add some default sizing for non TreeView widgets * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView_DragAndDrop.cs: Fixed up to use the new SourceModel * src/Extensions/Banshee.MiniMode/Banshee.MiniMode/MiniModeWindow.cs: Fixed up to use the new SourceComboBox 2008-05-09 Gabriel Burt This commit greatly improves performance when editing/saving track information and on each track transition by avoiding many unnecessary source reloads. * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs: Improve auto-rip label. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedSeekSlider.cs: Avoid changing to 'Idle' when transitioning between songs, and avoid jumpiness by not setting the duration until the first Iteration event. Makes things much smoother. * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/TrackEditor.cs: Fix the horrible save performance by avoiding reloading until after having saved all the tracks, instead of after each one. Fix whitespace. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Change OnTracksChanged to take an array of QueryFields that were modified. Add protected InvalidateCaches method used to clear the managed cache for the track/artist/album model, but not reload it (eg the display data has changed, but sort order/contents have not). * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Change TracksChanged to QueryField array. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs: Remove ClearCache method, and add InvalidateCache method. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Specify which fields are updated in the IncrementPlay/SkipCount methods to allow sources to optimize whether they need to reload b/c of the change. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Add InvalidateCache method, and expose the currently parsed QueryNode, if any. * src/Core/Banshee.Services/Banshee.Collection.Database/IDatabaseTrackModelCache.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Add ClearManagedCache method. * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: In TrackChanged handler, only Reload if we are actually affected by the change - so if the change was play count, and we're not sorted by it, querying on it, or if we're a smart playlist, defined by it, then just InvalidateCaches. * src/Libraries/Hyena/Hyena.Query/QueryOrder.cs: * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: Associate a QueryField with QueryOrders. * src/Core/Banshee.Widgets/Banshee.Widgets/StreamPositionLabel.cs: Avoid updating twice as often as needed. Use String.Format instead of +. * src/Libraries/Hyena/Hyena.Query/QueryNode.cs: Add GetTerms and GetFields convenience methods. 2008-05-08 Gabriel Burt * src/Libraries/Hyena.Gui/Hyena.Widgets/SmoothScrolledWindow.cs: Increase both accel and decel, and fix bug where things would bounce back and forth, overshooting the target. 2008-05-08 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: Fix issue with parent source not getting expanded when it should. MTP and iPod sources should autoexpand properly now. 2008-05-08 Gabriel Burt * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Fix bug with updating/removing the album when removing a track. 2008-05-08 Gabriel Burt * src/Libraries/Mtp/Mtp/MtpDevice.cs: Add mimetype for .m4a files. 2008-05-08 Sebastian Dröge * src/Libraries/Hyena.Gui/Makefile.am: Dist and install Hyena.Gui.dll.config. 2008-05-07 Gabriel Burt * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdService.cs: Add AutoRip and EjectAfterRipped schemas and preferences. Fix the mnemonic for the profile chooser. * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs: If AutoRip is true, start ripping when the CD is loaded (assuming it's not already in the library). When a CD is done importing, eject if EjectAfterRipped is true. * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs: Add a Finished event. * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/WidgetFactory.cs: * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/SectionBox.cs: * src/Core/Banshee.Services/Banshee.Preferences/Root.cs: Add a optional MnemonicWidget property. If not set, returns the DisplayWidget, otherwise can be used to override the mnemonic widget. * src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs: Always SetDescription, so even if a user doesn't yet have a preference, the description shows the currently selected option. * build/m4/banshee/dap-mtp.m4: * build/m4/banshee/dap-ipod.m4: * configure.ac: Make iPod and MTP support the default, such that if you don't have ipod-sharp or libmtp, you will get a configure error unless you pass --disable-ipod/mtp. Should help clarify what we view a default Banshee install to include. 2008-05-06 Aaron Bockover Banshee 1.0 Beta 1 (0.99.1) Released 2008-05-06 Aaron Bockover * configure.ac: * src/Dap/Banshee.Dap.Ipod/Makefile.am: * src/Extensions/Banshee.BooScript/Makefile.am: * src/Extensions/Banshee.MiniMode/Makefile.am: Fixed last build issues 2008-05-06 Gabriel Burt * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Fix bug with play queue getting recreated each time. Ugh. 2008-05-06 Aaron Bockover * src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastCore.cs: Build fixes 2008-05-06 Gabriel Burt * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: * src/Extensions/Banshee.NotificationArea/Resources/NotificationAreaMenu.xml: * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Put the Next action above the Previous action. 2008-05-06 Aaron Bockover * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Make the progress notification for iPod syncing much better 2008-05-06 Gabriel Burt * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Parse the .is_audio_player file, except not setting the output formats yet. Install some dap properties. * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Add DapProperties property that the Dap dialog shows. * src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapPropertiesDialog.cs: Show the DapProperties. * src/Backends/Banshee.Hal/Banshee.HalBackend/Device.cs: Cache the uuid. * src/Backends/Banshee.Hal/Banshee.HalBackend/Volume.cs: Catch property exception for volume that was suddenly removed. 2008-05-06 Gabriel Burt * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Fix a bug where we attempted to transcode video files. We don't support that yet. 2008-05-06 Gabriel Burt * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Fix bug just introduced with mass storage support via .is_a_p files. * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Get rid of silly non-DAP fallbacks for generic name and icons. 2008-05-06 Gabriel Burt * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Ignore iPods unless they have a .is_audio_player file. * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Remove unnecessary override and OnTracksAdded call. 2008-05-06 Aaron Bockover * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Revert CanPlay to not be smart with playback errors; it's probably best if the engine just be allowed to try whenever a track is requested to play * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Consolidated Open and OpenPlay logic into a single method to eliminate duplication * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Implemented track remove support 2008-05-06 Gabriel Burt * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Style. * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Fix bug that caused mass storage DAPs to be ignored. 2008-05-06 Gabriel Burt * src/Backends/Banshee.Hal/Banshee.HalBackend/Volume.cs: Catch exceptions while trying to identify a HAL device as a volume. Should fix BGO #528481. 2008-05-06 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Make SetStatus and HideStatus methods public. * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Move loading of tracks into LoadFromDevice method. * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Override SetStatus and HideStatus methods to set it on the parent source and all of our children. 2008-05-06 Gabriel Burt * src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs: Don't delay add and delete user jobs, since removable devices are slow and we might as well show the progress bars asap. * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Make sure the device mapping doesn't happen on the main thread. Aaron will love this. MTP's DeviceInitialize method can be very slow (10+ seconds) and we definitely shouldn't block the ui for it. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Make sure adding files to a primary source happens not on the main thread. Add protected properties for deciding whether to delay the add/delete jobs. 2008-05-06 Gabriel Burt * src/Libraries/Mtp/Mtp/Album.cs: Be more careful with native code. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Avoid NRE. 2008-05-05 Gabriel Burt * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/AlbumSet.cs: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpDap.cs: Removed old files. * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Add and remove album art as needed when adding/removing files. * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Move DeleteSelectedTracks handler to Abstract class so is inherited by SmartPlaylistSource too. * src/Libraries/Mtp/Mtp/Album.cs: Add public GetById method. * src/Libraries/Mtp/Mtp/MtpDevice.cs: Add FileType to mimetype method. 2008-05-05 Aaron Bockover * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Implement the new iPod syncing model - it's mostly done, but still some glitches that need to be addressed * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodTrackInfo.cs: Implemented full two way copy of database tracks to iPod tracks and back again - track media attributes are preserved in both directions, so this allows for video syncing - yes, I said video syncing. You can now use Banshee to manage videos on your iPod. Epic. Stop using iPods though, they suck. Buy an MTP device, save a seal, vote Obama. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView_DragAndDrop.cs: Removed the thread stuff which needs to be moved to DapSource (not done, so don't tell Gabe) 2008-05-05 Gabriel Burt * src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs: Move favorites before unwatched. * src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs: Moved Unhear to defaults, and Unrated to predefined. Added Recently Added. * NEWS: Some updates for the upcoming release. 2008-05-05 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellPlaybackIndicator.cs: Be more defensive with checking for null/cast errors. 2008-05-05 Gabriel Burt * src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs: Heh, whoops, unwatched should be plays=0 not plays=4. 2008-05-05 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Query.Gui/PlaylistQueryValueEntry.cs: * src/Core/Banshee.ThickClient/Banshee.Query.Gui/SmartPlaylistQueryValueEntry.cs: Better handle there not being any playlists or smart playlists. * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs: Fix loading a predefined playlist into the editor. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: If the user has no smart playlists and we've never done this before, create the default smart playlists for a primary source. * src/Core/Banshee.Services/Banshee.Library/VideoLibrarySource.cs: Define some default smart playlists. * src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs: Tweak a default smart playlist. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryTermBox.cs: Fix bug with not setting the value of the editor entry to the value of the saved smart playlist. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryTermsBox.cs: When setting the QueryNode condition tree, clear out any old conditions that may be in the editor already. 2008-05-05 Aaron Bockover * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Moved the smart playlist purging to a separate method * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Load the DbId when it is first requested 2008-05-05 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: 2008-05-05 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Fix up disposing. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Get rid of IDisposable in DatabaseSource, reflect changes in subclasses. * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: When the SourceManager is being disposed, recursively dispose any extension sources. Also dispose them when their extension goes away. Do not dispose other sources; leave that to whoever created them. * src/Core/Banshee.Core/Banshee.Streaming/SaveTrackMetadataJob.cs: Remove WriteLines. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: Add public static LogAll property that can be enabled/disabled at run time to turn on logging/timing for every single SQL command. * tests/ConsoleUi.cs: Modified to not use a separate test AppDomain, allowing us to fully load Banshee from within a unit test. * tests/Banshee.ThickClient/GuiTests.cs: Still commented out, some tweaks though. * tests/Makefile.am: Put the assemblies into DIR_BIN, and run from there; simplifies the MONO_PATH and mono.addins business when running tests. * tests/Banshee.Core/TaglibReadWriteTests.cs: Update paths. * tests/BansheeTests.cs: Tweaks to the StartBanshee stuff, not used yet. 2008-05-05 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Widgets/SegmentedBar.cs: Added a ShowReflection property to enable/disable the reflection 2008-05-05 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Widgets/SegmentedBar.cs: Minor fixes 2008-05-04 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Widgets/SegmentedBar.cs: Added a spin entry to change the height for testing; queue a resize when the bar height changes 2008-05-04 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTile.cs: Only update the progress if it hasn't changed and if we're already pulsing and at 0 * src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs: Show the number of files walked while building the total count so it doesn't look like we might have frozen while walking a huge directory tree * src/Libraries/Hyena.Gui/Hyena.Gui/CairoExtensions.cs: Added some Rgb uint->cairo color utility functions, make ColorShade preserve alpha * src/Libraries/Hyena.Gui/Hyena.Widgets/SegmentedBar.cs: Started working on a hot disk usage bar for DAP; very incomplete - run 'make hg' to see 2008-05-04 Aaron Bockover * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: Added error handling so that no more than 20 attempts will be made to play from the active source if those attempts result in an error * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Bind to the PlaybackError property to the LastStreamError column so any errors (missing codec, resource not found, etc.) are persisted in the database * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Added a migration for adding the new LastStreamError column on CoreTracks * src/Core/Banshee.Services/Banshee.MediaEngine/NullPlayerEngine.cs: Updated to reflect API changes in the base class * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEvent.cs: Added the loading state * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs: Make Play/Pause abstract instead of virtual; do not set any event or state in Open and make the underlying engine responsible for these * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Changed the definition of IsPlaying to mean the engine is in one of playing, paused, or loaded states * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: made CanPlay return the set value and whether or not there is a playback error set * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: Set the engine states based on state transitions from GStreamer proper instead of synthesizing so many based on API * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellPlaybackIndicator.cs: Indicate an error if one is set on the track * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Updated to act on proper engine state * libbanshee/banshee-player.c: * libbanshee/banshee-player-pipeline.c: * libbanshee/banshee-player-missing-elements.c: Add some playbin checks to prevent warning messages from being spewed when playbin is torn down in some cases, particularly when there is a pipeline error 2008-05-02 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Save the cached count after every reload. 2008-05-02 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Set the sensitive property on the cell context * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Render insensitive rows by changing the normal text color's alpha * src/Libraries/Hyena.Gui/Hyena.Data.Gui/CellContext.cs: Added a Sensitive property since Gtk.StateType sucks and we care to preserve the selection state for insensitive rows 2008-05-02 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Set Love/Hate as Important so text shows up; accidentally removed. * src/Core/Banshee.ThickClient/Banshee.SmartPlaylist.Gui/Editor.cs: Get the list of predefined smart playlists from the PrimarySource. Show the SmartPlaylistDescription to make a prettier, more informative TreeView of predefined options. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add Default/NonDefault/PredefinedSmartPlaylist properties. * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Remove unnecessary ConfigurationClient.Initialize (). * src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs: Override the SmartPlaylist properties. * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistDefinition.cs: New struct that holds the definition of a smart playlist (and a description), and that has a method for producing a SmartPlaylistSource from itself. * src/Core/Banshee.Core/Banshee.Configuration/ConfigurationClient.cs: Do not require Initialization call, instead do it implicitly/lazily. * src/Core/Banshee.Core/Banshee.Base/Paths.cs: Use GetExecutingAsembly intead of GetEntryAssembly in attempt to get Nereid-within-unit-test working. * src/Libraries/Hyena/Hyena.CommandLine/CommandLineParser.cs: Allow programatically setting a command line option's value. * build/build.environment.mk: Add LINK/DEPS vars for Nereid so unit tests can link against it. * tests/Hyena/RangeCollectionTests.cs: * tests/Hyena/DbBoundType.cs: * tests/Hyena/SqliteModelProviderTests.cs: * tests/Hyena/CryptoUtilTests.cs: * tests/Hyena/SqliteCommandTests.cs: * tests/Hyena/StringUtilTests.cs: * tests/Banshee.Services/PlaylistFormatTests.cs: * tests/Banshee.Core/FileNamePatternTests.cs: * tests/Banshee.Core/KernelTests.cs: * tests/Hyena/SelectionTests.cs: Add copyright information. * tests/Hyena/QueryTests.cs: Subclass from BansheeTests, and move the AssertForEach to it. * tests/Hyena/BansheeTests.cs: New abstract class that provides AssertForEach method, and some new methods for progamatically starting Banshee (currently unused, not working). * tests/Banshee.ThickClient/GuiTests.cs: New class for testing starting banshee from unit test. Currently commented out. * tests/Banshee.Services/SmartPlaylistTests.cs: New tests to ensure all predefined smart playlists can be created successfully. Currently commented out. * tests/Makefile.am: Add new test classes. * tests/Banshee.Core/TaglibReadWriteTests.cs: Subclass from BansheeTests and move some static initialization there. 2008-05-02 Gabriel Burt * src/Libraries/Hyena/Hyena.Query/QueryField.cs: Fix bug with queries on fields that have a custom 'column' (eg maybe they search two different columns at once, like MimeTypeField does) not having necessary parenthesis around them. 2008-05-02 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Gui.Theming/GtkTheme.cs: Explicitly destroy gradient patterns and tweak the selection gradient a bit 2008-05-02 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: Use ColumnCellPositiveInt to show the year so 0 will show as empty 2008-05-02 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs: Do all layout rendering directly to Cairo, not through GTK 2008-05-02 Gabriel Burt * tests/Hyena/SqliteCommandTests.cs: Update to not use ApplyValues; fix the build. 2008-05-02 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Set SourceManager.Dispose property to true so that the SourceManager knows to Dispose us, even though we're an extension source. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Listen to the PlaybackController.SourceChanged event, and disable shuffle/repeat when switching to a StationSource, and restore when switching away and Disposing (so that the original state is not overwritten in gconf). Fixes BGO #526033. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Fix silly bug that caused the playback source to switch to the Music Library erroneously. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Load the tracks in the LoadFromDevice method, and turn threading off on the importer since LoadFromDevice is already called from a thread. * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: Comment out ImportPlaylist stuff that's not done. * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackShuffleActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: Add Sensitive override that triggers the Changed event. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/RepeatActionButton.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/NextButton.cs: Set the sensitivity of the button to the ActionGroup's sensitivity. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Fix bug where we had a SqliteModelProvider created for every DatabaseSource instead of sharing one. * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Dispose extension sources that have the property SourceManager.Dispose == true. * tests/Hyena/QueryTests.cs: * src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs: * src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs: * src/Core/Banshee.Services/Banshee.Sources/DurationStatusFormatters.cs: * src/Libraries/Hyena/Hyena/StringUtil.cs: Renamed FormatDouble to DoubleToTenthsPrecision. Also changed it to use Math.Round and fixed bug where 14.96 would show up as 15.0 instead of 15. Also changed it to use the N string formatter, which causes separators to be shown, eg 1,000 * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Remove superflous assignment. * src/Core/Banshee.Services/Banshee.Collection/ImportManager.cs: Add a Threaded bool property, and if false don't use the ThreadPool. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Configuration/DatabaseConfigurationClient.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Do not explicitly call ApplyValues, but pass the values in the Query or Execute method calls. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseImportManager.cs: Comment out use of transactions for now; were causing deadlock; * src/Core/Banshee.Services/Banshee.Playlist/PlaylistFileUtil.cs: Comment out unfinished playlist import code. * tests/Hyena/StringUtilTests.cs: Add tests for DoubleToTenthsPrecision and DoubleToPluralInt methods. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: Make ApplyValues an internal method, accessibly implicitly by passing params to the Query or Execute methods. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Lock the command before calling ApplyValues. Comment out the transaction methods, since they can cause deadlock. * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Better logging. * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: Rename member, add protected Arrow and ToggleButton properties so that their sensitivity can be changed, etc. 2008-05-02 Aaron Bockover * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: New event system for raising handlers based on a desired event mask; handler masks can be modified, handlers can be removed, and handlers can be prepended or appended to the event handler list * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEvent.cs: New player event definitions and argument classes * src/Core/Banshee.Services/Banshee.MediaEngine/IPlayerEngineService.cs: * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngine.cs: * src/Backends/Banshee.GStreamer/Banshee.GStreamer/PlayerEngine.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/GtkNotificationAreaBox.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/INotificationAreaBox.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: * src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks/BookmarksService.cs: * src/Extensions/Banshee.MiniMode/Banshee.MiniMode/MiniModeWindow.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellPlaybackIndicator.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/AlbumListView.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedSeekSlider.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: Updated to use the new player events API 2008-05-01 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtistListView.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/AlbumListView.cs: * src/Extensions/Banshee.MiniMode/Banshee.MiniMode/SourceComboBox.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView.cs: * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceRowRenderer.cs: * src/Clients/Nereid/Nereid/PlayerInterface.cs: Use NextSource instead of Source. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue.mdp: Updated. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Change to the play queue on the next transition after adding items to it. Fixes BGO #524637. * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs