2006-06-18 James Livingston * configure.ac: bump version * NEWS: add NEWS for 0.9.5 2006-06-18 Jonathan Matthew * lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb), (rb_uri_handle_recursively): Don't attempt to recurse into directories we can't open. Fixes #341485. 2006-06-18 James Livingston patch by: Jaap A. Haitsma * shell/rb-shell.c: Add F11 as a shortcut for Party Mode. Fixes #344610. 2006-06-18 Jonathan Matthew * bindings/python/rb.defs: * shell/rb-shell-player.c: (rb_shell_player_play_entry), (eos_cb): * shell/rb-shell-player.h: * shell/rb-shell.c: (rb_shell_play_entry): Add source parameter to rb_shell_player_play_entry, using the selected source if not specified. * shell/rb-play-order.c: (rb_play_order_class_init), (rb_play_order_finalize), (rb_play_order_query_model_changed), (rb_play_order_row_deleted_cb), (sync_playing_entry_cb), (default_playing_entry_removed): * shell/rb-play-order.h: Move entry removal handling back to the row-deleted signal, as we need the entry to be present in the model. When changing to the next entry after the playing entry is deleted, set the new entry as the playing entry and then sync it to the player in an idle handler, so we don't end up playing it if it was removed too. * shell/rb-play-order-queue.c: (rb_queue_play_order_playing_entry_changed), (rb_queue_play_order_playing_entry_removed): Use the playing-entry-removed handler from the play order class, setting a flag so we don't try to remove the already-removed entry from the model. This makes removal of the playing entry from playlists etc. work more or less correctly for all play orders. Fixes #344627. 2006-06-17 James Livingston patch by: Elijah Newren * tests/test-rhythmdb.c: fix the build with older versions of check (again). Fixes #343718. 2006-06-17 James Livingston * player/rb-recorder-gst.c: (rb_recorder_construct): use the right name for capsfilter's "caps" property. Fixes #344968. 2006-06-17 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_playpause): Don't leak the selected entry list when finding an entry to play. 2006-06-17 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_emit_selection_changed), (rb_entry_view_selection_changed_cb): don't do O(n) operations here, as a O(1) one works fine, and it will get called often when the user deleted multiple tracks. Part of #344922. 2006-06-17 James Livingston * shell/rb-shell-player.c: (rb_shell_player_stop): make rb_shell_player_stop and rb_shell_player_playpause not mutually recursive. Fixed #336912. 2006-06-17 Jonathan Matthew * podcast/rb-podcast-parse.c: (rb_podcast_parser_start_element): Treat nested elements inside properties as unknown. Fixes parsing of podcast feeds with unescaped HTML in description tags, bug #344532. 2006-06-15 William Jon McCann * shell/rb-shell.c (rb_shell_quit): Unset the playing source when quitting. Fixes #344875. 2006-06-15 Jonathan Matthew * shell/rb-play-order.c: (rb_play_order_post_entry_delete_cb): Move the playing-entry-removed handling to after the normal entry delete handling, since we're called after the entry has been removed from the query model now. Fixes crashes described in #344627. 2006-06-13 William Jon McCann * widgets/rb-rating-helper.c: (rb_rating_render_stars), (rb_rating_get_rating_from_widget): * widgets/rb-rating.c: (rb_rating_class_init), (rb_rating_finalize), (rb_rating_get_property), (rb_rating_set_property), (rb_rating_new), (rb_rating_expose), (rb_rating_button_press_cb): Don't crash when ratings icons can't be found. Fixes #344533. 2006-06-12 Jonathan Matthew * remote/dbus/Makefile.am: Fix build with builddir != srcdir. 2006-06-11 Jonathan Matthew * Makefile.am: * configure.ac: * remote/Makefile.am: * remote/dbus/Makefile.am: * remote/dbus/rb-client.c: * shell/Makefile.am: New dbus client program providing --play/--next etc. arguments. Fixes #340863, #155763. 2006-06-11 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post): g_mkdir_with_parents returns -1 on error, not 0. Fixes #344316. 2006-06-10 Ryan P Skadberg patch by: Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_get): Fix for Podcasts getting added to Library incorrectly 2006-06-08 Jonathan Matthew * lib/rb-file-helpers.c: (rb_canonicalise_uri): Return input string untouched if gnome_vfs_uri_new returns NULL. * sources/rb-static-playlist-source.c: (impl_receive_drag), (rb_static_playlist_source_add_list_uri): Use rb_uri_list_parse rather than gnome_vfs_uri_list_parse so DAAP URIs don't break it. Fixes #339033. 2006-06-08 James Livingston * lib/rb-tree-dnd.c: (scroll_row_timeout): fix "select on drag hover" for sources on the edge (i.e. the queue). Fixes #328409. * sources/rb-ipod-source.c: fix typo 2006-06-08 James Livingston * configure.ac: * sources/rb-ipod-source.c: (rb_ipod_source_class_init): add a --enable-ipod-writing to enable the ipod syncing code. 2006-06-08 Jonathan Matthew * sources/rb-library-source.c: (layout_example_label_update): add missing comma so we don't generate broken markup. 2006-06-08 James Livingston * metadata/rb-metadata-gst.c: (rb_add_id3_tagger): check for backwards tag-merging with id3v2mux as well as id3mux. From #342330. 2006-06-07 James Livingston * tests/test-rhythmdb.c: #define fail_if for old version of check which don't have it. Hopefully fixes #343718. 2006-06-07 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_cmd_edit_automatic_playlist): don't call g_value_array_free with NULL. Fixes #341053. 2006-06-07 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_playlist_entries_changed), (rb_playlist_manager_set_source): use the "post-entry-delete" signal instead of "row-removed", which fixes updating "burn playlist" sensitivity. Fixes #331119. 2006-06-07 James Livingston * shell/rb-shell-player.c: (rb_shell_player_error): display errors rather than restarting if the source uses _RETRY and there is an actual error (like an undecodable stream) rather than it just dropping out and causing EOS. 2006-06-07 James Livingston * widgets/rb-rating-helper.c: (rb_rating_pixbufs_free): don't try to free the pixbufs if they couldn't be loaded. Fixed #343852. 2006-06-07 James Livingston * sources/rb-playlist-source-recorder.c: (response_cb): make pressing the close button on the dialog work. Fixes #335346. 2006-06-07 Jonathan Matthew * sources/rb-sourcelist-model.c: (path_is_droppable), (path_is_reorderable): * sources/rb-sourcelist.c: (rb_sourcelist_selection_changed_cb), (row_activated_cb), (emit_show_popup), (key_release_cb), (rb_sourcelist_title_cell_data_func), (source_name_edited_cb): Ignore group marker rows in the source list. Fixes #344089, a couple of other crashers, and some weird UI glitches too. 2006-06-07 James Livingston * backends/gstreamer/rb-player-gst.c: check if we have a duration if the seeking query fails. This is needed because many gst elements don't implement the seeking query yet. Should fix 329977. 2006-06-06 James Livingston * configure.ac: bump version for a prerelease, turn on track transfer by default. * sources/rb-ipod-source.c: (rb_ipod_source_class_init): disable the ipod transfer stuff, since it has big issues and we'll hopefully land real support (bug 310774) after 0.9.5 2006-06-06 James Livingston * metadata/rb-metadata-gst.c: (rb_add_id3_tagger): actually use id3v2mux once we've detected it. 2006-06-06 James Livingston * lib/Makefile.am: * tests/test-rhythmdb.c: undo accidental commit which caused rb-thread.c to be built (which it isn't normally) 2006-06-06 James Livingston * tests/test-rhythmdb.c: (test_rhythmdb_setup), (test_rhythmdb_shutdown), (START_TEST): add message strings to all fail_{if/unless} calls, as some versions of check need them (they are optional in others). Should fix bug 343718. 2006-06-06 James Livingston * lib/rb-debug.c: (rb_profiler_new): fix if statement, from bug 343836. * lib/Makefile.am: * lib/rb-thread.c: (process_actions): * tests/test-rhythmdb.c: (START_TEST): fix distcheck, and disable tests that don't pass. 2006-06-05 James Livingston * data/glade/Makefile.am: * data/glade/load-failure.glade: * data/rhythmbox.schemas: remove the remainder of the old load-failure dialog. 2006-06-05 Jonathan Matthew * bindings/python/rb.defs: Remove rb_debug stuff I accidentally checked in. 2006-06-04 Jonathan Matthew * bindings/python/rb.defs: * sources/rb-source.h: * sources/rb-source.c: (rb_source_class_init), (rb_source_set_property), (rb_source_get_property), (rb_sourcelist_group_get_type): Add 'sourcelist-group' property on the RBSource class, describing how sources should be grouped in the source list. * sources/rb-sourcelist-model.c: (rb_sourcelist_model_finalize), (rb_sourcelist_model_new), (real_row_is_separator), (rb_sourcelist_model_is_row_visible), (rb_sourcelist_model_row_is_separator), (get_group_for_path), (rb_sourcelist_model_drag_data_received), (path_is_reorderable), (rb_sourcelist_model_row_draggable), (rb_sourcelist_model_row_inserted_cb), (rb_sourcelist_model_row_deleted_cb), (rb_sourcelist_model_get_group_path): * sources/rb-sourcelist-model.h: * sources/rb-sourcelist.c: (rb_sourcelist_init), (rb_sourcelist_append): Add group marker rows for each sourcelist group, and use these to insert sources in the right place. Sort transient sources (DAAP shares) by name. Show the group marker rows as separators when the next visible row is a source. Make persistant sources (playlists) and removable sources reorderable using drag and drop, restricting them within the source groups. * sources/rb-audiocd-source.c: (rb_audiocd_source_new): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_new): * sources/rb-daap-source.c: (rb_daap_source_new): * sources/rb-ipod-source.c: (rb_ipod_source_new): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_new): * plugins/generic-player/rb-generic-player-source.c: (rb_generic_player_source_new): * plugins/generic-player/rb-nokia770-source.c: (rb_nokia770_source_new): * plugins/generic-player/rb-psp-source.c: (rb_psp_source_new): Add source list group information to existing source classes. Fixes #318754 and #336492. 2006-06-04 James Livingston * widgets/rb-song-info.c: (rb_song_info_populate_dialog), (rb_song_info_update_year), (rb_song_info_sync_entries_multiple): win32 build fixes. 2006-06-03 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_remove_from_main_list): * rhythmdb/rhythmdb-query-model.h: Add a new 'post-entry-delete' signal, emitted when the entry has been removed from the model's data structures. * shell/rb-play-order.c: (rb_play_order_finalize), (rb_play_order_query_model_changed), (rb_play_order_post_entry_delete_cb): Use the new signal to update the play order, so the queue play order doesn't try to scroll to entries that don't exist in a way that causes the tree view to crash. Fixes #340216. 2006-06-03 Jonathan Matthew * backends/gstreamer/rb-encoder-gst.c: (progress_timeout_cb): Fix rb_debug call I missed previously. 2006-06-03 Jonathan Matthew * metadata/rb-metadata-gst.c: Don't use NULL as the error message for ignored files, as it crashes with some C libraries. Fixes #343713. 2006-06-03 Jonathan Matthew * widgets/rb-dialog.c: (rb_error_dialog): * widgets/rb-dialog.h: Mark rb_error_dialog as taking printf-like arguments, and use a format string for the primary message rather than passing in the message directly. * lib/eel-gconf-extensions.c: (eel_gconf_handle_error): * shell/rb-shell-player.c: (rb_shell_player_cmd_play), (info_available_cb): * shell/rb-playlist-manager.c: (load_playlist_response_cb): * shell/rb-removable-media-manager.c: (rb_removable_media_manager_eject_medium_cb): Make sure all calls to rb_error_dialog use string constants for the format string rather than passing the error message directly. Remove an extra %s from the message used when playback fails. Fixes #343562. * lib/rb-debug.h: * sources/rb-audiocd-source.c: * plugins/audioscrobbler/rb-audioscrobbler.c: (rb_audioscrobbler_do_handshake), (rb_audioscrobbler_submit_queue): Mark rb_debug as taking printf-like arguments and fix a few resulting warnings. 2006-06-02 James Livingston * configure.ac: + macros/check.m4: add support for using check for unit tests, the .m4 files is so autogen can run without check being installed * tests/Makefile.am: + tests/test-rhythmdb.c: update the tests to new rhythmdb API, port some of the old tests, and add some new ones. Currently deserialisation tests 2 and 3 fail, for reasons I haven't figured out yet (the query doesn't return any entries). - tests/deserialization-test1.xml: - tests/deserialization-test2.xml: - tests/deserialization-test3.xml: - tests/test-rhythmdb-indexing.c: - tests/test-rhythmdb-simple.c: - tests/test-rhythmdb-tree-deserialization.c: remove old tests that have been ported - tests/test-cd.c: - tests/test-cmdline.c: remove obsolete tests 2006-06-02 James Livingston * metadata/rb-metadata-gst.c: (rb_gst_plugin_greater), (rb_add_id3_tagger), (rb_metadata_init): add support for using id3v2mux, and check whether we are using a version of id3mux that has the correct merge-mode behaviour. * plugins/sample-python/Makefile.am: fix distcheck. * rhythmdb/rhythmdb-monitor.c: (rhythmdb_finalize_monitoring): check the changed-files source was added before trying to remove it. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_evaluate_query): fix an *old* bug which would crash if a query with top-level disjunctions tried to check later disjunctive parts. Hooray for unit-testing. 2006-06-02 William Jon McCann * player/rb-recorder-gst.c (rb_recorder_set_device): Check for a null drive. 2006-05-31 Jonathan Matthew * lib/Makefile.am: * lib/rb-stock-icons.c: (rb_stock_icons_init): Register the app icon as a builtin if the icon theme can't find it. 2006-05-31 James Livingston * player/rb-recorder-gst.c: add missing include. 2006-05-30 William Jon McCann * metadata/sj-metadata-musicbrainz.c: (lookup_cd): * player/rb-recorder-gst.c: (rb_recorder_get_default_drive), (tick_timeout_cb), (rb_recorder_sync_pipeline), (nautilus_burn_drive_get_device), (rb_recorder_get_device), (rb_recorder_set_device), (rb_recorder_get_default_device): * shell/main.c: (main): * shell/rb-removable-media-manager.c: (rb_removable_media_manager_finalize), (get_nautilus_burn_drive_for_path), (rb_removable_media_manager_playing_uri_changed_cb), (rb_removable_media_manager_load_media), (nautilus_burn_drive_get_device), (rb_removable_media_manager_scan): * sources/rb-playlist-source-recorder.c: (ask_rewrite_disc): Update for libnautilus-burn 2.15.3 API changes. Fixes #342604 2006-05-30 James Livingston * daapsharing/rb-daap-connection.c: (handle_login): add a missing "return" to that it asks for the password again if it was wrong. 2006-05-30 Jonathan Matthew * metadata/rb-metadata-gst.c: Don't leak a reference to decodebin's typefind element. 2006-05-30 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post), (download_progress_cb): don't do wonky things if the transfer "suceeds" without transferring any data. 2006-05-29 Jonathan Matthew * sources/rb-library-source.c: (layout_example_label_update), (build_filename): Fix crash when no audio profile is selected. Fixes #341447. 2006-05-29 Jonathan Matthew * shell/rb-shell.c: (rb_shell_clear_queue): * shell/rb-shell.h: * shell/rb-shell.xml: * sources/rb-play-queue-source.c: (rb_play_queue_source_clear_queue), (rb_play_queue_source_cmd_clear): * sources/rb-play-queue-source.h: Add clearQueue dbus method. 2006-05-29 Jonathan Matthew * shell/main.c: (main): Implement --quit option. 2006-05-29 Jonathan Matthew * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-tree.h: * rhythmdb/rhythmdb.c: (process_added_entries_cb), (rhythmdb_entry_insert), (rhythmdb_entry_set), (rhythmdb_entry_set_nonotify), (rhythmdb_entry_set_uninserted), (rhythmdb_entry_set_internal), (rhythmdb_entry_sync_mirrored), (rhythmdb_entry_get_boolean): Replace 'visibility' and 'inserted' in RhythmDBEntry with a flag bitmask, giving the db backend anything past the first 16 bits for its own private use. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (save_entry), (rhythmdb_tree_entry_new), (rhythmdb_tree_entry_set): Add a 'loading' flag to indicate that an entry is being loaded from disk, and use that to ignore entry_set operations on such entries rather than the 'inserted' flag, which doesn't quite mean the same thing. Fixes #342694. 2006-05-28 Jonathan Matthew * shell/rb-shell.xml: Remove visibility property, since it causes crashes (dbus bug 7057) and doesn't do much else. 2006-05-28 James Livingston * plugins/audioscrobbler/Makefile.am: fix some distcheck issues. patch by: Nguyễn Thái Ngọc Duy * po/POTFILES.in: fix some more i18n issues. 2006-05-28 Jonathan Matthew * bindings/python/rb.defs: * shell/rb-shell-player.c: (rb_shell_player_playpause), (filter_mmkeys): * shell/rb-shell-player.h: Deprecate the useless 'ignore_stop' parameter to rb_shell_player_playpause, leaving it in place to avoid breaking dbus API. From bug #334829. 2006-05-28 Jonathan Matthew * plugins/generic-player/rb-generic-player-source.c: (visit_playlist_dirs), (default_transform_playlist_uri): When playlist parsing fails, unref the playlist, not the parent source. Fix memory leak in playlist uri transform. * plugins/generic-player/rb-nokia770-source.c: (impl_transform_playlist_uri): Fix memory leak in playlist uri transform. 2006-05-27 Ryan P Skadberg * doc/reference/Makefile.am: fix grk-doc build 2006-05-27 James Livingston patch by: Nguyễn Thái Ngọc Duy * plugins/lyrics/lyrics.py: * po/POTFILES.in: Make strings in plugins translatable. From bug 343081. 2006-05-27 James Livingston * backends/Makefile.am: * backends/gstreamer/Makefile.am: * lib/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/generic-player/Makefile.am: * po/POTFILES.in: * rhythmdb/rhythmdb-monitor.c: * rhythmdb/rhythmdb.c: * sources/Makefile.am: * widgets/Makefile.am: fix compilation after some CVS surgery was done. 2006-05-26 Jonathan Matthew * bindings/python/rhythmdb.defs: * rhythmdb/rhythmdb-query.c: (write_encoded_gvalue), (rhythmdb_read_encoded_property), (rhythmdb_query_serialize), (rhythmdb_query_deserialize): * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_entry_allocate), (rhythmdb_entry_get_type_data), (rhythmdb_entry_finalize), (rhythmdb_entry_set_internal), (rhythmdb_entry_register_type), (rhythmdb_entry_register_type_alias), (rhythmdb_entry_type_get_by_name), (rhythmdb_entry_song_get_type), (rhythmdb_entry_ignore_get_type), (rhythmdb_entry_iradio_get_type), (_podcast_data_destroy), (rhythmdb_entry_podcast_post_get_type), (rhythmdb_entry_podcast_feed_get_type), (rhythmdb_entry_import_error_get_type), (rhythmdb_entry_get_string), (rhythmdb_entry_get_ulong): * rhythmdb/rhythmdb.h: Allocate a specified amount of extra memory for each db entry, to be used to store fields specific to the entry type. Optionally associate a name with each entry type, to be used when saving entries and auto playlists to disk. Allow entry types to have multiple names to handle older playlist files that used '0' to represent 'song'. Use private data to store podcast fields. * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element), (save_entry), (rhythmdb_tree_entry_set): Simplify property handling by using existing code to convert properties from strings to GValues and to set properties on entries. Other assorted changes due to the above. * sources/rb-audiocd-source.c: (rb_audiocd_source_new): * sources/rb-daap-source.c: (rhythmdb_entry_daap_type_new): * sources/rb-generic-player-source.c: (rb_generic_player_source_new): * sources/rb-ipod-source.c: (rb_ipod_source_new): * sources/rb-nokia770-source.c: (rb_nokia770_source_new): * sources/rb-psp-source.c: (rb_psp_source_new): Update for changes to rhythmdb_entry_register_type. None of these entry types need names or use private data. Fixes #337429. 2006-05-25 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry): Fix creation of ignored-file db entries - need to check for RHYTHMDB_ENTRY_TYPE_INVALID as well as _SONG. 2006-05-25 James Livingston * AUTHORS: * MAINTAINERS: update my email address 2006-05-25 James Livingston * plugins/lyrics/lyrics.py: strip annotations like "(live ...)" and "(... mix)" when searching for lyrics. Cache the lyrics under ~/.gnome2/rhythmbox/lyrics/. Fixes bug 342319. 2006-05-25 Jonathan Matthew * sources/rb-import-errors-source.c: (rb_import_errors_source_class_init): * sources/rb-playlist-source.c: (rb_playlist_source_class_init): * sources/rb-browser-source.c: (rb_browser_source_class_init): * sources/rb-source.c: (rb_source_class_init), (default_move_to_trash): Implement the basic move-to-trash operation once in rb-source.c, rather than in each source type that supports it. * plugins/ipod/rb-ipod-plugin.c: * shell/rb-removable-media-manager.c: * shell/rb-shell.c: (rb_shell_constructor): Only scan removable media once after loading plugins. Add a flag plugins can use to check if the initial scan has been done. * data/rhythmbox.schemas: Enable ipod and generic-player plugins by default. * configure.ac: * data/ui/Makefile.am: * data/ui/generic-player-ui.xml: * data/ui/rhythmbox-ui.xml: * plugins/Makefile.am: * plugins/generic-player/Makefile.am: * plugins/generic-player/generic-player.rb-plugin.desktop.in: * plugins/generic-player/rb-generic-player-plugin.c: * sources/Makefile.am: * sources/rb-generic-player-source.c: * sources/rb-generic-player-source.h: * sources/rb-nokia770-source.c: * sources/rb-nokia770-source.h: * sources/rb-psp-source.c: (visit_playlist_dirs): * sources/rb-psp-source.h: Pluginise generic player (and nokia770 and PSP) support and add move-to-trash for players not mounted read-only. Fixes #342868. 2006-05-24 William Jon McCann * daapsharing/rb-daap-connection.c (handle_song_listing): Lower bound check for batch commit. Fixes #342848 * sources/rb-daap-source.c (rb_daap_source_get_status): Always set output variables if provided. 2006-05-25 Jonathan Matthew * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_entry_new), (rhythmdb_tree_entry_delete), (remove_one_song): * rhythmdb/rhythmdb.c: (process_deleted_entries_cb): Fix two db entry reference counting problems. The initial reference on the entry is held by the db backend, but it was never being dropped. The reference count was incremented when adding an entry to the deleted_entries map and to the deleted_entries_to_emit list, but only decremented for one of those. 2006-05-24 William Jon McCann * daapsharing/rb-daap-connection.c (http_response_handler) (rb_daap_connection_dispose): Call soup_session_abort to make sure there are no outstanding requests when we dispose of the connection. Ignore cancelled messages in the callback. 2006-05-24 William Jon McCann * sources/rb-daap-source.c (rb_daap_source_connection_cb) (rb_daap_source_disconnect): Set a flag when disconnecting the source. Check this flag in connection callback to see if we should release the connection. 2006-05-24 William Jon McCann * daapsharing/Makefile.am: * daapsharing/rb-daap-connection.c: (rb_daap_connection_finalize), (rb_daap_connection_class_init), (connection_connected), (connection_disconnected), (connection_operation_done), (build_message), (connection_set_error_message), (actual_http_response_handler), (http_get), (entry_set_string_prop), (emit_progress_idle), (handle_server_info), (handle_login), (handle_update), (handle_database_info), (handle_song_listing), (handle_playlists), (handle_playlist_entries), (handle_logout), (rb_daap_connection_new), (rb_daap_connection_is_connected), (connection_response_data_free), (connected_cb), (rb_daap_connection_connect), (disconnected_cb), (rb_daap_connection_finish), (rb_daap_connection_disconnect), (rb_daap_connection_state_done), (rb_daap_connection_do_something), (rb_daap_connection_dispose), (rb_daap_connection_set_property), (rb_daap_connection_get_property): * daapsharing/rb-daap-connection.h: * daapsharing/rb-daap-hash.c: (byteReverse), (OpenDaap_MD5Init), (OpenDaap_MD5Update), (OpenDaap_MD5Final), (MD5Transform), (DigestToString), (GenerateStatic_42), (GenerateStatic_45), (rb_daap_hash_generate): * daapsharing/rb-daap-hash.h: * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_get_icon), (remove_source), (stop_browsing), (create_pixbufs), (destroy_pixbufs), (rb_daap_sources_shutdown), (connection_connecting_cb), (connection_disconnected_cb), (release_connection), (rb_daap_source_connection_cb), (rb_daap_source_activate), (rb_daap_source_disconnect_cb), (rb_daap_source_cmd_disconnect), (rb_daap_source_disconnect): Adds a better async API for connect and disconnect. Doesn't share callback data for every async call. Adds a connect signal. Uses an operation-done signal to trigger the callbacks. Displays an error when connections fail. A few refcounting fixes to fix crashes. Uses a weak pointer to set the connection to NULL so we don't clobber references. Wait for each disconnect when shutting down sources. Split out DAAP hash stuff into its own file. Fix typo in header. Fixes #342643 2006-05-24 Jonathan Matthew * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_new_from_xml): Initialize the gvalue used to hold the size limit correctly. Fixes #342744. 2006-05-23 Jonathan Matthew * shell/rb-shell.c: (rb_shell_window_delete_cb), (rb_shell_cmd_quit), (rb_shell_quit), (session_die_cb): * shell/rb-shell.h: * shell/rb-shell.xml: Convert rb_shell_quit into a dbus method, and add visibility dbus property. 2006-05-22 James Livingston * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (sync_entry_changed), (rhythmdb_entry_is_editable), (action_thread_main), (song_can_sync_metadata), (default_sync_metadata): Add entry-type vfuncs for can_sync_metadata, and sync_metadata. The default is always false, and syncing into the file. (rhythmdb_entry_register_type), (rhythmdb_entry_song_get_type), (rhythmdb_entry_iradio_get_type), (rhythmdb_entry_import_error_get_type): * sources/rb-audiocd-source.c: (rb_audiocd_source_new): Set the above vfuncs to do the right thing. IRADIO and Audio-cd entry-type just change the DB. 2006-05-22 Jonathan Matthew * rhythmdb/Makefile.am: * rhythmdb/rhythmdb-monitor.c: * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-query.c: * rhythmdb/rhythmdb.c: Split up rhythmdb.c a bit. 2006-05-22 Jonathan Matthew * data/glade/audioscrobbler-prefs.glade: Add a link to the last.fm server status page. 2006-05-20 Dennis Cranston * plugins/audioscrobbler/audioscrobbler.rb-plugin.desktop.in: Capitalization fix. * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: (impl_create_configure_dialog): UI layout fixes, remove dialog separator, and capitalization fix for window title. * shell/rb-shell.c: (rb_shell_cmd_plugins): UI layout fixes, and remove dialog separator. * data/glade/plugins.glade: UI layout fixes. * data/glade/audioscrobbler-prefs.glade: UI layout fixes, and capitalization fix. Fixes #342438. 2006-05-20 Dennis Cranston * data/glade/podcast-properties.glade: Fix layout of the download location. Fixes #342431. 2006-05-21 Jonathan Matthew * data/ui/rhythmbox-ui.xml: We only need one copy of the 'add to queue' action in the edit menu. 2006-05-20 James Livingston * data/ui/rhythmbox-ui.xml: * shell/rb-shell-clipboard.c: (rb_shell_clipboard_class_init), (rb_shell_clipboard_finalize), (rb_shell_clipboard_set_property), (rb_shell_clipboard_get_property), (rb_shell_clipboard_new), (rb_shell_clipboard_sync), (rb_shell_clipboard_cmd_add_to_playlist_new), (rb_shell_clipboard_cmd_queue_song_info), (rb_shell_clipboard_playlist_add_cb), (generate_action_name), (rb_shell_clipboard_playlist_deleted_cb), (rb_shell_clipboard_playlist_renamed_cb), (rb_shell_clipboard_playlist_visible_cb), (add_playlist_to_menu), (rebuild_playlist_menu), (rb_shell_clipboard_playlist_added_cb): * shell/rb-shell-clipboard.h: add an "add to playlist" menu, which is dynamically generated with all the static playlists. Fixes bug 323364. * shell/rb-shell.c: (construct_widgets), (construct_sources): use the right child, so it doesn't go weird when art appears and disappears. 2006-05-20 James Livingston patch by: Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_finalize), (rhythmdb_query_model_reapply_query_cb): * rhythmdb/rhythmdb.c: (rhythmdb_query_preprocess), (rhythmdb_query_append_prop_multiple), (rhythmdb_query_is_time_relative): * rhythmdb/rhythmdb.h: re-run queries every minutes if they have time-based criteria, fixes bug 341131. 2006-05-20 James Livingston * plugins/artdisplay/artdisplay/__init__.py: don't display the art if we have already changed playing entries. Interpolate the art size so it doesn't jump when the old and new images have different aspect ratios. 2006-05-20 Jonathan Matthew * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): * rhythmdb/rhythmdb.c: (rhythmdb_entry_finalize), (rhythmdb_entry_set_internal), (rhythmdb_query_preprocess), (rhythmdb_entry_get_ulong): Include the GDate directly in RhythmDBEntry (it's only 8 bytes) and elsewhere, use them on the stack rather than allocating on the heap. From bug #342333. 2006-05-19 William Jon McCann * player/rb-recorder-gst.c: (rb_recorder_error_quark), (rb_recorder_get_default_drive), (rb_recorder_gst_free_pipeline), (add_track), (eos_cb), (error_signal_idle), (rb_recorder_gst_signal_error), (rb_recorder_new_pad_cb), (rb_recorder_construct), (recorder_track_free), (rb_recorder_finalize): * sources/rb-playlist-source-recorder.c: Support libnautilus-burn size -> capacity API change. Add some braces to blocks. 2006-05-19 William Jon McCann * metadata/sj-metadata-musicbrainz.c: (sj_metadata_musicbrainz_instance_init), (get_rdf), (lookup_cd): Sync with sound-juicer in CVS. Fixes #342177 * sources/rb-audiocd-source.c: Don't declare variables in the middle of a block (c99ism). Fix order of #includes. Use gi18n.h. Don't include rhythmdb.h twice. Declare one variable per line. Update copyright date. 2006-05-19 James Livingston patch by: Hendrik Richter * shell/rb-shell.c: (rb_shell_cmd_about): change the separator in "translator_credits" to a hyphen, so it doesn't cause problems for tools that check access keys. Fixes bug 341832. 2006-05-19 James Livingston * po/POTFILES.in: remove references to files that don't exist any more (fixes make distcheck). 2006-05-19 Dennis Cranston * plugins/lyrics/lyrics.py: Fix layout close button in Song Lyrics dialog. Fixes bug 342322. 2006-05-19 James Livingston patch by: Loïc Minier * widgets/eggtrayicon.c: (egg_tray_icon_unrealize), (egg_tray_icon_cancel_message), (egg_tray_icon_notify): Make the version checks not break when libnotify goes to 1.0.0. Fixes bug 342244. 2006-05-18 James Livingston * shell/rb-shell-clipboard.c: * shell/rb-shell.c: * sources/rb-podcast-source.c: Fix some conflicting keybindings. 2006-05-17 William Jon McCann * sources/rb-playlist-source-recorder.c (get_song_description): Reverse artist and title in song description. This is useful because at least the title will be visible when there is limited space. 2006-05-17 Jonathan Matthew * daapsharing/rb-daap-connection.c: (connection_get_password): Take gdk lock before emitting authenticate signal. * sources/rb-daap-source.c: (connection_connecting_cb): Get rid of the unnecessary idle handler (it's already called from one) Fixes #342047 once more. 2006-05-17 Jonathan Matthew * shell/rb-shell.c: (rb_shell_class_init): * shell/rb-shell.h: * widgets/rb-song-info.c: (rb_song_info_class_init), (rb_song_info_construct_single), (rb_song_info_construct_multiple), (rb_song_info_constructor), (rb_song_info_get_property), (rb_song_info_append_page), (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb): * widgets/rb-song-info.h: * data/glade/song-info-multiple.glade: * lib/rb-marshal.list: * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: Allow plugins to add pages to the notebooks used in song info windows, and to track the current song displayed in single-entry windows. * configure.ac: * plugins/Makefile.am: * plugins/lyrics/Loader.py: * plugins/lyrics/Makefile.am: * plugins/lyrics/lyrics.py: * plugins/lyrics/lyrics.rb-plugin.desktop.in: Add a plugin that retrieves song lyrics from leoslyrics.com, displayed as a separate window (for the playing song) or as a page in the song info window. A few TODO items left, but this fixes #319320. 2006-05-17 Jonathan Matthew Patch by: Roozbeh Pournader * configure.ac: * lib/rb-cut-and-paste-code.c: (eel_strdup_strftime): Update eel_strdup_strftime from eel CVS HEAD. Fixes #341938. 2006-05-17 Jonathan Matthew * sources/rb-daap-source.c: (update_connection_status): Correct return value. Fixes #342047 again. 2006-05-17 Jonathan Matthew * sources/rb-daap-source.c: (update_connection_status), (connection_connecting_cb): Update status in an idle handler so we don't rely on the gdk lock being recursive (because it isn't any more). Fixes #342047. 2006-05-16 Jonathan Matthew * lib/rb-util.c: (rb_make_duration_string), (rb_make_elapsed_time_string): * lib/rb-util.h: Add a function for formatting an elapsed time string. * shell/rb-shell-player.c: (rb_shell_player_init), (rb_shell_player_sync_with_source), (rb_shell_player_get_playing_time_string), (tick_cb): Store elapsed time in the private data structure, and use the above function. * widgets/rb-header.c: * widgets/rb-header.h: Make RBHeader use the RBShellPlayer object, rather than the RBPlayer object, so everything has the same idea of the elapsed time. Fixes #339693. 2006-05-16 James Livingston * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: give rhythmdb.query_model_new some parametre defaults, so you don't have to pass None, False for the sorting order. 2006-05-16 Jonathan Matthew * bindings/python/rhythmdb.defs: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_compute_status_normal): * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb.c: (rhythmdb_compute_status_normal): * rhythmdb/rhythmdb.h: Change the various compute_status methods to accept a singular/plural pair to use in the status string. * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_cmd_new_podcast), (impl_get_status): * sources/rb-source.c: (default_get_status): Call entries 'songs' by default, and 'episodes' in the podcast source. Fixes #340227. 2006-05-16 Jonathan Matthew patch by: Paul Drain * plugins/ipod/Makefile.am: add $(plugin_in_files) to EXTRA_DIST. Fixes #341817. 2006-05-16 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (apply_updated_entry_sequence): Generate reorder maps correctly. * widgets/rb-entry-view.c: (rb_entry_view_rows_reordered_cb): Scroll to the first entry from the old selection. Fixes #322992. 2006-05-15 William Jon McCann * data/ui/rhythmbox-ui.xml: * lib/rb-preferences.h: * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_playlist_created_cb), (rb_shell_view_sidepane_changed_cb), (rb_shell_sync_sidepane_visibility), (rb_shell_sync_pane_visibility), (rb_shell_sync_smalldisplay), (sidepane_visibility_changed_cb): * sources/rb-podcast-source.c: Convert sourcelist visibility to side-pane visbility. Fixes #339733 2006-05-15 Jonathan Matthew * widgets/rb-header.c: * widgets/rb-header.h: Stop RBHeader from referring to itself as 'player', and make it use the private data structure allocated for it. 2006-05-15 Jonathan Matthew * configure.ac: enable metadata helper with dbus < 0.35. 2006-05-15 James Livingston patch by: Alex Lancaster * data/glade/song-info.glade: * widgets/rb-song-info.c: (rb_song_info_construct_single), (rb_song_info_populate_dialog), (rb_song_info_update_duration), (rb_song_info_update_filesize): Add the file size into the song info window. Fixes bug 340861. 2006-05-14 Jonathan Matthew * bindings/python/rhythmdb.defs: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_new_empty), (rhythmdb_query_model_chain): * rhythmdb/rhythmdb-query-model.h: Add a new method to chain query models without importing entries from the parent into the child. This is useful when the subset of entries in the child can be more easily determined by running a query than by filtering entries from the parent. * bindings/python/rb.defs: * widgets/rb-library-browser.c: (rb_library_browser_class_init), (rb_library_browser_set_property), (rb_library_browser_get_property), (rb_library_browser_new), (rebuild_child_model): * widgets/rb-library-browser.h: * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_constructor): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_constructor): * sources/rb-browser-source.c: (rb_browser_source_constructor): Use more efficient queries for constructing the browser query model chain. Include the entry type at each level (allowing the rhythmdb-tree backend to optimise the query) and run new queries rather than filtering entries from the parent. Fixes #341402. * configure.ac: remove reference to rhythmbox.pc that I missed earlier. 2006-05-14 Jonathan Matthew * configure.ac: * shell/Makefile.am: * shell/main.c: (main), (load_uri_args), (send_present_message), (unregister_dbus_handler), (handle_dbus_message), (register_dbus_handler): Add minimal support for dbus 0.31 - 0.35. * doc/reference/Makefile.am: * doc/reference/rhythmbox.types: * data/Makefile.am: * data/GNOME_Rhythmbox.server.in: * data/rhythmbox.pc.in: * remote/*: * remote/bonobo/*: Remove remaining bonobo and generic remote interface files. 2006-05-14 James Livingston * shell/rb-shell.c: (construct_widgets): * sources/rb-browser-source.c: (rb_browser_source_constructor): Never resize the browser and queue-sidebar section of their panes, unless the other section is below the minimum size. Fixes bug 331927. 2006-05-13 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_set_property), (rhythmdb_query_model_get_property), (rhythmdb_query_model_finalize), (rhythmdb_query_model_new), (rhythmdb_query_model_insert_into_main_list), (rhythmdb_query_model_insert_into_limited_list), (rhythmdb_query_model_do_reorder), (rhythmdb_query_model_set_sort_order), (_reverse_sorting_func), (rhythmdb_query_model_location_sort_func), (rhythmdb_query_model_title_sort_func), (rhythmdb_query_model_album_sort_func), (rhythmdb_query_model_artist_sort_func), (rhythmdb_query_model_genre_sort_func), (rhythmdb_query_model_track_sort_func), (rhythmdb_query_model_double_ceiling_sort_func), (rhythmdb_query_model_ulong_sort_func), (rhythmdb_query_model_date_sort_func), (rhythmdb_query_model_string_sort_func): * rhythmdb/rhythmdb-query-model.h: Make the sorting data be a gpointer instead of a RhythmDBPropType (which can be put in a gpointer). Add a "data destroy" property. Fixed bug 341543. * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: bind rhythmdb_query_model_new and rhythmdb_query_model_set_sorting_order * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_drag_data_get): * sources/rb-import-errors-source.c: (rb_import_errors_source_constructor): * sources/rb-missing-files-source.c: (rb_missing_files_source_constructor): * widgets/rb-entry-view.c: (rb_entry_view_append_column), (rb_entry_view_append_column_custom), (rb_entry_view_resort_model): * widgets/rb-entry-view.h: adapt to the above change. 2006-05-13 Jonathan Matthew * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (rhythmdb_tree_load): Commit loaded entries in batches, rather than individually. More startup time reduction. 2006-05-12 Ryan P Skadberg * doc/reference/Makefile.am: fix gtk-doc compilation 2006-05-12 William Jon McCann * plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py: * plugins/artdisplay/artdisplay/CoverArtDatabase.py: * plugins/artdisplay/artdisplay/Loader.py: Correct fallback to medium size. Convert & to "and" when doing comparisons. Only call the first artist the best match when album==Unknown. Don't perform each query twice if album doesn't include "Vol N". Fix searching for compilations. Fix blacklisting. Part of bug #307848 2006-05-12 William Jon McCann * Makefile.am: * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: * configure.ac: * doc/reference/Makefile.am: * plugins/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/ipod/Makefile.am: * plugins/lirc/Makefile.am: * plugins/lirc/rb-lirc-plugin.c: (rb_lirc_plugin_read_code), (impl_activate), (impl_deactivate): * plugins/sample/Makefile.am: * remote/Makefile.am: * shell/Makefile.am: * shell/main.c: (main), (main_shell_weak_ref_cb): * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_set_property), (rb_shell_get_property), (rb_shell_window_state_cb), (idle_hide_mainwindow), (rb_shell_set_visibility), (rb_shell_playing_entry_changed_cb), (tray_destroy_cb), (rb_shell_set_song_property): * shell/rb-shell.h: * shell/rb-tray-icon.c: (rb_tray_icon_class_init), (rb_tray_icon_sync_action), (rb_tray_icon_set_property), (rb_tray_icon_get_property), (rb_tray_icon_new), (rb_tray_icon_button_press_event_cb), (rb_tray_icon_scroll_event_cb), (rb_tray_icon_drop_cb), (rb_tray_icon_show_window_changed_cb): * shell/rb-tray-icon.h: Remove bonobo, require DBUS. Patch from Jonathan Matthew Fixes #339720 2006-05-13 James Livingston * bindings/python/rb.override: fix some pointer-type warnings 2006-05-12 James Livingston * lib/rb-util.c: (rb_value_free): * lib/rb-util.h: Add function to unset and free a GValue* that was allocated in the heap. * metadata/rb-metadata-dbus-client.c: (rb_metadata_load): don't leak the metadata hastable values * metadata/rb-metadata-dbus-service.c: (rb_metadata_dbus_save): don't leak the metadata hashtable structure * metadata/rb-metadata-dbus.c: (rb_metadata_dbus_read_from_message):use g_value_set_string instead of using g_strdup and then _take_string * rhythmdb/rhythmdb.c: (rhythmdb_start_action_thread), (rhythmdb_execute_stat): Don't leak the GnomeVFSURIs every time we stat something. * shell/rb-audioscrobbler.c: (rb_audioscrobbler_do_handshake): don't leak the encoded string * widgets/rb-property-view.c: (rb_property_view_selection_changed_cb): set some variables to have inital values, because some code paths may not set them before we use them. * plugins/rb-plugins-engine.c: (rb_plugins_engine_load): turn the "you don't have python warning into a debug message". 2006-05-10 William Jon McCann * data/rhythmbox.schemas: Use zero instead of null for default burn speed. Fixes #341283. 2006-05-10 Jonathan Matthew * bindings/python/rb.defs: * widgets/rb-library-browser.c: (rb_library_browser_get_property_view): * widgets/rb-library-browser.h: Add a method to get the property view for a given property. * sources/rb-browser-source.c: (rb_browser_source_cmd_choose_genre), (rb_browser_source_cmd_choose_artist), (rb_browser_source_cmd_choose_album): Change the browser selection by changing the property view selection. Makes the selection change visible, fixing #331740. 2006-05-10 Jonathan Matthew * bindings/python/rb.defs: * bindings/python/rb.override: * rhythmdb/rhythmdb.c: (rhythmdb_is_busy): * shell/rb-statusbar.c: (*), * sources/rb-import-errors-source.c: (impl_get_status): * sources/rb-iradio-source.c: (impl_get_status): * sources/rb-missing-files-source.c: (impl_get_status): * sources/rb-source.c: (default_get_status), (rb_source_get_status): * sources/rb-source.h: Allow sources to provide a progress value for the status bar. Simplify status bar processing (much less polling). Consider rhythmdb busy while it's still loading the database. * daapsharing/rb-daap-connection.c: (*) * daapsharing/rb-daap-connection.h: * lib/rb-marshal.list: * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_init), (connection_connecting_cb), (rb_daap_source_activate), (rb_daap_source_get_paned_key), (rb_daap_source_get_status): Provide status information for DAAP connections, and move processing of large responses into a separate thread. Fixes bugs #322020 and #338978. 2006-05-09 James Livingston Split the artdisplay plugin into several files. Fix loader and amazon-search re-use issues. Add some better search heuristics. * configure.ac: * plugins/artdisplay/Makefile.am: * plugins/artdisplay/artdisplay.py: * plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py: * plugins/artdisplay/artdisplay/CoverArtDatabase.py: * plugins/artdisplay/artdisplay/Loader.py: * plugins/artdisplay/artdisplay/Makefile.am: * plugins/artdisplay/artdisplay/__init__.py: 2006-05-09 James Livingston * sources/rb-browser-source.h: remove the _has_first_added_column stuff since it isn't actually used anywhere. Sources that want it should just add it themselves, as the library already does * bindings/python/rb.defs: * sources/rb-daap-source.c: (rb_daap_source_class_init): * sources/rb-library-source.c: (rb_library_source_class_init): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): Remove the remanants of the above. 2006-05-09 James Livingston * bindings/python/rb.defs: * sources/rb-browser-source.h: remove a function that was declared in the header, but not defined anywhere. 2006-05-09 Jonathan Matthew * plugins/artdisplay/.cvsignore: * plugins/ipod/.cvsignore: Added. 2006-05-09 Jonathan Matthew * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_new_from_xml): Fix reading of older playlist files where all three limits were specified so we take the first nonzero limit. From #341053. 2006-05-09 James Livingston * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: bind RBBrowserSource, RBRemovableMediaSource and RBRemovableMediamanager. 2006-05-09 James Livingston patch by: Baptiste Mille-Mathias * data/glade/plugins.glade: make the plugin dialog look a bit better. Fixes bug 339221. 2006-05-09 Jonathan Matthew * widgets/rb-query-creator.c: (rb_query_creator_load_query): Don't explode when trying to edit a query with no limit set. 2006-05-09 Jonathan Matthew * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): Clear the should_queue flag when switching to a non-submittable entry, so we don't submit songs that played for three seconds before switching to a podcast episode. * rhythmdb/rhythmdb-query-model.c (rhythmdb_query_model_drag_data_get): Don't try to include NULL uris in the drag data list. 2006-05-08 James Livingston * lib/rb-util.c: (rb_value_array_append_data): * lib/rb-util.h: add function which is basically a combination of G_VALUE_COLLECT and g_value_array_append. * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_set_property), (rhythmdb_query_model_get_property), (rhythmdb_query_model_finalize), (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_set_sort_order), (rhythmdb_query_model_within_limit), (rhythmdb_query_model_limit_type_get_type): Make query model limits saner. Rather than having we now have a pair. This will also make it much easier to add new limit types in the future. * shell/rb-playlist-manager.c: (rb_playlist_manager_set_automatic_playlist), (rb_playlist_manager_cmd_edit_automatic_playlist): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_finalize), (rb_auto_playlist_source_new_from_xml), (impl_receive_drag), (_save_write_ulong), (_save_write_uint64), (impl_save_contents_to_xml), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_get_query): * sources/rb-auto-playlist-source.h: * sources/rb-library-source.c: (rb_library_source_add_child_source): * sources/rb-psp-source.c: (visit_playlist_dirs): * widgets/rb-query-creator.c: (rb_query_creator_load_query), (rb_query_creator_new_from_query), (rb_query_creator_get_limit): * widgets/rb-query-creator.h: Adapt to the above change. 2006-05-08 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_cmd_edit_automatic_playlist): * sources/rb-auto-playlist-source.c: (impl_save_contents_to_xml), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_get_query): copy the query in the _get method and free it in things calling that. Fixes a crasher. 2006-05-08 Jonathan Matthew * rhythmdb/rhythmdb.c: (entry_volume_mounted_or_unmounted): Make entries on newly mounted volumes visible immediately, hiding them later if they turn out to be missing. Fixes #340068. 2006-05-07 Jonathan Matthew * metadata/rb-metadata-gst.c: (rb_metadata_finalize): Ignore zip files and ignore errors for files we've decided to ignore. 2006-05-07 Jonathan Matthew * sources/rb-ipod-source.c: (hal_udi_is_ipod): Add missing }, should fix #340844. 2006-05-06 James Livingston * plugins/artdisplay/artdisplay.py: fade between covers, and fix a typo. 2006-05-06 James Livingston * widgets/eggtrayicon.c: (egg_tray_icon_notify): fix version check so that we work with libnotify >= 0.4 2006-05-06 James Livingston patch by: Joe Barnett * configure.ac: check if we're using a version of libgpod that supports the Motorola ROKR * sources/rb-ipod-source.c: (rb_ipod_get_itunesdb_path): ask libgpod for the db path, if we using the newer version. (rb_ipod_volume_has_ipod_db): detect Motorola ROKR phones. 2006-05-05 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_get): Use playback URI, not location, for drag data. Fixes #322597. 2006-05-03 Dennis Cranston * data/glade/general-prefs.glade: HIG fixes from bug 340588. 2006-05-03 James Livingston * metadata/rb-metadata-gst.c: (rb_add_flac_tagger), (rb_add_id3_tagger), (rb_metadata_save): Set the tags on the tagging element when it is created, not during pipeline creation - which is required for dynamically created elements. (ogg_pad_added_cb), (rb_add_ogg_tagger), (rb_metadata_init): add support for using the "vorbistag" element to re-tag ogg vorbis files. Fixes bug 339878. 2006-05-03 James Livingston patch by: Martin Szulecki * plugins/artdisplay/artdisplay.py: - Fix small bug callback of data loader getting overwritten on fast connections. - Add asynchronous loading with gnomevfs and urllib fallback (thx to Jonathan Matthew) - Fix Rhythmbox UI blocking while loading/searching cover art - Split logic into CoverArtDatabase, AmazonCoverArtSearch - Initial approach to allow additional "art search engines" - Further modularization in a couple of places - Minor fixes for empty entries (iradio, album, artist etc.) 2006-05-03 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_playlist_entries_changed), (rb_playlist_manager_set_source): don't show the edit/delete/rename options for non-local sources, rather than showing disabled ones. * sources/rb-library-source.c: (add_child_sources_idle), (rb_library_source_constructor), (rb_library_source_new), (rb_library_source_library_location_changed), (rb_library_source_add_child_source), (rb_library_source_sync_child_sources): Create "child library" sources when the user has multiple library locations set. Fixes bug 100552. 2006-05-03 Jonathan Matthew * plugins/rb-plugins-engine.c: (rb_plugins_engine_load): * plugins/sample/sample.rb-plugin.desktop.in: Finish changing 'Author' to 'Authors' * rhythmdb/rhythmdb.c: (_get_import_error_playback_uri), (rhythmdb_entry_import_error_get_type): Implement get_playback_uri for import errors (returns NULL) * shell/rb-shell-player.c: (rb_shell_player_entry_activated_cb): Use rhythmdb_entry_get_playback_uri to figure out if we can play the entry, rather than doing entry type checks. 2006-05-02 James Livingston patch from Alessandro Decina * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_encode): fix the signal emission in the case of fatal-on-init errors. From bug 322268. 2006-05-02 James Livingston * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (rhythmdb_entry_allocate), (rhythmdb_entry_finalize), (_get_podcast_playback_uri), (rhythmdb_entry_podcast_post_get_type), (rhythmdb_entry_get_double), (rhythmdb_entry_get_playback_uri): add a virtual function to entry-types for getting the playback URI. From bug 330226. * backends/gstreamer/rb-encoder-gst.c: (create_pipeline_and_source), (extract_track): * shell/rb-shell-player.c: (rb_shell_player_open_entry): use the above to get the URI. 2006-05-02 James Livingston patch by: Brian Cameron * sources/rb-nokia770-source.c: more Solaris build fixes, from bug 340337. 2006-05-01 William Jon McCann * plugins/artdisplay/artdisplay.py: Use set_from_pixbuf instead of clear. Use regex matching to strip "disc N" from album. Match titles in ProductName. Perform fallback queries including various artist compilations. Include "us" locale. Improve queries when artist or album is unknown. Use medium size image if large is unavailable. patch by: Alex Lancaster , William Jon McCann 2006-04-30 Jonathan Matthew * rhythmdb/rhythmdb-tree.c: (get_genres_hash_for_type): RhythmDBEntryType is a pointer now, so GINT_TO_POINTER is unnecessary. (conjunctive_query): Sanity check. (evaluate_conjunctive_subquery): Don't return TRUE immediately when a relative-time query criterion matches. Fixes #339972. 2006-04-29 Jonathan Matthew * widgets/eggtrayicon.c: (egg_tray_icon_notify): Don't crash if primary or secondary are NULL. 2006-04-29 Jonathan Matthew * doc/reference/Makefile.am: fix gtk-doc build yet again 2006-04-28 James Livingston * plugins/pythonconsole/pythonconsole.py: import "rhythmdb" into the python console. Fixes bug 339934. 2006-04-27 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_drag_data_get): When creating uri list drag data, create a new query model based on the query model the property model is attached to. Makes the resulting query use the right entry type and include the upstream query criteria. Fixes half of #327540. 2006-04-27 James Livingston * backends/gstreamer/rb-encoder-gst.c: (encoder_match_mime), (profile_bin_find_encoder), (get_profile_from_mime_type): more gst 0.8 build fixes. 2006-04-27 James Livingston * player/rb-player-gst.c: (error_cb): Fix build with GStreamer 0.8 2006-04-27 Jonathan Matthew * shell/rb-playlist-manager.c: (rb_playlist_manager_init), (rb_playlist_manager_save_data), (rb_playlist_manager_save_playlists): * shell/rb-playlist-manager.h: * shell/rb-shell.c: (rb_shell_sync_state), (idle_save_playlist_manager): Remove a bit more threading insanity from the playlist manager. 2006-04-27 Jonathan Matthew * shell/rb-playlist-manager.c: * shell/rb-playlist-manager.h: Remove dead code, add gtk-doc, remove threading insanity (mostly). * shell/rb-shell.c: (rb_shell_sync_state), (idle_save_playlist_manager), (construct_sources), (rb_shell_select_source), (rb_shell_sync_party_mode): Adjustments for above changes. 2006-04-26 William Jon McCann * sources/rb-browser-source.c (impl_browser_toggled): Reset browser when hidden. Fixes #339617. 2006-04-26 James Livingston * backends/Makefile.am: * backends/gstreamer/Makefile.am: work again with separated built-roots 2006-04-26 James Livingston * shell/rb-removable-media-manager.c: (rb_removable_media_manager_set_uimanager): fix compilation with -Werror and --enable-track-transfer. 2006-04-26 James Livingston Turn RBPlayer into a full gobject interface, with RBPlayerGst as an implementing class. In theory allows alternate player implementations to be selected at run-time rather than compile-time. Fixes bug 338667. * Makefile.am: * backends/Makefile.am: * backends/gstreamer/Makefile.am: * backends/gstreamer/rb-player-gst.h: * backends/rb-player.c: (rb_player_interface_init), (rb_player_get_type), (rb_player_open), (rb_player_opened), (rb_player_close), (rb_player_play), (rb_player_pause), (rb_player_playing), (rb_player_set_volume), (rb_player_get_volume), (rb_player_set_replaygain), (rb_player_seekable), (rb_player_set_time), (rb_player_get_time), (rb_player_new), (_rb_player_emit_eos), (_rb_player_emit_info), (_rb_player_emit_buffering), (_rb_player_emit_error), (_rb_player_emit_tick), (rb_player_error_quark): * player/Makefile.am: * player/rb-player-gst.c: (rb_player_gst_class_init), (rb_player_init), (tick_timeout), (rb_player_gst_init), (rb_player_gst_finalize), (rb_player_gst_gst_free_playbin), (destroy_idle_signal), (emit_signal_idle), (eos_cb), (error_cb), (process_tag), (found_tag_cb), (buffering_cb), (rb_player_gst_bus_cb), (rb_player_gst_construct), (rb_player_gst_new): * player/rb-player.h: * shell/Makefile.am: * sources/rb-audiocd-source.c: * widgets/Makefile.am: * widgets/rb-header.c: (rb_header_class_init): 2006-04-26 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): don't try to download an episode if it couldn't be parsed. Fixes bug 339712. * shell/rb-removable-media-manager.c: (rb_removable_media_manager_set_uimanager): don't show the "Copy to Library" option when track transfer is disabled. Fixes bug 339728. 2006-04-26 James Livingston * data/ui/Makefile.am: * data/ui/daap-ui.xml: * data/ui/rhythmbox-ui.xml: * sources/rb-daap-source.c: (rb_daap_sources_init), (rb_daap_sources_shutdown): separate the DAAP ui stuff out in the same way that the ipod ui is. Fixes bug 339743. 2006-04-26 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_emit_entry_signals_idle), (process_added_entries_cb), (process_deleted_entries_cb), (rhythmdb_commit_internal): Combine the idle functions to emit entry-added and entry-deleted, and combine as many invocations of same as possible. Another significant reduction in startup time. (rhythmdb_process_events), (rhythmdb_idle_poll_events): Delay the next call to rhythmdb_process_events if the queue is empty or if we can't process any of the events in the queue because the database is read only. This patch brought to you by the numbers 3, 2, 5, 2, 1, and 5. 2006-04-25 William Jon McCann * player/rb-recorder-gst.c (rb_recorder_burn): Add debug. * sources/rb-playlist-source-recorder.c (burn_cd_idle, burn_cd): Don't special case errors quite so much. 2006-04-25 William Jon McCann * data/rhythmbox.schemas: Remove default speed. * sources/rb-playlist-source-recorder.c (update_speed_combobox): Add n-c-b 2.15 support. Make the default speed to slowest since that is all that works reliably. 2006-04-25 William Jon McCann * backends/gstreamer/rb-encoder-gst.c (profile_bin_find_encoder): Fix compiler error from last commit. 2006-04-25 James Livingston patch by Alessandro Decina to fix some transcoding-related issues. From bug 322268. * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_finalize): don't emit the signal, since the object is being finalised, which os a Bad Thing To Do. (profile_bin_find_encoder), (get_profile_from_mime_type), (transcode_track): find the encoding element by iterating looking for element in the class Codec/Encoder/Audio rather than the one named "enc". 2006-04-25 Jonathan Matthew * shell/rb-shell-player.xml: * shell/rb-shell.xml: Add signal argument information. Patch by Tim Moloney * shell/rb-shell.c: (rb_shell_window_state_cb): Use the right value for the visibility_changed signal. Most of the time, anyway. 2006-04-25 Jonathan Matthew * plugins/audioscrobbler/audioscrobbler.rb-plugin.desktop.in: * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: (impl_create_configure_dialog): * data/glade/audioscrobbler-prefs.glade: * shell/rb-audioscrobbler.c (*): * lib/rb-preferences.h: * data/rhythmbox.schemas: Remove 'audioscrobbler' from the UI, replacing it with 'last.fm'. Add status information (# tracks submitted, # queued, last submit time, result of last submission) to the plugin config window. Remove 'enabled' setting, since it's easier to just disable the plugin. Call the plugin 'last.fm profile', to distinguish it from the nonexistant (so far) 'last.fm streaming' plugin. * help/C/rhythmbox.xml: Update documentation for last.fm profile plugin Fixes some of #325848. We still don't provide a way to view the submission queue. 2006-04-25 James Livingston patch by: Anders Petersson * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): Parse dates in the YY-MM-DD format. 2006-04-23 James Livingston * bindings/python/override_common.c: (_helper_wrap_pointer_glist), (_helper_wrap_boxed_gptrarray), (_helper_unwrap_pointer_pylist): * bindings/python/override_common.h: * bindings/python/rb.override: python binding fixes 2006-04-23 James Livingston * shell/rb-statusbar.c: (rb_statusbar_finalize), (rb_statusbar_sync_with_source), (rb_statusbar_source_status_changed_cb): do the sync in an idle callback, rather than immediately every time. Takes ~5% off my warm-cache startup time. * bindings/python/rhythmdb.defs: fix the types using for RhythmDBEntryTypes. 2006-04-22 James Livingston * data/ui/rhythmbox-ui.xml: * shell/rb-shell.c: * sources/rb-daap-source.c: (rb_daap_source_class_init), (remove_source), (rb_daap_sources_init), (rb_daap_sources_shutdown), (rb_daap_source_cmd_disconnect), (rb_daap_source_disconnect): * sources/rb-source.c: (rb_source_class_init), (rb_source_deactivate): * sources/rb-source.h: move the "disconnect" functionality from into RBSource to RBDaapSource where it belongs. Fixes bug 338464. 2006-04-22 James Livingston * widgets/rb-library-browser.c: (rb_library_browser_constructor): actually get the translated strings for browser headers (they were already marked as translatable). Fixes bug 339380.