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: Clean up method. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Override ToString = Name * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: Add NextSource property, which you can set to change the source on the next transition. * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Add IsPlaying () convenience method. 2008-05-01 Gabriel Burt * src/Libraries/Migo/*: Move some files up into their namespace folder. 2008-05-01 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellDuration.cs: Fancy rounding commented out since it's not consistent with what is done in libbanshee. Fixes BGO #520648. 2008-05-01 Gabriel Burt * build/m4/banshee/dap-mtp.m4: * configure.ac: Enable MTP support by default (if libmtp is available). 2008-05-01 Gabriel Burt * build/build.environment.mk: * configure.ac: * src/Extensions/Banshee.MiniMode/Banshee.MiniMode.addin.xml: * src/Extensions/Banshee.MiniMode/Banshee.MiniMode.mdp: * src/Extensions/Banshee.MiniMode/Banshee.MiniMode/MiniModeService.cs: * src/Extensions/Banshee.MiniMode/Banshee.MiniMode/MiniModeWindow.cs: * src/Extensions/Banshee.MiniMode/Banshee.MiniMode/SourceComboBox.cs: * src/Extensions/Banshee.MiniMode/Banshee.MiniMode/SourceModel.cs: * src/Extensions/Banshee.MiniMode/Makefile.am: * src/Extensions/Banshee.MiniMode/Resources/minimode.glade: * src/Extensions/Extensions.mds: * src/Extensions/Makefile.am: Patch from Bertrand Lorentz porting mini mode from stable, fixes BGO #527412. The extension is built by default, but must be enabled in the Preferences dialog. 2008-04-30 Aaron Bockover * build/m4/banshee/boo.m4: Require Boo 0.8.1 * src/Extensions/Banshee.BooScript/Makefile.am: Do not try to build if we don't actually have the Boo requirement met * src/Extensions/Banshee.BooScript/Resources/duration-status-formats.boo: Fixed header 2008-04-30 Aaron Bockover * build/build.environment.mk: * build/m4/banshee/boo.m4: * configure.ac: Build stuff for the BooScript extension * src/Core/Banshee.Core/Banshee.Base/Paths.cs: Added GetTempFileName * src/Core/Banshee.Services/Banshee.MediaEngine/TranscoderService.cs: Use the new Paths.GetTempFileName * src/Core/Banshee.Services/Banshee.Sources/DurationStatusFormatters.cs: Created a new collection that holds formatter handlers and add our default formatters; this allows scripts and extensions can add their own * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Move the default duration formatters into DurationStatusFormatters and create a static instance of that collection to use for sources * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodTrackInfo.cs: * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Small progress on syncing, not much * src/Libraries/Hyena/Hyena.CommandLine/CommandLineParser.cs: Require arguments taking value to have the --arg=value form on the command line and treat all non -- starting arguments as 'files' * src/Extensions/Banshee.BooScript/Banshee.BooScript.addin.xml: * src/Extensions/Banshee.BooScript/Banshee.BooScript/BooScriptService.cs: Ported the Boo scripting support from old Banshee * src/Extensions/Banshee.BooScript/Resources/duration-status-formats.boo: * src/Extensions/Banshee.BooScript/Resources/filename-transform.boo: The first two Boo scripts that work on the new Banshee 2008-04-30 Gabriel Burt * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Reload the music and video child sources after creating them, since Reloads don't happen automatically any more. 2008-04-30 Gabriel Burt * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Don't begin/commit a transaction or run InnerMigrate if the version is current. Use Hyena.Log instead of WriteLines. * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Got rid of unnecessary if. * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Add better logging for when a required service fails to start. * src/Core/Banshee.Services/Banshee.SmartPlaylist/Migrator.cs: * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Dispose all non-extension sources and their children, but don't dispose extension sources. * src/Extensions/Banshee.PlayQueue/Makefile.am: * src/Extensions/Banshee.PlayQueue/Resources/Banshee.PlayQueue.addin.xml: Move addin.xml file up from Resources * src/Libraries/Hyena/Hyena/Log.cs: Make showUser default to false everywhere. * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtworkManager.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Explicitly set showUser = true. 2008-04-30 Gabriel Burt * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Add a ClientStarted event, which is raised for clients that are already started and for new ones. * src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs: Add a IsStarted property, and change the Started event to use a Action<> handler. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Use new Application.ClientStarted event, and handle in method, not anonymous delegate. 2008-04-29 Gabriel Burt * src/Backends/Banshee.Unix/Banshee.IO.Unix/Directory.cs: Comment style. * src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs: * src/Clients/Nereid/Nereid/Client.cs: Use Log.InformationFormat instead of Log.Information (String.Format * src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs: Add a log statement. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Get rid of unnecessary thread, and move reload all from anonymous delegate to private method. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Make OnUserNotifyUpdated protected and add public NotifyUser method. 2008-04-29 Gabriel Burt Prior to this commit, all sources (playlists, etc) were reloaded on startup, meaning startup got slower and slower the more playlists you had. This is no longer the case, playlists are reloaded the first time you activate (select) them. * src/Clients/Nereid/Nereid/Client.cs: Add information line at start of Main, useful to get more accurate startup timing. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Add columns for SavedCount to CorePrimarySources etc. Trigger all the sources to reload when the client is started up, just one more time, to bootstrap the SavedCount. * src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs: Log when the client has fully started up. * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Save is now an override, and got rid of NotifyUpdated since not needed now that Source.OnUserNotifyUpdated is public. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Load and save SavedCount. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Add a SavedCount protected property, used to be able to show a count in the source list on startup without having to query every soure. Implement IDisposable, and Save the source when disposed. Also, implement default Activate method that checks if the source has been reloaded this session, and reloads it if not. * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Make sure all sources are Disposed (if : IDisposable) when removed, including child sources. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Make OnUserNotifyUpdated method public, and use it in SourceActions. * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Call OnUserNotifyUpdated on new DapSources so they pulse in the source list. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Chain Dispose calls. 2008-04-29 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedImage.cs: Do not chain SizeAllocated if the allocation doesn't actuall change - not sure why GtkImage raises this when the image changes even if the dimensions are the same. Lame. 2008-04-29 Gabriel Burt * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Get media capabilities from the volume's parent (the block device). 2008-04-29 Gabriel Burt * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Add ClientAdded event. * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.ServiceStack/IDelayedInitializeService.cs: New interface for services that shouldn't be started until there is at least one Client that has started. In practice, means DapService doesn't scan and load DAPs until after the GTK client is fully loaded. * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: When at least one client is started, call DelayedInitialize on IDelayedInitializeServices. * src/Core/Banshee.Services/Banshee.ServiceStack/Client.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/GtkBaseClient.cs: Add Started event and call it when appropriate. * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Implement IDelayedInitializeService. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedMessageBar.cs: Remove bandaid fix for AnimatedImage since abock has committed the real fix. * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Remove self from SourceManager within Dispose, so MTP source actually disappears when ejected. 2008-04-29 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedImage.cs: When hidden, preserve the active state and pause the stage to prevent iterations and restore the active state/resume the stage (if active); the more correct fix for the cause of BGO #523646. * src/Libraries/Hyena.Gui/Hyena.Widgets/MessageBar.cs: Explicitly show/hide the animated image when the bar show/hides 2008-04-29 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Be more careful with unregistering handlers to status message events. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedMessageBar.cs: Fix memory leak/cpu usage seen after selecting a Last.fm source, caused by AnimatedImage's stage continuing to play after the status message should have been hidden/removed. Its still strange that while the AnimatedImage is shown/animating it triggers so many ExposeEvents on the ListView, but at least they stop once the status message goes away. Fixes BGO #523646. * src/Libraries/Lastfm/Lastfm/AudioscrobblerConnection.cs: Explicitly mark private members as private. 2008-04-29 Gabriel Burt * tests/Hyena/DbBoundType.cs: Fix build. 2008-04-28 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs: Add RemoveActionGroup convenience override. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmSource.cs: Make sure to dispose actions when the extension is disposed, fixing crasher when you tried to disable/reenable the extension. 2008-04-28 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationEditor.cs: * src/Extensions/Banshee.Lastfm/Resources/lastfm.glade: Remove name entry from Last.fm dialog. 2008-04-28 Gabriel Burt * src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: * src/Libraries/Hyena/Hyena.Query/QueryOrder.cs: Implement smart playlists limited by file size and duration. Fixes BGO #522889. 2008-04-28 Gabriel Burt * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Fix bug with incrementing skip count instead of play count when a song ended and the next one began (behavior was correct if the song hadn't ended and the user manually pressed next.) Fixes BGO #527879. 2008-04-28 Gabriel Burt WARNING: This commit is a first pass at reworking some of the Podcast/Migo internals to use Hyena and be more consistent with Banshee's style. It severely breaks the podcast extension for the time being, so unless you are working with Mike and me to fix it, you should not build or run it. * build/build.environment.mk: Link Migo against Hyena. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs: * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Update to new Load method (w/o superflous int arg). * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Fix DatabaseColumn attributes to be on properties, not private members. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Use new IDatabaseTrackModel[Provider|Cache] interfaces to allow this class to handle DatabaseTrackInfo subclasses (eg to handle PodcastInfo objects). * src/Core/Banshee.Services/Banshee.Playlist/AbstractPlaylistSource.cs: Override AfterInitialized method, moving quite a bit of track model property setting there. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Change static LoadAll method to take a primary source id, so that as primary sources are loaded, they fetch/load only their playlists. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Add virtual HasArtistAlbum property so sources can avoid instantiating the Artist/Album models at all if they don't use them. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Check the artist/album models aren't null before using them. * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackModelCache.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackModelProvider.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/IDatabaseTrackModelCache.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/IDatabaseTrackModelProvider.cs: New interfaces/classes to enable DatabaseTrackInfo subclasses to be used/loaded by DatabaseTrackListModel and therefore any DatabaseSource subclass. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Override HasArtistAlbum to false. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastItem.cs: Migo's FeedItem class is backed by a database table (PodcastItems), so the idea is intead of having another table for Banshee specific podcast item information, push as much as possible into Migo, and have PodcastItem actually subclass from DatabaseTrackInfo, and pull in information from the Migo tables as necessary (using VirtualDatabaseColumn attributes). * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastFeed.cs: Deleted, since we just use the Migo table/Feed class now. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/PodcastFeedPropertiesDialog.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/PodcastPropertiesDialog.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/PodcastSubscribeDialog.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Dialog/SyncPreferenceComboBox.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/ColumnCells/FeedActivityColumnCell.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Models/PodcastFeedModel.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSourceContents.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: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastCore.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastCore_Interface.cs: Many HACKING fixes, quite a lot of work to do still. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/Models/PodcastItemModel.cs: Remove the custom model since we use a DatabaseTrackListModel now. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSource.cs: Change to subclass from PrimarySource. * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: Fix bug in exception logging. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Use Action instead of custom delegate type for AggregatesUpdated event. * src/Core/Banshee.Services/Banshee.Database/BansheeModelProvider.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Make not abstract, taking default properties and empty virtual methods from BansheeModelProvider. Remove unused int arg in Load method. Add FetchAllMatching, FetchFirstMatching, FetchSingle (id), and Delete methods. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteUtils.cs: Handle bools. * src/Libraries/Migo/Makefile.am: * src/Libraries/Migo/Migo.mdp: Several files removed, a few added. * src/Libraries/Migo/Migo/Migo.Syndication/EventArgs/FeedDownloadCompletedEventArgs.cs: * src/Libraries/Migo/Migo/Migo.Syndication/EventArgs/FeedDownloadCountChangedEventArgs.cs: * src/Libraries/Migo/Migo/Migo.Syndication/EventArgs/FeedEventArgs.cs: * src/Libraries/Migo/Migo/Migo.Syndication/EventArgs/FeedItemCountChangedEventArgs.cs: * src/Libraries/Migo/Migo/Migo.Syndication/EventArgs/FeedItemEventArgs.cs: Renamed to follow HACKING. * src/Libraries/Migo/Migo/Migo.Syndication/Feed.cs: * src/Libraries/Migo/Migo/Migo.Syndication/FeedEnclosure.cs: * src/Libraries/Migo/Migo/Migo.Syndication/FeedItem.cs: * src/Libraries/Migo/Migo/Migo.Syndication/FeedUpdateTask.cs: * src/Libraries/Migo/Migo/Migo.Syndication/FeedsManager.cs: Many updates, including HACKING fixes, trying to get rid of unnecessary dictionaries etc. There are some commented out pieces of code in this commit that have broken podcasts temporarily until they are 'ported'. For the database-backed classes (Feed, FeedItem, and FeedEnclosure) use Hyena.Data.Sqlite [DatabaseColumn] attributes to flag db-backed properties. * src/Libraries/Migo/Migo/Migo.Syndication/IFeed.cs: * src/Libraries/Migo/Migo/Migo.Syndication/IFeedEnclosure.cs: * src/Libraries/Migo/Migo/Migo.Syndication/IFeedItem.cs: * src/Libraries/Migo/Migo/Migo.Syndication/IFeedsManager.cs: Deleted. * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/TablesManagers/EnclosuresTableManager.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/TablesManagers/FeedsTableManager.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/TablesManagers/ItemsTableManager.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Utilities/DataUtility.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Utilities/DatabaseManager.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Utilities/DbDefines.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Utilities/QueuedDbCommand.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Utilities/SQLiteUtility.cs: Deleted; Migo uses Hyena.Data.Sqlite now for db related functionality. * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/Db/DataWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/Db/FeedDataWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/Db/FeedEnclosureDataWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/Db/FeedItemDataWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/IFeedEnclosureWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/IFeedItemWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/IFeedWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/Rss/RssFeedEnclosureWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/Rss/RssFeedItemWrapper.cs: * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/Wrappers/Rss/RssFeedWrapper.cs: Deleted; Wrapper concept had a lot of redundancy in property definitions etc. The Db wrappers are unnecessary since Hyena.Data.Sqlite uses reflection to instantiate objects/set properties. * src/Libraries/Migo/Migo/Migo.Syndication/Migo.Syndication.Data/RssParser.cs: New class largley taken from the Rss*Wrapper classes. * tests/Hyena/SqliteCommandTests.cs: Test SQLification of bools. 2008-04-28 Aaron Bockover * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: Make ConditionSql virtual and add a protected setter; make CanUnmap virtual * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Add Music and Video group sources; delete all smart playlists and entires associated with the primary source when starting and disposing * src/Dap/Banshee.Dap/Banshee.Dap/MediaGroupSource.cs: Base source for media groups, extends SmartPlaylistSource * src/Dap/Banshee.Dap/Banshee.Dap/MusicGroupSource.cs: * src/Dap/Banshee.Dap/Banshee.Dap/VideoGroupSource.cs: A source to show all music on the device and one for all video * src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs: Do not implement IDiskUsageReporter - MediaGroupSource does this now * src/Libraries/Hyena.Gui/Hyena.Gui/TestModuleAttribute.cs: Attribute for flagging UI test modules * src/Libraries/Hyena.Gui/Hyena.Gui/TestModuleRunner.cs: Show a list of UI test modules and run them when activated * src/Libraries/Hyena.Gui/Hyena.Query.Gui/QueryDebugger.cs: A UI test module for playing with the query parser 2008-04-26 Aaron Bockover * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Do not try to read the name from the iTunesDB until after we have finished loading that database 2008-04-26 Aaron Bockover * src/Core/Banshee.Services/Banshee.Hardware/HardwareManager.cs: Support runtime loading/unloading of hardware provider extensions * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/PodSleuthDeviceProvider.cs: * src/Core/Banshee.Services/Banshee.Hardware/ICustomDeviceProvider.cs: Implement IDisposable * src/Core/Banshee.Services/Banshee.Sources/SourceManager.cs: Support runtime loading/unloading of extension sources * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod.addin.xml: Order the hardware provider for podsleuth first in the extension list just in case 2008-04-25 Aaron Bockover * src/Core/Banshee.Services/Banshee.ServiceStack/IExtensionService.cs: * src/Backends/Banshee.GStreamer/Banshee.GStreamer/Service.cs: Require all extension services to implement IDisposable * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Listen to the addin manager for when service extensions are enabled or disabled and enable/disable accordingly; this allows all service extensions to now be enabled or disabled at runtime * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: Added an override for removing an action by name * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdService.cs: Moved the UI actions from the source to the service since all of the UI here is global; fixes issue where there were UI conflicts with multiple CDs and also helps with the runtime enable/disable of the service * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs: Reflect said changes above * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/X11NotificationAreaBox.cs: Many fixes for runtime enable/disable 2008-04-25 Aaron Bockover This commit hopefully addresses remaining hardware and threading issues with DAP support and fixes the Mono.Addins dependency issue that people have been complaining about for the last couple of days * src/Backends/Banshee.Hal/Banshee.HalBackend/Volume.cs: Cache the uuid of the volume once it's been resolved so the device doesn't have to be queried for it again, which is problematic if the device is removed forcefully * src/Core/Banshee.Services/Banshee.Hardware/HardwareManager.cs: Listen directly on the inner manager for device added/removed and raise those events from within the service scope, performing the cast to custom device in the device added event * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Defer the loading of the database to the LoadFromDevice threaded call so startup is faster; implement eject * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/PodSleuthDeviceProvider.cs: Allow the provider to adapt the PodSleuthDevice to either the top level iPod storage device or the actual iPod data volume so iPod support works when an iPod is plugged in while Banshee was already running * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Reworked the DapSource instantiation to deal with older Mono.Addins; fully dispose and unmap any devices bound to a DAP provider extension if that extension is removed at runtime; fully tear down the top level DAP service if it is disposed, so DAP support can be fully disabled at runtime as well * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Replaced the IDevice ctor with a virtual DeviceInitialized method to cope with older Mono.Addins - this should fix the problem people have been complaining about for 2 days; store the addin ID on the source as well for unmapping in the service * src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs: Removed bad threading decisions, race issues, and excessive dispose calls; it is up to the device implementation to call dispose as needed inside eject * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Updated to reflect minor DapSource API changes due to Mono.Addins * src/Libraries/Hyena/Hyena/Log.cs: Walk the exception chain to generate a full stack trace printout 2008-04-24 Aaron Bockover * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Added a PurgeTracks method that will nuke all entries in CoreTracks with a matching primary source ID * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Read the track database from the iPod * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodTrackInfo.cs: Map the iPod tracks to Banshee database tracks * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Call LoadDeviceContents after creating a DapSource * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Added LoadDeviceContents and a virtual LoadFromDevice method; LoadFromDevice should be implemented by DapSources and will run async - currently only used by IpodSource 2008-04-24 Aaron Bockover * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: Some more cleanup, organizing, and implemeneted icon name support * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Whitespace 2008-04-24 Aaron Bockover * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Updated to the new DapSource API * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Uses the new enforced IDevice ctor that DapSources must have to create the device, if InvalidDeviceException is thrown, the source is discarded * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Lots of refactoring and cleaning; get rid of Resovle and Initialize (IDevice) and rolled all that into the ctor; better error messages, more result checking, easier to read code * src/Dap/Banshee.Dap/Banshee.Dap/InvalidDeviceException.cs: New exception that DapSource implementors must throw in the ctor if they can't support the device being passed to them * src/Libraries/Hyena/Hyena/Log.cs: Log exceptions through Log.Warning and added an override to provide a message with the exception 2008-04-24 Gabriel Burt * src/Dap/Banshee.Dap.Ipod/Makefile.am: Disable ipod build unless ENABLE_IPOD set. 2008-04-24 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs: Fix bug with seek and jump-to-playing not being sensitive when they should be. Fixes BGO #528198. 2008-04-24 Aaron Bockover * build/build.environment.mk: * build/build.rules.mk: * build/m4/banshee/dap-ipod.m4: * configure.ac: Build foo for iPod support * src/Backends/Banshee.Hal/Banshee.HalBackend/BlockDevice.cs: Do not check if info.category is storage since the capability query for block will validate the device, and info.category may not be storage for all storage devices (it could be portable_audio_player) * src/Core/Banshee.Services/Banshee.Hardware/IDevice.cs: * src/Backends/Banshee.Hal/Banshee.HalBackend/Device.cs: Added HAL method wrappers for properties that should only be used with extreme care; probably need to enforce how these are used. They're really just for proxying custom properties from custom IDevices; I'm not totally happy with this * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: * src/Backends/Banshee.Hal/Banshee.HalBackend/Volume.cs: * src/Backends/Banshee.Hal/Banshee.HalBackend/HardwareManager.cs: Some cleanups, notes * src/Core/Banshee.Services/Banshee.Services.addin.xml: * src/Core/Banshee.Services/Banshee.Hardware/HardwareManager.cs: Implemented the ICustomDeviceProvider extension, pass all IDevice queries through the custom device providers to allow them to transform/replace a device with some custom device * src/Core/Banshee.Services/Banshee.Hardware/ICustomDeviceProvider.cs: The new interface for custom device providers * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod.addin.xml: iPod extension def * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/IpodSource.cs: The beginning of the iPod DAP support; doesn't do anything yet * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/PodSleuthDevice.cs: A device that translates PodSleuth properties to the iPod device from ipod-sharp * src/Dap/Banshee.Dap.Ipod/Banshee.Dap.Ipod/PodSleuthDeviceProvider.cs: Custom device provider for taking an iPod storage device and transforming its iPod volume into a PodSleuthDevice 2008-04-23 Gabriel Burt * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginDialog.cs: Fix bug with not saving the account info when the user clicked (vs pressing space or enter) the save button. 2008-04-23 Scott Peterson * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs: Use new StartPadding. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedBox.cs: Added StartPadding and EndPadding properties. 2008-04-23 Gabriel Burt * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Be more careful when Disposing. 2008-04-23 Gabriel Burt * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Handle the situation of the user not having any encoders and trying to transfer an unsupported file type. 2008-04-23 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinDetailsDialog.cs: * src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinTile.cs: * src/Core/Banshee.ThickClient/Banshee.Addins.Gui/AddinView.cs: Moved these widgets into their own proper namespace * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs: Changed to reflect said move 2008-04-23 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/BansheeDialog.cs: Allow setting the parent/transient for window * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinDetailsDialog.cs: Added a simple details dialog for an addin * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinView.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinTile.cs: Better tile UI and added enable/disable and details buttons to the tile; actually enable/disable addins when the button is pressed - BE WARNED this has not been tested too much yet * src/Libraries/Hyena.Gui/Hyena.Widgets/WrapLabel.cs: Added a Wrap property that will allow text to be ellipsized to one line if unset * src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs: * src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileConfigurationDialog.cs: * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs: Updated to use the new WrapLabel * src/Libraries/Hyena.Gui/Hyena.Widgets/TextViewLabel.cs: Removed now that we have a proper WrapLabel * src/Backends/Banshee.GStreamer/Banshee.GStreamer.addin.xml: * src/Backends/Banshee.Gnome/Banshee.Gnome.addin.xml: * src/Backends/Banshee.Hal/Banshee.Hal.addin.xml: * src/Backends/Banshee.Unix/Banshee.Unix.addin.xml: * src/Core/Banshee.Core/Banshee.Core.addin.xml: * src/Core/Banshee.Services/Banshee.Services.addin.xml: * src/Core/Banshee.ThickClient/Banshee.ThickClient.addin.xml: * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage.addin.xml: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.addin.xml: * src/Dap/Banshee.Dap/Banshee.Dap.addin.xml: * src/Extensions/Banshee.AudioCd/Banshee.AudioCd.addin.xml: * src/Extensions/Banshee.Bookmarks/Banshee.Bookmarks.addin.xml: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.addin.xml: * src/Extensions/Banshee.MultimediaKeys/Resources/Banshee.MultimediaKeys.addin.xml: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying.addin.xml: * src/Extensions/Banshee.PlayQueue/Resources/Banshee.PlayQueue.addin.xml: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.addin.xml: Updated addin metadata 2008-04-23 Gabriel Burt * src/Libraries/Migo/*: Rename a few more enums. 2008-04-23 Gabriel Burt * src/Extensions/Banshee.Podcasting/*: * src/Libraries/Migo/*: Rename FEEDS_DOWNLOAD_STATUS enum to FeedDownloadStatus. (Props to MD for making this dead easy). 2008-04-23 Gabriel Burt * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Fix typo in delete tracks user job message. * src/Extensions/Banshee.Podcasting/*: * src/Libraries/Migo/*: Fix assembly references in .mdp, and rename one enum and its values to FDG standards. 2008-04-23 Aaron Bockover This commit adds the initial work for the extension manager to allow you to enable and disable extensions; it does not yet work and there are still many interaction and rendering issues; no complaining * src/Core/Banshee.Services/Banshee.Preferences/Page.cs: Add the new extensions page to the preference set * src/Core/Banshee.Services/Banshee.Preferences/PreferenceBase.cs: * src/Core/Banshee.Services/Banshee.Preferences/Root.cs: Moved DisplayWidget to Root * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs: Adapt the new AddinView for our extensions to the extensions page * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/NotebookPage.cs: Support pages with their own DisplayWidgets * src/Libraries/Hyena.Gui/Hyena.Widgets/WrapLabel.cs: Added a new label that doesn't suck for proper wrapping; this label uses a width allocation from its parent to compute the layout and forces a height request to fit the wrapped layout; it is awesome; someone tell me if the standard GtkLabel can do this - I have in many years never been able to do this * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinTile.cs: Hot new tile widget that displays information about an addin/extension and will allow you to enable/disable it; not completely done * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/AddinView.cs: A view that lays out the AddinTiles 2008-04-22 Gabriel Burt This commit adds transcoding support to DAPs. Transcoded files are stored in ~/.config/banshee-1/transcoder/, and that folder is deleted every Banshee session. One improvement over stable's transcoding is file transfers can happen at the same time as transcoding. * src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs: Make IsReadOnly public. * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Enable property dialogs for DapSources. Also, override AddTrack methods to first transcode if necessary. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Reflect updates in two parent classes. * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Lock use of the mtp device so only one operation happens at a time. Make adding track work with new transcoding support. Add fine-grained progress when adding tracks. * src/Dap/Banshee.Dap/Makefile.am: * src/Dap/Banshee.Dap/Banshee.Dap.Gui: * src/Dap/Banshee.Dap/Banshee.Dap.Gui/DapPropertiesDialog.cs: Ported from stable. Advanced properties and owner entry commented out. * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: If the Source has a property named 'SourceProperties.GuiHandler' that is a OpenPropertiesDelegate, invoke it OnSourcePropertiesAction. * src/Core/Banshee.ThickClient/ThemeIcons/22x22/actions: * src/Core/Banshee.ThickClient/ThemeIcons/22x22/actions/encode.png: Copy icon from stable. * src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileConfigurationDialog.cs: * src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs: * src/Core/Banshee.Services/Banshee.MediaProfiles/MediaProfileManager.cs: * src/Core/Banshee.Services/Banshee.MediaProfiles/PipelineVariable.cs: * src/Core/Banshee.Services/Banshee.MediaProfiles/Profile.cs: * src/Core/Banshee.Services/Banshee.MediaProfiles/Pipeline.cs: * src/Core/Banshee.Services/Banshee.MediaProfiles/ProfileConfiguration.cs: Renamed *ID properties to *Id. Also, use the ProfileConfiguration in several places we used to return just the Profile, since multiple ProfileConfigurations can share a Profile, we need to make sure this configurations variables are loaded when we use it. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Define OpenPropertiesDelegate. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Handle AddTracks not being synchronous (since there may be transcoding). * src/Core/Banshee.Services/Banshee.ServiceStack/BatchUserJob.cs: Add DetailedProgress that is the percent complete of the current sub-job. * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Load the TranscoderService. * src/Core/Banshee.Services/Banshee.Services.addin.xml: Define /Banshee/MediaEngine/Transcoder extension node. * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Services.mdp: * src/Core/Banshee.Services/Banshee.MediaEngine/ITranscoder.cs: * src/Core/Banshee.Services/Banshee.MediaEngine/TranscoderService.cs: New files that give us transcoding. Largely ported code from stable. * src/Backends/Banshee.Gnome/Banshee.GnomeBackend/GConfConfigurationClient.cs: Remove / characters from key names. * src/Backends/Banshee.GStreamer/Makefile.am: * src/Backends/Banshee.GStreamer/Banshee.GStreamer.addin.xml: * src/Backends/Banshee.GStreamer/Banshee.GStreamer/Transcoder.cs: Add GStreamer implementation of MediaEngine.ITranscoder, mostly ported from stable. * src/Backends/Banshee.GStreamer/Banshee.GStreamer/AudioCdRipper.cs: Tweak way Profiles are loaded to ensure they're configured. * src/Libraries/Mtp/Mtp/Track.cs: Remove WriteLine. * libbanshee/banshee-transcoder.c: Fix broken progress updates, and Gtk criticals. * build/build.environment.mk: Require Banshee.ThickClient in Banshee.Dap now b/c of properties dialog. * data/audio-profiles/*.xml.in: Add taglib/* mimetypes. * data/banshee-1.desktop.in.in: * data/mimetypes.txt: Update list of mimetypes with some ones from TagLib# we didn't have. 2008-04-22 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/PreferencesDialog.cs: * src/Core/Banshee.ThickClient/Resources/banshee-dialogs.glade: Nuke the old crappy hardcoded preferences dialog 2008-04-22 Aaron Bockover * src/Core/Banshee.Services/Banshee.Preferences/Page.cs: Cleaned up the default preferences * src/Core/Banshee.Services/Banshee.Preferences/PreferenceService.cs: Added an InstallWidgetAdapters event and a RequestWidgetAdapters method * src/Core/Banshee.Services/Banshee.Preferences/VoidPreference.cs: A wrapper to use for fake preferences that will basically be containers for advanced widgets bound to other preferences * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs: A little cleanup and use VoidPreference * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/PreferenceDialog.cs: Call RequestWidgetAdapters to notify listeners that they need to create and bind their widget adapters to preferences they own * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/SectionBox.cs: Set the MnemonicWidget if the preference gets a label * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdService.cs: Last of the preference migration - adds the import profile combo 2008-04-22 Aaron Bockover * src/Core/Banshee.Services/Banshee.MediaEngine/IAudioCdRipper.cs: * src/Backends/Banshee.GStreamer/Banshee.GStreamer/AudioCdRipper.cs: Added a enableErrorCorrection argument to the Begin method * src/Core/Banshee.Core/Banshee.Configuration.Schema/ImportSchema.cs: Removed the error correction schema * src/Core/Banshee.Services/Banshee.Preferences/Collection.cs: Added remove * src/Core/Banshee.Services/Banshee.Preferences/Preference.cs: * src/Core/Banshee.Services/Banshee.Preferences/Root.cs: * src/Core/Banshee.Services/Banshee.Preferences/SchemaPreference.cs: Added Description property and ctor overrides * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/PreferencesDialog.cs: Removed crap * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/SectionBox.cs: Set tooltips * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs: Pass the schema value ot Begin * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdService.cs: Add the first preference for audio CD support * src/Libraries/Hyena.Gui/Hyena.Gui/TooltipSetter.cs: A new awesome tooltip wrapper that will either use the old Gtk.Tooltips API or the new Gtk.Widget.TooltipText property, depending on what is available 2008-04-22 Aaron Bockover * src/Core/Banshee.Services/Banshee.Preferences/Page.cs: Set up default preferences for some more things * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs: Added widget adapters for the file/folder pattern preferences * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/SectionBox.cs: Layout preference widgets properly using a table so everything lines up and looks pretty * src/Core/Banshee.Services/Banshee.Preferences/Collection.cs: Added FindOrAdd method * src/Core/Banshee.Services/Banshee.Preferences/PreferenceBase.cs: Added a ShowLabel property * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/WidgetFactory.cs: Remove a console.writeline * src/Libraries/Hyena.Gui/Hyena.Widgets/TextViewLabel.cs: Moved from somewhere in Banshee proper * src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileComboBoxConfigurable.cs: * src/Core/Banshee.ThickClient/Banshee.MediaProfiles.Gui/ProfileConfigurationDialog.cs: Reflect the moving of TextViewLabel to Hyena.Widgets 2008-04-22 Aaron Bockover This commit adds very initial and incomplete support for better preference management that makes it easy for extensions to add new preferences * src/Core/Banshee.Services/Banshee.Preferences/Root.cs: A root object for all things preferency * src/Core/Banshee.Services/Banshee.Preferences/Collection.cs: A base preference object that represents a collection of preference things * src/Core/Banshee.Services/Banshee.Preferences/Page.cs: Non gui collection representing pages for the preference dialog * src/Core/Banshee.Services/Banshee.Preferences/Section.cs: A section is a group of preferences in a page * src/Core/Banshee.Services/Banshee.Preferences/Preference.cs: Generic preference object that maps to as single preference item * src/Core/Banshee.Services/Banshee.Preferences/PreferenceBase.cs: Base single item preference object (non-generic) * src/Core/Banshee.Services/Banshee.Preferences/PreferenceService.cs: The core preference service * src/Core/Banshee.Services/Banshee.Preferences/SchemaPreference.cs: A preference item object that binds to our lovely SchemaEntry configuration objects that makes exposing configuration as preferences really easy * src/Core/Banshee.Services/Banshee.Library/LibraryLocationPreference.cs: Preference object for setting the library location * src/Core/Banshee.Services/Banshee.ServiceStack/ServiceManager.cs: Load the preference service * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/BansheeDialog.cs: A new base dialog object that makes writing new dialogs very nice * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/PreferenceDialog.cs: The new preference dialog * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/NotebookPage.cs: A GUI wrapper for the preference Page object * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/SectionBox.cs: A GUI wrapper for the preference Section object * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/WidgetFactory.cs: A static class that builds and binds widgets to non-GUI preferences * src/Core/Banshee.ThickClient/Banshee.Preferences.Gui/DefaultPreferenceWidgets.cs: A set of default preference widget adaptors that represent more complex UI for interacting with preferences * src/Core/Banshee.ThickClient/Banshee.Gui/GlobalActions.cs: Open the new preferences dialog 2008-04-19 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedVolumeButton.cs: Added a classic ctor override * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/RepeatActionButton.cs: Allow the button to have only the icon * src/Core/Banshee.Widgets/Banshee.Widgets/VolumeButton.cs: Added a classic mode that just pops up the slider above the widget, which is best for fullscreen * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenControls.cs: Ensure the controls don't go away if the volume button is active * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Some fixes; increase the timeout to 5s * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/OverlayWindow.cs: Make the background slightly transparent if compositing is supported * src/Libraries/Hyena.Gui/Hyena.Gui/CompositeUtils.cs: Utilities for dealing with awesome stuff in composited environments that doesn't require the latest bleeding GTK; ported from F-Spot, thank you Larry * src/Libraries/Hyena.Gui/Hyena.Widgets/RoundedFrame.cs: Fix the frame rendering 2008-04-19 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenControls.cs: Add the default accel group and make it as wide as the screen (probably lame but gabaug was complaining) * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Add the default accel group and some custom keybindings for seeking and showing/hiding the control bar * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/OverlayWindow.cs: Make gabaug happy and move the bar to the bottom of the screen 2008-04-19 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/ConnectedSeekSlider.cs: Added new horizontal layout mode that is nice for fullscreen * src/Core/Banshee.Widgets/Banshee.Widgets/StreamPositionLabel.cs: Rebuild the layouts when the format string changes * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenControls.cs: Allow the seek slider to fill any remaining space in the window and make sure the window takes 85% of the screen width * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Fixed the popup auto-hide when the mouse was over the controls * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/OverlayWindow.cs: Added better sizing to allow the window to adapt to the screen size * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: Implemented two empty method overrides to avoid GtkContainer's bitching 2008-04-19 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenControls.cs: First pass at adding fullscreen controls - it's by no means complete, and yes I know there are some bugs and missing items * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Show/hide the controls overlay window when necessary * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/OverlayWindow.cs: Started porting the overlay controls window from F-Spot * src/Core/Banshee.ThickClient/Banshee.Gui/ViewActions.cs: Use F instead of F11 as the fullscreen accel * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: Moved the widget construction to a protected function and added a default ctor * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/NextButton.cs: Added a small wrapper for creating the next action button * src/Clients/Nereid/Nereid/PlayerInterface.cs: Use the new NextButton 2008-04-19 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Lots of window manager and parent window interaction stuff so that fullscreen behaves properly when a user does strange window management like alt-tab when in fullscreen * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs: Ensure that if for some reason the source is changed underneath the fullscreen, it's merged back into the source UI * src/Libraries/Hyena.Gui/Hyena.Widgets/RoundedFrame.cs: Use the proper drawing call for non-standard border renders 2008-04-18 Aaron Bockover * libbanshee/banshee-player-video.c: (bp_video_find_xoverlay): Do not let the video sink handle X events 2008-04-18 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Hide the cursor if it hasn't moved in 2.5 seconds, allow 150px of movement before showing it again if it was hidden already 2008-04-18 Aaron Bockover This commit adds video rendering to the fullscreen window and fixes all of the GTK CRITICAL messages that could be seen when switching from the now playing source to something else * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs: Implemented a sweet widget reparenting hack to work around the windowing issues with GstXOverlay; when the video wiget is not to be displayed, it is reparented to the fullscreen window, which will be hidden; this also implements the rest of fullscreen support as far as video rendering is concerned (there are no fullscreen controls yet, but you can press escape to close the window) * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Hide and unfullscreen self instead of destroying * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: Abstracted non GstXOverlay specific pieces of the video widget to make the code easier to maintain * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/XOverlayVideoDisplay.cs: Fixes with the internal windowing to better work with the reparenting hack outlined above 2008-04-18 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: We were instantiating a List on every render. Now we just use one list per instance and clear it on each render. 2008-04-17 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: Moved the fullscreen UI logic from the source to the interface * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: Use Destroy explicitly 2008-04-17 Scott Peterson * tests/Hyena/SqliteModelProviderTests.cs: Added test for null strings. 2008-04-17 Scott Peterson * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Look for DB-bound members amoung the public fields. Don't know what we didn't do that before. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteConnection.cs: Don't throw an exception if we can't retrieve a schema due to the table not existing. This is important because the Provider uses Scheme.Count == 0 to detect a non-existant table! * tests/Hyena/DbBoundType.cs: A type which can be used with an SqliteModelProvider for testing purposes. * tests/Hyena/SqliteModelProviderTests.cs: Logical tests for the SqliteModelProvider. 2008-04-16 Aaron Bockover * Makefile.am: Add a gdb target * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: Added AddImportant override for ToggleActionEntry * src/Core/Banshee.ThickClient/Banshee.Gui/BaseClientWindow.cs: Moved the fullscreen code * src/Core/Banshee.hickClient/Banshee.Gui/ViewActions.cs: Implement the fullscreen action and allow the fullscreen logic to be overridden * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/FullscreenWindow.cs: The window that will house the fullscreen UI for video playback * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingInterface.cs: Add a property for getting the VideoDisplay widget * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/NowPlayingSource.cs: Added a custom fullscreen handler that will fullscreen the video window when fullscreen action is toggled and the now playing source is active * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: Inherit from GtkEventBox since it does what we needed and simplifies some things; still has that CRITICAL warning though * src/Extensions/Banshee.NowPlaying/Resources/ActiveSourceUI.xml: UI for merging the fullscreen action into the toolbar 2008-04-16 Alexander Hixon * build/build.environment.mk * src/Extensions/Banshee.Daap/Daap/ServiceLocator.cs: We don't like bandaids. 2008-04-16 Wouter Bolsterlee * src/Extensions/Banshee.Daap/Banshee.Daap/DaapLoginDialog.cs: * src/Extensions/Banshee.Podcasting/Banshee.Podcasting/PodcastCore_ Interface.cs: Added a few translator comments. 2008-04-16 Gabriel Burt * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Specify what folder to upload the track to - Music or Video. * src/Libraries/Mtp/Mtp/MtpDevice.cs: Set the parent_id on the track before uploading it. * src/Libraries/Mtp/Mtp/Track.cs: Improve the DetectFileType method. * src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs: * src/Libraries/Hyena/Hyena.Query/RelativeTimeSpanQueryValue.cs: * src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs: Parse values as doubles instead of ints, allowing queryies and smart playlists to specy "size>2.2MB" for instance. * src/Libraries/Hyena.Gui/Hyena.Query.Gui/FileSizeQueryValueEntry.cs: * src/Libraries/Hyena.Gui/Hyena.Query.Gui/TimeSpanQueryValueEntry.cs: Add a single decimal place to the spin button. * src/Libraries/Hyena/Hyena/StringUtil.cs: Improve FormatDouble method, now returns 1 if N < 1.1, etc. 2008-04-16 Gabriel Burt * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: When the CorePrimarySource table was modified a few commits back (after Alpha 3, I think) I forgot to make the change for new databases as well. Patch from Bertrand Lorentz, fixes BGO #528469. 2008-04-16 Gabriel Burt * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: Fix bug introduced by Alex's last commit. Fix a couple style issues. 2008-04-16 Scott Peterson * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: Reverted IL injection changes. 2008-04-16 Alexander Hixon This commit basically changes the DAAP namespace to Daap, removes the server bits from daap-sharp, and puts in support for using avahi-sharp instead of Mono.Zeroconf when compiling the extension (note that the build stuff hasn't quite been hooked up yet). There's also a few changes to using generics in daap-sharp, and DaapPlaylistSource uses the database, rather than keeping stuff in memory. * src/Extensions/Banshee.Daap/Daap/ContentFetcher.cs: * src/Extensions/Banshee.Daap/Daap/Client.cs: * src/Extensions/Banshee.Daap/Daap/User.cs: * src/Extensions/Banshee.Daap/Daap/ServerInfo.cs: * src/Extensions/Banshee.Daap/Daap/BrokenMD5.cs: * src/Extensions/Banshee.Daap/Daap/ContentParser.cs: * src/Extensions/Banshee.Daap/Daap/LoginException.cs: * src/Extensions/Banshee.Daap/Daap/AuthenticationException.cs: * src/Extensions/Banshee.Daap/Daap/Playlist.cs: * src/Extensions/Banshee.Daap/Daap/Utility.cs: * src/Extensions/Banshee.Daap/Daap/Track.cs: * src/Extensions/Banshee.Daap/Daap/ContentWriter.cs * src/Extensions/Banshee.Daap/Daap/Hasher.cs: * src/Extensions/Banshee.Daap/Banshee.Daap/DaapLoginDialog.cs: * src/Extensions/Banshee.Daap/Banshee.Daap/DaapService.cs: * src/Extensions/Banshee.Daap/Banshee.Daap/DaapTrackInfo.cs: Simple namespace change from DAAP to Daap. * src/Extensions/Banshee.Daap/Daap/ContentCodeBag.cs: * src/Extensions/Banshee.Daap/Daap/Database.cs: Use Generics instead of regular Collection classes. Also update the namespaces from DAAP to Daap. * src/Extensions/Banshee.Daap/Daap/ServiceLocator.cs: Provide support for avahi-sharp as well as Mono.Zeroconf. Also use Hyena logging instead of spewing via Console.WriteLine. * src/Extensions/Banshee.Daap/Daap/sync-tree.sh: Remove this since it's practically useless now. * src/Extensions/Banshee.Daap/Daap/Server.cs: Remove this since we're not serving up DAAP shares from Banshee directly anymore. * src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs: * src/Extensions/Banshee.Daap/Banshee.Daap/DaapPlaylistSource.cs: Track the database IDs rather than the entire track information, and use the new namespace. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Add virtual AddTrack method that should be overriden by implementing classes before use. * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: New AddTrack methods for adding existing tracks from the database to a playlist without reassigning the ParentSource property. * build/build.environment.mk: Nasty hack to include the avahi-sharp bindings at compile time. This should really be optional, but my auto* foo is poor. Good thing we don't enable DAAP by default. :) 2008-04-16 Alexander Hixon * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: Patch by Bertrand Lorentz that fixe an NRE when the player engine would be disposed before the TrackInfoDisplay. Fixes BGO #527888. 2008-04-16 Scott Peterson * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/UserJobTileHost.cs: Use a BorderWidth of 8 for the AnimatedVBox. This adds 8 pixels on all sides. 2008-04-16 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/Choreographer.cs: More accurate easing equations. 2008-04-16 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedBox.cs: Added support for BorderWidth. Sexeh! * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedWidget.cs: Use QueueRedrawNoResize rather than QueueRedraw. This makes things smoother with Downstage blocking. * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/SingleActorStage.cs: Add an overload for Reload which takes a new duration. 2008-04-15 Scott Peterson This patch does two things. First, it cleans up the AnimatedBox classes and improves the spacing logic. Spacing should now behave correctly under all situations. Second, we use Relfection.Emit to compile IL that gets and sets database-bound members to and from the database formats. We were previously using regular old relfection. This puts to rest any concerns about the performance of an attribute-based model design. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Changed to handle generic DatabaseColumn. * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: Made DatabaseColumn classes generic. Generate IL for saving/loading data to database-bound members. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedBox.cs: Previously there was a lot of code dup between AnimatedVBox and AnimatedHBox with the only differences being the height/width properties. All size negotiation is now done in the abstract AnimatedBox which has a "horizontal" bool in its protected constructor. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedVBox.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedHBox.cs: Moved logic into base class. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedWidget.cs: AnimatedWidgets now have thier own size computation logic. They also have a horizontal bool in the ctor. 2008-04-13 Christopher James Halse Rogers * src/Backends/Banshee.GStreamer/Banshee.GStreamer/AudioCdRipper.cs: Hook up the paranoia-mode logic to the error-correction preference. 2008-04-12 Gabriel Burt This commit adds usable MTP device support. Still no transcoding for any DAPs, but that's next. * src/Backends/Banshee.Hal/Banshee.HalBackend/Device.cs: If usb.serial property exists on the device, use it for the Uuid. Used for matching Mtp devices to the libmtp device list. * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Clients/Nereid/Nereid/ViewContainer.cs: Add a disk usage label/progres bar and display it when the source implements IDiskUsageReporter. Also, show the source context menu when the source's title in the view container is right clicked. * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Set the default MediaAttributes to Default. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Add GetTrackIdForUri method, used by Mtp support to associate existing tracks when mtp device entries. * src/Core/Banshee.Services/Banshee.Database/BansheeDbFormatMigrator.cs: Change CorePrimarySource entries for Library/VideoLibrary to use UniqueId. * src/Backends/Banshee.Hal/Banshee.HalBackend/HardwareManager.cs: * src/Core/Banshee.Services/Banshee.Hardware/HardwareManager.cs: * src/Core/Banshee.Services/Banshee.Hardware/IHardwareManager.cs: Add GetAllDevices call. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Use UniqueId to identify primary sources, not TypeUniqueId. Add user notify calls when deleting items. And every 10 items added or deleted, refresh. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Use String.Format instead of concat. * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Implement track loading, adding, and deleting. Implement disk usage, and eject, and renaming. * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Sources/IDiskUsageReporter.cs: New interface for sources that want disk usage info displayed (eg DAPs). * src/Dap/Banshee.Dap.Mtp/Makefile.am: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpDapTrackInfo.cs: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpTrackInfo.cs: Fixes to property mapping, renamed, added to build. * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Listen for DapSources being removed by the SourceManager and remove them from the map. Also, when unmapping them, call Dispose on them. * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Override AddChildSourc with warning about how they aren't saved to the device (yet). Add internal Device property. * src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs: Implement IDiskUsageReporter. * src/Libraries/Mtp/Mtp/Track.cs: Style fixes. * Makefile.am: * tests/Makefile.am: Change make test instead of make run-test * tests/Banshee.Core/TaglibReadWriteTests.cs: Add unit tests to make sure Banshee.IO.System and Banshee.IO.Unix read and write tags properly. * src/Backends/Banshee.Unix/Banshee.IO.Unix/DemuxVfs.cs: Fix major bug where writing metadata to file wasn't working in trunk if you were using Banshee.IO.Unix (which most/all people are). 2008-04-11 Aaron Bockover * src/Clients/Nereid/Nereid/PlayerInterface.cs: Do not automatically resize the source view (BGO #527340) 2008-04-11 Aaron Bockover * libbanshee/banshee-gst.c: * libbanshee/banshee-gst.h: Implemented our own logging functions that can call a handler function which is defined in managed code; this allows libbanshee to use the same logging facilities that are available to managed code * src/Backends/Banshee.GStreamer/Banshee.GStreamer/Service.cs: Implement the native logging function and proxy calls to the Hyena logger * libbanshee/banshee-player-private.h: Made the bp_debug macro expand to the new native logging function * src/Libraries/Hyena/Hyena/Log.cs: Made Commit method public * src/Clients/Nereid/Nereid/PlayerInterface.cs: Pack the status label in an EventBox; when the event box is clicked, call CycleStatusFormat on the active source; use the new MainMenu widget instead of fetching it directly from the UI manager * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Implemented CycleStatusFormat and some supporting properties; and two new status formatters for time; added a ConfigurationId property * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/PersistentColumnController.cs: Use the Source.ConfigurationId property * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/MainMenu.cs: Load the main menu from the UI manager and connect the new repeat and shuffle menus * src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs: Split FindAction into a FindActionGroup method * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackShuffleActions.cs: Implemented CreateSubmenu and AttachSubmenu methods * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Add some NRE defenses * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Removed the hardcoded menu entries for shuffle and repeat * src/Extensions/Banshee.NotificationArea/Resources/NotificationAreaMenu.xm: * src/Extensions/Banshee.NotificationArea/Banshee.NotificationArea/NotificationAreaService.cs: Added shuffle and repeat menus back to the tray menu 2008-04-11 Gabriel Burt * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Fix IndexOutOfBounds exception. 2008-04-11 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Make sure we don't handle header-related interaction stuff if the header isn't shown. Fixes BGO #527510. 2008-04-11 Sebastian Dröge * build/m4/banshee/gtk-sharp.m4: gconf-sharp is part of gnome-sharp so check for it there and not a second time here. 2008-04-11 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedBox.cs: Use bools instead of the None enums (previously instituted to eliminate some nullables. * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: Got rid of OnRealized OnUnrealized overrides - we don't really need them. * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/Choreographer.cs: Got rid of Easing and Blocking.None 2008-04-10 Aaron Bockover Banshee 1.0 Alpha 3 (0.98.3) Released 2008-04-10 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedWidget.cs: Fixed stupid stupid crash. 2008-04-10 Aaron Bockover * NEWS: Updated * configure.ac: Turned off the DEVEL_BUILD flag for the release 2008-04-10 Aaron Bockover * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: Do /not/ call base.OnRealized because we don't like to crash 2008-04-10 Gabriel Burt * NEWS: Update for 0.98.3 2008-04-10 Scott Peterson * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: We now inherit from Widget and render to the parent GdkWindow and call base.OnRealize (). This fixes BGO #524429. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_DragAndDrop.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Windowing.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Header.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Model.cs: Call base.OnRealize () and inherit from Widget. * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedWidget.cs: * src/Extensions/Banshee.NowPlaying/Banshee.NowPlaying/VideoDisplay.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedBox.cs: Call base.OnRealize (). 2008-04-10 Aaron Bockover * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdTrackInfo.cs: Added an override for TrackEqual that addresses audio CD track equality 2008-04-10 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/AlbumListView.cs: Refresh when a track info updated event is raised by the player engine; this fixes BGO #524865 2008-04-10 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Audioscrobbler/AudioscrobblerService.cs: Fix capitalization of menu items, use 'Last.fm' instead of 'Audioscrobbler'. * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Encode url bits. * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginDialog.cs: Replace Close button with Cancel / Save and Log In buttons. Should fix BGO #525585. * src/Libraries/Lastfm.Gui/Lastfm.Gui/AccountLoginForm.cs: Make Save method public. 2008-04-10 Gabriel Burt * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/AlbumListView.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ArtistListView.cs: Call Next () instead of First () when source/artist/album activated, so that random works. Fixes BGO #527218. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Lock around Reload, GetRandom, and this[] to avoid refresh race. Fixes BGO #525031. * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Fix bug with double clicking on an item not activating it every other time. 2008-04-10 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection/TrackListModel.cs: * src/Core/Banshee.Services/Banshee.Collection/MemoryTrackListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Implement GetRandom method, using SQL for DatabaseTrackListModel. * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Move IncrementPlay/SkipCount logic into public IncrementLastPlayed method. * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackControllerService.cs: Cann IncrementLastPlayed before getting the next song since that affects the random query method. Fix repeat/restart in linear query. Change QueryTrackRandom to call GetRandom on TrackModel. * src/Core/Banshee.Services/Banshee.PlaybackController/IBasicPlaybackController.cs: * src/Core/Banshee.Services/Banshee.PlaybackController/ICanonicalPlaybackController.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Add restart arg to Previous. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Add GetSingle method that can be passed a condition/order by fragment and returns one item. 2008-04-10 Scott Peterson * src/Clients/Nereid/Nereid/PlayerInterface.cs: Use the fancy new PersistantPanController. FANCY! * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/PersistentColumnController.cs: Got rid of now-unnessisary volatile modifier. * src/Core/Banshee.ThickClient/Banshee.Gui/PersistentPaneController.cs: The PersistentPanController can be used to save/restore the position of a Gtk.Pane automatically. Passing a Gtk.Paned and some schema info to the static Control method will set it up and it will always do the right thing. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs: Use PeristentPaneController for browser panes. This fixes BGO #522470. * src/Core/Banshee.Core/Banshee.Configuration/SchemaEntry.cs: Since this is a public struct, we do the neighborly thing and impliment IEquatable. I thought I was going to use this but ended up not doing so. Still, it's the right thing to do. 2008-04-10 Scott Peterson * src/Core/Banshee.ThickClient/Banshee.Gui/InterfaceActionService.cs: Added a ViewActions property. * src/Core/Banshee.ThickClient/Banshee.Gui/BaseClientWindow.cs: Handle fullscreen toggling. This fixes BGO #526618. 2008-04-10 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellPositiveInt.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TrackListView.cs: * src/Core/Banshee.ThickClient/Makefile.am: Add Disc column. Fixes BGO #385543. 2008-04-10 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Interaction.cs: Better vadjustment handling. This fixes BGO #526689. * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: Minor, perhaps unessiary, changes. * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedWidget.cs: Use a bool instead of a nullable type. 2008-04-09 Gabriel Burt * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: Add information popup if user tries to add track(s) to a playlist from outside its primary source (since not yet implemented). * src/Core/Banshee.Services/Makefile.am: Reorder. * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastManager/Source/PodcastSource.cs: Set CanAddTracks to false since it doesn't work. 2008-04-09 Gabriel Burt This commit makes adding and deleting from a PrimarySource async, and pops up UserJobs if those operations take very long. Very importantly, it also adds the ability to copy the track model selection so slow running jobs can process it w/o risking it changing on them. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: Handle having no artist or album model gracefully. * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: Fixed up Add/Delete methods. * src/Core/Banshee.Services/Banshee.ServiceStack/UserJob.cs: Handle multiple Finish calls gracefully. * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: New AddAllTracks method for use by MergeSource method. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Change slow operations to use a new CachedList object instead of iterating over the model's Selection, since it or the model might change underneath us. Add UserJobs for adding/deleting. * src/Core/Banshee.Services/Banshee.Sources/Source.cs: Don't raise UserNotifyUpdated if we're the active source. * src/Core/Banshee.Services/Makefile.am: New files * src/Core/Banshee.Services/Banshee.Collection.Database/CachedList.cs: New class that contains a SqliteModelCache, so it's backed by CoreCache and can be used to store info (eg the selected tracks from a source) so they can be operated on independent of the original selection/model. * src/Core/Banshee.Services/Banshee.ServiceStack/BatchUserJob.cs: UserJob convenience subclass. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView_DragAndDrop.cs: Do MergeSource operations in a thread. Should probably be done in PrimarySource. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Whitespace. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Get rid of OnUserNotifyUpdated, this is done in DatabaseSource now. * src/Libraries/Hyena/Hyena.Collections/RangeCollection.cs: Add Count property to Range to avoid doing End - Start + 1 everywhere. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelCache.cs: Make work without a Selection. 2008-04-10 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Gui.Theatrics/Choreographer.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedBox.cs: Avoid using nullable types for some stuffs 2008-04-09 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/AnimatedWidget.cs: Fixed style attachtment problem which was gave spew when the theme was changed. 2008-04-09 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: * src/Core/Banshee.Widgets/Banshee.Widgets/StreamPositionLabel.cs: Fix DPI and size request issues * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Use the generic CreateLayout cairo method in CairoExtensions * src/Libraries/Hyena.Gui/Hyena.Gui/CairoExtensions.cs: Moved the CreateLayout method from the list view to this utils class * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: Added OnUnrealized 2008-04-09 Aaron Bockover * configure.ac: * build/build.rules.mk: Added a DEVEL_BUILD variable - if set, compiler warnings will be treated as errors. We'll always keep it on except for when we distcheck for a release * build/m4/banshee/gtk-sharp.m4: Require Gtk# 2.10 * data/icon-theme-hicolor/Makefile.am: Copy the app icons to the local uninstalled icon theme 2008-04-09 Aaron Bockover * build/build.rules.mk: * build/m4/banshee/daap.m4: * build/m4/banshee/libbanshee.m4: * build/m4/banshee/mono-zeroconf.m4: * build/m4/shamrock/gstreamer.m4: * configure.ac: Lots of build fixes, disable DAAP and Podcasting by default; only link against core gstreamer libraries and gdk-x11 * libbanshee/banshee-transcoder.c: Remove all GnomeVFS code 2008-04-09 Gabriel Burt * src/Clients/Nereid/Nereid/PlayerInterface.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/AlbumListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/ArtistListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackListModel.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/TrackListDatabaseModel.cs: * src/Core/Banshee.Services/Banshee.Collection/IHasTrackSelection.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Services.mdp: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: * src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Rename *ListDatabaseModel to Database*ListModel. 2008-04-09 Aaron Bockover * build/build.environment.mk: * configure.ac: Set up the sample extension in the build * src/Core/Banshee.Services/Banshee.MediaEngine/PlayerEngineService.cs: Added a new TrackIntercept event that allows objects to stop the player engine from opening a trac * src/Extensions/Banshee.Sample/: Set up a quick sample extension to help new developers; it sort of breaks things right now, but I'll fix that soon 2008-04-09 Gabriel Burt * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Fix issue with reloading way too many things when adding tracks to a source. * src/Core/Banshee.ThickClient/Banshee.Sources.Gui/SourceView_DragAndDrop.cs: Fix issues with the 'New Playlist' that appears when you drag over the source list. It now will appear under any LibrarySource when you hover over it or its children. And it will only expand the LibrarySource when within it, and collapse it when out of it (if it was collapsed to start with). Fixes BGO #410121. * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: When items are added to the play queue and the PlayerEngine is not already playing, set us as the playback source. 2008-04-09 Scott Peterson OK, I totally re-did the arrow button stuff. We still don't use the standard Gtk MenuToolButton because I am WAY to cool for it. It like _thought_ it was all cool enough to sit at my lunch table, but I was all like Ut-Uh! So we now use the sufficiently cool and totally custom MenuButton. This sucker is lean, mean, with an emphasis on correctness. No hacky-hacky here. Nosiree. I'd maybe entertain the idea that there's a better way to handle the RepeatActionButton, but I'm seriously fine with it as-is. * src/Clients/Nereid/Nereid/PlayerInterface.cs: Use the new stuff. * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackShuffleActions.cs, * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: Added nice CreateMenu() method which does just what you think. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/NextArrowButton.cs: * src/Libraries/Hyena.Gui/Hyena.Gui/IRadioActionGroup.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/ArrowButton.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/ActionGroupButton.cs: * src/Libraries/Hyena.Gui/Hyena.Widgets/ActionButton.cs: Got rid of these god-aweful classes. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/RepeatActionButton.cs: Redone to use MenuButton. * src/Libraries/Hyena.Gui/Hyena.Widgets/MenuButton.cs: This is the lovely new widget. Pass it a widget (like a Button or a MenuButton, for example) and it will menu-fy it! If showArrow is true, a way-pretty arrow will appear to the side of the widget you pass, providing access to the menu. If showArrow is false, the widget you pass will get packed inside the button and clicking anywhere will open the menu. 2008-04-09 Gabriel Burt * build/build.environment.mk: Banshee.Dap.Mtp depends on Mtp library. * src/Backends/Banshee.Hal/Makefile.am: * src/Backends/Banshee.Hal/Banshee.HalBackend/DeviceMediaCapabilities.cs: * src/Core/Banshee.Services/Makefile.am: * src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs: New files for exposing portable_audio_player properties. * src/Backends/Banshee.Hal/Banshee.HalBackend/Device.cs: * src/Core/Banshee.Services/Banshee.Hardware/IDevice.cs: Add Product, Vendor, and MediaCapabilities properties. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Add copy ctor. * src/Core/Banshee.Services/Banshee.ServiceStack/Application.cs: Add ShuttingDown bool property. * src/Core/Banshee.Services/Banshee.SmartPlaylist/SmartPlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: * src/Core/Banshee.Services/Banshee.Playlist/PlaylistSource.cs: * src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs: Add CanAddTracks and Merge-related overrides. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add Dispose method, and override AddTrack/Merge methods. * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: Get rid of WriteLine. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Add the ability to add tracks to DAPs. No transcoding yet, and doesn't respect FolderDepth yet. * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Copy more initialization code over. Still far from usable. * src/Dap/Banshee.Dap/Banshee.Dap/DapService.cs: Call DapSource.Resolve instead of Initialize. * src/Dap/Banshee.Dap/Banshee.Dap/DapSource.cs: Add better defaults. * src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs: Move Dispose method up to PrimarySource. Get rid of Merge/AcceptsInput overrides. * src/Core/Banshee.Services/Banshee.Sources/ITrackModelSource.cs: * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdSource.cs: * src/Extensions/Banshee.Daap/Banshee.Daap/DaapPlaylistSource.cs: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Add CanAddTracks property. * src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs: Call base.Dispose (). * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: * src/Extensions/Banshee.PlayQueue/Banshee.PlayQueue/PlayQueueSource.cs: Use updated AddSelectedTracks method. * src/Libraries/Hyena/Hyena.Data.Sqlite/DatabaseColumn.cs: Add GetRawValue method for use in provider's Copy method. * src/Libraries/Hyena/Hyena.Data.Sqlite/SqliteModelProvider.cs: Add Copy method for transferring all db fields (except pk) from one instance to another. 2008-04-09 Mike Urbanski * src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Data/PodcastFeed.cs: Fixes table name clashes on dbs migrated from banshee 0.x. drr... 2008-04-08 Aaron Bockover This commit adds the initial checkin of the new podcasting code by Mike Urbanski. It's rough in many areas around the extension, but it works for the most part. It's very much a WIP, but it's quite awesome. * build/build.environment.mk: * configure.ac: Integrate the Migo and Banshee.Podcasting assemblies into the build * src/Libraries/Migo: Migo is the new library that does all the feed reading and downloading, among other things; it's reusable and not Banshee specific, sort of like Hyena for feed related problems * src/Extensions/Banshee.Podcasting: Banshee.Podcasting is the extension that provides the actual podcast support in Banshee, and uses Migo to do the heavy lifting 2008-04-08 Scott Peterson * src/Extensions/Banshee.NotificationArea/Resources/NotificationAreaMenu.xml: * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/StationSource.cs: Got rid of references to old ShuffleAction. 2008-04-08 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Widgets/ActionButton.cs: Fixed stupid NRE error. 2008-04-08 Scott Peterson * src/Libraries/Hyena.Gui/Hyena.Widgets/ArrowButton.cs: Cosmetic change. * src/Libraries/Hyena.Gui/Hyena.Widgets/ActionButton.cs: Got rid of some useless checks. There are some cornercases I'm just not prepared to spend the energy to handle properly. 2008-04-08 Scott Peterson * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackShuffleActions.cs: Ctor now takes a PlaybackActions object so that it always has a reference to the next action. * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs: Move instantiation of the repeat and shuffle actions to after the other actions so that the shuffle action can change the next action's icon. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/NextArrowButton.cs: * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/RepeatActionButton.cs: Set visual style in ctor. * src/Libraries/Hyena.Gui/Hyena.Widgets/ArrowButton.cs: Derives from ActionGroupButton and uses an ActionButton for the "main" button part. Also proxies things like style, relief, &c. to the main ActionButton. * src/Libraries/Hyena.Gui/Hyena.Widgets/ActionGroupButton.cs: Now derives from ActionButton. * src/Libraries/Hyena.Gui/Hyena.Widgets/ActionButton.cs: ActionButton is now the base of custom action-bound buttons. It doesn't do the cool Action.ConnectProxy shit that ToolButton does (because Gtk+ Suxorz Teh Big One!!1!11), but it's pretty close. It also integrates with the style of a Toolbar you pass it. 2008-04-08 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs: Properly calculate the row height based on actual pango layout calculations so that the row height will adapt to DPI changes * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Recalculate the header size when DPI changes 2008-04-07 Aaron Bockover * src/Libraries/Hyena.Gui/Hyena.Gui/PangoCairoHelper.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ListView/ListView_Rendering.cs: Let Cairo know what DPI we're using so text is rendered at the right size, and recalculate the row height on style set in case the DPI changed; fixes BGO #522500, and is completely awesome - I recommend people change their DPI settings while Banshee is running a few times to really take in the awesomeness of this fix. Really. I also added a nicer way for row heights to be queried so renderers can provide their desired heights; it's a better solution than the previous hack, which was not nice. * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellTrack.cs: * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Provide row height calculating functions; ColumnCellText's version is static and is referenced by ListView as the default calculator * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/TerseTrackListView.cs: * src/Core/Banshee.ThickClient/Banshee.Collection.Gui/AlbumListView.cs: Set the renderer row height computing functions to the view 2008-04-07 Gabriel Burt * src/Core/Banshee.Services/Banshee.Database/BansheeDbConnection.cs: Disable the case-sensitive LIKEs pragma as it was breaking queries. Fixes BGO #526371. 2008-04-07 Gabriel Burt * src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs: Patch from Michael Monreal adding a disconnect icon. Fixes BGO #526815. 2008-04-07 Gabriel Burt * ChangeLog: Forgot to thank Bertrand two commits ago. * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/AlbumSet.cs: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpDap.cs: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpDapTrackInfo.cs: Copied over from stable, not yet built. 2008-04-07 Gabriel Burt * src/Dap/Banshee.Dap.Mtp/Makefile.am: Don't build unless enabled. 2008-04-07 Gabriel Burt * build/build.environment.mk: Add Mtp and Banshee.Dap.Mtp deps. * build/build.rules.mk: Handle *.config files. * build/m4/banshee/mono-zeroconf.m4: * src/Extensions/Banshee.Daap/Makefile.am: Make Daap support optional, though on by default. Thanks to Bertrand Lorentz for the patch. Fixes BGO #526797. * build/m4/banshee/dap-mtp.m4: * configure.ac: Check for libmtp, and make MTP support optional (currently off by default, enable with --enable-mtp). * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.addin.xml: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp.mdp: * src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: * src/Dap/Banshee.Dap.Mtp/Makefile.am: * src/Dap/Dap.mds: * src/Dap/Makefile.am: New skeleton for Mtp device support. * src/Libraries/Libraries.mds: * src/Libraries/Makefile.am: * src/Libraries/Mtp/*: Move libmtp-sharp code over from latest in stable. Reorganize. 2008-04-07 Aaron Bockover * src/Core/Banshee.ThickClient/Banshee.Gui.Dialogs/ExtensionManagerDialog.cs: Nothing here yet, hopefully I can actually spare some time for it * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/TrackInfoDisplay.cs: * src/Libraries/Hyena.Gui/Hyena.Gui/ShadingTestWindow.cs: Removed rogue LayoutPath calls, replaced with ShowLayout * src/Libraries/Hyena.Gui/Hyena.Data.Gui/ColumnCellText.cs: Did some profiling and switched the text renderer to Cairo since it's actually faster than GTK - this is fucking awesome: Cairo (pango_cairo_show_layout): 0.303 GTK (gtk_paint_layout): 0.369 Cairo (pango_cairo_layout_path): 0.980 This means text is now drawn directly to the cairo context and not to the GdkDrawable, which means we'll be able to cache the rendering to an image surface which supports an alpha channel (unlike GdkPixmap), which will lead to more performance improvements, specifically when dragging * src/Libraries/Hyena.Gui/Hyena.Gui/PangoCairoHelper.cs: Added a contract argument to LayoutPath that conveys it has crappy performance 2008-04-07 Scott Peterson * src/Clients/Nereid/Nereid/PlayerInterface.cs: Pack in the NextArrowButton. * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackShuffleActions.cs: Adds all of the shuffle action definitions. * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs: Use new shuffle actions. * src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackRepeatActions.cs: Replaced if/elses with a cast of the action value to the enum type. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/NextArrowButton.cs: The next button now has a drop-down menu to select the shuffle setting. * src/Core/Banshee.ThickClient/Banshee.Gui.Widgets/RepeatActionButton.cs: Moved all of the logic into Hyena.Widgets.ActionButton. * src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml: Added new shuffle actions to the menu, replace the old next button with a placeholder for the fancy new one. * src/Core/Banshee.Services/Banshee.PlaybackController/PlaybackShuffleMode.cs: Added values for shuffling by song, artist, album. * src/Libraries/Hyena.Gui/Hyena.Gui/IRadioActionGroup.cs: An interface we seem to need until someone comes up with a more creative solution. * src/Libraries/Hyena.Gui/Hyena.Widgets/ArrowButton.cs: This widget visually works just the Firefox 2 forward/back buttons. There is a main button which is tied to the active action and an arrow to the right side. Clicking the arrow brings up a menu of the actions in the IRadioActionGroup. * src/Libraries/Hyena.Gui/Hyena.Widgets/ActionButton.cs: An ActionButton is a button which pops up a menu when you click on it. It is tied to an IRadioActionGroup. 2008-04-07 Gabriel Burt * src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs: Remove unnecessary Reload calls and method/property overrides. 2008-04-07 Gabriel Burt * src/Core/Banshee.ThickClient/Banshee.Gui/BansheeActionGroup.cs: Save the original IconName for an action within UpdateAction, like we do for labels, so we can restore it when we switch to a source that doesn't override it. * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Use IconName instead of the StockId so icons can be overridden. 2008-04-07 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseImportManager.cs: Add force_copy protected bool that we pass to CopyToLibraryIfAppropriate. Used when importing DAPs to force copy to library. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Rename CopyToLibrary method, and add bool arg that forces it to copy the track, even if the user's preference is not to do so. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: * src/Core/Banshee.ThickClient/Banshee.Gui/SourceActions.cs: Fix up ImportSourceAction so it's now functional. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: Avoid spawning unnecessary thread. Fix bug with accessing the BaseDirectory; cache the Hal.Device's mount point property. Implement IImportSource, so can now import MassStorageSources from the Media -> Import menu and via its context menu (dnd to come). * src/Dap/Banshee.Dap/Banshee.Dap/RemovableSource.cs: Implement most of IImportSource. 2008-04-07 Alexander Hixon * src/Extensions/Banshee.Daap/Banshee.Daap/DaapService.cs: Only show the DAAP container source if we actually have any shares available, otherwise don't spam the source list. * src/Extensions/Banshee.Daap/Banshee.Daap/DaapSource.cs: * src/Extensions/Banshee.Daap/Banshee.Daap/DaapPlaylistSource.cs: Make sure elements are actually in the list before we do any operations on them. 2008-04-07 Gabriel Burt * src/Extensions/Banshee.Lastfm/Banshee.Lastfm.Radio/LastfmActions.cs: Fix love/ban icons. * src/Libraries/Lastfm/Lastfm/RadioConnection.cs: Remove unnecessary logging, log exceptions with Log.Exception (e). 2008-04-06 Aaron Bockover This commit functionally complete ripping. Ripped albums will now show up in the library with all the metadata properly stored and organized. There are now only a few things to polish regarding ripping. * libbanshee/banshee-ripper.c: Removed a bad unref call - the pipeline should only be unreffed when destroying it * src/Backends/Banshee.GStreamer/Banshee.GStreamer/TagList.cs: Merge release date, and musicbrainz ID properties into the tag list * src/Core/Banshee.Core/Banshee.Collection/AlbumInfo.cs: Added Release Date and MusicBrainzId properties * src/Core/Banshee.Core/Banshee.Collection/ArtistInfo.cs: * src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Added MusicBrainzId properties * src/Core/Banshee.Core/Banshee.Streaming/CommonTags.cs: Added GStreamer tag names for MusicBrainz * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Bind MusicBrainzId properties to respective database columns so these are now stored/loaded properly * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdDiscModel.cs: Support saving a lot of extra information from MusicBrainz and properly create the album, artist, and album artist records * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdRipper.cs: Save the track, artist, and album artist records into the database when a track finishes ripping * src/Extensions/Banshee.AudioCd/Banshee.AudioCd/AudioCdTrackInfo.cs: Extend DatabaseTrackInfo and persist artist, album, and album artist objects on the track which can be saved to the database when ripped 2008-04-06 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs: Make sure to load all columns in FindOrCreate methods. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseImportManager.cs: * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: Change PrimarySourceIds to a int []. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Fix bug in ContainsUri method. * src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs: Add support for Arrays as query values (for use in "IN (?)" conditions). * tests/Hyena/SqliteCommandTests.cs: Test array support. 2008-04-06 Gabriel Burt * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs: Add UpdateOrCreate methods that will overwrite an artist/album if it already exists, otherwise will just save the new one. * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Change Edit Track Metadata to Edit Track Information in pursuit of user-friendliness. Thanks to Chris Lord for the suggestion. 2008-04-06 Gabriel Burt This patch extends the relative-Uri goodness we use for Library tracks to any PrimarySource's tracks, meaning if your DAP has one mount point one time, and another the next, we'll detect the songs that are already in the database since we now check against the relative Uri. Also, delete from MassStorage sources is working. * src/Core/Banshee.Core/Banshee.IO/IFile.cs: * src/Core/Banshee.Core/Banshee.IO/File.cs: * src/Core/Banshee.Core/Banshee.IO.SystemIO/File.cs: * src/Backends/Banshee.Unix/Banshee.IO.Unix/File.cs: Add Copy method. * src/Core/Banshee.Core/Banshee.Base/Paths.cs: Factory MakePathRelative out, not-library specific. * src/Core/Banshee.Services/Banshee.Library/LibraryImportManager.cs: * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseImportManager.cs: Add a couple virtual properties for making the relative-Uri stuff PrimarySource agnostic. * src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs: Make the process of making a Uri relative and reconstructing it from the relative path saved in the db generic so it can be used by other PrimarySources. Scope ContainsUri method to one or more primary sources, since it's fine if a track is on a DAP and in the library. * src/Core/Banshee.Services/Banshee.Sources/PrimarySource.cs: Add methods for making the Uri of a track relative (if possible). Add default DeleteTrackRange implementation pulled from LibrarySource, but make it call a virtual DeleteTrack method that each PrimarySource can implement. * src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs: * src/Core/Banshee.Services/Banshee.Library/LibrarySource.cs: Override DeleteTrack method to delete files from disk. * src/Core/Banshee.ThickClient/Banshee.Gui/TrackActions.cs: Don't show the context menu at all if it has no visible items. Fix crasher with the playlist menu b/c of recent icon changes. * tests/Makefile.am: * tests/Banshee.Core/TaglibReadWriteTests.cs: Test our read/write tags to file code. Commented out b/c abock doesn't want the 390KB of music files in svn. * tests/Hyena/QueryTests.cs: Changes to AssertForEach method. 2008-04-06 Aaron Bockover * libbanshee/banshee-gst.c: Added banshee_is_debugging and banshee_get_version_number functions; gstreamer_initialize now takes a debugging argument that banshee_is_debugging will return * libbanshee/banshee-ripper.c: Save the GstTagList that is passed to the rip function to the encoder element; fixed bug with setting the encoder version tag * libbanshee/banshee-tagger.c: Added bt_tag_list_add_date and bt_tag_list_dump, which will dump the entire contents of a GstTagList for debugging purposes * src/Backends/Banshee.GStreamer/Banshee.GStreamer/AudioCdRipper.cs: Delete a ripped file if the file was not finished * src/Backends/Banshee.GStreamer/Banshee.GStreamer/Service.cs: Pass the debug mode to libbanshee * src/Backends/Banshee.GStreamer/Banshee.GStreamer