============ Version 0.10.1 2007-05-28 James Livingston * configure.ac: bump version for the release * NEWS: 2007-05-28 James Livingston * plugins/audioscrobbler/rb-audioscrobbler.c: (rb_audioscrobbler_init), (rb_audioscrobbler_timeout_cb), (rb_audioscrobbler_do_handshake), (rb_audioscrobbler_submit_queue), (rb_audioscrobbler_preferences_sync), (rb_audioscrobbler_gconf_changed_cb): don't crash if the username/password isn't set. Fixes #426312 2007-05-28 James Livingston * plugins/ipod/rb-ipod-source.c: (rb_ipod_source_constructor), (rb_ipod_load_songs): fix a crasher, closes #441444 * plugins/audioscrobbler/Makefile.am: fix the build. 2007-05-23 James Livingston patch by: Bastien Nocera * plugins/generic-player/rb-generic-player-source.c: (handle_playlist_entry_cb), (load_playlist_file): * plugins/iradio/rb-iradio-source.c: (handle_playlist_entry_cb), (rb_iradio_source_add_from_playlist): * shell/rb-playlist-manager.c: (handle_playlist_entry_cb), (rb_playlist_manager_parse_file): * shell/rb-shell-player.c: (playlist_entry_cb), (open_location_thread): * shell/rb-shell.c: (handle_playlist_entry_cb), (rb_shell_load_uri): * sources/rb-playlist-source.c: (rb_playlist_source_save_playlist): Convert to using the new totem-pl-parser API, with a compile-time fallback on the old API 2007-05-20 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_shutdown): Take a copy of the download list; otherwise, cancelling jobs modifies the list while it's being iterated. Fixes #404169. 2007-05-08 Christophe Fergeau * plugins/visualizer/rb-visualizer-plugin.c: (rb_visualizer_plugin_dispose): remove timeout callback in dispose, fixes bug #436355 2007-05-07 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_base_rows_reordered): Only process reordered entries that are in the child model. Fixes #436329. 2007-04-28 Jonathan Matthew * plugins/jamendo/jamendo/JamendoSource.py: * plugins/magnatune/magnatune/MagnatuneSource.py: Cancel outstanding async transfers when the source is deleted, rather than trying to close the target file, which won't actually do anything anyway. Fixes #434003. 2007-04-26 Jonathan Matthew * bindings/python/rhythmdb.override: Check that an entry was actually passed to db.entry_get(). Fixes #432949. 2007-04-21 Bastien Nocera * metadata/rb-metadata-gst.c: (rb_metadata_gst_load_tag): Don't replace a string with another shorter version of it, avoids problems with ID3v1 tags being preferred to ID3v2 tags when they have the same data (Closes: #428276) 2007-04-21 Jonathan Matthew * plugins/audiocd/rb-audiocd-source.c: (metadata_cb): Apparently metadata_cb can be called with no error set and albums == NULL. Don't crash in this case. Fixes #414864. 2007-04-21 Jonathan Matthew * plugins/rb-python-module.c: (rb_python_module_init_python): Disable pyg* log hooks, since they appear to cause crashes when used from multiple threads, and they're annoying anyway. Probably fixes #429687. 2007-04-19 Jonathan Matthew patch mostly by: Irene Huang * plugins/visualizer/rb-visualizer-plugin.c: (rb_visualizer_plugin_window_title_change_cb): Be kind to c libraries that don't like NULL strings. Fixes #418886. 2007-04-14 Christophe Fergeau * plugins/ipod/rb-ipod-source.c: apply patch from trunk rev 4977 which the previous commit depends on. Fixes bug #386662 some more... 2007-04-03 Christophe Fergeau * plugins/ipod/rb-ipod-source.c: (impl_move_to_trash): call schedule_save instead of directly calling itdb_save after removing a file, this makes sure file deletion works on iPod shuffles as well. Initial patch by William , fixes bug #386662 ============ Version 0.10.0 2007-04-02 James Livingston * configure.ac: bump version. * NEWS: add news 2007-03-29 James Livingston * lib/rb-util.c: (rb_string_list_contains): * lib/rb-util.h: * sources/rb-removable-media-source.c: (impl_paste): backport the change to hack around our having application/x-id3 for MP3s. 2007-03-26 James Livingston * data/glade/playlist-save.glade: make the playlist format combo not be so huge. Fixes #419153 2007-03-20 Jonathan Matthew * plugins/visualizer/rb-fake-visualizer.c: (rb_fake_vis_chain): Set a timestamp on the first frame. Should fix some seeking problems. 2007-03-20 James Livingston patch by: Adam Zimmerman * plugins/magnatune/magnatune/TrackListHandler.py: handle the release date being not an integer. Fixes #414980 2007-03-20 James Livingston * lib/rb-file-helpers.c: (_gnomevfs_info_unreadable), (rb_uri_handle_recursively_cb): * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_finalize), (rhythmdb_add_uri_with_type): make files starting with a dot not get added. Again. Fixes #395124 2007-03-20 Jonathan Matthew * metadata/Makefile.am: * metadata/rb-metadata-dbus-client.c: (start_metadata_service): Apply the program name transform to the metadata helper name and pass it in as a preprocessor symbol so we can find it when configured with --program-suffix etc. Fixes #419874. 2007-03-20 Irene Huang * shell/main.c: (main): Should call gdk_threads_enter/leave after gdk_threads_init in main. Fixes bug # 420444. 2007-03-11 James Livingston * plugins/artdisplay/rhythmbox-missing-artwork.svg: replace with a GPL-licenced vesion by Jakub Steiner, since CC-BY-SA licencing apparently has issues with GPL-licenced programs. 2007-03-10 Jonathan Matthew * plugins/power-manager/rb-power-manager-plugin.c: (proxy_destroy_cb), (create_dbus_proxy), (inhibit), (uninhibit), (impl_activate): Use dbus_g_proxy_new_for_name_owner instead of dbus_g_proxy_new_for_name so dbus doesn't start g-p-m if it's not already running. Recreate the dbus proxy as required. Fixes #416213. 2007-03-09 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (rhythmdb_tree_save), (rhythmdb_tree_entry_type_registered): hold the entries lock when accessing the unknown-entries map. Fixes #416024 2007-03-06 Jonathan Matthew * plugins/visualizer/rb-visualizer-plugin.c: (find_xoverlay), (bus_sync_message_cb), (rb_visualizer_plugin_window_id_notify_cb), (update_window): Check we actually found an x overlay interface before trying to use it. 2007-03-03 James Livingston * lib/rb-util.c: (rb_assert_locked), (rb_threads_init), (rb_str_in_strv): * lib/rb-util.h: add util function which asserts that a lock is being held (only works on systems where GMutex isn't recursive) * rhythmdb/rhythmdb-tree.c: (unparent_entries), (rhythmdb_tree_finalize), (set_entry_album), (rhythmdb_tree_entry_new_internal), (get_or_create_genre), (get_or_create_artist), (get_or_create_album), (remove_entry_from_album), (rhythmdb_tree_entry_set), (rhythmdb_tree_entry_delete), (remove_one_song), (rhythmdb_tree_entry_delete_by_type): take the tree lock in other paths, and use the above function to ensure the lock is being held. Fixes #393642 and probably others 2007-03-03 James Livingston patch by: Alex "weej" Jones * plugins/audioscrobbler/Makefile.am: * plugins/audioscrobbler/as-icon.svg: * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: (impl_activate): * plugins/audioscrobbler/rb-lastfm-source.c: (rb_lastfm_source_init): Use audioscrobbler logo for the source, which the last.fm guys have said is fine. Fixes #409164 2007-03-02 James Livingston patch by: Andreas Hanke * configure.ac: * macros/acinclude.m4: remove use of AS_AC_EXPAND. Fixes #413301 2007-03-02 James Livingston patch mostly by: Christophe Fergeau * plugins/rb-plugins-engine.c: (rb_plugins_engine_load): * sources/rb-sourcelist.c: (rb_sourcelist_source_to_iter), (rb_sourcelist_visible_source_to_iter): fix more leaks 2007-03-02 James Livingston * plugins/rb-plugin-manager.c: (plugin_manager_view_cell_cb): don't crash if the plugin has NULL for the name, just emit a critical warning. Fixes #413206 2007-03-02 James Livingston patch by: Christophe Fergeau * plugins/audiocd/rb-audiocd-plugin.c: (rb_audiocd_plugin_mount_volume): fix a leak 2007-03-02 James Livingston * lib/rb-file-helpers.c: (rb_canonicalise_uri): don't crash. * podcast/rb-podcast-manager.c: (rb_podcast_manager_download_file_info_cb): generate proper URIs. Fixes #411189 2007-03-01 Alex Lancaster Patch partially by: Edward Rudd : * plugins/magnatune/magnatune/MagnatuneSource.py (MagnatuneSource.purchase_album): Pass in artist and album name to dialog correctly. Use set_markup() to italicise album name. Fixes #412931. 2007-03-01 Alex Lancaster Patch partially by: Kjell Braden : * plugins/jamendo/jamendo-loading.glade: Fix typos. Fixes #413640. 2007-02-26 Jonathan Matthew * plugins/daap/rb-daap-src.c: (rb_daap_src_open): Fix libsoup compatibility properly, so it actually works with 2.2.98 and earlier as well as 2.2.99 and newer. Fixes #410940. 2007-02-25 James Livingston * plugins/rb-plugins-engine.c: (rb_plugins_engine_load): handle keys being missing from the .rb-plugin file without crashing. Fixes #411558 2007-02-25 James Livingston * plugins/daap/rb-daap-share.c: (message_get_session_id), (message_get_revision_number): check that there is a query part in the URI before trying to use it. Fixes #411783 2007-02-25 James Livingston patch by: Julien Puydt * plugins/jamendo/jamendo/JamendoSource.py: improve error handling. Fixes #411038 2007-02-25 James Livingston * sources/rb-browser-source.c: (rb_browser_source_class_init): don't try to use a popup menu that doesn't exist. Fixes #411703 2007-02-25 James Livingston patch by: Nguyen Thai Ngoc Duy * plugins/artdisplay/artdisplay/CoverArtDatabase.py: import GError. Fixes #411122 2007-02-25 James Livingston patch by: Og Maciel * plugins/magnatune/magnatune/MagnatuneSource.py: fix a typo having a '.' instead of a '?'. Fixes #411584 2007-02-25 James Livingston patch by: Gilles Dartiguelongue * metadata/Makefile.am: fix parallel builds. Fixes #411145 2007-02-24 James Livingston patch by: Gilles Dartiguelongue * widgets/Makefile.am: unbreak LDFLAGS="-Wl,--as-needed". Fixes #411141, and maybe #380411 2007-02-22 James Livingston * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync): fix crasher, fixes #410601 2007-02-22 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_insert), (rhythmdb_property_model_delete_prop): Emit row-changed signals when property counts change. ============ Version 0.9.8 2007-02-21 James Livingston * plugins/ipod/rb-ipod-plugin.c: (rb_ipod_plugin_cmd_rename): * shell/rb-removable-media-manager.c: * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property): don't crash when we try to change the name of the ipod. Fixes #410338 2007-02-21 James Livingston * data/rhythmbox.schemas: turn on the art plugin by default * NEWS: release name 2007-02-21 James Livingston * NEWS: update NEWS * configure.ac: bump version for release * metadata/rb-metadata-gst.c: (rb_add_id3_tagger), (rb_metadata_init): remove id3tag support, since it break files. Fixes #401782 2007-02-21 James Livingston patch by: Ed Catmur * bindings/python/rhythmdb.override: make rhythmdb.emit_entry_extra_metadata_notify support passing None. Fixes #410105 2007-02-21 James Livingston * backends/gstreamer/rb-encoder-gst.c: (encoder_match_mime): ref the caps we get back from the mime->caps table, because we unref them later. Fixes some crashes. 2007-02-20 James Livingston * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: bind RB{Static,Auto,}PlaylistSource 2007-02-20 James Livingston * plugins/jamendo/jamendo/JamendoSource.py: * plugins/magnatune/magnatune/MagnatuneSource.py: don't use the synchronous callback, as it runs in the GnomeVFS worker thread and we don't have threading enabled. Should fix #397460 2007-02-20 James Livingston * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_class_init): change audio/aac to audio/mpeg, which I forgot to do when I copy and pasted the code. 2007-02-19 Jonathan Matthew * plugins/visualizer/rb-fake-visualizer.c: (rb_fake_vis_reset), (rb_fake_vis_chain): Make the fake visualizer push a frame as soon as possible so prerolling finishes. Fixes #409170. 2007-02-18 James Livingston * backends/gstreamer/rb-encoder-gst.c: (encoder_match_mime): add missing not symbol, and debug output. Should fix #405149 2007-02-18 James Livingston * plugins/audiocd/rb-audiocd-source.c: (rb_audiocd_source_new): don't emit a critical warning when the below happens. 2007-02-18 James Livingston * plugins/audiocd/rb-audiocd-source.c: (rb_audiocd_source_new): lower assertion to warning, since it can fail if the CD was removed in between the original check and this one. Fixes #408913 2007-02-17 James Livingston * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_class_init), (encoder_match_mime), (get_profile_from_mime_type), (get_profile_from_mime_types), (transcode_track), (rb_encoder_gst_get_preferred_mimetype): * backends/gstreamer/rb-encoder-gst.h: use caps intersection rather than just the mimetype to find out whether a pipeline will emit what is needed. This makes it correctly match things like AAC. From #405149 2007-02-17 James Livingston * widgets/rb-header.c: (rb_header_init), (rb_header_set_property), (rb_header_sync), (rb_header_set_show_timeline), (rb_header_sync_time), (rb_header_update_elapsed): display playing time of radio stations in the main UI as well as in the tooltip. Fixes #402650 2007-02-17 James Livingston * shell/rb-tray-icon.c: (rb_tray_icon_set_tooltip_icon), (rb_tray_icon_notify), (rb_tray_icon_construct_tooltip), (rb_tray_icon_create_blank_image): use a blank pixbuf so the art in the tray icon doesn't shuffle around patch by Ed Catmur * widgets/eggtrayicon.c: (egg_tray_icon_notify): update the notification bubble, rather than creating a new one. Stops some flickering. From #407246 2007-02-15 James Livingston * sources/rb-auto-playlist-source.c: (search_action_changed): * sources/rb-browser-source.c: (search_action_changed): * sources/rb-static-playlist-source.c: (search_action_changed): don't crash if the search action changes when a different type of source is selected. Fixes #407987 2007-02-14 James Livingston * plugins/iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_sync_entries): don't crash if the user tries to rename/add a station which is the same as another. From #353119 2007-02-14 James Livingston * shell/rb-shell.c: (rb_shell_db_metadata_art_cb): don't crash if we get art for an entry after we've stop playing anything. Fixes #405537 2007-02-13 Jonathan Matthew * sources/rb-streaming-source.c: (set_streaming_metadata): Don't do anything if the value isn't changing. Fixes #407221. 2007-02-12 Jonathan Matthew * plugins/daap/rb-daap-src.c: (rb_daap_src_open): Don't leak the parsed HTTP response headers. 2007-02-13 James Livingston * rhythmdb/rhythmdb-query.c: (rhythmdb_query_append_params): add new function which appends a single criteria to the query. Mostly for use by bindings. * rhythmdb/rhythmdb.h: The above, and replace GPtrArray with RhythmDBQuery in the header. * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: bind the new function, and fix up some other bits. 2007-02-12 Jonathan Matthew * plugins/ipod/rb-ipod-source.c: * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): Fix build breaks with track transfer/ipod writing disabled. Probably fixes #406126? 2007-02-12 Irene Huang * widgets/rb-entry-view.c: (rb_entry_view_set_sorting_type): Do not have to use g_return_if_fail (sorttype != NULL), since sorttype can be null, and the statement that follows also implement the checking using if (!sorttype || ... Fixes #406980 2007-02-12 Irene Huang * plugins/audiocd/sj-metadata.c: (sj_metadata_set_cdrom): syntax error, there should be no else after "{". * widgets/libsexy/sexy-tooltip.c: Add a dummy int for _SexyTooltipPriv empty structs breaks build on Solaris. 2007-02-12 James Livingston * plugins/rb-python-module.c: (run_gc), (rb_python_shutdown): be nicer when poking the garbage colletor, so as to not block the UI. 2007-02-10 Alex Lancaster * Makefile.am (art_DATA): Build fix: remove magnatune_circle_small.png, it has moved to plugins/magnatune/ 2007-02-09 William Jon McCann * configure.ac: Use more warnings when .svn directory is present so I break the build less. 2007-02-09 William Jon McCann * plugins/generic-player/rb-generic-player-source.c: (rb_generic_player_source_constructor), (rb_generic_player_source_get_device_info), (rb_generic_player_source_new), (rb_generic_player_is_volume_player), (sanitize_path), (get_hal_udi_for_player): Initialize the device info in the constructor instead of new(). Fix a small leak. Fixes part of #405775 2007-02-09 James Livingston * plugins/ipod/rb-ipod-source.c: (rb_ipod_source_set_ipod_name): don't crash if the MPL is null. Fixes #406052 2007-02-09 Jonathan Matthew * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_encode): * sources/rb-removable-media-source.c: Fix build breaks 2007-02-08 William Jon McCann * backends/gstreamer/rb-encoder-gst.c: (encoder_match_mime), (profile_bin_find_encoder), (get_profile_from_mime_type), (rb_encoder_gst_encode): Use rb_safe_strcmp. Add hack to translate application/x-id3 to audio/mpeg. * lib/rb-util.[ch]: (rb_safe_strcmp): * sources/rb-removable-media-source.c: (impl_paste), (rb_removable_media_source_build_dest_uri): Fix the construction of the file extension. Fixes rest of #405198 2007-02-08 James Livingston * sources/rb-removable-media-source.c: (impl_paste): don't put NULL on the list of mime-types, just pass NULL for the list. Fixes some/all of #405198 2007-02-07 William Jon McCann * plugins/generic-player/rb-nokia770-source.c: (hal_udi_is_nokia770): Add N800 support. Fixes #405218 2007-02-07 Jonathan Matthew * shell/rb-play-order-shuffle.c: (rb_shuffle_play_order_dispose), (rb_shuffle_play_order_get_next), (rb_shuffle_play_order_go_next), (rb_shuffle_play_order_get_previous), (rb_shuffle_play_order_go_previous), (rb_shuffle_sync_history_with_query_model), (rb_shuffle_playing_entry_changed): If the playing entry is not in the query model, track it separately rather than inserting it into the history, so it doesn't cause assertion failures when we check that the query model and the history are in sync. Fixes #381561. 2007-02-06 James Livingston patch by: Gustavo Carneiro * plugins/rb-python-module.c: (rb_python_module_load): use Py_ssize_t rather than int, so we don't cause memory corruption with python 2.5 on 64 bit systems. Fixes #404932 2007-02-06 James Livingston * plugins/rb-plugin.c: (rb_plugin_find_file): turn relative paths into absolute ones, so that rb_glade_new doesn't get confused when running uninstalled. * shell/rb-shell-player.c: (rb_shell_player_get_property): don't crash if _idle_unblock_signal_cb() tried to update the playing status after we've disposed of the backend player object. 2007-02-06 James Livingston * shell/rb-tray-icon.c: (rb_tray_icon_set_tooltip_icon), (rb_tray_icon_construct_tooltip): make it not display a placeholder icon when there is no art. 2007-02-06 James Livingston * plugins/generic-player/rb-generic-player-source.c: (impl_build_dest_uri): use the right variable, so file extensions get set correctly. From #76528 2007-02-06 James Livingston * plugins/rb-python-module.c: (rb_python_module_load): log when we can't find any rb.Plugin-derived classes. 2007-02-06 James Livingston * podcast/rb-podcast-parse.c: (rb_podcast_parser_start_element): don't crash if we get an itunes:image tag with no attributes. Fixes #404850 2007-02-06 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_set_source_internal): Connect and disconnect signal handlers on all the property views, not just the first one. Fixes #404753. 2007-02-05 James Livingston * po/POTFILES.in: add the mmkeys plugin * po/POTFILES.skip: add data/rhythmbox.desktop.in, to stop intltool complaining * configure.ac: bump to 0.9.7.90 for a pre-release 2007-02-05 James Livingston patch mostly by: Irene Huang * plugins/audiocd/sj-metadata.c: (sj_metadata_set_cdrom): make audio cds detection work properly on Solaris. Fixes #402384 2007-02-04 Jonathan Matthew * plugins/audioscrobbler/rb-audioscrobbler.c: (idle_unref_cb), (rb_audioscrobbler_do_handshake_cb), (rb_audioscrobbler_submit_queue_cb): Don't unref the audioscrobbler object in soup callbacks. When this unref destroys the object, it will in turn destroy the soup session, which will then cause a crash when we return from the callback. Instead, do the unref in an idle handler. Fixes #403097. 2007-02-04 James Livingston * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_init), (encoder_match_mime), (get_profile_from_mime_type), (get_profile_from_mime_types), (transcode_track), (rb_encoder_gst_encode), (rb_encoder_gst_get_preferred_mimetype): * backends/rb-encoder.c: (rb_encoder_encode), (rb_encoder_get_preferred_mimetype): * backends/rb-encoder.h: * lib/rb-util.c: (rb_str_in_strv): * lib/rb-util.h: add a new function for finding out what the preferred mimetype from a list is, and the extension to use for those files. * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init), (impl_delete_thyself), (_track_added_cb), (impl_paste), (get_db_for_source), (impl_receive_drag), (rb_removable_media_source_build_dest_uri), (rb_removable_media_source_get_mime_types), (rb_removable_media_source_track_added): * sources/rb-removable-media-source.h: * bindings/python/rb.defs: add common code for transcoding to removable media, so that subclasses can use it. * plugins/generic-player/rb-generic-player-source.h: * plugins/generic-player/rb-generic-player-source.c: (rb_generic_player_source_class_init), (rb_generic_player_source_get_device_info), (rb_generic_player_source_finalize), (rb_generic_player_source_new), (impl_can_paste), (sanitize_path), (impl_get_mime_types), (impl_build_dest_uri): use the above to support transcoding to "generic" audio players. From #76528. * plugins/ipod/rb-ipod-plugin.c: * plugins/ipod/rb-ipod-source.c: (rb_ipod_source_class_init), (rb_ipod_source_new), (create_ipod_song_from_entry), (impl_build_dest_uri), (impl_track_added), (ipod_get_filename_for_uri), (impl_get_mime_types): improve iPod support use the new features. * shell/rb-removable-media-manager.c: (rb_removable_media_manager_class_init), (rb_removable_media_manager_set_property), (rb_removable_media_manager_get_property), (rb_removable_media_manager_new), (completed_cb), (do_transfer), (rb_removable_media_manager_queue_transfer): * shell/rb-removable-media-manager.h: * shell/rb-shell.c: (construct_sources): miscellaneous fixes and improvements related to the above. 2007-02-01 Alex Lancaster * plugins/mmkeys/Makefile.am (INCLUDES): Build fix for building in separate directory. 2007-02-02 Jonathan Matthew * configure.ac: * data/rhythmbox.schemas: * plugins/Makefile.am: * plugins/mmkeys/Makefile.am: * plugins/mmkeys/mmkeys.rb-plugin.desktop.in: * plugins/mmkeys/rb-mmkeys-plugin.c: (rb_mmkeys_plugin_init), (media_player_key_pressed), (window_focus_cb), (grab_mmkey), (ungrab_mmkey), (filter_mmkeys), (mmkeys_grab), (impl_activate), (impl_deactivate), (rb_mmkeys_plugin_class_init): New plugin for media player key shortcuts. Handles both dbus signals from gnome-settings-daemon and the older XGrabKey method (bug #398184). * shell/rb-shell-player.c: (rb_shell_player_init): Remove XGrabKey key shortcut handling code. 2007-02-01 James Livingston * shell/rb-statusbar.c: (rb_statusbar_sync_status): make the status bar disappear when it's not in use. Fixes #402378 2007-02-01 Jonathan Matthew patch by: Guillaume Desmottes * configure.ac: * data/rhythmbox.schemas: * plugins/Makefile.am: * plugins/jamendo/Makefile.am: * plugins/jamendo/jamendo-loading.glade: * plugins/jamendo/jamendo-prefs.glade: * plugins/jamendo/jamendo.rb-plugin.desktop.in: * plugins/jamendo/jamendo/JamendoConfigureDialog.py: * plugins/jamendo/jamendo/JamendoSaxHandler.py: * plugins/jamendo/jamendo/JamendoSource.py: * plugins/jamendo/jamendo/Makefile.am: * plugins/jamendo/jamendo/__init__.py: Jamendo plugin (bug #397010). * plugins/daap/Makefile.am: Remove some random junk that automake was complaining about 2007-01-31 James Livingston patch by: Ed Catmur * data/ui/rhythmbox-ui.xml: Add "remove" to the context menu of Import Error entries. Fixes #399439 2007-01-31 James Livingston patch by: Gabor Kelemen * plugins/magnatune/magnatune/MagnatuneSource.py: Allow translators to swap the artist and album names around. Fixes #401857 2007-01-31 James Livingston patch by: Adam Zimmerman * plugins/magnatune/magnatune/MagnatuneSource.py: * plugins/magnatune/magnatune/TrackListHandler.py: * plugins/magnatune/magnatune/__init__.py: allow the purchase of physical CDs from Magnatune. Fixes #390848 2007-01-31 James Livingston patch by: Ed Catmur * plugins/artdisplay/artdisplay/__init__.py: keep the art widget square so it doesn't resize vertically. Fixes #346679. 2007-01-31 James Livingston patch by: Ed Catmur * lib/rb-file-helpers.c: (rb_uri_is_hidden): * lib/rb-file-helpers.h: * rhythmdb/rhythmdb-monitor.c: (rhythmdb_directory_change_cb), (rhythmdb_monitor_uri_path): fix some codepaths to ignore hidden files. Fixes #395644. 2007-01-30 Jonathan Matthew patch partly by: William Jon McCann * lib/rb-debug.c: (rb_debug_init_match), (rb_debug_get_args): * lib/rb-debug.h: Add a function to return a copy of the debug command line args. * metadata/rb-metadata-dbus-client.c: (rb_metadata_class_init), (rb_metadata_finalize), (start_metadata_service): * metadata/rb-metadata-dbus-service.c: (main): Pass debug args through to the metadata helper. Fixes #383845. 2007-01-29 James Livingston * shell/rb-shell.c: (rb_shell_transfer_progress_cb): * sources/rb-auto-playlist-source.c: (impl_save_contents_to_xml): more memory leak fixes 2007-01-29 James Livingston * plugins/audiocd/rb-audiocd-source.c: * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: (impl_activate): * plugins/rb-plugin-manager.c: (rb_plugin_manager_init): * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_finalize): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_finalize), (rhythmdb_query_model_entry_changed_cb): * shell/rb-shell-player.c: (rb_shell_player_set_source_internal): * shell/rb-tray-icon.c: (rb_tray_icon_set_tooltip_icon): * widgets/rb-library-browser.c: (update_browser_views_visibility): fix assorted memory leaks 2007-01-27 Jonathan Matthew * plugins/daap/rb-daap-src.c: (rb_daap_src_open): Fix call to soup_headers_parse_response to work with libsoup 2.2.99. 2007-01-26 Alex Lancaster * sources/rb-library-source.c (impl_want_uri): Handle 'ssh://' as songs. 2007-01-25 James Livingston * data/ui/rhythmbox-ui.xml: add "save to playlist" to the playlist context menu. 2007-01-24 Jonathan Matthew * shell/rb-shell.c: (rb_shell_player_window_title_changed_cb): Update tooltip contents when the window title changes. Slightly odd, but this keeps the tooltip up to date with streaming song changes. 2007-01-23 William Jon McCann * data/rhythmbox.schemas: Add missing podcast schemas. Fixes #398884 2007-01-23 Alex Lancaster * plugins/artdisplay/artdisplay/PodcastCoverArtSearch.py: Add missing file from #380746. 2007-01-23 James Livingston patch by: Martin Szulecki * plugins/artdisplay/artdisplay/CoverArtDatabase.py: * plugins/artdisplay/artdisplay/Makefile.am: * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): * podcast/rb-podcast-parse.c: (rb_podcast_parser_start_element): emit art-uri metadata for podcasts. Fixes #380746 2007-01-23 James Livingston patch by: Gilles Dartiguelongue * plugins/daap/Makefile.am: fix builds with --as-needed. Fixes #380411 2007-01-21 James Livingston * rhythmdb/rhythmdb.c: warn instead of crashing if the entry is NULL. Fixes #397973. 2007-01-21 James Livingston patch by: Ed Catmur * plugins/artdisplay/artdisplay/__init__.py: add 'rb:coverArt-uri' metadata type. Fixes #398231 2007-01-21 James Livingston patch by: Ed Catmur * plugins/artdisplay/artdisplay/CoverArtDatabase.py: * plugins/artdisplay/artdisplay/LocalCoverArtSearch.py: Allow the DB to save art into the file's directory. Fixes #398102 2007-01-21 James Livingston patch by: Ed Catmur * plugins/artdisplay/artdisplay/CoverArtDatabase.py: * plugins/artdisplay/artdisplay/__init__.py: decouple the art widget from the DB search. Fixes #398093 2007-01-20 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_set_sorting_type): emit a critical warning rather than exploding if we're passed NULL. 2007-01-18 Jonathan Matthew * sources/rb-browser-source.h: * sources/rb-browser-source.c: (rb_browser_source_class_init), (rb_browser_source_init), (rb_browser_source_constructor), (paned_size_allocate_cb), (rb_browser_source_state_prefs_sync), (default_pack_paned): Change get_paned_key to return an allocated string so python sources can implement it, and add a pack_paned method for packing the GtkPaned containing the browser and the entry view into the source UI. The default implementation just packs it into a box and adds that to the source. * plugins/daap/rb-daap-source.c: (rb_daap_source_get_paned_key): * sources/rb-library-source.c: (impl_get_paned_key): Update for changes to get_paned_key. * bindings/python/rb.defs: * bindings/python/rb.override: Add python bindings for RBSource.get_browser_key, RBBrowserSource.get_paned_key, and RBBrowserSource.pack_paned. * plugins/magnatune/magnatune/MagnatuneSource.py: Implement get_browser_key and get_paned_key, pack the browser pane widget into a box that we hide while showing the loading screen. Fixes #390834. * data/rhythmbox.schemas: Show the browser in the magnatune source by default. Fixes #392071. 2007-01-17 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): If the feed doesn't have a title, use the URL instead. Fixes #394205. 2007-01-17 Jonathan Matthew Patch by: Ed Catmur * shell/rb-tray-icon.c: (rb_tray_icon_update_tooltip_visibility), (rb_tray_icon_sticky_cb), (rb_tray_icon_enter_notify_event_cb), (rb_tray_icon_leave_notify_event_cb), (rb_tray_icon_construct_tooltip): Only show the tooltip after a short delay, as with normal gtk+ tooltips. From #345592. 2007-01-15 Alex Lancaster Patch by Greg Ward * README.daap: Fix minor typos. 2007-01-13 Jonathan Matthew patch mostly by: Adam Zimmerman * plugins/magnatune/magnatune/MagnatuneSource.py: * plugins/magnatune/magnatune/TrackListHandler.py: * plugins/magnatune/magnatune/__init__.py: Complain if no library location is set when trying to purchase an album from magnatune (fixes #390153). Use the right format strings for the status text to actually show the number of songs (fixes #392930). Pulse the status bar while loading the song info (fixes #392040). Use the song's 'year' property from the magnatune catalog if it exists, otherwise fall back to 'launchdate'; clean up some other stuff. (fixes #388425). 2007-01-13 Jonathan Matthew * rhythmdb/rhythmdb-query-model.h: Increase query result chunk size from 32 to 1024. 2007-01-13 James Livingston patch by: John Daiker * shell/rb-shell.c: change "show all" to "show all tracks". Fixes #332627 2007-01-12 Jonathan Matthew patch by: William Jon McCann * widgets/rb-header.c: (rb_header_init): Left-align the song info label. Fixes #393974. 2007-01-11 Alex Lancaster Patch by: Ed Catmur * shell/rb-shell.c (rb_shell_construct_notify_titles): * shell/rb-tray-icon.c (TRAY_ICON_DEFAULT_TOOLTIP): Use identical markup in tooltips and tray icon to that displayed in actual player slider. From #345592. 2007-01-11 Jonathan Matthew patch by: Ed Catmur * shell/rb-tray-icon.c: (sexy_tooltip_position_to_widget), (rb_tray_icon_update_tooltip_visibility): Add a less broken implementation of sexy_tooltip_position_to_widget that works for tray icons, and update the tooltip position each time it gets displayed. From #345592, fixes #395273. 2007-01-11 Jonathan Matthew * plugins/cd-recorder/rb-cd-recorder-plugin.c: (source_burn), (cmd_burn_source): * plugins/cd-recorder/rb-playlist-source-recorder.c: * plugins/cd-recorder/rb-playlist-source-recorder.h: Use rb_plugin_find_file to locate plugin-specific files. Accidentally dropped from the source tree surgery changes. 2007-01-11 Jonathan Matthew * shell/main.c: (main): Initialise GThread before doing anything else. 2007-01-11 Jonathan Matthew patch by: William Jon McCann * plugins/power-manager/rb-power-manager-plugin.c: (impl_deactivate): Don't crash if we couldn't create the dbus proxy object or connect the signal handler. Fixes #395088. 2007-01-07 Alex Lancaster * plugins/daap/Makefile.am (INCLUDES): Build fix for building in separate build directories. 2007-01-07 Jonathan Matthew Moved lots of files around. Now everything should be in the directory it's built in and all plugin-specific files should be installed into the plugin directory. * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: (impl_create_configure_dialog): * plugins/audioscrobbler/rb-audioscrobbler.c: (rb_audioscrobbler_class_init), (rb_audioscrobbler_dispose), (rb_audioscrobbler_finalize), (rb_audioscrobbler_get_config_widget): * plugins/audioscrobbler/rb-audioscrobbler.h: Use rb_plugin_find_file where needed. * widgets/rb-uri-dialog.c: (rb_uri_dialog_class_init), (rb_uri_dialog_init), (rb_uri_dialog_finalize), (rb_uri_dialog_new), (rb_uri_dialog_response_cb), (rb_uri_dialog_text_changed): * widgets/rb-uri-dialog.h: New common 'enter a URI' dialog, used by iradio and podcast code. * plugins/iradio/rb-iradio-plugin.c: (impl_activate): * plugins/iradio/rb-iradio-source.c: (rb_iradio_source_constructor), (rb_iradio_source_new), (impl_song_properties), (rb_iradio_source_first_time_changed), (new_station_location_added), (rb_iradio_source_cmd_new_station): * plugins/iradio/rb-iradio-source.h: * plugins/iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_class_init), (rb_station_properties_dialog_init), (rb_station_properties_dialog_constructor), (rb_station_properties_dialog_set_property), (rb_station_properties_dialog_get_property), (rb_station_properties_dialog_new): * plugins/iradio/rb-station-properties-dialog.h: Use the common URI dialog, use rb_plugin_find_file where needed. * sources/rb-podcast-source.c: (rb_podcast_source_location_added_cb), (rb_podcast_source_cmd_new_podcast): Use the common URI dialog. 2007-01-07 James Livingston patch by: Ed Catmur * widgets/libsexy/Makefile.am: * widgets/libsexy/sexy-tooltip.h: * widgets/libsexy/sexy-tooltip.c: add a copy of sexy-tooltip from Libsexy. * bindings/python/rhythmdb.override: * plugins/artdisplay/artdisplay/__init__.py: * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_db_metadata_art_cb), (rb_shell_playing_entry_changed_cb), (rb_shell_player_elapsed_changed_cb), (rb_shell_update_tray_tooltip_elapsed), (markup_escape), (rb_shell_construct_notify_titles), (rb_shell_notify_playing_entry), (rb_shell_hidden_notify), (rb_shell_hidden_notify_markup): * shell/rb-shell.h: * shell/rb-tray-icon.c: (rb_tray_icon_init), (rb_tray_icon_finalize), (rb_tray_icon_update_tooltip_visibility), (rb_tray_icon_unhide_cb), (rb_tray_icon_set_tooltip_primary_markup), (rb_tray_icon_set_tooltip_icon), (rb_tray_icon_set_tooltip_secondary_markup), (rb_tray_icon_notify), (rb_tray_icon_enter_notify_event_cb), (rb_tray_icon_leave_notify_event_cb), (rb_tray_icon_tooltip_size_allocate_cb), (rb_tray_icon_construct_tooltip), (rb_tray_icon_unsuppress_cb), (rb_tray_icon_suppress_tooltips): * shell/rb-tray-icon.h: * widgets/eggtrayicon.c: (egg_tray_icon_send_message), (egg_tray_icon_notify): * widgets/eggtrayicon.h: Display cover art in the song-change notification and the tray icon toolip. Fixes #345592 2007-01-02 James Livingston * corelib/: add the directory that I missed in the last commit. Oops. 2007-01-02 James Livingston patch by: Jonathan Matthew * Makefile.am: * configure.ac: * plugins/audiocd/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/cd-recorder/Makefile.am: * plugins/ipod/Makefile.am: * plugins/iradio/Makefile.am: * shell/Makefile.am: move stuff into a shared library that is used by both the main binary and plugins. Reduces the size of the binaries and hopefully fixes dynamic linking issues on Solaris. From #372863. 2007-01-02 James Livingston patch by: Loïc Minier * data/rhythmbox.schemas: fix a typo in the schema. Fixes #387527 2007-01-02 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_dispose), (rb_podcast_manager_download_entry), (rb_podcast_manager_next_file), (rb_podcast_manager_abort_download), (end_job): Remove the next_file idle handler on shutdown. Should fix #390884. 2006-12-30 Jonathan Matthew * sources/rb-streaming-source.c: (rb_streaming_source_class_init): Don't set impl_can_browse here. 2006-12-30 Jonathan Matthew patch by: Oliver Lemke * plugins/artdisplay/Makefile.am: Install rhythmbox-missing-artwork.svg properly. Really fixes #387413. 2006-12-29 Jonathan Matthew * plugins/audioscrobbler/rb-lastfm-source.c: (rb_lastfm_source_title_from_uri): Handle personal (/user/$user/personal) and user tag (/usertags/$user/tag) lastfm:// URIs. The rest of #390494. 2006-12-29 Jonathan Matthew * plugins/audioscrobbler/rb-lastfm-source.c: (rb_lastfm_source_title_from_uri): Don't free the drag data string if we don't understand the URI. From #390494. 2006-12-29 Jonathan Matthew * plugins/artdisplay/Makefile.am: Install rhythmbox-missing-artwork.svg. Fixes #387413. 2006-12-27 Jonathan Matthew * widgets/rb-song-info.c: (rb_song_info_dispose): Fix a few mistakes that caused criticals when closing a song info window. 2006-12-23 Jonathan Matthew * shell/rb-history.c: (_history_remove_swapped), (rb_history_set_playing), (rb_history_remove_entry), (rb_history_remove_entry_internal), (rb_history_clear): Don't remove entries from the sequence while iterating it. 2006-12-23 Jonathan Matthew * daapsharing/rb-daap-src.c: (rb_daap_src_finalize): * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_class_init), (rb_station_properties_dialog_dispose), (rb_station_properties_dialog_finalize): * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_class_init), (rb_podcast_properties_dialog_dispose), (rb_podcast_properties_dialog_finalize): * rhythmdb/rhythmdb-monitor.c: (rhythmdb_dispose_monitoring), (rhythmdb_finalize_monitoring): * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_class_init), (rhythmdb_property_model_dispose), (rhythmdb_property_model_finalize): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_dispose), (rhythmdb_query_model_finalize): * rhythmdb/rhythmdb.c: (rhythmdb_class_init): * shell/rb-play-order-shuffle.c: (rb_shuffle_play_order_class_init), (rb_shuffle_play_order_dispose), (rb_shuffle_play_order_finalize): * shell/rb-play-order.c: (rb_play_order_class_init), (rb_play_order_dispose), (rb_play_order_finalize): * shell/rb-shell-clipboard.c: (rb_shell_clipboard_class_init), (rb_shell_clipboard_dispose), (rb_shell_clipboard_finalize): * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_dispose), (rb_shell_player_finalize): * shell/rb-tray-icon.c: (rb_tray_icon_class_init), (rb_tray_icon_constructor), (rb_tray_icon_dispose), (rb_tray_icon_finalize): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (rb_auto_playlist_source_dispose), (rb_auto_playlist_source_finalize): * sources/rb-browser-source.c: (rb_browser_source_dispose), (rb_browser_source_finalize): * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_dispose): * sources/rb-library-source.c: (rb_library_source_dispose), (rb_library_source_finalize): * sources/rb-play-queue-source.c: (rb_play_queue_source_dispose), (rb_play_queue_source_finalize), (rb_play_queue_source_class_init): * sources/rb-playlist-source-recorder.c: (rb_playlist_source_recorder_class_init), (rb_playlist_source_recorder_dispose), (rb_playlist_source_recorder_finalize): * sources/rb-playlist-source.c: (rb_playlist_source_dispose): * sources/rb-podcast-source.c: (rb_podcast_source_dispose), (rb_podcast_source_finalize): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_dispose), (rb_static_playlist_source_finalize): * widgets/rb-song-info.c: (rb_song_info_class_init), (rb_song_info_dispose), (rb_song_info_finalize): Unref objects and remove main loop sources in dispose rather than finalize throughout (except RBShell, which scares me). In all likelihood, fixes #362484. 2006-12-23 James Livingston * plugins/audioscrobbler/rb-lastfm-source.c: fix a typo. Closes #380933 2006-12-23 James Livingston * plugins/visualizer/Makefile.am: fix make distcheck * configure.ac: * po/LINGUAS: use the new intltool po/LINGUA thing. Fixes #339292 2006-12-22 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: (rb_player_gst_class_init), (rb_player_gst_get_property), (rb_player_gst_construct): Add a 'playbin' property allowing plugins to access the playbin element, and allow them to set the audio and video sinks. * shell/rb-shell.c: (rb_shell_get_box_for_ui_location), (rb_shell_add_widget), (rb_shell_remove_widget), (rb_shell_notebook_set_page), (rb_shell_ui_location_get_type): * shell/rb-shell.h: Extend rb_shell_add_widget to allow the addition of source notebook pages. * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync): * shell/rb-source-header.c: (rb_source_header_set_source_internal), (rb_source_header_set_source): Handle the possibility of no source being selected if a notebook page added with rb_shell_add_widget is active. Hide the source header widget when no source is selected. * configure.ac: * data/rhythmbox.schemas: * plugins/Makefile.am: * plugins/visualizer/Makefile.am: * plugins/visualizer/rb-fake-visualizer.c: * plugins/visualizer/rb-vis-widget.c: * plugins/visualizer/rb-vis-widget.h: * plugins/visualizer/rb-visualizer-plugin.c: * plugins/visualizer/rb-visualizer.xml: * plugins/visualizer/visualizer-controls.glade: * plugins/visualizer/visualizer-ui.xml: * plugins/visualizer/visualizer.rb-plugin.desktop.in: Add visualiser plugin. Fixes #76519. 2006-12-21 James Livingston * lib/eggsequence.c: * lib/eggsequence.h: * rhythmdb/gsequence.c: * rhythmdb/gsequence.h: * lib/Makefile.am: * rhythmdb/Makefile.am: replace GSequence with EggSequence. Closes #374242 * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_init), (_prop_model_entry_cleanup), (rhythmdb_property_model_finalize), (rhythmdb_property_model_insert), (rhythmdb_property_model_delete_prop), (rhythmdb_property_model_iter_from_string), (rhythmdb_property_model_get_iter), (rhythmdb_property_model_get_path), (rhythmdb_property_model_get_value), (rhythmdb_property_model_iter_next), (rhythmdb_property_model_iter_n_children), (rhythmdb_property_model_iter_nth_child): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_init), (rhythmdb_query_model_finalize), (_copy_contents_foreach_cb), (rhythmdb_query_model_copy_contents), (rhythmdb_query_model_insert_into_main_list), (rhythmdb_query_model_insert_into_limited_list), (rhythmdb_query_model_remove_from_main_list), (rhythmdb_query_model_remove_from_limited_list), (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_emit_reorder), (rhythmdb_query_model_do_reorder), (rhythmdb_query_model_do_insert), (rhythmdb_query_model_filter_out_entry), (rhythmdb_query_model_move_entry), (rhythmdb_query_model_entry_to_iter), (rhythmdb_query_model_drag_data_delete), (rhythmdb_query_model_drag_data_get), (rhythmdb_query_model_drag_data_received), (rhythmdb_query_model_get_iter), (rhythmdb_query_model_get_path), (rhythmdb_query_model_get_value), (rhythmdb_query_model_iter_next), (rhythmdb_query_model_iter_children), (rhythmdb_query_model_iter_n_children), (rhythmdb_query_model_iter_nth_child), (apply_updated_entry_sequence), (rhythmdb_query_model_set_sort_order), (rhythmdb_query_model_child_index_to_base_index), (rhythmdb_query_model_get_entry_index), (_base_rows_reordered_foreach_cb), (rhythmdb_query_model_base_rows_reordered), (_reapply_query_foreach_cb), (rhythmdb_query_model_reapply_query): * shell/rb-history.c: (rb_history_init), (rb_history_finalize), (rb_history_length), (rb_history_first), (rb_history_previous), (rb_history_current), (rb_history_next), (rb_history_last), (rb_history_go_first), (rb_history_go_previous), (rb_history_go_next), (rb_history_go_last), (_history_remove_swapped), (rb_history_set_playing), (rb_history_append), (rb_history_get_current_index), (rb_history_insert_at_index), (rb_history_limit_size), (rb_history_remove_entry), (rb_history_delete_link), (rb_history_clear), (rb_history_dump): * shell/rb-history.h: update for the above. 2006-12-19 William Jon McCann * lib/rb-cut-and-paste-code.c: Remove trailing whitespace. * rhythmdb/rhythmdb.c: * sources/rb-podcast-source.c: (rb_podcast_source_post_date_cell_data_func): * widgets/rb-entry-view.c: (rb_entry_view_get_time_date_column_sample): Use a friendlier time/date format. Fixes #324534 ============ Version 0.9.7 2006-12-18 James Livingston * configure.ac: bump version to 0.9.7 * NEWS: update NEWS 2006-12-18 James Livingston patch by: James M * data/rhythmbox.schemas: * lib/rb-preferences.h: * shell/rb-shell-player.c: (rb_shell_player_sync_replaygain): Add a gconf option for turning ReplayGain adjustments on and off, and have it off by default. Fixes #145103 2006-12-16 James Livingston * plugins/audioscrobbler/rb-lastfm-source.c: (impl_show_popup): don't show an empty popup menu for the Last.fm source. 2006-12-16 Jonathan Matthew * shell/rb-shell.c: (rb_shell_playing_from_queue_cb): Don't crash if the type of the playing entry doesn't map to a source. Fixes #366222. 2006-12-16 James Livingston patch by: Alex Lancaster * doc/reference/Makefile.am: * plugins/audioscrobbler/Makefile.am: fix some build issues. Closes #386440 and #386438 2006-12-15 Jonathan Matthew * widgets/rb-library-browser.c: (update_browser_property_visibilty): Use rb_property_view_set_selection instead of rb_property_view_reset; _reset breaks the query chain. Fixes #367646. 2006-12-15 Jonathan Matthew * shell/rb-history.c: (rb_history_append): Fix critical on first insertion. 2006-12-13 James Livingston * configure.ac: bump version to 0.9.6.90 for a pre-release 2006-12-13 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_init), (rhythmdb_query_model_entry_added_cb), (rhythmdb_query_model_entry_changed_cb): Track hidden entries in query models with no query. Currently unused due to how we structure queries for static playlists, but it fixes the property model unit tests. 2006-12-13 Jonathan Matthew * daapsharing/rb-daap-connection.c: (rb_daap_connection_do_something): Request daap.songdiscnumber from the DAAP server. 2006-12-13 Jonathan Matthew * sources/rb-static-playlist-source.c: (rb_static_playlist_source_add_uri_list): Don't free the URI list twice. Fixes #380947. 2006-12-13 Jonathan Matthew * lib/rb-file-helpers.c: (rb_uri_append_path), (rb_uri_append_uri), (rb_uri_get_dir_name): * rhythmdb/rhythmdb-monitor.c: (rhythmdb_monitor_uri_path): * rhythmdb/rhythmdb.c: * sources/rb-library-source.c: (build_filename), (rb_library_source_add_child_source): * sources/rb-playlist-source-recorder.c: (check_dir_has_space): Handle cases where gnome_vfs_uri_new returns NULL. From #380947. 2006-12-13 Jonathan Matthew * metadata/sj-metadata-musicbrainz.c: (get_drive_media_type), (lookup_cd): Add support for older versions of libnautilus-burn. 2006-12-13 James Livingston Patch from Tim Retout * shell/rb-history.c: (rb_history_append): * shell/rb-play-order-random.c: (rb_random_play_order_go_next): fix a problem where appending a song could get the history wrong. Fixes #346287 2006-12-12 James Livingston * plugins/audioscrobbler/Makefile.am: * metadata/sj-error.c: (sj_error_quark): * metadata/sj-error.h: * metadata/sj-metadata-musicbrainz.c: (sj_metadata_musicbrainz_instance_init), (get_offline_track_listing), (cache_rdf), (get_cached_rdf), (get_rdf), (lookup_cd): * metadata/sj-metadata-musicbrainz.h: * metadata/sj-metadata.c: (sj_metadata_get_type): * metadata/sj-metadata.h: * metadata/sj-structures.c: * metadata/sj-structures.h: get bug fixes from S-J and hopefully fix #382954. 2006-12-12 James Livingston * sources/rb-ipod-source.c: (rb_ipod_load_songs): hopefully fix some corrupt-ipod-db issues. from #358855 2006-12-12 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_set_model_internal): don't try to re-sort the model if it's NULL. Fixes #367646 2006-12-12 James Livingston * data/rhythmbox.schemas: * lib/rb-util.c: (_threads_enter), (_threads_leave), (rb_threads_init): * plugins/magnatune/magnatune-prefs.glade: * plugins/magnatune/magnatune-purchase.glade: * plugins/magnatune/magnatune/MagnatuneSource.py: * plugins/magnatune/magnatune/__init__.py: add code to use Gnome-Keyring to store the user's credit card details, but force it to be disabled (due to bugs). From #377354 2006-12-12 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_remove_from_main_list): Re-find the sequence node pointer after emitting the row-deleted signal, as signal handlers may cause it to change. Fixes #370443. 2006-12-11 James Livingston * sources/rb-daap-source.c: (connection_auth_cb): fix a code path trying to free an unset pointer. Fixes #384208 2006-12-11 James Livingston * sources/rb-library-source.c: (build_filename): deal with URIs that don't have a period in them. Fixes #384016 2006-12-11 Jonathan Matthew * backends/gstreamer/rb-encoder-gst.c: (progress_timeout_cb): Use G_GINT64_FORMAT instead of %lld. 2006-12-11 Jonathan Matthew * backends/gstreamer/rb-encoder-gst.c: (progress_timeout_cb), (rb_encoder_gst_encode): When copying rather than transcoding, do position queries in byte format rather than time. * sources/rb-ipod-source.c: (impl_receive_drag): * sources/rb-library-source.c: (impl_receive_drag): Handle application/x-rhythmbox-entry drops. Fixes drag and drop from daap shares to library. 2006-12-10 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_add_post): add posts that are missing their date tag. 2006-12-09 James Livingston * shell/rb-statusbar.c: (rb_statusbar_init): revert the patch from bug #368757 2006-12-09 James Livingston * configure.ac: * data/rhythmbox.schemas: * plugins/Makefile.am: * plugins/magnatune/magnatune-prefs.glade: * plugins/magnatune/magnatune-purchase.glade: * plugins/magnatune/magnatune/MagnatuneSource.py: * plugins/magnatune/magnatune/__init__.py: revert some stuff I accidently comitted. 2006-12-09 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_finalize): fix a memory leak. 2006-12-09 James Livingston * sources/rb-ipod-source.c: (rb_ipod_source_set_ipod_name): don't crash if the iPod's name set to is NULL #358855 2006-12-05 Jonathan Matthew * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_dispose), (rb_property_view_finalize): Disconnect signal handlers in dispose, not finalize. Fixes #374892. 2006-12-04 James Livingston patch by: Alex Lancaster * rhythmdb/rhythmdb-query.c: (rhythmdb_query_preprocess): * widgets/rb-query-creator-properties.c: (yearCriteriaSetWidgetData), (yearCriteriaGetWidgetData): stop some critical warnings emitted if a YEAR=0 query was done. Fixes #381839 2006-12-03 James Livingston * lib/rb-file-helpers.c: (_rb_uri_recurse_data_free), (rb_uri_handle_recursively_cb), (rb_uri_handle_recursively), (_recurse_async_idle_cb), (_recurse_async_data_free), (_recurse_async_cb), (_recurse_async_func), (rb_uri_handle_recursively_async): * lib/rb-file-helpers.h: * plugins/rb-plugins-engine.c: (rb_plugins_engine_load_cb), (rb_plugins_engine_load_dir): * rhythmdb/rhythmdb-monitor.c: (rhythmdb_init_monitoring), (rhythmdb_stop_monitoring), (monitor_entry_file), (monitor_subdirectory), (monitor_library_directory), (_monitor_entry_thread), (rhythmdb_start_monitoring), (rhythmdb_monitor_uri_path): * rhythmdb/rhythmdb.c: * sources/rb-static-playlist-source.c: (rb_static_playlist_source_add_location_cb), (rb_static_playlist_source_add_location): add a utility function for doing directory recusion asynchronously, and use it everywhere instead of the old one. Removes one of our biggest do-IO-synchronously issues. From #325215 2006-12-03 James Livingston * plugins/audioscrobbler/Makefile.am: * plugins/audioscrobbler/audioscrobbler-ui.xml: * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: (impl_activate), (impl_deactivate): * plugins/audioscrobbler/rb-lastfm-source.c: (rb_lastfm_source_class_init), (rb_lastfm_source_constructor), (impl_activate), (impl_show_popup), (show_entry_popup): add a context menu to the last.fm source, and allow deletion of stations. 2006-12-02 Jonathan Matthew * plugins/rb-plugin-manager.c: (plugin_manager_populate_lists): gtk_tree_view_get_model doesn't ref the model, so don't unref it when we're done with it. 2006-12-01 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_execute_load), (rhythmdb_add_uri_with_type): Handle rb_uri_resolve_symlink returning NULL, as it does when it encounters a symlink loop. Create import errors for such URIs. Fixes #380826. 2006-11-30 Jonathan Matthew patch started by: James Livingston * podcast/rb-podcast-manager.c: (*) * podcast/rb-podcast-manager.h: * sources/rb-podcast-source.c: (rb_podcast_source_set_property), (rb_podcast_source_cmd_cancel_download), (rb_podcast_source_load_finish_cb), (rb_podcast_source_feed_updates_available_cb), (rb_podcast_source_shutdown), (rb_podcast_source_cmd_new_podcast): Remove mutexes and async queues from the podcast manager; just do everything on the main thread and use idle handlers to marshal things across to it. Should fix crashes on FreeBSD, various other weird stuff, and bug 337332. 2006-11-29 James Livingston patch from: Glynn Foster * metadata/sj-metadata-musicbrainz.c: (sj_metadata_musicbrainz_instance_init): fix a typo in the proxy settings. 2006-11-29 James Livingston patch by: Thomas Thurman * data/glade/song-info-multiple.glade: * data/glade/song-info.glade: * data/glade/station-properties.glade: Make the return key close these dialogs. Fixes #379148 2006-11-29 James Livingston patch by: Ingo Planz * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): Make the podcast plugin set unknown dates to the current time, not the start of the epoch. Fixes #367572. 2006-11-29 James Livingston * lib/rb-tree-dnd.c: (rb_tree_drag_source_row_draggable), (rb_tree_drag_source_drag_data_delete), (rb_tree_drag_source_drag_data_get), (rb_tree_drag_dest_drag_data_received), (rb_tree_drag_dest_row_drop_possible), (rb_tree_drag_dest_row_drop_position), (rb_tree_dnd_drag_drop_cb): * lib/rb-tree-dnd.h: * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_drag_source_init): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_source_init), (rhythmdb_query_model_drag_dest_init): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_drag_dest_init), (rb_sourcelist_model_drag_source_init): don't use the same method names as the GtkTreeDnd ones, since it break bindings to other languages. * shell/rb-shell.c: (_scan_idle), (rb_shell_constructor): run the removable media scan in an idle callback. 2006-11-27 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: (rb_player_gst_construct): Use the right variable name when setting the "profile" property on the sink. Fixes #379532 and closes #379314 again. 2006-11-27 James Livingston patch by: Adam Zimmerman * plugins/magnatune/magnatune/MagnatuneSource.py: fix a race condition in the Magnatune plugin, from #373684. 2006-11-26 James Livingston patch from Alex Jones * backends/gstreamer/rb-player-gst.c: (rb_player_gst_construct): set the "profile" on the audio sink, if it's present. Fixes #379314. 2006-11-23 James Livingston * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: fix some binding stuff. 2006-11-23 James Livingston patch by: Adam Zimmerman * plugins/magnatune/magnatune/MagnatuneSource.py: remove credit card details from debug output. Fixes #378355. 2006-11-23 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_play): Don't crash if current_playing_source is NULL. Fixes #378195. * plugins/lirc/rb-lirc-plugin.c: (rb_lirc_plugin_read_code): rb_shell_player_play isn't very useful, use _playpause if not already playing instead. 2006-11-22 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (query_model_cb), (rhythmdb_property_model_drag_data_get): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_get), (rhythmdb_query_model_drag_data_received): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_class_init), (rhythmdb_tree_init), (rhythmdb_tree_finalize), (rhythmdb_tree_entry_new_internal), (rhythmdb_tree_entry_delete), (remove_one_song), (rhythmdb_tree_entry_lookup_by_id), (rhythmdb_tree_entry_foreach), (rhythmdb_tree_entry_count), (rhythmdb_tree_entry_foreach_by_type), (count_entries), (rhythmdb_tree_entry_count_by_type): * rhythmdb/rhythmdb.c: * rhythmdb/rhythmdb.h: * daapsharing/rb-daap-share.c: (rb_daap_share_class_init), (rb_daap_share_set_property), (rb_daap_share_get_property), (rb_daap_share_new), (add_entry_to_mlcl), (send_chunked_file), (send_mapped_file), (databases_cb), (db_entry_added_cb), (db_entry_deleted_cb), (rb_daap_share_server_start), (rb_daap_share_server_stop): * daapsharing/rb-daap-share.h: * daapsharing/rb-daap-sharing.c: (create_share): Move id-to-entry map from daap share into rhythmdb. * shell/rb-playlist-manager.c: (create_name_from_selection_data), (rb_playlist_manager_new_playlist_from_selection_data): * sources/rb-auto-playlist-source.c: (impl_receive_drag): * sources/rb-browser-source.c: (rb_browser_source_constructor): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_drag_data_received), (rb_sourcelist_model_row_drop_position), (rb_sourcelist_model_get_drag_target), (rb_sourcelist_model_drag_data_get): * sources/rb-static-playlist-source.c: (impl_receive_drag), (rb_static_playlist_source_add_id_list), (rb_static_playlist_source_add_uri_list): * widgets/rb-entry-view.c: * widgets/rb-property-view.c: Add a new drag-and-drop type: application/x-rhythmbox-entry containing a list of entry IDs, and use it for DnD within the application. Avoids having to pick a URI to use for an entry, so we can make DnD of podcast entries (and anything else where playback URI is not the same as the entry location) work as expected. Fixes #343537. 2006-11-22 Jonathan Matthew * shell/rb-shell.c: (rb_shell_present): Clear the skip-taskbar hint when presenting the window. Fixes #377963. 2006-11-20 James Livingston * sources/rb-library-source.c: (impl_paste): don't explode if we can't find the responsible source. Fixes #377029 2006-11-19 Jonathan Matthew * lib/rb-file-helpers.c: (rb_uri_append_path), (rb_uri_append_uri), (rb_uri_get_dir_name), (rb_uri_get_short_path_name): * lib/rb-file-helpers.h: * sources/rb-ipod-source.c: (ipod_get_filename_for_uri): Implement rb_uri_get_short_path_name to replace gnome_vfs_uri_extract_short_path name with something that doesn't reject unknown URI schemes such as daap://. Fixes #361077. * tests/Makefile.am: * tests/test-file-helpers.c: (test_get_short_path_name), (START_TEST), (rb_file_helpers_suite), (main): Add tests for the above. 2006-11-17 Jonathan Matthew * widgets/bacon-volume.c: (bacon_volume_button_class_init), (bacon_volume_button_new), (bacon_volume_button_style_set), (bacon_volume_scale_class_init), (bacon_volume_button_update_icon), (bacon_volume_scale_value_changed), (bacon_volume_button_load_icons): * widgets/bacon-volume.h: Update bacon-volume from libbacon CVS again. 2006-11-17 Jonathan Matthew * widgets/bacon-volume.c: (bacon_volume_load_icons): Fall back to old icon names if the icon naming spec compliant names don't work. From #369491. 2006-11-17 Jonathan Matthew * plugins/audiocd/Makefile.am: Stop automake complaining about duplicate definitions. 2006-11-17 James Livingston * sources/rb-ipod-source.c: (rb_ipod_source_dispose), (load_ipod_db_idle_cb), (rb_ipod_load_songs): remove the idle callback when disposing of the source. Fixes #376155 * plugins/daap/Makefile.am: fix some distcheck brokenness. 2006-11-17 James Livingston * po/POTFILES.in: add missing files to POTFILES.in. Fixes #375978 2006-11-15 Jonathan Matthew * shell/rb-playlist-manager.c: (*): General cleanup, add appropriate object references and implement dispose method. Should fix #357099. 2006-11-15 James Livingston patch by: William Lachance * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_album_sort_func): improve sorting when some tracks are missing track/disc number info. Fixes #371322 2006-11-14 James Livingston patch by: Alex Lancaster * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): support podcast episode dates which are missing the seconds. Fixes #373845 2006-11-13 James Livingston * bindings/python/rhythmdb.override: bidn a few other pieces of rhythmdb. 2006-11-13 Jonathan Matthew * shell/rb-statusbar.c: (rb_statusbar_class_init), (rb_statusbar_dispose), (rb_statusbar_finalize), (rb_statusbar_set_property): Remove idle handler in dispose, rather than finalize. Keep references on all referenced objects (duh?). Fixes #374443. 2006-11-12 James Livingston patch by: Baptiste Mille-Mathias * shell/rb-statusbar.c: (rb_statusbar_init): Make the progress bar in the status bar smaller, so it isn't too big. Fixes #368757. 2006-11-12 Jonathan Matthew * plugins/daap/rb-daap-plugin.c: (mdns_service_added), (mdns_service_removed): Take GDK lock in mDNS callbacks. Fixes UI hangs when DAAP shares disappear. 2006-11-12 James Livingston * plugins/audioscrobbler/rb-lastfm-source.c: (rb_lastfm_source_constructor), (rb_lastfm_source_add_station_cb): add more supported last.fm radio things. From #373622 2006-11-12 James Livingston * rhythmdb/rhythmdb.c: check the URI isn't NULL, in case ti got through the earlier checks. Fixes #373605 2006-11-12 James Livingston * sources/rb-library-source.c: (rb_library_source_add_child_source): sort the child-library sources the same as the library by default. 2006-11-11 Jonathan Matthew * daapsharing/rb-daap-src.c: (rb_daap_src_open): Don't try to report the size if we didn't get one. Fixes server-side decoded playback from mt-daapd (but seeking doesn't work), from #350276. 2006-11-11 Jonathan Matthew * daapsharing/rb-daap-sharing.c: (rb_daap_sharing_default_share_name), (create_share), (share_name_changed_cb): * daapsharing/rb-daap-sharing.h: * plugins/daap/rb-daap-plugin.c: (update_config_widget), (make_config_widget), (impl_create_configure_dialog): Update DAAP preferences widget when displaying it, and populate the share name entry with the default if there's nothing there already. Fixes #340279. 2006-11-11 James Livingston patch by: Adam Zimmerman * plugins/magnatune/magnatune/MagnatuneSource.py: * plugins/magnatune/magnatune/__init__.py: Add toolbar actions for Magnatune stuff. From #345783 2006-11-10 James Livingston * plugins/generic-player/rb-nokia770-source.c: (hal_udi_is_nokia770): * plugins/generic-player/rb-psp-source.c: (hal_udi_is_psp): * sources/rb-ipod-source.c: (hal_udi_is_ipod): don't shutdown the HAL context if it wasn't inited. Fixes #372824 2006-11-09 Jonathan Matthew * plugins/daap/rb-daap-plugin.h: Add the file I missed last time. 2006-11-09 Jonathan Matthew * CVS-SURGERY: * backends/gstreamer/Makefile.am: * backends/gstreamer/rb-player-gst.c: * configure.ac: * daapsharing/Makefile.am: * daapsharing/rb-daap-connection.c: (rb_daap_connection_disconnect): * daapsharing/rb-daap-src.c: (rb_daap_src_set_plugin), (rb_daap_src_open): * daapsharing/rb-daap-src.h: * data/glade/Makefile.am: * data/rhythmbox.schemas: * data/ui/Makefile.am: * plugins/Makefile.am: * plugins/daap/.cvsignore: * plugins/daap/Makefile.am: * plugins/daap/daap.rb-plugin.desktop.in: * plugins/daap/rb-daap-plugin.c: * shell/Makefile.am: * shell/rb-shell-preferences.c: (rb_shell_preferences_new): * shell/rb-shell.c: (construct_sources), (rb_shell_quit): * sources/Makefile.am: * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_new), (connection_auth_cb), (connection_connecting_cb), (connection_disconnected_cb), (release_connection), (rb_daap_source_disconnect), (rb_daap_source_show_popup): * sources/rb-daap-source.h: Mangle DAAP into a plugin. This disables DAAP with GStreamer 0.8. Fixes #336150. 2006-11-09 James Livingston * rhythmdb/rhythmdb.c: take the ref before calling the delete implementation, not after. From #372851. 2006-11-09 James Livingston patch by: Gilles Dartiguelongue * plugins/Makefile.am: * plugins/audiocd/Makefile.am: fix build when linking with --as-needed fixes #371178. 2006-11-09 James Livingston * plugins/audiocd/rb-audiocd-plugin.c: (impl_activate): use g_signal_connect_object not g_signal_object, which stops it beign called after the plugin is disposed. 2006-11-09 James Livingston * plugins/audioscrobbler/rb-audioscrobbler.c: (rb_audioscrobbler_finalize):don't attempt to use the SoupSession after we're finalised. Should fix #370513 2006-11-08 James Livingston patch by: Jerry Tan * data/glade/song-info.glade: set more a11y properties on the label-for/labelled-by info. Fixes #368179. 2006-11-08 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_dispose), (rb_entry_view_finalize): Unref objects and remove idle handlers in dispose rather than finalize. Should fix #364783. 2006-11-08 Jonathan Matthew * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): Rename 'ctxt' to 'parser' to avoid confusion, fix the check for xmlCreateMemoryParserCtxt returning NULL that was previously checking the wrong variable. Really fixes #336842. 2006-11-07 Jonathan Matthew * plugins/iradio/Makefile.am: Actually install the UI file. 2006-11-07 Jonathan Matthew * plugins/generic-player/rb-generic-player-source.c: (rb_generic_player_source_constructor), (rb_generic_player_source_dispose), (rb_generic_player_source_load_playlists): Don't crash if the source is destroyed before it gets a chance to load playlists. 2006-11-06 James Livingston * rhythmdb/rhythmdb-monitor.c: (rhythmdb_monitor_uri_path): * rhythmdb/rhythmdb.c: some leak fixes 2006-11-06 James Livingston * bindings/python/rb.override: change the right function in the last commit. 2006-11-06 James Livingston * bindings/python/rb.override: unwrap the python string instead of wrapping it. Oops. 2006-11-06 Jonathan Matthew * tests/test-utils.c: (test_rhythmdb_setup): Fix build break, #371106. 2006-11-04 Jonathan Matthew * tests/Makefile.am: * tests/test-rhythmdb-property-model.c: (_get_property_count), (START_TEST), (rhythmdb_property_model_suite), (main): * tests/test-rhythmdb-query-model.c: (START_TEST), (rhythmdb_query_model_suite), (main): * tests/test-rhythmdb.c: (START_TEST), (rhythmdb_suite): * tests/test-utils.c: (start_test_case), (end_step), (end_test_case), (mark_signal), (set_waiting_signal), (wait_for_signal), (test_rhythmdb_setup), (test_rhythmdb_shutdown), (set_entry_string), (set_entry_ulong), (set_entry_hidden): * tests/test-utils.h: Split up rhythmdb tests, add tests for RhythmDBPropertyModel. 2006-11-04 James Livingston * lib/rb-glade-helpers.c: (rb_glade_xml_new): don't use rb_file() is we were passed a absolute path, e.g. from the plugin file find function. 2006-11-04 Jonathan Matthew patch somewhat by: Oskari Saarenmaa * remote/dbus/rb-client.c: (main): * shell/rb-shell.c: (rb_shell_hidden_notify), (rb_shell_do_notify): * shell/rb-shell.h: * shell/rb-shell.xml: Add dbus method to request a notification for the playing song, and an argument to rhythmbox-client to use it. Fixes #359593. 2006-11-04 Jonathan Matthew * remote/dbus/rb-print-playing.py: Revert changes I accidentally committed a while ago. 2006-11-03 James Livingston * data/glade/song-info.glade: make more labels selectable, from #368641 2006-11-03 James Livingston * shell/rb-shell-clipboard.c: (get_focussed_widget), (rb_shell_clipboard_cmd_select_all), (rb_shell_clipboard_cmd_select_none): make Select All select text in the focussed widget if it's a text entry. Fixes #364590 2006-11-03 James Livingston * widgets/bacon-volume.c: (bacon_volume_button_get_type), (bacon_volume_button_init), (bacon_volume_button_dispose), (bacon_volume_button_new), (bacon_volume_button_realize), (bacon_volume_button_press), (bacon_volume_key_release), (bacon_volume_release_grab), (cb_dock_key_release), (bacon_volume_scale_get_type), (bacon_volume_scale_value_changed), (bacon_volume_theme_changed), (bacon_volume_load_icons): * widgets/bacon-volume.h: update bacon-volume-widget from cvs. Fixes #369491 2006-10-31 James Livingston * configure.ac: remove spaces around '=' where they shouldn't be, fixes building when you have libgpod 0.3.x 2006-10-31 James Livingston patch by: Nguyen Thai Ngoc Duy * rhythmdb/rhythmdb.c: don't remove stale db entries when the grace period is 0. Fixes #351425 2006-10-31 James Livingston patch by: Luca Ferretti * plugins/artdisplay/artdisplay.rb-plugin.desktop.in: * plugins/audiocd/audiocd.rb-plugin.desktop.in: * plugins/cd-recorder/cd-recorder.rb-plugin.desktop.in: * plugins/generic-player/generic-player.rb-plugin.desktop.in: * plugins/ipod/ipod.rb-plugin.desktop.in: * plugins/iradio/iradio.rb-plugin.desktop.in: * plugins/lyrics/lyrics.rb-plugin.desktop.in: * plugins/sample-python/sample-python.rb-plugin.desktop.in: * plugins/sample/sample.rb-plugin.desktop.in: Improve the descriptions of the plugins. Fixes #365326 2006-10-31 James Livingston * plugins/audiocd/Makefile.am: fix build on Solaris, fixes #367989. 2006-10-31 James Livingston * data/glade/song-info.glade: set the mnemonic target for the labels in the details tab. Fixes #368179. 2006-10-30 Jonathan Matthew * configure.ac: When complaining about GStreamer being too old, use the right variable name for the version we want. 2006-10-30 Jonathan Matthew * shell/rb-shell.h: * shell/rb-tray-icon.c: (rb_tray_icon_notify): * shell/rb-tray-icon.h: * bindings/python/rb.defs: * shell/rb-shell.c: (rb_shell_playing_entry_changed_cb), (rb_shell_notify_playing_entry), (rb_shell_hidden_notify): * sources/rb-playlist-source-recorder.c: (burn_cd): * sources/rb-podcast-source.c: (rb_podcast_source_start_download_cb), (rb_podcast_source_finish_download_cb), (rb_podcast_source_feed_updates_avaliable_cb): Change the various notification functions to take a parameter specifying whether the notification was explicitly requested by the user. Add a function to display a notification for an entry, including streaming song metadata. * shell/rb-shell-player.c: (rb_shell_player_stop): Emit playing-song-changed and playing-uri-changed when stopping playback. * sources/Makefile.am: * sources/rb-streaming-source.c: * sources/rb-streaming-source.h: Add a base class for streaming sources, handling streaming song metadata and buffering messages, emitting notifications on song changes, and updating play count statistics when playback stops. * plugins/audioscrobbler/Makefile.am: * plugins/audioscrobbler/rb-lastfm-source.c: (rb_lastfm_source_class_init), (rb_lastfm_source_finalize), (rb_lastfm_source_constructor), (impl_get_status), (rb_lastfm_message_cb), (rb_lastfm_source_new_station), (rb_lastfm_source_title_from_uri), (rb_lastfm_source_entry_added_cb), (rb_lastfm_source_metadata_cb), (rb_lastfm_song_changed_cb), (impl_activate): * plugins/audioscrobbler/rb-lastfm-source.h: * plugins/iradio/Makefile.am: * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_constructor), (impl_get_status), (info_available_cb), (playing_source_changed_cb): * sources/rb-iradio-source.h: Use the new streaming source base class for iradio and last.fm sources. Fixes #364094. 2006-10-30 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_db_entry_deleted_cb): when deleting a feed, cancel any downloads from it before deleting the post entry. Fixes #366567. 2006-10-30 James Livingston * shell/rb-shell-clipboard.c: remove the Control-T shortcut from move-to-trash, since there have been reports of people accidently deleting tracks and it probably isn't a common enough operation to be worth a shortcut. 2006-10-30 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: * configure.ac: * daapsharing/rb-daap-src.c: (rb_daap_src_init): Fix GStreamer 0.8 build (and some typos in configure.ac). 2006-10-30 Jonathan Matthew patch largely by: Edgar Luna * sources/rb-source.c: (rb_source_class_init), (rb_source_set_property), (rb_source_get_property): Add a property to RBSource for plugin-created sources to have a pointer to the RBPlugin object that created them. * plugins/audiocd/Makefile.am: * plugins/audiocd/multiple-album.glade: * plugins/audiocd/rb-audiocd-plugin.c: (create_source_cb): * sources/Makefile.am: * sources/rb-audiocd-source.c: (rb_audiocd_source_new): * sources/rb-audiocd-source.h: If musicbrainz returns multiple albums, present the user with a choice between them. Fixes #333215. * configure.ac: * plugins/Makefile.am: Remove unused old audio CD stuff, only build audiocd plugin if we have libnautilus-burn. Fixes #367440. 2006-10-30 James Livingston patch by: Brian McKenna * plugins/pythonconsole/pythonconsole.py: allow the python colsole to handle blocks. Fixes #366696. 2006-10-30 James Livingston * rhythmdb/rhythmdb.c: make the DB busy when processing files. From #349148 2006-10-30 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_sync_with_source), (rb_shell_player_get_playing_time_string), (tick_cb): * widgets/rb-header.c: (rb_header_sync_time), (slider_moved_callback), (rb_header_update_elapsed), (rb_header_elapsed_changed_cb): Revert dbus interface breakage introduced in the fix for #365908. 2006-10-29 Jonathan Matthew patch by: Luca Ferretti * sources/rb-podcast-source.c: (rb_podcast_source_constructor): Remove the access keys from the podcast-specific column headers. Fixes #360640 again. 2006-10-29 Jonathan Matthew patch by: James Livingston * sources/rb-browser-source.c: (rb_browser_source_constructor): Only register the search actions once. From #346801. 2006-10-29 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_error): When handling an error, try playing the next stream URL if we have one, rather than stopping playback. From #358140. 2006-10-28 Jonathan Matthew * shell/rb-shell.c: (handle_playlist_entry_cb): Don't crash if we can't guess a source for a URI in the playlist. Fixes #366261. 2006-10-28 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_sync_with_source), (rb_shell_player_get_playing_time_string), (rb_shell_player_seek), (tick_cb): * widgets/rb-header.c: (rb_header_sync_time), (rb_header_elapsed_changed_cb): Treat elapsed time as signed, since rb_player_get_time returns a signed value. When actually using the value, mostly treat negative values as 0. Fixes #365908. 2006-10-27 James Livingston patch by: Alex Lancaster * metadata/sj-metadata-musicbrainz.c: (lookup_cd): handle MusicBrainz returning 0 for the year/month/day. Fixes #364837. 2006-10-27 James Livingston patch by: Luca Ferretti * widgets/rb-entry-view.c: (rb_entry_view_append_column): remove the access keys from the entry view columns headers - they cause keybindings conflicts, headaches for translators and the HIG says they are bad. Fixes #360640. 2006-10-27 James Livingston patch by: Luca Ferretti * widgets/rb-entry-view.c: (rb_entry_view_append_column): remove the access keys from the entry view columns headers - they cause keybindings conflicts, headaches for translators and the HIG says they are bad. Fixes #360640. 2006-10-27 James Livingston * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_class_init): fix some glib 2.8 build issues 2006-10-27 James Livingston * plugins/artdisplay/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/iradio/Makefile.am: fix make clean 2006-10-26 Jonathan Matthew * rhythmdb/rhythmdb-query.c: (rhythmdb_read_encoded_property): Fall back to strtod() if g_ascii_strtod() doesn't work. * rhythmdb/rhythmdb-tree.c: (save_entry_double): Write floating point values using g_ascii_dtostr() to avoid problems with locale-specific representations. From #353205. 2006-10-25 James Livingston * plugins/artdisplay/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/iradio/Makefile.am: fix "make distcheck" 2006-10-25 Jonathan Matthew patch by: Brian Cameron * plugins/audiocd/Makefile.am: Link audiocd plugin with libnautilus-burn as required to get it to work on Solaris. Fixes #363288. 2006-10-25 Jonathan Matthew patch by: Gabor Kelemen * plugins/audioscrobbler/audioscrobbler.rb-plugin.desktop.in: Clarify that we don't submit actual songs to last.fm, just information on what you're listening to. Fixes #364014. 2006-10-24 Bastien Nocera * widgets/bacon-volume.c: (bacon_volume_button_get_type), (bacon_volume_button_class_init), (bacon_volume_button_new), (bacon_volume_key_release), (cb_button_timeout), (cb_button_press), (cb_dock_button_press), (cb_dock_key_release), (cb_dock_key_press), (bacon_volume_scale_value_changed): update from libbacon, to get better accessibility support (Closes: #364637) 2006-10-24 James Livingston patch by: Alex Lancaster * configure.ac: fix some typos and leftovers from disabled->enabled changes. Fixes #364217 2006-10-23 William Jon McCann * shell/rb-source-header.c (rb_source_header_init): Don't require source header cells to be homogeneous. Patch from #359188 2006-10-23 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: (rb_player_gst_bus_cb): Pause the pipeline while buffering. Fixes #358290. 2006-10-23 Bastien Nocera * configure.ac: update required libgpod version to avoid crashes when starting up with an iPod connect (Closes: #352972) * sources/rb-ipod-source.c: (rb_ipod_get_itunesdb_path), (hal_udi_is_ipod): remove outdated ifdefs 2006-10-22 Jonathan Matthew * plugins/Makefile.am: * plugins/power-manager/rb-power-manager-plugin.c: Don't try to build the power-manager plugin with dbus < 0.35. 2006-10-22 James Livingston patch by: Ed Catmur * plugins/artdisplay/Makefile.am: * plugins/artdisplay/artdisplay/__init__.py: * plugins/artdisplay/rhythmbox-missing-artwork.svg: display some placeholder art when none is available, to avoid having the widget pop in and out of existance. 2006-10-20 Jonathan Matthew * plugins/lyrics/lyrics.py: Set the lyrics window transient for the main window so it can actually be seen in party mode. Fixes #362981. 2006-10-17 Jonathan Matthew * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync): * sources/rb-source.c: (rb_source_class_init), (rb_source_can_show_properties), (rb_source_song_properties): * sources/rb-source.h: Only enable the 'properties' item in the 'music' menu if the selected source implements the show_properties method. Fixes #356485. 2006-10-16 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_property_row_activated_cb): Take the entry to play from the play order, rather than grabbing the first entry in the query model. Fixes #362042. 2006-10-16 James Livingston * shell/main.c: (main): save custom menu accelerators before exiting. Fixed #362300 2006-10-13 Ryan P Skadberg * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): I HATE adding this patch, but I'm sick of hitting Yes once and hour. Working around brain-dead podcasts. 2006-10-13 Jonathan Matthew * plugins/lyrics/lyrics.py: Disconnect the create-song-info handler when deactivated. Fixes #361882. 2006-10-11 Jonathan Matthew * widgets/rb-search-entry.c: (rb_search_entry_changed_cb): Reset the style when clearing the search text. Fixes #361295. 2006-10-11 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_changed_cb): Don't emit entry-prop-changed for hidden signals from chained query models, as the model will also propagate the parent model's entry-prop-changed signal. Fixes mysteriously unreported crashes. 2006-10-10 Jonathan Matthew * sources/rb-ipod-source.c: (generate_ipod_filename): * lib/rb-cut-and-paste-code.c: (rb_make_valid_utf8): * lib/rb-cut-and-paste-code.h: Move eel_make_valid_utf8 to lib/, make the replacement character a parameter. * rhythmdb/rhythmdb.c: (make_access_failed_error), (rhythmdb_execute_multi_stat_info_cb), (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_load): When constructing an error message that includes a URI, make sure the URI is valid utf-8. Fixes #353588. 2006-10-10 Jonathan Matthew * player/rb-recorder-gst.c: (rb_recorder_construct), (acb_wave_time): Add an extra audioconvert element to allow endianness conversion on big-endian machines, and fix a few endianness issues in the .wav reading code. Fixes #355611. 2006-10-09 James Livingston patch by: Alex Lancaster * widgets/eggtrayicon.c: (egg_tray_icon_notify): work around a libnotify 0.3.0 bug, as it doesn't handle escaped messages properly. Fixes #357553. 2006-10-09 James Livingston patch by: Luca Ferretti * data/glade/song-info-multiple.glade: * data/glade/song-info.glade: Fix a few HIG issues. 2006-10-08 Jonathan Matthew * plugins/audioscrobbler/rb-lastfm-source.c: (rb_lastfm_source_class_init): Return TRUE from impl_try_playlist so playback starts in a separate thread. 2006-10-07 Jonathan Matthew * shell/main.c: (main): Call bind_textdomain_codeset ("gstreamer-0.10", "UTF-8") so we get UTF-8 GStreamer messages. Fixes #357973. 2006-10-07 Jonathan Matthew * shell/rb-shell.c: (rb_shell_constructor): Remove a line that accidentally slipped in from some other universe. 2006-10-07 Jonathan Matthew * plugins/audiocd/rb-audiocd-plugin.c: (_delete_cb): Don't remove sources from the hash table while iterating it on shutdown. Fixes #359583. 2006-10-07 James Livingston patch from Alex Lancaster * shell/rb-shell.c: change the keybinding for "Plugins" to not conflict with others. Fixes #355904 2006-10-07 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_dispose), (rhythmdb_query_model_chain), (rhythmdb_query_model_entry_changed_cb), (rhythmdb_query_model_base_entry_prop_changed), (rhythmdb_query_model_base_entry_removed): For chained models, propagate the parent model's entry-prop-changed signal rather than emitting one from the db entry-changed handler. This ensures that when the change filters the entry out of the parent model, property models attached to the child model get the entry change signal before the post-entry-delete signal, so they can decrement the refcount for the right property value. Fixes #359083. 2006-10-07 Jonathan Matthew * plugins/audioscrobbler/Makefile.am: define NULL 2006-10-07 James Livingston * plugins/audioscrobbler/rb-lastfm-gst-src.c: (rb_lastfm_src_uri_get_protocols), (rb_lastfm_src_uri_set_uri): * plugins/audioscrobbler/rb-lastfm-source.c: (rb_lastfm_source_get_playback_uri): work around GStreamer not support hypens in URI schemes. 2006-10-06 William Jon McCann * plugins/iradio/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/cd-recorder/Makefile.am: Don't clean all plugin_DATA. Fixes #360210 2006-10-06 James Livingston patch from Matt N * backends/gstreamer/rb-player-gst.c: (emit_signal_idle), (rb_player_gst_bus_cb): * backends/rb-player.c: (rb_player_interface_init), (_rb_player_emit_tick), (_rb_player_emit_event): * backends/rb-player.h: let the backend emit named "events", for things that the core shouldn't know about. * rhythmdb/rhythmdb.h: * widgets/rb-header.c: (get_extra_metadata), (rb_header_sync): add support for streams containing album metadata. * plugins/audioscrobbler/Makefile.am: * plugins/audioscrobbler/audioscrobbler.rb-plugin.desktop.in: * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: (impl_activate), (impl_deactivate), (impl_create_configure_dialog): * plugins/audioscrobbler/rb-lastfm-gst-src.c: * plugins/audioscrobbler/rb-lastfm-source.c: * plugins/audioscrobbler/rb-lastfm-source.h: Add support for playback of last.fm streams. From #313049. 2006-10-06 James Livingston * plugins/magnatune/magnatune/Makefile.am: add a file I missed committing. Oops. 2006-10-06 James Livingston patch by: Adam Zimmerman * configure.ac: * data/rhythmbox.schemas: * plugins/Makefile.am: * plugins/magnatune/Makefile.am: * plugins/magnatune/magnatune-loading.glade: * plugins/magnatune/magnatune-prefs.glade: * plugins/magnatune/magnatune-purchase.glade: * plugins/magnatune/magnatune.rb-plugin.desktop.in: * plugins/magnatune/magnatune/BuyAlbumHandler.py: * plugins/magnatune/magnatune/MagnatuneSource.py: * plugins/magnatune/magnatune/TrackListHandler.py: * plugins/magnatune/magnatune/__init__.py: * plugins/magnatune/magnatune_circle_small.png: * plugins/magnatune/magnatune_logo_color_small.png: * plugins/magnatune/magnatune_logo_color_tiny.png: add a plugin to play and download tracks from the MagnaTune online music store. From #345783. 2006-10-06 Jonathan Matthew * lib/rb-proxy-config.c: (rb_proxy_config_init), (rb_proxy_config_dispose), (rb_proxy_config_finalize), (check_auto_proxy_config), (get_proxy_config): Don't crash when eel_gconf_get_string returns NULL. Fixes #359974. 2006-10-04 James Livingston patch by: Fryderyk Dziarmagowski * plugins/audiocd/Makefile.am: fix the plugin when linking with --as-needed. Fixes #358730 2006-10-03 Jonathan Matthew patch by: William Jon McCann * sources/rb-iradio-source.c: (playing_source_changed_cb): Fix some stupidity I introduced that caused crashes on shutdown. Fixes #359181. 2006-10-02 William Jon McCann * plugins/audiocd/Makefile.am: * plugins/audiocd/rb-audiocd-plugin.c: (create_source_cb): * plugins/iradio/.cvsignore: * plugins/iradio/Makefile.am: * plugins/iradio/rb-iradio-plugin.c: (impl_activate), (impl_deactivate): * plugins/power-manager/.cvsignore: Install missing iradio ui file. Don't leak ui filename. Fix iradio install dir. Fix audiocd install dir. Remove unused code from audio cd plugin. Fixes #359170 2006-10-03 Jonathan Matthew * sources/rb-ipod-source.c: (impl_move_to_trash): Uncomment rhythmdb_entry_move_to_trash call that I accidentally commented out while fixing bug 355235. Oops. 2006-10-03 James Livingston * lib/rb-util.c: (rb_string_split_words), (rb_search_fold): downgrade non-unicode warnings to debug statements, since they can occur with slightly broken files. * plugins/iradio/rb-iradio-plugin.c: (impl_deactivate): * shell/rb-shell.c: (rb_shell_source_deleted_cb): fix a crasher if the iradio plugin is disabled and re-enabled. 2006-10-02 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_register_core_entry_types), (rhythmdb_entry_podcast_post_get_type): * rhythmdb/rhythmdb.h: * tests/bench-rhythmdb-load.c: (main): Add definitions for some common extra-metadata fields, remove iradio entry type definition, add the concept of entry type categories, define categories for the core entry types. Categories are used to decide if an entry can be copied to a removable device, if it should be reported to audioscrobbler, etc. * shell/Makefile.am: * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_constructor), (rb_shell_player_init), (rb_shell_player_get_property), (open_location_thread), (rb_shell_player_open_location), (rb_shell_player_sync_with_source), (rb_shell_player_set_playing_source_internal), (tick_cb): * shell/rb-shell.c: (construct_widgets), (construct_sources), (rb_shell_player_elapsed_changed_cb): Remove iradio-specific code, use extra metadata fields for streaming title and artist name. * data/ui/rhythmbox-ui.xml: Add a placeholder for 'new ...' menu items. * Makefile.am: * sources/Makefile.am: * configure.ac: * data/rhythmbox.schemas: * plugins/Makefile.am: * plugins/iradio/Makefile.am: * plugins/iradio/iradio-ui.xml: * plugins/iradio/iradio.rb-plugin.desktop.in: * plugins/iradio/rb-iradio-plugin.c: (rb_iradio_plugin_init), (rb_iradio_plugin_finalize), (impl_activate), (impl_deactivate), (rb_iradio_plugin_class_init): iradio plugin, enabled and hidden by default. * plugins/audioscrobbler/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): * sources/rb-audiocd-source.c: (rb_audiocd_source_new): * sources/rb-daap-source.c: (rb_daap_source_new): * sources/rb-ipod-source.c: (rb_ipod_source_new), (impl_paste): Define entry type categories, and use them where appropriate. * sources/rb-iradio-source.c: (rb_iradio_source_dispose), (rb_iradio_source_constructor), (rb_iradio_source_new), (impl_get_status), (impl_want_uri), (buffering_cb), (check_entry_type), (streaming_title_request_cb), (streaming_artist_request_cb), (extra_metadata_gather_cb), (info_available_cb), (playing_entry_changed_cb), (playing_source_changed_cb): Move streaming metadata and buffering handling here from rb-shell-player.c. Emit extra-metadata notify signals when the streaming title or artist changes, and handle request and gather signals for those. * widgets/rb-header.c: (rb_header_class_init), (rb_header_set_property), (rb_header_get_property), (rb_header_new), (append_and_free), (rb_header_sync): * widgets/rb-header.h: Rework to use streaming artist and title extra-metadata. streaming-artist overrides entry artist, and streaming-title means entry title is a stream name, displayed in brackets. * doc/reference/Makefile.am: * doc/reference/rhythmbox.types: Remove iradio stuff from gtk-doc build. Fixed #347097. 2006-10-02 Jonathan Matthew patch mostly by: Ed Catmur * bindings/python/rhythmdb.defs: * lib/rb-marshal.list: * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_emit_entry_deleted), (rhythmdb_entry_extra_metadata_accumulator), (rhythmdb_entry_request_extra_metadata), (rhythmdb_emit_entry_extra_metadata_notify), (unset_and_free_g_value), (rhythmdb_entry_gather_metadata): * rhythmdb/rhythmdb.h: Add signals for dealing with transient metadata outside the set stored in RhythmDBEntry: - entry_extra_metadata_request returns a value for the requested metadata field - entry_extra_metadata_notify notifies observers of a change to an extra metadata field - entry_extra_metadata_gather returns the values of all extra metadata fields * shell/rb-shell-player.c: (rb_shell_player_set_db_internal), (rb_shell_player_extra_metadata_cb): Sync the display on extra metadata changes and emit dbus signals when we can marshal the value. * shell/rb-shell.c: (rb_shell_get_song_properties): Implement rb_shell_song_get_properties using rhythmdb_entry_gather_metadata. * plugins/rb-python-module.c: (pyg_value_g_value_as_pyobject), (pyg_value_g_value_from_pyobject), (rb_python_module_init_python): * configure.ac: Add GValue marshaller for python (until bug 351072 is fixed) From #345592. 2006-10-02 Jonathan Matthew * configure.ac: * data/rhythmbox.schemas: * plugins/Makefile.am: * plugins/power-manager/Makefile.am: * plugins/power-manager/power-manager.rb-plugin.desktop.in: * plugins/power-manager/rb-power-manager-plugin.c: (rb_gpm_plugin_class_init), (rb_gpm_plugin_init), (ignore_error), (inhibit_cb), (inhibit), (uninhibit_cb), (uninhibit), (playing_changed_cb), (impl_activate), (impl_deactivate): gnome-power-manager integration: inhibit suspend while playing. Fixes #344979. 2006-10-02 James Livingston update by: Aloriel and Alex Lancaster * help/C/rhythmbox.xml: fix some mispellings and grammer. Fixes #353143, #353146 and #353147. ============ Version 0.9.6 2006-10-01 James Livingston * configure.ac: bump version to 0.9.6. enable tag-writing and ipod-writing by default * NEWS: update NEWS 2006-09-30 Jonathan Matthew patch by: William Jon McCann * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_load): Use a local GError in case no error pointer pointer is passed in. From bug #358396. 2006-09-30 Jonathan Matthew * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_load): Don't reference members of freed structures. 2006-09-29 Jonathan Matthew patch by: William Jon McCann * player/rb-recorder-gst.c: (rb_recorder_burn): Drop GDK lock before entering n-c-b. Fixes #353894? 2006-09-28 Jonathan Matthew * plugins/lirc/rb-lirc-plugin.c: (rb_lirc_plugin_read_code), (impl_activate): Handle error/hangup conditions on the LIRC connection. Fixes #358049. 2006-09-28 Jonathan Matthew * plugins/lirc/rb-lirc-plugin.c: (impl_activate): Call lirc_init before lirc_readconfig so we don't crash if the user's .lircrc file has any mode sections. Fixes #357419. 2006-09-24 James Livingston * sources/rb-daap-source.c: (rb_daap_sources_shutdown): don't assert if we get called twice, as that can happen. Fixes #357214. 2006-09-24 James Livingston * backends/rb-encoder.h: add "file access" error * lib/rb-file-helpers.c: (rb_dot_dir): * podcast/rb-podcast-manager.c: (rb_podcast_manager_download_file_info_cb): remove directory creation race condition. * backends/gstreamer/rb-encoder-gst.c: (create_parent_dirs_uri), (create_parent_dirs), (rb_encoder_gst_encode): check result of directory creation. Fixes #347743 2006-09-22 Jonathan Matthew * plugins/audioscrobbler/rb-audioscrobbler.c: (*): Strip trailing whitespace 2006-09-21 Jonathan Matthew * rhythmdb/Makefile.am: * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_error_quark), (rhythmdb_tree_parser_start_element), (rhythmdb_tree_load): * rhythmdb/rhythmdb-tree.h: * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_load_error_cb), (rhythmdb_load_thread_main), (rhythmdb_save_thread_main): * rhythmdb/rhythmdb.h: Rather than aborting, show an error and refuse to load the database when it appears to come from the future. From bug #350304. 2006-09-19 Jonathan Matthew * bindings/python/rhythmdb.override: Make entry_foreach usable. 2006-09-18 Jonathan Matthew * sources/rb-podcast-source.c: (rb_podcast_source_init): Scale the icon so it matches the rest of the sources. Fixes #351410. 2006-09-17 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (_remove_entry_cb), (rhythmdb_property_model_set_query_model_internal), (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_entry_removed_cb), (rhythmdb_property_model_delete), (rhythmdb_property_model_perform_sync): Use the hash table to track hidden entries, rather than visible entries. Cuts memory usage fairly significantly. From bug #347425. 2006-09-14 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_sync_sorting): Patch from Christian Becke to fix compilation with -O3, bug #355945. 2006-09-14 Jonathan Matthew * sources/rb-ipod-source.c: (add_rb_playlist), (impl_move_to_trash), (impl_delete_thyself): Delete ipod playlists when the ipod source is deleted. Fixes #355235. * sources/rb-sourcelist.c: (rb_sourcelist_remove): Make sure we don't leave the sourcelist thinking a deleted source is still playing. Fixes nothing. 2006-09-13 Jonathan Matthew * shell/rb-shell.c: Use GTK_STOCK_OPEN instead of GTK_STOCK_DIRECTORY for the 'Music->Import Folder' menu item for better icon theme coverage. Fixes #354575. 2006-09-13 Jonathan Matthew * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_start_action_thread), (rhythmdb_finalize), (rhythmdb_thread_create), (rhythmdb_add_uri_with_type), (rhythmdb_load), (rhythmdb_save_async): Use a limited thread pool for adding URIs to the database. Fixes #352494. 2006-09-10 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: (rb_player_gst_bus_cb): Do something like the previous change, but for gstreamer 0.10 this time. Oops. Really fixes #349569. 2006-09-09 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: (error_cb): Ignore 'internal data flow error' messages if we've already got an error for the file. Fixes #349569. 2006-09-07 Jonathan Matthew * shell/rb-shell-clipboard.c: (rb_shell_clipboard_playlist_deleted_cb): Rebuild 'add to playlist' menu before removing actions for deleted playlists, and don't unref the action, as we never had a reference on it to begin with. Fixes #354599. 2006-09-05 Jonathan Matthew * widgets/libsexy/sexy-icon-entry.c: (sexy_icon_entry_map), (sexy_icon_entry_unmap), (draw_icon), (sexy_icon_entry_set_icon): Apply fix for bug #354149 to our internal copy of sexy-icon-entry.c. 2006-09-04 Jonathan Matthew * daapsharing/rb-daap-connection.c: (handle_playlists): Reverse the list of playlists on the DAAP server so it ends up in the right order. Fixes #353926. 2006-09-03 Jonathan Matthew * plugins/lirc/rb-lirc-plugin.c: (rb_lirc_plugin_read_code): Fully process each code so the LIRC client returns to its normal state when we're done. Makes LIRC actually work properly for me. 2006-09-03 Jonathan Matthew patch by: Ed Catmur * widgets/libsexy/sexy-icon-entry.c: (sexy_icon_entry_map), (sexy_icon_entry_unmap), (sexy_icon_entry_set_icon): Don't show unused GdkWindows in SexyIconEntry. Fixes #353671. 2006-09-02 William Jon McCann patch by: James Livingston * configure.ac: * data/rhythmbox.schemas: * metadata/Makefile.am: * plugins/Makefile.am: * plugins/audiocd/.cvsignore: * plugins/audiocd/Makefile.am: * plugins/audiocd/audiocd.rb-plugin.desktop.in: * plugins/audiocd/rb-audiocd-plugin.c: (rb_audiocd_plugin_class_init), (rb_audiocd_plugin_init), (rb_audiocd_plugin_finalize), (rb_audiocd_plugin_mount_volume), (rb_audiocd_plugin_unmount_volume), (poll_tray_opened), (end_cd_drive_monitor), (begin_cd_drive_monitor), (get_nautilus_burn_drive_for_path), (split_drive_from_cdda_uri), (rb_audiocd_plugin_playing_uri_changed_cb), (nautilus_burn_drive_get_device), (rb_audiocd_plugin_source_deleted), (create_source_cb), (impl_activate), (_delete_cb), (impl_deactivate): * plugins/cd-recorder/rb-cd-recorder-plugin.c: (rb_cd_recorder_plugin_init), (rb_cd_recorder_plugin_finalize): * shell/main.c: (main): * shell/rb-removable-media-manager.c: (rb_removable_media_manager_finalize), (rb_removable_media_manager_load_media), (rb_removable_media_manager_mount_volume), (rb_removable_media_manager_scan): * sources/Makefile.am: * sources/rb-audiocd-source.c: * sources/rb-audiocd-source.h: Make auto CD support a plugin. Fixes #349415. 2006-09-02 Jonathan Matthew * daapsharing/rb-daap-connection.c: (handle_song_listing): Add a final rhythmdb_commit to make sure all songs from the share show up in the daap source. Fixes #353913. 2006-09-02 Jonathan Matthew * sources/rb-sourcelist-model.c: (rb_sourcelist_model_drag_data_received), (rb_sourcelist_model_row_drop_possible): Re-enable dragging of a set of tracks to the source list to create a new static playlist. Fixes #353893. 2006-09-02 Jonathan Matthew * widgets/bacon-volume.c: (cb_button_timeout): Actually drop the GDK lock, rather than returning while holding it. Fixes #353895. 2006-08-30 Jonathan Matthew * plugins/generic-player/rb-generic-player-source.c: (rb_generic_player_source_constructor), (rb_generic_player_source_get_device_info), (impl_delete_thyself), (rb_generic_player_source_load_songs), (load_playlist_file), (default_load_playlists), (get_hal_context): Only call libhal_ctx_shutdown if libhal_ctx_init succeeds. Fixes #353483. 2006-08-30 Jonathan Matthew * rhythmdb/rhythmdb-monitor.c: (rhythmdb_directory_change_cb): Canonicalise URIs received from gnome-vfs file monitor. Fixes #353447. 2006-08-28 Jonathan Matthew * help/C/rhythmbox.xml: unbreak help build * plugins/lirc/rb-lirc-plugin.c: (impl_activate): Unbuffer the IO channel. Fixes some weirdness for me. 2006-08-28 Jonathan Matthew * help/C/rhythmbox.xml: * plugins/lirc/rb-lirc-plugin.c: (rb_lirc_plugin_read_code), (impl_activate), (impl_deactivate): Add 'playpause' LIRC command. 2006-08-24 Jonathan Matthew * sources/rb-source.c: (rb_source_class_init), (rb_source_dispose), (rb_source_finalize): Remove idle callbacks in dispose, rather than finalize. Fixes crashes when disconnecting generic audio players. 2006-08-23 Jonathan Matthew patch by: Paolo Borelli * plugins/rb-python-plugin.c: (rb_python_object_get_type): Fix a small leak. 2006-08-19 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: * shell/rb-shell-player.c: (rb_shell_player_sync_with_source): Don't actually disable the seek bar for non-seekable songs, because we can't reliably tell yet. 2006-08-19 Jonathan Matthew * daapsharing/rb-daap-share.c: (add_entry_to_mlcl), (add_playlist_entry_to_mlcl), (databases_cb), (db_entry_added_cb), (db_entry_deleted_cb), (rb_daap_share_server_start), (rb_daap_share_server_stop): * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-tree.c: (save_entry): * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_entry_allocate), (rhythmdb_entry_set_internal), (rhythmdb_prop_type_get_type), (rhythmdb_entry_get_ulong): * rhythmdb/rhythmdb.h: Give db entries a numeric ID property, replacing the daap server's entry->id map. From #347665. 2006-08-19 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_sync_with_source): * widgets/rb-header.c: (rb_header_class_init), (rb_header_set_property), (rb_header_get_property), (rb_header_set_playing_entry), (rb_header_sync), (rb_header_sync_time): * widgets/rb-header.h: Add a 'seekable' property on RBHeader, and use it to make the seek bar insensitive when the player backend tells us we can't seek in the current song. From #330410. 2006-08-18 Jonathan Matthew * widgets/rb-song-info.c: (rb_song_info_update_buttons): Don't try to unref previous/next entries if they aren't there. Fixes #351806. 2006-08-15 James Livingston * rhythmdb/rhythmdb-monitor.c: (entry_volume_mounted_or_unmounted), (rhythmdb_volume_mounted_cb), (rhythmdb_volume_unmounted_cb): turn the mountpoint into a RBRefString and compare equality of those, rather than doign lots of strcmp()s. * sources/rb-source.c: (rb_source_finalize), (_update_status_idle), (rb_source_row_inserted_cb), (rb_source_post_entry_deleted_cb): do status notification as well as the visibility update in an idle callback. Makes it take much less time to update after a volume mount/unmount event. 2006-08-15 James Livingston patch by: Christian Becke * shell/rb-shell.c: (rb_shell_cmd_add_folder_to_library): allow multiple selections in the Import Folder dialog. Fixes #351414. 2006-08-15 Jonathan Matthew * shell/rb-shell.c: (construct_widgets): * shell/rb-statusbar.c: (rb_statusbar_class_init), (rb_statusbar_connect_ui_manager), (rb_statusbar_set_property), (rb_statusbar_get_property), (rb_statusbar_new): * shell/rb-statusbar.h: Use the connect-proxy signal from the UI manager, which covers all action groups, rather than just one. Fixes #351280. 2006-08-15 Jonathan Matthew * widgets/rb-library-browser.c: (rebuild_child_model): Fix query model reference counts (bug #349601). 2006-08-15 James Livingston * backends/rb-player.c: (rb_player_interface_init): make the EOS and Error signals be non-recursive. Fixes a highly-unlikely issue that could have caused #322972. 2006-08-14 James Livingston * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_init): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_init): 2006-08-14 Jonathan Matthew * sources/rb-browser-source.c: * sources/rb-import-errors-source.c: * sources/rb-iradio-source.c: * sources/rb-library-source.c: * sources/rb-missing-files-source.c: * sources/rb-play-queue-source.c: * sources/rb-playlist-source.c: * sources/rb-podcast-source.c: * sources/rb-source.c: Make entry-type a property on RBSource, rather than on most of its subclasses. Fixes #347288. 2006-08-13 Jonathan Matthew * remote/dbus/rb-client.c: (parse_pattern), (create_rb_shell_proxies), (main): Actually implement %ag and %aG (genre) for --print-playing-format 2006-08-11 Jonathan Matthew * lib/rb-debug.c: (rb_debug_real): No point allocating a buffer for the timestamp when we can just put it on the stack. 2006-08-11 Jonathan Matthew * metadata/rb-metadata-dbus-client.c: (start_metadata_service): Don't ignore SIGPIPE. gnome-vfs does it for us anyway. 2006-08-11 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_update_synctime): fix accidental commit in the last, which caused a warning. 2006-08-11 James Livingston * data/rhythmbox.schemas: * podcast/rb-podcast-manager.c: (rb_podcast_manager_update_synctime): change the schema's update-inteval value from 0 to 1, which causes it to update on startup, rather than never. Should fixs #343818. 2006-08-11 James Livingston * configure.ac: * data/Makefile.am: - data/rhythmbox.desktop.in: + data/rhythmbox.desktop.in.in: add mroe indirection to the build, so the @VERSION@ can be substituted in. Fix some issues with newer bug-buddy versions. Fixes #348853. 2006-08-10 William Jon McCann * data/rhythmbox.schemas: * plugins/Makefile.am: * plugins/artdisplay/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/cd-recorder/Makefile.am: * plugins/generic-player/Makefile.am: * plugins/ipod/Makefile.am: * plugins/lirc/Makefile.am: * plugins/lyrics/Makefile.am: * plugins/pythonconsole/Makefile.am: * plugins/rb-module.c: * plugins/rb-module.h: * plugins/rb-plugin-manager.c: (configure_button_cb), (plugin_manager_view_cell_cb), (cursor_changed_cb), (plugin_manager_populate_lists), (plugin_manager_set_active), (plugin_manager_toggle_active), (plugin_manager_get_selected_plugin), (rb_plugin_manager_init), (rb_plugin_manager_finalize): * plugins/rb-plugin-manager.h: * plugins/rb-plugin.c: (rb_get_plugin_paths), (rb_plugin_find_file): * plugins/rb-plugin.h: * plugins/rb-plugins-engine.c: (rb_plugins_engine_load), (rb_plugins_engine_load_cb), (rb_plugins_engine_load_all), (rb_plugins_engine_init), (rb_plugin_info_free), (load_plugin_module), (rb_plugins_engine_activate_plugin), (rb_plugins_engine_deactivate_plugin), (rb_plugins_engine_plugin_is_active), (rb_plugins_engine_plugin_is_visible), (rb_plugins_engine_plugin_is_configurable), (rb_plugins_engine_configure_plugin), (rb_plugins_engine_get_plugin_name), (rb_plugins_engine_get_plugin_description), (rb_plugins_engine_get_plugin_authors), (rb_plugins_engine_get_plugin_website), (rb_plugins_engine_get_plugin_copyright), (rb_plugins_engine_get_plugin_icon): * plugins/rb-plugins-engine.h: * plugins/rb-python-module.c: (rb_python_module_init_python), (rb_python_module_load), (rb_python_module_unload), (rb_python_module_class_init), (rb_python_module_new), (finalise_collect_cb), (rb_python_shutdown): * plugins/rb-python-module.h: * plugins/rb-python-plugin.c: (call_python_method), (impl_deactivate), (impl_activate), (impl_create_configure_dialog), (impl_is_configurable), (rb_python_object_get_type): * plugins/rb-python-plugin.h: * plugins/rb/Makefile.am: Use TRUE/FALSE in schemas to make it easier to read. Remove spurious whitespace. Don't use libgnome explicitly. Replace the crack USER_RB_PLUGINS_LOCATION API with rb_get_plugin_paths(). Remove unused RB_PLUGINS_ENGINE_BASE_KEY CONF_PREFIX etc. Don't special case loading of dirs. Install plugins to subdirectors of PLUGINDIR so they don't interfere. Install rb plugin to LIBDIR not DATADIR. Fixes #350352 2006-08-10 James Livingston * daapsharing/rb-daap-connection.c: (connection_connected), (connection_disconnected), (connection_operation_done): * daapsharing/rb-daap-share.c: (name_collision_cb): * plugins/generic-player/rb-generic-player-source.c: (rb_generic_player_source_load_playlists): * podcast/rb-podcast-manager.c: (rb_podcast_manager_download_entry), (rb_podcast_manager_sync_head_cb), (rb_podcast_manager_next_file), (end_job), (rb_podcast_manager_event_loop): * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_perform_sync): * rhythmdb/rhythmdb-query-model.c: (idle_process_update_idle), (rhythmdb_query_model_process_update), (idle_process_update), (rhythmdb_query_model_reapply_query_cb): * shell/rb-play-order.c: (sync_playing_entry_cb): * shell/rb-removable-media-manager.c: (rb_removable_media_manager_load_media): * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync_idle), (rb_shell_clipboard_sync), (rb_shell_clipboard_entryview_changed_cb), (rb_shell_clipboard_entries_changed_cb), (rb_shell_clipboard_playlist_deleted_cb), (rebuild_playlist_menu), (rebuild_playlist_menu_idle), (rb_shell_clipboard_playlist_added_cb): * shell/rb-shell-player.c: (notify_playing_idle), (rb_shell_player_jump_to_current_idle), (_idle_unblock_signal_cb): * shell/rb-shell.c: (idle_save_playlist_manager), (quit_timeout), (rb_shell_quit): * sources/rb-ipod-source.c: (load_ipod_db_idle_cb): * sources/rb-library-source.c: (add_child_sources_idle): * sources/rb-playlist-source-recorder.c: (response_idle_cb), (burn_cd_idle): * sources/rb-source.c: (update_visibility_idle): * widgets/bacon-volume.c: (button_timeout), (cb_button_timeout), (cb_button_press): * widgets/rb-druid.c: (idle_set_sensitive): * widgets/rb-entry-view.c: (rb_entry_view_emit_selection_changed): take the GDK lock when we should be, from #348588 2006-08-09 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_get_path), (rhythmdb_property_model_get_value), (rhythmdb_property_model_iter_next): don't attempt to verify the iterator if it's the All value, since it isn't valid. Fixes a potential crasher. 2006-08-08 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post), (rb_podcast_manager_download_file_info_cb), (rb_podcast_manager_abort_download), (download_info_free), (download_info_new): Use gnome_vfs_async_get_file_info to figure out the local filename for a podcast episode, so we get the filename from the target of any redirects, rather than the source. When creating the GnomeVFSURI, hide the query string, then append it later, to stop gnome-vfs from converting 'http://' to 'http:/'. If the local filename ends with the query string, remove it. Fixes #330766 and #321991. 2006-08-08 Jonathan Matthew * sources/rb-library-source.c: (impl_want_uri): * sources/rb-static-playlist-source.c: (impl_want_uri): Treat sftp:// URIs as likely indicators of songness. 2006-08-07 James Livingston * rhythmdb/rhythmdb.c: (process_added_entries_cb): don't auto-hide remote tracks with GStreamer 0.10, and remember their visibility like local ones. 2006-08-07 James Livingston * remote/dbus/rb-client.c: (main): don't unref the bus instance, since apparently it's a borrowed reference. Should fix #347072. 2006-08-06 James Livingston * shell/rb-play-order-shuffle.c: (rb_shuffle_play_order_finalize), (rb_shuffle_play_order_get_next), (rb_shuffle_play_order_go_next), (rb_shuffle_play_order_get_previous), (rb_shuffle_play_order_go_previous), (handle_query_model_changed), (remove_from_history), (add_randomly_to_history), (rb_shuffle_sync_history_with_query_model), (rb_shuffle_playing_entry_changed), (rb_shuffle_db_entry_deleted), (query_model_and_history_contents_match): remove the tentatative history stuff, which is from older code, like we did for -random a few weeks ago. 2006-08-06 James Livingston * shell/rb-play-order-queue.c: (rb_queue_play_order_go_next), (rb_queue_play_order_get_previous): * shell/rb-play-order-random.c: (rb_random_play_order_get_next), (rb_random_play_order_go_next), (rb_random_play_order_get_previous), (rb_random_db_changed): * shell/rb-play-order-shuffle.c: (rb_shuffle_play_order_init), (rb_shuffle_play_order_get_next), (rb_shuffle_play_order_go_next), (rb_shuffle_play_order_get_previous), (add_randomly_to_history), (rb_shuffle_db_changed), (rb_shuffle_entry_added), (rb_shuffle_entry_removed), (query_model_and_history_contents_match): * shell/rb-play-order.c: (rb_play_order_query_model_changed), (rb_play_order_entry_added_cb), (rb_play_order_row_deleted_cb), (default_has_next), (default_has_previous), (rb_play_order_model_not_empty): Fix assorted refcounting issues in various play orders, after reviewing the code. Should fix #349601. 2006-08-05 Jonathan Matthew * plugins/artdisplay/artdisplay/LocalCoverArtSearch.py: Pass the items_per_notification parameter to gnomevfs.async.load_directory, fixing 'argument 4 impossible' errors with some versions of python. 2006-08-05 Jonathan Matthew * widgets/libsexy/sexy-icon-entry.c: (draw_icon): Don't try to draw the icon if the drawable area is too small. Fixes #349838. 2006-08-04 Ryan P Skadberg patch by: Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat): seems to fix 348783 2006-08-05 James Livingston * configure.ac: tell libtool not to check for C++/fortran/ etc compilers * plugins/rb-plugins-engine.c: (rb_plugin_info_free): remove the right watch, to fix some gconf warnings. 2006-08-04 James Livingston patch by: William Jon McCann * shell/main.c: (main): use GOption instead of popt. Fixes #346930 2006-08-04 James Livingston * plugins/rb-plugin-manager.c: (plugin_manager_set_active): try to actually fix #349722 this time 2006-08-04 James Livingston * plugins/artdisplay/artdisplay/LocalCoverArtSearch.py: don't attempt to seach for local art from http:// URIs, or those gnome-vfs doesn't know about. Fixes #348571. 2006-08-03 Benjamin Otte various fixes for valgrind complaints: * lib/rb-tree-dnd.c: (rb_tree_dnd_data_free), (init_rb_tree_dnd_data): free the associated target list, too * widgets/libsexy/sexy-icon-entry.c: (sexy_icon_entry_realize): initialize allocation.{x,y,width,height} correctly * widgets/rb-entry-view.c: (rb_entry_view_sync_sorting), (rb_entry_view_constructor): free strings when no longer needed 2006-08-03 James Livingston * plugins/rb-plugin-manager.c: (plugin_manager_set_active): use the real GtkTreeModel not the filter. Fixes #349722 2006-08-03 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: Only use DAAP seek hacks for GStreamer 0.8 builds. * daapsharing/rb-daap-src.c: (rb_daap_src_class_init), (rb_daap_src_open): * daapsharing/rb-daap-src.h: Implement normal GStreamer seeking for GStreamer 0.10 builds. * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_get_headers): * sources/rb-daap-source.h: Reimplement rb_daap_source_get_headers for the case where we've already got the byte offset. Add a small hack to rb_daap_source_class_init to prevent the linker from dropping rb-daap-src.o entirely. Fixes client-side DAAP seeking (for MP3, at least), bug #330410. 2006-08-02 James Livingston * daapsharing/rb-daap-connection.c: (entry_set_string_prop), (handle_song_listing), (handle_playlist_entries), (rb_daap_connection_dispose): * sources/rb-daap-source.c: (_add_location_to_playlist), (rb_daap_source_connection_cb): make the daap code use RBRefStrings for playlist URIs, not pointless duplicate strings. From #347425. 2006-08-02 James Livingston * data/rhythmbox.schemas: * lib/rb-preferences.h: * plugins/rb-plugin-manager.c: (rb_plugin_manager_class_init), (plugin_manager_view_cell_cb), (plugin_manager_populate_lists), (plugin_manager_set_active), (plugin_manager_toggle_active), (plugin_manager_get_selected_plugin), (name_search_cb), (plugin_manager_construct_tree), (rb_plugin_manager_new), (rb_plugin_manager_finalize): * plugins/rb-plugins-engine.c: (rb_plugins_engine_load_cb), (rb_plugins_engine_load_all), (rb_plugin_info_free), (rb_plugins_engine_plugin_is_visible), (rb_plugins_engine_plugin_visible_cb): * plugins/rb-plugins-engine.h: add gconf options to 1) disable loading per-user plugins, and 2) hide plugins from the manager UI. From #349395 2006-08-02 James Livingston * sources/rb-sourcelist-model.c: (rb_sourcelist_model_drag_data_received): don't crash if we didn't drop on a source. Fixes #349580. 2006-07-31 Jonathan Matthew * configure.ac: * daapsharing/rb-daap-dialog.c: * daapsharing/rb-daap-dialog.h: * shell/Makefile.am: * sources/Makefile.am: * sources/rb-daap-source.c: (connection_auth_cb), (rb_daap_source_connection_cb), (rb_daap_source_activate): Add gnome-keyring support for DAAP passwords and use gnome-password-dialog instead of our own. Patch mostly by James Livingston. Fixes bug #330346. 2006-07-31 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_set_playing_source_internal), (rb_shell_player_sync_with_selected_source): Remove call to rb_source_have_url, as we never did anything with the result. * sources/rb-browser-source.c: (rb_browser_source_class_init): * sources/rb-import-errors-source.c: (rb_import_errors_source_class_init): * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (impl_song_properties), (impl_want_uri), (impl_add_uri): * sources/rb-library-source.c: (rb_library_source_class_init), (impl_want_uri), (impl_add_uri): * sources/rb-missing-files-source.c: (rb_missing_files_source_class_init): * sources/rb-playlist-source.c: (rb_playlist_source_class_init): * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (impl_want_uri), (impl_add_uri): * sources/rb-source.c: (rb_source_class_init), (rb_source_want_uri), (rb_source_add_uri), (rb_source_handle_eos): * sources/rb-source.h: * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (search_action_changed), (impl_want_uri): Remove unused 'have_url' vfunc, add 'want_uri' and 'add_uri' vfuncs. When adding a URI, want_uri gets called for each source; the one that wants it most gets the URI passed to its add_uri method. * shell/rb-shell.h: * shell/rb-shell.c: (rb_shell_playing_entry_changed_cb), (rb_shell_guess_source_for_uri), (rb_shell_add_uri), (handle_playlist_entry_cb), (rb_shell_load_uri): * shell/rb-playlist-manager.c: (handle_playlist_entry_cb): Use want_uri and add_uri to simplify and make generic rb_shell_add_uri, rb_shell_load_uri, various playlist parsing code. If a source that returns TRUE from try_playlist wants all the URIs in the playlist, give it the playlist URI instead. This retains the existing behaviour for adding iradio playlists. * bindings/python/rb.defs: Update for above changes. From bug #347097. 2006-07-31 James Livingston * data/Makefile.am: * data/generate-keys.sh: fix the build I broke with the last commit. Oops. 2006-07-31 James Livingston * data/rhythmbox.applications: remove from cvs, as it hasn't been used in a long time. Fixes #349179. 2006-07-30 James Livingston * lib/rb-util.c: (rb_gvalue_compare), (rb_value_array_append_data): * rhythmdb/rhythmdb-query.c: (rhythmdb_query_to_string): * rhythmdb/rhythmdb.c: (rhythmdb_finalize): more minor leak fixes 2006-07-30 Jonathan Matthew * sources/rb-browser-source.c: (rb_browser_source_do_query): Don't tell the browser the query is still pending when doing a subset search. Fixes #348617 again. 2006-07-30 James Livingston * bindings/python/rb.override: remove an extraneous _wrap_ from the override definition. Fixes #348893. 2006-07-30 James Livingston * lib/eel-gconf-extensions.c: (eel_gconf_handle_error): don't use rb_error_dialog, as it's above this in the stack. * lib/rb-util.c: (rb_gvalue_compare): * lib/rb-util.h: change the return type to int, as we're returning -1/0/1 * rhythmdb/rhythmdb.c: (rhythmdb_finalize): * widgets/rb-query-creator.c: (rb_query_creator_constructor), (rb_query_creator_set_sorting): minor leak fixes 2006-07-28 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_init), (rhythmdb_tree_finalize), (rhythmdb_tree_parser_end_element), (rhythmdb_tree_entry_new), (rhythmdb_tree_entry_new_internal), (get_or_create_genre), (remove_entry_from_album), (rhythmdb_tree_entry_set), (rhythmdb_tree_entry_delete), (rhythmdb_tree_entry_delete_by_type), (conjunctive_query), (rhythmdb_tree_entry_lookup_by_location), (rhythmdb_tree_entry_foreach_func), (rhythmdb_tree_entry_foreach), (rhythmdb_hash_tree_foreach), (rhythmdb_tree_entry_type_registered): actually make RhythmDBTree threadsafe. Fix a nasty problem if the _foreach callback function caused the addition/removal of entries. 2006-07-27 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_set_model_internal): Clear selection before changing our idea of the model. Fixes crashes on model changes while playing. 2006-07-27 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_entry_type_registered): add a missing rb_refstring_unref. * rhythmdb/rhythmdb.c: (rhythmdb_action_free), (rhythmdb_process_file_deleted): use rb_refstring_unref not g_free: oops. should hopefully fix the crash reported on #347425. 2006-07-27 James Livingston * backends/gstreamer/rb-encoder-gst.c: (get_profile_from_mime_type): fix encoding error issue, from #310774. * rhythmdb/rb-refstring.c: (rb_refstring_unref): Fix potential thread-safety issue. 2006-07-27 James Livingston * rhythmdb/rb-refstring.c: (rb_refstring_find): * rhythmdb/rb-refstring.h: add a new function which returns the RBRefString that matches a string, but never creates a new one. * rhythmdb/rhythmdb-monitor.c: (rhythmdb_init_monitoring), (monitor_entry_file), (rhythmdb_check_changed_file), (rhythmdb_directory_change_cb): * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_init), (unparent_entries), (free_unknown_entries), (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element), (save_entry), (save_unknown_entry_type), (rhythmdb_tree_entry_new), (rhythmdb_tree_entry_set), (rhythmdb_tree_entry_delete), (remove_one_song), (rhythmdb_tree_entry_lookup_by_location), (rhythmdb_tree_entry_type_registered): * rhythmdb/rhythmdb.c: (rhythmdb_execute_multi_stat_info_cb), (rhythmdb_event_free), (sync_entry_changed), (rhythmdb_entry_new), (rhythmdb_entry_example_new), (rhythmdb_entry_finalize), (rhythmdb_process_stat_event), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_process_file_created_or_modified), (rhythmdb_process_file_deleted), (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat), (queue_stat_uri), (rhythmdb_execute_load), (action_thread_main), (rhythmdb_entry_set_internal), (rhythmdb_entry_move_to_trash_set_error), (rhythmdb_entry_move_to_trash), (rhythmdb_entry_lookup_by_location), (rhythmdb_entry_lookup_by_location_refstring), (default_sync_metadata), (rhythmdb_entry_get_string), (rhythmdb_entry_get_refstring): * rhythmdb/rhythmdb.h: * shell/rb-shell.c: (rb_shell_db_entry_added_cb): * sources/rb-playlist-source.c: (rb_playlist_source_constructor), (rb_playlist_source_row_deleted), (rb_playlist_source_entry_added_cb), (rb_playlist_source_location_in_map), (rb_playlist_source_add_to_map): Make the LOCATION field of RhythmDBEntry be a RBRefString instead, which reduces some of the memory-fragmentation on startup and saves RBStaticPlaylistSource duplicating all the strings. 2006-07-26 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_copy_contents), (rhythmdb_query_model_chain): * rhythmdb/rhythmdb-query-model.h: Add function to copy contents from one query model to another, filtered by the destination model's query. * sources/rb-browser-source.c: (rb_browser_source_do_query): Use the above to create a new query model for subset searches, rather than filtering the existing model. Fixes #348617. 2006-07-25 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_changed_cb): Make hidden entries not get lost from static playlists. Yet again. Fixes #323095. * tests/test-rhythmdb.c: (START_TEST), (rhythmdb_suite): add a test case for the above, so that we should know if a change will break it again. 2006-07-25 William Jon McCann * data/rhythmbox.schemas: Fix for last commit. * podcast/rb-podcast-manager.c: (rb_podcast_manager_download_entry), (rb_podcast_manager_start_sync), (rb_podcast_manager_update_feeds), (rb_podcast_manager_db_entry_deleted_cb): * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_set_query_model_internal), (rhythmdb_property_model_set_property), (rhythmdb_property_model_finalize), (rhythmdb_property_model_drag_data_get): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_query_internal), (rhythmdb_query_model_set_property), (rhythmdb_query_model_get_property), (rhythmdb_query_model_chain): * rhythmdb/rhythmdb-query-model.h: * sources/rb-browser-source.c: (rb_browser_source_dispose), (rb_browser_source_do_query): * sources/rb-import-errors-source.c: (rb_import_errors_source_constructor): * sources/rb-iradio-source.c: (rb_iradio_source_dispose), (rb_iradio_source_constructor), (rb_iradio_source_set_property), (rb_iradio_source_get_property), (rb_iradio_source_add_station), (impl_search), (impl_get_status), (rb_iradio_source_songs_show_popup_cb), (genre_selection_reset_cb), (rb_iradio_source_show_browser), (rb_iradio_source_do_query), (handle_playlist_entry_cb), (rb_iradio_source_add_from_playlist): * sources/rb-missing-files-source.c: (rb_missing_files_source_constructor), (rb_missing_files_source_dispose), (rb_missing_files_source_new): * sources/rb-play-queue-source.c: (rb_play_queue_source_finalize): * sources/rb-playlist-source.c: (rb_playlist_source_constructor), (rb_playlist_source_dispose), (rb_playlist_source_finalize), (rb_playlist_source_save_playlist), (rb_playlist_source_new_from_xml), (rb_playlist_source_save_to_xml), (rb_playlist_source_setup_entry_view), (rb_playlist_source_set_query_model), (rb_playlist_source_get_db), (rb_playlist_source_get_query_model), (rb_playlist_source_mark_dirty), (rb_playlist_source_location_in_map), (rb_playlist_source_add_to_map): * sources/rb-podcast-source.c: (rb_podcast_source_dispose), (rb_podcast_source_finalize), (rb_podcast_source_constructor), (rb_podcast_source_set_property), (rb_podcast_source_get_property), (impl_delete), (rb_podcast_source_state_prefs_sync), (rb_podcast_source_show_browser), (rb_podcast_source_do_query), (impl_get_config_widget), (rb_podcast_source_add_feed), (rb_podcast_source_cmd_download_post), (rb_podcast_source_cmd_cancel_download), (rb_podcast_source_cmd_delete_feed), (rb_podcast_source_cmd_update_feed), (rb_podcast_source_cmd_update_all), (rb_podcast_source_cb_interval_changed_cb), (rb_podcast_source_load_finish_cb), (rb_podcast_source_shutdown), (rb_podcast_source_entry_activated_cb): * sources/rb-source.c: (rb_source_finalize), (rb_source_set_query_model_internal), (rb_source_set_property), (default_get_status): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_dispose), (rb_static_playlist_source_finalize), (rb_static_playlist_source_constructor), (rb_static_playlist_source_do_query): * widgets/rb-entry-view.c: (rb_entry_view_finalize), (rb_entry_view_set_shell_player_internal), (rb_entry_view_set_model_internal), (rb_entry_view_get_property), (rb_entry_view_set_model), (rb_entry_view_append_column), (rb_entry_view_insert_column_custom), (rb_entry_view_constructor), (rb_entry_view_set_state): * widgets/rb-library-browser.c: (rb_library_browser_constructor), (rb_library_browser_finalize), (rb_library_browser_new), (update_browser_property_visibilty), (view_selection_reset_cb), (reset_view_cb), (construct_query_cb), (ignore_selection_changes), (restore_selection), (rebuild_child_model), (rb_library_browser_set_selection), (rb_library_browser_set_model): * widgets/rb-property-view.c: (rb_property_view_set_model_internal), (rb_property_view_set_selection_mode), (rb_property_view_reset), (rb_property_view_get_model), (rb_property_view_set_model), (rb_property_view_get_num_properties), (rb_property_view_set_selection), (rb_property_view_append_column_custom), (rb_property_view_set_search_func): Fix some more leaks. Mostly RhythmDBQueryModel ref leaks. From #347446 2006-07-25 William Jon McCann * sources/rb-playlist-source-recorder.c: (update_speed_combobox): Work around a small n-c-b API change. 2006-07-25 James Livingston * data/rhythmbox.schemas: fix the schema to use the right plugin keys * rhythmdb/rhythmdb.c: (rhythmdb_finalize), (rhythmdb_load_thread_main), (rhythmdb_load): release entry refs when aborting entry-emission on finalise 2006-07-25 James Livingston * shell/rb-play-order-random.c: (rb_random_play_order_go_next): fix warning when entry is NULL. 2006-07-25 James Livingston * help/sv/.cvsignore: * lib/.cvsignore: * plugins/generic-player/.cvsignore: * remote/.cvsignore: * remote/dbus/.cvsignore: * shell/.cvsignore: * tests/.cvsignore: more .cvsignore updates 2006-07-24 James Livingston * widgets/eggtrayicon.c: (egg_tray_icon_class_init), (transparent_expose_event), (make_transparent_again), (make_transparent), (egg_tray_icon_realize), (egg_tray_icon_add): apply a patch for EggTrayIcon so that it handled transparent panels correctly. Patch by DanWinship from bug 150726. Fixes #348208. 2006-07-24 James Livingston * rhythmdb/rhythmdb-query.c: (rhythmdb_query_parse_valist): copy queries rather than taking ownership when parsing a subquery. Fixed a crash exposed by the recent leak fixes. * doc/reference/tmpl/disclosure-widget.sgml: * doc/reference/tmpl/rb-debug.sgml: * doc/reference/tmpl/rb-metadata.sgml: * doc/reference/tmpl/rb-play-order.sgml: * doc/reference/tmpl/rb-playlist-manager.sgml: * doc/reference/tmpl/rb-playlist-source.sgml: * doc/reference/tmpl/rb-shell-player.sgml: * doc/reference/tmpl/rb-shell.sgml: * doc/reference/tmpl/rb-song-display-box.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb.sgml: Update all the gtk-doc crap 2006-07-24 James Livingston * lib/.cvsignore: * plugins/artdisplay/.cvsignore: * plugins/artdisplay/artdisplay/.cvsignore: * plugins/lyrics/.cvsignore: * plugins/pythonconsole/.cvsignore: * plugins/rb/.cvsignore: add/update various .cvsignore files 2006-07-24 James Livingston * rhythmdb/rb-refstring.c: (rb_refstring_unref), (rb_refstring_ref): don't emit critical warnings when the refstring is NULL, as that happens often for podcast metadata. * rhythmdb/rhythmdb-query-model.c: (apply_updated_entry_sequence): add missing rhythmdb_entry_ref call 2006-07-23 William Jon McCann * bindings/python/rb.override: * daapsharing/rb-daap-share.c: (add_playlist_entry_to_mlcl): * plugins/cd-recorder/rb-cd-recorder-plugin.c: (playlist_row_inserted_cb): * plugins/generic-player/rb-psp-source.c: (visit_playlist_dirs): * plugins/rb-plugin-manager.c: * podcast/rb-podcast-manager.c: (rb_podcast_manager_head_query_cb), (rb_podcast_manager_copy_post), (rb_podcast_manager_db_entry_deleted_cb), (rb_podcast_manager_insert_feed): * rhythmdb/rb-refstring.c: (rb_refstring_unref), (rb_refstring_ref), (rb_refstring_get_sort_key): * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_set_property), (rhythmdb_property_model_get_property), (rhythmdb_property_model_finalize), (rhythmdb_property_model_new), (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_compare), (rhythmdb_property_model_insert), (rhythmdb_property_model_iter_from_string), (rhythmdb_property_model_get_column_type), (rhythmdb_property_model_get_iter), (rhythmdb_property_model_get_value), (rhythmdb_property_model_iter_nth_child), (query_model_cb), (rhythmdb_property_model_enable_drag): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_init), (rhythmdb_query_model_constructor), (rhythmdb_query_model_dispose), (rhythmdb_query_model_finalize), (rhythmdb_query_model_new), (rhythmdb_query_model_chain), (rhythmdb_query_model_entry_added_cb), (rhythmdb_query_model_entry_changed_cb), (rhythmdb_query_model_entry_deleted_cb), (idle_process_update), (rhythmdb_query_model_add_entry), (rhythmdb_query_model_insert_into_main_list), (rhythmdb_query_model_insert_into_limited_list), (rhythmdb_query_model_remove_from_main_list), (rhythmdb_query_model_remove_from_limited_list), (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_emit_reorder), (rhythmdb_query_model_do_reorder), (rhythmdb_query_model_do_insert), (rhythmdb_query_model_move_entry), (rhythmdb_query_model_remove_entry), (rhythmdb_query_model_entry_to_iter), (rhythmdb_query_model_iter_to_entry), (rhythmdb_query_model_get_previous_from_entry), (rhythmdb_query_model_row_draggable), (rhythmdb_query_model_drag_data_delete), (rhythmdb_query_model_drag_data_get), (rhythmdb_query_model_drag_data_received), (rhythmdb_query_model_row_drop_possible), (rhythmdb_query_model_row_drop_position), (rhythmdb_query_model_add_results), (rhythmdb_query_model_query_complete), (rhythmdb_query_model_get_column_type), (rhythmdb_query_model_get_iter), (rhythmdb_query_model_get_value), (rhythmdb_query_model_iter_nth_child), (apply_updated_entry_sequence), (rhythmdb_query_model_child_index_to_base_index), (rhythmdb_query_model_get_entry_index), (rhythmdb_query_model_base_row_inserted), (rhythmdb_query_model_base_row_deleted), (rhythmdb_query_model_reapply_query), (_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_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_query_model_within_limit): * rhythmdb/rhythmdb-tree.c: (unparent_entries), (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element), (rhythmdb_tree_parser_characters), (rhythmdb_tree_load), (write_elt_name_open), (write_elt_name_close), (save_entry_string), (save_entry_int), (save_entry_ulong), (save_entry_boolean), (save_entry_uint64), (save_entry_double), (save_entry), (set_entry_album), (rhythmdb_tree_entry_new), (get_genres_hash_for_type), (get_or_create_genre), (get_or_create_artist), (get_or_create_album), (remove_child), (remove_entry_from_album), (rhythmdb_tree_entry_set), (rhythmdb_tree_entry_delete), (remove_one_song), (rhythmdb_tree_entry_delete_by_type), (rhythmdb_tree_evaluate_query), (search_match_properties), (evaluate_conjunctive_subquery), (do_conjunction), (conjunctive_query_songs), (clone_remove_ptr_array_index), (conjunctive_query_albums), (conjunctive_query_artists), (conjunctive_query_genre), (conjunctive_query), (split_query_by_disjunctions), (do_query_recurse), (handle_entry_match), (rhythmdb_tree_entry_lookup_by_location), (rhythmdb_tree_entry_foreach_func), (rhythmdb_tree_entry_foreach), (hash_tree_entries_foreach), (hash_tree_albums_foreach), (hash_tree_artists_foreach), (hash_tree_genres_foreach): * rhythmdb/rhythmdb.c: (metadata_field_from_prop), (extract_gtype_from_enum_entry), (extract_nice_name_from_enum_entry), (rhythmdb_init), (rhythmdb_execute_multi_stat_info_cb), (rhythmdb_action_free), (rhythmdb_event_free), (rhythmdb_finalize), (rhythmdb_set_property), (rhythmdb_get_property), (rhythmdb_thread_create), (free_entry_changes), (emit_entry_changed), (sync_entry_changed), (process_added_entries_cb), (process_deleted_entries_cb), (rhythmdb_commit_internal), (rhythmdb_add_timeout_commit), (rhythmdb_entry_allocate), (rhythmdb_entry_get_type_data), (rhythmdb_entry_insert), (rhythmdb_entry_new), (rhythmdb_entry_example_new), (rhythmdb_entry_ref), (rhythmdb_entry_finalize), (rhythmdb_entry_unref), (rhythmdb_entry_is_editable), (set_props_from_metadata), (rhythmdb_process_stat_event), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_process_file_created_or_modified), (rhythmdb_process_file_deleted), (rhythmdb_process_events), (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat), (queue_stat_uri), (queue_stat_uri_tad), (rhythmdb_execute_load), (rhythmdb_entry_get), (entry_to_rb_metadata), (rhythmdb_add_uri), (rhythmdb_add_uri_with_type), (rhythmdb_entry_set), (record_entry_change), (rhythmdb_entry_set_internal), (rhythmdb_entry_sync_mirrored), (rhythmdb_entry_delete), (rhythmdb_entry_move_to_trash_cb), (rhythmdb_entry_move_to_trash_set_error), (rhythmdb_entry_move_to_trash), (rhythmdb_entry_delete_by_type), (rhythmdb_nice_elt_name_from_propid), (rhythmdb_propid_from_nice_elt_name), (rhythmdb_entry_lookup_by_location), (rhythmdb_entry_foreach), (rhythmdb_evaluate_query), (rhythmdb_emit_entry_deleted), (rhythmdb_compute_status_normal), (default_sync_metadata), (rhythmdb_entry_register_type), (rhythmdb_entry_type_foreach), (rhythmdb_entry_type_get_by_name), (song_can_sync_metadata), (podcast_get_playback_uri), (podcast_data_destroy), (rhythmdb_entry_set_mount_point), (rhythmdb_entry_set_visibility), (rhythmdb_entry_dup_string), (rhythmdb_entry_get_string), (rhythmdb_entry_get_boolean), (rhythmdb_entry_get_uint64), (rhythmdb_entry_get_entry_type), (rhythmdb_entry_get_pointer), (rhythmdb_entry_get_ulong), (rhythmdb_entry_get_double), (rhythmdb_entry_get_playback_uri), (rhythmdb_get_property_type): * rhythmdb/rhythmdb.h: * shell/rb-play-order-linear-loop.c: (rb_linear_play_order_loop_get_next), (rb_linear_play_order_loop_get_previous): * shell/rb-play-order-linear.c: (rb_linear_play_order_get_next), (rb_linear_play_order_get_previous): * shell/rb-play-order-queue.c: (rb_queue_play_order_get_previous): * shell/rb-play-order-random.c: (get_query_model_contents): * shell/rb-play-order-shuffle.c: (handle_query_model_changed), (get_query_model_contents): * shell/rb-play-order.c: (rb_play_order_constructor), (rb_play_order_finalize), (rb_play_order_set_playing_entry_internal), (rb_play_order_set_property), (rb_play_order_new), (rb_play_order_get_player), (rb_play_order_get_source), (rb_play_order_get_db), (rb_play_order_get_query_model), (rb_play_order_player_is_playing), (rb_play_order_set_playing_entry), (rb_play_order_get_playing_entry), (rb_play_order_playing_source_changed), (rb_play_order_query_model_changed), (rb_play_order_entry_added_cb), (rb_play_order_row_deleted_cb), (default_has_next), (default_has_previous), (sync_playing_entry_cb), (default_playing_entry_removed), (rb_play_order_has_next), (rb_play_order_get_next), (rb_play_order_go_next), (rb_play_order_has_previous), (rb_play_order_get_previous), (rb_play_order_go_previous), (rb_play_order_model_not_empty), (rb_play_order_update_have_next_previous): * shell/rb-playlist-manager.c: (rb_playlist_manager_is_dirty), (rb_playlist_manager_save_playlists), (rb_playlist_manager_set_automatic_playlist), (rb_playlist_manager_cmd_edit_automatic_playlist), (_queue_track_cb), (rb_playlist_manager_get_playlists), (rb_playlist_manager_get_playlist_names), (_get_playlist_by_name): * shell/rb-shell-clipboard.c: (add_playlist_to_menu): * shell/rb-shell-player.c: (rb_shell_player_constructor), (volume_pre_unmount_cb), (reemit_playing_signal), (notify_playing_idle), (rb_shell_player_open_playlist_url), (rb_shell_player_handle_eos_unlocked), (rb_shell_player_handle_eos), (rb_shell_player_init), (rb_shell_player_new), (rb_shell_player_get_playing_entry), (playlist_entry_cb), (rb_shell_player_open_entry), (rb_shell_player_play), (do_next_idle), (gconf_play_order_changed), (rb_shell_player_set_play_order), (rb_shell_player_set_playback_state), (rb_shell_player_sync_play_order), (rb_shell_player_play_order_update_cb), (rb_shell_player_jump_to_current), (swap_playing_source), (rb_shell_player_do_previous), (rb_shell_player_do_next), (rb_shell_player_do_previous_or_seek), (rb_shell_player_playpause), (rb_shell_player_sync_volume), (rb_shell_player_sync_replaygain), (rb_shell_player_entry_activated_cb), (rb_shell_player_property_row_activated_cb), (rb_shell_player_entry_changed_cb), (rb_shell_player_sync_with_source), (rb_shell_player_sync_buttons), (rb_shell_player_pause), (rb_shell_player_get_playing_song_duration), (rb_shell_player_error), (error_cb), (tick_cb), (info_available_cb), (buffering_cb), (rb_shell_player_get_playing_path), (grab_mmkey), (filter_mmkeys): * shell/rb-shell.c: (rb_shell_playing_from_queue_cb), (rb_shell_jump_to_current): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_finalize), (impl_receive_drag), (impl_save_contents_to_xml), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_get_query): * sources/rb-auto-playlist-source.h: * sources/rb-browser-source.c: (rb_browser_source_do_query): * sources/rb-import-errors-source.c: (rb_import_errors_source_constructor): * sources/rb-iradio-source.c: (rb_iradio_source_do_query): * sources/rb-library-source.c: (filepath_parse_pattern): * sources/rb-missing-files-source.c: (rb_missing_files_source_constructor): * sources/rb-play-queue-source.c: (rb_play_queue_source_clear_queue), (rb_play_queue_source_track_info_cell_data_func): * sources/rb-playlist-source.c: (rb_playlist_source_set_property), (rb_playlist_source_get_property), (playlist_iter_func), (rb_playlist_source_save_to_xml), (rb_playlist_source_row_deleted), (rb_playlist_source_track_cell_data_func): * sources/rb-podcast-source.c: (construct_query_from_selection), (rb_podcast_source_post_status_cell_data_func), (rb_podcast_source_post_feed_cell_data_func), (rb_podcast_source_feed_title_search_func), (rb_podcast_source_post_date_cell_data_func): * sources/rb-source.c: (default_get_status), (rb_source_get_status), (rb_source_browser_toggled), (rb_source_update_play_statistics), (rb_source_search), (rb_source_get_config_widget), (default_add_to_queue), (rb_source_add_to_queue), (rb_source_receive_drag), (rb_source_gather_hash_keys): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_new), (rb_sourcelist_model_is_row_visible), (rb_sourcelist_model_row_is_separator), (rb_sourcelist_model_drag_data_received), (path_is_droppable), (path_is_reorderable), (rb_sourcelist_model_row_draggable), (rb_sourcelist_model_drag_data_get): * sources/rb-sourcelist.c: (rb_sourcelist_append), (match_source_to_iter), (rb_sourcelist_source_to_iter), (rb_sourcelist_visible_source_to_iter), (rb_sourcelist_edit_source_name), (set_source_playing), (rb_sourcelist_set_playing_source), (rb_sourcelist_remove), (rb_sourcelist_select), (rb_sourcelist_selection_changed_cb), (drop_received_cb), (row_activated_cb), (emit_show_popup), (key_release_cb), (name_notify_cb), (visibility_notify_cb), (rb_sourcelist_title_cell_data_func), (source_name_edited_cb): * sources/rb-static-playlist-source.c: (impl_save_contents_to_xml), (rb_static_playlist_source_add_location_internal), (rb_static_playlist_source_row_inserted): * widgets/rb-entry-view.c: (type_ahead_search_func), (rb_entry_view_finalize), (rb_entry_view_set_model), (rb_entry_view_playing_cell_data_func), (rb_entry_view_rating_cell_data_func), (rb_entry_view_long_cell_data_func), (rb_entry_view_play_count_cell_data_func), (rb_entry_view_duration_cell_data_func), (rb_entry_view_year_cell_data_func), (rb_entry_view_quality_cell_data_func), (rb_entry_view_location_cell_data_func), (rb_entry_view_string_cell_data_func), (rb_entry_view_sync_sorting), (rb_entry_view_set_sorting_type), (rb_entry_view_get_sorting_order), (rb_entry_view_set_sorting_order), (rb_entry_view_append_column), (rb_entry_view_set_columns_clickable), (rb_entry_view_constructor), (rb_entry_view_rated_cb), (rb_entry_view_pixbuf_clicked_cb), (rb_entry_view_playing_song_changed), (harvest_entries), (rb_entry_view_button_press_cb), (rb_entry_view_row_activated_cb), (rb_entry_view_row_inserted_cb), (rb_entry_view_row_deleted_cb), (set_column_visibility): * widgets/rb-entry-view.h: * widgets/rb-header.c: (rb_header_new), (rb_header_set_playing_entry), (rb_header_set_title): * widgets/rb-library-browser.c: (rebuild_child_model), (rb_library_browser_set_model): * widgets/rb-property-view.c: (rb_property_view_set_model_internal), (rb_property_view_finalize), (rb_property_view_set_property), (rb_property_view_get_property), (rb_property_view_reset), (rb_property_view_get_model), (rb_property_view_set_model), (rb_property_view_row_activated_cb), (rb_property_view_button_press_cb): * widgets/rb-query-creator.c: (rb_query_creator_constructor), (rb_query_creator_get_property), (rb_query_creator_load_query), (rb_query_creator_set_sorting), (rb_query_creator_new_from_query), (rb_query_creator_get_query), (rb_query_creator_get_limit), (rb_query_creator_get_sort_order), (limit_toggled_cb), (lookup_row_by_widget), (remove_button_click_cb), (add_button_click_cb), (create_property_option_menu): * widgets/rb-song-info.c: (rb_song_info_constructor), (rb_song_info_finalize), (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb), (rb_song_info_update_buttons), (rb_song_info_update_rating), (rb_song_info_sync_entry_single): Fix more leaks. Mostly RhythmDBEntry ref leaks. From #347446 2006-07-23 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_get_property): Add a property providing access to the player backend object. 2006-07-23 James Livingston * shell/rb-play-order-random.c: (rb_random_play_order_finalize), (get_history), (rb_random_filter_history), (rb_random_playing_entry_changed), (rb_random_db_entry_deleted): remove the tentative history, since it appears to be a remanent from older play order code. The only thing it was doing was using up CPU-time and memory. From #345857 2006-07-23 James Livingston patch by: Alex Lancaster * shell/main.c: (main): * shell/rb-playlist-manager.c: (rb_playlist_manager_class_init), (rb_playlist_manager_finalize), (rb_playlist_manager_set_property), (rb_playlist_manager_get_property), (rb_playlist_manager_new), (rb_playlist_manager_load_playlists), (rb_playlist_manager_save_data): * shell/rb-playlist-manager.h: * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_set_property), (rb_shell_get_property), (rb_shell_sync_state), (idle_save_playlist_manager), (rb_shell_finalize), (rb_shell_new), (construct_sources), (idle_handle_load_complete): * shell/rb-shell.h: Add a command-line option for changing the playlist xml file to use, similar to the rhythmdb one. Fixes #343659. 2006-07-22 Jonathan Matthew * daapsharing/rb-daap-share.c: (databases_cb): Make sure we set status codes on HTTP responses. 2006-07-22 Jonathan Matthew * configure.ac: * daapsharing/rb-daap-share.c: (add_entry_to_mlcl), (chunked_message_finished), (send_chunked_file), (mapped_file_message_finished), (send_mapped_file), (databases_cb): Use GMappedFile to send local files to DAAP clients where possible. iTunes can't seek properly in files sent using chunked transfer encoding. Also remove the useless bitrate calculation code, as we never even used the result anyway. From #330410. 2006-07-22 Jonathan Matthew patch by: Nguyễn Thái Ngọc Duy * shell/rb-shell.c: (rb_shell_cmd_add_file_to_library): Enable multiple selection for 'import file'. Fixes #347478. 2006-07-20 Claudio Saavedra * metadata/rb-metadata-dbus-client.c: (kill_metadata_service): * metadata/rb-metadata-dbus-service.c: (main): Replace calls to deprecated dbus_connection_disconnect () with dbus_connection_close (). Fixes #348098. 2006-07-20 James Livingston * widgets/rb-entry-view.c: (type_ahead_search_func): check the strings aren't NULL before calling strstr. Fixes #347998. 2006-07-19 James Livingston patch by: Alex Lancaster * metadata/sj-metadata-musicbrainz.c: (lookup_cd): accept dates from MB that only have years. Fixes #347906. 2006-07-19 James Livingston * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_execute_multi_stat_info_cb), (rhythmdb_event_free), (_shutdown_foreach_swapped), (rhythmdb_shutdown), (rhythmdb_finalize), (timeout_rhythmdb_commit), (rhythmdb_add_timeout_commit), (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat), (queue_stat_uri), (rhythmdb_sync_library_idle), (rhythmdb_load_thread_main), (rhythmdb_load), (rhythmdb_entry_register_type), (rhythmdb_entry_register_type_alias): Keep track of outstanding asynchronous vfs operations, and cancel them when shutting down the DB. Also remove outstanding timeoud/idle callbacks. Fixes #347985 * tests/test-rhythmdb.c: (mark_signal), (set_waiting_signal), (test_rhythmdb_shutdown): wait until the db has been finalised before continuing on to the next test. 2006-07-19 James Livingston * backends/gstreamer/rb-encoder-gst.c: (add_tags_from_entry): use the right thing in the #ifdef. From #347832. 2006-07-19 Jonathan Matthew * rhythmdb/rhythmdb-query.c: (rhythmdb_query_to_string): Fix compile warning. 2006-07-18 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_reapply_query_cb): Ignore old query == new query case. Fixes auto playlists with time-relative queries. * rhythmdb/rhythmdb-query.c: (prop_gvalue_to_string), (write_encoded_gvalue), (rhythmdb_query_is_time_relative), (rhythmdb_query_to_string): * rhythmdb/rhythmdb.h: Add debug helper for printing queries in case someone needs it again. 2006-07-18 James Livingston patch by: Ståle Lyngaas * sources/rb-audiocd-source.c: store the MB track ids in the database. Fixes #347832 * backends/gstreamer/rb-encoder-gst.c: (add_tags_from_entry): and write then into files. 2006-07-17 William Jon McCann * daapsharing/rb-daap-connection.c: (rb_daap_connection_set_property): * daapsharing/rb-daap-share.c: (rb_daap_share_set_db), (rb_daap_share_set_playlist_manager), (rb_daap_share_set_property), (add_playlist_to_mlcl), (databases_cb): * daapsharing/rb-daap-sharing.c: (create_share): * iradio/rb-new-station-dialog.c: (rb_new_station_dialog_class_init), (rb_new_station_dialog_new): * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_finalize), (rb_station_properties_dialog_set_property), (rb_station_properties_dialog_get_current_entry): * lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb): * lib/rb-tree-dnd.c: (init_rb_tree_dnd_data): * plugins/generic-player/rb-generic-player-source.c: (rb_generic_player_source_dispose), (rb_generic_player_source_new), (handle_playlist_entry_cb): * plugins/generic-player/rb-nokia770-source.c: (rb_nokia770_source_new), (hal_udi_is_nokia770): * plugins/generic-player/rb-psp-source.c: (impl_get_mount_path), (visit_playlist_dirs), (hal_udi_is_psp): * podcast/rb-podcast-manager.c: * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_finalize), (rb_podcast_properties_dialog_set_entry_view), (rb_podcast_properties_dialog_set_property): * rhythmdb/rhythmdb-property-model.c: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_reapply_query_cb): * rhythmdb/rhythmdb-query.c: (rhythmdb_query_deserialize): * rhythmdb/rhythmdb-tree.c: (split_query_by_disjunctions): * rhythmdb/rhythmdb.c: (rhythmdb_action_free), (rhythmdb_event_free), (rhythmdb_shutdown), (rhythmdb_thread_create), (action_thread_main), (rhythmdb_do_full_query_async_parsed), (rhythmdb_do_full_query_internal): * shell/main.c: (main): * shell/rb-play-order-random.c: (rb_random_play_order_go_next): * shell/rb-play-order.c: (rb_play_order_finalize), (rb_play_order_set_player), (rb_play_order_set_playing_entry_internal), (rb_play_order_set_property), (rb_play_order_playing_source_changed), (rb_play_order_query_model_changed): * shell/rb-playlist-manager.c: (rb_playlist_manager_finalize), (rb_playlist_manager_set_source), (rb_playlist_manager_set_shell_internal), (rb_playlist_manager_set_property): * shell/rb-removable-media-manager.c: (rb_removable_media_manager_set_property), (rb_removable_media_manager_set_uimanager), (rb_removable_media_manager_cmd_eject_medium), (rb_removable_media_manager_cmd_copy_tracks): * shell/rb-shell-clipboard.c: (rb_shell_clipboard_finalize), (rb_shell_clipboard_new), (rb_shell_clipboard_sync), (rb_shell_clipboard_set), (rb_shell_clipboard_cmd_add_to_playlist_new), (rb_shell_clipboard_playlist_add_cb), (rb_shell_clipboard_playlist_renamed_cb), (rb_shell_clipboard_playlist_visible_cb), (add_playlist_to_menu), (rebuild_playlist_menu): * shell/rb-shell-player.c: (rb_shell_player_set_source_internal), (rb_shell_player_set_queue_source_internal), (rb_shell_player_finalize), (rb_shell_player_set_play_order), (rb_shell_player_entry_activated_cb), (rb_shell_player_property_row_activated_cb), (_idle_unblock_signal_cb), (rb_shell_player_playing_changed_cb): * shell/rb-shell-preferences.c: (rb_shell_preferences_new): * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property), (rb_shell_finalize), (construct_widgets), (rb_shell_playing_from_queue_cb), (rb_shell_player_stream_song_changed_cb), (rb_shell_player_volume_changed_cb): * shell/rb-statusbar.c: (rb_statusbar_new): * shell/rb-tray-icon.c: (rb_tray_icon_finalize), (rb_tray_icon_sync_action), (rb_tray_icon_set_property): * sources/rb-audiocd-source.c: (rb_audiocd_source_new): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (rb_auto_playlist_source_init), (rb_auto_playlist_source_finalize), (rb_auto_playlist_source_constructor), (impl_receive_drag), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_browser_changed_cb), (search_action_changed): * sources/rb-auto-playlist-source.h: * sources/rb-browser-source.c: (rb_browser_source_finalize), (search_action_changed), (rb_browser_source_constructor), (rb_browser_source_cmd_choose_artist), (impl_delete), (rb_browser_source_browser_changed_cb), (rb_browser_source_do_query): * sources/rb-daap-source.c: (rb_daap_source_dispose), (rb_daap_source_finalize), (rb_daap_source_class_init), (rb_daap_get_icon), (rb_daap_source_new), (destroy_pixbufs), (rb_daap_sources_init), (rb_daap_sources_shutdown), (rb_daap_source_connection_cb), (rb_daap_source_activate), (rb_daap_source_cmd_disconnect), (rb_daap_source_disconnect), (rb_daap_source_get_headers): * sources/rb-import-errors-source.c: (rb_import_errors_source_constructor), (rb_import_errors_source_new), (impl_delete), (impl_get_status): * sources/rb-ipod-source.c: (rb_ipod_source_name_changed_cb), (rb_ipod_source_new), (add_rb_playlist), (add_ipod_song_to_db), (get_db_for_source), (load_ipod_db_idle_cb), (rb_ipod_load_songs), (hal_udi_is_ipod), (impl_move_to_trash), (completed_cb), (impl_paste), (impl_receive_drag): * sources/rb-iradio-source.c: (rb_iradio_source_finalize), (rb_iradio_source_constructor), (impl_get_status), (impl_delete), (impl_song_properties): * sources/rb-library-source.c: (rb_library_source_constructor), (rb_library_source_new), (impl_paste), (rb_library_source_add_child_source): * sources/rb-missing-files-source.c: (impl_delete), (impl_get_status): * sources/rb-play-queue-source.c: (rb_play_queue_source_finalize), (rb_play_queue_source_class_init), (rb_play_queue_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_init), (rb_playlist_source_set_db), (rb_playlist_source_constructor), (rb_playlist_source_dispose), (rb_playlist_source_save_playlist), (rb_playlist_source_new_from_xml), (rb_playlist_source_save_to_xml): * sources/rb-podcast-source.c: (rb_podcast_source_init), (rb_podcast_source_dispose), (rb_podcast_source_finalize), (search_action_changed), (rb_podcast_source_constructor), (impl_delete), (rb_podcast_source_songs_show_popup_cb), (construct_query_from_selection), (rb_podcast_source_cmd_download_post), (rb_podcast_source_cmd_cancel_download), (rb_podcast_source_cmd_delete_feed), (rb_podcast_source_start_download_cb), (rb_podcast_source_finish_download_cb), (rb_podcast_source_feed_updates_avaliable_cb), (rb_podcast_source_get_shell), (impl_can_add_to_queue), (impl_add_to_queue), (rb_podcast_source_cmd_new_podcast), (impl_get_status): * sources/rb-removable-media-source.c: (impl_delete_thyself): * sources/rb-source.c: (rb_source_get_property), (default_add_to_queue), (default_move_to_trash), (_rb_source_show_popup), (rb_source_gather_selected_properties), (_rb_source_register_action_group): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_new), (rb_sourcelist_model_is_row_visible), (rb_sourcelist_model_drag_data_received), (path_is_reorderable), (rb_sourcelist_model_row_draggable), (rb_sourcelist_model_drag_data_get): * sources/rb-sourcelist.c: (rb_sourcelist_finalize), (icon_notify_cb), (rb_sourcelist_append), (set_source_playing), (rb_sourcelist_remove), (button_press_cb), (name_notify_cb), (visibility_notify_cb): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_init), (rb_static_playlist_source_finalize), (rb_static_playlist_source_constructor), (impl_delete), (rb_static_playlist_source_browser_changed_cb), (rb_static_playlist_source_add_location_internal), (search_action_changed): * sources/rb-static-playlist-source.h: * widgets/rb-druid.c: * widgets/rb-entry-view.c: (rb_entry_view_set_shell_player_internal), (rb_entry_view_set_model_internal), (rb_entry_view_set_property), (rb_entry_view_get_property), (rb_entry_view_new), (rb_entry_view_button_press_cb): * widgets/rb-library-browser.c: (rb_library_browser_finalize), (rb_library_browser_set_property), (rb_library_browser_get_property): * widgets/rb-query-creator.c: (rb_query_creator_new_from_query), (get_entry_for_property), (get_property_index_from_proptype): * widgets/rb-song-info.c: (rb_song_info_constructor), (rb_song_info_finalize), (rb_song_info_set_source_internal), (rb_song_info_set_property), (rb_song_info_get_property): More leak and reference counting fixes. From bug #347446. 2006-07-17 James Livingston * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_do_query): use rbythmdb_query_model_chain rather than setting the base model, as that lets us not import all the entries from the base model. This fixes some issues whether the search box wasn't filting automatic playlists. 2006-07-17 James Livingston * plugins/artdisplay/artdisplay/CoverArtDatabase.py: fix a syntax error, which caused blacklist creation to fail. 2006-07-17 James Livingston * shell/rb-shell.c: (rb_shell_quit): don't stop DAAP sharing when running with -n, because we don't start it then. Fixes a crash on exit. 2006-07-17 James Livingston patch by: Przemysław Grzegorczyk * data/glade/playlist-save.glade: Make the "playlist save" dialog use Save not Open for the button. Fixes #345816 2006-07-17 James Livingston patch by: Przemysław Grzegorczyk * sources/rb-library-source.c: (impl_get_config_widget): Fix the build when track transfer is disabled. Fixes #347705 2006-07-17 James Livingston patch by: Przemysław Grzegorczyk * sources/rb-library-source.c: (impl_get_config_widget): fix build with track transfer disabled. Fixes #347705 2006-07-14 William Jon McCann * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property): * shell/main.c: (main): * shell/rb-shell-clipboard.c: (unset_source_internal), (rb_shell_clipboard_finalize), (rb_shell_clipboard_set_source_internal), (rb_shell_clipboard_set_property), (rebuild_playlist_menu): * shell/rb-shell-player.c: (rb_shell_player_set_source_internal), (rb_shell_player_set_db_internal), (rb_shell_player_set_queue_source_internal), (rb_shell_player_finalize), (rb_shell_player_set_property): * shell/rb-shell.c: (rb_shell_finalize), (construct_sources): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_constructor), (rb_auto_playlist_source_new_from_xml): * sources/rb-daap-source.c: (create_pixbufs): * sources/rb-ipod-source.c: * sources/rb-iradio-source.c: (rb_iradio_source_constructor): * sources/rb-library-source.c: (rb_library_source_add_child_source): * sources/rb-play-queue-source.c: (rb_play_queue_sync_playing_state), (rb_play_queue_source_track_info_cell_data_func): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_dispose), (rb_podcast_source_finalize), (rb_podcast_source_constructor), (impl_can_add_to_queue), (impl_add_to_queue): * sources/rb-source.c: (rb_source_set_property): * sources/rb-sourcelist.c: (rb_sourcelist_append): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_constructor), (rb_static_playlist_source_load_from_xml): * widgets/bacon-volume.c: (bacon_volume_scale_value_changed): * widgets/rb-entry-view.c: (rb_entry_view_init), (rb_entry_view_finalize), (rb_entry_view_append_column), (rb_entry_view_constructor): * widgets/rb-song-info.c: (rb_song_info_set_property): Fix leaks. From bug #347446. 2006-07-14 William Jon McCann * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_finalize), (rb_encoder_gst_emit_completed), (bus_watch_cb), (gst_error_cb), (start_pipeline), (add_encoding_pipeline), (add_tags_from_entry), (gnomevfs_allow_overwrite_cb), (new_decoded_pad_cb), (add_decoding_pipeline), (profile_bin_find_encoder), (get_profile_from_mime_type), (extract_track), (transcode_track), (rb_encoder_gst_encode): * backends/gstreamer/rb-encoder-gst.h: * backends/gstreamer/rb-player-gst.c: (rb_player_gst_init), (rb_player_gst_finalize), (rb_player_gst_gst_free_playbin), (destroy_idle_signal), (process_tag), (rb_player_gst_bus_cb), (rb_player_gst_construct): * backends/gstreamer/rb-player-gst.h: * backends/rb-encoder.c: (rb_encoder_encode), (rb_encoder_cancel): * backends/rb-encoder.h: * backends/rb-player.c: (_rb_player_emit_tick): * backends/rb-player.h: * daapsharing/rb-daap-connection.c: (build_message), (actual_http_response_handler), (http_response_handler), (http_get), (entry_set_string_prop), (emit_progress_idle), (handle_server_info), (handle_database_info), (handle_song_listing), (handle_playlists), (handle_playlist_entries), (rb_daap_connection_new), (connected_cb), (rb_daap_connection_do_something), (rb_daap_connection_get_headers), (rb_daap_connection_dispose), (rb_daap_connection_get_property): * daapsharing/rb-daap-connection.h: * daapsharing/rb-daap-dialog.c: (rb_daap_password_dialog_new_run), (rb_daap_collision_dialog_new_run): * daapsharing/rb-daap-dialog.h: * daapsharing/rb-daap-hash.c: (byteReverse), (OpenDaap_MD5Init), (OpenDaap_MD5Update), (OpenDaap_MD5Final), (MD5Transform), (DigestToString), (rb_daap_hash_generate): * daapsharing/rb-daap-hash.h: * daapsharing/rb-daap-mdns-browser-avahi.c: (client_cb), (resolve_cb), (browse_cb): * daapsharing/rb-daap-mdns-browser-howl.c: (howl_in_cb), (resolve_cb), (rb_daap_mdns_browser_resolve), (rb_daap_mdns_browser_start), (resolver_free): * daapsharing/rb-daap-mdns-browser.h: * daapsharing/rb-daap-mdns-publisher-avahi.c: (client_cb): * daapsharing/rb-daap-mdns-publisher-howl.c: (howl_in_cb), (publish_cb): * daapsharing/rb-daap-mdns-publisher.h: * daapsharing/rb-daap-share.c: (name_collision_cb), (rb_daap_share_process_playlist), (rb_daap_share_dispose), (message_set_from_rb_daap_structure), (content_codes_cb), (session_id_validate), (logout_cb), (update_cb), (add_entry_to_mlcl), (add_playlist_to_mlcl), (add_playlist_entry_to_mlcl), (parse_meta), (databases_cb), (rb_daap_share_server_start), (rb_daap_share_server_stop), (rb_daap_share_publish_start): * daapsharing/rb-daap-share.h: * daapsharing/rb-daap-sharing.c: (share_name_changed_cb), (share_password_changed_cb), (rb_daap_sharing_shutdown): * daapsharing/rb-daap-sharing.h: * daapsharing/rb-daap-src.c: (_do_init), (rb_daap_src_class_init), (rb_daap_src_finalize), (_split_uri), (rb_daap_src_getcaps), (rb_daap_src_open): * daapsharing/rb-daap-structure.c: (rb_daap_structure_add), (rb_daap_structure_node_serialize), (rb_daap_structure_serialize), (rb_daap_structure_parse_container_buffer), (rb_daap_structure_parse), (gnode_find_node), (rb_daap_structure_find_item), (rb_daap_structure_find_node), (print_rb_daap_item): * daapsharing/rb-daap-structure.h: * iradio/rb-new-station-dialog.c: (rb_new_station_dialog_class_init), (rb_new_station_dialog_init), (rb_new_station_dialog_new), (rb_new_station_dialog_response_cb), (rb_new_station_dialog_text_changed): * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_init), (rb_station_properties_dialog_new), (rb_station_properties_dialog_response_cb), (rb_station_properties_dialog_get_current_entry), (rb_station_properties_dialog_rated_cb), (rb_station_properties_dialog_update_rating), (rb_station_properties_dialog_update_playback_error), (rb_station_properties_dialog_sync_entries): * metadata/rb-metadata-common.c: (rb_metadata_error_quark): * metadata/rb-metadata-dbus-client.c: (ping_metadata_service), (start_metadata_service), (rb_metadata_load), (rb_metadata_set), (rb_metadata_can_save), (rb_metadata_save): * metadata/rb-metadata-dbus-service.c: (rb_metadata_dbus_load), (rb_metadata_dbus_can_save), (rb_metadata_dbus_save), (_handle_message), (_new_connection), (main): * metadata/rb-metadata-dbus.c: (rb_metadata_dbus_add_to_message), (rb_metadata_dbus_read_from_message): * metadata/rb-metadata-dbus.h: * metadata/rb-metadata-gst.c: (ogg_pad_added_cb), (rb_add_id3_tagger), (rb_metadata_init), (rb_metadata_gst_tag_to_field), (make_undecodable_error), (rb_metadata_gst_load_tag), (rb_metadata_gst_fakesink_handoff_cb), (rb_metadata_gst_new_decoded_pad_cb), (rb_metadata_gst_unknown_type_cb), (rb_metadata_bus_handler): * metadata/sj-error.c: (sj_error_quark): * metadata/sj-error.h: * metadata/sj-metadata-musicbrainz.c: (sj_metadata_musicbrainz_instance_init), (get_offline_track_listing), (cache_rdf), (get_cached_rdf), (get_rdf), (lookup_cd): * metadata/sj-metadata.c: (sj_metadata_get_type): * metadata/sj-structures.c: * metadata/sj-structures.h: * metadata/test-metadata.c: (load_metadata_cb), (main): * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_init), (rb_feed_podcast_properties_dialog_update_title): * podcast/rb-feed-podcast-properties-dialog.h: * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init), (rb_new_podcast_dialog_new), (rb_new_podcast_dialog_response_cb), (rb_new_podcast_dialog_text_changed): * podcast/rb-podcast-manager.c: (rb_podcast_manager_class_init), (rb_podcast_manager_constructor), (rb_podcast_manager_finalize), (rb_podcast_manager_set_property), (rb_podcast_manager_get_property), (rb_podcast_manager_new), (rb_podcast_manager_download_entry), (rb_podcast_manager_update_feeds), (rb_podcast_manager_head_query_cb), (rb_podcast_manager_next_file), (rb_podcast_manager_copy_post), (rb_podcast_manager_thread_parse_feed), (rb_podcast_manager_add_post), (rb_podcast_manager_save_metadata), (rb_podcast_manager_db_entry_added_cb), (write_job_data), (download_info_free), (download_info_new), (start_job), (rb_podcast_manager_cancel_all), (end_job), (cancel_job), (download_progress_cb), (download_progress_update_cb), (rb_podcast_manager_remove_feed), (rb_podcast_manager_db_entry_deleted_cb), (rb_podcast_manager_cancel_download), (rb_podcast_manager_update_synctime), (rb_podcast_manager_set_remove_files), (rb_podcast_manager_insert_feed), (rb_podcast_manager_event_loop), (rb_podcast_manager_abort_subscribe), (rb_podcast_manager_get_podcast_dir): * podcast/rb-podcast-manager.h: * podcast/rb-podcast-parse.c: (rb_set_channel_value), (rb_validate_channel_propert), (rb_validate_item_propert), (rb_podcast_parser_start_element), (rb_podcast_parser_end_element), (rb_podcast_parser_characters), (rb_podcast_parse_load_feed), (rb_podcast_parse_date), (rb_podcast_parse_time), (rb_podcast_parse_channel_free), (rb_podcast_parse_item_free): * podcast/rb-podcast-parse.h: * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_init), (rb_podcast_properties_dialog_get_current_entry), (rb_podcast_properties_dialog_update_title), (rb_podcast_properties_dialog_update_duration), (rb_podcast_properties_dialog_update_date): * podcast/rb-podcast-properties-dialog.h: * rhythmdb/gsequence.c: (g_sequence_new), (g_sequence_prepend), (g_sequence_insert), (g_sequence_remove), (g_sequence_concatenate), (g_sequence_remove_range), (g_sequence_get_ptr_at_pos), (g_sequence_ptr_move), (g_sequence_ptr_sort_changed), (g_sequence_search), (g_sequence_set_aggregate_data), (g_sequence_node_update_fields), (g_sequence_node_rotate), (find_min), (g_sequence_node_find_by_pos), (g_sequence_node_find_closest), (g_sequence_node_free), (g_sequence_node_split), (g_sequence_node_insert_before), (g_sequence_node_get_length), (g_sequence_node_remove), (g_sequence_node_calc_height), (g_sequence_node_insert_sorted), (g_sequence_calc_tree_height): * rhythmdb/rb-refstring.c: (rb_refstring_system_shutdown), (rb_refstring_get): * rhythmdb/rb-refstring.h: * rhythmdb/rhythmdb-gda.c: (rhythmdb_gda_class_init), (rhythmdb_gda_init), (dump_model), (execute_query), (execute_nonquery), (ensure_table_exists), (collect_value_for_sql), (collect_value_from_sql), (_initialize), (rhythmdb_gda_new), (rhythmdb_gda_load), (rhythmdb_gda_entry_new), (rhythmdb_gda_entry_set), (rhythmdb_gda_entry_get), (rhythmdb_gda_ref), (rhythmdb_gda_entry_lookup_by_location), (translate_query), (do_query), (rhythmdb_gda_do_full_query): * rhythmdb/rhythmdb-gda.h: * rhythmdb/rhythmdb-monitor.c: (rhythmdb_init_monitoring), (rhythmdb_finalize_monitoring), (monitor_entry_file), (monitor_library_directory), (rhythmdb_check_changed_file), (rhythmdb_start_monitoring), (rhythmdb_directory_change_cb), (rhythmdb_monitor_uri_path), (entry_volume_mounted_or_unmounted), (rhythmdb_volume_mounted_cb), (rhythmdb_volume_unmounted_cb): * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_set_property), (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_compare), (rhythmdb_property_model_get_value), (rhythmdb_property_model_iter_nth_child), (rhythmdb_property_model_drag_data_delete), (query_model_cb), (rhythmdb_property_model_drag_data_get), (rhythmdb_property_model_enable_drag), (rhythmdb_property_model_column_get_type): * rhythmdb/rhythmdb-property-model.h: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_set_property), (rhythmdb_query_model_dispose), (rhythmdb_query_model_chain), (rhythmdb_query_model_has_pending_changes), (rhythmdb_query_model_entry_changed_cb), (rhythmdb_query_model_entry_deleted_cb), (idle_process_update), (rhythmdb_query_model_add_entry), (rhythmdb_query_model_remove_from_main_list), (rhythmdb_query_model_remove_entry), (rhythmdb_query_model_drag_data_received), (rhythmdb_query_model_row_drop_possible), (rhythmdb_query_model_compute_status_normal), (rhythmdb_query_model_set_sort_order), (rhythmdb_query_model_get_entry_index), (rhythmdb_query_model_base_row_inserted), (rhythmdb_query_model_base_row_deleted), (rhythmdb_query_model_reapply_query), (_reverse_sorting_func), (rhythmdb_query_model_date_sort_func), (rhythmdb_query_model_within_limit): * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb-query-results.c: (rhythmdb_query_results_query_complete): * rhythmdb/rhythmdb-query-results.h: * rhythmdb/rhythmdb-query.c: (rhythmdb_query_copy), (rhythmdb_query_concatenate), (rhythmdb_query_parse_valist), (rhythmdb_query_free), (rhythmdb_read_encoded_property), (rhythmdb_query_serialize), (rhythmdb_query_deserialize), (rhythmdb_query_preprocess), (rhythmdb_query_get_type): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_finalize), (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element), (rhythmdb_tree_load), (save_entry), (save_entry_type), (save_unknown_entry_type), (rhythmdb_tree_save), (rhythmdb_tree_entry_new), (rhythmdb_tree_property_new), (get_genres_hash_for_type), (get_or_create_genre), (remove_entry_from_album), (rhythmdb_tree_entry_set), (rhythmdb_tree_entry_delete), (remove_one_song), (rhythmdb_tree_entry_delete_by_type), (search_match_properties), (evaluate_conjunctive_subquery), (clone_remove_ptr_array_index), (conjunctive_query_albums), (conjunctive_query_artists), (conjunctive_query_genre), (conjunctive_query), (split_query_by_disjunctions), (do_query_recurse), (rhythmdb_tree_entry_foreach), (hash_tree_entries_foreach), (hash_tree_albums_foreach), (hash_tree_artists_foreach), (hash_tree_genres_foreach), (rhythmdb_hash_tree_foreach), (rhythmdb_tree_entry_type_registered): * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (metadata_field_from_prop), (extract_gtype_from_enum_entry), (extract_nice_name_from_enum_entry), (rhythmdb_init), (rhythmdb_execute_multi_stat_info_cb), (rhythmdb_event_free), (rhythmdb_shutdown), (rhythmdb_finalize), (rhythmdb_emit_entry_signals_idle), (process_added_entries_cb), (rhythmdb_entry_insert), (rhythmdb_entry_new), (rhythmdb_entry_example_new), (set_metadata_string_default_unknown), (is_ghost_entry), (rhythmdb_process_stat_event), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_process_queued_entry_set_event), (rhythmdb_process_events), (rhythmdb_execute_stat_info_cb), (queue_stat_uri), (rhythmdb_entry_get), (entry_to_rb_metadata), (rhythmdb_add_uri_with_type), (rhythmdb_load_thread_main), (rhythmdb_load), (rhythmdb_save_thread_main), (rhythmdb_save), (rhythmdb_entry_set), (rhythmdb_entry_set_internal), (rhythmdb_entry_sync_mirrored), (rhythmdb_entry_delete), (rhythmdb_entry_delete_by_type), (rhythmdb_propid_from_nice_elt_name), (rhythmdb_do_full_query_async_parsed), (rhythmdb_do_full_query), (rhythmdb_compute_status_normal), (rhythmdb_entry_register_type_alias), (rhythmdb_entry_type_foreach), (song_can_sync_metadata), (rhythmdb_entry_song_get_type), (rhythmdb_entry_ignore_get_type), (rhythmdb_entry_import_error_get_type), (rhythmdb_entry_podcast_post_get_type), (rhythmdb_entry_podcast_feed_get_type), (rhythmdb_entry_set_mount_point), (rhythmdb_entry_set_visibility), (rhythmdb_sync_library_location), (rhythmdb_entry_get_string), (rhythmdb_entry_get_ulong), (rhythmdb_entry_type_get_type): * rhythmdb/rhythmdb.h: * shell/main.c: (main), (load_uri_args), (handle_dbus_message): * shell/rb-history.c: (rb_history_new), (rb_history_set_playing), (rb_history_limit_size): * shell/rb-history.h: * shell/rb-play-order-linear-loop.c: (rb_linear_play_order_loop_get_next): * shell/rb-play-order-linear-loop.h: * shell/rb-play-order-linear.c: * shell/rb-play-order-linear.h: * shell/rb-play-order-queue.c: (rb_queue_play_order_playing_entry_removed): * shell/rb-play-order-queue.h: * shell/rb-play-order-random-by-age-and-rating.c: * shell/rb-play-order-random-by-age-and-rating.h: * shell/rb-play-order-random-by-age.c: (rb_random_by_age_get_entry_weight): * shell/rb-play-order-random-by-age.h: * shell/rb-play-order-random-by-rating.c: * shell/rb-play-order-random-by-rating.h: * shell/rb-play-order-random-equal-weights.c: * shell/rb-play-order-random-equal-weights.h: * shell/rb-play-order-random.c: (rb_random_filter_history), (rb_random_get_total_weight), (rb_random_play_order_get_next), (rb_random_db_changed), (rb_random_playing_entry_changed), (rb_random_db_entry_deleted): * shell/rb-play-order-shuffle.c: (remove_from_history), (add_randomly_to_history), (get_query_model_contents), (rb_shuffle_playing_entry_changed): * shell/rb-play-order-shuffle.h: * shell/rb-play-order.c: (rb_play_order_class_init), (rb_play_order_set_property), (rb_play_order_playing_source_changed), (rb_play_order_query_model_changed_cb), (rb_play_order_query_model_changed), (rb_play_order_entry_added_cb), (default_playing_entry_removed): * shell/rb-play-order.h: * shell/rb-playlist-manager.c: (rb_playlist_manager_class_init), (rb_playlist_manager_init), (rb_playlist_manager_set_uimanager), (rb_playlist_manager_set_property), (rb_playlist_manager_parse_file), (rb_playlist_manager_load_playlists), (rb_playlist_manager_is_dirty), (rb_playlist_manager_save_data), (rb_playlist_manager_save_playlists), (rb_playlist_manager_new_playlist), (rb_playlist_manager_new_playlist_from_selection_data), (rb_playlist_manager_cmd_new_automatic_playlist), (rb_playlist_manager_cmd_edit_automatic_playlist), (_queue_track_cb), (rb_playlist_manager_cmd_delete_playlist), (save_playlist_response_cb), (export_set_extension_cb), (filter_get_export_filter_label), (setup_format_menu), (rb_playlist_manager_cmd_save_playlist), (rb_playlist_manager_get_playlists), (rb_playlist_manager_get_playlist_names), (_get_playlist_by_name), (rb_playlist_manager_delete_playlist), (rb_playlist_manager_export_playlist): * shell/rb-playlist-manager.h: * shell/rb-removable-media-manager.c: (rb_removable_media_manager_class_init), (rb_removable_media_manager_dispose), (rb_removable_media_manager_finalize), (rb_removable_media_manager_set_property), (split_drive_from_cdda_uri), (rb_removable_media_manager_playing_uri_changed_cb), (rb_removable_media_manager_load_media), (rb_removable_media_manager_volume_mounted_cb), (remove_volume_by_source), (rb_removable_media_manager_source_deleted_cb), (rb_removable_media_manager_volume_unmounted_cb), (rb_removable_media_manager_mount_volume), (rb_removable_media_manager_set_uimanager), (rb_removable_media_manager_scan), (do_transfer), (rb_removable_media_manager_cmd_copy_tracks): * shell/rb-removable-media-manager.h: * shell/rb-shell-clipboard.c: (rb_shell_clipboard_init), (rb_shell_clipboard_finalize), (rb_shell_clipboard_constructor), (rb_shell_clipboard_sync), (rb_shell_clipboard_idle_poll_deletions), (rb_shell_clipboard_cmd_add_to_playlist_new), (rb_shell_clipboard_playlist_add_cb), (rb_shell_clipboard_playlist_deleted_cb), (rb_shell_clipboard_playlist_renamed_cb), (rb_shell_clipboard_playlist_visible_cb), (rb_shell_clipboard_playlist_added_cb): * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_constructor), (volume_pre_unmount_cb), (rb_shell_player_init), (rb_shell_player_set_property), (rb_shell_player_new), (rb_shell_player_open_playlist_url), (rb_shell_player_open_location), (rb_shell_player_set_playing_entry), (rb_shell_player_play_order_update_cb), (rb_shell_player_jump_to_current), (rb_shell_player_do_previous), (rb_shell_player_do_next), (rb_shell_player_do_previous_or_seek), (rb_shell_player_cmd_previous), (rb_shell_player_cmd_next), (rb_shell_player_cmd_play), (rb_shell_player_playpause), (rb_shell_player_sync_volume), (rb_shell_player_sync_replaygain), (gconf_song_position_slider_visibility_changed), (rb_shell_player_entry_activated_cb), (rb_shell_player_property_row_activated_cb), (rb_shell_player_entry_changed_cb), (rb_shell_player_sync_with_source), (rb_shell_player_sync_buttons), (actually_set_playing_source), (rb_shell_player_set_playing_source_internal), (rb_shell_player_get_playing_song_duration), (eos_cb), (rb_shell_player_error), (error_cb), (info_available_cb), (grab_mmkey), (filter_mmkeys), (_idle_unblock_signal_cb), (rb_shell_player_error_get_type): * shell/rb-shell-player.h: * shell/rb-shell-preferences.c: (rb_shell_preferences_init), (rb_shell_preferences_append_page), (share_check_button_toggled_cb), (password_check_button_toggled_cb), (add_daap_preferences), (rb_shell_preferences_column_check_changed_cb), (rb_shell_preferences_sync_column_button), (rb_shell_preferences_sync), (rb_shell_preferences_browser_views_activated_cb): * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_init), (rb_shell_set_property), (rb_shell_get_property), (rb_shell_sync_state), (idle_save_rhythmdb), (rb_shell_finalize), (construct_widgets), (construct_load_ui), (rb_shell_constructor), (rb_shell_get_visibility), (rb_shell_set_visibility), (rb_shell_sync_window_state), (rb_shell_db_entry_added_cb), (rb_shell_register_entry_type_for_source), (rb_shell_transfer_progress_cb), (rb_shell_playing_from_queue_cb), (rb_shell_playing_entry_changed_cb), (rb_shell_select_source), (rb_shell_player_stream_song_changed_cb), (rb_shell_set_window_title), (rb_shell_view_smalldisplay_changed_cb), (rb_shell_view_queue_as_sidebar_changed_cb), (rb_shell_cmd_plugins), (add_to_library_response_cb), (rb_shell_cmd_add_folder_to_library), (rb_shell_cmd_add_file_to_library), (rb_shell_sync_pane_visibility), (rb_shell_sync_smalldisplay), (sidepane_visibility_changed_cb), (toolbar_state_changed_cb), (rb_shell_jump_to_entry_with_source), (tray_embedded_cb), (session_die_cb), (save_yourself_cb), (rb_shell_session_init), (handle_playlist_entry_cb), (rb_shell_load_uri), (rb_shell_add_to_queue), (rb_shell_present), (rb_shell_get_song_properties), (rb_shell_set_song_property), (rb_shell_volume_widget_changed_cb), (rb_shell_player_volume_changed_cb), (rb_shell_ui_location_get_type): * shell/rb-shell.h: * shell/rb-source-header.c: (ui_manager_add_widget_cb), (rb_source_header_init), (rb_source_header_set_source_internal), (rb_source_state_sync), (rb_source_header_clear_search), (rb_source_header_view_browser_changed_cb): * shell/rb-source-header.h: * shell/rb-statusbar.c: (rb_statusbar_construct), (rb_statusbar_init), (rb_statusbar_finalize), (rb_statusbar_set_property), (rb_statusbar_set_progress), (rb_statusbar_source_status_changed_cb): * shell/rb-statusbar.h: * shell/rb-tray-icon.c: (rb_tray_icon_init), (rb_tray_icon_constructor), (rb_tray_icon_finalize), (rb_tray_icon_set_property), (rb_tray_icon_show_window_changed_cb), (rb_tray_icon_get_geom), (rb_tray_icon_notify): * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor), (rb_audiocd_create_track_entry): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (rb_auto_playlist_source_constructor), (rb_auto_playlist_source_new_from_xml), (impl_reset_filters), (impl_search), (impl_receive_drag), (impl_save_contents_to_xml), (rb_auto_playlist_source_query_complete_cb), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_browser_changed_cb), (search_action_to_prop): * sources/rb-auto-playlist-source.h: * sources/rb-browser-source.c: (rb_browser_source_init), (rb_browser_source_dispose), (search_action_to_prop), (rb_browser_source_constructor), (rb_browser_source_cmd_choose_genre), (rb_browser_source_cmd_choose_artist), (rb_browser_source_cmd_choose_album), (impl_search), (rb_browser_source_browser_changed_cb), (rb_browser_source_do_query): * sources/rb-browser-source.h: * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_init), (rb_daap_source_dispose), (rb_daap_source_set_property), (start_browsing), (rb_daap_sources_init), (rb_daap_sources_shutdown), (rb_daap_source_connection_cb), (rb_daap_source_activate), (rb_daap_source_cmd_disconnect), (rb_daap_source_find_for_uri), (rb_daap_source_get_headers), (rb_daap_source_get_status): * sources/rb-daap-source.h: * sources/rb-import-errors-source.h: * sources/rb-ipod-source.c: (rb_ipod_source_name_changed_cb), (rb_ipod_source_init), (ipod_path_to_uri), (add_rb_playlist), (add_ipod_song_to_db), (load_ipod_db_idle_cb), (rb_ipod_load_songs), (rb_ipod_get_itunesdb_path), (rb_ipod_is_volume_ipod), (hal_udi_is_ipod), (impl_get_ui_actions), (impl_move_to_trash), (impl_receive_drag), (test_dir_on_ipod), (ipod_mkdir_with_parents), (build_ipod_dir_name), (generate_ipod_filename), (ipod_path_from_unix_path), (impl_delete_thyself): * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_init), (rb_iradio_source_constructor), (rb_iradio_source_new), (guess_uri_scheme), (rb_iradio_source_add_station), (rb_iradio_source_async_update_play_statistics), (genre_selection_reset_cb), (rb_iradio_source_do_query), (stations_view_drag_data_received_cb), (rb_iradio_source_cmd_new_station): * sources/rb-iradio-source.h: * sources/rb-library-source.c: (rb_library_source_dispose), (rb_library_source_constructor), (rb_library_source_location_button_clicked_cb), (impl_get_config_widget), (rb_library_source_library_location_cb), (sanitize_path), (filepath_parse_pattern), (layout_example_label_update), (rb_library_source_layout_filename_changed), (build_filename), (impl_can_paste), (impl_paste), (rb_library_source_add_child_source), (rb_library_source_sync_child_sources): * sources/rb-library-source.h: * sources/rb-missing-files-source.h: * sources/rb-play-queue-source.c: (rb_play_queue_source_constructor), (impl_show_entry_view_popup): * sources/rb-play-queue-source.h: * sources/rb-playlist-source-recorder.c: (rb_playlist_source_recorder_class_init), (update_speed_combobox), (_nautilus_burn_drive_eject), (burn_cd), (ask_rewrite_disc), (rb_playlist_source_recorder_init), (rb_playlist_source_recorder_new): * sources/rb-playlist-source.c: (rb_playlist_source_constructor), (rb_playlist_source_save_playlist), (rb_playlist_source_entry_added_cb), (rb_playlist_source_set_query_model), (rb_playlist_source_add_to_map): * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_init), (rb_podcast_source_dispose), (rb_podcast_source_finalize), (search_action_to_prop), (rb_podcast_source_constructor), (rb_podcast_source_set_property), (rb_podcast_source_get_property), (rb_podcast_source_new), (impl_delete), (rb_podcast_source_songs_show_popup_cb), (rb_podcast_source_feeds_show_popup_cb), (feed_select_change_cb), (rb_podcast_source_show_browser), (construct_query_from_selection), (rb_podcast_source_do_query), (impl_get_config_widget), (rb_podcast_source_btn_file_change_cb), (posts_view_drag_data_received_cb), (rb_podcast_source_cmd_download_post), (rb_podcast_source_cmd_cancel_download), (rb_podcast_source_cmd_delete_feed), (rb_podcast_source_cmd_properties_feed), (rb_podcast_source_cmd_update_feed), (rb_podcast_source_post_status_cell_data_func), (rb_podcast_source_post_feed_cell_data_func), (rb_podcast_source_post_date_cell_data_func), (rb_podcast_source_load_finish_cb), (impl_receive_drag), (rb_podcast_source_entry_activated_cb), (impl_can_add_to_queue), (impl_add_to_queue), (rb_podcast_source_cmd_new_podcast), (impl_get_status): * sources/rb-podcast-source.h: * sources/rb-removable-media-source.c: (rb_removable_media_source_constructor): * sources/rb-removable-media-source.h: * sources/rb-source.h: * sources/rb-sourcelist-model.c: (rb_sourcelist_model_class_init), (rb_sourcelist_model_new), (rb_sourcelist_model_is_row_visible), (rb_sourcelist_model_row_is_separator), (rb_sourcelist_model_drag_data_received), (rb_sourcelist_model_row_drop_possible), (path_is_droppable), (rb_sourcelist_model_row_drop_position), (rb_sourcelist_model_get_drag_target), (rb_sourcelist_model_row_draggable), (rb_sourcelist_model_drag_data_get), (rb_sourcelist_model_row_inserted_cb), (rb_sourcelist_model_get_group_path): * sources/rb-sourcelist.c: (rb_sourcelist_append), (match_source_to_iter), (rb_sourcelist_source_to_iter), (rb_sourcelist_visible_source_to_iter), (rb_sourcelist_edit_source_name), (rb_sourcelist_selection_changed_cb), (button_press_cb), (key_release_cb), (name_notify_cb), (icon_notify_cb), (rb_sourcelist_title_cell_data_func), (source_name_edited_cb): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_constructor), (rb_static_playlist_source_load_from_xml), (impl_reset_filters), (impl_search), (rb_static_playlist_source_do_query), (rb_static_playlist_source_browser_changed_cb), (impl_receive_drag), (impl_save_contents_to_xml), (rb_static_playlist_source_add_location_swapped), (search_action_to_prop): * sources/rb-static-playlist-source.h: * widgets/bacon-volume.c: (bacon_volume_button_get_type): * widgets/eggtrayicon.c: (egg_tray_icon_init), (egg_tray_icon_get_orientation_property), (egg_tray_icon_send_manager_message), (egg_tray_icon_update_manager_window), (egg_tray_icon_manager_window_destroyed), (egg_tray_icon_realize), (egg_tray_icon_send_message), (egg_tray_icon_notify): * widgets/eggtrayicon.h: * widgets/rb-cell-renderer-pixbuf.c: (rb_cell_renderer_pixbuf_get_property), (rb_cell_renderer_pixbuf_set_property), (rb_cell_renderer_pixbuf_get_size), (rb_cell_renderer_pixbuf_render), (rb_cell_renderer_pixbuf_activate): * widgets/rb-cell-renderer-rating.c: (rb_cell_renderer_rating_class_init), (rb_cell_renderer_rating_get_property), (rb_cell_renderer_rating_set_property), (rb_cell_renderer_rating_get_size), (rb_cell_renderer_rating_render), (rb_cell_renderer_rating_activate): * widgets/rb-dialog.c: * widgets/rb-dialog.h: * widgets/rb-druid.c: (rb_druid_init_widgets), (rb_druid_new), (path_dialog_response_cb), (idle_set_sensitive), (do_response), (rb_druid_page3_finish_cb): * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_init), (rb_entry_view_set_property), (rb_entry_view_new), (rb_entry_view_play_count_cell_data_func), (rb_entry_view_year_cell_data_func), (rb_entry_view_sync_sorting), (rb_entry_view_get_sorting_type), (rb_entry_view_set_sorting_type), (rb_entry_view_set_sorting_order), (rb_entry_view_column_clicked_cb), (rb_entry_view_append_column), (rb_entry_view_set_columns_clickable), (rb_entry_view_constructor), (rb_entry_view_playing_song_changed), (rb_entry_view_button_press_cb), (rb_entry_view_rows_reordered_cb), (rb_entry_view_scroll_to_entry), (set_column_visibility), (rb_entry_view_set_fixed_column_width), (rb_entry_view_get_time_date_column_sample), (rb_entry_view_state_get_type): * widgets/rb-entry-view.h: * widgets/rb-header.c: (rb_header_init), (rb_header_set_property), (rb_header_sync), (slider_moved_timeout), (slider_moved_callback), (changed_idle_callback), (rb_header_elapsed_changed_cb): * widgets/rb-library-browser.c: (rb_library_browser_constructor), (update_browser_property_visibilty), (rb_library_browser_construct_query), (restore_selection), (rebuild_child_model), (rb_library_browser_set_selection), (rb_library_browser_set_model): * widgets/rb-library-browser.h: * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_set_property), (rb_property_view_reset), (rb_property_view_get_model), (rb_property_view_constructor), (rb_property_view_set_selection), (rb_property_view_selection_changed_cb), (rb_property_view_button_press_cb), (rb_property_view_set_search_func): * widgets/rb-query-creator-private.h: * widgets/rb-query-creator-properties.c: (integerCriteriaSetWidgetData), (yearCriteriaSetWidgetData), (durationCriteriaCreateWidget), (durationCriteriaSetWidgetData), (durationCriteriaGetWidgetData), (create_time_unit_option_menu), (relativeTimeCriteriaCreateWidget), (relativeTimeCriteriaSetWidgetData): * widgets/rb-query-creator.c: (rb_query_creator_constructor), (rb_query_creator_dispose), (rb_query_creator_load_query), (rb_query_creator_new_from_query), (rb_query_creator_get_query), (get_property_index_from_proptype), (select_criteria_from_value), (create_property_option_menu), (create_criteria_option_menu), (sort_option_menu_changed), (setup_sort_option_menu): * widgets/rb-query-creator.h: * widgets/rb-rating-helper.c: (rb_rating_install_rating_property), (rb_rating_render_stars): * widgets/rb-rating-helper.h: * widgets/rb-rating.c: (rb_rating_expose): * widgets/rb-rating.h: * widgets/rb-search-entry.c: (rb_search_entry_clear), (rb_search_entry_timeout_cb): * widgets/rb-search-entry.h: * widgets/rb-song-info.c: (rb_song_info_construct_single), (rb_song_info_constructor), (rb_song_info_new), (rb_song_info_set_entry_rating), (rb_song_info_populate_dialog), (rb_song_info_update_location), (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb), (rb_song_info_update_buttons), (rb_song_info_query_model_changed_cb), (rb_song_info_sync_entries_multiple), (rb_song_info_sync_entry_single): Strip all trailing whitespace. Fixes #344293. 2006-07-13 Ryan P Skadberg * doc/reference/Makefile.am: Fix GTK Doc Build 2006-07-13 James Livingston * bindings/python/rhythmdb.defs: bind rhythmdb_entry_get_playback_uri * plugins/artdisplay/artdisplay/LocalCoverArtSearch.py: use the above instead of the LOCATION, and don't try to get the directory listing for http URI schemes * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry): check for invalid utf8 in the error message, since apparently it can happen. 2006-07-12 William Jon McCann * sources/rb-import-errors-source.c: (rb_import_errors_source_class_init), (rb_import_errors_source_init), (rb_import_errors_source_constructor), (rb_import_errors_source_dispose), (rb_import_errors_source_new), (impl_get_status), (rb_import_errors_source_songs_show_popup_cb): * sources/rb-missing-files-source.c: (rb_missing_files_source_class_init), (rb_missing_files_source_init), (rb_missing_files_source_constructor), (rb_missing_files_source_dispose), (rb_missing_files_source_new), (rb_missing_files_source_songs_sort_order_changed_cb), (impl_get_status): * sources/rb-source.c: (rb_source_class_init), (rb_source_finalize), (update_visibility_idle), (queue_update_visibility), (rb_source_set_hidden_when_empty), (rb_source_set_property), (rb_source_get_property), (default_get_status), (rb_source_update_play_statistics), (default_add_to_queue), (_rb_source_show_popup), (rb_source_row_inserted_cb), (rb_source_post_entry_deleted_cb), (rb_source_gather_selected_properties), (_rb_source_register_action_group): * sources/rb-source.h: * sources/rb-sourcelist.c: (visibility_notify_cb): Don't use a fake model for import-errors and missing-files sources. Add a new source property "hidden-when-empty". Update source visibility in an idle. Clean up some whitespace. From bug #346800 2006-07-12 James Livingston * bindings/python/rb.defs: * bindings/python/rb.override: bind rb_error_dialog * plugins/rb/__init__.py: improve the stdout->debug mapping. Strip off the current working directory for uninstalled plugins, and add the class name to the method name. 2006-07-12 James Livingston * shell/rb-shell-player.c: (rb_shell_player_error): don't try to check the sources EOF type if it's NULL. Fixes #346284. 2006-07-12 James Livingston * rhythmdb/rb-refstring.c: (rb_refstring_get_sort_key): reverse a bit I accidently committed. Nothing to see here, move along... 2006-07-11 James Livingston * plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py: * plugins/artdisplay/artdisplay/CoverArtDatabase.py: fix some usage of Unknown. 2006-07-12 Jonathan Matthew * doc/reference/rhythmbox.types: Fix doc build (bug #347223) 2006-07-11 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry): Don't try to set mtime if we've deleted the entry. 2006-07-11 Jonathan Matthew * bindings/python/rhythmdb.defs: * rhythmdb/rhythmdb.c: * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-query.c: Move data structures holding registered entry types inside the RhythmDB object, and add a vfunc called when new types are registered. Add a flag to RhythmDBEntryType specifying whether entries of the type should be saved to the on-disk database. * sources/rb-audiocd-source.c: * sources/rb-daap-source.c: * sources/rb-ipod-source.c: * plugins/generic-player/rb-generic-player-source.c: * plugins/generic-player/rb-nokia770-source.c: * plugins/generic-player/rb-psp-source.c: Adjust to the above changes. * rhythmdb/rhythmdb-tree.c: If the type for an entry hasn't been registered yet, store the entry's properties as-is, and convert them to a real entry when the type is registered. If the type doesn't get registered, save the entry back to the database unmodified. From #330226. 2006-07-10 James Livingston * plugins/artdisplay/artdisplay/CoverArtDatabase.py: change os.path.unlink to os.unlink, so removing stuff works. 2006-07-10 James Livingston patch by: Ed Catmur and Peter * plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py: * plugins/artdisplay/artdisplay/CoverArtDatabase.py: * plugins/artdisplay/artdisplay/LocalCoverArtSearch.py: * plugins/artdisplay/artdisplay/Makefile.am: Redesign much of the internals of the cover database and Amazon lookup engine, and add support for loading art from the local file system. Fixes #345688. * plugins/rb/Coroutine.py: * plugins/rb/Makefile.am: * plugins/rb/__init__.py: Add the Coroutine class to the common python plugin classes. 2006-07-10 James Livingston * tests/Makefile.am: don't run the benchmark when doing "make check" * po/POTFILES.in: more build fixes, from Matti Lindell . Fixes #347049. 2006-07-10 James Livingston * plugins/cd-recorder/Makefile.am: build fixes * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry): don't attempt to change properties if we couldn't create an entry. * shell/rb-source-header.c: (rb_source_header_init), (rb_source_header_view_browser_changed_cb), (rb_source_header_sync_control_state): * shell/rb-tray-icon.c: * widgets/Makefile.am: * widgets/disclosure-widget.c: * widgets/disclosure-widget.h: remove the remanents of the disclosure widget, as it hasn't been used for a while. 2006-07-09 William Jon McCann * Makefile.am: * configure.ac: * data/ui/rhythmbox-ui.xml: * plugins/Makefile.am: * plugins/cd-recorder/.cvsignore: * plugins/cd-recorder/Makefile.am: * plugins/cd-recorder/cd-recorder.rb-plugin.desktop.in: * plugins/cd-recorder/rb-cd-recorder-plugin.c: (rb_cd_recorder_plugin_class_init), (rb_cd_recorder_plugin_init), (rb_cd_recorder_plugin_finalize), (burn_source_iter_func), (source_burn), (cmd_burn_source), (playlist_entries_changed), (playlist_row_inserted_cb), (update_source), (shell_selected_source_notify_cb), (impl_activate), (impl_deactivate): * shell/Makefile.am: * shell/rb-playlist-manager.c: (rb_playlist_manager_set_source), (rb_playlist_manager_cmd_save_playlist): * shell/rb-shell.c: (rb_shell_select_source): * sources/Makefile.am: * sources/rb-playlist-source-recorder.c: (rb_playlist_source_recorder_new): * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (rb_playlist_source_add_to_map): * sources/rb-playlist-source.h: Move cd burning into a plugin. Fixes #344300. 2006-07-10 James Livingston * lib/eel-gconf-extensions.c: * shell/rb-shell.c: remove some ununsed gnomeui includes * widgets/Makefile.am: * widgets/rb-song-display-box.c: * widgets/rb-song-display-box.h: remove RBSongDisplayBox from cvs, since it isn't acutally used anywhere. Fixes #346926 2006-07-09 James Livingston * bindings/python/rb.defs: * bindings/python/rb.override: * lib/rb-debug.c: (rb_debug_real): * lib/rb-debug.h: * plugins/rb/__init__.py: don't print out an extra newline when diverting python print statements to RB's debug log. 2006-07-09 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_drag_data_get): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_row_draggable), (rb_sourcelist_model_drag_data_get): check that the path/iter we get from the row reference is still valid. Fixes #346709. 2006-07-09 Jonathan Matthew patch by: Peter * widgets/rb-song-info.c: (rb_song_info_populate_dialog_multiple): If all selected entries have the same rating, use that as the initial rating for the multiple song info dialog. Fixes #345970. 2006-07-09 James Livingston * plugins/artdisplay/artdisplay/__init__.py: some minor changes to try to prevent #343345: - don't ever scale to 1x1, just hide the image in that case - don't fade when the window is minimised - use the last-good allocation width, not the current one - as it sometimes get weird values. 2006-07-08 William Jon McCann * data/ui/rhythmbox-ui.xml: * shell/rb-shell.c: Remove Import audio CD from menu. Fixes #339732 2006-07-08 James Livingston * metadata/test-metadata.c: (print_metadata_string), (load_metadata_cb): print out all the metadata we have read, not just a few. * sources/rb-playlist-source-recorder.c: (insert_media_request_cb), (ask_rewrite_disc), (warn_data_loss_cb): Fix some GDK lock issues. 2006-07-08 Jonathan Matthew * plugins/lyrics/lyrics.py: Change the lyrics cache location to match Quod Libet's, and fix the '&' -> 'and' substitution to require spaces. 2006-07-08 James Livingston * bindings/python/rb.defs: * bindings/python/rb.override: bind rb_debug_real to rb._debug * configure.ac: * plugins/Makefile.am: * plugins/rb-python-module.c: (rb_python_module_init_python): * plugins/rb/Makefile.am: add a place to put common python classes. plugins/rb/ and $prefix/rhythmbox/plugins/rb will be imported into the rb module/ * plugins/lyrics/Makefile.am: * plugins/lyrics/Loader.py: * plugins/artdisplay/artdisplay/Makefile.am: * plugins/artdisplay/artdisplay/Loader.py: * plugins/rb/Loader.py: move the loader class to rb.Loader * plugins/rb/__init__.py: redirect stdout from python (e.g. "print ...") to rb_debug. error output (e.g. exceptions) are still printed on stderr. * plugins/artdisplay/artdisplay/AmazonCoverArtSearch.py: * plugins/artdisplay/artdisplay/CoverArtDatabase.py: * plugins/lyrics/lyrics.py: adapt to the above by using rb.Loader instead of Loader. Fixes #346895. 2006-07-08 Jonathan Matthew * shell/rb-shell-player.xml: * shell/rb-shell-player.h: Correct the details of the playing-song-property-changed signal. 2006-07-08 Jonathan Matthew * lib/rb-marshal.list: * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_entry_changed_cb): * shell/rb-shell-player.h: * shell/rb-shell-player.xml: Emit a dbus signal when a property is changed on the playing entry. Fixes #332461. 2006-07-07 Jonathan Matthew * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): Fix build break with gcc 4.1 by changing RBRefString pointers into gpointers. 2006-07-07 James Livingston * rhythmdb/rhythmdb-monitor.c (rhythmdb_start_monitoring): remove an extraneous !, which caused it not to monitor folders in the library with no tracks in them. Fixes #346759. 2006-07-07 James Livingston * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_entry_allocate), (rhythmdb_entry_get), (rhythmdb_entry_set_internal), (rhythmdb_entry_sync_mirrored), (rhythmdb_entry_set_visibility), (rhythmdb_entry_get_string): * rhythmdb/rhythmdb.h: make _sync_mirrored private, and have "dirty" flags for the affected properties. _sync_mirrored will get run automatically when a dirty property is accessed, which improves performance a bit (especially during startup) as we don't need to sync every time they change. From #325215. * tests/bench-rhythmdb-load.c * tests/Makefile.am: add a RhythmDB loading benchmark. 2006-07-06 James Livingston * bindings/python/rb.defs: * bindings/python/rb.override: some more fixes, so that python classes derived from RBSource work correctly. 2006-07-06 James Livingston * configure.ac: bump pygtk requirements to 2.8, since we're already using some features of it, and weird things will happen if people are actually trying to use pygtk 2.6. * bindings/python/rb.override: * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: allow python to set RhythmDBEntryType's can_sync_metadata and sync_metadata vfuncs * sources/rb-browser-source.c: remove some left over member variables 2006-07-06 James Livingston * rhythmdb/rhythmdb.c: * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_entry_set): remove rhythmdb_entry_set_uninserted and rhythmdb_entry_set_nonotify. The former is pointless (as rhythmdb already knows which it should use) and the latter doesn't seem useful at all, and possibly bad. From #330226. * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: * daapsharing/rb-daap-connection.c: (entry_set_string_prop), (handle_song_listing): * podcast/rb-podcast-manager.c: (rb_podcast_manager_download_entry), (rb_podcast_manager_add_post), (rb_podcast_manager_insert_feed): * sources/rb-audiocd-source.c: (entry_set_string_prop), (rb_audiocd_create_track_entry): * sources/rb-ipod-source.c: (entry_set_string_prop), (add_ipod_song_to_db): * sources/rb-iradio-source.c: (rb_iradio_source_add_station): * tests/test-rhythmdb.c: (START_TEST): adapt to the above. 2006-07-05 James Livingston * shell/rb-playlist-manager.c: (playlist_load_start_cb), (playlist_load_end_cb), (rb_playlist_manager_parse_file), (rb_playlist_manager_cmd_save_playlist): set the playlist name to what totem-plparser gives us, or the file name if it doesn't give us anything. Set the default file name when saving too. Fixes #345261 2006-07-05 Jonathan Matthew patch by: Ed Catmur * lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb): Skip all hidden directories, not just trash, and skip unreadable files. Fixes #346322. 2006-07-04 James Livingston * plugins/rb-module.h: * plugins/rb-module.c: (rb_module_load), (rb_module_new_object), (rb_module_new): * plugins/rb-plugin.h: * plugins/rb-plugin.c: (is_configurable), (rb_plugin_class_init), (rb_plugin_finalise), (rb_plugin_set_property), (rb_plugin_get_property), (rb_plugin_activate), (rb_plugin_deactivate), (rb_plugin_create_configure_dialog), (rb_plugin_find_file): * plugins/rb-plugins-engine.c: (load_plugin_module): * plugins/rb-python-module.c: (rb_python_module_new_object), (rb_python_module_new): * plugins/rb-python-plugin.c: (rb_python_object_class_init): add a new rb_plugin_find_file method for locating plugin-specific data. Fixes 346473. * bindings/python/rb.defs: * plugins/Makefile.am: * plugins/generic-player/rb-generic-player-plugin.c: (create_source_cb): * plugins/ipod/rb-ipod-plugin.c: (impl_activate): Use the above. 2006-07-04 Jonathan Matthew * metadata/rb-metadata-dbus-client.c: (rb_metadata_load), (rb_metadata_can_save), (rb_metadata_save): Protect the dbus connection with a mutex. 2006-07-03 James Livingston * metadata/rb-metadata-gst.c: (ogg_pad_added_cb): correctly handle the case of the parser/tagger not being able to be created. 2006-07-03 James Livingston patch by: Nguyễn Thái Ngọc Duy * widgets/rb-song-info.c: (rb_song_info_init): make the Song Info window resizable, as it used to be. Fixes #345940. 2006-07-01 James Livingston Patch from Ståle Lyngaas * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element), (save_entry): * rhythmdb/rhythmdb.c: (metadata_field_from_prop), (rhythmdb_entry_allocate), (rhythmdb_entry_finalize), (set_props_from_metadata), (rhythmdb_entry_set_internal), (rhythmdb_prop_type_get_type), (rhythmdb_entry_get_string): store MusicBrainz track IDs in the database, and bump the on-disk version number to trigger a metadata reload. * backends/gstreamer/rb-player-gst.c: (process_tag): * metadata/rb-metadata-common.c: * metadata/rb-metadata-gst.c: (rb_metadata_gst_tag_to_field), (rb_metadata_gst_field_to_gst_tag): * metadata/rb-metadata.h: grab MB track IDs and use them. * plugins/audioscrobbler/rb-audioscrobbler.c: (rb_audioscrobbler_init), (rb_audioscrobbler_finalize), (rb_audioscrobbler_timeout_cb), (rb_audioscrobbler_song_changed_cb): send the MB track id along with the other metadata. Fixes #343491. 2006-06-30 James Livingston * bindings/python/rb.defs: bind RBSource's convenienve "show popup" method. 2006-06-30 James Livingston * bindings/python/rb.defs: * sources/rb-browser-source.c: (rb_browser_source_class_init), (rb_browser_source_songs_show_popup_cb), (default_show_entry_popup): * sources/rb-browser-source.h: * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_constructor), (impl_show_popup): allow RBBrowserSource-derived sources to override the entry context menu properly - by making it a virtual function, rather than relying on signal handler order (which doesn't really work). 2006-06-30 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_reapply_query_cb): Use the original query, not the preprocessed query, when redoing the query to pick up entries that previously didn't match. Preprocessing the query twice is bad. Fixes #346186. 2006-06-28 Jonathan Matthew * plugins/audioscrobbler/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): Just check if the elapsed time has been reset, rather than checking if it's a different track. Fixes #344827. 2006-06-28 Jonathan Matthew * backends/gstreamer/rb-player-gst.c: Set cdda source read-speed to 1. Fixes gaps in playback while the drive spins up, #344576. 2006-06-28 Jonathan Matthew * plugins/audioscrobbler/rb-audioscrobbler.c: (rb_audioscrobbler_perform): Use HTTP/1.1. Fixes #345895. 2006-06-26 Jonathan Matthew * lib/rb-preferences.h: * lib/rb-proxy-config.c: (rb_proxy_config_init), (check_auto_proxy_config), (get_proxy_config): Don't try to use a HTTP proxy if no proxy host is specified. Alert the user to the fact that we don't support automatic proxy configuration as infrequently as possible. From #345712. 2006-06-25 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_set_property): connect to the "post-entry-delete" signal, rather than "entry-deleted". This ensures things get removed correctly, fixes #338183. 2006-06-25 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_received): Fix build break. 2006-06-25 James Livingston patch by Nguyễn Thái Ngọc Duy * widgets/rb-search-entry.c: (rb_search_entry_init), (rb_search_entry_check_style), (rb_search_entry_changed_cb): make the search box have a pale yellow background when it's in use, except for when the user has an "accessability" theme. Code based heavily on Epiphany's. Fixes #344416. 2006-06-25 James Livingston * plugins/lyrics/lyrics.py: * plugins/pythonconsole/pythonconsole.py: * plugins/sample-python/sample-python.py: don't import gettext stuff as _, as the C code does this for us. Fixes i18n for python plugins, #343081 2006-06-25 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_received): Make drag-and-drop withing a model use a reorder rather then deleting and re-adding the entry. This means it does do weird things like stop playback of a track that is dragged, fixing #337657. 2006-06-25 Jonathan Matthew * metadata/rb-metadata-dbus-service.c: Add missing #include from previous commit. 2006-06-25 Jonathan Matthew patch by: Nguyễn Thái Ngọc Duy * metadata/rb-metadata-dbus-service.c: (main): Initialize gettext in the metadata helper. * metadata/rb-metadata-gst.c: Make some strings translatable. Fixes #345286. 2006-06-25 Jonathan Matthew * configure.ac: * lib/Makefile.am: * lib/rb-stock-icons.c: (rb_stock_icons_init): Inline the custom icons so they can always be loaded, but are still themable. Fixes #345796. 2006-06-23 James Livingston * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_do_query): stop the search box being applied for limits in auto playlists. Fixes #345307. 2006-06-23 James Livingston * shell/rb-shell-clipboard.c: (rb_shell_clipboard_set_source_internal), (rb_shell_clipboard_sync), (add_playlist_to_menu), (rebuild_playlist_menu): don't use the add-to-playlist menu for non-library tracks, as we don't supprot it yet. From #345248. 2006-06-23 James Livingston patch by: Brian Cameron * plugins/generic-player/rb-generic-player-plugin.c: * plugins/generic-player/rb-generic-player-source.c: * plugins/generic-player/rb-nokia770-source.c: * plugins/generic-player/rb-psp-source.c: Fix the build on Solaris. Fixes 345673. 2006-06-22 James Livingston * backends/rb-player.c: (rb_player_interface_init): * lib/rb-marshal.list: * podcast/rb-podcast-manager.c: (rb_podcast_manager_class_init): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init): * rhythmdb/rhythmdb.c: (rhythmdb_class_init): * shell/rb-shell-player.c: (rb_shell_player_class_init): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_class_init): * sources/rb-sourcelist.c: (rb_sourcelist_class_init): * widgets/rb-entry-view.c: (rb_entry_view_class_init): * widgets/rb-song-info.c: (rb_song_info_class_init): fix the C marshallers to use s/POINTER/BOXED/. Could fix #345384 but quite possible not. 2006-06-20 James Livingston patch by Alex Lancaster * daapsharing/rb-daap-share.c: (add_entry_to_mlcl): send the YEAR metadata to clients. Fixes #345276. 2006-06-22 Jonathan Matthew * metadata/rb-metadata-gst.c: (rb_gst_plugin_greater), (rb_add_id3_tagger): Fix plugin/element version detection for id3v2mux. 2006-06-20 Jonathan Matthew * sources/rb-source.c: (rb_source_finalize), (rb_source_set_property), (rb_source_post_entry_deleted_cb), (_autohide_update_visibility), (_rb_autohide_source_post_entry_deleted_cb), (_rb_autohide_source_row_inserted_cb), (_rb_source_hide_when_empty): Use post-entry-delete signal to update status and autohide sources. 2006-06-20 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_finalize): remove the "selection changed" idle callback, if present. 2006-06-19 James Livingston patch by: Nguyễn Thái Ngọc Duy * sources/rb-playlist-source.c: (rb_playlist_source_constructor): don't try to translate the empty string. Fixes #345285. 2006-06-19 James Livingston * bindings/python/rhythmdb.override: more python binding fixes 2006-06-19 James Livingston * lib/rb-util.c: (rb_copy_function): * lib/rb-util.h: add a function that returns the same pointer it was passed. * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (rhythmdb_entry_ref), (rhythmdb_entry_unref), (rhythmdb_entry_get_type), (rhythmdb_entry_type_get_type): drop the "db" parameter to rhythmdb_entry_{ref,unref}, and change RhythmDBEntry and RhythmDBEntryType into boxed types. This allows them to be used from python. Note that entry-types aren't actually reference counted (yet). * bindings/python/rb.defs: * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: Adapt to the above, and fix the return types of some bindings. * rhythmdb/rhythmdb.c: (rhythmdb_emit_entry_signals_idle), (process_added_entries_cb), (rhythmdb_entry_finalize), (rhythmdb_entry_delete): * daapsharing/rb-daap-connection.c: (rb_daap_connection_class_init), (rb_daap_connection_set_property), (rb_daap_connection_get_property): * plugins/generic-player/rb-generic-player-source.c: (rb_generic_player_source_load_songs), (load_playlist_file): * podcast/rb-podcast-manager.c: (rb_podcast_manager_class_init): * rhythmdb/rhythmdb-property-model.c: (query_model_cb): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_finalize), (idle_process_update), (rhythmdb_query_model_add_entry), (rhythmdb_query_model_insert_into_main_list), (rhythmdb_query_model_insert_into_limited_list), (rhythmdb_query_model_remove_from_main_list), (rhythmdb_query_model_remove_from_limited_list), (rhythmdb_query_model_drag_data_received), (rhythmdb_query_model_add_results), (rhythmdb_query_model_get_column_type), (rhythmdb_query_model_get_value): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (rhythmdb_tree_entry_delete), (remove_one_song): * shell/rb-play-order-linear-loop.c: (rb_linear_play_order_loop_get_next), (rb_linear_play_order_loop_get_previous): * shell/rb-play-order-linear.c: (rb_linear_play_order_get_next), (rb_linear_play_order_get_previous): * shell/rb-play-order-queue.c: (rb_queue_play_order_get_next), (rb_queue_play_order_get_previous): * shell/rb-play-order-random.c: (rb_random_play_order_init), (rb_random_filter_history), (rb_random_play_order_get_next), (rb_random_play_order_go_next), (rb_random_db_changed), (rb_random_playing_entry_changed): * shell/rb-play-order-shuffle.c: (rb_shuffle_play_order_init), (remove_from_history), (add_randomly_to_history), (rb_shuffle_db_changed), (rb_shuffle_playing_entry_changed): * shell/rb-play-order.c: (rb_play_order_class_init), (rb_play_order_set_property), (rb_play_order_get_property), (rb_play_order_update_have_next_previous): * shell/rb-play-order.h: * shell/rb-shell-clipboard.c: (rb_shell_clipboard_process_deletions), (rb_shell_clipboard_entry_deleted_cb), (add_playlist_to_menu): * sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_constructor): * sources/rb-browser-source.c: (rb_browser_source_class_init), (rb_browser_source_set_property), (rb_browser_source_get_property), (rb_browser_source_do_query): * sources/rb-daap-source.c: (rb_daap_source_connection_cb): * sources/rb-import-errors-source.c: (rb_import_errors_source_new): * sources/rb-ipod-source.c: (add_rb_playlist), (add_ipod_song_to_db), (impl_paste): * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_set_property), (rb_iradio_source_get_property): * sources/rb-library-source.c: (layout_example_label_update): * sources/rb-missing-files-source.c: (rb_missing_files_source_class_init), (rb_missing_files_source_set_property), (rb_missing_files_source_get_property), (rb_missing_files_source_new): * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (rb_playlist_source_set_property), (rb_playlist_source_get_property): * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_set_property), (rb_podcast_source_get_property), (construct_query_from_selection): * sources/rb-removable-media-source.c: (impl_delete_thyself): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_constructor), (rb_static_playlist_source_add_location_internal): * widgets/rb-entry-view.c: (rb_entry_view_class_init): * widgets/rb-header.c: (rb_header_class_init), (rb_header_set_property), (rb_header_get_property): * widgets/rb-library-browser.c: (rb_library_browser_class_init), (rb_library_browser_set_property), (rb_library_browser_get_property): * widgets/rb-song-info.c: (rb_song_info_class_init), (rb_song_info_get_property): Adjust for the _ref/_unref prototype change, do s/pointer/boxed/ in many places and free entry-types properly. 2006-06-18 James Livingston * lib/rb-util.c: (purge_useless_threads), (rb_threads_init): purge unushed GThreadPool non-exclusive threads every now and then. * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_finalize), (rhythmdb_do_full_query_async_parsed): Use a thread pool for query threads. Fixes #341593 2006-06-19 James Livingston * sources/rb-playlist-source.c: (rb_playlist_source_constructor): make the "Track number" checkbox actually work for playlists. From #329986. 2006-06-19 Jonathan Matthew * plugins/generic-player/rb-generic-player-source.c: Get playlist and audio folder information from HAL. Fixes #333845. 2006-06-18 James Livingston patch by: Alex Lancaster * widgets/rb-entry-view.h: * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_append_column_custom), (rb_entry_view_insert_column_custom): add support for inserting custom columns at arbitrary locations, rather than just appending to the end. * sources/rb-playlist-source.c: (rb_playlist_source_constructor): make the playlists "track number" column go at the start, and add a normal track number column. Fixes #329986. 2006-06-18 Dennis Cranston * data/glade/library-prefs.glade: Capitalization fixes. Fix a mnemonic conflict. Add ellipses to the edit button. * sources/rb-library-source.c: (rb_library_source_edit_profile_clicked_cb), (impl_get_config_widget): Hide dialog separator. Assign a mnemonic widget to the labels. Fixes #344114. 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. 2006-04-22 James Livingston * shell/rb-audioscrobbler.c: (rb_audioscrobbler_finalize): remove the submission timeout when the object is finalised. * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: * bindings/python/rhythmdb.defs: fix some python binding stuff. * widgets/rb-library-browser.c: (rb_library_browser_construct_query), (rebuild_output_model), (rebuild_child_model): * widgets/rb-library-browser.h: change from GPtrArray to RhythmDBQuery (which in C is the same thing). 2006-04-21 Jonathan Matthew * shell/rb-shell.c: (rb_shell_get_song_properties): Don't try to include entry-type (or anything else not easily marshallable) in the song properties hash table. * rhythmdb/rhythmdb.c: (rhythmdb_entry_get): Handle G_TYPE_POINTER * sources/rb-playlist-source.c: (rb_playlist_source_init), (rb_playlist_source_constructor): Fix entry-type initialization as with previous commit. 2006-04-21 Jonathan Matthew * sources/rb-iradio-source.c: (rb_iradio_source_init), (rb_iradio_source_constructor), (rb_iradio_source_do_query): * sources/rb-podcast-source.c: (rb_podcast_source_init), (rb_podcast_source_constructor): Set default values for entry-type after base class construction, rather than in _init, because gobject will set the entry-type property to NULL after _init if no value is provided. Fixes #339206. 2006-04-20 Ryan P Skadberg patch by: Gunnar Steinn Magnusson * COPYING: * backends/gstreamer/rb-encoder-gst.c: * backends/gstreamer/rb-encoder-gst.h: * backends/rb-encoder.c: * backends/rb-encoder.h: * bindings/python/override_common.c: * bindings/python/override_common.h: * daapsharing/rb-daap-connection.c: * daapsharing/rb-daap-connection.h: * daapsharing/rb-daap-dialog.c: * daapsharing/rb-daap-dialog.h: * daapsharing/rb-daap-mdns-browser-avahi.c: * daapsharing/rb-daap-mdns-browser-howl.c: * daapsharing/rb-daap-mdns-browser.h: * daapsharing/rb-daap-mdns-publisher-avahi.c: * daapsharing/rb-daap-mdns-publisher-howl.c: * daapsharing/rb-daap-mdns-publisher.h: * daapsharing/rb-daap-share.c: * daapsharing/rb-daap-share.h: * daapsharing/rb-daap-sharing.c: * daapsharing/rb-daap-sharing.h: * daapsharing/rb-daap-src.c: * daapsharing/rb-daap-src.h: * daapsharing/rb-daap-structure.c: * daapsharing/rb-daap-structure.h: * help/C/fdl-appendix.xml: * help/es/es.po: * help/ja/fdl-appendix.xml: * iradio/rb-new-station-dialog.c: * iradio/rb-new-station-dialog.h: * iradio/rb-station-properties-dialog.c: * iradio/rb-station-properties-dialog.h: * lib/mkdtemp.c: * lib/mkdtemp.h: * lib/rb-cut-and-paste-code.c: * lib/rb-cut-and-paste-code.h: * lib/rb-debug.c: * lib/rb-debug.h: * lib/rb-file-helpers.c: * lib/rb-file-helpers.h: * lib/rb-glade-helpers.c: * lib/rb-glade-helpers.h: * lib/rb-preferences.h: * lib/rb-proxy-config.c: * lib/rb-stock-icons.c: * lib/rb-stock-icons.h: * lib/rb-thread.c: * lib/rb-thread.h: * lib/rb-tree-dnd.c: * lib/rb-tree-dnd.h: * lib/rb-util.c: * lib/rb-util.h: * metadata/rb-metadata-common.c: * metadata/rb-metadata-dbus-client.c: * metadata/rb-metadata-dbus-service.c: * metadata/rb-metadata-dbus.c: * metadata/rb-metadata-dbus.h: * metadata/rb-metadata-gst.c: * metadata/rb-metadata.h: * metadata/sj-error.c: * metadata/sj-error.h: * metadata/sj-metadata-musicbrainz.c: * metadata/sj-metadata-musicbrainz.h: * metadata/sj-metadata.c: * metadata/sj-metadata.h: * metadata/sj-structures.c: * metadata/sj-structures.h: * metadata/test-metadata.c: * player/rb-player-gst.c: * player/rb-player.h: * player/rb-recorder-gst.c: * player/rb-recorder.h: * plugins/artdisplay/artdisplay.py: * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: * plugins/ipod/rb-ipod-plugin.c: * plugins/lirc/rb-lirc-plugin.c: * plugins/pythonconsole/pythonconsole.py: * plugins/rb-module.c: * plugins/rb-module.h: * plugins/rb-plugin-manager.c: * plugins/rb-plugin-manager.h: * plugins/rb-plugin.c: * plugins/rb-plugin.h: * plugins/rb-plugins-engine.c: * plugins/rb-plugins-engine.h: * plugins/rb-python-module.c: * plugins/rb-python-module.h: * plugins/rb-python-plugin.c: * plugins/rb-python-plugin.h: * plugins/sample/rb-sample-plugin.c: * po/de.po: * po/el.po: * po/en_CA.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/it.po: * po/ja.po: * po/mk.po: * po/pt_BR.po: * po/ru.po: * podcast/rb-feed-podcast-properties-dialog.c: * podcast/rb-feed-podcast-properties-dialog.h: * podcast/rb-new-podcast-dialog.c: * podcast/rb-new-podcast-dialog.h: * podcast/rb-podcast-manager.c: * podcast/rb-podcast-manager.h: * podcast/rb-podcast-parse.c: * podcast/rb-podcast-parse.h: * podcast/rb-podcast-properties-dialog.c: * podcast/rb-podcast-properties-dialog.h: * remote/bonobo/libmain.c: * remote/bonobo/rb-nautilus-context-menu.c: * remote/bonobo/rb-nautilus-context-menu.h: * remote/bonobo/rb-remote-bonobo.c: * remote/bonobo/rb-remote-bonobo.h: * remote/rb-remote-client-proxy.c: * remote/rb-remote-client-proxy.h: * remote/rb-remote-common.c: * remote/rb-remote-common.h: * remote/rb-remote-proxy.c: * remote/rb-remote-proxy.h: * rhythmdb/gsequence.c: * rhythmdb/gsequence.h: * rhythmdb/rb-refstring.c: * rhythmdb/rb-refstring.h: * rhythmdb/rhythmdb-gda.c: * rhythmdb/rhythmdb-gda.h: * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-property-model.c: * rhythmdb/rhythmdb-property-model.h: * rhythmdb/rhythmdb-query-model.c: * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb-query-results.c: * rhythmdb/rhythmdb-query-results.h: * rhythmdb/rhythmdb-tree.c: * rhythmdb/rhythmdb-tree.h: * rhythmdb/rhythmdb.c: * rhythmdb/rhythmdb.h: * shell/main.c: * shell/rb-audioscrobbler.c: * shell/rb-audioscrobbler.h: * shell/rb-history.c: * shell/rb-history.h: * shell/rb-play-order-linear-loop.c: * shell/rb-play-order-linear-loop.h: * shell/rb-play-order-linear.c: * shell/rb-play-order-linear.h: * shell/rb-play-order-queue.c: * shell/rb-play-order-queue.h: * shell/rb-play-order-random-by-age-and-rating.c: * shell/rb-play-order-random-by-age-and-rating.h: * shell/rb-play-order-random-by-age.c: * shell/rb-play-order-random-by-age.h: * shell/rb-play-order-random-by-rating.c: * shell/rb-play-order-random-by-rating.h: * shell/rb-play-order-random-equal-weights.c: * shell/rb-play-order-random-equal-weights.h: * shell/rb-play-order-random.c: * shell/rb-play-order-random.h: * shell/rb-play-order-shuffle.c: * shell/rb-play-order-shuffle.h: * shell/rb-play-order.c: * shell/rb-play-order.h: * shell/rb-playlist-manager.c: * shell/rb-playlist-manager.h: * shell/rb-removable-media-manager.c: * shell/rb-removable-media-manager.h: * shell/rb-shell-clipboard.c: * shell/rb-shell-clipboard.h: * shell/rb-shell-player.c: * shell/rb-shell-player.h: * shell/rb-shell-preferences.c: * shell/rb-shell-preferences.h: * shell/rb-shell.c: * shell/rb-shell.h: * shell/rb-source-header.c: * shell/rb-source-header.h: * shell/rb-statusbar.c: * shell/rb-statusbar.h: * shell/rb-tray-icon.c: * shell/rb-tray-icon.h: * sources/rb-audiocd-source.c: * sources/rb-audiocd-source.h: * sources/rb-auto-playlist-source.c: * sources/rb-auto-playlist-source.h: * sources/rb-browser-source.c: * sources/rb-browser-source.h: * sources/rb-daap-source.c: * sources/rb-daap-source.h: * sources/rb-generic-player-source.c: * sources/rb-generic-player-source.h: * sources/rb-import-errors-source.c: * sources/rb-import-errors-source.h: * sources/rb-ipod-source.c: * sources/rb-ipod-source.h: * sources/rb-iradio-source.c: * sources/rb-iradio-source.h: * sources/rb-library-source.c: * sources/rb-library-source.h: * sources/rb-missing-files-source.c: * sources/rb-missing-files-source.h: * sources/rb-nokia770-source.c: * sources/rb-nokia770-source.h: * sources/rb-play-queue-source.c: * sources/rb-play-queue-source.h: * sources/rb-playlist-source-recorder.c: * sources/rb-playlist-source-recorder.h: * sources/rb-playlist-source.c: * sources/rb-playlist-source.h: * sources/rb-playlist-xml.h: * sources/rb-podcast-source.c: * sources/rb-podcast-source.h: * sources/rb-psp-source.c: * sources/rb-psp-source.h: * sources/rb-removable-media-source.c: * sources/rb-removable-media-source.h: * sources/rb-source.c: * sources/rb-source.h: * sources/rb-sourcelist-model.c: * sources/rb-sourcelist-model.h: * sources/rb-sourcelist.c: * sources/rb-sourcelist.h: * sources/rb-static-playlist-source.c: * sources/rb-static-playlist-source.h: * tests/test-cd.c: * tests/test-cmdline.c: * tests/test-rhythmdb-indexing.c: * tests/test-rhythmdb-query.c: * tests/test-rhythmdb-simple.c: * tests/test-rhythmdb-tree-deserialization.c: * tests/test-rhythmdb-tree-serialization.c: * tests/test-rhythmdb-view.c: * widgets/bacon-volume.c: * widgets/bacon-volume.h: * widgets/disclosure-widget.c: * widgets/disclosure-widget.h: * widgets/eel-gconf-extensions.c: * widgets/eel-gconf-extensions.h: * widgets/eggtrayicon.c: * widgets/eggtrayicon.h: * widgets/libsexy/sexy-icon-entry.c: * widgets/libsexy/sexy-icon-entry.h: * widgets/rb-cell-renderer-pixbuf.c: * widgets/rb-cell-renderer-pixbuf.h: * widgets/rb-cell-renderer-rating.c: * widgets/rb-cell-renderer-rating.h: * widgets/rb-dialog.c: * widgets/rb-dialog.h: * widgets/rb-druid.c: * widgets/rb-druid.h: * widgets/rb-entry-view.c: * widgets/rb-entry-view.h: * widgets/rb-header.c: * widgets/rb-header.h: * widgets/rb-library-browser.c: * widgets/rb-library-browser.h: * widgets/rb-property-view.c: * widgets/rb-property-view.h: * widgets/rb-query-creator-private.h: * widgets/rb-query-creator-properties.c: * widgets/rb-query-creator.c: * widgets/rb-query-creator.h: * widgets/rb-rating-helper.c: * widgets/rb-rating-helper.h: * widgets/rb-rating.c: * widgets/rb-rating.h: * widgets/rb-search-entry.c: * widgets/rb-search-entry.h: * widgets/rb-song-display-box.c: * widgets/rb-song-display-box.h: * widgets/rb-song-info.c: * widgets/rb-song-info.h: Fix FSF address EVERYWHERE 2006-04-20 Ryan P Skadberg patch by: Gareth Murphy, James Livingston * bindings/python/rb.defs: * configure.ac: * plugins/Makefile.am: * plugins/artdisplay/Makefile.am: * plugins/artdisplay/artdisplay.py: * plugins/artdisplay/artdisplay.rb-plugin.desktop.in: * plugins/rb-python-module.c: (rb_python_module_init_python): * shell/rb-shell.c: (construct_widgets), (rb_shell_druid_response_cb), (rb_shell_get_box_for_ui_location), (rb_shell_add_widget), (rb_shell_remove_widget), (rb_shell_ui_location_get_type): * shell/rb-shell.h: Initial Art Display (and Download) Plugin Support 2006-04-21 Jonathan Matthew * rhythmdb/rhythmdb.c: (entry_volume_mounted_or_unmounted): Fix build failure caused by the combination of the previous two commits. 2006-04-20 James Livingston patch by: Christophe Fergeau to make RhythmDBEntryTypes be a structure rather than a uint. Add a vfunc table to the entry types, which will allow us to get rid of some of the "if entry type == WHATEVER" code everywhere. From bug * bindings/python/rb.defs: * bindings/python/rb.override: * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: * daapsharing/rb-daap-connection.c: (rb_daap_connection_class_init), (rb_daap_connection_init), (rb_daap_connection_set_property), (rb_daap_connection_get_property): * daapsharing/rb-daap-share.c: (db_entry_added_cb): * podcast/rb-podcast-manager.c: (rb_podcast_manager_entry_downloaded), (rb_podcast_manager_subscribe_feed), (rb_podcast_manager_db_entry_added_cb), (rb_podcast_manager_db_entry_deleted_cb), (rb_podcast_manager_insert_feed): * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (conjunctive_query): * rhythmdb/rhythmdb.c: (sync_entry_changed), (process_added_entries_cb), (rhythmdb_entry_allocate), (rhythmdb_entry_finalize), (rhythmdb_entry_unref), (rhythmdb_process_stat_event), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_process_file_created_or_modified), (action_thread_main), (rhythmdb_add_uri), (entry_type_to_string), (entry_type_from_uint), (write_encoded_gvalue), (read_encoded_property), (rhythmdb_prop_type_get_type), (rhythmdb_entry_register_type), (rhythmdb_entry_song_get_type), (rhythmdb_entry_ignore_get_type), (rhythmdb_entry_iradio_get_type), (rhythmdb_entry_podcast_post_get_type), (rhythmdb_entry_podcast_feed_get_type), (rhythmdb_entry_import_error_get_type), (rhythmdb_entry_get_entry_type), (rhythmdb_entry_get_pointer), (rhythmdb_entry_get_ulong), (rhythmdb_entry_get_type), (rhythmdb_entry_type_get_type): * rhythmdb/rhythmdb.h: * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): * shell/rb-playlist-manager.c: (handle_playlist_entry_cb): * shell/rb-shell-player.c: (rb_shell_player_open_entry), (rb_shell_player_entry_activated_cb), (info_available_cb): * shell/rb-shell.c: (rb_shell_get_source_by_entry_type), (rb_shell_register_entry_type_for_source), (rb_shell_playing_from_queue_cb), (rb_shell_playing_entry_changed_cb), (rb_shell_player_stream_song_changed_cb), (rb_shell_jump_to_entry_with_source), (rb_shell_guess_type_for_uri), (rb_shell_add_uri), (handle_playlist_entry_cb), (rb_shell_load_uri): * shell/rb-shell.h: * sources/rb-auto-playlist-source.c: (impl_receive_drag): * sources/rb-browser-source.c: (rb_browser_source_class_init), (rb_browser_source_init), (rb_browser_source_set_property), (rb_browser_source_get_property): * sources/rb-ipod-source.c: (impl_paste): * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_init), (rb_iradio_source_set_property), (rb_iradio_source_get_property): * sources/rb-library-source.c: (impl_paste): * sources/rb-missing-files-source.c: (rb_missing_files_source_class_init), (rb_missing_files_source_init), (rb_missing_files_source_set_property), (rb_missing_files_source_get_property): * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (rb_playlist_source_init), (rb_playlist_source_set_property), (rb_playlist_source_get_property): * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_init), (rb_podcast_source_set_property), (rb_podcast_source_get_property): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_add_location_internal): 2006-04-20 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_add_import_error_entry), (entry_volume_mounted_or_unmounted), (rhythmdb_volume_unmounted_cb): When a volume is unmounted, delete import errors for files stored on it. When a volume is mounted, stat all tracks stored on it, rather than assuming they're present. Fixes #339023. 2006-04-20 James Livingston patch by: Alex Lancaster to remember browser visibility for non-gconf-using sources (like playlists). Part of bug 118862. * shell/rb-source-header.c: (sourcestate_free), (rb_source_header_init), (rb_source_header_finalize), (rb_source_header_source_weak_destroy_cb): switch from storing the search string to storing a "source state" structure (rb_source_header_set_source_internal), (rb_source_state_sync), (rb_source_header_search_cb), (rb_source_header_clear_search), (rb_source_header_disclosure_toggled_cb): as well as storing the string, stop the visibility of the source's browser. 2006-04-20 James Livingston * sources/rb-library-source.c: (impl_paste): ignore attempts to paste library entries back into the library. Fixes bug 339065. 2006-04-20 James Livingston * plugins/rb-plugin.h: remove the use of g_intern_static_string as it only exists in glib 2.10. 2006-04-20 James Livingston patch by Brian Cameron to fix building on Solaris. From bug 335318. * rhythmdb/rhythmdb.c: (rhythmdb_query_append_prop_multiple): * shell/rb-audioscrobbler.c: * sources/rb-psp-source.c: 2006-04-20 James Livingston * data/glade/Makefile.am: remove the use of $(NULL) since it causes issues for some people. * shell/rb-playlist-manager.c: (save_playlist_response_cb): fix an accidental s/suffix/prefix/ * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_set_query): fix the invered logic preventing you from sorting playlists which aren't limited by time. 2006-04-19 James Livingston * rhythmdb/rhythmdb.c: (metadata_field_from_prop): don't try to write duration or bitrate back to the file, since they are properties of the audio data, not tags we can set. 2006-04-19 James Livingston patch by: Götz Waschk to use $(LIBTOOL) instead of libtool, to fix builds which are using a different version. Fixes bug 338996. * shell/Makefile.am: 2006-04-19 James Livingston * rhythmdb/rhythmdb.c: (sync_entry_changed): emit a warning if we try to sync data to a file which is uneditable. 2006-04-19 James Livingston patch by: Gavin Stewart * data/glade/playlist-save.glade: * data/glade/Makefile.am: * po/POTFILES.in: add the playlist saving dialog. * shell/rb-playlist-manager.c: (save_playlist_response_cb), (export_set_extension_cb), (filter_get_export_filter_label), (setup_format_menu), (rb_playlist_manager_cmd_save_playlist): * shell/rb-playlist-manager.h: Allow saving of playlists in alternate formats (PLS and M3U at the moment). Fixes bug 316295. 2006-04-19 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_set_source_internal): don't let you edit remove auto playlists. * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_set_query): correctly handle time-limited playlists. 2006-04-19 Jonathan Matthew Patch by: Mikael Olenfalk * shell/rb-audioscrobbler.c: (rb_audioscrobbler_load_queue): Don't crash if the queue file contains no newlines. Fixes #338924. 2006-04-18 Christophe Fergeau * sources/rb-ipod-source.c: (generate_ipod_filename): fixed wrong loop condition 2006-04-18 Christophe Fergeau * sources/rb-ipod-source.c: ipod music dirs can be lower or upper case. Moreover, they may not exist yet, so take that into account when generating the iPod filename. 2006-04-18 Christophe Fergeau * sources/rb-ipod-source.c: added support for drag and drop from the library to the iPod (only enabled if --enable-track-transfer was passed to configure) 2006-04-17 Christophe Fergeau * configure.ac: * lib/rb-marshal.list: * lib/rb-util.c: * lib/rb-util.h: * plugins/Makefile.am: * plugins/ipod/Makefile.am: * plugins/ipod/ipod.rb-plugin.desktop.in: * plugins/ipod/rb-ipod-plugin.c: * plugins/rb-plugin.h: * shell/Makefile.am: * shell/rb-removable-media-manager.c: * shell/rb-removable-media-manager.h: * shell/rb-shell.c: * sources/Makefile.am: * sources/rb-ipod-source.c: * sources/rb-ipod-source.h: turn rb-ipod-source.c into a plugin. The various iPod related files should be moved to plugins/ipod/ now... 2006-04-17 James Livingston Updated documentation from Baptiste Mille-Mathias and "vic". * help/C/figures/rb-iradio-main.png: * help/C/figures/rb-notification-area-menu.png: * help/C/figures/rb-notification-window.png: * help/C/figures/rb-notification-zone.png: * help/C/figures/rb-podcast-main.png: * help/C/figures/rb-statusbar.png: * help/C/figures/rb-volume-changer.png: * help/C/figures/rb-window-small.png: * help/C/figures/rb-window.png: * help/C/rhythmbox.xml: 2006-04-17 Jonathan Matthew * metadata/test-metadata.c: (load_metadata_cb): Report ignored files more obviously. * metadata/rb-metadata-gst.c: (rb_metadata_init), (make_undecodable_error), (rb_metadata_gst_error_cb), (rb_metadata_gst_new_decoded_pad_cb), (rb_metadata_gst_unknown_type_cb), (rb_metadata_bus_handler): Ignore really small files (<4kB) for which typefinding fails. Always link decoded pads from decodebin to fakesink. Shut the pipeline down by posting an error on the bus when decodebin emits unknown-type signals. Fixes bug #338062. 2006-04-17 Jonathan Matthew * shell/rb-shell.c: (rb_shell_load_uri): Fix glaring mistakes in previous commit: actually pass arguments to rb_debug, and specify the right entry type when adding a new iradio station so we don't try to add local playlist files to the library. 2006-04-17 Jonathan Matthew * shell/main.c: (load_uri_args): Don't check that remote URLs exist before trying to add them, as iradio streams often fail rb_uri_exists(). * shell/rb-shell-player.c: (notify_playing_idle), (rb_shell_player_open_playlist_url), (playlist_entry_cb), (open_location_thread), (rb_shell_player_open_location), (rb_shell_player_play), (rb_shell_player_set_playing_entry), (eos_cb): When playing an iradio stream using a playlist, keep a list of all the stream URLs, and try them in turn. If we get through the whole playlist too quickly, error out. Various other fixes that make iradio work a lot better. * shell/rb-shell.c: (add_to_library_response_cb), (rb_shell_guess_type_for_uri), (rb_shell_add_uri), (handle_playlist_entry_cb), (rb_shell_load_uri): Add playlists containing streams as iradio stations. If the playlist is local, add each stream URL, but if the playlist is remote, just add the playlist URL. * sources/rb-iradio-source.c: (new_station_location_added): Add new station URLs as-is, rather than parsing the playlist and adding the streams. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_changed_cb), (rhythmdb_query_model_emit_reorder), (rhythmdb_query_model_do_reorder): Emit row-changed notifications when an entry changes but is not reordered. * widgets/rb-entry-view.c: (rb_entry_view_playing_cell_data_func): Display the playback error icon when the entry has an error and there's nothing else to display. Fixes bug #320336 and some of #324402. 2006-04-16 Christophe Fergeau * sources/rb-ipod-source.c: use a GHashTable for the RhythmDBEntry=>Itdb_Track mapping, this is better imo, and at the same time, this fixes compilation breakage for people not having libgpod CVS HEAD 2006-04-16 Ryan P Skadberg patch by: Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_add_post), (rb_podcast_manager_insert_feed): * podcast/rb-podcast-manager.h: Actually automatically podcasts, fixes bug 321945 2006-04-16 James Livingston * sources/rb-library-source.c: (rb_library_source_library_location_cb): return FALSE like we are supposed to, not void. patch by: FreeBSD GNOME Project * configure.ac: fix some bash-isms. patch by: Pawel Worach * metadata/rb-metadata-dbus-client.c: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_album_sort_func): fix build issues on FreeBSD 2006-04-16 James Livingston Patch from: Alessandro Decina to add support for transcoding to RBEncoderGst. * backends/gstreamer/rb-encoder-gst.c: (rb_encoder_gst_emit_error), (rb_encoder_gst_emit_completed), (bus_watch_cb), (gst_error_cb), (start_pipeline), (add_encoding_pipeline), (new_decoded_pad_cb), (add_decoding_pipeline), (encoder_match_mime), (get_profile_from_mime_type), (extract_track), (transcode_track), (rb_encoder_gst_cancel), (rb_encoder_gst_encode): 2006-04-16 Christophe Fergeau * sources/rb-ipod-source.c: (add_ipod_song_to_db), (load_ipod_db_idle_cb): moved RhythmDBEntry creation from load_ipod_db_idle_cb to a new separate function 2006-04-16 Christophe Fergeau * sources/rb-ipod-source.c: added 'move to trash' support to the iPod source 2006-04-16 Christophe Fergeau * sources/rb-ipod-source.c: (rb_ipod_is_volume_ipod): removed unused variables 2006-04-16 Christophe Fergeau * data/ui/Makefile.am: * data/ui/ipod-ui.xml: added new ui file containing the iPod context menu * lib/rb-util.c: check if the widget we got from the UI manager isn't NULL before using it as a popup menu * sources/rb-ipod-source.c: added the possibility to 'rename' and 'eject' an iPod 2006-04-16 Christophe Fergeau * sources/rb-ipod-source.c: when hal tells us a partition is on an iPod, check if it contains an iPod database before using it (in case the iPod was repartitionned somehow). Should fix bug #325034 2006-04-16 Steve Frécinaux * configure.ac: bump GTK+ version requirement from 2.5.4 to 2.6.0. * data/Makefile.am: install application icon into the default theme. * data/rhythmbox.desktop.in: don't specify icon file extension. * shell/main.c: (main): set default window icon from theme. * shell/rb-shell.c: (rb_shell_init, rb_shell_cmd_about): remove legacy code concerning window icon, and fix leak by unreferencing the about logo pixbuf once it's not used anymore. 2006-04-16 James Livingston * configure.ac: bump version to 0.9.4 * NEWS: update NEWS and 0.9.4 insert translations 2006-04-16 James Livingston * plugins/pythonconsole/pythonconsole.py: import the rhythmdb namespace automatically. 2006-04-16 James Livingston * data/rhythmbox.schemas: add the plugin's stuff to the gconf schema * doc/reference/Makefile.am: * doc/reference/rhythmbox.types: make distcheck work again * doc/reference/tmpl/eggnotificationbubble.sgml: * doc/reference/tmpl/eggtrayicon.sgml: * doc/reference/tmpl/rb-debug.sgml: * doc/reference/tmpl/rb-entry-view.sgml: * doc/reference/tmpl/rb-enums.sgml: * doc/reference/tmpl/rb-metadata.sgml: * doc/reference/tmpl/rb-new-station-dialog.sgml: * doc/reference/tmpl/rb-playlist-manager.sgml: * doc/reference/tmpl/rb-refstring.sgml: * doc/reference/tmpl/rb-shell-player.sgml: * doc/reference/tmpl/rb-shell-preferences.sgml: * doc/reference/tmpl/rb-shell.sgml: * doc/reference/tmpl/rb-song-info.sgml: * doc/reference/tmpl/rb-station-properties-dialog.sgml: * doc/reference/tmpl/rb-statusbar.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb-query-model.sgml: * doc/reference/tmpl/rhythmdb.sgml: update generared api doc stuff 2006-04-16 James Livingston patch by: Christian Kirbach * po/LINGUAS: don't split the variable across two lines, as it breaks the build. Fixes bug 338625. 2006-04-15 James Livingston * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property): add a "sourcelist-model" gobject property. 2006-04-14 William Jon McCann * .cvsignore: * backends/.cvsignore: * backends/gstreamer/.cvsignore: * bindings/.cvsignore: * bindings/python/.cvsignore: * help/es/.cvsignore: * metadata/.cvsignore: * plugins/.cvsignore: * plugins/audioscrobbler/.cvsignore: * plugins/lirc/.cvsignore: * plugins/pythonconsole/.cvsignore: * plugins/sample-python/.cvsignore: * plugins/sample/.cvsignore: * shell/.cvsignore: * widgets/libsexy/.cvsignore: Make CVS ignore files. 2006-04-14 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor): make the track-loading thread hold a reference on the source, so it doesn't explode if the cd is removed before it is done. Fixes bug 337237. 2006-04-14 James Livingston * bindings/python/override_common.c: (_helper_unwrap_pointer_pylist): * bindings/python/override_common.h: * bindings/python/rb.override: * bindings/python/rhythmdb.override: Bind some more functions and virtual functions. * shell/rb-shell.c: (rb_shell_select_source): * shell/rb-source-header.c: (rb_source_header_set_source_internal): * sources/rb-audiocd-source.c: * sources/rb-auto-playlist-source.c: (impl_get_search_actions): * sources/rb-browser-source.c: (impl_get_search_actions): * sources/rb-iradio-source.c: (impl_get_ui_actions): * sources/rb-play-queue-source.c: (impl_get_ui_actions): * sources/rb-playlist-source.c: (impl_get_ui_actions): * sources/rb-podcast-source.c: (impl_get_ui_actions), (impl_get_search_actions): * sources/rb-static-playlist-source.c: (impl_get_search_actions): Make the impl_get_ui_actions and impl_get_search_actions functions return lists that contain copies of the strings, instead of constant ones. Needed to bindings 2006-04-14 James Livingston * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: fix the method argument format specifiers. 2006-04-14 James Livingston * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: * rhythmdb/rhythmdb.c: (rhythmdb_entry_get), (entry_to_rb_metadata), (record_entry_change), (rhythmdb_entry_set_visibility): * rhythmdb/rhythmdb.h: * shell/rb-shell.c: (rb_shell_get_song_properties): change rhythmdb_entry_get to take the db as the first parameter. Fixes the python bindings of it. The rhythmdb_entry_get_* ones are left the same since they are used in too many places, and not in the Python bindings. 2006-04-13 William Jon McCann * lib/rb-debug.c: (_rb_profile_log): * plugins/rb-plugins-engine.c: (rb_plugins_engine_init): * rhythmdb/rhythmdb.c: (rhythmdb_load): * shell/main.c: (main): * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_set_visibility), (rb_shell_sync_window_state), (rb_shell_present): Fix profile output indentation. Add more profiling points. Fixes part of #338114 2006-04-13 James Livingston * shell/rb-shell.c: (rb_shell_source_deleted_cb): deal with the library source being deleted, by setting the active source to NULL. From bug 338116. 2006-04-12 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): Update the last-seen string when hiddenness changes. 2006-04-12 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): fix an issue which caused the first-seen time to be reset when a metadata load was done. Fixes bug 336874. * shell/rb-shell.h: remove old function declaration. * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: Fix some python binding stuff. 2006-04-11 James Livingston * shell/rb-shell.c: (rb_shell_sync_toolbar_state), (rb_shell_sync_smalldisplay): fix toolbar-style/small-mode interaction. Fixes bug 337999. 2006-04-11 James Livingston patch by: Christohpe Fergeau to fix building without track transfer. Fixes bug 338056. * shell/Makefile.am: 2006-04-11 Jonathan Matthew * widgets/Makefile.am: Fix automake complaints about LIBSEXY_LIBS 2006-04-10 William Jon McCann * lib/rb-debug.c: (rb_profiler_free), (profile_add_indent), (_rb_profile_log): * lib/rb-debug.h: * shell/rb-shell.c: (construct_db), (construct_widgets), (construct_sources), (construct_load_ui), (rb_shell_constructor): Add profiling. Fixes #337387 2006-04-10 William Jon McCann * sources/rb-play-queue-source.c (rb_play_queue_source_track_info_cell_data_func): * widgets/rb-header.c: Use italics for artist and album. Fixes #336748 2006-04-10 James Livingston * Makefile.am: * backends/gstreamer/Makefile.am: * configure.ac: * data/glade/library-prefs.glade: * shell/Makefile.am: * shell/rb-removable-media-manager.c: * shell/rb-removable-media-manager.h: * sources/Makefile.am: * sources/rb-audiocd-source.c: * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (impl_get_config_widget), (rb_library_source_preferences_sync), (impl_can_paste): add a --enable-track-transfer configure option, abd make cd ripping disabled by default. * shell/rb-source-header.c: * sources/rb-source.c: (rb_source_class_init), (rb_source_delete_thyself), (default_get_entry_view): * lib/rb-glade-helpers.c: * shell/rb-shell.c: (rb_shell_view_queue_as_sidebar_changed_cb): Fix some compiler warnings, and also bug 337427. 2006-04-10 James Livingston * shell/rb-shell-player.c: (rb_shell_player_shuffle_changed_cb), (rb_shell_player_repeat_changed_cb): don't fail to set the play order if the gconf key is missing. Fixes bug 337742. 2006-04-10 James Livingston patch by: Alex Lancaster to fix build problems I caused with a commit yesterday. Fixed bug 337806. * daapsharing/rb-daap-mdns-browser-howl.c: (rb_daap_mdns_browser_class_init): * podcast/Makefile.am: * rhythmdb/Makefile.am: * widgets/eggtrayicon.h: 2006-04-09 Steve Frécinaux * configure.ac: * po/LINGUAS: Move ALL_LANGUAGES content to the po/LINGUAS file, to make our translators' life easier. 2006-04-09 James Livingston * bindings/python/rb.defs: * bindings/python/rb.override: add bindings for most RBSource virtual functions. * sources/rb-source.h: * sources/rb-source.c: (rb_source_class_init): make impl_get_browser_key return a non-consht string, since Python can't really give us constant strings. * shell/rb-source-header.c: (rb_source_header_finalize), (rb_source_header_set_source_internal): * sources/rb-daap-source.c: (rb_daap_source_get_browser_key): * sources/rb-iradio-source.c: (impl_get_browser_key): * sources/rb-library-source.c: (impl_get_browser_key): * sources/rb-playlist-source.c: * sources/rb-browser-source.c: (rb_browser_source_constructor), (rb_browser_source_state_prefs_sync): * sources/rb-podcast-source.c: (impl_get_browser_key): Adapt to the above change. * plugins/sample-python/sample-python.py: show how to add a new source. 2006-04-09 James Livingston * daapsharing/Makefile.am: * daapsharing/rb-daap-connection.c: (rb_daap_connection_class_init): * daapsharing/rb-daap-marshal.list: * daapsharing/rb-daap-mdns-browser-avahi.c: (rb_daap_mdns_browser_class_init): * lib/rb-marshal.list: * player/Makefile.am: * player/rb-recorder-gst.c: (rb_recorder_class_init): * player/rb-recorder-marshal.list: * podcast/Makefile.am: * podcast/rb-podcast-manager.c: (rb_podcast_manager_class_init): * podcast/rb-podcast-marshal.list: * rhythmdb/Makefile.am: * rhythmdb/rhythmdb-marshal.list: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init): * rhythmdb/rhythmdb.c: (rhythmdb_class_init): merge all the marshalers into one file, as there is no point having several of them. 2006-04-09 James Livingston * lib/Makefile.am: * lib/rb-enums.h: * widgets/Makefile.am: * widgets/eggnotificationbubble.c: * widgets/eggnotificationbubble.h: * widgets/rb-song-info.c: remove lib/rb-enums.h and widgets/eggnotificationbubble.{c,h}, since they aren't used any more * rhythmdb/rhythmdb-property-model.h: * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb.h: * shell/rb-playlist-manager.h: * widgets/rb-cell-renderer-pixbuf.h: * widgets/rb-cell-renderer-rating.h: * widgets/rb-rating.h: fix the prototypes of various class-closures. 2006-04-09 Jonathan Matthew * widgets/libsexy/Makefile.am: Actually use internal libsexy headers, so we can build without a system-wide installed copy. 2006-04-09 James Livingston * data/glade/general-prefs.glade: * data/rhythmbox.schemas: * lib/rb-glade-helpers.c: (rb_glade_boldify_label), (rb_combo_box_hyphen_separator_func): * lib/rb-glade-helpers.h: * lib/rb-preferences.h: * shell/rb-shell-preferences.c: (rb_shell_preferences_init), (rb_shell_preferences_sync), (rb_shell_preferences_toolbar_style_cb), (rb_shell_preferences_browser_views_activated_cb): * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_sync_toolbar_state), (toolbar_state_changed_cb): Allow the overriding of the toolbar style, as the HIG suggests. Fixes bug 336797. 2006-04-09 James Livingston * sources/rb-audiocd-source.c: (entry_set_string_prop): validate the data that MusicBrainz returns to us. Last part of bug 334167. 2006-04-09 James Livingston * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): fix a crasher if xmlCreateMemoryParserCtxt returns NULL. Fixes bug 336842. 2006-04-09 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_rows_reordered_cb): update the entry view properly when the rows are reordered. Fixes bug 337019. 2006-04-09 James Livingston * configure.ac: * widgets/Makefile.am: * widgets/libsexy/Makefile.am: * widgets/libsexy/sexy-icon-entry.c: * widgets/libsexy/sexy-icon-entry.h: add an internal copy of part of libsexy, and allow building against it or a system-wide installed copy. * widgets/rb-search-entry.c: (rb_search_entry_init), (rb_search_entry_changed_cb): use libsexy to add a clear button to the search box. Fixes bug 128109. 2006-04-09 James Livingston patch by: Alex Lancaster * widgets/rb-entry-view.c: (rb_entry_view_init), (rb_entry_view_finalize), (rb_entry_view_constructor): use the Play and Pause icons rather than the volume ones in the Now Playing column. Closes bug 336482. 2006-04-08 James Livingston * bindings/python/override_common.h: * bindings/python/rb.override: * bindings/python/rhythmdb.override: bind some more functions 2006-04-08 Jonathan Matthew * metadata/rb-metadata-dbus-service.c: (_send_error): Send NULL error messages as empty strings, so _NOT_AUDIO_IGNORE errors are sent properly and we don't get 'method doesn't exist' messages from dbus instead. 2006-04-08 James Livingston * bindings/python/override_common.h: * bindings/python/override_common.c: (_helper_wrap_pointer_glist), (_helper_wrap_boxed_glist), (_helper_unwrap_string_pylist): add some more utility functions for C<->Python conversions * widgets/rb-entry-view.c: (rb_entry_view_column_get_type), (rb_entry_view_state_get_type): * widgets/rb-entry-view.h: make the colume type and entry view state GTypes * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: bind RBEntryView, RBPropertyView and RBSource. 2006-04-08 James Livingston * backends/gstreamer/rb-encoder-gst.c: (bus_watch_cb): add a missing initialiser for a GError * sources/rb-source.c: (rb_source_eof_type_get_type): * sources/rb-source.h: add a GType for RBSourceEOFType * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: bind RBSource and RBSourceList 2006-04-07 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_get_property), (rb_shell_player_get_active_source), (rb_shell_player_set_playing_source_internal): * shell/rb-shell-player.h: Change 'playing-from-queue' from being a signal to being a property. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_playing_from_queue_cb), (rb_shell_view_queue_as_sidebar_changed_cb), (rb_shell_jump_to_entry_with_source): When the queue side pane is used, make 'jump to current' jump to the entry in the registered source for its type, rather than in the queue, and show it as playing in that source. * sources/rb-sourcelist.c: (rb_sourcelist_set_playing_source): * sources/rb-sourcelist.h: Remove the 'preempted source' stuff, since it wasn't doing anything anyway. 2006-04-07 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post), (download_progress_cb): Canonicalise downloaded file location before setting the mountpoint property of the corresponding entry. Fixes #337287 and a couple of memory leaks. 2006-04-06 Jonathan Matthew * metadata/rb-metadata-dbus-service.c: (test_can_save), (test_load), (main): Call g_set_prgname, report errors more usefully in test mode. * metadata/rb-metadata-gst.c: (rb_metadata_gst_typefind_cb), (rb_metadata_load): Don't ignore the have-type signal for non-audio files. Run the event loop when the state change fails so we get the error messages from the bus. Fixes #336921. 2006-04-05 William Jon McCann * data/art/Makefile.am: Install media-eject. * lib/rb-stock-icons.c (rb_stock_icons_init): Check return value of rb_file. Fixes #337209 2006-04-05 Jonathan Matthew Patch by: William Jon McCann * metadata/test-metadata.c: (main): Use GOption to parse arguments. * podcast/rb-podcast-manager.c: (rb_podcast_manager_save_metadata): Fix GError leak. 2006-04-04 William Jon McCann * backends/gstreamer/rb-encoder-gst.c (add_tags_from_entry): Don't try to add a date when we don't have one. Fixes #336741. Also fix variable declaration in middle of block. 2006-04-04 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_playpause): Don't crash if source is already NULL. Hackishly fixes bug #336912. 2006-04-02 James Livingston * metadata/rb-metadata-gst.c: (rb_metadata_gst_typefind_cb): fix the inverted logic causing imports to fail. 2006-04-02 Jonathan Matthew * shell/main.c: (main): Fix dbusless build. 2006-04-02 Christophe Fergeau * player/rb-recorder-gst.c: fix packing of the C struct holding a wav header for non-gcc compilers (not tested much, was only written according to docs) 2006-04-02 Jonathan Matthew * shell/main.c: (main): Check if we got a dbus connection before trying to create a proxy for the shell object. Fixes #336634. 2006-04-02 Jonathan Matthew * doc/reference/Makefile.am: * plugins/lirc/rb-lirc-plugin.c: (rb_lirc_plugin_class_init): * shell/rb-source-header.c: * sources/rb-generic-player-source.c: (default_transform_playlist_uri): Fix various build issues. Patch approximately 50% by Alex Lancaster 2006-04-02 Jonathan Matthew * configure.ac: Detect LIRC. * plugins/Makefile.am: * plugins/lirc/Makefile.am: * plugins/lirc/lirc.rb-plugin.desktop.in: * plugins/lirc/rb-lirc-plugin.c: LIRC plugin. * shell/Makefile.am, shell/rb-remote.c, shell/rb-remote.h: Remove obsolete files. 2006-04-02 James Livingston * sources/rb-generic-player-source.c: (default_transform_playlist_uri): consider playlist paths as relative to the volume root by default, since that is what most players use. 2006-04-02 James Livingston * lib/rb-util.c: (rb_mime_get_friendly_name): * lib/rb-util.h: add helper function to get the "friendly" name for a mime-type * metadata/rb-metadata-gst.c: (rb_metadata_init), (rb_metadata_gst_typefind_cb), (rb_metadata_gst_unknown_type_cb): give the user better error messages about undecodable streams, using the "friendly" name if possible. Fixes bug 128109. 2006-04-02 James Livingston * backends/gstreamer/rb-encoder-gst.c: (progress_timeout_cb), (start_pipeline): fix building with gstreamer 0.8 2006-04-02 James Livingston * sources/rb-podcast-source.c: (impl_delete), (rb_podcast_source_cmd_delete_feed), (rb_podcast_source_cmd_update_feed): copy the list before traversing it, since it may change during traversal. Fixes bug 336204. 2006-04-01 James Livingston * data/art/media-eject.png: add the media-eject icon from Banshee (BSD-licensed), for use when the user's icon theme doesn't have one. * lib/rb-stock-icons.c: (rb_stock_icons_init): use the above. Fixes bug 334897. 2006-04-01 James Livingston * shell/rb-shell-player.h: * shell/rb-shell-player.c: (rb_shell_player_play), (rb_shell_player_stop), (rb_shell_player_pause), (filter_mmkeys): add new rb_shell_player_{play,pause} functions, so everyone doesn't have to do rb_shell_player_playing followed by rb_shell_player_playpause. * shell/rb-shell.c: (rb_shell_sync_smalldisplay), (rb_shell_get_playlist_manager_path), (rb_shell_get_ui_manager): * shell/rb-shell.h: add rb_shell_get_ui_manager. * bindings/python/rb.defs: bind the above to Python, and remove some useless stuff from the bindings. 2006-04-01 James Livingston * backends/gstreamer/rb-encoder-gst.c: (add_tags_from_entry): add disc number tag. * shell/rb-shell.c: * shell/rb-shell.h: export rb_shell_get_source_by_entry_type. * sources/rb-daap-source.c: (rb_daap_source_class_init): set _can_copy to true. * sources/rb-iradio-source.c: (rb_iradio_source_class_init): * sources/rb-podcast-source.c: (rb_podcast_source_class_init): reorder method assigning, so it's understandable * sources/rb-library-source.c: (rb_library_source_class_init), (impl_paste): rather than hard-coding the types to ignore, use rb_source_can_copy. 2006-03-31 Jonathan Matthew * sources/rb-library-source.c: (rb_library_source_preferences_sync): Don't crash if no audio profile is selected and the gconf schemas are not installed. 2006-03-31 James Livingston * plugins/rb-python-module.c: (rb_python_module_load): add a missing "*" which caused compilation to fail 2006-03-31 James Livingston * configure.ac: * Makefile.am: * backends/Makefile.am: * backends/gstreamer/Makefile.am: * backends/gstreamer/rb-encoder-gst.c: * backends/gstreamer/rb-encoder-gst.h: * backends/rb-encoder.c: * backends/rb-encoder.h: add a interface for transcoding, and a GStreamer implementation of it (based on Sound-Juicer's code). * shell/Makefile.am: * shell/rb-removable-media-manager.c: (rb_removable_media_manager_class_init), (rb_removable_media_manager_init), (rb_removable_media_manager_dispose), (rb_removable_media_manager_finalize), (rb_removable_media_manager_scan), (emit_progress), (error_cb), (progress_cb), (completed_cb), (do_transfer), (rb_removable_media_manager_queue_transfer), (copy_entry), (rb_removable_media_manager_cmd_copy_tracks): * shell/rb-removable-media-manager.h: use the encoder interface to perform transfers of entries to other locations * shell/rb-shell-player.c: (open_location_thread): * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property), (rb_shell_constructor), (rb_shell_transfer_progress_cb), (rb_shell_quit): * shell/rb-statusbar.c: (rb_statusbar_set_progress): display transfer progress in the status bar. * shell/rb-shell-preferences.c: (rb_shell_preferences_init), (rb_shell_preferences_sync), (rb_shell_preferences_browser_views_activated_cb): * data/glade/general-prefs.glade: move the browser views setting from the library tab to the general one. * data/glade/library-prefs.glade: add settings for the layout of the user's library, and their preferred encoding format (e.g. for CD ripping). * lib/rb-preferences.h: * data/rhythmbox.schemas: add keys for the above options (and a few other minor ones) * rhythmdb/rhythmdb.c: (rhythmdb_entry_example_new): * rhythmdb/rhythmdb.h: add a new function for creating an "example" entry, that isn't inserted into the database. * sources/rb-audiocd-source.c: (rb_audiocd_source_class_init), (rb_audiocd_create_track_entry): * data/ui/rhythmbox-ui.xml: add a toolbar button for ripping audio cds, and set the mime-type of audio cd tracks correctly. * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (rb_library_source_edit_profile_clicked_cb), (impl_get_config_widget), (rb_library_source_preferences_sync), (impl_receive_drag), (rb_library_source_path_changed_cb), (rb_library_source_filename_changed_cb), (rb_library_source_format_changed_cb), (sanitize_path), (filepath_parse_pattern), (layout_example_label_update), (rb_library_source_layout_path_changed), (rb_library_source_layout_filename_changed), (build_filename), (impl_can_paste), (completed_cb), (impl_paste): allow the copying of entries to the library. Large chunks of code for determining the destination file name stolen from Sound-Juicer. * sources/rb-sourcelist-model.c: (path_is_droppable): * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): * sources/rb-source.c: (rb_source_class_init), (rb_source_can_cut), (rb_source_can_paste): * sources/rb-source.h: add a new _can_paste method, and use it (rather than _can_copy) to determine whether we can paste into the source. 2006-03-31 Steve Frécinaux * plugins/rb-python-module.c: allow import of python modules with a '.' (gedit's bug 336403). Patch by Johan Dahlin. 2006-03-31 James Livingston * sources/rb-library-source.c: * sources/rb-library-source.h: * sources/rb-browser-source.c: * sources/rb-browser-source.h: Split RBLibrarySource into two. RBBrowserSource now contains all the stuff for having a source which views a particular entry type (including browsers and searching). RBLibrarySource derives from this, and includes the library-specific stuff, like importing and library watching. Fixes some issues where library-derived sources were doing things that should be library-specific. Fixes bug 335185. * data/ui/rhythmbox-ui.xml: * sources/Makefile.am: modifications for the above * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_get_paned_key): * sources/rb-daap-source.h: * sources/rb-ipod-source.c: (rb_ipod_source_constructor): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): * sources/rb-removable-media-source.h: derive from RBBrowserSource instead of RBLibrarySource. 2006-03-31 James Livingston * rhythmdb/rhythmdb-query-model.c: use guin64 instead of guint, which I buggered up when changing from GnomeVFSFileSize. 2006-03-30 James Livingston * configure.ac: lower pygtk deps to 2.6, and add a makefile variable for "-Wno-error". * bindings/python/rb.override: * bindings/python/Makefile.am: make the RB python bindings depend on the RhythmDB ones, and use "-Wno-error" since the machine-generated code sometimes emits warnings. * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_error_get_type): * shell/rb-shell-player.h: * bindings/python/rb.defs: add bindings for RBShellPlayer * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_query_type_get_type), (rhythmdb_prop_type_get_type), (rhythmdb_entry_get_type), (rhythmdb_query_get_type): * rhythmdb/rhythmdb.h: * shell/rb-shell.c: (rb_shell_get_song_properties): * widgets/rb-entry-view.c: (propid_from_name): * widgets/rb-property-view.c: (rb_property_view_class_init): * bindings/python/rhythmdb.defs: make RhythmDBQuery a type (rather than just plain GPtrArray, and add bindings for it. * bindings/python/rhythmdb.override: wrap some functions that use GValues 2006-03-30 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): Only watch directories from which entries of type SONG have been added. 2006-03-29 Jonathan Matthew * widgets/rb-library-browser.c: (rb_library_browser_set_selection): No need to restore the selection after rebuilding the child model, since that can't have changed the selection. 2006-03-29 James Livingston * bindings/python/override_common.c: * bindings/python/override_common.h: add some for missing files to cvs. 2006-03-29 James Livingston * configure.ac: * bindings/python/Makefile.am: remove usage of gtksourceview, it was copied from gedit's autofoo and we don't need it * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: add missing files to cvs 2006-03-29 Jonathan Matthew * data/ui/rhythmbox-ui.xml: Add 'add to queue' menu item. * metadata/rb-metadata-dbus-service.c: (main): Call rb_debug_init before running any of the debug/test modes. * plugins/rb-plugins-engine.c: (rb_plugins_engine_load_all): Make plugin loading work when running uninstalled from the shell/ directory. 2006-03-29 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_sync), (rhythmdb_property_model_column_get_type): * rhythmdb/rhythmdb-property-model.h: make the column enum a GType * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init): * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_compute_status_normal), (rhythmdb_get_property_type), (rhythmdb_entry_get_type): * rhythmdb/rhythmdb.h: make RhythmDBEntry a GType. * widgets/rb-query-creator-properties.c: * widgets/rb-song-display-box.c: #include , which was missing. * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: * plugins/rb-python-module.c: (rb_python_module_init_python): add Python bindings for RhythmDB. 2006-03-29 James Livingston * shell/rb-shell.c: (rb_shell_constructor): don't activate DAAP sharing when using --no-registration 2006-03-29 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_reapply_query): Don't remove entries while iterating, as it breaks the sequence nodes. Instead, collect a list of removed entries and process it after iterating the sequence. Fixes #334642. 2006-03-29 James Livingston * plugins/rb-plugin-manager.c: (active_toggled_cb), (row_activated_cb), (plugin_manager_toggle_all): * sources/rb-sourcelist.c: (rb_sourcelist_source_to_iter), (rb_sourcelist_visible_source_to_iter), (row_activated_cb), (button_press_cb), (source_name_edited_cb): * widgets/rb-property-view.c: (rb_property_view_set_property), (rb_property_view_post_row_deleted_cb), (rb_property_view_row_activated_cb), (rb_property_view_selection_changed_cb), (rb_property_view_button_press_cb): fix warnings with GTK HEAD, about ignoring the return value of gtk_tree_model_get_iter. Fixes bug 335516. 2006-03-29 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_received): Increment the reference count for entries added by drag and drop. Fixes #336045. 2006-03-27 Jonathan Matthew * daapsharing/rb-daap-connection.c: (entry_set_string_prop): * metadata/rb-metadata-gst.c: (rb_metadata_gst_load_tag): Ignore invalid UTF-8 strings. Fixes most of #334167. 2006-03-27 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_sync_window_state): fix a maximise-realise race that would cause some widgets to be resized after we had explicity set theri size. Hopefully fixes bug 331927. 2006-03-27 James Livingston * plugins/rb-plugin-manager.c: (active_toggled_cb), (row_activated_cb), (plugin_manager_set_active), (plugin_manager_toggle_active), (plugin_manager_toggle_all): update configure button sensitivity when a plugin is enabled/disabled. 2006-03-27 James Livingston * data/glade/plugins.glade: turn from a GtkDialog to a GtkWindow to stop warnings, only the vbos is used anyway * plugins/rb-plugins-engine.c: (garbage_collect_cb), (rb_plugins_engine_init), (rb_plugins_engine_shutdown): run gabage collection every now an then. * plugins/rb-python-plugin.c: (rb_python_object_finalize): don't crash if we are finalising because the python object couldn't be created. * plugins/rb-python-module.c: (rb_python_module_new_object): return NULL if the python-side object couldn't be created. Stops crashes when the object is later used when it doesn't exist in Python. (run_gc), (rb_python_garbage_collect), (finalise_collect_cb), (rb_python_shutdown): do better garbage collection when shutting down. Fixes the problem where Python was holding a reference to the shell, causing RB not to exit. 2006-03-27 James Livingston * configure.ac: don't define HAVE_LIBSOUP when we don't. Fixes bug 336131. 2006-03-27 James Livingston * data/iradio-initial.pls: Change the AfterHours DJ stream address. From bug 334829. 2006-03-26 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_sync_library_location): set the library location list to NULL after we free it. Fixes bug 336047. 2006-03-26 James Livingston patch by: Alex Lancaster * sources/rb-audiocd-source.c: use the release-date that MusicBrainz supplies. Fixes bug 335947. 2006-03-25 James Livingston * data/glade/audioscrobbler-prefs.glade: * shell/rb-audioscrobbler.c: (rb_audioscrobbler_enabled_check_changed_cb): move and rename the "submit songs" checkbox, and make it not disable username/password entry. This will be needed when we support other last.fm stuff (profile access, radio, etc). 2006-03-24 Dennis Cranston * widgets/bacon-volume.c: (bacon_volume_scale_value_changed): Volume should not display stock_volume-0 for volume > 0. Fixes bug 335777. 2006-03-24 James Livingston * shell/rb-shell-player.c: (rb_shell_player_set_property), (rb_shell_player_sync_play_order), (rb_shell_player_play_order_update_cb), (actually_set_playing_source): update the next/previous availablility in places where it was missing. Fixes bug 335490. 2006-03-24 James Livingston * lib/rb-glade-helpers.c: (rb_glade_boldify_label): don't crash if we can't find the widget * lib/rb-util.c: (rb_uri_list_parse): * lib/rb-util.h: add function for parsing a URI list into strings. * metadata/Makefile.am: make the metdata helper build when linking with --as-needed * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post): use g_mkdir_with_parents instead of coding our own. * podcast/rb-podcast-parse.c: (rb_set_channel_value): prefer over , instead of using whichever comes last. * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_entry_allocate): remove the "magic" field, as we don't ever check it (to detect corruption). Saves a bit of memory. 2006-03-24 Jonathan Matthew * lib/rb-file-helpers.c: (escape_extra_gnome_vfs_chars), (rb_uri_handle_recursively_cb), (rb_canonicalise_uri): Escape '&' and '=' in the paths we get back from gnome_vfs_directory_visit. Fixes #333998 a bit more. 2006-03-22 Jonathan Matthew * shell/rb-shell.c: (rb_shell_constructor): Issue startup notification after creating the main window, so notification is issued whether the window is visible or not. Fixes #335086. 2006-03-22 Jonathan Matthew * sources/rb-auto-playlist-source.c: (impl_search), (rb_auto_playlist_source_query_complete_cb), (rb_auto_playlist_source_do_query): * sources/rb-library-source.c: (impl_search), (rb_library_source_query_complete_cb), (rb_library_source_do_query): Defer subset searches (where text is appended to an existing search) until the original query is complete. 2006-03-21 Ryan P Skadberg patch by: Jonathan Matthew * rhythmdb/rb-refstring.c: (rb_refstring_get_folded), (rb_refstring_get_sort_key): fixes for strict-aliasing 2006-03-21 James Livingston * shell/rb-shell.c: (rb_shell_load_uri): don't add a new playlist when importing a single file. Fixes bug 335307. 2006-03-21 James Livingston * shell/Makefile.am: remove the reference to backends/ that I accidently included. 2006-03-21 James Livingston patch by: Brian Cameron to fix comilation with Forte (on Solaris). Closes bug 335318. * configure.ac: * lib/Makefile.am: * player/rb-recorder-gst.c: * podcast/rb-podcast-parse.c: * remote/bonobo/Makefile.am: * remote/rb-remote-proxy.c: (rb_remote_proxy_set_repeat): * rhythmdb/rhythmdb-query-model.c: (idle_process_update), (rhythmdb_query_model_add_entry), (rhythmdb_query_model_add_results): * rhythmdb/rhythmdb.c: (rhythmdb_entry_foreach): * rhythmdb/rhythmdb.h: * shell/Makefile.am: * sources/rb-playlist-source-recorder.c: (get_write_speeds), (update_speed_combobox): * sources/rb-sourcelist-model.c: 2006-03-21 James Livingston Patch by: Alex Lancaster * player/Makefile.am: * shell/Makefile.am: work correctly with a separate build root. 2006-03-21 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_monitor_uri_path): don't crash if we get handed NULL. 2006-03-21 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry): Only create ignore entries when importing into the library. Ignore entries for files in removable media sources don't help. 2006-03-21 Jonathan Matthew * shell/rb-source-header.c: (rb_source_header_focus_search_box): * shell/rb-source-header.h: * widgets/rb-search-entry.c: (rb_search_entry_grab_focus): * widgets/rb-search-entry.h: Add functions to make the search box grab focus. * shell/rb-shell.c: (rb_shell_cmd_view_all): Focus the search box after handling the 'view all' action. 2006-03-20 Jonathan Matthew * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_execute_multi_stat_info_cb), (rhythmdb_start_action_thread), (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat), (queue_stat_uri), (rhythmdb_execute_load), (action_thread_main): Collect all the get_file_info requests on startup into one gnome-vfs job to reduce overhead and avoid contention for the rhythmdb lock. Add a new method to call when all initial query models are set up. * shell/rb-shell.c: (idle_handle_load_complete): Call rhythmdb startup complete function when we've loaded all the playlists. Fixes #334106. 2006-03-20 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_set_property), (rb_entry_view_selection_changed_cb), (rb_entry_view_have_complete_selection): make has_complete_selection not slow. Fixes a performance issue I added a week or so ago. 2006-03-20 James Livingston * shell/rb-shell-player.c: (volume_pre_unmount_cb): check for NULL before passing to strcmp. From bug 334559. 2006-03-20 Jonathan Matthew * configure.ac: * lib/Makefile.am: * lib/rb-proxy-config.c: * lib/rb-proxy-config.h: Add a new object to watch the HTTP proxy configuration and emit signals when it changes. * shell/rb-audioscrobbler.c: * shell/rb-audioscrobbler.h: Use rb-proxy-config to watch HTTP proxy configuration. * shell/rb-shell.c: Construct rb-proxy-config object on startup, and remove all audioscrobbler references. * shell/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: Move all audioscrobbler code into the plugin. We should move rb-audioscrobbler.* from shell/ to plugins/audioscrobbler/ at some point. Don't use a private data structure in the plugin, since the class definition isn't in a header file. Fixes #335091. 2006-03-20 James Livingston * shell/rb-shell-player.c: (rb_shell_player_play_order_update_cb): don't enable Next if the source has an EOS type other than RB_SOURCE_EOF_NEXT. Fixes bug 315120. 2006-03-20 James Livingston * widgets/rb-song-info.c: (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb): deal with there being no next/previous entry. (rb_song_info_query_model_inserted_cb), (rb_song_info_query_model_deleted_cb), (rb_song_info_query_model_reordered_cb), (rb_song_info_query_model_changed_cb): monitor the query for changes, to update the button status. Fixes bug 333293. 2006-03-20 James Livingston * shell/rb-shell.c: (rb_shell_set_visibility): fix minor sizing issue caused by my last commit 2006-03-20 James Livingston * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: add python bindings of RBRemoteProxy * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_set_visibility), (rb_shell_window_delete_cb): change tray-icon detection slightly 2006-03-19 Steve Frécinaux * data/ui/rhythmbox-ui.xml: * shell/rb-shell.c: Add an empty Tool Menu (hidden by default) containing placeholders for plugins. * configure.ac: * plugins/Makefile.am: * plugins/pythonconsole/Makefile.am: * plugins/pythonconsole/pythonconsole.py: * plugins/pythonconsole/pythonconsole.rb-plugin.desktop.in: Python Console plugin 2006-03-19 Jonathan Matthew * lib/rb-file-helpers.c: (rb_canonicalise_uri): Extra step to encode '&' and '=' to match what gnome-vfs does internally. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (rhythmdb_tree_save): Increment rhythmdb xml version to 1.2, and force another uri re-canonicalisation when loading v1.1 databases. Fixes bug #333998. 2006-03-19 Jonathan Matthew * daapsharing/rb-daap-mdns-browser-avahi.c: (client_cb), (avahi_client_init), (browse_cb): * daapsharing/rb-daap-mdns-publisher-avahi.c: (client_cb), (avahi_client_init): Fix compilation with Avahi 0.5.x (bug #334551). 2006-03-19 James Livingston Add Increase/Decrease Volume menu items and keybindings. From bug 123383. * data/ui/rhythmbox-ui.xml: * shell/rb-shell-player.c: (rb_shell_player_constructor), (rb_shell_player_init), (rb_shell_player_cmd_volume_up), (rb_shell_player_cmd_volume_down), (rb_shell_player_sync_volume): 2006-03-19 James Livingston patch by: Mikhail Zabaluev * shell/Makefile.am: fix the link order, so that we compile with "LDFLAGS=-Wl,--as-needed". Fixes bug 334852. 2006-03-19 James Livingston patch by: Adam Petaccia * data/ui/rhythmbox-ui.xml: move preferences below "configure plugins". Fixes bug 335037. 2006-03-18 James Livingston * rhythmdb/rb-refstring.c: (rb_refstring_get_folded), (rb_refstring_get_sort_key): fix type-punning warnings. Closes bug 332992. * widgets/rb-header.c: don't make artist/album info in the header the small size, since it's hard to read. 2006-03-16 William Jon McCann * rhythmdb/rhythmdb.c (rhythmdb_init): Make deleted_entries a hash. (rhythmdb_finalize): Don't leak the hash tables. (rhythmdb_emit_entries_deleted_idle, process_deleted_entries_cb) (rhythmdb_commit_internal): Make sure to process the deletions. (rhythmdb_entry_delete): Use a hash. * podcast/rb-podcast-manager.c: Random analness about char* (rb_podcast_manager_remove_feed): Add debugging. (rb_podcast_manager_db_entry_deleted_cb): Ditto. Check the result of gnome_vfs_unlink. Don't leak a uri. Fixes #334786 2006-03-18 James Livingston * NEWS: update NEWS file 2006-03-17 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_prop_changed_cb): Remove entries from the hash table after processing visible->hidden changes. 2006-03-16 William Jon McCann * sources/rb-daap-source.c (connection_connected_cb) (connection_disconnected_cb): Add debug. (rb_daap_source_get_headers): Check for NULL connection. * daapsharing/rb-daap-src.c (rb_daap_src_open): Check return value of rb_daap_source_get_headers. Fixes #332089 2006-03-16 Jonathan Matthew * widgets/rb-library-browser.c: (rb_library_browser_set_selection): Restore the selection after rebuilding the child model, so the selection is shown correctly after using the 'browse this album/artist/genre' menu items. 2006-03-15 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_set_property): Clear the selection before changing the active model. Fixes crash reported in bug 334549. 2006-03-15 James Livingston * shell/rb-tray-icon.c: (rb_tray_icon_constructor), (rb_tray_icon_sync_action): * widgets/eggtrayicon.c: (egg_tray_icon_send_message), (egg_tray_icon_cancel_message), (egg_tray_icon_notify): remove support for non-libnotify notification bubbles. Fixes bug 331721. 2006-03-15 James Livingston Add search-bar options to playlists. Fixes bug 334407. * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (rb_auto_playlist_source_constructor), (rb_auto_playlist_source_do_query), (impl_get_search_actions), (search_action_to_prop), (search_action_changed): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_constructor), (construct_query_from_selection), (impl_get_search_actions), (search_action_to_prop), (search_action_changed): 2006-03-14 William Jon McCann * shell/rb-source-header.c (rb_source_header_set_source_internal): Remove broken attempt at making the search bar buttons not homogeneous. It wasn't working and was causing some UI sizing weirdness. 2006-03-14 William Jon McCann * sources/rb-static-playlist-source.c (rb_static_playlist_source_dispose): Chain up to parent's dispose instead of finalize. Fixes #334479. 2006-03-14 William Jon McCann * widgets/rb-header.c (rb_header_sync): Escape album and artist before adding to markup. 2006-03-14 William Jon McCann * shell/rb-shell-player.c: (rb_shell_player_sync_with_source): * widgets/rb-header.c: (rb_header_class_init), (rb_header_init), (rb_header_set_property), (rb_header_get_property), (rb_header_sync): Remove the GnomeUrl song links until we can do it properly. Fixes #334453. 2006-03-14 Jonathan Matthew * shell/rb-source-header.c: (rb_source_header_clear_search): Remove the stored search text from the hash table, so it doesn't reappear after switching to another source and back. * sources/rb-auto-playlist-source.c: (impl_search): * sources/rb-library-source.c: (impl_search), (impl_reset_filters): * sources/rb-static-playlist-source.c: (impl_search): Make sure all sources treat impl_search(NULL) and impl_search("") the same. Fixes #334525. 2006-03-14 James Livingston Store which thread created new entries, and make rhythmdb_commit only insert the entries for the thread that calls it. This stops one thread calling rhythmdb_commit inserting entries that are half-way through construction by another thread (as happens with audio cds). From bug 330226. * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_emit_entries_added_idle), (process_added_entries_cb), (rhythmdb_commit_internal), (timeout_rhythmdb_commit), (rhythmdb_add_timeout_commit), (rhythmdb_commit), (rhythmdb_entry_insert), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_process_queued_entry_set_event), (rhythmdb_prop_get_type): 2006-03-14 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_dispose), (rhythmdb_query_model_finalize): Move object unrefs from _finalize into _dispose. * shell/rb-play-order.c: (rb_play_order_query_model_changed): Remove extra g_object_ref that was causing query model leaks. * sources/rb-iradio-source.c: (rb_iradio_source_dispose), (rb_iradio_source_constructor), (impl_search), (genre_selected_cb), (genre_selection_reset_cb), (rb_iradio_source_do_query): Remove the cached 'all' query, since it doesn't really help and it makes the code more complicated. Attach the genre property view to the query model build from the search text, so only genres for stations matching the search terms are displayed. Preserve the genre selection across searches. * widgets/rb-library-browser.c: (rb_library_browser_class_init), (rb_library_browser_get_property): Add properties for the input and output models for the browser, and remove the 'changed' signal as we can just use notify::output-model. (ignore_selection_changes), (selection_restore_data_destroy), (query_complete_cb), (restore_selection): Helper functions for preserving selections across query model rebuilds. (rebuild_output_model): New function for creating a query model to use as the display model for a source using the browser. (rebuild_child_model): Add a call to rebuild_output_model, add missing g_object_unrefs, reuse the parent's query model when there's no selection, and use ignore_selection_changes and restore_selection. (rb_library_browser_set_selection): rebuild_child_model emits the changed signal, so no need to do it here. (rb_library_browser_set_model): Add missing g_object_unrefs, and use ignore_selection_changes and restore_selection. * widgets/rb-library-browser.h: Remove 'changed' signal, and add a flag to rb_library_browser_set_model indicating whether the query is asynchronous. * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_dispose): (rb_static_playlist_source_constructor): Add an extra reference on the base model, so it doesn't vanish when we set a new display model based on a search or browser selection. (impl_search): Ensure the search_text field in the source is NULL if the search box is empty. (construct_query_from_selection), (rb_static_playlist_source_do_query): Use the query model constructed from the search as the input model for the browser. (rb_static_playlist_source_browser_changed_cb): Use the browser's output model as the query model for the source. * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_finalize): Free more stuff. (rb_auto_playlist_source_constructor), (rb_auto_playlist_source_browser_changed_cb): Update for rb-library-browser changes, use the browser's output query model as the query model for the source. (impl_reset_filters), (impl_search), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query): Use the query model constructed from the search text as the input to the library browser, and when adding text to an existing search, apply the new query to the existing query model. * sources/rb-library-source.c: (rb_library_source_dispose): (rb_library_source_finalize): Chain dispose up to the parent class. (rb_library_source_constructor): Update for rb-library-browser changes. (impl_search): Ensure search_text is NULL if the search box is empty, and use the subset flag to _do_query if text has been appended to an existing search. (search_action_changed), (impl_reset_filters): (rb_library_source_browser_changed_cb), (rb_library_source_do_query): Use the browser's output model as the query model for the source. Rework library and playlist sources to use a single query chain, and to limit the entries shown in property views based on the search terms. Fixes bug #322787. 2006-03-14 Jonathan Matthew * configure.ac: Enable metadata helper by default, and fix a typo. 2006-03-13 James Livingston Make RBRefStrings lazily create the folded and sort-key strings when they are first used. This will same some memory by not creating ones that are never used, and delaying some of the others to when the user resorts or performs a similar action. Fixes bug 332992. * rhythmdb/rb-refstring.c: (rb_refstring_free), (rb_refstring_system_init), (rb_refstring_new), (rb_refstring_ref), (rb_refstring_get), (rb_refstring_get_folded), (rb_refstring_get_sort_key), (rb_refstring_hash), (rb_refstring_equal): * rhythmdb/rb-refstring.h: * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): 2006-03-12 William Jon McCann * data/ui/rhythmbox-ui.xml: * lib/rb-stock-icons.c: (rb_stock_icons_init): * lib/rb-stock-icons.h: * shell/rb-shell-player.c: * shell/rb-shell.c: (rb_shell_constructor): * shell/rb-source-header.c: (force_no_shadow), (ui_manager_add_widget_cb), (rb_source_header_constructor), (rb_source_header_class_init), (rb_source_header_init), (merge_source_ui_cb), (toolbar_set_homogeneous), (rb_source_header_set_source_internal), (rb_source_header_set_property), (rb_source_header_get_property), (rb_source_header_set_source), (rb_source_header_new), (rb_source_header_filter_changed_cb): * shell/rb-source-header.h: * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_init), (search_action_to_prop), (search_action_changed), (rb_library_source_constructor), (impl_search), (impl_reset_filters), (impl_get_search_actions), (construct_query_from_selection): * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_init), (search_action_to_prop), (search_action_changed), (rb_podcast_source_constructor), (construct_query_from_selection), (impl_get_ui_actions), (impl_get_search_actions): * sources/rb-source.c: (rb_source_class_init), (rb_source_get_ui_actions), (default_get_search_actions), (rb_source_get_search_actions): * sources/rb-source.h: Add a search bar. Fixes #328618 2006-03-12 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal): * shell/main.c: (main): make --no-update not stat files checking for changes, instead of doing nothing. Fixes bug 125177. 2006-03-12 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_thread_parse_feed): * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): * podcast/rb-podcast-parse.h: ask the user before rejecting a feed for having an invalid mime-type. Fixed bug 329813. 2006-03-12 James Livingston Make ide tag-editing work on 0.10, if id3mux 0.10.2 is present. Finally lets us close bug 309609. * metadata/rb-metadata-gst.c: (id3_pad_added_cb), (rb_add_id3_tagger), (rb_metadata_init): make id3 tag editing work on 0.10 * widgets/rb-song-info.c: (rb_song_info_sync_entries): fix the inverted logic of the editable check. 2006-03-12 James Livingston Make API doc generation work again. Fixes bug 334276. * doc/reference/Makefile.am: * doc/reference/tmpl/rb-debug.sgml: * doc/reference/tmpl/rb-druid.sgml: * doc/reference/tmpl/rb-entry-view.sgml: * doc/reference/tmpl/rb-load-failure-dialog.sgml: * doc/reference/tmpl/rb-metadata.sgml: * doc/reference/tmpl/rb-shell.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb.sgml: 2006-03-12 James Livingston * shell/rb-shell-clipboard.c: (rb_shell_clipboard_set_source_internal), (rb_shell_clipboard_sync): don't try to use the source's entry view if it doesn't have one. Fixes bug 331673. * sources/rb-source.c: (rb_source_class_init): provide a default have_url implementation that returns FALSE. 2006-03-12 James Livingston * plugins/audioscrobbler/Makefile.am: don't delete as-powered.png when doing a distclean. Fixes bug 334221. Patch from Alex Lancaster * data/glade/Makefile.am: add plugins.glade. Fixes bug 334201. 2006-03-11 James Livingston * shell/rb-shell.c: (rb_shell_window_state_cb), (rb_shell_set_visibility), (rb_shell_window_configure_cb): don't update the window width/height when iconified. Stops the window changing size when it is restored from the tray, fixing bug 333824. 2006-03-11 James Livingston Try to get cvs to actually add the necessary files for plugin support 2006-03-11 James Livingston Add a plugin framework, with basic support for Python plugins (based on gedit's). Closes bug 330523. * Makefile.am: * shell/Makefile.am: * configure.ac: necessary autofoo. * data/ui/rhythmbox-ui.xml: add Edit->Plugins... * lib/rb-file-helpers.c: (rb_uri_get_dir_name): * lib/rb-file-helpers.h: * data/glade/plugins/glade: * lib/rb-preferences.h: * plugins/*: * bindings/*: plugin framework * plugins/sample/*: * plugins/sample-python/*: sample plugins * plugins/audioscrobbler/*: * shell/rb-audioscrobbler.c: (rb_audioscrobbler_class_init), (rb_audioscrobbler_set_property), (rb_audioscrobbler_gconf_changed_cb): turn audioscrobbler song submission into a plugin. shell/audioscrobbler.* should really be moved, but that sucks with cvs. * shell/rb-shell.h: * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_cmd_preferences), (rb_shell_plugins_window_delete_cb), (rb_shell_plugins_response_cb), (rb_shell_cmd_plugins), (rb_shell_quit): start and stop plugin framework. 2006-03-11 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal), (rhythmdb_entry_delete): Emit entry-deleted signals when rhythmdb_commit is called, rather than immediately, so we can't get change notifications afterwards. Fixes #331732. (rhythmdb_process_metadata_load): Add a commit after removing an entry so we can recreate it with a different type without getting confused. 2006-03-11 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor): don't use the drive name for audio CDs, use "Unknown CD". 2006-03-09 Jonathan Matthew patch by: James Henstridge * sources/rb-removable-media-source.c: (rb_removable_media_source_constructor): Get the device name from the GnomeVFSDrive if possible, since this is usually a more descriptive name. Fixes #333080. 2006-03-09 Jonathan Matthew patch by: Alex Lancaster * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): Don't automatically download episodes when configured for manual updating. Fixes #331564. 2006-03-08 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_iter_from_string): Return an iterator for the 'all' property when name == NULL, and don't write to *iter if iter == NULL. 2006-03-06 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_do_next): When switching to the play queue, still call _go_next on the normal play order, so self-emptying auto playlists ("play count = 0" etc.) don't restart once the queue is empty. * shell/rb-tray-icon.c: Change shortcut for 'show notifications' to 'o' so it doesn't clash with 'next'. 2006-03-05 James Livingston * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): don't submit tracks which could not be played. Fixed bug 333013. * shell/rb-shell-player.c: (eos_cb): Don't update statistics for tracks which could not be played. 2006-03-05 James Livingston Sync musicbrainz lookup code from Sound-Juicer cvs. * metadata/sj-metadata-musicbrainz.c: (sj_metadata_musicbrainz_instance_init), (metadata_interface_init), (get_offline_track_listing), (artist_and_title_from_title), (cache_rdf), (get_cached_rdf), (get_rdf), (lookup_cd), (mb_list_albums), (mb_get_submit_url): * metadata/sj-metadata.c: (sj_metadata_get_submit_url): * metadata/sj-metadata.h: * metadata/sj-structures.c: (track_details_free), (album_details_free): * metadata/sj-structures.h: 2006-03-05 Jonathan Matthew * lib/rb-debug.h: * lib/rb-debug.c: (rb_debug_real), (rb_debug_init), (rb_debug_init_match), (rb_profiler_new), (rb_profiler_dump), (rb_profiler_reset), (rb_profiler_free): Filter debug output by matching the file and function names against a match string. * shell/main.c: (main): Add -D command line option to specify the debug match string. * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): Fix some typos in debug output. 2006-03-03 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_parse_file): * shell/rb-shell.c: (rb_shell_load_uri): * sources/rb-generic-player-source.c: (visit_playlist_dirs): * sources/rb-iradio-source.c: (rb_iradio_source_add_from_playlist): use the new "recurse" property from totem-plparser, if present. Stop RB hanging for new users who don't have a 'net connection. From bug 331508. 2006-03-02 Bastien Nocera * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): * sources/Makefile.am: * sources/rb-nokia770-source.c: (rb_nokia770_is_volume_player): Fix missing files on make dist (conditional files), only build the N770 support if there's HAL support, as we have no other ways of detecting it 2006-03-03 James Livingston * shell/rb-shell-clipboard.c: (rb_shell_clipboard_set_source_internal): really fix it this time. hopefully. 2006-03-03 James Livingston * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync): fix issue with the idle function not being removed. 2006-03-02 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_have_complete_selection): * widgets/rb-entry-view.h: add function for determining whether all entries are selected. * shell/rb-shell-clipboard.c: (rb_shell_clipboard_init), (rb_shell_clipboard_set_source_internal), (rb_shell_clipboard_finalize), (rb_shell_clipboard_idle_poll_deletions), (rb_shell_clipboard_entryview_changed_cb), (rb_shell_clipboard_entries_changed_cb): watch for entry additions and removals, to update things. (rb_shell_clipboard_sync): update the Select All and Select None sensitivity, based on what is selected. Fixed bug 172220. 2006-03-02 James Livingston * widgets/rb-library-browser.c: (rebuild_child_model): save and restore the selections of later models. This means that selecting the artist for the selected album does not reset the album selection. 2006-03-02 James Livingston * data/ui/rhythmbox-ui.xml: add the missing UI for generic players. Stops it emitting critical warnings. 2006-03-02 James Livingston * lib/rb-file-helpers.c: (rb_uri_append_uri): * lib/rb-file-helpers.h: Add uri concatenation function for when the second fragment is already escaped. * sources/rb-generic-player-source.c: (rb_generic_player_source_class_init), (rb_generic_player_source_constructor), (impl_show_popup), (rb_generic_player_source_load_playlists), (rb_generic_player_source_transform_playlist_uri), (handle_playlist_entry_cb), (visit_playlist_dirs), (default_load_playlists), (default_transform_playlist_uri): * sources/rb-generic-player-source.h: scan for playlists (m3u, pls) on the device. Allow subclasses to override the playlist loading, and (playlist uri)->(actual uri) mapping. A lot of devices which have playlists won't work right now, but people will see them and hopefully file bugs. * sources/rb-psp-source.c: (rb_psp_source_class_init), (rb_psp_source_create_playlists): Adapt the PSP for the above change * sources/Makefile.am: + sources/rb-nokia770-source.{c,h}: * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): Add support for reading playlists of Nokia 770s. 2006-03-02 Jonathan Matthew * data/glade/podcast-properties.glade: * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_init), (rb_podcast_properties_dialog_update), (rb_podcast_properties_dialog_update_location), (rb_podcast_properties_dialog_update_download_location): Add 'download location' field showing the path to the downloaded copy. Fixes #330696. 2006-03-01 Bastien Nocera * configure.ac: simplify HAVE_HAL define 2006-03-01 Bastien Nocera * configure.ac: * lib/rb-file-helpers.c: (rb_uri_append_path): * lib/rb-file-helpers.h: * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): * sources/Makefile.am: * sources/rb-ipod-source.c: * sources/rb-psp-source.*: Patch from James Livingston to add read-only Sony PSP support, additional HAL < 0.5 support by yours truly (Closes: #332337) 2006-03-02 James Livingston * shell/rb-shell-player.c: (rb_shell_player_set_property), (rb_shell_player_play), (rb_shell_player_jump_to_current), (swap_playing_source), (rb_shell_player_playpause), (rb_shell_player_sync_buttons), (actually_set_playing_source), (rb_shell_player_set_playing_source_internal): check for the entry view being NULL before trying to use it. Lets us support sources which don't have an entry view. From bug 331673. 2006-03-01 Bastien Nocera * shell/rb-audioscrobbler.c: (rb_audioscrobbler_load_queue): use gnome_vfs_read_entire_file with a URI, not a local filename 2006-03-01 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): handle first-seen and last-seen when merging duplicate entries. 2006-03-01 Jonathan Matthew * widgets/rb-property-view.c: (rb_property_view_set_search_func): * widgets/rb-property-view.h: New function, allowing custom interactive search functions for property views. * sources/rb-podcast-source.c: (feed_select_change_cb): Only do a new query when the selection actually changes. (rb_podcast_source_constructor), (rb_podcast_source_feed_title_search_func): Interactive search function for podcast feed titles. Fixes #327451. 2006-03-01 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat_info_cb): don't chaneg the uri in the callback, since it causes symbols to not be escaped. Fixes bug 332976. * data/ui/rhythmbox-ui.xml: * sources/rb-import-errors-source.c: (rb_import_errors_source_class_init), (rb_import_errors_source_constructor), (impl_get_status), (impl_move_to_trash), (rb_import_errors_source_songs_show_popup_cb): add move-to-trash for import errors source * widgets/rb-entry-view.c: (rb_entry_view_location_cell_data_func), (rb_entry_view_append_column): unescape the URI for display. 2006-03-01 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load): fix crashers when the vfs get info function fails. 2006-02-28 Dennis Cranston * shell/rb-shell-clipboard.c: Use lowercase "to" in "Move to Trash". * shell/rb-shell.c: Use "Play Queue" and "Side Pane" terminology. * sources/rb-play-queue-source.c: (rb_play_queue_source_constructor), (rb_play_queue_source_new), (rb_play_queue_source_update_count): Use "Play Queue" instead of "Queued Songs". Fixes #331637. 2006-03-01 James Livingston * data/rhythmbox.schemas: change "boolean" to "bool" in the schema. Fixes bug 332913. 2006-03-01 James Livingston * daapsharing/rb-daap-mdns-browser-howl.c: (rb_daap_mdns_browser_class_init), (rb_daap_mdns_browser_finalize): * daapsharing/rb-daap-mdns-publisher-avahi.c: (rb_daap_mdns_publisher_class_init), (rb_daap_mdns_publisher_finalize): * lib/rb-thread.c: (rb_thread_class_init), (rb_thread_finalize): * player/rb-recorder-gst.c: (rb_recorder_class_init), (rb_recorder_finalize): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_constructor): * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor): * sources/rb-ipod-source.c: (rb_ipod_source_constructor): * sources/rb-playlist-source-recorder.c: (rb_playlist_source_recorder_style_set), (rb_playlist_source_recorder_class_init), (rb_playlist_source_recorder_finalize): * widgets/rb-query-creator.c: (rb_query_creator_constructor): fix the other classes in the same way, so they don't break when derived from. 2006-03-01 James Livingston * sources/rb-generic-player-source.c: (rb_generic_player_source_constructor): don't get the parent class in a dumb way, and it breaks when the class is derived from. 2006-02-28 Abel Cheung * configure.ac: Added "zh_HK" to ALL_LINGUAS. 2006-03-01 James Livingston * rhythmdb/gsequence.c: fix a typo in the last commit, that makes it not work in glib 2.8 systems. 2006-03-01 James Livingston * lib/rb-file-helpers.c: (rb_uri_is_local): just check for the file:// prefix instead of using gnome_vfs_uri_is_local, since the gnomevfs dev say it is crap. * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post), (rb_podcast_manager_db_entry_deleted_cb): don't stop people putting podcasts on ion-local places * rhythmdb/gsequence.c: (g_sequence_node_new), (g_sequence_node_free): use gslice if we are building against glib 2.10. * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat): always async stats for local files too, so it doesn't block. 2006-02-28 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal): just check for the file:// prefix, instead of using gnome_vfs_uri_is_local, since that stats the file. Stops the UI blocking while stats are done. 2006-02-28 James Livingston * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_constructor), (impl_reset_filters), (impl_get_property_views), (impl_browser_toggled), (rb_static_playlist_source_do_query), (rb_static_playlist_source_browser_changed_cb): add browsers to static playlists. From bug 118862. * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init): disable them for the play queue. 2006-02-27 Dennis Cranston * data/glade/library-prefs.glade: Add a mnemonic. * sources/rb-library-source.c: (rb_library_source_location_button_clicked_cb): Use title capitalization for window title. 2006-02-28 James Livingston * sources/rb-auto-playlist-source.c: (construct_query_from_selection): don't create a subquery for only one criteria, as it's a silly effifiency degredation. 2006-02-28 James Livingston * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (save_entry), (rhythmdb_tree_save): add a new "Ignore" type, which is saved to disk * rhythmdb/rhythmdb.c: (set_props_from_metadata), (rhythmdb_process_stat_event), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_entry_song_get_type), (rhythmdb_entry_ignore_get_type): When loading a file, which is marked IGNORE (e.g. known video stream) create an entry of the Ignore type. This will make importing files quicker as we don't need to try files that we know are not going to be interesting - especially useful when using the library watching facility. Fixes bug 323179. 2006-02-28 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_set_visibility): fix browser and source-list pane positioning, that I broke with the "remember visibility" patch. 2006-02-27 Jonathan Matthew * metadata/rb-metadata-dbus-service.c: (main): Change argument handling so you can use --debug with the --load and --can-save test modes. * metadata/rb-metadata-dbus-client.c: (start_metadata_service): Use a separate GMainContext, not the default one. Probably fixes #332344. 2006-02-27 James Livingston * shell/rb-shell.c: (rb_shell_constructor): focus the entry view when first starting up. Fixes bug 330342. 2006-02-27 James Livingston * sources/rb-sourcelist-model.c: (rb_sourcelist_model_set_dnd_targets): * widgets/rb-entry-view.c: (rb_entry_view_constructor): only use the COPY action for draging sources and tracks, not MOVE as well. Stops Nautilus moving file away, and fixes bug 332488. 2006-02-27 James Livingston patch by: Gunnar Steinn Magnusson * sources/rb-ipod-source.c: (load_ipod_db_idle_cb): read the Rating and Last Played metadata off iPods. Closes bug 324648. 2006-02-26 Jonathan Matthew * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor): Disable audioscrobbler when run with the --no-registration flag, since last.fm doesn't allow multiple concurrent clients per user. 2006-02-26 Jonathan Matthew * sources/rb-sourcelist.c: (rb_sourcelist_init), (key_release_cb): Rename renamable sources when F2 is pressed when the sourcelist has focus. Fixes #330700. 2006-02-26 Jonathan Matthew * shell/rb-playlist-manager.c: (cleanup_edit_data), (edit_auto_playlist_response_cb), (edit_auto_playlist_deleted_cb), (rb_playlist_manager_cmd_edit_automatic_playlist): Fix various crashes when deleting auto playlists previously edited by disconnecting signal handlers when the query editor is closed or the playlist is deleted. 2006-02-24 Jonathan Matthew * metadata/rb-metadata-gst.c: Correct comment referring to the now removed load failure dialog, and actually use the friendly file type name in error messages. 2006-02-24 James Livingston patch by: Baptiste Mille-Mathias * sources/rb-library-source.c: (rb_library_source_location_button_clicked_cb), (rb_library_source_preferences_sync), (rb_library_source_library_location_cb): convert the library URI to for display, and back again. Fixes bug 332356. 2006-02-23 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_stat_event), (rhythmdb_process_metadata_load), (monitor_subdirectory), (rhythmdb_sync_library_location): don't monitor files at all if watching is turned off. From bug 323096. 2006-02-23 James Livingston * data/rhythmbox.schemas: * lib/rb-preferences.h: * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_set_visibility): remember main window visibility between sessions. Fixes bug 127320. 2006-02-23 James Livingston * data/glade/library-prefs.glade: * sources/rb-library-source.c: (impl_get_config_widget), (rb_library_source_location_button_clicked_cb), (rb_library_source_preferences_sync), (rb_library_source_library_location_cb), (rb_library_source_watch_toggled_cb): change the library-location widgets from the file-chooser drop menu to a text entry and Browse button. This is needed to prevent the location from chaning if the directory cannot be found. Fixes bug 328414. 2006-02-23 James Livingston * sources/rb-podcast-source.c: add icon to the Cancel Download menu item. Fixes bug 329042. 2006-02-23 James Livingston patch by: Alex Lancaster * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): deal with extra comma in some podcast feeds. Fixes bug 332194. 2006-02-23 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat): execute the stats at a lower priority. * sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry): change the internal audio cd URIs from "cdda://device:track" to "cdda://track#device" as it makes processing much easier. * shell/rb-shell-player.c: (rb_shell_player_open_location): * player/rb-player-gst.c: don't have the shell close the player between songs, as doing that should be backend-specific. Make the gstreamer backend close before starting a new track, unless the old and new ones are both tracks on the same audio cd. Just seek in that case. 2006-02-23 Jonathan Matthew * doc/reference/rhythmbox.types: Fix doc build a bit more. 2006-02-23 Jonathan Matthew * configure.ac: Enable more warnings in my stupid setup too. * shell/rb-shell.c: Fix compile errors from last commit. Fixes #332210. 2006-02-22 Jonathan Matthew * sources/rb-missing-files-source.h, * sources/rb-missing-files-source.c, * sources/rb-import-errors-source.h, * sources/rb-import-errors-source.c: Add library meta-sources, showing missing files and import errors. Fixes #167763, #142322. * sources/rb-sourcelist-model.c: (rb_sourcelist_model_new): * sources/rb-sourcelist-model.h: * sources/rb-sourcelist.c: (rb_sourcelist_append), (match_source_to_iter), (rb_sourcelist_source_to_iter), (rb_sourcelist_visible_source_to_iter), (rb_sourcelist_remove), (visibility_notify_cb): Store source visibility in the sourcelist model, so we can determine child source counts correctly and get the sourcelist expander column right. * widgets/rb-entry-view.h: * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_append_column), (set_column_visibility): Allow the creator of the entry view to specify which columns are always visible. * sources/rb-source.h: * sources/rb-source.c: (_autohide_update_visibility), (_rb_autohide_source_row_deleted_cb), (_rb_autohide_source_row_inserted_cb), (_rb_source_hide_when_empty): Allow sources to automatically hide themselves when empty. * sources/rb-iradio-source.c: (rb_iradio_source_constructor): * sources/rb-library-source.c: (rb_library_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_constructor): Explicitly specify which columns are always visible. * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_playing_entry_changed_cb), (add_to_library_response_cb): Remove load error signal handling and load failure dialog. Create missing files and import errors sources for the library. * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load): Create DB entries for import errors rather than emitting the 'load error' signal; mark loaded entries visible. (rhythmdb_entry_sync_mirrored), (rhythmdb_prop_get_type), (rhythmdb_entry_get_string), (rhythmdb_entry_set_visibility), (rhythmdb_prop_get_type): Store string form of last seen time for hidden entries, since it's used in the missing files source. (rhythmdb_entry_import_error_get_type): Add entry type for import errors. (rhythmdb_process_file_deleted), (rhythmdb_volume_mounted_cb), (rhythmdb_volume_unmounted_cb): Add missing rhythmdb_commit calls. (rhythmdb_entry_move_to_trash_set_error), (rhythmdb_entry_move_to_trash): Correct spelling, add missing rhythmdb_commit. * rhythmdb/rhythmdb.h: Add import error entry type and last seen string property. * rhythmdb/rhythmdb-private.h: Add string form of last seen time. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): Ignore string form of 'last seen' property. * shell/rb-shell-player.c: (rb_shell_player_entry_activated_cb): Don't try to play hidden entries or import error entries. * data/ui/rhythmbox-ui.xml: Add popup for missing files source. * sources/Makefile.am: Add meta-source files * widgets/Makefile.am: Remove load failure dialog files 2006-02-22 Jonathan Matthew update by: Baptiste Mille-Mathias * help/C/rhythmbox.xml: add a 'getting started' section, and fix a few bits and pieces. 2006-02-22 Jonathan Matthew * metadata/test-metadata.c: (load_metadata_cb): Fix compile warning for ignoring return value from getcwd, #332064. 2006-02-21 James Livingston * shell/rb-playlist-manager.c: (edit_auto_playlist_response_cb), (edit_auto_playlist_deleted_cb), (rb_playlist_manager_cmd_edit_automatic_playlist): make the auto playlist editor non-modal. Fixes bug 320030. 2006-02-21 James Livingston * shell/rb-shell.c: (rb_shell_constructor): * widgets/rb-header.c: (rb_header_init), (rb_header_set_urldata), (rb_header_set_show_artist_album): * widgets/rb-song-display-box.c: (rb_song_display_box_init), (rb_song_display_box_sync): make the queue sidebar and song display not get affected by gtk_widget_show_all. Fixes bug 332001. 2006-02-21 James Livingston Patch by: Alex Lancaster * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): add support for feeds which use timezone names instead of offsets. Doesn't actually parse the timezone name since they are not standardised. Fixes bug 331691. 2006-02-21 James Livingston * help/C/figures/rb-notification-area.png: * help/C/figures/rb-sidebar.png: * help/C/quick-reference.xml: remove obsolete files from CVS. * rhythmdb/rhythmdb-tree.c: (evaluate_conjunctive_subquery): * rhythmdb/rhythmdb.c: (rhythmdb_query_parse_valist), (rhythmdb_query_free), (rhythmdb_query_serialize), (rhythmdb_query_deserialize), (rhythmdb_query_get_type): * rhythmdb/rhythmdb.h: Add operators for string prefix and suffix. * widgets/rb-query-creator-properties.c: add prefix and suffix (escapedStringCriteriaGetWidgetData): use better escaping, so it doesn't escape the ':' separator in uris. 2006-02-21 James Livingston * shell/rb-shell.c: (rb_shell_constructor): ensure the window is shown on startup. 2006-02-21 James Livingston * NEWS: update with recent changes 2006-02-21 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_player_volume_changed_cb), (rb_shell_druid_response_cb): * widgets/rb-druid.c: (rb_druid_finalize), (rb_druid_init_widgets), (rb_druid_browse_clicked_cb), (do_response): * widgets/rb-druid.h: Make running the druid not block RBShell starting up. This is required so that bonobo registration doesn't time out. Fixed bug 318766. 2006-02-21 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_entry_removed_cb): remove the entry from the hash table after using it, not before. Fixed bug 331922. 2006-02-21 Jonathan Matthew * shell/rb-shell.c: (rb_shell_playing_from_queue_cb), (rb_shell_view_queue_as_sidebar_changed_cb): When playing from the queue, only attempt to highlight the queue source in the source list if it's actually visible there. Otherwise, leave the preempted source highlighted. Mostly fixes #330819. 2006-02-20 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_insert), (rhythmdb_property_model_delete): store the roperty value in the entry-mapping table, so that receiving the remove signal from a query model before we get notified of a change doesn't cause a crash. Fixes bug 331770. 2006-02-20 James Livingston * data/ui/rhythmbox-ui.xml: * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init), (rb_play_queue_source_cmd_clear), (impl_show_popup): don't display playlist things in the queue popup source. From 330490. * widgets/rb-song-info.c: (rb_song_info_sync_entries): fix mistake in previous commit 2006-02-20 James Livingston * widgets/rb-song-info.c: (rb_song_info_response_cb), (rb_song_info_sync_entry_single), (rb_song_info_sync_entries): don't attempt to sync data for non-editable entries when using next/previous. Don't write our Year if it wasn't changed. Fixes bug 331762. 2006-02-19 Luca Ferretti * .cvsignore: * Makefile.am: * autogen.sh: * configure.ac: * help/.cvsignore: * help/Makefile.am: ported to gnome-doc-utils * help/rhythmbox.omf.in: added, needed by gnome-doc-utils * help/ChangeLog: added, for translators * help/C/rhytmbox-C.omf: removed, no longer used Know issue: figures are installed, but some are not showed; manual description added, but not showed in Yelp while browsing. I'll investigate, maybe are needed some little changes to help/C/rhythmbox.xml. 2006-02-20 James Livingston * data/ui/rhythmbox-ui.xml: * help/C/figures/rb-adv.png: * help/C/figures/rb-asst-finish.png: * help/C/figures/rb-asst-library.png: * help/C/figures/rb-asst-start.png: * help/C/figures/rb-basic.png: * help/C/figures/rb-browser.png: * help/C/figures/rb-context-menu.png: * help/C/figures/rb-empty.png: * help/C/figures/rb-full-play.png: * help/C/figures/rb-group-auto.png: * help/C/figures/rb-group-create.png: * help/C/figures/rb-group.png: * help/C/figures/rb-imported.png: * help/C/figures/rb-iradio-add.png: * help/C/figures/rb-iradio.png: * help/C/figures/rb-nextprev.png: * help/C/figures/rb-nobrowse-play.png: * help/C/figures/rb-notification-area-menu.png: * help/C/figures/rb-player.png: * help/C/figures/rb-prefs-general.png: * help/C/figures/rb-prefs-ipod.png: * help/C/figures/rb-prefs-library.png: * help/C/figures/rb-prefs.png: * help/C/figures/rb-repeat.png: * help/C/figures/rb-search.png: * help/C/figures/rb-shuffle.png: * help/C/figures/rb-stats.png: * help/C/figures/rb-toolbar-editor.png: * help/C/figures/rb-volume-mute.png: * help/C/figures/rhythmbox-group.png: * help/C/figures/rhythmbox-tray-icon.png: * help/C/user-guide.xml: remove old stuff from cvs 2006-02-19 Jonathan Matthew * metadata/rb-metadata-dbus-client.c: * metadata/rb-metadata-dbus-service.c: * metadata/rb-metadata-dbus.c: * metadata/rb-metadata-dbus.h: New files, adding an external service for reading and writing metadata, and an implementation of the RBMetaData interface that uses dbus to communicate with it. * metadata/rb-metadata.h, * metadata/rb-metadata-common.c: (rb_metadata_get_field_type), (rb_metadata_get_field_name): Put metadata details in a static array instead of using a hash table, and add a field for language code (not used for anything) * metadata/rb-metadata-gst.c: Updates for changes in rb-metadata-common.c, fix signal handler closure leak for the typefind element's have-type signal, and add XML to the list of types we ignore. * rhythmdb/rhythmdb.c: (extract_gtype_from_enum_entry): Update for changes to rb_metadata_get_field_type (rhythmdb_entry_allocate): Don't make songs hidden initially, as rhythmdb_commit_internal do that for non-local files. Saves us a stat here and there. * configure.ac: Add --enable-metadata-helper option (not enabled by default) to use the external metadata service * metadata/Makefile.am: Add new files * metadata/test-metadata.c: Test program for the metadata service Fixes #329597. 2006-02-19 Jonathan Matthew * shell/rb-shell.c: (rb_shell_cmd_add_file_to_library): * sources/rb-podcast-source.c: (impl_get_ui_actions), (rb_podcast_source_cmd_new_podcast): Move 'new podcast' action to the podcast source, and add it to the toolbar. Fixes #331562. 2006-02-19 James Livingston * data/ui/rhythmbox-ui.xml: Move add-to-queue to the top of the context menus, and away from move-to-trash. Fixes bug 331013. 2006-02-19 James Livingston * shell/rb-play-order.c: (default_playing_entry_removed): don't crash when deleting last entry. Fixes bug 331712. 2006-02-18 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_button_press_cb): * widgets/rb-entry-view.h: Emit show-popup when right clicked anywhere, and include a flag indicating whether the click was over an entry or not. * sources/rb-playlist-source.c: (default_show_entry_view_popup), (rb_playlist_source_songs_show_popup_cb): * sources/rb-playlist-source.h: Add the 'over entry' flag to the class show popup method, and in the default handler, ignore right clicks when not over an entry. * sources/rb-iradio-source.c: (rb_iradio_source_songs_show_popup_cb): * sources/rb-library-source.c: (rb_library_source_songs_show_popup_cb): * sources/rb-podcast-source.c: (rb_podcast_source_songs_show_popup_cb): Show the source list popup menu when right clicked while not over an entry. * sources/rb-play-queue-source.c: (impl_show_entry_view_popup): For the queue sidebar, always display the popup so the 'clear queue' action is available regardless of where you click. For the queue source, only display the popup when right clicked over an entry. Fixes #331392. 2006-02-19 James Livingston * daapsharing/rb-daap-share.c: (add_playlist_to_mlcl): * shell/rb-shell.c: (rb_shell_select_source): don't get the source's entry view, when we're not even using it * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb): use the query-model utility function, rather than a copy of the code. * shell/rb-playlist-manager.c: (rb_playlist_manager_playlist_row_inserted_cb), (rb_playlist_manager_set_source_internal), (rb_playlist_manager_playlist_entries_changed): use the query-model directly, rather than the source's entry view. * shell/rb-source-header.c: don't use the entry view, just select the source widget. 2006-02-18 James Livingston update by: Baptiste Mille-Mathias * help/C/figures/rb-iradio-main.png: * help/C/figures/rb-notification-area-menu.png: * help/C/figures/rb-notification-window.png: * help/C/figures/rb-notification-zone.png: * help/C/figures/rb-podcast-main.png: * help/C/figures/rb-statusbar.png: * help/C/figures/rb-toolbar-prevplaynext.png: * help/C/figures/rb-toolbar-repeat.png: * help/C/figures/rb-toolbar-shuffle.png: * help/C/figures/rb-toolbar.png: * help/C/figures/rb-volume-changer.png: * help/C/figures/rb-window-small.png: * help/C/figures/rb-window.png: * help/C/rhythmbox.xml: Update user guide with some of the changes that have occurred after 0.8.8. From bug 314001. 2006-02-18 Jonathan Matthew * rhythmdb/rhythmdb-query-results.h, rhythmdb/rhythmdb-query-results.c: New interface for objects that accept query results from RhythmDB. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_query_results_init), (rhythmdb_query_model_set_query), (rhythmdb_query_model_add_results), (rhythmdb_query_model_query_complete): * rhythmdb/rhythmdb-query-model.h: Make RhythmDBQueryModel implement the RhythmDBQueryResults interface. * rhythmdb/rhythmdb-tree.c: (handle_entry_match), (rhythmdb_tree_do_full_query): * rhythmdb/rhythmdb.c: (rhythmdb_event_free), (rhythmdb_query_internal), (rhythmdb_do_full_query_async_parsed), (rhythmdb_do_full_query_async), (rhythmdb_do_full_query_internal), (rhythmdb_do_full_query_parsed), (rhythmdb_do_full_query): * rhythmdb/rhythmdb.h: Pass query results through the RhythmDBQueryResults interface, rather than directly to a RhythmDBQueryModel. * podcast/rb-podcast-manager.c: (rb_podcast_manager_update_feeds), (rb_podcast_manager_db_entry_deleted_cb): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query): * sources/rb-iradio-source.c: (rb_iradio_source_do_query): * sources/rb-library-source.c: (rb_library_source_constructor), (rb_library_source_do_query): * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_do_query): * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_drag_data_get): Cast the query model to RhythmDBQueryResults when passing to one of the RhythmDB query methods. * rhythmdb/Makefile.am: Add new files. 2006-02-18 James Livingston * data/ui/rhythmbox-ui.xml: * shell/rb-playlist-manager.c: (_queue_track_cb), (rb_playlist_manager_cmd_queue_playlist): Add "queue playlist" item to source context menu. Fixes bug 330490. 2006-02-18 James Livingston * data/glade/general-prefs.glade: * shell/rb-shell-preferences.c: (rb_shell_preferences_column_check_changed_cb), (rb_shell_preferences_sync): * sources/rb-library-source.c: (rb_library_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * widgets/rb-entry-view.c: (rb_entry_view_quality_cell_data_func), (rb_entry_view_append_column): Add a "quality" colume which indicates the bitrate of media. Part of bug 167659. 2006-02-18 James Livingston * shell/rb-play-order.c: (do_next_idle_cb), (default_playing_entry_removed): move to next track when playing entry is deleted. Fixes bug 131150. * shell/rb-shell-player.h: remove ancient stuff 2006-02-17 William Jon McCann * shell/rb-shell-clipboard.c (rb_shell_clipboard_set_source_internal) (rb_shell_clipboard_set_property): * shell/rb-shell.c (rb_shell_sync_party_mode): Trigger a resync of the clipboard properties when changing party mode. 2006-02-17 William Jon McCann * sources/rb-static-playlist-source.c: Fix includes. * sources/rb-source.c (rb_source_can_rename) (rb_source_can_delete, rb_source_can_move_to_trash): Return FALSE if in party mode. * shell/rb-shell.[ch] (rb_shell_finalize, rb_shell_constructor): Replace fullscreen with party mode. (rb_shell_window_delete_cb): Don't quit if in party mode. (rb_shell_view_party_mode_changed_cb): Setup party mode. (window_state_event_cb): Try to deiconify shell when iconified in party mode. (rb_shell_sync_party_mode): Sync party mode properties. Currently, that means [de]sensitizing close, quit, and small-display, going into fullscreen mode with window stuck and kept above, and toggling queue-only for the shell player. (rb_shell_sync_smalldisplay): Sensitive party mode. (rb_shell_get_party_mode): Get party mode setting. * shell/rb-shell-player.c (rb_shell_player_class_init) (rb_shell_player_set_property, rb_shell_player_get_property): Add queue-only property. (rb_shell_player_entry_activated_cb): If in party mode only queue the entry on activation. * shell/rb-playlist-manager.c (rb_playlist_manager_set_source_internal): Break out from set_properties. Desensitize some actions when in party mode. (rb_playlist_manager_set_property): Break out set_source_internal. * data/rhythmbox.schemas: Remove fullscreen mode. * data/ui/rhythmbox-ui.xml: Replace fullscreen action with party mode. Partial fix for #323933 2006-02-17 James Livingston * configure.ac: * shell/rb-removable-media-manager.c: (get_nautilus_burn_drive_for_path), (rb_removable_media_manager_playing_uri_changed_cb): only use nautilus_burn_drive_new_by_path when it exists, fall back to iterating over the list when it doesn't. 2006-02-17 James Livingston * sources/rb-iradio-source.c: (rb_iradio_source_constructor), (rb_iradio_source_first_time_changed): Only do the import on the first change from FALSE to TRUE. * sources/rb-library-source.c: (rb_library_source_preferences_sync), (rb_library_source_library_location_cb): set the first-run done flag if the user presses close and then sets their watches library location. Fixes bug 325997. 2006-02-17 James Livingston * shell/rb-shell.c: (rb_shell_class_init): make the shell player and removable media manager gobject properties * shell/rb-removable-media-manager.c: (begin_cd_drive_monitor), (split_drive_from_cdda_uri), (rb_removable_media_manager_playing_uri_changed_cb), (rb_removable_media_manager_load_media): stop polling a cd drive when we are playing from it. Part of bug 330716. 2006-02-17 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_finalize), (rhythmdb_query_model_base_entry_removed): Propagate entry removal from base models out to attached property models. Fixes the rest of #331165. 2006-02-17 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_insert): Don't store NULL as a hash table value if we want to use g_hash_table_lookup to check if a key exists, and get the checks for how and whether to handle entry changes the right way around. Fixes #331211 and half of #331165. 2006-02-16 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor): read the audio cd's TOC in a separate thread, so it doesn't block the UI. Fixes bug 329942. 2006-02-16 James Livingston * widgets/rb-library-browser.c: (reset_view_cb): make View All actually reset the browsers. 2006-02-16 Jonathan Matthew * widgets/eggtrayicon.c: (egg_tray_icon_notify): Escape the strings we pass into libnotify so we don't get blank notifications when the song name contains '&' etc. Fixes #330784. 2006-02-16 James Livingston * shell/rb-source-header.c: (rb_source_header_sync_control_state): enable "View All" when there is only a search box and no browser. Fixes bug 331395. 2006-02-16 Jonathan Matthew * data/ui/rhythmbox-ui.xml: Add 'clear queue' to the sidebar queue popup menu, which I forgot to commit with the patch for bug #330014. 2006-02-16 Jonathan Matthew * shell/rb-shell-player.c: (open_location_thread): Sync button and entry view state once we've started the player, so the entry view gets into the playing state for iradio. 2006-02-15 Jonathan Matthew * shell/rb-shell-player.c: (open_location_thread): Take GDK lock before doing anything UI-related. 2006-02-15 Jonathan Matthew * shell/rb-shell.c: Move 'new iradio station' action to iradio source. * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_init), (rb_iradio_source_finalize), (rb_iradio_source_constructor): Remove some unused stuff. (guess_uri_scheme), (rb_iradio_source_add_station), (rb_iradio_source_add_from_playlist), (impl_get_ui_actions), (new_station_location_added), (rb_iradio_source_cmd_new_station): Handle 'new iradio station' action, include it in the toolbar, and make sure the URI we add has a scheme. Fixes #327059, more or less. 2006-02-15 Jonathan Matthew * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init), (rb_play_queue_source_constructor), (rb_play_queue_source_update_count), (rb_play_queue_source_cmd_clear), (impl_get_ui_actions): Add a toolbar button to clear the play queue, and make it sensitive only when there are entries in the queue. Fixes #330014. * sources/rb-source.c: (_rb_source_register_action_group): * sources/rb-source.h: Add helper function to register an action group for a source. * sources/rb-library-source.c: (rb_library_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (register_action_group): Use _rb_source_register_action_group. 2006-02-15 James Livingston * widgets/rb-song-info.c: (rb_song_info_add_completion), (rb_song_info_constructor), (rb_song_info_set_property): make tag-editing completion work for albums too. 2006-02-15 Jonathan Matthew * widgets/rb-query-creator.c: (rb_query_creator_load_query): Check the 'limit' checkbox for time-limited playlists. 2006-02-14 Sven Herzberg * widgets/rb-song-info.c: Prove text-completion when editing title, artist or album 2006-02-14 James Livingston * data/ui/rhythmbox-ui.xml: add a separator above the Quit item of the tray icon popup menu. Fixes bug 331026. 2006-02-14 James Livingston * data/iradio-initial.pls: update the Virgin Radio stations to use the Ogg Vorbis streams, instead of the MP3 ones. 2006-02-14 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_class_init), (rhythmdb_property_model_drag_data_get): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_title_sort_func): * rhythmdb/rhythmdb-query-model.h: fix drag-and-drop when using the LOCATION as the key. Fixes bug 330601. 2006-02-13 Jonathan Matthew * sources/rb-playlist-source.c: (playlist_iter_func): Make it compile with older versions of totem-plparser too. 2006-02-13 James Livingston * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb-private.h: Make definition of RhythmDBEntry structure private, since things should use the accessor functions rather than manipulating it directly - Only RhythmDB and the implementation classes should access it directly. Part of the RhythmDB cleanup of bug 330226. * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_update_title), (rb_station_properties_dialog_update_title_entry), (rb_station_properties_dialog_update_genre), (rb_station_properties_dialog_update_location), (rb_station_properties_dialog_update_play_count), (rb_station_properties_dialog_update_bitrate), (rb_station_properties_dialog_update_last_played), (rb_station_properties_dialog_update_rating), (rb_station_properties_dialog_update_playback_error), (rb_station_properties_dialog_sync_entries): * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_update_title), (rb_feed_podcast_properties_dialog_update_title_label), (rb_feed_podcast_properties_dialog_update_author), (rb_feed_podcast_properties_dialog_update_location), (rb_feed_podcast_properties_dialog_update_copyright), (rb_feed_podcast_properties_dialog_update_language), (rb_feed_podcast_properties_dialog_update_summary): * podcast/rb-podcast-manager.c: (rb_podcast_manager_entry_downloaded), (rb_podcast_manager_db_entry_added_cb), (download_progress_update_cb), (rb_podcast_manager_db_entry_deleted_cb): * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_update_title), (rb_podcast_properties_dialog_update_title_label), (rb_podcast_properties_dialog_update_feed), (rb_podcast_properties_dialog_update_location), (rb_podcast_properties_dialog_update_play_count), (rb_podcast_properties_dialog_update_bitrate), (rb_podcast_properties_dialog_update_last_played), (rb_podcast_properties_dialog_update_rating), (rb_podcast_properties_dialog_update_date), (rb_podcast_properties_dialog_update_description): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_changed_cb), (rhythmdb_query_model_remove_from_main_list), (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_drag_data_get), (rhythmdb_query_model_album_sort_func): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): * rhythmdb/rhythmdb.c: (rhythmdb_entry_set_internal), (rhythmdb_prop_get_type), (rhythmdb_entry_dup_string), (rhythmdb_entry_get_string), (rhythmdb_entry_get_boolean), (rhythmdb_entry_get_uint64), (rhythmdb_entry_get_ulong), (rhythmdb_entry_get_double): * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): * shell/rb-play-order-random-by-age-and-rating.c: (rb_random_by_age_and_rating_get_entry_weight): * shell/rb-play-order-random-by-age.c: (rb_random_by_age_get_entry_weight): * shell/rb-play-order-random-by-rating.c: (rb_random_by_rating_get_entry_weight): * shell/rb-playlist-manager.c: (create_name_from_selection_data): * shell/rb-shell-player.c: (rb_shell_player_open_entry), (rb_shell_player_set_playing_entry), (rb_shell_player_sync_replaygain), (rb_shell_player_sync_with_source), (rb_shell_player_get_playing_song_duration), (info_available_cb): * sources/rb-playlist-source.c: (playlist_iter_func), (burn_playlist_iter_func), (rb_playlist_source_row_deleted), (rb_playlist_source_entry_added_cb): * sources/rb-podcast-source.c: (rb_podcast_source_post_status_cell_data_func): * sources/rb-source.c: (rb_source_update_play_statistics): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_drag_data_get): * sources/rb-static-playlist-source.c: (impl_save_contents_to_xml), (rb_static_playlist_source_add_entry), (rb_static_playlist_source_remove_entry): * widgets/rb-entry-view.c: (type_ahead_search_func), (rb_entry_view_playing_cell_data_func), (rb_entry_view_rating_cell_data_func), (rb_entry_view_pixbuf_clicked_cb): * widgets/rb-header.c: (rb_header_get_duration): * widgets/rb-song-info.c: (rb_song_info_populate_dialog_multiple), (rb_song_info_populate_dialog), (rb_song_info_update_playback_error), (rb_song_info_update_bitrate), (rb_song_info_update_duration), (rb_song_info_update_location), (rb_song_info_update_play_count), (rb_song_info_update_last_played), (rb_song_info_update_rating), (rb_song_info_update_year), (rb_song_info_sync_entries_multiple), (rb_song_info_sync_entry_single): fix the huge number of times that the internals got accessed directly. 2006-02-13 Jonathan Matthew * data/ui/rhythmbox-ui.xml: Move separator so 'remove' and 'move to trash' are grouped together. * shell/main.c: (main): Pass no-registration flag in to RBShell constructor, rather than mysteriously always passing TRUE. * sources/rb-playlist-source.c: (rb_playlist_source_row_deleted): Set dirty flag when entries are removed from the model, so the play queue is marked dirty appropriately. * AUTHORS: update my email address 2006-02-13 Jonathan Matthew Patch by: Baptiste Mille-Mathias * widgets/rb-druid.c: (path_dialog_response_cb): If the URI is local, don't display the 'file://' prefix. Fixes #330919. 2006-02-12 Jonathan Matthew * widgets/eggtrayicon.c: (egg_tray_icon_notify): Attach the notification to the tray icon widget, so libnotify positions it less badly. Fixes #330876. 2006-02-11 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_get_selected_entries): Reverse the selection list before returning it, so we get it in the right order. Fixes #330283 and some other weirdness. 2006-02-11 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_sync_fullscreen), (rb_shell_sync_smalldisplay): * shell/rb-source-header.c: (rb_source_header_sync_control_state): make small-mode and fullscreen mutually exclusive, since they don't work together * data/ui/rhythmbox-ui.xml: move Fullscreen up to the top with Small Mode. 2006-02-10 James Livingston * player/rb-player-gst.c: turn paranoia of when playing audio cds, since it can cause it to be slower than real-time. Should fix bug 322270. 2006-02-10 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property): Think just a little bit harder about that last commit. 2006-02-10 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property): Get the check for hidden entries the right way around. Fixes #330527, #330514. (rhythmdb_query_model_set_sort_order): Ignore no-op sort order changes, so we don't get critical messages when selecting 'all' in auto playlist browsers. 2006-02-10 Jonathan Matthew Patch by: Christophe Fergeau * sources/rb-removable-media-source.c: (rb_removable_media_source_init), (rb_removable_media_source_constructor): Move icon setup code to the constructor, as the volume property haven't been set yet when _init is called. 2006-02-09 William Jon McCann * sources/rb-sourcelist.c (rb_sourcelist_append, icon_notify_cb): Make the source pixbuf a dynamic property. * sources/rb-source.[ch] (rb_source_class_init, rb_source_finalize) (rb_source_set_pixbuf, rb_source_set_property) (rb_source_get_property): Add icon property. * sources/rb-auto-playlist-source.c (rb_auto_playlist_source_class_init) (rb_auto_playlist_source_init): * sources/rb-static-playlist-source.c (rb_static_playlist_source_class_init) (rb_static_playlist_source_init): * sources/rb-removable-media-source.c (rb_removable_media_source_class_init) (rb_removable_media_source_init): * sources/rb-podcast-source.c (rb_podcast_source_class_init) (rb_podcast_source_init): * sources/rb-library-source.c (rb_library_source_class_init) (rb_library_source_set_property, rb_library_source_get_property): * sources/rb-iradio-source.c (rb_iradio_source_class_init) (rb_iradio_source_init): Remove impl_get_pixbuf and set icon property on source base class. * sources/rb-daap-source.c (rb_daap_get_icon): Get a different icon for when the share is password protected and locked. (rb_daap_source_new): Set icon property. (composite_icons): Composite an emblem on a pixbuf. (create_pixbufs): Load global pixbufs. (destroy_pixbufs): unref global pixbufs. (rb_daap_sources_init, rb_daap_sources_shutdown): Pixbuf setup. (connection_auth_cb, connection_connected_cb) (connection_disconnected_cb): Update icon when connection status changes. (rb_daap_source_activate): Connect signals. * daapsharing/rb-daap-share.c (name_collision_cb): Run dialog with parent. * daapsharing/rb-daap-marshal.list: Add new signal. * daapsharing/rb-daap-dialog.[ch] (rb_daap_password_dialog_new_run) (rb_daap_collision_dialog_new_run): Set parent of dialog. * daapsharing/rb-daap-connection.[ch] (rb_daap_connection_class_init): Add authenticate, connected, and disconnected signals. (connection_get_password): emit authenticate signal instead of running dialog directly. (connection_connected, connection_disconnected): Emit signals. (handle_login): Emit connected signal. (handle_logout): Emit disconnected signal. (rb_daap_connection_do_something): Fix leak. Fixes #330291 2006-02-09 James Livingston * (rhythmdb_query_model_set_property): don't try to insert HIDDEN entries from the base model if we don't have show-hidden set. Fixes bug 330514. 2006-02-08 William Jon McCann * daapsharing/rb-daap-share.c (message_get_session_id): Ugh. Use strtoul instead of atoi. (session_id_validate): Add debug statements. 2006-02-08 William Jon McCann * daapsharing/rb-daap-connection.c (http_response_handler): Report the actual uri from the message in debug statements. 2006-02-08 William Jon McCann * daapsharing/rb-daap-share.c (server_info_cb, content_codes_cb): Add context argument. (message_get_session_id): New function to parse session id from the message. (message_get_revision_number): Break out function to parse revision number from the message. (session_id_validate): New function to validate given session id is valid for given context (ie. client address). (session_id_generate): Generate a random session id. (session_id_create): Create a unique session id and store it. (session_id_remove): Remove a session id from the store. (login_cb): Create a session id instead of using a constant one. (logout_cb): Validate session id. (update_cb): Use new message_get_revision_number function. (databases_cb): Validate session id. (server_cb): Add server context to argument list for callbacks. It is needed to look up the remote host. (db_entry_changed_cb): Use braces. (soup_auth_callback): Remove FIXME. (rb_daap_share_server_start): Create session id store. (rb_daap_share_server_stop): Destroy session id store. * daapsharing/rb-daap-dialog.c (rb_daap_password_dialog_new_run): Don't base64-encode password here since it needs to be combined with the username first. * daapsharing/rb-daap-connection.c (build_message): Add username to Authorization token. (handle_login, handle_song_listing) (rb_daap_connection_do_something): Session id must be an unsigned int. Fixes #329814 2006-02-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_get_playing): Don't check if we've got a playing entry, ask the player object (duh). Might actually fix #329993. 2006-02-08 Jonathan Matthew * sources/rb-static-playlist-source.c: (rb_static_playlist_source_add_list_uri): Canonicalise URIs before trying to add them to the playlist, and don't try to add files to the database for which there is already an entry. 2006-02-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_get_playing): Don't ask the entry view if we're playing, just check if we've got a playing entry. Fixes #329993. 2006-02-08 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_finalize), (rhythmdb_query_model_base_complete): remove rhythmdb_query_model_base_entry_prop_changed, so that two signals don't get emitted for entry changes. Fixes bug 330301. * widgets/rb-library-browser.c: (rb_library_browser_class_init), (rb_library_browser_init), (rb_library_browser_constructor), (rb_library_browser_new): do stuff in the constructor, not the init function, so that the db property gets set on RBPropertyViews correctly. Fixes a crash when dragging properties to a playlist. 2006-02-07 William Jon McCann * daapsharing/rb-daap-share.c (rb_daap_share_server_stop): Actually stop soup server. Fixes #329816. 2006-02-07 James Livingston * lib/rb-util.h: * lib/rb-util.c: (rb_string_list_equal), (list_copy_cb), (rb_string_list_copy), (rb_list_deep_free), (collate_keys_cb), (collate_values_cb), (rb_collate_hash_table_keys), (rb_collate_hash_table_values): add functions to compare, copy and free string-lists. add functions to collate the keys or values of a hash table into a list. * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_class_init), (entry_from_tree_iter), (_remove_entry_cb), (_add_entry_cb), (rhythmdb_property_model_set_property), (rhythmdb_property_model_get_property), (rhythmdb_property_model_init), (rhythmdb_property_model_finalize), (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_entry_removed_cb): correctly handle entries that are hidden, storing those that we have counted in a hash-table. * shell/Makefile.am: fix build order issue * shell/rb-shell-player.c: (rb_shell_player_set_property): * sources/rb-source.h: * shell/rb-source-header.c: (rb_source_header_sync_control_state): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (feed_select_change_cb): add browser-toggled method, rename _get_exta_views to _get_property_views, since several things depend on returning only that. * sources/rb-source.c: (rb_source_class_init), (rb_source_browser_toggled), (default_get_property_views), (rb_source_get_property_views), (rb_source_row_deleted_cb), (rb_source_gather_hash_keys), (rb_source_gather_selected_properties): above changes, and move some utility functions up from RBLibraryView * widgets/rb-property-view.c: (rb_property_view_selection_changed_cb): fix leak. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_finalize), (apply_updated_entry_sequence), (rhythmdb_query_model_set_sort_order), (rhythmdb_query_model_base_rows_reordered): fix handling of the base query model being resorted. * rhythmdb/rhythmdb-tree.c: (do_query_recurse): handle being passed a NULL query. * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (rhythmdb_query_copy), (rhythmdb_query_concatenate), (rhythmdb_query_preprocess), (rhythmdb_query_append_prop_multiple): Add a function to concatenate two queries. Add a function to append "property={X,Y,Z,...}" to a query. * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (rb_library_source_constructor), (rb_library_source_cmd_choose_genre), (rb_library_source_cmd_choose_artist), (rb_library_source_cmd_choose_album), (impl_search), (impl_get_property_views), (impl_reset_filters), (rb_library_source_preferences_sync), (rb_library_source_browser_views_activated_cb), (rb_library_source_state_prefs_sync), (construct_query_from_selection), (rb_library_source_do_query), (rb_library_source_browser_changed_cb): * widgets/Makefile.am: * widgets/rb-library-browsers.{c,h}: Add a generalised "library browser" widgets, which contains several property views, based on the code from RBLibrarySource. Make RBLibrarySource use it. * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (rb_auto_playlist_source_init), (rb_auto_playlist_source_finalize), (rb_auto_playlist_source_constructor), (impl_reset_filters), (impl_get_property_views), (impl_browser_toggled), (construct_query_from_selection), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_browser_changed_cb): Use the new library-browser widget to add browsers to automatic playlists. 2006-02-07 James Livingston * player/rb-player-gst.c: (rb_player_bus_cb): check error type properly. * shell/rb-shell-player.c: (do_next_idle): use eos_cb, so that the EOF type of the source is taken into account. Fixes bug 329621. 2006-02-07 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element): update the rhythmdb.xml version to 1.1, and perform URI canonicalistion when first upgrading. This should fix our remaining canonicalisation issues, such as bug 329988. 2006-02-07 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_playing_song_changed): Track the playing entry when the entry view isn't in the playing state, so we don't have to get the state changes exactly right. Fixes #330135. 2006-02-06 James Livingston * shell/rb-shell-player.c: (open_location_thread), (rb_shell_player_open_location): fix several iradio issues: having to press play after double-clicking on a station, not working correctly without a http:// prefix, and ignoring totem-plparser results other than success or error (e.g. IGNORE). 2006-02-06 Jonathan Matthew Addition of dbus methods for dealing with static playlists and the play queue. Fixes #329958. * shell/Makefile.am: * shell/rb-playlist-manager.h: * shell/rb-playlist-manager.xml: * shell/rb-playlist-manager.c: (save_playlist_response_cb), (rb_playlist_manager_get_playlists), (rb_playlist_manager_get_playlist_names), (_get_playlist_by_name), (rb_playlist_manager_create_static_playlist), (rb_playlist_manager_delete_playlist), (rb_playlist_manager_add_to_playlist), (rb_playlist_manager_remove_from_playlist), (rb_playlist_manager_export_playlist): Add org.gnome.Rhythmbox.PlaylistManager dbus interface, with methods to create, delete, list, modify, export, and import static playlists. * shell/main.c: (main): Register playlist manager object with dbus. * shell/rb-shell.h: * shell/rb-shell.xml: * shell/rb-shell.c: (rb_shell_get_playlist_manager), (rb_shell_get_playlist_manager_path), (rb_shell_add_to_queue), (rb_shell_remove_from_queue): Provide dbus access to the playlist manager object, and implement the addToQueue and removeFromQueue methods. * sources/rb-playlist-source.c: (rb_playlist_source_save_playlist): * sources/rb-playlist-source.h: Add flag to choose between PLS and M3U formats. 2006-02-05 James Livingston * rhythmdb/rhythmdb-tree.c: (parse_boolean), (rhythmdb_tree_parser_end_element), (save_entry_boolean), (save_entry): allow storage of booleans in the on-disk db, and save/load the HIDDEN property. * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal), (rhythmdb_prop_get_type): restore the HIDDEN property of local files to the state it was when RB shutdown. This makes RB appear to start faster, as tracks can appear before the stat is done. Remote files still start hidden. From bug 325215. 2006-02-05 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_class_init): * rhythmdb/rhythmdb.h: remove the "entry-restored" signal nothing really cares about the difference from "entry-added", and it isn't emitted by the tree backend anyway. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): remove the references to the entry-restored signal. 2006-02-05 James Livingston * shell/rb-shell-player.c: (rb_shell_player_error): fix compilation issue. 2006-02-05 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_finalize): check whether things are NULL before using g_object_unref. Fixes bug 327452. * player/rb-recorder-gst.c: (rb_recorder_construct): * shell/rb-shell-player.c: (rb_shell_player_error): return errors rather than assertion. * sources/rb-playlist-source.c: (rb_playlist_source_new_from_xml): emit a warning, rather than asserting if an unknown playlist type is encountered. 2006-02-05 James Livingston * widgets/Makefile.am: * widgets/rb-simple-view.c: * widgets/rb-simple-view.h: Move the two features that this class provides into RBPropertyView, and remove this class. Closes bug 327500. * podcast/rb-feed-podcast-properties-dialog.c: * podcast/rb-feed-podcast-properties-dialog.h: * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_feeds_show_popup_cb): * sources/rb-podcast-source.h: * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_constructor), (rb_property_view_popup_menu_cb), (rb_property_view_append_column_custom), (rb_property_view_button_press_cb): * widgets/rb-property-view.h: Updated for the above change. 2006-02-04 James Livingston * shell/rb-shell.c: remove the show/hide toolbar shortcut, since it is too close to Move to Trash and people aren't likely to use it often. 2006-02-04 James Livingston * shell/rb-shell.c: (rb_shell_cmd_about): Fix the FSF's address 2006-02-04 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_add_uri_with_type): handle being passed a path instead of a URI. * sources/rb-generic-player-source.c: (default_get_mount_path): * widgets/rb-druid.c: (path_dialog_response_cb): pass URIs instead of the path. This fixes bug 329723. 2006-02-04 Jonathan Matthew * daapsharing/rb-daap-structure.c: (rb_daap_content_code_string_as_int32): Use network byte order. 2006-02-03 William Jon McCann * sources/rb-daap-source.c: Use RBDaapMdnsBrowser object. Use a hash for source lookup. (mdns_service_added, mdns_service_removed): Handle service-added and service-removed signals from RBDaapMdnsBrowser. (remove_source): GDestroyNotify function for when sources are removed from the hash. (start_browsing): Create RBDaapMdnsBrowser and source lookup. (stop_browsing): Unref RBDaapMdnsBrowser and destroy source lookup. (rb_daap_sources_shutdown): Update. (source_host_find): GHRFunc for finding a source by ip. (rb_daap_source_find_for_uri): Use the hash source lookup. * shell/rb-shell-preferences.c (share_check_button_toggled_cb): Namespace keys. (password_check_button_toggled_cb): Handle password enabled. (share_name_entry_focus_out_event_cb): Namespace keys. Handle changes more robustly. (share_password_entry_focus_out_event_cb): Handle password entry. (add_daap_preferences): Connect to password signals. * lib/rb-preferences.h: Add DAAP keys. * data/glade/daap-prefs.glade: Add password UI. * data/rhythmbox.schemas: Add password keys. * daapsharing/rb-daap-src.c (rb_daap_src_open): Replace assert with warning. * daapsharing/rb-daap-sharing.c: Fix includes. Move gconf keys to lib/rb-preferences.h. Namespace the gconf keys. (create_share): Add password support. (enable_sharing_changed_cb): Namespaced keys. (require_password_changed_cb): Handle key change. (share_name_changed_cb): Namespaced keys. (share_password_changed_cb): Handle key change. (rb_daap_sharing_init): Namespaced keys. (rb_daap_sharing_shutdown): Ditto. * daapsharing/rb-daap-share.[ch] (rb_daap_share_class_init): Add password property. (rb_daap_share_set_name): Break out prop set function. (published_cb): New RBDaapMdnsPublisher signal handler. (name_collision_cb): Ditto. (rb_daap_share_init): Create publisher object and connect to signals. (rb_daap_share_set_password, rb_daap_share_set_playlist_manager) (rb_daap_share_set_property): Break out prop set functions. (rb_daap_share_dispose): Stop publishing. Stop DAAP server. Unref publisher. (rb_daap_share_new): Add password argument. Start publishing and DAAP server. (message_set_from_rb_daap_structure): Change print to debug. (server_info_cb): Set auth method to publish. (logout_cb): Handle DAAP client logout. (update_cb): Remove C++ comments. (databases_cb): Ditto. Make message a warning. Make print a debug. (server_cb): Add debug. (soup_auth_callback): Handle auth requests. (rb_daap_share_server_start): Split up functions for starting server and publishing. Add auth handling to server. (rb_daap_share_server_stop): Split stop server and publish. No C++ comments. (rb_daap_share_publish_start, rb_daap_share_publish_stop): Start and stop publishing. (rb_daap_share_restart): Restart server and publishing. (rb_daap_share_maybe_restart): Conditionally restart. * daapsharing/rb-daap-dialog.c (rb_daap_password_dialog_new_run) (rb_daap_collision_dialog_new_run): Don't use separators in dialogs. * daapsharing/rb-daap-connection.h: Add private data to class structure. * daapsharing/rb-daap-connection.c: Move some includes to top of file. Make private data struct name consistent with others. (rb_daap_connection_class_init): Rename private. (rb_daap_connection_init): Get and store the pointer to the private data once instead of in every function. Create a username value "Rhythmbox_VERSION". (connection_get_password): Don't get private. (build_message): Ditto. (http_response_handler): Don't init variables in declaration. Add debug. Spacing. (http_get, entry_set_string_prop, handle_server_info) (handle_login, handle_update, handle_database_info) (handle_song_listing, handle_playlists, handle_playlist_entries) (rb_daap_connection_constructor, rb_daap_connection_logout) (rb_daap_connection_state_done): Don't get private. (rb_daap_connection_get_headers): Ditto. gchar yuck. spacing. Correctly base64 encode the Authentication token. Add username to auth token. (rb_daap_connection_get_playlists): Don't get private. (rb_daap_connection_dispose): Ditto. Free username. (rb_daap_connection_set_property) (rb_daap_connection_get_property): Don't get private. * daapsharing/Makefile.am: Conditionally compile MDNS backends. Add marshall stuff. * daapsharing/.cvsignore: Update. * configure.ac: Add conditional to see which MDNS backend we should use. * daapsharing/rb-daap-mdns.[ch]: Removed files. * daapsharing/rb-daap-marshal.list: * daapsharing/rb-daap-mdns-browser-avahi.c: * daapsharing/rb-daap-mdns-browser-howl.c: * daapsharing/rb-daap-mdns-browser.h: * daapsharing/rb-daap-mdns-publisher-avahi.c: * daapsharing/rb-daap-mdns-publisher-howl.c: * daapsharing/rb-daap-mdns-publisher.h: Split rb-daap-mdns.c into two classes. One for publishing and one for browsing. Split out the avahi and howl backends into different files. Fixes #322966 2006-02-04 James Livingston patch by: Jan Schmidt * rhythmdb/rhythmdb.c: (set_metadata_string_default_unknown): fix crash if metadata reader gives us NULL for strings. 2006-02-03 James Livingston * shell/rb-shell-player.c: (open_location_thread), (rb_shell_player_open_location): retrieve iradio playlists files in a thread, so that with GStreamer 0.10 the UI doesn't block while connecting to stations. The streamer connection is synchronous with 0.8, so that will still block (a bit). Fixed bug 128106. (rb_shell_player_set_playing_entry): don't call rb_shell_player_play, because _open_entry does that automatically when it is ready to. 2006-02-03 Jonathan Matthew * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_post_status_cell_data_func): Leave the podcast status column blank for episodes that have not been downloaded. 2006-02-03 James Livingston Add support for source-specific toolbar items, and make the Burn Playlist item only available for playlists. Also add Update All (podcast), Eject and Rip (audio cds). Fixes bug 329041. * data/ui/rhythmbox-ui.xml: * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (impl_get_ui_actions): make the Burn CD toolbar item only for playlists * lib/rb-stock-icons.c: (rb_stock_icons_init): * lib/rb-stock-icons.h: load the Eject icon as stock. * shell/rb-removable-media-manager.c: use the eject icon for the eject action * shell/rb-shell.c: (rb_shell_constructor), (merge_source_ui_cb), (rb_shell_select_source): * sources/rb-source.c: (rb_source_class_init), (rb_source_disconnect), (default_get_ui_actions), (rb_source_get_ui_actions): * sources/rb-source.h: add support for source-specific toolbar items * sources/rb-audiocd-source.c: (rb_audiocd_source_class_init): add Eject and Rip toolbar items * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (impl_add_to_queue), (impl_get_ui_actions): add Update All toolbar item. 2006-02-03 Jonathan Matthew * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_save): * shell/main.c: (main): * shell/rb-shell-player.c: (rb_shell_player_sync_play_order): Replace all g_critical calls with g_warning, since none of them are the sort of thing the process should die over. Fixes #329398. 2006-02-03 James Livingston * configure.ac: mention gst-plugins-base in the error message for not finding GStreamer 0.10, since not having that will cause it to fail. 2006-02-03 James Livingston * configure.ac: fix typo that means you get the wrong error message if you explicity request a particular playback engine, and it can't be found. 2006-02-03 James Livingston * data/glade/library-prefs.glade: allow the watched library location to be a non-local place. ============ Version 0.9.3 2006-02-02 James Livingston * NEWS: update NEWS * configure.ac: bump version to 0.9.3 * data/Makefile.am: pass make distcheck. patch from Christopher Aillon , fixed bug 329517. 2006-02-02 Jonathan Matthew Patch from Alex Lancaster * widgets/rb-song-info.c: (rb_song_info_constructor): Make year and disc number fields non-editable if tag editing is disabled. Fixes #329463. 2006-02-01 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_entry_removed_cb): handle hidden entries correctly. Fixes bug 327061. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_changed_cb): emit change notification of the HIDDEN property when an entry is removed for being hidden. * rhythmdb/rhythmdb-query-model.h: * sources/rb-iradio-source.c: (rb_iradio_source_do_query): * widgets/rb-entry-view.c: (rb_entry_view_set_property): remove query models's "connected" property. Whatever it was needed for seems to have gone. 2006-02-01 James Livingston patch by: Jonathan Matthew * shell/rb-shell-player.c: (_idle_unblock_signal_cb), (rb_shell_player_playing_changed_cb): block the signal to prevent re-entrancy. Fixes bug 329329 and fixes the first click of the play button pausing. 2006-02-01 James Livingston * metadata/rb-metadata-gst.c: a few gstreamer 0.10 fixes. Tag editing /should/ now work, if the neccessary plugins get ported. 2006-01-30 James Livingston * daapsharing/rb-daap-connection.c: (entry_set_string_prop): Set string properties to "Unknown" is the string is empty. Kind of fixes bug 327495. * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): only do the gettext calls once, rather than once per time the function is used. This stops us making tens of thousands of gettext calls on startup, which reduces the cpu-time of startup by 10-20% 2006-01-29 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): (rhythmdb_add_uri): * metadata/rb-metadata-gst.c: emit RB_METADATA_ERROR_NOT_AUDIO_IGNORE for files containing known video streams. 2006-01-29 Jonathan Matthew * INSTALL.quick: Random unupdates; gst-plugins-good isn't actually required. 2006-01-29 Jonathan Matthew * INSTALL.quick: More random updates * 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): Remove user sort data handling, take a property ID and a reverse flag instead. (rhythmdb_query_model_insert_into_main_list), (rhythmdb_query_model_insert_into_limited_list), (rhythmdb_query_model_do_reorder), (_reverse_sorting_func): Handle reverse sorting by calling _reverse_sorting_func, which calls the real sort function and reverses the result. (rhythmdb_query_model_set_sort_order): Allow this to be called to set the initial sort order for limited queries, and handle reverse sorting when reordering. (rhythmdb_query_model_location_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): Sort functions moved from rb-entry-view.c. * rhythmdb/rhythmdb-query-model.h: Add the sort functions, and update the changed functions. * widgets/rb-entry-view.c: (rb_entry_view_set_property): Just call _resort_model when the query model is set, since it does all the same things. (rb_entry_view_append_column): Rework bits so the rating column doesn't have to be so much of a special case. (rb_entry_view_append_column_custom): Take a property ID to sort on, rather than arbitrary custom data. (rb_entry_view_resort_model): Query model does all the reverse sort handling now. * widgets/rb-entry-view.h: Update _append_column_custom. * sources/rb-play-queue-source.c: (rb_play_queue_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_post_date_cell_sort_func), (rb_podcast_source_post_status_cell_sort_func), (rb_podcast_source_post_feed_cell_sort_func): Updates required by all the other changes. * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_drag_data_get): Sort the query results on the selected property, so they arrive in the expected order. All the other changes were made to make this possible. Fixes bug #327494. 2006-01-29 Jonathan Matthew * shell/rb-shell-clipboard.c: Use GTK_STOCK_REMOVE icon for the remove action in the play queue too. 2006-01-29 Jonathan Matthew * sources/rb-play-queue-source.c: (rb_play_queue_source_constructor), (rb_play_queue_source_update_count): Don't make the 'queued songs' column clickable, and add the queued song count to the column title. 2006-01-29 James Livingston * configure.ac: remove "experimental" marking from DAAP, and enable by default if the dependencies are found. 2006-01-29 James Livingston * NEWS: update NEWS 2006-01-29 James Livingston patch by: William Jon McCann * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_feed_title_cell_data_func): Revert the change of property used for the feed list. Fixes problem with feeds with no episodes not showing up. 2006-01-29 Jonathan Matthew * shell/rb-play-order-random-by-age-and-rating.c: (rb_random_by_age_and_rating_get_entry_weight): Fix compile errors, bug #328978. 2006-01-28 Jonathan Matthew * INSTALL.quick, README: Random updates * README.lirc: Add notes on controlling Rhythmbox with LIRC 2006-01-28 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): change the default rating back to 0 (from 2.5, which was needed for autorating). * shell/rb-play-order-random-by-age-and-rating.c: (rb_random_by_age_and_rating_get_entry_weight): * shell/rb-play-order-random-by-rating.c: (rb_random_by_rating_get_entry_weight): Treat ratings of 0 the same as 2.5 for the purposes of weighting entries. 2006-01-28 James Livingston * lib/rb-cut-and-paste-code.c: (rb_utf_friendly_time): Add some translator comments, to make it clearer what the "friendly time" formatting strings mean. 2006-01-27 Jonathan Matthew * daapsharing/rb-daap-connection.c: (http_response_handler): Fix the sense of the overflow check so it'll accept valid input. 2006-01-27 James Livingston Patch from Alex Lancaster * lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb): correctly escape paths when using rb_uri_handle_recursively. Closes bug 139646. 2006-01-27 Jonathan Matthew Patch by: Alex Lancaster * shell/rb-shell-player.c: (rb_shell_player_sync_with_source): Don't include the artist field in the window title if it's blank. Fixes #325973. 2006-01-26 William Jon McCann * shell/rb-shell-clipboard.c (rb_shell_clipboard_actions): Use stock delete icon for move to trash and stock remove for remove menu item. 2006-01-26 Jonathan Matthew * shell/rb-shell.c: (rb_shell_constructor), (idle_handle_load_complete): Don't start the playlist save timeout until we've loaded the playlists, otherwise we'll write an empty playlist file if startup takes too long. 2006-01-25 William Jon McCann * shell/rb-shell.c: Make view toolbar toggle use shift+ctrl+t. Fixes #327585. 2006-01-25 James Livingston patch by: Christope Fergeau * daapsharing/rb-daap-connection.c: (g_zalloc_wrapper), (http_response_handler): fix a potential buffer overflow issue. 2006-01-25 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_append_column): make the Year column wide enough to display "Unknown" 2006-01-25 James Livingston * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_post_status_cell_data_func): make the episode status wording better. Part of bug 321607. 2006-01-25 James Livingston * data/ui/rhythmbox-ui.xml: separate the Move to Trash menu item from others with a separator. * shell/rb-shell-clipboard.c: Rename "Delete" to "Remove" and use the stock Delete icon. 2006-01-24 Jonathan Matthew * data/rhythmbox.desktop.in: Add GTK to categories. Fixes #328047. 2006-01-23 James Livingston * widgets/eggtrayicon.c: (egg_tray_icon_notify): support libnotify 0.3.2. Fixed bug 328158. 2006-01-23 James Livingston * metadata/rb-metadata-gst.c: (gst_date_gulong_transform), (gulong_gst_date_transform), (rb_metadata_class_init): * metadata/rb-metadata.h: fix support for Year metadata in gst 0.10. 2006-01-23 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_finalize), (rhythmdb_commit_internal), (rhythmdb_entry_insert), (record_entry_change): Protect added_entries and changed_entries with a mutex, so it doesn't crash on startup on SMT/SMP machines. 2006-01-23 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_class_init): disable the browser for audio CDs. 2006-01-22 James Livingston * daapsharing/rb-daap-mdns.c: (get_avahi_client): don't pass NEVER_FAIL as it causes the daemon-not-running error to never be reported, resulting in bug 319438 re-occurring. 2006-01-22 Jonathan Matthew * sources/rb-podcast-source.c: (rb_podcast_source_cmd_update_all): Just call the podcast manager's update method. Unbreaks the 'update all feeds' command. 2006-01-22 Jonathan Matthew * sources/Makefile.am: Fix typo. Fixes bug #327970. 2006-01-21 Jonathan Matthew * configure.ac: Don't disable DAAP with gstreamer 0.10 * daapsharing/rb-daap-src.c: (_do_init), (rb_daap_src_base_init), (rb_daap_src_class_init), (rb_daap_src_init), (rb_daap_src_finalize), (rb_daap_src_set_property), (rb_daap_src_get_property), (rb_daap_src_write), (rb_daap_src_read), (_expect_char), (rb_daap_src_read_chunk_size), (_split_uri), (rb_daap_src_open): * daapsharing/rb-daap-src.h: Mostly fix seeking, handle chunked transfer encoding, and port to gstreamer 0.10. * player/rb-player-gst.c: * sources/rb-daap-source.c: (start_browsing), (stop_browsing): Remove rb_daap_src_initialize and rb_daap_src_shutdown. Fixes bugs #326738 and #318852, and brings #309609 one step closer to being fixed. 2006-01-21 James Livingston patch by: Alex Lancaster to add support for Year metadata in DAAP sources. Fixes bug 327700. * daapsharing/rb-daap-connection.c: (handle_song_listing): 2006-01-20 William Jon McCann * widgets/rb-simple-view.c (rb_simple_view_button_press_cb): Use enum values instead of magic numbers. * widgets/rb-property-view.c (rb_property_view_cell_data_func): Add number of songs that match each property title into the cell. Also show the number of properties that match in the All entry. (rb_property_view_constructor): Use enum values instead of magic numbers. * sources/rb-podcast-source.c (rb_podcast_source_constructor): Query podcast posts instead of feeds for browser. Use post SUBTITLE which is the location for the property view. (rb_podcast_source_feeds_show_popup_cb): Remove unused code. (construct_query_from_selection) (rb_podcast_source_cmd_delete_feed) (rb_podcast_source_cmd_properties_feed) (rb_podcast_source_cmd_update_feed): Use variable to make it clear what the selection data represents. (rb_podcast_source_feed_title_cell_data_func): Add number of posts that belong to each feed in the browser. * rhythmdb/rhythmdb-property-model.c (rhythmdb_property_model_set_property): Allow using SUBTITLE property. (rhythmdb_property_model_delete_prop): Decrement the refcount for the All entry. (rhythmdb_property_model_get_column_type): Use column enum values instead of magic numbers. Add NUMBER column. (rhythmdb_property_model_get_value): Use enum. Add NUMBER column that represents the refcount for the title of that property. (rhythmdb_property_model_perform_sync): Don't fake up a title for All here. Fixes #327372. 2006-01-21 James Livingston Make Rhythmbox start faster by not blocking the UI while database initialisation and loading occurs. Closes bug 323348. * rhythmdb/rhythmdb.c: (rhythmdb_init): make the library monitoring start 10 seconds later instead of immediately. (rhythmdb_commit_internal), (rhythmdb_commit): make rhythmdb_commit safe to call from any thread. (rhythmdb_process_metadata_load), (rhythmdb_process_events), (rhythmdb_load_thread_main), (rhythmdb_load): load the db in a thread, so the UI doesn't block. 2006-01-18 James Livingston * sources/rb-static-playlist-source.c: (rb_static_playlist_source_do_query): fix dumb mistake I made that would cause crashes. Oops. fixes bug 327477. 2006-01-17 William Jon McCann * player/rb-recorder-gst.c (rb_recorder_gst_free_pipeline): Set GST element state to NULL before unreffing. Fixes #327422. 2006-01-18 James Livingston * sources/rb-static-playlist-source.c: (rb_static_playlist_source_do_query): don't filter on the SONG entry type, since the playlists can contain non-song entries. Fixes bug 327448. * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init): disable the search box for the queue. 2006-01-18 James Livingston * sources/rb-podcast-source.c: (rb_podcast_source_constructor): allow dragging of podcast episodes. Fixed bug 327450. 2006-01-18 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_received): fix possible assertion when dragging to an emoty playlist. 2006-01-18 Jonathan Matthew * sources/rb-playlist-source-recorder.c: Make the fake NAUTILUS_BURN_CHECK_VERSION macro work properly. 2006-01-17 James Livingston patch by: Jonathan Matthew * sources/rb-audiocd-source.c: don't assert if MusicBrainz returns a different number of tracks than exist on the cd, since that happens with audio+data hybrid CDs. Part of bug 325046. 2006-01-17 Jonathan Matthew * sources/rb-playlist-source.c: (rb_playlist_source_constructor): Remove useless call to gtk_tree_view_column_set_clickable(). * widgets/rb-entry-view.c: (rb_entry_view_append_column_custom): Don't store sort data for columns if the sort function is NULL, so only sortable columns will be in the column sort data map. (rb_entry_view_set_columns_clickable): Only make columns we can sort on clickable. (rb_entry_view_constructor): The 'playing icon' column is never clickable, so don't connect a signal handler for it. Fixes bug 326811. 2006-01-17 James Livingston * metadata/rb-metadata-gst.c: don't set properties with gst 0.10 which are 0.8 only. Fix element detection. * rhythmdb/rhythmdb.c: (action_thread_main): reload old metadata is saving the new metadata failed 2006-01-17 James Livingston * shell/rb-shell-player.c: (do_next_idle), (rb_shell_player_cmd_previous), (rb_shell_player_cmd_next), (eos_cb): release audio device when a playlist finishes. Fixes bug 323679. 2006-01-17 James Livingston * rhythmdb/rhythmdb.c: (set_props_from_metadata), (queue_stat_uri): canonicalise the URIs when things are added via library watching. 2006-01-16 William Jon McCann * sources/rb-playlist-source-recorder.c (update_speed_combobox): Off by one error in default speed index. 2006-01-16 William Jon McCann * sources/rb-playlist-source-recorder.c (get_write_speeds) (update_speed_combobox, update_speed_combobox): Get a list of the actually supported write speeds from n-c-b >= 2.13.90. Otherwise use fallback list. 2006-01-17 James Livingston * lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb), (rb_uri_handle_recursively): use gnome_vfs_directory_visit, so we don't get stuck on recursive symlinks. Fixed bug 125452. 2006-01-17 James Livingston Add support for mass-storage audio players. Players are detected via either the HAL "audio_player" capability, or a ".is_audio_player" file in the root of the volume. Closes bug 325602. * configure.ac: separate using HAL from ipod support. * lib/rb-file-helpers.c: (rb_uri_is_local): * lib/rb-file-helpers.h: add function to determine whether a URI is local. * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal), (rhythmdb_process_stat_event), (rhythmdb_process_metadata_load), (rhythmdb_process_file_created_or_modified), (queue_stat_uri), (queue_stat_uri_tad), (add_thread_main), (action_thread_main), (rhythmdb_add_uri), (rhythmdb_add_uri_with_type): * rhythmdb/rhythmdb.h: add rhythmdb_add_uri_with_type, so that directories can be scanned for files to add as non-SONG entries. * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): add checking for mass-storage players. * sources/rb-audiocd-source.c: (rb_audiocd_source_new): * sources/rb-ipod-source.c: (rb_ipod_source_new), (hal_udi_is_ipod): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init), (rb_removable_media_source_constructor): move some things up to the RBRemovableMediaSource, rather than making subclasses do it. * sources/Makefile.am: * sources/rb-generic-player-source.c: * sources/rb-generic-player-source.h: add mass-storage player source. 2006-01-16 James Livingston patch by: William Jon McCann * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_base_row_deleted): fix build issue from last commit. 2006-01-16 James Livingston Patch to add support for "chained queries" and putting hidden tracks in query models. Use chained queries to add search box support to normal playlists, and to make hidden entries not get lost. Fixes bug 319278. * 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): add "show-hidden" and "base-model" properties. (rhythmdb_query_model_set_connected), (rhythmdb_query_model_has_pending_changes), (rhythmdb_query_model_entry_added_cb), (rhythmdb_query_model_entry_changed_cb), (idle_process_update), (rhythmdb_query_model_add_entry), (rhythmdb_query_model_do_insert), (rhythmdb_query_model_remove_entry), (rhythmdb_query_model_drag_data_received), (rhythmdb_query_model_base_row_inserted), (rhythmdb_query_model_base_row_deleted), (rhythmdb_query_model_base_non_entry_dropped), (rhythmdb_query_model_base_complete), (rhythmdb_query_model_base_entry_prop_changed), (rhythmdb_query_model_base_rows_reordered), (rhythmdb_query_model_row_drop_possible): handle base-model by chaining events and operations where necessary. Make hidden entries not get added only if "show-hidden" is false. (rhythmdb_query_model_child_index_to_base_index), (rhythmdb_query_model_base_index_to_child_index), (rhythmdb_query_model_get_entry_index): utility functions for handling base-model entries. (rhythmdb_query_model_reapply_query): apply the current query, and remove entries that don't match it. * rhythmdb/rhythmdb-tree.c: (do_query_recurse): small optimisation for empty queries. * sources/rb-source.c: (rb_source_set_property): move the unref later to fix problem if it is the last reference. * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_init), (rb_static_playlist_source_finalize), (rb_static_playlist_source_constructor), (impl_reset_filters), (impl_search), (rb_static_playlist_source_do_query), (impl_save_contents_to_xml), (rb_static_playlist_source_add_location_internal): use a chained query model to filter out hidden entries and implement the search box. 2006-01-15 James Livingston * sources/rb-playlist-source.c: (rb_playlist_source_new_from_xml): fix the default playlist loading, which I broke earlier. 2006-01-15 James Livingston patch by: William Jon McCann * sources/rb-playlist-source.c: (playlist_iter_func): use totem-plparser's new API version macros to check for API changes. Handle the recent API change. 2006-01-15 Jonathan Matthew * sources/rb-library-source.c: (impl_get_config_widget): Ref the preferences object to match the unref in the finalizer. Fixes some portion of #323505. 2006-01-15 Jonathan Matthew * shell/rb-audioscrobbler.c: (rb_audioscrobbler_parse_response): * shell/rb-removable-media-manager.c: (begin_cd_drive_monitor): Fix valgrind warnings about accessing uninitialised values. 2006-01-14 William Jon McCann * sources/rb-playlist-source-recorder.c: Make build on 2.12 again. 2006-01-14 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_sync_buttons): Use RB_ENTRY_VIEW_NOT_PLAYING state when there's no playing entry. Stops the 'now playing' icon from being displayed after the play order finishes. 2006-01-14 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_db_entry_deleted_cb): Don't try to delete files we never downloaded, and cancel downloads for deleted episodes. Fixes bug #326862. * sources/rb-podcast-source.c: (rb_podcast_source_cmd_delete_feed): Don't complain about NULL data items in the selection list. 2006-01-14 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_set_property): Make the name ofthe queue non editable. Fixes bug 326918. 2006-01-13 William Jon McCann * sources/rb-playlist-source-recorder.c (burn_cd) (ask_rewrite_disc): Don't use our locally copied functions if we have at least 2.13. 2006-01-13 William Jon McCann * podcast/rb-podcast-manager.c (rb_podcast_manager_class_init): Correct the argument type for the process_error signal. May fix bug #323154. 2006-01-13 James Livingston save the queue to disk when exiting, and reload on startup. Fixed bug 326677 . * shell/rb-playlist-manager.c: (rb_playlist_manager_load_playlists), (rb_playlist_manager_save_playlists_async): don't disable saving of the queue * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property): add the queue source as a gobject property. * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init), (impl_save_contents_to_xml): add code to save the queue to xml * sources/rb-playlist-source.c: (rb_playlist_source_new_from_xml): load the queue from xml. * sources/rb-playlist-xml.h: * sources/rb-static-playlist-source.c: (rb_static_playlist_source_load_from_xml), (rb_static_playlist_source_new_from_xml): * sources/rb-static-playlist-source.h: split the playlist xml loading from the static playlist creation function, so the queue can use it. 2006-01-13 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_entry_set_visibility): remove assertion that should be there. Fixes bug 325923. * rhythmdb/rhythmdb.c: (rhythmdb_entry_new): make rhythmdb_entry_new return NULL if the entry already exists (e.g. as another type). * daapsharing/rb-daap-connection.c: (handle_song_listing): * podcast/rb-podcast-manager.c: (rb_podcast_manager_add_post), (rb_podcast_manager_insert_feed): * sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry): * sources/rb-ipod-source.c: (load_ipod_db_idle_cb): * sources/rb-iradio-source.c: (rb_iradio_source_add_station): check for the above function returning NULL. 2006-01-12 James Livingston * doc/reference/Makefile.am: make gtk-docs build again when libnotify is enabled. Fixes bug 326673. * doc/reference/tmpl/eggtrayicon.sgml: * doc/reference/tmpl/rb-daap-src.sgml: * doc/reference/tmpl/rb-source.sgml: * doc/reference/tmpl/rb-statusbar.sgml: * doc/reference/tmpl/rb-tree-model-sort.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb.sgml: updated gtk-docs 2006-01-11 James Livingston * widgets/rb-song-info.c: (rb_song_info_constructor), (rb_song_info_new), (rb_song_info_populate_dialog_multiple), (rb_song_info_populate_dialog): fill in the fields if all tracks have the same value for properties. From bug 326054. 2006-01-11 James Livingston * sources/rb-source.h: * shell/rb-shell-player.c: (rb_shell_player_set_playing_entry), (rb_shell_player_set_playing_source_internal), (eos_cb): add support for RB_SOURCE_EOF_STOP, so that playback will stop after every entry. * sources/rb-podcast-source.c: (impl_handle_eos): make the podcast source use this. Closes bug 322077. 2006-01-10 William Jon McCann * widgets/eggtrayicon.c (egg_tray_icon_notify): In order for set_icon_data_from_pixbuf() to be effective, one must not set an icon in _new(). 2006-01-10 William Jon McCann * widgets/eggtrayicon.c (egg_tray_icon_init) (egg_tray_icon_unrealize, egg_tray_icon_cancel_message) (egg_tray_icon_notify): Add support for libnotify 0.3. * widgets/Makefile.am: Add missing NOTIFY_CLAGS. * configure.ac: Determine the version of libnotify. Fixes #326333. 2006-01-08 James Livingston * daapsharing/rb-daap-share.c: (add_entry_to_mlcl): fix crasher when trying to share a track with unknown length. 2006-01-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_init): Sync volume on startup so it doesn't default to 0. 2006-01-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_get_property), (rb_shell_player_open_location), (info_available_cb): Add the iradio streamed song title as a property, and emit a signal when it changes. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_player_elapsed_changed_cb), (rb_shell_player_stream_song_changed_cb): Issue a notification when the iradio song title changes. Fixes #326166. 2006-01-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_init), (rb_shell_player_finalize), (rb_shell_player_set_property), (rb_shell_player_get_property), (rb_shell_player_sync_volume), (rb_shell_player_toggle_mute), (rb_shell_player_set_volume), (rb_shell_player_set_volume_relative), (rb_shell_player_get_volume), (rb_shell_player_set_mute), (rb_shell_player_get_mute): * shell/rb-shell-player.h: * shell/rb-shell-player.xml: Store volume as a property on RBShellPlayer, rather than in gconf. Add some methods to control volume via dbus. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_volume_widget_changed_cb), (rb_shell_player_volume_changed_cb): * shell/rb-tray-icon.c: (rb_tray_icon_scroll_event_cb): Update volume using player properties rather than gconf, and sync the volume with the volume control button when something else changes it. Fixes #323840. 2006-01-07 William Jon McCann * shell/rb-tray-icon.c (tray_popup_position_menu): Make tray menu align with edge of panel. patch from Jaap A. Haitsma Fixes #319913 2006-01-07 William Jon McCann * shell/rb-shell.c (sourcelist_drag_received_cb): * shell/rb-playlist-manager.[ch] (create_name_from_selection_data) (rb_playlist_manager_new_playlist_from_selection_data): Make a reasonable default name for playlists created from dropped data. Fixes #326116. 2006-01-07 William Jon McCann * sources/rb-playlist-source-recorder.c (update_speed_combobox): Use new gconf key. (burn_cd): Always eject CD after burning. Too many drives get confused if we don't. Save the speed used if the burn was completed successfully. * data/rhythmbox.schemas: Use our own speed instead of from n-c-b. The situation is that the default_speed for n-c-b is most likely the maximum write speed. This is fine for n-c-b because it has burn-proof turned on. We can't turn it on for audio CDs because the results are poor in quality. So we'll just pick a default that should work for everyone (4). 2006-01-07 Jonathan Matthew * shell/rb-playlist-manager.c: (reap_dead_playlist_threads), (rb_playlist_manager_shutdown): Fix more compile errors with GCC 4.1. 2006-01-07 Jonathan Matthew * shell/rb-shell.c: (rb_shell_add_uri): Fix compile error introduced in my previous commit. Fixes #326037. 2006-01-06 Ryan P Skadberg patch by: Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_event_free): Fixed compile error on Fedora Rawhide. 2006-01-07 Jonathan Matthew * shell/rb-shell.c: (rb_shell_guess_type_for_uri): Assume HTTP URLs ending with .xml or .rss are podcasts. (rb_shell_add_uri): Handle adding podcast feeds. * sources/rb-podcast-source.c: (rb_podcast_source_new): Register as the source for podcast feeds. 2006-01-07 Jonathan Matthew * shell/rb-audioscrobbler.c: (rb_audioscrobbler_set_property): * shell/rb-shell-preferences.c: (rb_shell_preferences_append_page), (rb_shell_preferences_append_view_page): * shell/rb-shell-preferences.h: Fix typo in function name. Fixes #325992. 2006-01-07 Jonathan Matthew * shell/rb-audioscrobbler.c: Add '+' to the list of characters to URI-encode, so it doesn't get interpreted as a space. 2006-01-06 Jonathan Matthew * daapsharing/rb-daap-connection.c: (rb_daap_connection_logout), (rb_daap_connection_do_something): Don't crash if the DAAP server goes away while we're still trying to log in. 2006-01-06 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_query_preprocess): fix Year criteria. 2006-01-06 James Livingston Patch from: Alex Lancaster to add support for Year to automatic playlists. Closes bug 321341. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property): * rhythmdb/rhythmdb-tree.c: (evaluate_conjunctive_subquery): * rhythmdb/rhythmdb.c: (rhythmdb_query_parse_valist), (rhythmdb_query_free), (rhythmdb_query_serialize), (rhythmdb_query_deserialize), (rhythmdb_query_internal), (rhythmdb_query_get_type), (rhythmdb_query_preprocess): * rhythmdb/rhythmdb.h: Support special RHYTHMDB_QUERY_PROP_YEAR_{EQUALS,GREATER,LESS} database search for year in date. * widgets/rb-query-creator-properties.c: (yearCriteriaCreateWidget), (yearCriteriaSetWidgetData), (yearCriteriaGetWidgetData): add Year to the list of criteria options. 2006-01-06 James Livingston * configure.ac: make the playback backend selection work correctly * daapsharing/rb-daap-src.c: (rb_daap_src_get_type), (rb_daap_src_class_init), (rb_daap_src_dispose), (rb_daap_src_change_state), (rb_daap_src_initialize): * daapsharing/rb-daap-src.h: revent the G_DEFINE_TYPE change, since it doesn't work for this class. Fixes bug 325934 2006-01-06 Jonathan Matthew * configure.ac: Fix check for libnotify. 2006-01-05 William Jon McCann * sources/rb-playlist-source.c (xml_get_and_trim_names): Get name element for current lang and remove all name nodes from the XML tree. (get_playlist_name_from_xml): Try to get name element or fall back to name attribute. (rb_playlist_source_new_from_xml): Get name before turning over to sub-types for parsing so that we can remove name elements from the tree if necessary. * shell/rb-playlist-manager.c (rb_playlist_manager_load_playlists): Load default playlists file if per user playlists are not found. * data/playlists.xml.in: * data/Makefile.am: * data/.cvsignore: Add default set of playlists. Fixes #323004 2006-01-05 Jonathan Matthew * shell/main.c: (main): Don't use the dbus interface to show the window if we're also going to use the bonobo interface. 2006-01-05 Jonathan Matthew * shell/rb-history.c: (rb_history_set_playing): Allow setting the playing song to NULL. (rb_history_append), (rb_history_delete_link): Don't randomly change position when entries are added and removed, it confuses play orders. * shell/rb-play-order-random.c: (rb_random_play_order_class_init): Random orders always have a next entry if the model is not empty. (rb_random_play_order_get_next), (rb_random_play_order_go_next): Go back to the start of the history if we're past its end. * shell/rb-play-order-shuffle.c: (rb_shuffle_play_order_get_next), (rb_shuffle_play_order_go_next): Go back to the start of the history if we're past its end. (rb_shuffle_sync_history_with_query_model): Go back to the start of the history if the current entry is removed. * shell/rb-play-order.c: (rb_play_order_entry_added_cb), (rb_play_order_entry_deleted_cb): Only update have next/previous for the play order when the query has finished. This wasted about 10% CPU while the query was running. Fixes #324641: assertion failures when the query model was changed such that the playing song was no longer present. 2006-01-05 James Livingston * daapsharing/rb-daap-src.c: (rb_daap_src_class_init), (rb_daap_src_dispose), (rb_daap_src_change_state): * rhythmdb/rhythmdb-gda.c: (rhythmdb_gda_class_init), (rhythmdb_gda_finalize): * widgets/rb-cell-renderer-pixbuf.c: * widgets/rb-cell-renderer-rating.c: (rb_cell_renderer_rating_class_init), (rb_cell_renderer_rating_finalize): * widgets/rb-druid.c: (rb_druid_class_init), (rb_druid_finalize): * widgets/rb-load-failure-dialog.c: (rb_load_failure_dialog_class_init), (rb_load_failure_dialog_finalize): * widgets/rb-rating.c: (rb_rating_class_init), (rb_rating_finalize): * widgets/rb-search-entry.c: (rb_search_entry_class_init), (rb_search_entry_finalize): use G_DEFINE_TYPE * widgets/rb-tree-model-sort.{c.h}: remove obsolete files from cvs. 2006-01-05 James Livingston patch by: Lubomir Marinov * shell/rb-commander.{c,h}: remove obsolete files, that weren't put in the tarball. * shell/rb-history.c: (rb_history_class_init), (rb_history_finalize): * shell/rb-playlist-manager.c: (rb_playlist_manager_class_init), (rb_playlist_manager_finalize): * shell/rb-remote.c: (rb_remote_finalize), (rb_remote_class_init), (rb_remote_init): use G_DEFINE_TYPE. 2006-01-05 James Livingston * configure.ac: don't try to use libnotify >= 0.3.0 because of API changes 2006-01-04 William Jon McCann * shell/rb-playlist-manager.c (rb_playlist_manager_set_property): Disable burn action when source is not a playlist. Fixes #323578. 2006-01-04 Jonathan Matthew Optionally use libnotify to display song change and other notifications, and provide an option to disable notifications. Fixes #320355 and innumerable informal complaints. * widgets/eggtrayicon.c: (egg_tray_icon_init), (egg_tray_icon_unrealize), (egg_tray_icon_send_message), (egg_tray_icon_cancel_message), (egg_tray_icon_hide_notify_cb), (egg_tray_icon_notify): * widgets/eggtrayicon.h: * configure.ac: * shell/Makefile.am: Optionally use libnotify instead of eggnotificationbubble. * shell/rb-tray-icon.c: (rb_tray_icon_class_init), (rb_tray_icon_constructor), (rb_tray_icon_show_notifications_changed_cb), (rb_tray_icon_hide_notify_cb) (rb_tray_icon_cancel_notify), (rb_tray_icon_notify): Add 'show notifications' action handling, use G_DEFINE_TYPE, move EggNotificationBubble pointer to eggtrayicon. * data/ui/rhythmbox-ui.xml: Add 'show notifications' menu item * lib/rb-preferences.h: Add #define for /ui/show_notifications key * data/rhythmbox.schemas: Add schema for /ui/show_notification key 2006-01-04 William Jon McCann * sources/rb-playlist-source-recorder.c (rb_playlist_source_recorder_init): Request a minimum size for the progress bar so that the window doesn't shrink too small. 2006-01-03 Jonathan Matthew * daapsharing/rb-daap-share.c: (databases_cb): (db_entry_added_cb), (add_db_entry), (db_entry_deleted_cb): Don't track the number of songs currently present, track the next ID to assign. Fixes potential ID conflict problems. (db_entry_changed_cb), (rb_daap_share_start_publish), (rb_daap_share_stop_publish): Watch for db entry changes, and when songs become non-hidden after a successful stat, add them to the mapping tables. Fixes #325178, making the DAAP server usable again. 2006-01-03 Jonathan Matthew * shell/rb-statusbar.c: (rb_statusbar_class_init), (rb_statusbar_construct), (rb_statusbar_init), (rb_statusbar_finalize), (rb_statusbar_set_property), (rb_statusbar_get_property), (rb_statusbar_new), (rb_statusbar_sync_with_source): * shell/rb-statusbar.h: Remove visibility management code, stop watching for play order changes (status bar doesn't show play order any more), remove unused 'player' property, and some other minor cleanup. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_view_statusbar_changed_cb), (rb_shell_sync_smalldisplay), (rb_shell_sync_statusbar_visibility): Manage status bar visibility here rather than in the status bar itself, so we can take small mode into account. Fixes #323589. 2006-01-03 Jonathan Matthew * widgets/eggnotificationbubble.c: (draw_bubble): Move the bubble off the visible screen while setting up bevels. Fixes #316810. 2006-01-01 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_init), (rb_shell_player_finalize): Remove unused structure members. (do_next_idle), (rb_shell_player_error): Only queue one call to do_next_idle, so we don't skip tracks if we get two errors for the same song. Fixes #325216. 2006-01-01 Jonathan Matthew * data/glade/podcast-feed-properties.glade, podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_init), (rb_feed_podcast_properties_dialog_update): Add 'last episode' field to the podcast feed properties dialog. * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_update_last_update), (rb_feed_podcast_properties_dialog_update_last_episode), podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): Use last-seen property for the time at which we last updated the feed, and post-time for the time the last episode was published. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): Handle upgrades from 0.9.2; if no post-time was found for a podcast feed, use last-seen (which in 0.9.2 was the last post time). Fixes #323894. 2006-01-01 James Livingston patch by: Gunnar Steinn Magnusson * sources/rb-ipod-source.c: (load_ipod_db_idle_cb): read playcount and year from the ipod database. 2006-01-01 Jonathan Matthew * metadata/rb-metadata-gst.c: (rb_metadata_gst_new_decoded_pad_cb): Only set the pipeline back to NULL state for really uninteresting files. This was causing deadlocks with various video files. Fixes #324912. 2006-01-01 Jonathan Matthew * data/glade/song-info-multiple.glade: Add disc number label and field. * widgets/rb-song-info.c: (rb_song_info_construct_single), (rb_song_info_constructor): Handle widgets for disc number. (rb_song_info_sync_entries_multiple): Set disc number property on selected entries. Fixes #324777. 2006-01-01 Jonathan Matthew * iradio/rb-new-station-dialog.c: (rb_new_station_dialog_init): * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init): Activate the default widget when enter is pressed in these dialogs. Fixes #322887. 2006-01-01 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_get_playing_path): Use rb_shell_player_get_playing_entry, so we get the right entry when playing from the queue. Fixes #325379. 2005-12-31 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): Include podcast posts with no publication date. Typically seen in static collections rather than feeds. 2005-12-31 Jonathan Matthew * shell/main.c: (main): Don't attempt to handle bonobo-only arguments if we couldn't get a bonobo client proxy. 2005-12-31 Jonathan Matthew * daapsharing/rb-daap-mdns.c: (rb_daap_mdns_publish), (rb_daap_mdns_publish_cancel): Clear our_service_name so we don't abort if daap sharing is disabled and then re-enabled. 2005-12-29 William Jon McCann * podcast/rb-podcast-parse.c (rb_insert_item): Add debugging. (rb_podcast_parser_start_element): Support itunes:image. Add debugging. Don't abuse the break statement. Warn if state is unknown. (rb_podcast_parser_end_element): Add debugging. Warn if state is unknown. (rb_podcast_parser_characters): Warn if state is unknown. Fixes parsing of feeds that use the itunes:image element. Fixes #324632 2005-12-28 Jonathan Matthew * sources/rb-iradio-source.c: (handle_playlist_entry_cb), (stations_view_drag_data_received_cb): Remove calls to rhythmdb_entry_lookup_by_location, as rb_iradio_source_add_station does that anyway. (rb_iradio_source_add_from_playlist): If the URL doesn't point to a playlist, add it as the stream URL instead. 2005-12-27 Jonathan Matthew * rhythmdb/rhythmdb.h: (rhythmdb_entry_get_string): just return NULL for RHYTHMDB_PROP_SEARCH_MATCH, so we don't get an assertion failure. Fixes #325025. 2005-12-24 Jonathan Matthew * shell/main.c: (load_uri_args): don't compile this in if neither bonobo nor dbus are enabled. Fixes #324890. 2005-12-22 Jonathan Matthew * sources/rb-audiocd-source.c: (rb_audiocd_scan_songs): Always return the pipeline to NULL state, so it closes the device. 2005-12-20 James Livingston * metadata/rb-metadata-gst.c: make the state changes time-out again, so that it doesn't spend forever getting stuck on the one file. Don't report errors for failing to change state on known non-audio files. * player/rb-player-gst.c: (rb_player_construct): let playbin deal with audio sink creation if we can't create the gconfaudiosink. This lets it work with only gst-plugins-base on 0.10. 2005-12-20 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_sort_order): Fix a tiny memory leak in the previous commit. 2005-12-20 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_sort_order): Don't try to emit reorders for empty query models, since it doesn't achieve anything and it results in a few warnings. 2005-12-19 William Jon McCann * sources/rb-playlist-source-recorder.c (rb_playlist_source_recorder_init): Make burn dialog non-resizable so that the expander can shrink. Fixes #308951. 2005-12-19 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_entry_insert): really refuse to add entries without a location, rather than those with one. 2005-12-19 James Livingston * shell/rb-shell-player.c: (rb_shell_player_cmd_play): don't crash if the error isn't set. 2005-12-19 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): don't add entries without a location. Fixes bug 324290. * rhythmdb/rhythmdb.c: (rhythmdb_entry_insert): refuse to add entries without a location. * shell/main.c: (main): don't crash if dbus initialisation fails without setting an error 2005-12-19 Jonathan Matthew * sources/rb-library-source.c: Remove unused structure members (rb_library_source_do_query): Actually use the cached 'all' query. Fixes #324025. 2005-12-16 Jonathan Matthew * sources/rb-audiocd-source.c (rb_audiocd_get_cd_info): tab (rb_audiocd_scan_songs): Return boolean success/failure, fix error messages a bit. (metadata_cb): Don't crash if we have no tracks (rb_audiocd_load_songs): Don't try to read metadata if we can't read the CD. Fixes #324222. 2005-12-15 William Jon McCann * shell/rb-shell.c (rb_shell_sync_fullscreen) (rb_shell_view_fullscreen_changed_cb): Fix sense of fullscreen gconf key. Patch from Jonathan Matthew Fixes #324157 2005-12-14 William Jon McCann * shell/rb-shell.c (rb_shell_constructor, rb_shell_finalize) (rb_shell_view_fullscreen_changed_cb, rb_shell_sync_fullscreen) (fullscreen_changed_cb): * lib/rb-preferences.h: * data/ui/rhythmbox-ui.xml: * data/rhythmbox.schemas: Add fullscreen mode. Fixes #324075. 2005-12-14 Ryan P Skadberg * configure.ac: Removed DBUS_SERVICES_DIR from top-level configure. It was not working with RPM. * data/Makefile.am: Switched dbus directory location to use datadir instead of variable that was not working. 2005-12-13 James Livingston patch by: Alex Lancaster * sources/rb-podcast-source.c: (rb_podcast_source_class_init): make the podcast browser work again. Closes bug 323856. 2005-12-12 William Jon McCann * sources/rb-podcast-source.c (rb_podcast_source_cmd_properties_feed): Remove C99ism. * lib/rb-cut-and-paste-code.c: (eel_strdup_strftime), (rb_utf_friendly_time): * lib/rb-cut-and-paste-code.h: * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_parse_time): * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_parse_time): use rb_utf8_friendly_time to display the date in a more user friendly way. For example, if the feed was updated yesterday it will say: Last updated: Yesterday 10:00 AM instead of printing the date. 2005-12-12 William Jon McCann * podcast/rb-podcast-parse.c (rb_set_channel_value) (rb_set_item_value, rb_insert_item, rb_validate_channel_propert) (rb_validate_item_propert, rb_podcast_parser_start_element) (rb_podcast_parser_end_element, rb_podcast_parser_characters): Use RB style. Check for NULL before strcmp. No C++ comments. (rb_podcast_parse_load_feed): Fix double free of xmlSAXHandler. Don't set invalid mime type when mime type is NULL. Fix leaks. (rb_podcast_parse_date): Add support for some real world date formats. (rb_podcast_parse_time, rb_podcast_parse_channel_free) (rb_podcast_parse_item_free): Style and no need to check for NULL before g_free. May fix #323742 2005-12-12 James Livingston * player/rb-recorder-gst.c: (rb_recorder_construct): use audioresample with gstreamer 0.10, which replaced audioscale. * shell/rb-audioscrobbler.c: (rb_audioscrobbler_finalize): use correct function to free the SoupSession * shell/rb-source-header.c: (rb_source_header_set_property), (rb_source_header_disclosure_toggled_cb), (rb_source_header_view_browser_changed_cb), (rb_source_header_sync_control_state): * sources/rb-iradio-source.c: (rb_iradio_source_class_init): * sources/rb-library-source.c: (rb_library_source_class_init): * sources/rb-source.c: (rb_source_class_init), (rb_source_get_status), (default_get_browser_key), (rb_source_get_browser_key), (rb_source_can_browse), (rb_source_notify_status_changed), (rb_source_notify_filter_changed): * sources/rb-source.h: seperate the enabling of browsers from the use of a gconf key. 2005-12-11 William Jon McCann * data/glade/podcast-feed-properties.glade: * data/glade/podcast-properties.glade: Use scrolled viewports for description text. Fix regression of #320509. 2005-12-11 James Livingston * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (impl_reset_filters), (impl_search), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_get_query): add support for the search box to automatic playlists. * sources/rb-library-source.c: (rb_library_source_dispose): fix minor memory leak. 2005-12-11 James Livingston * NEWS: update NEWS 2005-12-11 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_sync_library_idle), (rhythmdb_load), (monitor_subdirectory), (rhythmdb_sync_library_location): start the library sync and monitoring in an idle callback. 2005-12-10 William Jon McCann * sources/rb-podcast-source.c (rb_podcast_source_class_init) (rb_podcast_source_constructor): Remove unused pixbuf column. (rb_podcast_source_set_property, rb_podcast_source_get_property): Use consistent style. Fixes #322961. 2005-12-11 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_init), (rhythmdb_property_model_finalize), (rhythmdb_property_model_insert), (rhythmdb_property_model_delete_prop): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_init), (rhythmdb_tree_finalize), (rhythmdb_tree_property_new), (destroy_tree_property): * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_finalize), (rhythmdb_entry_allocate), (rhythmdb_entry_destroy): remove the use of GMemChunks, they are crap and deprecated. Improves startup-time and memory usage slightly. 2005-12-10 William Jon McCann * shell/rb-shell.c (rb_shell_cmd_about): Updated copyright. Added license and website info. * MAINTAINERS.old: Add Colin. * MAINTAINERS: Add James. * AUTHORS: Put back in order. Add extra space between name and email to make it easier to read. Add James and jonathan. * widgets/rb-song-info.c (rb_song_info_init) (rb_song_info_constructor): Make sure close button is primary/rightmost. 2005-12-10 Jonathan Matthew Play queue implementation. Closes bug 107787. * data/rhythmbox.schemas: add items for whether the queue should be displayed as a sidebar, and the height of the sourcelist if it is. * data/ui/rhythmbox-ui.xml: add 'add to queue' actions for library, playlist, and podcast popups; add 'view queue as sidebar' menu item, add popups for queue as source and as sidebar. We need a separate popup for the sidebar view because otherwise it's hard to tell which of the visible entry views the action came from. * lib/rb-preferences.h: Add constant for queue-as-sidebar preference * po/POTFILES.in: Add new file * podcast/rb-podcast-manager.{c,h} (rb_podcast_manager_entry_downloaded): Add helper function for deciding if a podcast episode is available for playback. * rhythmdb/rhythmdb-query-model.{c,h}: Add ability to programmatically reorder entries in the query model. (idle_process_update): Handle new update type used to insert entries at a particular position in the query model. (rhythmdb_query_model_add_entry): Use new update type, take an 'index' parameter to specify the position (-1 meaning 'at the end'). (rhythmdb_query_model_insert_into_main_list): Handle the 'index' parameter. (rhythmdb_query_model_remove_from_main_list): Abort if we're getting bad entry removal updates for entries that aren't in the model. (rhythmdb_query_model_emit_reorder): Add helper function for reordering rows. (rhythmdb_query_model_move_entry): New method for moving entries around in the model (rhythmdb_query_model_entry_added_cb), (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_do_reorder), (rhythmdb_query_model_do_insert): Pass through the index parameter, use rhythmdb_query_model_emit_reorder where appropriate. * shell/rb-playlist-manager.c (rb_playlist_manager_set_property): Don't allow the queue to be deleted. (handle_playlist_entry_cb): Update for method signature change (rb_playlist_manager_save_playlists_async), (rb_playlist_manager_get_playlists): Don't save the play queue, don't report it as a playlist. * shell/rb-play-order.c: Include queue play order in the list of available orders. * shell/rb-shell.c (rb_shell_class_init), (rb_shell_get_property): Add new property for access to the clipboard object. (rb_shell_constructor): Handle playing-from-queue signal to update the sourcelist display; add queue sidebar in to UI, listen for queue sidebar pane changes, and read initial settings from gconf. (rb_shell_playing_source_changed_cb), (rb_shell_playing_from_queue_cb): Only tell the sourcelist the source has changed if the new source is not the queue, as we update the sourcelist differently in that case. (rb_shell_set_window_title): Only use the cached window title if the playing state was the same when it was created. (rb_shell_view_queue_as_sidebar_changed_cb): Mangle UI on request. (rb_shell_sync_pane_visibility): Only hide the side pane if the sourcelist is hidden and the queue is shown as a source. (rb_shell_sync_smalldisplay): Disable 'view queue as sidebar' in small mode, since it doesn't make any sense. (sourcelist_visibility_changed_cb): Update the visibility of the pane too. (rb_shell_sync_paned): Update the queue sidebar pane separator too. (sidebar_paned_size_allocate_cb): Update sourcelist height in gconf. (rb_shell_jump_to_entry_with_source): Handle jump to entry when playing from queue shown as sidebar. * shell/rb-shell-clipboard.c: Use G_DEFINE_TYPE, move the MusicProperties action here from rb-shell-player.c, since it acts like cut/copy/paste etc. (rb_shell_clipboard_class_init), (rb_shell_clipboard_set_property), (rb_shell_clipboard_get_property): new property for queue source. Watch for selection changes in the sidebar entry view as well as the normal one. (rb_shell_clipboard_sync): Rearrange code slightly, include sidebar actions and MusicProperties. (rb_shell_clipboard_cmd_queue_delete), (rb_shell_clipboard_cmd_add_song_to_queue), (rb_shell_clipboard_cmd_song_info), (rb_shell_clipboard_cmd_queue_song_info): New action handlers. * shell/rb-shell-player.{c,h}: Track the source the current playing entry actually came from (could be the playing source, or the queue), add a new play order object for the queue, add a property for the queue source, add a signal for when we switch between playing from the source and from the queue. (rb_shell_player_set_property): Handle playing directly from the queue so we stop once the queue is empty. Create queue play order when we get the queue source. (rb_shell_player_get_playing_source): Return the source we're actually playing from. (rb_shell_player_get_playing_entry): Get playing entry from queue if that's where it is. (rb_shell_player_set_playing_entry): Update the queue play order if that's where we're playing from. (rb_shell_player_play_order_update_cb): Take has next/previous for the queue into consideration too. (swap_playing_source): Helper function for switching the playing source. (rb_shell_player_do_previous): Check the queue, even though there's never a previous entry in it (yet), swap playing source if it changed. (rb_shell_player_do_next): Check the queue for entries to play before the normal play order, and swap playing source if it changed. (rb_shell_player_do_previous_or_seek): Check the queue for previous entries to go to as well. (rb_shell_player_playpause): Check the queue before the selection and the play order, and swap playing source if it changed. (rb_shell_player_cmd_song_info): Move to rb-shell-clipboard.c (rb_shell_player_entry_activated_cb): Use rb_podcast_manager_entry_downloaded, do some tapdancing to make activating queue entries work properly (move the activated entry to the start of the queue and then play it); if we were playing from the queue, clear its playing entry so it'll start again from the start after the activated entry. (rb_shell_player_sync_buttons): MusicProperties action handler moved to rb-shell-clipboard.c (actually_set_playing_source): Add helper for updating the playing source. (rb_shell_player_set_playing_source_internal): Emit playing-from-queue signal if we stop or start doing so; use actually_set_playing_source; emit playing-source-changed if we actually did change source. * sources/rb-ipod-source.c (add_rb_playlist): Add extra parameter for rb_static_playlist_source_add_location. * sources/rb-library-source.c (rb_library_source_class_init): Allow enqueueing of songs from the library. * sources/rb-playlist-source.c (rb_playlist_source_class_init): Allow enqueueing of sonsg from playlists. (rb_playlist_source_entry_added_cb): Add extra parameter for rhythmdb_query_model_add_entry. * sources/rb-podcast-source.c (rb_podcast_source_class_init): Implement (can_)add_to_queue for this class. (rb_podcast_source_entry_activated): Use rb_podcast_manager_entry_downloaded. (impl_can_add_to_queue): Return TRUE if at least one entry that has been downloaded is selected. (impl_add_to_queue): Only add downloaded entries to the queue. * sources/rb-source.{c,h}: (rb_source_can_add_to_queue), (rb_source_add_to_queue): New virtual methods. (rb_source_class_init): Don't allow enqueueing by default; implement add_to_queue though. (default_add_to_queue): Add all selected entries to the queue. * sources/rb-sourcelist.{c,h}: Add concept of 'preempted' source (what would be playing if there wasn't anything in the queue). (set_source_playing): Helper function for manipulating tree store. (rb_sourcelist_set_playing_source): Use set_source_playing (rb_sourcelist_preempt_playing_source): Update preempted source pointer, manipulate source states. * sources/rb-static-playlist-source.{c,h}: (rb_static_playlist_source_add_location_internal), (rb_static_playlist_source_add_location), (rb_static_playlist_source_add_entry): Add index parameter for specifying where in the playlist the new entry goes. (rb_static_playlist_source_new_from_xml), (impl_paste), (rb_static_playlist_source_add_list_uri), (rb_static_playlist_source_add_location_swapped), (rb_static_playlist_source_add_locations), (rb_static_playlist_source_non_entry_dropped), (rb_static_playlist_source_row_inserted): Handle new index parameter everywhere it appears (rb_static_playlist_source_move_entry): New method for moving entries around in the playlist. * widgets/rb-entry-view.c (rb_entry_view_scroll_to_iter): Silence gtk warnings when trying to scroll entry views that have never been displayed. * shell/rb-play-order-queue.{c,h}: New files, implementing a linear play order that removes the old entry when switching to a new one. * sources/rb-play-queue-source.{c,h}: New files, implementing a static playlist subclass that has a second entry view for the sidebar view using alternate formatting, and that displays the number of entries it contains in its source list entry. 2005-12-10 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_add_entry), (rhythmdb_query_model_drag_data_received): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_non_entry_dropped): when things are dropped, ignore any blank lines in the list of uris. Make the source responsible for adding new items to the db. * rhythmdb/rhythmdb.c: (queue_stat_uri): make sure we aren't passed an empty string. 2005-12-10 James Livingston * shell/rb-shell-player.c: (rb_shell_player_set_property), (rb_shell_player_sync_buttons), (rb_shell_player_selection_changed_cb): watch for the "selection-changed" signal, so that the Song Properties get enabled. Closes bug 323694. 2005-12-10 James Livingston * data/rhythmbox.schemas: fix the gconf schema 2005-12-10 James Livingston * metadata/rb-metadata-gst.c: don't set the state to NULL when inside the decoded-pad callback with gstreamer 0.8, it causes problems. 2005-12-10 Jonathan Matthew Remove more junk from RBEntryView. Closes bug 323640. * widgets/rb-entry-view.{c,h}: Remove unused private structure members, replace 'playing' boolean with an enum (so we know if we're paused too), and store a pointer to the RBShellPlayer too. (rb_entry_view_class_init), (rb_entry_view_set_property), (rb_entry_view_get_property): Remove 'entry-selected' and 'changed' signals and 'playing-entry' property, add 'selection-changed' signal and 'shell-player' and 'playing-state' properties. (rb_entry_view_new): Take the shell player object reference (rb_entry_view_playing_cell_data_func): Get pixbuf based on state. (rb_entry_view_set_playing_entry), (rb_entry_view_get_playing_entry): No longer needed, shell player is the place to get this information. (rb_entry_view_busy), (rb_entry_view_get_duration), (rb_entry_view_get_total_size), (rb_entry_view_get_first_entry), (rb_entry_view_get_next_from_entry), (rb_entry_view_get_previous_from_entry), (rb_entry_view_get_next_entry), (rb_entry_view_get_random_entry), (rb_entry_view_get_num_entries): Removed, callers should go to the query model directly. (rb_entry_view_playing_song_changed): Update active query model, emit row changed signals to update pixbufs, and scroll to the playing song when the playing song changes, based on a signal from the shell player. (queue_changed_sig), (rb_entry_view_row_changed_cb), (emit_entry_changed): Evil, removed. (rb_entry_view_selection_changed_cb): Remove old signals, add new selection-changed signal. (rb_entry_view_select_none), (rb_entry_view_select_entry): Remove selection lock. It didn't work anyway. (rb_entry_view_set_playing): Replaced with rb_entry_view_set_state. (rb_entry_view_emit_row_changed): Simple helper function to emit row-changed signals. * widgets/Makefile.am: Entry view needs headers from the shell/ directory. * widgets/rb-song-info.{c,h}: Use the query model for everything except scrolling the entry view to show the entry being displayed. (rb_song_info_class_init), (rb_song_info_get_property): Add new 'source' property so we can watch for query model changes. (rb_song_info_finalize): Unref objects, disconnect signal handlers (rb_song_info_set_property): Watch for query model changes, don't watch for entry view changes. (rb_song_info_new): Take source as a parameter, use the source's entry view unless one was specifically supplied. (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb): Use query model rather than entry view to move between songs. (rb_song_info_update_buttons): Use query model. (rb_song_info_query_model_changed_cb): Handle query model changes. * shell/rb-playlist-manager.c (rb_playlist_manager_set_property): Only one copy of the code to enable/disable the CD burning action (rb_playlist_manager_playlist_entries_changed): Use the query model to get the number of entries, not the entry view. * shell/rb-play-order-random-by-age-and-rating.c, shell/rb-play-order-random-by-age.c, shell/rb-play-order-random-by-rating.c, shell/rb-play-order-random-equal-weights.c: Use G_DEFINE_TYPE * shell/rb-shell-player.{c,h}: Remove a few unused entries from the structure. (rb_shell_player_set_property): Don't use the 'changed' signal on the entry view (it's evil) (rb_shell_player_have_first): No longer needed (rb_shell_player_play): Just tell the entry view it's playing (rb_shell_player_playpause): Tell the entry view it's paused when pausing. (rb_shell_player_entry_view_changed_cb): No longer used, removed. (rb_shell_player_property_row_activated_cb): Get the entry to play using the query model, not the entry view. (rb_shell_player_sync_buttons): Update entry view state while we're here. (rb_shell_player_set_playing_source_internal): Update entry view state (rb_shell_player_get_playing): Ask the entry view, not the player. This now returns TRUE when paused. This makes rb_shell_set_elapsed and rb_shell_set_window_title work properly, so you get "(Paused)" in the window title and tray icon tooltip. (rb_shell_player_get_mm_player): Not used anywhere, so removed. * sources/rb-iradio-source.c, sources/rb-library-source.c, sources/rb-podcast-source.c, sources/rb-playlist-source.c: (rb_iradio_source_constructor): Pass the RBShellPlayer in to the entry view constructor, pass the source in to the song info widget constructor. * shell/rb-shell-clipboard.c (rb_shell_clipboard_set_property): Use 'selection-changed' instead of 'changed', since that's what the clipboard cares about. (rb_shell_clipboard_set_source): Don't die if source == NULL 2005-12-10 James Livingston * player/rb-recorder-gst.c: (rb_recorder_get_default_drive): * sources/rb-playlist-source-recorder.c: (_nautilus_burn_drive_new_from_path): make more of the libnautilusburn stuff not use the deprecated API when compiled against 2.13 2005-12-10 James Livingston patch by: Alex Lancaster * widgets/rb-song-info.c: (rb_song_info_sync_entry_single): fix problem where the genre tag was getting set to the artist. Closes bug 323642. 2005-12-09 William Jon McCann * rhythmdb/rhythmdb-query-model.c (rhythmdb_query_model_get_next_from_entry): Return NULL if can't get first iter. Fixes #323663 2005-12-09 William Jon McCann * sources/rb-iradio-source.[ch] (impl_song_properties): Use updated rb_station_properties_dialog_new API. (rb_iradio_source_add_from_playlist): New public function. (rb_iradio_source_first_time_changed): Use add_from_playlist. * shell/rb-shell.c (new_station_location_added): Handle iradio location added signal. (rb_shell_cmd_new_station): Use new iradio station dialog. * iradio/rb-station-properties-dialog.c (rb_station_properties_dialog_init): Use close button. Fix typo. (rb_station_properties_dialog_new): Don't squeeze new station functionality into this class. (rb_station_properties_dialog_response_cb): ditto. (rb_station_properties_dialog_update_title): Make consistent with other properties dialogs. (rb_station_properties_dialog_location_changed_cb): Do nothing. * iradio/rb-new-station-dialog.[ch]: * iradio/Makefile.am: Add new station dialog. * data/glade/station-new.glade: New file based on new podcast feed dialog. * data/glade/station-properties.glade: Updated to be consistent with song properties dialog. Fixes #323306. 2005-12-10 James Livingston patch by: Ståle Lyngaas * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): submit songs longer than 30 minutes. Fixes bug 323639. 2005-12-09 William Jon McCann * shell/rb-shell.c (idle_save_playlist_manager): Use new async save function. (rb_shell_finalize): Remove save timeout sources. Reorder steps a bit to make saving db and playlists a bit more failsafe in case something goes wrong later. (rb_shell_constructor): Keep track of save timeout source. (add_to_library_response_cb): Keep track of db save timeout source. * shell/rb-playlist-manager.c (reap_dead_playlist_threads): Use g_atomic. (rb_playlist_manager_shutdown): New function to shutdown threads etc. before exit. (rb_playlist_manager_finalize): Moved handling outstanding threads stuff to shutdown since if there are outstanding threads they hold a ref and finalize is never called. (rb_playlist_manager_save_thread_main): Use cond broadcast instead of signal which may be required for sync save. (rb_playlist_manager_save_playlists_async): Renamed old save_playlists to save_playlists_async. Use g_atomic. (rb_playlist_manager_save_playlists): New function to perform sync saves (symmetric with RhythmDB API). (rb_playlist_manager_cmd_new_automatic_playlist): Style consistency. * rhythmdb/rhythmdb.c (rhythmdb_action_free, rhythmdb_shutdown): Style consistency anality. (rhythmdb_finalize): Remove save timeout source. (rhythmdb_set_property, rhythmdb_get_property) (rhythmdb_process_events): More anality and keep track of save timeout source. (action_thread_main): No need to call g_thread_exit. (rhythmdb_entry_set_internal, rhythmdb_entry_sync_mirrored) (rhythmdb_query_parse_valist, rhythmdb_query_free) (write_encoded_gvalue, read_encoded_property): La la la. Fixes #322940. 2005-12-10 James Livingston * metadata/rb-metadata-gst.c: fix 5 second pauses when encountering non-audio files. 2005-12-10 James Livingston * Makefile.am: * configure.ac: remove the rpm spec files, so that automake works. oops * rhythmdb/rhythmdb.c: (rhythmdb_save_thread_main): fix a trivial locking issue 2005-12-09 James Livingston * debian/: try to get cvs to actually remove the files 2005-12-09 James Livingston * rhythmbox.spec.in: * debian/: remove the distro package stuff, they are *really* old, and downstream manage it anyway. 2005-12-09 Jonathan Matthew Rework play orders to work off query models rather than entry views, and track the playing entry themselves rather than relying on the entry view to do it. This makes the entry view mostly just a widget. Closes bug 323612. * daapsharing/rb-daap-share.c (add_playlist_to_mlcl), (databases_cb): Use query model rather than entry view to get the number of entries in playlists. * rhythmdb/rhythmdb-query-model.{c.h} (rhythmdb_query_model_tree_path_to_entry), (rhythmdb_query_model_iter_to_entry), (rhythmdb_query_model_get_next_from_entry), (rhythmdb_query_model_get_previous_from_entry): New utility functions for iterating through query models. (rhythmdb_query_model_compute_status_normal): Have one copy of this code, not four. * shell/rb-play-order.{c,h}: Add signals for when next/previous availability changes, and when the playing entry is removed, and add a property for the current playing entry. Add gtkdoc comments too. (rb_play_order_class_init): Add new property and signals. (rb_play_order_finalize), (rb_play_order_playing_source_changed), (rb_play_orer_query_model_changed_cb), (rb_play_order_query_model_changed): Use query model rather than entry view. (rb_play_order_set_property), (rb_play_order_get_property): Handle new playing-entry property. Call playing_entry_changed virtual method so subclasses can do any processing required. (rb_play_order_is_playing), (rb_play_order_get_playing_entry), (rb_play_order_set_playing_entry): Just use the playing-entry property. (rb_play_order_get_query_model), (rb_play_order_model_not_empty): Utility methods for subclasses. (rb_play_order_entry_added_cb), (rb_play_order_entry_removed_cb): Update next/previous availability, check if the playing entry was removed. (default_playing_entry_removed): Keep the current behaviour of just stopping playback when the playing entry is deleted. (rb_play_order_go_next), (rb_play_order_go_previous): Implement these for subclasses that don't have go_next/go_previous, but do have get_next/get_previous. (rb_play_order_update_have_next_previous): Emit signal if the availability of next/previous entries has changed. * shell/rb-play-order-linear.c, shell/rb-play-order-linear-loop.c, shell/rb-play-order-shuffle.c, shell/rb-play-order-random.c: Use G_DEFINE_TYPE, replace entry view iterator with query model methods. (rb_shuffle_playing_entry_changed): If new_entry is NULL and we're on the last song in the shuffled order, go back to the start. This means if you press 'play' again you'll get the whole order again, not just one song. * shell/rb-shell-player.c: (rb_shell_player_get_playing_entry), (info_available_cb): Ask the play order rather than the entry view. (rb_shell_player_set_property): Update the play order when the selected source changes and we aren't playing anything. (rb_shell_player_sync_play_order): Copy the playing entry across to the new play order so playback continues from the same song, and watch for updates to have_next/have_previous. (rb_shell_player_play_order_update_cb): Enable/disable the next/previous actions when next/previous entry availability changes. (rb_shell_player_jump_to_current): Just use the play order's idea of what's playing, not the entry view's; if not playing anything, clear the selection, so when a playlist ends and you hit play again, it'll start at the start rather than the end. (rb_shell_player_do_previous): restructure a bit. (rb_shell_player_do_next): restructure, jump to new playing entry in an idle handler instead of directly. (rb_shell_player_do_previous_or_seek): Only try to go to the previous song if there is one. (rb_shell_player_playpause): Jump to playing song, don't update the play order if we got the song from the selection. (rb_shell_player_playing_entry_deleted_cb): Not needed. (rb_shell_player_sync_buttons): rb_shell_player_play_order_update_cb looks after next/previous actions now. Don't break if called while there is no selected source. (rb_shell_player_finalize), (rb_shell_player_set_playing_entry), (rb_shell_player_set_playing_source_internal), (rb_shell_player_error): No need to track the attempted playing entry any more, since the play order does that. * shell/rb-shell.c: (rb_shell_jump_to_current), (rb_shell_set_rating_impl): Use rb_shell_player_get_playing_entry rather than going through the entry view. * shell/rb-statusbar.c (rb_statusbar_set_property), (rb_statusbar_source_status_changed_cb): Listen to the source rather than the entry view for status bar text changes. (rb_statusbar_sync_status): Ask the query model directly * sources/rb-source.{c}: Add query model property. (default_get_status): Get status text from query model, should be suitable for most sources. (rb_source_set_property): Listen for changes to the query model to update the status text. (rb_source_row_inserted_cb), (rb_source_row_deleted_cb), (idle_emit_status_changed): Emit status-changed signals when query model changes. * sources/rb-library-source.c, sources/rb-podcast-source.c: (impl_get_status): Not needed, RBSource does this now (rb_library_source_do_query) (rb_podcast_source_do_query): Update RBSource's query model reference. * sources/rb-playlist-source.c: Remove query-model property, since RBSource has one now (impl_get_status): Not needed, RBSource does this now (rb_playlist_source_row_deleted): Use query model iterator helper function. (rb_playlist_source_set_query_model): Update RBSource's query model reference too. * sources/rb-iradio-source.c: (impl_get_status): Ask the query model directly. (rb_iradio_source_do_query): Update RBSource's query model reference when we create a new query. * sources/rb-sourcelist-model.c (rb_sourcelist_model_drag_data_get): Use query model rather than entry view. * widgets/rb-entry-view.{c,h}: Remove playing_entry_deleted signal (now in play order). (entry_from_tree_path), (entry_from_tree_iter): Not needed as RhythmDBQueryModel has equivalent helper functions. (rb_entry_view_*): Use query model helpers instead of the above two functions. 2005-12-09 James Livingston * configure.ac: * player/rb-recorder-gst.c: (rb_recorder_get_default_drive), (rb_recorder_enabled): * shell/rb-removable-media-manager.c: (poll_tray_opened): * sources/rb-playlist-source-recorder.c: (_nautilus_burn_drive_new_from_path), (ask_rewrite_disc): check whether libnautilusburn has the _drive_unref function, and if so use it. Stops it complaining about deprecated API. 2005-12-09 James Livingston * configure.ac: drop the minimum gstreamer version back down, it accidently got pushed up in the gst 0.10 patch. Closes bug 323561. 2005-12-09 James Livingston * widgets/rb-song-info.c: (rb_song_info_class_init), (rb_song_info_show), (rb_song_info_constructor), (rb_song_info_finalize), (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb): save metadata changes when the Next/Previous buttons are pressed (closes bug 320952). use G_DEFINE_TYPE. 2005-12-09 James Livingston Patch by: * sources/rb-iradio-source.c: (stations_view_drag_data_received_cb): * sources/rb-podcast-source.c: (impl_receive_drag): fix drag and drop of urls. Fixes bug 323610. 2005-12-09 James Livingston patch by Jan Schmidt to add support for GStreamer 0.10. DAAP support for 0.10 isn't done yet. * configure.ac: * metadata/rb-metadata-gst.c: * player/rb-player-gst.c: (rb_player_finalize), (rb_player_bus_cb), (rb_player_construct), (rb_player_new): * player/rb-recorder-gst.c: (rb_recorder_gst_free_pipeline), (rb_recorder_gst_signal_error), (pipe_message), (rb_recorder_new_pad_cb), (rb_recorder_construct), (rb_recorder_new): * shell/main.c: (main): * sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry), (rb_audiocd_get_cd_info): port gstreamer-using code to 0.10. 2005-12-07 Jonathan Matthew * data/rhythmbox-ui.xml: replace 'smart' with 'auto' for consistency * shell/rb-playlist-manager.c: (rb_playlist_manager_set_property), (handle_playlist_entry_cb), (playlist_load_start_cb), (rb_playlist_manager_new_playlist) (rb_playlist_manager_set_automatic_playlist), (rb_playlist_manager_cmd_new_automatic_playlist), (rb_playlist_manager_cmd_edit_automatic_playlist): Use new playlist subclasses. (rb_playlist_manager_save_playlists): Only read the dirty flag for local playlists, minor pointless reformatting * sources/Makefile.am: add new files * sources/rb-playlist-source.c, sources/rb-playlist-source.h: split lots of stuff out into two new classes, RBStaticPlaylistSource and RBAutoPlaylistSource, make RBPlaylistSource abstract, add virtual methods for showing a popup for the entry view and saving the playlist to XML. Other stuff is subclass-specific, or already virtual in RBSource. * sources/rb-playlist-xml: Define playlist XML tags and attributes in one place, since they're used across three source files now * sources/rb-daap-source.c: (rb_daap_source_connection_cb): Use new static playlist class * sources/rb-ipod-source.c: (add_rb_playlist): Use new static playlist class * sources/rb-static-playlist-source.{c,h}, source/rb-auto-playlist-source.{c,h}, sources/rb-playlist-xml.h: new files. * po/POTFILES.in: add new files 2005-12-07 James Livingston * rhythmdb/rhythmdb.c: (emit_entry_changed), (sync_entry_changed), (rhythmdb_commit_internal), (rhythmdb_process_metadata_load): make metadata loads not attempt to write changes to disk. 2005-12-07 James Livingston patch by: Alex Lancaster * data/glade/song-info-multiple.glade: * widgets/rb-song-info.c: (rb_song_info_constructor), (rb_song_info_sync_entries_multiple): allow the year to be changed on multiple songs at once. 2005-12-06 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load), (rhythmdb_entry_set_visibility): emit signal when visibility changes. 2005-12-06 James Livingston * sources/rb-sourcelist.c: (rb_sourcelist_init): ellipsise source names rather than adding a horizontal scroll bar. 2005-12-06 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_drag_data_received): remove some pointless debug messages * rhythmdb/rhythmdb.c: (rhythmdb_process_stat_event), (rhythmdb_process_file_deleted), (rhythmdb_entry_move_to_trash): always hide rather than remove DB entries, which will make RB not lose information when tag editing happens or people move files to trash and then change their mind. Also fix some races where the monitoring code would notice the temporary files generated by saving metadata. 2005-12-05 William Jon McCann * widgets/rb-song-display-box.[ch] (rb_song_display_box_init): Hide internals and add tooltips. (rb_song_display_box_size_allocate): Hide internals. (sanitize_string, info_url): Copied from rb-header. (rb_song_display_box_sync): New public function. * widgets/rb-header.[ch]: Use G_DEFINE_TYPE. (rb_header_init): Use a separate row for the seek bar. (rb_header_finalize): Don't unref widgets. (rb_header_sync): Use rb_song_display_box_sync. (rb_header_set_urldata) (rb_header_set_show_artist_album): Hide instead of remove widgets. (rb_header_set_show_position_slider): Set visibility of seek bar. (rb_header_set_show_timeline): Set sensitivity of seek bar. (rb_header_get_elapsed_string): Don't shift when you first start playback. * shell/rb-statusbar.c (rb_statusbar_init) (rb_statusbar_sync_state): Remove shuffle and repeat controls. * shell/rb-shell.c (rb_shell_finalize): Destroy tooltips. (rb_shell_constructor): Remove hseparator. Monitor toolbar visibility settings. Add toolbar. Add volume button to toolbar. Add tooltips for volume button. (rb_shell_view_toolbar_changed_cb) (rb_shell_sync_toolbar_visibility) (toolbar_visibility_changed_cb): Set visibility of toolbar. (rb_shell_sync_smalldisplay): Set the toolbar style to icons only when in small display mode. (rb_shell_volume_widget_changed_cb): Save volume setting. * shell/rb-shell-player.c (rb_shell_player_constructor): Remove pause and stop actions. Make play action "important" so that text is visible in horizontal toolbar position. Remove control buttons. (rb_shell_player_init) (rb_shell_player_sync_song_position_slider_visibility): Set visbibility of seek bar. (rb_shell_player_cmd_play, rb_shell_player_playpause): Make play action a toggle. (rb_shell_player_sync_volume): Volume control moved to player. (gconf_song_position_slider_visibility_changed): Set visbibility of seek bar. (rb_shell_player_sync_buttons): Set sensitivity of actions instead of buttons. (rb_shell_player_playing_changed_cb): Add callback for player notify::playing changes. * lib/rb-preferences.h: Add hide toolbar and seek bar key names. * data/ui/rhythmbox-ui.xml: Add hide toolbar and seek bar menu items. Remove pause and stop actions from the control menu. Add a toolbar. * data/rhythmbox.schemas: Add toolbar_hidden song_position_slider_hidden keys. Patch by: James Livingston William Jon McCann Fixes #316238. 2005-12-05 James Livingston * data/glade/library-prefs.glade: * data/rhythmbox.schemas: * lib/rb-preferences.h: * rhythmdb/rhythmdb.c: (rhythmdb_directory_change_cb), (rhythmdb_sync_library_location): * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (rb_library_source_constructor), (impl_get_config_widget), (rb_library_source_preferences_sync), (rb_library_source_watch_toggled_cb): allow people to disable library monitoring, because with nothing set the file chooser button selects the Home folder (and hence that will get monitored). 2005-12-04 Ryan P Skadberg * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): Another attempt to fix problem with RSS parsing showing invalid feed types. Fixes bug 323153 2005-12-04 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load), (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat): make importing a remote directory not block the UI. 2005-12-03 Dennis Cranston * data/glade/podcast-feed-properties.glade: * data/glade/podcast-properties.glade: HIG fix, closes bug 323131. 2005-12-04 James Livingston patch by: Dennis Cranston * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): change || to && to fix a mistake in the earlier podcast patch. 2005-12-03 James Livingston * data/glade/podcast-new.glade: * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init), (rb_new_podcast_dialog_text_changed): remove some unused stuff. * player/rb-player-gst.c: (rb_player_set_replaygain): initialise the GValue, which stops occasional errors. * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): fix a compile issue. 2005-12-03 James Livingston patch by: Dennis Cranston * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): fix a crasher with some podcasts feeds. 2005-12-03 James Livingston * data/rhythmbox.schemas: fix the gconf schema 2005-12-03 James Livingston patch by: Thomas de Grenier de Latour to add a selection timeout to the sourcelist. This lets you hold a track over the playlist source, and then have the view switch so you can insert the track in the middle of the playlist. Closes bug 323044. * lib/rb-tree-dnd.c: (init_rb_tree_dnd_data), (scroll_row_timeout), (select_on_drag_timeout), (remove_select_on_drag_timeout), (rb_tree_dnd_drag_motion_cb), (rb_tree_dnd_drag_leave_cb), (rb_tree_dnd_add_drag_dest_support): * lib/rb-tree-dnd.h: Add an option for tree views to have a selection timeout. * sources/rb-sourcelist-model.c: (rb_sourcelist_model_set_dnd_targets): Use the selection timeout for the source list. 2005-12-02 Bastien Nocera * data/glade/audioscrobbler-prefs.glade: add a space before the web links, so that the text doesn't touch the button 2005-12-02 James Livingston Add full support for gnome-vfs remote files. Closes bug 140355. * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat): perform stats asynchronously, so that waiting for authentication information from the user doesn't block the UI. (rhythmdb_entry_set_visibility): don't emit the signal twice. * rhythmdb/rhythmdb.c: (rhythmdb_action_free), (rhythmdb_event_free), (rhythmdb_shutdown), (emit_entry_changed), (rhythmdb_entry_allocate), (rhythmdb_directory_change_cb), (rhythmdb_process_stat_event), (emit_load_error_idle), (rhythmdb_process_metadata_load), (rhythmdb_process_queued_entry_set_event), (rhythmdb_process_file_created_or_modified), (rhythmdb_process_file_deleted), (rhythmdb_process_events), (queue_stat_uri), (add_thread_main), (emit_save_error_idle), (action_thread_main), (rhythmdb_add_uri), (rhythmdb_load), (rhythmdb_save_thread_main), (threadsafe_entry_set), (rhythmdb_query_internal), (query_thread_main), (rhythmdb_do_full_query_async_parsed), (rhythmdb_do_full_query_internal), (entry_volume_mounted_or_unmounted), (rhythmdb_volume_mounted_cb), (rhythmdb_volume_unmounted_cb), (rhythmdb_check_changed_file): trivial changes to support the asynchronous stats. * shell/main.c: (main): activate the authentication manager. * shell/rb-playlist-manager.c: (rb_playlist_manager_cmd_load_playlist), (rb_playlist_manager_cmd_save_playlist): * shell/rb-shell.c: (rb_shell_cmd_add_folder_to_library), (rb_shell_cmd_add_file_to_library): * sources/rb-playlist-source.c: (rb_playlist_source_add_location): * widgets/rb-druid.c: (rb_druid_browse_clicked_cb): Let people select remote files. 2005-12-02 James Livingston * shell/rb-playlist-manager.c: makes playlist menu items use the elipses correctly. Fixes bug 322283. 2005-12-02 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_load_playlists): fix silly mistake 2005-12-02 James Livingston * metadata/rb-metadata-gst.c: (rb_metadata_gst_add_tag_data): don't print out metadata-write unless --debug was passed. * rhythmdb/rhythmdb.c: (rhythmdb_load): * shell/rb-playlist-manager.c: (rb_playlist_manager_load_playlists): block writes to disk if they are still being loaded. 2005-12-02 James Livingston * shell/rb-shell-clipboard.c: change the move-to-trash shortcut, to ctrl-T, because Ctrl-D is used by "small mode" 2005-12-02 James Livingston * shell/rb-shell-preferences.c: (rb_shell_preferences_append_view_page): * sources/rb-library-source.c: (impl_get_config_widget): * sources/rb-podcast-source.c: (impl_get_config_widget): * sources/rb-source.c: (rb_source_get_config_widget): * sources/rb-source.h: Make the preference actually work. * shell/rb-shell.c: (rb_shell_constructor): set up monitoring correctly if Rhythmbox is being run for the first time. 2005-12-02 James Livingston Add support for Rhythmbox to watch your library, and automatically add new tracks. Fixes bug 160159. * data/glade/library-prefs.glade: add "library location" preference * data/rhythmbox.schemas: add gconf key for the library location * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_event_free), (rhythmdb_unmonitor_directories), (rhythmdb_shutdown), (rhythmdb_finalize), (rhythmdb_directory_change_cb), (rhythmdb_monitor_uri_path), (rhythmdb_process_stat_event), (rhythmdb_process_metadata_load), (rhythmdb_process_events), (rhythmdb_load_thread_main), (rhythmdb_load), (monitor_subdirectory), (monitor_library_directory), (monitor_entry_file), (rhythmdb_sync_library_location), (library_location_changed_cb), (rhythmdb_check_changed_file), (rhythmdb_process_changed_files): Let Rhythmbox watch the directories specifiec in the gconf key for new additions. Also fix monitoring code so that it works properly, and notices deletions. * lib/rb-preferences.h: * shell/rb-audioscrobbler.c: (rb_audioscrobbler_class_init), (rb_audioscrobbler_init), (rb_audioscrobbler_set_property): * shell/rb-audioscrobbler.h: * shell/rb-shell-preferences.c: (rb_shell_references_append_page), (rb_shell_preferences_append_view_page), (rb_shell_preferences_new): * shell/rb-shell-preferences.h: rework the way audioscrobbler adds it's preferences pane, so that we don't need #ifdef's through rb-shell-preferences. * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property), (rb_shell_select_source), (rb_shell_cmd_preferences): give the shell a "preferences" property, so that sources can acccess it. This is needed because the library location pref needs to take effect when the window is closed. * sources/rb-library-source.c: (rb_library_source_library_location_changed), (rb_library_source_dispose), (rb_library_source_finalize), (rb_library_source_constructor), (impl_get_config_widget), (rb_library_source_preferences_sync), (rb_library_source_process_library_location_change), (rb_library_source_prefs_update), (rb_library_source_process_library_handle_selection), (rb_library_source_library_location_cb): set up and control the "library location" preference. * sources/rb-audiocd-source.c:(rb_source_class_init): * sources/rb-source.c: (rb_source_class_init): remove some pointless code. 2005-12-01 William Jon McCann * podcast/rb-feed-podcast-properties-dialog.c (rb_feed_podcast_properties_dialog_init) (rb_feed_podcast_properties_dialog_update_title): * data/glade/podcast-feed-properties.glade: Make the feed properties dialog consistent with the podcast properties dialog. 2005-12-01 William Jon McCann * metadata/.cvsignore: * po/.cvsignore: * podcast/.cvsignore: Updated. * shell/main.c (main): Support DBus 0.6 flags. 2005-11-30 Bastien Nocera * data/ui/rhythmbox-ui.xml: * rhythmdb/rhythmdb.c: (rhythmdb_entry_move_to_trash_cb), (rhythmbd_entry_move_to_trash_set_error), (rhythmdb_entry_move_to_trash): * rhythmdb/rhythmdb.h: * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync), (rb_shell_clipboard_cmd_delete), (rb_shell_clipboard_cmd_move_to_trash): * sources/rb-library-source.c: (rb_library_source_class_init), (impl_delete), (impl_move_to_trash): * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (impl_delete), (impl_move_to_trash): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): * sources/rb-source.c: (rb_source_class_init), (rb_source_can_move_to_trash), (rb_source_delete), (rb_source_move_to_trash): * sources/rb-source.h: Add move_to_trash member for the sources, implement move to trash for the library and playlists Add a "Move to Trash" context menu item, and menu item (Ctrl+D) to move local files to the trash, and deleting them from the database (Closes: #315389) 2005-11-30 William Jon McCann * shell/rb-tray-icon.c (rb_tray_icon_class_init) (rb_tray_icon_init, rb_tray_icon_finalize): * shell/rb-statusbar.c (rb_statusbar_class_init) (rb_statusbar_init, rb_statusbar_finalize): * shell/rb-source-header.c (rb_source_header_class_init) (rb_source_header_init, rb_source_header_finalize): * shell/rb-shell.c (rb_shell_class_init, rb_shell_init) (rb_shell_finalize): * shell/rb-shell-preferences.c (rb_shell_preferences_class_init) (rb_shell_preferences_init, rb_shell_preferences_finalize): * shell/rb-shell-player.c (rb_shell_player_class_init) (rb_shell_player_init, rb_shell_player_finalize): * shell/rb-shell-clipboard.c (rb_shell_clipboard_class_init) (rb_shell_clipboard_init, rb_shell_clipboard_finalize): * shell/rb-playlist-manager.c (rb_playlist_manager_class_init) (rb_playlist_manager_init, rb_playlist_manager_finalize): * shell/rb-play-order.c (rb_play_order_class_init) (rb_play_order_init, rb_play_order_finalize): * shell/rb-play-order-shuffle.c (rb_shuffle_play_order_class_init) (rb_shuffle_play_order_init, rb_shuffle_play_order_finalize): * shell/rb-play-order-random.c (rb_random_play_order_class_init) (rb_random_play_order_init, rb_random_play_order_finalize): * shell/rb-history.c (rb_history_class_init, rb_history_init) (rb_history_finalize): * shell/rb-commander.c (rb_commander_class_init) (rb_commander_init, rb_commander_finalize): * shell/rb-audioscrobbler.c (rb_audioscrobbler_class_init) (rb_audioscrobbler_init, rb_audioscrobbler_finalize): * remote/bonobo/rb-remote-bonobo.c (rb_remote_bonobo_class_init) (rb_remote_bonobo_init, rb_remote_bonobo_finalize): * podcast/rb-podcast-properties-dialog.c (rb_podcast_properties_dialog_class_init) (rb_podcast_properties_dialog_init) (rb_podcast_properties_dialog_finalize): * podcast/rb-podcast-manager.c (rb_podcast_manager_class_init) (rb_podcast_manager_init, rb_podcast_manager_finalize): * podcast/rb-new-podcast-dialog.c (rb_new_podcast_dialog_class_init) (rb_new_podcast_dialog_init, rb_new_podcast_dialog_finalize): * podcast/rb-feed-podcast-properties-dialog.c (rb_feed_podcast_properties_dialog_class_init) (rb_feed_podcast_properties_dialog_init) (rb_feed_podcast_properties_dialog_finalize): * metadata/rb-metadata-gst.c (rb_metadata_class_init) (rb_metadata_init, rb_metadata_finalize): * iradio/rb-station-properties-dialog.c (rb_station_properties_dialog_class_init) (rb_station_properties_dialog_init) (rb_station_properties_dialog_finalize): * daapsharing/rb-daap-share.c (rb_daap_share_class_init) (rb_daap_share_init, rb_daap_share_dispose): Use g_type_class_add_private in all classes. Closes bug 313688. 2005-11-30 James Livingston patch by: William Jon McCann to use g_type_class_add_private in all classes. Closes bug 313688. * lib/rb-thread.c: (rb_thread_class_init), (rb_thread_init), (rb_thread_finalize): * player/rb-player-gst.c: (rb_player_class_init), (rb_player_init), (rb_player_finalize): * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_class_init), (rhythmdb_property_model_init), (rhythmdb_property_model_finalize): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_init), (rhythmdb_query_model_finalize): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_class_init), (rhythmdb_tree_init), (rhythmdb_tree_finalize): * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_init), (rhythmdb_finalize): * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_init), (rb_daap_source_dispose): * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_init), (rb_iradio_source_finalize): * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_init), (rb_library_source_finalize): * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (rb_playlist_source_init), (rb_playlist_source_dispose): * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_init), (rb_podcast_source_finalize): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_class_init), (rb_sourcelist_model_init), (rb_sourcelist_model_finalize): * sources/rb-sourcelist-model.h: * sources/rb-sourcelist.c: (rb_sourcelist_class_init), (rb_sourcelist_init), (rb_sourcelist_finalize): * sources/rb-sourcelist.h: * widgets/disclosure-widget.c: (finalize), (class_init), (init): * widgets/rb-cell-renderer-rating.c: (rb_cell_renderer_rating_init), (rb_cell_renderer_rating_class_init), (rb_cell_renderer_rating_finalize): * widgets/rb-druid.c: (rb_druid_class_init), (rb_druid_init), (rb_druid_finalize): * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_init), (rb_entry_view_finalize): * widgets/rb-header.c: (rb_header_class_init), (rb_header_init), (rb_header_finalize): * widgets/rb-load-failure-dialog.c: (rb_load_failure_dialog_class_init), (rb_load_failure_dialog_init), (rb_load_failure_dialog_finalize): * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_init), (rb_property_view_finalize): * widgets/rb-rating.c: (rb_rating_class_init), (rb_rating_init), (rb_rating_finalize): * widgets/rb-search-entry.c: (rb_search_entry_class_init), (rb_search_entry_init), (rb_search_entry_finalize): * widgets/rb-simple-view.c: (rb_simple_view_class_init), (rb_simple_view_init), (rb_simple_view_finalize): * widgets/rb-song-display-box.c: (rb_song_display_box_class_init), (rb_song_display_box_init), (rb_song_display_box_finalize): * widgets/rb-song-info.c: (rb_song_info_class_init), (rb_song_info_init), (rb_song_info_finalize): * widgets/rb-tree-model-sort.c: (rb_tree_model_sort_class_init), (rb_tree_model_sort_init), (rb_tree_model_sort_finalize): 2005-11-30 James Livingston * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_init), (rb_station_properties_dialog_new): * lib/rb-glade-helpers.c: (rb_glade_boldify_label): * lib/rb-glade-helpers.h: * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_init), (rb_feed_podcast_properties_dialog_new): * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_init), (rb_podcast_properties_dialog_new): * shell/rb-audioscrobbler.c: (rb_audioscrobbler_get_config_widget): * shell/rb-shell-preferences.c: (rb_shell_preferences_init): * sources/rb-library-source.c: (impl_get_config_widget): * sources/rb-playlist-source-recorder.c: (rb_playlist_source_recorder_init): * widgets/rb-song-info.c: (rb_song_info_construct_single), (rb_song_info_constructor): create a single rb_glade_boldify_label() in rb-glade-helpers, rather than having eight implementation throughout the code. 2005-11-30 James Livingston * lib/rb-util.c: (rb_search_fold), (rb_make_duration_string): * lib/rb-util.h: * widgets/rb-entry-view.c: (rb_entry_view_duration_cell_data_func): move the duration->string function into rb-utils, as it gets used in a few places. patch by: William Jon McCann * data/glade/podcast-properties.glade: * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_init), (rb_podcast_properties_dialog_update), (rb_podcast_properties_dialog_update_title), (rb_podcast_properties_dialog_update_feed), (rb_podcast_properties_dialog_update_duration), (rb_podcast_properties_dialog_update_bitrate): Make the podcast info dialog look more like the song info dialog. Use the same "Feed" value that is displayed in the treeview (ie. the album field), displays the duration, uses units in the bitrate field, and sort the fields in the same order. 2005-11-29 James Livingston * rhythmdb/rhythmdb-marshal.list: * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (emit_load_error_idle), (rhythmdb_process_metadata_load), (entry_to_rb_metadata), (emit_save_error_idle), (action_thread_main): emit error signal when metadata write fails. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_db_load_error_cb), (rb_shell_db_save_error_cb): process the "metadata save" error and display it to the user. 2005-11-29 James Livingston * data/ui/rhythmbox-ui.xml: * sources/rb-podcast-source.c: (rb_podcast_source_songs_show_popup_cb), (rb_podcast_source_cmd_download_post), (rb_podcast_source_cmd_cancel_download): split download and cancel download commands. Replace usage of "Post" with "Esisode". Fixes bug 321653. 2005-11-18 William Jon McCann * widgets/rb-dialog.c (rb_error_dialog): Don't use a title on alert dialogs per the HIG. * sources/rb-playlist-source-recorder.c (burn_cd): Don't use the term Burn. (free_song_list): Routine to free song list. (rb_playlist_source_recorder_finalize): Use free_song_list. (rb_playlist_source_recorder_add_from_model): Return FALSE if unable to add all songs. Check that duration of all songs doesn't exceed MAX_PLAYLIST_DURATION which is set to 100 min. Fixes #321753. * sources/rb-playlist-source-recorder.c (check_media_length) (rb_playlist_source_recorder_start): Only check the duration and current media if the playlist length is longer than a standard CD (74 min). Otherwise, just let the Recorder do the check. * player/rb-recorder-gst.c (rb_recorder_init): Get a default drive at init. (rb_recorder_set_device): Don't leak drives. (rb_recorder_get_media_length): Use drive that was already set. (rb_recorder_burn): Let the recorder handle checking media type/size. Fixes bug 321754. 2005-11-29 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_sort_order): * rhythmdb/rhythmdb-query-model.h: add a function to resort the query, emitting the tree-model "resorted" signal. * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_finalize), (rb_entry_view_set_property), (rb_entry_view_constructor), (rb_entry_view_resort_model): * widgets/rb-entry-view.h: add a function to resort the entry view, using the above function. * sources/rb-iradio-source.c: (rb_iradio_source_songs_view_sort_order_changed_cb): * sources/rb-library-source.c: (rb_library_source_finalize), (songs_view_sort_order_changed_cb), (rb_library_source_do_query): * sources/rb-playlist-source.c: (rb_playlist_source_songs_sort_order_changed_cb): * sources/rb-podcast-source.c: (rb_podcast_source_posts_view_sort_order_changed_cb), (rb_podcast_source_do_query): use the above function instead of re-creating the query model. This makes changing the sorting an order of magnitude faster, as it uses a single resorted signal rather than deleting and re-adding everything (which emits 2N signals). Closes bug 315389. 2005-11-29 James Livingston patch by: Jonathan Matthew to disable column autosizing, which results in large speedups. Closes bug 312122. * po/ja.po: change the date format, so that it is a constant width * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_constructor): * widgets/rb-entry-view.c: (rb_entry_view_append_column), (rb_entry_view_constructor): make columns use fixed widths, disable column autosizing, and enable fixed-height mode. * widgets/rb-entry-view.c: (rb_entry_view_set_fixed_column_width), (rb_entry_view_get_time_date_column_sample): * widgets/rb-entry-view.h: functions to set a column to a fixed width, and get the canonical date format for the locale. ============ Version 0.9.2 2005-11-28 James Livingston * configure.ac: bump version to 0.9.2 * NEWS: update with changes for 0.9.2 2005-11-28 James Livingston patch by: Jonathan Matthew * shell/rb-playlist-manager.c: (rb_playlist_manager_set_property): Disable saving, renaming and delting for DAAP playlists. Fixes bug 322627. 2005-11-28 James Livingston * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): check if gnome_vfs_get_file_info is returning NULL for the mime-type. Should prevent bug 322619. * sources/rb-audiocd-source.c: (rb_audiocd_source_class_init): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): fix ipod browser visibility problem. 2005-11-28 James Livingston * daapsharing/rb-daap-mdns.c: (browse_cb), (rb_daap_mdns_browse): make Avahi 0.6 support actually work. Fixes bug 322519. 2005-11-26 Ryan P Skadberg * configure.ac: Fix configure check for Avahi 0.6/0.5 when avahi is specified in --with-mdns 2005-11-27 James Livingston patch by: Bastien Nocera * podcast/rb-podcast-parse.c: use the #define we are supposed to use, not the private one. Fixes bug 322485. 2005-11-26 James Livingston patch by Daniel S. Haischt to support Avahi 0.6, as well as 0.5. * configure.ac: * daapsharing/rb-daap-mdns.c: (get_avahi_client), (browse_cb), (rb_daap_mdns_browse), (resolve_cb), (rb_daap_mdns_resolve), (add_service): 2005-11-25 James Livingston * configure.ac: Make --enable-ipod not confuse configure. Closes bug 321926. 2005-11-25 James Livingston * metadata/rb-metadata-gst.c: (rb_metadata_gst_add_tag_data): use correct type for checking the date against 0. Stops a warning when saving metadata. 2005-11-25 James Livingston * player/rb-player-gst.c: (rb_player_set_replaygain): limit the volume adjustment to be inside the element's limits. Without this songs that have large ReplayGain values will recieve no increase because they are outside the acceptable range, causing them to remain quiet. 2005-11-25 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_class_init): * sources/rb-daap-source.c: (rb_daap_source_class_init): * sources/rb-ipod-source.c: * sources/rb-source.h: * sources/rb-library-source.h: * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_constructor), (rb_library_source_has_first_added_column), (rb_library_source_has_drop_support): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): Make library-derived sources not show the Date Added column, as it doesn't make sense. Fixes bug 322269. Move some of the feature funcs from the ipod and audio cd sources up to the removable media source. 2005-11-24 James Livingston * sources/rb-iradio-source.c: (rb_iradio_source_dispose): fix compile errors. oops. 2005-11-24 James Livingston * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_dispose), (rb_iradio_source_finalize), (rb_iradio_source_constructor): Chain up dispose method and use G_DEFINE_TYPE 2005-11-24 James Livingston * shell/rb-shell-player.c: (rb_shell_player_error): fix a silly mistake in the last commit that can cause crashes. 2005-11-24 James Livingston * shell/rb-shell-player.c: (rb_shell_player_error): use rb_debug, instead of g_printerr. * widgets/rb-entry-view.c: (rb_entry_view_set_sorting_type): use rb_debug instead of g_warning. The message happens every time for removable media/daap shares, so it's not unusual. 2005-11-24 James Livingston patch by: Tom Parker * configure.ac: fix libsoup test for enabling daap 2005-11-23 James Livingston * widgets/rb-query-creator.c: (rb_query_creator_class_init), (rb_query_creator_init), (rb_query_creator_constructor), (rb_query_creator_dispose), (rb_query_creator_load_query): don't add empty row to queries with no criteria. Fixes bug 322078. use G_DEFINE_TYPE. 2005-11-23 James Livingston patch by: * help/C/quick-reference.xml: update the quick reference to have the correct key bindings. 2005-11-22 James Livingston * sources/rb-library-source.c: (genres_selection_reset_cb), (artists_selection_reset_cb), (albums_selection_reset_cb): Properly reset the query when all browser selections are removed. 2005-11-22 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_db_entry_deleted_cb): Use a custom loop to remove podcast posts, rather than gtk_tree_model_foreach(), as deleting the entries within that loop causes the iterator to return the first entry twice. Instead, we need to find the next entry before removing the current one. Fixes bug 321956. (rb_podcast_manager_entry_remove_cb): No longer needed. 2005-11-22 James Livingston * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (rb_playlist_source_constructor), (rb_playlist_source_dispose): chain up dispose method, and use G_DEFINE_TYPE. Fixes bug 321715. 2005-11-22 James Livingston * sources/rb-podcast-source.c: (rb_podcast_source_post_date_cell_sort_func), (rb_podcast_source_post_status_cell_sort_func), (rb_podcast_source_post_feed_cell_sort_func): * widgets/rb-entry-view.c: (rb_entry_view_location_sort_func), (rb_entry_view_album_sort_func), (rb_entry_view_double_ceiling_sort_func), (rb_entry_view_ulong_sort_func), (rb_entry_view_string_sort_func): use the entry's location as a last resort when sorting, so the sort order is stable. This will stop entries moving around when two entries have the same sorting, and one of them gets played. 2005-11-22 James Livingston * daapsharing/rb-daap-connection.c: (rb_daap_connection_class_init), (rb_daap_connection_init), (connection_get_password), (build_message), (http_response_handler), (http_get), (handle_server_info), (handle_login), (handle_update), (handle_database_info), (handle_song_listing), (handle_playlists), (handle_playlist_entries), (rb_daap_connection_new), (rb_daap_connection_constructor), (rb_daap_connection_logout), (rb_daap_connection_state_done), (rb_daap_connection_do_something), (rb_daap_connection_get_headers), (rb_daap_connection_get_playlists), (rb_daap_connection_dispose), (rb_daap_connection_set_property), (rb_daap_connection_get_property): * daapsharing/rb-daap-connection.h: * sources/rb-daap-source.c: (rb_daap_source_dispose), (rb_daap_source_connection_cb), (rb_daap_source_disconnect_cb), (rb_daap_source_disconnect): GObject-ify RBDaapConnection, fix problem of destroying the object when it is going to be used by a callback and fixes a double-free. Fixes bugs 321930 and 322007. 2005-11-22 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_head_query_cb), (rb_podcast_manager_insert_feed): Don't show the "new episodes" notification if there aren't any. Fixes bug 321968. 2005-11-22 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_set_property), (rhythmdb_property_model_finalize), (rhythmdb_property_model_compare), (rhythmdb_property_model_insert), (rhythmdb_property_model_delete_prop): Fix property model sorting where the display and sort keys are different. Fixes bug 321980. 2005-11-22 James Livingston * shell/rb-shell.c: (add_to_library_response_cb): detect playlists when import as a file or passed on the command line, and load them as playlists. 2005-11-22 James Livingston patch by: Jonathan Matthew * daapsharing/rb-daap-src.c: (gst_tcp_socket_read), (gst_tcp_socket_write), (rb_daap_src_open_file): don't hang when using a broken daap server. Fixes bug 321919. 2005-11-22 James Livingston * sources/rb-podcast-source.c: (rb_podcast_source_constructor): set up drag-and-drop for both the episodes and feeds list. (posts_view_drag_data_received_cb), (impl_receive_drag): handle drops consistantly and steal a trick from Totem for _NETSCAPE_URL drops. From Jonathan Matthew . * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_set_property), (rb_property_view_get_property), (rb_property_view_new), (rb_property_view_constructor): * widgets/rb-simple-view.c: (rb_simple_view_class_init), (rb_simple_view_new), (rb_simple_view_constructor): * widgets/rb-simple-view.h: add a "draggable" property to property views and set it to false for the feed list. Fixes bug 321284. 2005-11-22 James Livingston Patch from Jonathan Matthew * shell/rb-playlist-manager.c: (rb_playlist_manager_new_playlist): * sources/rb-daap-source.c: (rb_daap_source_connection_cb): * sources/rb-ipod-source.c: (add_rb_playlist): * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (rb_playlist_source_set_property), (rb_playlist_source_get_property), (rb_playlist_source_new), (impl_receive_drag), (rb_playlist_source_add_location), (rb_playlist_source_new_from_xml): * sources/rb-playlist-source.h: give playlists and (optional) entry-type, and reject entries that don't match. Fixes bug 322006. 2005-11-21 James Livingston * shell/rb-source-header.c: (rb_source_header_source_weak_unref), (rb_source_header_finalize): remove the weak references when the source header is finalised. Stops the callbacks being called after the object is destroyed. 2005-11-21 James Livingston * shell/main.c: (main): don't try to acquite bonobo/dbus when --no-registration was passed. It causes warnings that make it impossible to run with --no-registration --g-fatal-warnings 2005-11-21 James Livingston * daapsharing/rb-daap-connection.c: (handle_song_listing): fix freeing of strings when they are still in use. Fixes bug 321547. (rb_daap_connection_destroy): fix memory leak 2005-11-21 James Livingston * daapsharing/rb-daap-mdns.c: (browse_cb), (rb_daap_mdns_browse), (rb_daap_mdns_browse_cancel), (resolve_cb), (rb_daap_mdns_resolve), (rb_daap_mdns_resolve_cancel), (publish_cb), (rb_daap_mdns_publish), (rb_daap_mdns_publish_cancel): fix Howl support. 2005-11-21 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_genre_sort_func): fix sorting by genre 2005-11-20 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_subscribe_feed): make threads non-joinable, so that we don't leak thread structures. Fixes bug 321636, and probably 321775. 2005-11-20 James Livingston * metadata/sj-metadata-musicbrainz.c: (get_offline_track_listing), (lookup_cd): * podcast/rb-podcast-manager.c: (start_job), (rb_podcast_manager_db_entry_deleted_cb), (rb_podcast_manager_entry_remove_cb): * podcast/rb-podcast-parse.c: (rb_insert_item), (rb_podcast_parse_load_feed): * rhythmdb/rhythmdb.c: (rhythmdb_entry_insert): * shell/rb-removable-media-manager.c: (rb_removable_media_manager_append_media_source): * shell/rb-shell.c: (add_to_library_response_cb): * shell/rb-tray-icon.c: (rb_tray_icon_drop_cb): * sources/rb-audiocd-source.c: (rb_audiocd_scan_songs): * sources/rb-iradio-source.c: (stations_view_drag_data_received_cb): * sources/rb-library-source.c: (string_list_equal), (impl_get_extra_views), (impl_receive_drag): * sources/rb-playlist-source.c: (rb_playlist_source_add_list_uri): * sources/rb-podcast-source.c: (posts_view_drag_data_received_cb), (impl_receive_drag): * widgets/rb-entry-view.c: (rb_entry_view_finalize), (rb_entry_view_append_column_custom), (harvest_entries): * widgets/rb-property-view.c: (rb_property_view_selection_changed_cb): * widgets/rb-simple-view.c: (rb_simple_view_button_press_cb): switch from using g_list_append to g_list_prepend. This changes operations from O(n^2) to O(n), which in cases like deleting a lot of tracks can give huge improvements in speed. Closes bug 321696. 2005-11-20 James Livingston * sources/rb-sourcelist.c: (rb_sourcelist_init), (rb_sourcelist_update_expander_visibility): fix indenting of child sources. 2005-11-20 James Livingston * daapsharing/rb-daap-mdns.c: (browse_cb), (rb_daap_mdns_browse), (resolve_cb), (rb_daap_mdns_resolve), (publish_cb), (rb_daap_mdns_publish), (rb_daap_mdns_publish_cancel), (rb_daap_mdns_browse_cancel), (rb_daap_mdns_resolve_cancel), (add_service), (entry_group_cb): dynamically allocate memory, rather than using static variables. * daapsharing/rb-daap-share.c: (rb_daap_share_set_property): don't re-enable the daap share if the name hasn't changed. * shell/rb-shell-preferences.c: (share_name_entry_focus_out_event_cb): don't ask the daap share to change it's name when the checkbox is disabled. Fixed bug 321748. 2005-11-18 James Livingston * shell/rb-shell.c: (rb_shell_get_visibility): don't count the window as hidden if it is on the current workspace. 2005-11-17 William Jon McCann * sources/rb-podcast-source.c (rb_podcast_source_post_date_cell_data_func): * podcast/rb-podcast-properties-dialog.c (rb_podcast_properties_dialog_update_date) (rb_podcast_properties_dialog_parse_time): * podcast/rb-feed-podcast-properties-dialog.c (rb_feed_podcast_properties_dialog_update_last_update) (rb_feed_podcast_properties_dialog_parse_time): Rework the way the last mod time strings are created. It was using thread unsafe functions, not creating value UTF, and not not checking the value of the result before modifying it. This new method fixes these problems. 2005-11-18 James Livingston Don't reset the search box when viewing a different source, because it will change what is being played. Closes 321593. * shell/rb-shell.c: (rb_shell_jump_to_entry_with_source): don't reset the search box * shell/rb-source-header.c: (rb_source_header_class_init), (rb_source_header_init), (rb_source_header_finalize): use G_DEFINE_TYPE. (rb_source_header_set_property), (rb_source_header_source_weak_destroy_cb), (rb_source_header_search_cb): store the search text when leaving a source and put it in the search box when viewing it again. 2005-11-18 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): * rhythmdb/rhythmdb.c: (rhythmdb_entry_finalize), (rhythmdb_entry_set_internal), (rhythmdb_prop_get_type): * rhythmdb/rhythmdb.h: Remove LAST_POST property, use LAST_SEEN as a time stamp. * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): use last-seen as the timestamp of the last update of the feed. Don't re-add episodes that have been deleted. Closes 319759. 2005-11-18 James Livingston * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): parse dates that don't have the day name at the start. Closes 321645. 2005-11-18 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_start_sync), (rb_podcast_manager_copy_post), (rb_podcast_manager_get_podcast_dir): * podcast/rb-podcast-manager.h: * sources/rb-podcast-source.c: (impl_get_config_widget), (rb_podcast_source_btn_file_change_cb): fix problem of podcast download location switching to / if the prefs were opened before downloading an episode. Closes 321611. 2005-11-18 James Livingston * data/glade/podcast-new.glade: * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init), (rb_new_podcast_dialog_set_property), (rb_new_podcast_dialog_get_property), (rb_new_podcast_dialog_response_cb), (rb_new_podcast_dialog_text_changed): use a GtkEntry not a GtkTextView for entering new podcast urls in. Closes bug 321610. 2005-11-18 James Livingston * sources/rb-podcast-source.c: (construct_query_from_selection), (rb_podcast_source_do_query): allow podcast list to be re-sorted without restarting RB. Closes bug 321612. 2005-11-18 James Livingston * widgets/rb-entry-view.c: (set_column_visibility), (rb_entry_view_sync_columns_visible): when changing visibility of one column, don't hide and re-show all the others. Makes a show/hide column operation a lot faster. 2005-11-17 Jonathan Matthew Closes bug 321702. * iradio/rb-station-properties-dialog.c (rb_station_properties_dialog_update_bitrate): Mark the bitrate value as being kbps, using the same translatable format string as rb-song-info.c * player/rb-player-gst.c (process_tag): Handle GST_TAG_BITRATE as a ulong, translating it to RB_METADATA_FIELD_BITRATE. * shell/rb-shell-player.c (info_available_cb): Use RB_METADATA_FIELD_BITRATE to update the iradio station's bitrate value. 2005-11-17 James Livingston patch by: Jonathan Matthew . Closes bug 321699 * rhythmdb/rhythmdb.c: (rhythmdb_entry_finalize): don't attempt to free a NULL date. 2005-11-17 James Livingston Patch by: Jonathan Matthew . Closes bug 321698 * lib/rb-stock-icons.c: emit a single warning rather than multiple assertions. Lookup the icon size correctly. 2005-11-16 William Jon McCann * daapsharing/rb-daap-mdns.c (get_sw_discovery) (rb_daap_mdns_browse_cancel, rb_daap_mdns_resolve_cancel): Fix build errors. 2005-11-16 James Livingston * shell/rb-shell-preferences.c: (rb_shell_preferences_class_init), (rb_shell_preferences_finalize), (rb_shell_preferences_sync), (rb_shell_preferences_sync_column_button): block the toggle signal of the column checkboxes while setting their initial state. This stops the visibility being re-set, which causes a lot of time being spent measuring the columns aagin when opening the prefs window. Use G_DEFINE_TYPE. 2005-11-16 James Livingston * sources/rb-sourcelist.c: (rb_sourcelist_init), (rb_sourcelist_edit_source_name): don't assume that the editable source name is in the first column, because it isn't. Fixes bug 320137. 2005-11-16 James Livingston * daapsharing/rb-daap-mdns.h: * daapsharing/rb-daap-mdns.c: (rb_daap_mdns_error_quark), (get_sw_discovery), (get_avahi_client): use GErrors, so that other parts can know why operations failed. Avahi can report that the daemon was not running. Howl doesn't do this (yet). (rb_daap_mdns_browse), (rb_daap_mdns_resolve), (rb_daap_mdns_publish), (rb_daap_mdns_publish_cancel), (browse_cb): don't display mdns errors to the user, if it wa because the daemon was not running. 2005-11-16 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_init), (rhythmdb_property_model_finalize), (rhythmdb_property_model_compare), (rhythmdb_property_model_insert), (rhythmdb_property_model_insert_prop), (rhythmdb_property_model_delete), (rhythmdb_property_model_delete_prop), (rhythmdb_property_model_get_value): use RBRefStrings rather than copying the string and re-creating the sort key. Saves a little bit of memory and time. (rhythmdb_property_model_perform_sync), (rhythmdb_property_model_sync): perform the count sync in an idle callback, so that it doesn't have to be re-run once per value when loading. 2005-11-16 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_deleted_cb), (rhythmdb_query_model_remove_entry): remove deleted entries from the limited list. Stops problems if they are deleted, and then things on the main list are 2005-11-16 James Livingston * NEWS: update NEWS * shell/rb-shell.c: (rb_shell_window_delete_cb): disable close button's minimise-to-tray action 2005-11-16 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_directory_change_cb): fix a memory leak. Disable adding newly created files for now, because it doesn't work properly. * sources/rb-sourcelist-model.c: (rb_sourcelist_model_class_init), (rb_sourcelist_model_finalize): * sources/rb-sourcelist.c: (rb_sourcelist_class_init), (rb_sourcelist_finalize): use G_DEFINE_TYPE, 2005-11-16 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_is_volume_audiocd): fix problem where a GError* wasn't being set to NULL. Actually check the result. 2005-11-16 James Livingston * doc/reference/tmpl/rb-entry-view.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb-query-model.sgml: * doc/reference/tmpl/rhythmdb.sgml: * rhythmdb/rhythmdb.c: (rhythmdb_entry_unref): add some RhythmDB API docs, including the patch that was on bug * rhythmdb/rhythmdb.h: remove rhythmdb_entry_destroy from the public API, because it should only be used by RhythmDB itself. 2005-11-16 James Livingston * shell/rb-tray-icon.c: (rb_tray_icon_button_press_event_cb): allow pausing by middle clicking on the tray icon. 2005-11-15 James Livingston * configure.ac: enable audioscrobbler support by default, if libsoup is present. 2005-11-15 James Livingston patch by: Jonathan Matthew Closes bug 321157. * configure.ac: * daapsharing/rb-daap-connection.c: (build_message), (g_zalloc_wrapper), (g_zfree_wrapper), (http_response_handler): support gzip encoded daap connections. (handle_song_listing): fix leak 2005-11-15 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): * sources/rb-podcast-source.c: (rb_podcast_source_post_date_cell_data_func): make the date format translatable again, so that translators can choose the best format for their locale (%x is huge in some locales) 2005-11-15 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_save_metadata), (end_job): mark podcast episodes as failed, if the metadata load fails. This will prevent people playing non-audio enclosures, helping stop bug 320366. 2005-11-14 James Livingston * player/rb-player-gst.c: (rb_player_construct): Explicitly set the video sink to fakesink. This will stop problems (potentially crashers) that will occur if the file contains a video stream. * rhythmdb/rhythmdb.h: define the podcast status number in an enum, rather than using magic numbers everywhere. * shell/rb-shell-player.c: (rb_shell_player_entry_activated_cb): * sources/rb-podcast-source.c: (rb_podcast_source_songs_show_popup_cb), (rb_podcast_source_cmd_download_post), (rb_podcast_source_post_status_cell_data_func), (rb_podcast_source_entry_activated_cb): use the above constants. * podcast/rb-podcast-manager.c: (rb_podcast_manager_init), (rb_podcast_manager_finalize), (rb_podcast_manager_download_entry), (rb_podcast_manager_next_file), (rb_podcast_manager_copy_post), (write_job_data), (rb_podcast_manager_cancel_all), (end_job), (cancel_job), (download_progress_cb), (rb_podcast_manager_cancel_download), (rb_podcast_manager_insert_feed): use the constants, and fix a trhead-safety issue. 2005-11-14 Bastien Nocera * rhythmdb/rhythmdb.c: (rhythmdb_process_stat_event): Patch from Jonathan Matthew to avoid lingering entry-changed events after stats on startup, fixes entry deleted from filtered views not disappearing 2005-11-14 Jonathan Matthew Fix rhythmdb query model refcount and polling problems. Closes bug 321410. * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_finalize): Unref the query model if we have one. * rhythmdb/rhythmdb-query-model.h: Remove poll and cancel methods. Query cancellation never did anything anyway. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_init): Remove GAsyncQueues. Replace the GAsyncQueue-based update processing with a simpler g_idle_add approach; still has the same queueing properties, but now we don't poll the model forever and updates are processed immediately. (_unref_entry), (rhythmdb_query_model_finalize): Unref DB entries when finalized (rhythmdb_query_model_has_pending_changes): Use our own counter to decide if there are updates pending (rhythmdb_query_model_process_update), (idle_process_update): Process updates using g_idle_add, or directly if possible (rhythmdb_query_model_signal_complete), (rhythmdb_query_model_add_entries): Change to new update processing method (idle_poll_model), (rhythmdb_query_model_poll): Remove GAsyncQueue-based update processing. * rhythmdb/rhythmdb.c: (rhythmdb_do_full_query_internal): No need to poll the model any more - updates are processed directly for synchronous queries. * sources/rb-iradio-source.c: (rb_iradio_source_do_query): Property model needs to be unref'd here * sources/rb-library-source.c: (rb_library_source_do_query): Don't try to cancel the active query (it never worked anyway), remove obsolete poll call, unref property models as required, and don't unref the cached 'all' query, since hold on to it. We unref it when the sort order changes, which forces the query to be rerun. * sources/rb-podcast-source.c: (rb_podcast_source_constructor): Unref the property model as required (rb_podcast_source_do_query): Treat any query with no selected feeds and no search text as an 'all' query. Unref query models except for the cached 'all' query, since we hold on to that. (rb_podcast_source_cmd_update_all): Unref the property model as required. * widgets/rb-entry-view.c: (rb_entry_view_set_property): Don't try to cancel the query (it never worked anyway) (rb_entry_view_poll_model): No need for this any more. * widgets/rb-entry-view.h: Remove obsolete function rb_entry_view_poll_model * widgets/rb-property-view.c: (rb_property_view_set_property): Ref and unref the property model as required. 2005-11-14 James Livingston patch by: Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_open_location): fix checks for error. Closes bug 321416. 2005-11-14 James Livingston patch by: Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): fix a crasher if a feed's last-post value isn't set. Closes bug 321353. 2005-11-14 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_set_uimanager): * shell/rb-removable-media-manager.c: (rb_removable_media_manager_set_uimanager): * shell/rb-tray-icon.c: (rb_tray_icon_constructor): set the translation domain for GTK action groups. 2005-11-12 James Livingston * po/POTFILES.in: remove the old station-new files 2005-11-12 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element), (save_entry_ulong), (save_entry): cause Rhythmbox to re-read the metadata from a file, when upgrading from a pre-Date-supporting version to a version that supports Date metadata. Closes bug 320760. 2005-11-12 James Livingston Add "update all podcast feeds" command. Closes bug 319954. * data/ui/rhythmbox-ui.xml: add to source context menu. * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (register_action_group), (rb_podcast_source_cmd_download_post), (rb_podcast_source_cmd_delete_feed), (rb_podcast_source_cmd_properties_feed), (rb_podcast_source_cmd_update_feed): pass the source to the actions, rather than the shell. (rb_podcast_source_update_feed_func), (rb_podcast_source_cmd_update_all): update every feed. 2005-11-11 James Livingston * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_constructor), (rb_shell_player_finalize): * shell/rb-shell.c: fix some conflicting keybindings, and mak some others follow the HIG recommentations. 2005-11-11 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_subscribe_feed): check that the url is valid, before trying to use it. 2005-11-11 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_date_sort_func), (rb_entry_view_append_column): When sorting by year, sort by album within a particular year. 2005-11-11 James Livingston * NEWS: updates 2005-11-10 Charles Schmidt * daapsharing/rb-daap-connection.c: (build_message): Fixed the spelling of "Language." 2005-11-11 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_entry_removed_cb), (rhythmdb_property_model_insert_prop), (rhythmdb_property_model_sync): display the count after the "All" entry of a property model. * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_finalize), (rb_property_view_constructor): use G_DEFINE_TYPE 2005-11-10 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_remove_entry): * rhythmdb/rhythmdb-query-model.h: make rhythmdb_query_model_remove_entry return whether the entry was in the model. * sources/rb-playlist-source.c: (rb_playlist_source_add_location): don't add non-SONG entries, as it doesn't really work and can cause crashes. (rb_playlist_source_remove_location): assert if the playlist and model differ on whether the entry is in the playlist 2005-11-10 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_init), (rb_podcast_manager_finalize), (rb_podcast_manager_subscribe_feed), (rb_podcast_manager_thread_parse_feed), (rb_podcast_manager_insert_feed), (rb_podcast_manager_event_loop), (rb_podcast_manager_abort_subscribe): use a GAsyncQueue rather than emulating one with a list and mutex. Fixes a couple of threading issues. (rb_podcast_manager_insert_feed): fix some problems with ignoring updated feeds. (rb_podcast_manager_download_entry), (rb_podcast_manager_next_file), (rb_podcast_manager_copy_post), (end_job), (cancel_job), (download_progress_cb), (rb_podcast_manager_db_entry_deleted_cb), * podcast/rb-podcast-parse.c: (rb_insert_item), (rb_podcast_parse_channel_free): * podcast/rb-podcast-parse.h: Convert C++-style comments to C-style, fix some typos, and make a bit of code clearer. 2005-11-10 Dennis Cranston Make the "delete podcast" dialog better. Closes bug 320899. * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property): Add PROP_WINDOW for rb_shell_get_property so we can access the GtkWindow widget of the main window. * sources/rb-podcast-source.c: (impl_delete): Set parent window & fix mnemonic conflict; (rb_podcast_source_cmd_delete_feed): Make the podcast feed delete dialog less confusing as well. 2005-11-09 James Livingston * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume), (rb_removable_media_manager_scan): Fix a crasher where we were getting NULL for a cd volume. 2005-11-08 Jonathan Matthew * rhythmdb/rhythmdb.h: make RhythmDB's impl_entry_set method return a gboolean indicating whether the changes to the entry have already been applied. * rhythmdb/rhythmdb.c: (rhythmdb_entry_set_internal): only modify the entry if impl_entry_set returns FALSE. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_entry_set): When setting the location of an entry, update the hash table mapping locations to entries. 2005-11-08 Jonathan Matthew * data/glade/Makefile.am: * iradio/Makefile.am: Remove 'new station' dialog. * iradio/rb-station-properties-dialog.h: * sources/rb-iradio-source.c: (impl_song_properties): * shell/rb-shell.c: (rb_shell_cmd_new_station): Add 'new station' mode parameter to rb_station_properties_dialog_new. * (rb_station_properties_dialog_response_cb), (rb_station_properties_dialog_create_station): When in 'new station' mode, create the station when OK button is pressed. * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_location_changed_cb): Only enable OK button if a location is specified (rb_station_properties_dialog_init), (rb_station_properties_dialog_new), (rb_station_properties_dialog_update), (rb_station_properties_dialog_update_title), (rb_station_properties_dialog_rated_cb), (rb_station_properties_dialog_update_play_count), (rb_station_properties_dialog_update_bitrate), (rb_station_properties_dialog_update_last_played), (rb_station_properties_dialog_update_rating), (rb_station_properties_dialog_update_playback_error), (rb_station_properties_dialog_show): Handle 'new station' mode, where there's no current station to edit. 2005-11-08 James Livingston * sources/rb-playlist-source.c: (rb_playlist_source_constructor): make keybinding for track columns consistent between library and playlist sources. 2005-11-07 James Livingston * data/ui/rhythmbox-ui.xml: * shell/rb-playlist-manager.c: (rb_playlist_manager_set_property): add "Edit" item to playlist menu. Closes bug 311470. 2005-11-07 James Livingston patch by: Jaap A. Haitsma * widgets/rb-dialog.c: (rb_file_chooser_new): add overwrite confirmation to save dialogs, with gtk 2.8 or higher. 2005-11-07 James Livingston * configure.ac: move gnome-vfs 2.7.4 from being an ipod-only requirement to a general on, because people are going to have it for the other dependencies. 2005-11-06 Dennis Cranston * sources/rb-podcast-source.c: (impl_delete): Make the podcast delete dialog less confusing. Use HIG recommended button order. Closes bug 320840. 2005-11-06 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_class_init): remove drag-and-drop error. * sources/rb-library-source.c: (rb_library_source_constructor): only add drag-and-drop for the Library itself, subclasses can add support themselves if they want it. * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): by default removable media sources do not support dnd 2005-11-05 Jonathan Matthew * data/glade/station-properties.glade: Add box containing error icon and error message label * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_class_init), (rb_station_properties_dialog_finalize): Change this class to use G_DEFINE_TYPE (rb_station_properties_dialog_init), (rb_station_properties_dialog_update), (rb_station_properties_dialog_update_playback_error): Display error icon and message when there is one, and hide the error box otherwise. (rb_station_properties_dialog_show): Hack widget show method to update the visibility of the error info box when showing the widget. Otherwise the icon is displayed all the time (same thing is done in rb-song-info). Closes bug 320749. 2005-11-04 Dennis Cranston * podcast/rb-podcast-parse.c: (rb_podcast_parse_time): Fix the parsing of the duration of podcast episodes from the feed. Closes bug 320748. 2005-11-05 James Livingston patch by Christophe Fergeau to add support for the release date metadata ("Year"). Closes bug 166093. * metadata/rb-metadata-common.c: (rb_metadata_get_field_type): * metadata/rb-metadata-gst.c: (rb_metadata_gst_load_tag), (rb_metadata_gst_add_tag_data): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): * rhythmdb/rhythmdb.c: (metadata_field_from_prop), (extract_gtype_from_enum_entry), (rhythmdb_entry_finalize), (set_props_from_metadata), (rhythmdb_entry_set_internal), (rhythmdb_prop_get_type): * rhythmdb/rhythmdb.h: add support for "date" property * data/glade/general-prefs.glade: * shell/rb-shell-preferences.c: (rb_shell_preferences_init): * widgets/rb-entry-view.c: (rb_entry_view_year_cell_data_func), (rb_entry_view_append_column): * widgets/rb-entry-view.h: * sources/rb-library-source.c: (rb_library_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): Add "Year" colums * data/glade/song-info.glade: * widgets/rb-song-info.c: (rb_song_info_boldify_label), (rb_song_info_construct_single), (rb_song_info_constructor), (rb_song_info_populate_dialog), (rb_song_info_update_year), (rb_song_info_sync_entry_single): Add "Year" to song info window * widgets/rb-query-creator-properties.c: Allow auto playlists to be sorted by year. 2005-11-05 James Livingston * data/glade/podcast-properties.glade: Add a scrollbar to the podcast description if it's very long. 2005-11-05 James Livingston pathc by: Artem Baguinski * help/C/Makefile.am: * help/ja/Makefile.am: allow Anjuta to import the RB source tree. Closes bug 320613. 2005-11-05 James Livingston patch by: Jonathan Matthew * daapsharing/rb-daap-share.c: (write_next_chunk), (message_finished), (databases_cb): Use chunked file loading and sending in the DAAP server. This should reduce the amount of memory required to send files to the client. 2005-11-05 James Livingston * configure.ac: make the nautilus_burn_drive_door_is_open detection work better on some systems. Closes 320622. 2005-11-05 James Livingston * data/glade/audioscrobbler-prefs.glade: add a link to the last.fm homepage, so that users can find out what AudioScrobbler is. Add access keys. * data/glade/daap-prefs.glade: * data/glade/general-prefs.glade: * data/glade/library-prefs.glade: make the indent be more consistent * data/glade/podcast-prefs.glade: * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (impl_get_config_widget): move thing out of code into glade, where they belong 2005-11-05 James Livingston * shell/rb-shell.c: (rb_shell_constructor): really remove bit of code related to WITH_CD_BURNER_SUPPORT that I missed in the other commit 2005-11-04 James Livingston * configure.ac: don't print DAAP configure info twice 2005-11-04 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_set_property): * sources/rb-playlist-source.c: (burn_playlist_iter_func), (rb_playlist_source_burn_playlist): remove the WITH_CD_BURNER_SUPPORT #ifdefs, since we removed the symbol. Oops 2005-11-04 James Livingston * sources/rb-ipod-source.c: (hal_udi_is_ipod): put the libhal_ctx_init after the connect line, not before. Oops. 2005-11-04 James Livingston * sources/rb-podcast-source.c: (rb_podcast_source_cmd_update_feed): fix some warnings 2005-11-03 James Livingston * NEWS: update the news file * data/glade/general-prefs.glade: make the prefs refer to "time" not "duration" column. * data/ui/rhythmbox-ui.xml: * shell/rb-playlist-manager.c: * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_feeds_show_popup_cb): don't have both "unsubscribe" and "delete" for feeds. 2005-11-03 James Livingston * sources/rb-podcast-source.c: (impl_delete), (rb_podcast_source_cmd_delete_feed): Allow users to cancel deleting a feed. Closes 319760. 2005-11-03 James Livingston Don't start playing from the remote site when a un-downloaded podcast is activated. Closes 319983. * podcast/rb-podcast-manager.c: (rb_podcast_manager_add_post), (write_job_data), (download_progress_cb): write the local location as soon as any data is recieved * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): set the mountpoint to NULL for podcast episodes that haven't yet been downloaded. * shell/rb-shell-player.c: (rb_shell_player_entry_activated_cb): don't start playing a podcast if it hasn't been downloaded. * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_entry_activated_cb): begin downloading when the podcast is activated. 2005-11-03 Dennis Cranston * data/glade/general-prefs.glade: Fix capitalization. * shell/rb-removable-media-manager.c: Add a mnemonic. * sources/rb-podcast-source.c: (rb_podcast_source_songs_show_popup_cb), (rb_podcast_source_feeds_show_popup_cb): Add mnemonics. 2005-11-03 James Livingston patch by: Shun-ichi Tahara * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): don't check network or autofs mounts, as they're not going to be removable media. Stops sending lots of warnings to syslog. Closes 320571. * sources/rb-ipod-source.c: (hal_udi_is_ipod): actually initialise the DBus connection, so that it doesn't wedge gnome-vfs-daemon. Closes 320570. 2005-11-03 James Livingston Add support for playing audio CDs. Metadata lookup is done using SoundJuicer's MusicBrainz lookup code, which can be switched to using the library when it gets broken out of S-J. Add a "rescan media" menu item, and commands for ejecting removable media. Move nautilus-cd-burner from optional to required depenency. * configure.ac: * data/ui/rhythmbox-ui.xml: * metadata/Makefile.am: + metadata/sj-error.c: + metadata/sj-error.h: + metadata/sj-metadata-marshal.list: + metadata/sj-metadata-musicbrainz.c: + metadata/sj-metadata-musicbrainz.h: + metadata/sj-metadata.c: + metadata/sj-metadata.h: + metadata/sj-structures.c: + metadata/sj-structures.h: * player/Makefile.am: * player/rb-player-gst.c: (cdda_got_source_cb), (rb_player_open): * po/POTFILES.in: * shell/Makefile.am: * shell/rb-removable-media-manager.c: (rb_removable_media_manager_dispose), (poll_tray_opened), (end_cd_drive_monitor), (begin_cd_drive_monitor), (rb_removable_media_manager_load_media), (rb_removable_media_manager_mount_volume), (rb_removable_media_manager_cmd_eject_medium), (rb_removable_media_manager_cmd_scan_media), (rb_removable_media_manager_check_volume), (rb_removable_media_manager_unmount_volume_swap), (rb_removable_media_manager_scan): * sources/Makefile.am: + sources/rb-audiocd-source.c: + sources/rb-audiocd-source.h: * tests/Makefile.am: 2005-11-02 James Livingston patch by: Jonathan Matthew * sources/rb-iradio-source.c: (stations_view_drag_data_received_cb): * sources/rb-podcast-source.c: (posts_view_drag_data_received_cb): don't crash when the second uri is missing frm the drop, which browsers sometimes do. 2005-11-01 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_add_post), (rb_podcast_manager_insert_feed): * podcast/rb-podcast-manager.h: * podcast/rb-podcast-parse.c: (rb_podcast_initializa_item), (rb_set_item_value), (rb_validate_item_propert), (rb_podcast_parse_date), (rb_podcast_parse_time): * podcast/rb-podcast-parse.h: get the duration of podcast episodes from the feed. 2005-10-31 James Livingston * ChangeLog: * ChangeLog0.8: break off the older Changelog entries, so it isn't so huge 2005-10-31 James Livingston * sources/rb-podcast-source.c: (rb_podcast_source_post_date_cell_data_func): generate the date string in a way that is correct in all locales. * rhythmdb/rhythmdb.c: (rhythmdb_entry_allocate), (rhythmdb_entry_sync_mirrored): make the last played/date added columns use the same format. 2005-10-30 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_subscribe_feed): fix feed updating, which I broke * shell/rb-shell-player.c: (rb_shell_player_open_location): report iradio errors better. 2005-10-30 James Livingston patch by: Artem Baguinski * metadata/rb-metadata-gst.c: (rb_metadata_init): 2005-10-30 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_subscribe_feed), (rb_podcast_manager_insert_feed): Don't crash if the podcast feed has already been added, usually as a radio station. Closes 319434. 2005-10-29 Dennis Cranston * data/glade/podcast-new.glade: HIG fixes (spacing, capitalization, mnemonics & resize issues) * data/glade/podcast-prefs.glade: HIG fixes (spacing, capitalization & mnemonics) * sources/rb-podcast-source.c: (impl_get_config_widget): Set mnemonic widget for the "download location" label. Closes bug 320184. 2005-10-29 James Livingston Allow the search box to match words from multiple properties. Closes bug 139196. Thanks to the person from IRC who did a lot of the initial work. * lib/rb-util.c: (rb_string_split_words), (rb_search_fold): * lib/rb-util.h: Add functions to split a string into words, and one to perform "search folding" which is currently like casefolding but also strips punctuation * rhythmdb/rhythmdb.c: (rhythmdb_prop_get_type), (rhythmdb_query_preprocess): * rhythmdb/rhythmdb.h: add a SEARCH_MATCH property which will match against title, artist, album and genre (for the search box) * rhythmdb/rb-refstring.c: (rb_refstring_new_full): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry), (search_match_properties), (evaluate_conjunctive_subquery): process the SEARCH_MATCH property by splitting into words and matching across multiple properties. * sources/rb-library-source.c: (construct_query_from_selection): use the new SEARCH_MATCH property for the search box * widgets/rb-entry-view.c: (type_ahead_search_func): 2005-10-29 James Livingston * lib/rb-stock-icons.c: (rb_stock_icons_init): * lib/rb-stock-icons.h: bind gnome-icon-theme icons to stock ids. * shell/rb-playlist-manager.c: * shell/rb-shell.c: use the above stock ids, so that the icons get set correctly. * shell/rb-shell-player.c: (rb_shell_player_constructor): set the initial state of the shuffle/repeat menu items correctly. Patch from Dennis Cranston , closes 313158. 2005-10-29 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post): fix double-free. * widgets/rb-cell-renderer-pixbuf.c: (rb_cell_renderer_pixbuf_render): don't colour these, as it makes the icon go black when row is not selected * doc/reference/tmpl/rb-daap-connection.sgml: * doc/reference/tmpl/rhythmdb.sgml: doc updates 2005-10-29 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post): fix a silly mistake, where it could think partial downloads has been completed. 2005-10-29 James Livingston patch by: Jonathan Matthew * data/glade/song-info.glade: * widgets/rb-song-info.c: (rb_song_info_construct_single), (rb_song_info_populate_num_field), (rb_song_info_populate_dialog), (rb_song_info_sync_entry_single): show the disc number in the song info window. From bug 311199. 2005-10-29 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_events), (rhythmdb_query_preprocess), (rhythmdb_idle_save): Save database regularly. Closes 155306. 2005-10-29 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_download_entry), (rb_podcast_manager_copy_post), (rb_podcast_manager_add_post), (rb_podcast_manager_insert_feed): * podcast/rb-podcast-manager.h: * podcast/rb-podcast-parse.c: (rb_set_item_value), (rb_podcast_parser_start_element): * podcast/rb-podcast-parse.h: Detect already-downloaded podcasts, and don't download them again. However, it can't resume partially-downloaded ones. 2005-10-28 James Livingston * metadata/rb-metadata-gst.c: (rb_add_id3_tagger), (rb_metadata_gst_add_tag_data), (rb_metadata_save): Make ID3 tagging work. Don't attempt to write duration as a tag. Thanks to Artem Baguinski 2005-10-28 James Livingston * shell/rb-source-header.c: (rb_source_header_sync_control_state): don't disable the status-bar menu item when the current source doesn't use the search box. 2005-10-28 James Livingston * podcast/rb-podcast-manager.c: (download_progress_update_cb): don't crash if the file has unknown length 2005-10-27 James Livingston * daapsharing/rb-daap-connection.c: (rb_daap_connection_state_done): don't assert when a daap server doesn't have any playlists 2005-10-27 James Livingston * sources/rb-sourcelist-model.c: (rb_sourcelist_model_set_dnd_targets): Add the COPY action to the drag source for the sourcelist. Closes bug 319817. 2005-10-26 Ryan P Skadberg Patch by: Renato Araujo * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): Fix for a crasher caused by previous patch. 2005-10-26 James Livingston * data/glade/podcast-prefs.glade: * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init): * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): * sources/rb-podcast-source.c: (rb_podcast_source_new): * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post), (rb_podcast_manager_add_post), (rb_podcast_manager_insert_feed), (rb_podcast_manager_event_loop): * shell/rb-shell.c: Change some strings to make them more consistent. "Podcast" is now replaces by "Podcast Feed" or "Podcast Episode" which makes it clearer which is which. "Episode" may not be the best term, but it seems to be widely used. Also fix some strings that weren't marked as translatable. * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_class_init), (rb_feed_podcast_properties_dialog_finalize): * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_class_init), (rb_new_podcast_dialog_finalize): * widgets/rb-simple-view.c: (rb_simple_view_class_init), (rb_simple_view_finalize), (rb_simple_view_constructor): * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_class_init), (rb_podcast_properties_dialog_finalize): * podcast/rb-podcast-manager.c: (rb_podcast_manager_class_init), (rb_podcast_manager_constructor), (rb_podcast_manager_finalize), * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_finalize), (rb_podcast_source_constructor): use G_DEFINE_TYPE, instead of doing it manually. 2005-10-26 James Livingston Patch by Artem Baguinski and James Livingston * metadata/rb-metadata-gst.c: (rb_add_id3_tagger), (rb_metadata_init): Check that the necessary plugins are present to do id3 editing. (rb_metadata_file_valid), (rb_metadata_save): Ensure the file isn't corrupted before replacing the original. 2005-10-25 Jonathan Matthew reviewed by: James Livingston Assign sequential IDs to playlists for DAAP rather than using the address of the playlist object. Less flaky, and should work on 64bit platforms. Closes bug 319304. * daapsharing/rb-daap-share.c: (rb_daap_share_set_property): watch for playlist creation (_find_by_id), (_find_by_source): playlist list search functions (rb_daap_share_playlist_created), (rb_daap_share_process_playlist), (rb_daap_share_playlist_destroyed): update playlist list as it changes, use weak refs on playlists to get notified on destroy. (rb_daap_share_forget_playlist), (rb_daap_share_dispose): destroy playlist list on shutdown (add_playlist_to_mlcl): use playlist ID rather than pointer in DAAP response (databases_cb): search for playlist ID in list rather than just converting it to a pointer; return HTTP 404 if playlist not found. (rb_daap_share_start_publish): playlist IDs start at 2, since 1 is already used for the main library 2005-10-26 James Livingston patch by: Jonathan Matthew * daapsharing/rb-daap-connection.c: (build_message), (http_response_handler), (http_get), (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_logout), (rb_daap_connection_state_done), (rb_daap_connection_do_something), (rb_daap_connection_get_headers), (rb_daap_connection_destroy): * daapsharing/rb-daap-connection.h: * sources/rb-daap-source.c: (rb_daap_source_activate), (rb_daap_source_connection_cb), (rb_daap_source_disconnect_cb), (rb_daap_source_disconnect): Make connecting to DAAP sources asynchronous, so that non-responsive servers don't hang the UI. Closes 316225. 2005-10-26 James Livingston patch by: Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_do_reorder): generate the row re-order map correctly. * widgets/rb-entry-view.c: (rb_entry_view_set_property), (rb_entry_view_row_changed_cb), (rb_entry_view_rows_reordered_cb): Update selection when rows get re-ordered. Closes 319718. 2005-10-26 James Livingston patch from Jonathan Matthew * shell/rb-play-order.c: (rb_play_order_playing_source_changed): actually set the db pointer in play orders. Closes 319818. 2005-10-25 Ryan P Skadberg Patch by: Renato Araujo * podcast/rb-podcast-manager.c: (rb_podcast_manager_start_sync), (rb_podcast_manager_sync_head_cb), (rb_podcast_manager_add_post), (rb_podcast_manager_update_synctime), (rb_podcast_manager_config_changed), (rb_podcast_manager_insert_feed): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): * rhythmdb/rhythmdb.c: (rhythmdb_entry_finalize), (rhythmdb_entry_set_internal), (rhythmdb_prop_get_type): * rhythmdb/rhythmdb.h: Fixes for #319759 and #319755. 2005-10-25 James Livingston * daapsharing/rb-daap-share.c: (db_entry_added_cb), (db_entry_deleted_cb): don't share tracks that are hidden because the file is missing. 2005-10-22 James Livingston * shell/rb-shell-player.c: (rb_shell_player_set_playing_entry): don't crash if an entry couldn't be playerd, without streamer setting an error. Patch from Jonathan Matthew * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init), (rb_new_podcast_dialog_text_changed): enable the add button when a url is pasted into the dialog. * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): * podcast/rb-podcast-parse.c: (rb_set_channel_value), (rb_set_item_value), (rb_insert_item), (rb_validate_item_propert), (rb_podcast_parse_channel_free): * podcast/rb-podcast-parse.h: handle per-entry author names in podcast feeds 2005-10-22 James Livingston * sources/rb-iradio-source.c: (rb_iradio_source_first_time_changed): Make merging the default stations actually work. * sources/rb-podcast-source.c: (rb_podcast_source_post_status_cell_data_func): fix problem where some people weren't seing the percentages in the stats column. 2005-10-21 James Livingston Patch from Caio Marcelo * shell/rb-shell.c: (rb_shell_window_state_cb), (rb_shell_get_visibility), (idle_hide_mainwindow), (rb_shell_set_visibility): Make the "show window" item in the tray icon menu show the toggle state correctly. Use a better policy on deciding whether the window is "visible" or not. Closes bug 308053. 2005-10-21 James Livingston * doc/reference/tmpl/rb-shell-preferences.sgml: * shell/Makefile.am: fix building with gtk-doc * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): don't submit podcasts to audioscrobbler Patch from Jonathan Matthew * podcast/rb-podcast-parse.c: (rb_set_channel_value), (rb_set_item_value): strip spaces surrounding podcast urls Patch from Paul Kuliniewicz * rhythmdb/rhythmdb.h: fix crasher caused by dbus-podcast interaction 2005-10-20 Ryan P Skadberg Patch from Ruben Vermeersch to add Audioscrobbler/Last.fm support * configure.ac: * data/glade/Makefile.am: * data/glade/audioscrobbler-prefs.glade: * data/rhythmbox.schemas: * lib/Makefile.am: * lib/md5.c: (md5_process), (md5_init), (md5_append), (md5_finish): * lib/md5.h: * lib/rb-preferences.h: * po/POTFILES.in: * shell/Makefile.am: * shell/rb-audioscrobbler.c: (rb_audioscrobbler_class_init), (rb_audioscrobbler_init), (rb_audioscrobbler_finalize), (rb_audioscrobbler_new), (rb_audioscrobbler_set_property), (rb_audioscrobbler_get_property), (rb_audioscrobbler_add_timeout), (rb_audioscrobbler_timeout_cb), (mkmd5), (rb_audioscrobbler_parse_response), (rb_audioscrobbler_perform), (rb_audioscrobbler_do_handshake), (rb_audioscrobbler_do_handshake_cb), (rb_audioscrobbler_submit_queue), (rb_audioscrobbler_submit_queue_cb), (rb_audioscrobbler_import_settings), (rb_audioscrobbler_preferences_sync), (rb_audioscrobbler_get_config_widget), (get_proxy_uri), (rb_audioscrobbler_gconf_changed_cb), (rb_audioscrobbler_song_changed_cb), (rb_audioscrobbler_username_entry_changed_cb), (rb_audioscrobbler_username_entry_activate_cb), (rb_audioscrobbler_password_entry_changed_cb), (rb_audioscrobbler_password_entry_activate_cb), (rb_audioscrobbler_enabled_check_changed_cb), (audioscrobbler_entry_init), (audioscrobbler_entry_free), (rb_audioscrobbler_load_entry_from_string), (rb_audioscrobbler_load_queue), (rb_audioscrobbler_save_queue), (rb_audioscrobbler_print_queue), (rb_audioscrobbler_free_queue_entries): * shell/rb-audioscrobbler.h: * shell/rb-shell-preferences.c: (rb_shell_preferences_append_audioscrobbler_config): * shell/rb-shell-preferences.h: * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_select_source), (rb_shell_cmd_preferences): * sources/Makefile.am: 2005-10-21 James Livingston Patch from Renato Araujo to add Podcast support * Makefile.am: * NEWS: * configure.ac: * data/art/Makefile.am: * data/glade/Makefile.am: * data/rhythmbox.schemas: * data/ui/rhythmbox-ui.xml: * doc/reference/Makefile.am: * doc/reference/tmpl/rhythmdb.sgml: * lib/rb-stock-icons.c: (rb_stock_icons_init): * lib/rb-stock-icons.h: * po/POTFILES.in: * podcast/Makefile.am: + podcast/rb-feed-podcast-properties-dialog.c: + podcast/rb-feed-podcast-properties-dialog.h: + podcast/rb-new-podcast-dialog.c: + podcast/rb-new-podcast-dialog.h: + podcast/rb-podcast-manager.c: + podcast/rb-podcast-manager.h: + podcast/rb-podcast-marshal.list: + podcast/rb-podcast-parse.c: + podcast/rb-podcast-parse.h: + podcast/rb-podcast-properties-dialog.c: + podcast/rb-podcast-properties-dialog.h: * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_set_property), (rhythmdb_property_model_enable_drag): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element), (save_entry), (rhythmdb_tree_save): * rhythmdb/rhythmdb.c: (rhythmdb_entry_allocate), (rhythmdb_entry_finalize), (rhythmdb_entry_set_internal), (rhythmdb_prop_get_type), (rhythmdb_entry_podcast_post_get_type), (rhythmdb_entry_podcast_feed_get_type): * rhythmdb/rhythmdb.h: * shell/Makefile.am: * shell/rb-shell-player.c: (rb_shell_player_open_entry): * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (add_to_library_response_cb), (rb_shell_cmd_new_podcast), (rb_shell_quit): * sources/Makefile.am: + sources/rb-podcast-source.c: + sources/rb-podcast-source.h: * widgets/Makefile.am: * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_constructor), (rb_property_view_selection_changed_cb), (rb_property_view_get_treeview): * widgets/rb-property-view.h: + widgets/rb-simple-view.c: + widgets/rb-simple-view.h: 2005-10-20 James Livingston * NEWS: update with changes since 0.9.1 * configure.ac: check whether collate_key_for_filename is available * lib/rb-cut-and-paste-code.c: (rb_utf8_collate_key_for_filename): * lib/rb-cut-and-paste-code.h: add function copied from glib 2.8, use it if it isn't available in glib (i.e. building against 2.6) * rhythmdb/rb-refstring.c: (rb_refstring_new_full): use the filename collation to get "natural sorting". Closes bug 158599. 2005-10-20 James Livingston Patch from Paul Kuliniewicz * doc/reference/tmpl/rb-shell-player.sgml: * shell/rb-shell-player.c: (rb_shell_player_class_init), (volume_pre_unmount_cb), (rb_shell_player_sync_with_source), (rb_shell_player_get_playing), (rb_shell_player_get_playing_time_string), (rb_shell_player_get_playing_time), (rb_shell_player_set_playing_time), (tick_cb), (rb_shell_player_get_playing_path), (filter_mmkeys): * shell/rb-shell-player.h: * shell/rb-shell-player.xml: * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_player_elapsed_changed_cb), (rb_shell_set_elapsed), (rb_shell_set_window_title), (rb_shell_playing_impl), (rb_shell_get_playing_time_impl), (rb_shell_set_playing_time_impl): Merge the duration_changed and elapsed_changed DBUS signals into one elapsed_changed signal. Check that the output argument isn't NULL before trying to put things in it. 2005-10-20 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_added_cb), (rhythmdb_query_model_do_insert), (rhythmdb_query_model_poll): fix problem where hidden entries could be shown in playlists. * shell/rb-shell.c: (rb_shell_window_state_cb): fix a window-sizing issues when switching in and out of small mode. 2005-10-19 James Livingston * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_finalize), (rb_shell_constructor), (rb_shell_window_state_cb), (rb_shell_set_visibility), (rb_shell_window_configure_cb), (rb_shell_sync_window_state), (rb_shell_playlist_created_cb), (rb_shell_view_smalldisplay_changed_cb), (rb_shell_sync_smalldisplay), (smalldisplay_changed_cb), (rb_shell_sync_paned): remove gconf window-state races, prevent changing small mode too often, fix window event races. Closes 122806. Patch from Caio Marcelo * data/rhythmbox.schemas: * shell/rb-shell.c: (rb_shell_window_state_cb), (rb_shell_window_configure_cb), (rb_shell_sync_window_state): Remember the position of the window. Closes 315289. 2005-10-19 James Livingston Patch from Christophe Fergeau * configure.ac: determine whether libgpod is present when neither --with-ipod nor --without-ipod is passed 2005-10-19 James Livingston Patch from Caio Marcelo * shell/rb-shell-player.c: (do_next_idle), (rb_shell_player_do_previous), (rb_shell_player_do_next), (rb_shell_player_do_previous_or_seek), (rb_shell_player_previous_button_cb), (rb_shell_player_next_button_cb), (rb_shell_player_cmd_previous), (rb_shell_player_cmd_next), (eos_cb): * widgets/rb-header.c: (rb_header_sync): Stop playback when the end of the playlist is reached. 2005-10-19 Christopher Aillon * lib/rb-thread.c: fix a few GSource leaks 2005-10-19 James Livingston * doc/reference/tmpl/bacon-volume.sgml: * doc/reference/tmpl/disclosure-widget.sgml: * doc/reference/tmpl/eel-gconf-extensions.sgml: * doc/reference/tmpl/eggnotificationbubble.sgml: * doc/reference/tmpl/eggtrayicon.sgml: * doc/reference/tmpl/gsequence.sgml: * doc/reference/tmpl/rb-cell-renderer-pixbuf.sgml: * doc/reference/tmpl/rb-cell-renderer-rating.sgml: * doc/reference/tmpl/rb-daap-connection.sgml: * doc/reference/tmpl/rb-daap-dialog.sgml: * doc/reference/tmpl/rb-daap-mdns.sgml: * doc/reference/tmpl/rb-daap-share.sgml: * doc/reference/tmpl/rb-daap-sharing.sgml: * doc/reference/tmpl/rb-daap-source.sgml: * doc/reference/tmpl/rb-daap-src.sgml: * doc/reference/tmpl/rb-daap-structure.sgml: * doc/reference/tmpl/rb-debug.sgml: * doc/reference/tmpl/rb-dialog.sgml: * doc/reference/tmpl/rb-druid.sgml: * doc/reference/tmpl/rb-entry-view.sgml: * doc/reference/tmpl/rb-enums.sgml: * doc/reference/tmpl/rb-file-helpers.sgml: * doc/reference/tmpl/rb-glade-helpers.sgml: * doc/reference/tmpl/rb-header.sgml: * doc/reference/tmpl/rb-history.sgml: * doc/reference/tmpl/rb-ipod-source.sgml: * doc/reference/tmpl/rb-iradio-source.sgml: * doc/reference/tmpl/rb-library-source.sgml: * doc/reference/tmpl/rb-load-failure-dialog.sgml: * doc/reference/tmpl/rb-metadata.sgml: * doc/reference/tmpl/rb-new-station-dialog.sgml: * doc/reference/tmpl/rb-play-order-linear-loop.sgml: * doc/reference/tmpl/rb-play-order-linear.sgml: * doc/reference/tmpl/rb-play-order-random-by-age-and-rating.sgml: * doc/reference/tmpl/rb-play-order-random-by-age.sgml: * doc/reference/tmpl/rb-play-order-random-by-rating.sgml: * doc/reference/tmpl/rb-play-order-random-equal-weights.sgml: * doc/reference/tmpl/rb-play-order-random.sgml: * doc/reference/tmpl/rb-play-order-shuffle.sgml: * doc/reference/tmpl/rb-play-order.sgml: * doc/reference/tmpl/rb-player.sgml: * doc/reference/tmpl/rb-playlist-manager.sgml: * doc/reference/tmpl/rb-playlist-source-recorder.sgml: * doc/reference/tmpl/rb-playlist-source.sgml: * doc/reference/tmpl/rb-preferences.sgml: * doc/reference/tmpl/rb-property-view.sgml: * doc/reference/tmpl/rb-query-creator-private.sgml: * doc/reference/tmpl/rb-query-creator.sgml: * doc/reference/tmpl/rb-rating-helper.sgml: * doc/reference/tmpl/rb-rating.sgml: * doc/reference/tmpl/rb-recorder.sgml: * doc/reference/tmpl/rb-refstring.sgml: * doc/reference/tmpl/rb-removable-media-manager.sgml: * doc/reference/tmpl/rb-removable-media-source.sgml: * doc/reference/tmpl/rb-search-entry.sgml: * doc/reference/tmpl/rb-shell-clipboard.sgml: * doc/reference/tmpl/rb-shell-glue.sgml: * doc/reference/tmpl/rb-shell-player-glue.sgml: * doc/reference/tmpl/rb-shell-player.sgml: * doc/reference/tmpl/rb-shell-preferences.sgml: * doc/reference/tmpl/rb-shell.sgml: * doc/reference/tmpl/rb-song-display-box.sgml: * doc/reference/tmpl/rb-song-info.sgml: * doc/reference/tmpl/rb-source-header.sgml: * doc/reference/tmpl/rb-source.sgml: * doc/reference/tmpl/rb-sourcelist-model.sgml: * doc/reference/tmpl/rb-sourcelist.sgml: * doc/reference/tmpl/rb-station-properties-dialog.sgml: * doc/reference/tmpl/rb-statusbar.sgml: * doc/reference/tmpl/rb-stock-icons.sgml: * doc/reference/tmpl/rb-string-helpers.sgml: * doc/reference/tmpl/rb-thread.sgml: * doc/reference/tmpl/rb-tray-icon.sgml: * doc/reference/tmpl/rb-tree-dnd.sgml: * doc/reference/tmpl/rb-tree-model-sort.sgml: * doc/reference/tmpl/rb-util.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb-property-model.sgml: * doc/reference/tmpl/rhythmdb-query-model.sgml: * doc/reference/tmpl/rhythmdb-tree.sgml: * doc/reference/tmpl/rhythmdb.sgml: update for changes * doc/reference/Makefile.am: make docs build with changed ipod support * po/POTFILES.in: remove sources/itunesdb 2005-10-18 Christophe Fergeau * sources/itunesdb.c: * sources/itunesdb.h: removed now useless files 2005-10-03 Christophe Fergeau * configure.ac: * shell/Makefile.am: * sources/Makefile.am: * sources/rb-ipod-source.c: use libgpod [1] instead of our own parsing code [1]: http://www.gtkpod.org/libgpod.html 2005-10-18 James Livingston patch from Funda Wang * shell/rb-shell.c: (rb_shell_playing_entry_changed_cb): make one of the notification bubble string translatable. ============ Version 0.9.1 2005-10-16 James Livingston * configure.ac: bump version to 0.9.1 * NEWS: update translation credits 2005-10-16 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_drag_data_received): * rhythmdb/rhythmdb-query-model.h: Allow sources to be notified when things are dropped into the entry view. * sources/rb-playlist-source.c: (rb_playlist_source_constructor), (rb_playlist_source_add_location_swapped), (rb_playlist_source_add_location), (rb_playlist_source_do_query), (rb_playlist_source_non_entry_dropped), (rb_playlist_source_row_inserted): Use the new signal so that dropping things onto a playlist's entry view work correctly, and doesn't cause crashes. Allow folders to be dropped as well. (Closes 318308) 2005-10-16 James Livingston * NEWS: Update some more * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_sync_paned), (paned_size_allocate_cb): Don't do funky things with the paned size, so that it doesn't move when the window is maximised/restored. Closes bug 315852. * sources/rb-iradio-source.c: (rb_iradio_source_constructor): Don't display the playcount column, as it's useless (it never get changed). 2005-10-14 James Livingston * Makefile.am: * data/Makefile.am: * doc/reference/Makefile.am: get "make distcheck" to pass again 2005-10-11 James Livingston * daapsharing/rb-daap-connection.c: (rb_daap_connection_new): Don't destroy the connection when retrieving the playlists fails, because tracks have already been added. Closes 318380. 2005-10-11 James Livingston * sources/rb-sourcelist.c: (rb_sourcelist_append), (rb_sourcelist_remove), (name_notify_cb), (visibility_notify_cb), (source_name_edited_cb): Ask for the columns to be resized when a source is added, deleted or changes name. 2005-10-11 James Livingston * rhythmdb/rhythmdb.c: (add_thread_main), (rhythmdb_add_uri): only create a thread when processing a directory. This stops up created one thread for each file in a playlist we're trying to load. Closes 317850. * widgets/rb-entry-view.c: (rb_entry_view_artist_sort_func): fix a typo that made sort-by-artist not work correctly. 2005-10-11 James Livingston * doc/reference/Makefile.am: Make gtk-doc generation work when daap support is enabled 2005-10-11 James Livingston * lib/rb-file-helpers.c: (rb_canonicalise_uri): * lib/rb-file-helpers.h: add a function to turn uris into our canonical path-escaped form * shell/rb-playlist-manager.c: (handle_playlist_entry_cb): use the above function when import playlists. This will fix the problem of duplicate entries due to different representations of the uri (bug 158211). 2005-10-11 James Livingston * shell/rb-shell.c: (rb_shell_get_visibility), (rb_shell_set_visibility), (rb_shell_window_delete_cb), (rb_shell_toggle_visibility), (rb_shell_set_visibility_impl): Fix window hiding so that Alt-F4 works again. * widgets/rb-entry-view.c: (rb_entry_view_album_sort_func), (rb_entry_view_artist_sort_func), (rb_entry_view_genre_sort_func), (rb_entry_view_string_sort_func): Stop some crashes where a string property was set to NULL. 2005-10-10 James Livingston * doc/reference/rhythmbox.types: fix gtk-doc generation 2005-10-09 James Livingston * sources/rb-sourcelist.c: (rb_sourcelist_init): * widgets/rb-entry-view.c: (rb_entry_view_append_column): Change a few accelerators, so that we don't have as many conflicting keys. 2005-10-08 James Livingston * data/iradio-initial.pls: Update the list of radio stations. Thanks to Ali Akcaagac for collating a list to add. Closes bug 129285. 2005-10-07 James Livingston * shell/rb-playlist-manager.c: (handle_playlist_entry_cb): escape local path names in the same way as every other URI. This should stop duplicates occurring due to different escapings. Closes bug 158211. 2005-10-06 James Livingston * NEWS: more updates patch from Jaap Haitsma : * configure.ac: * data/Makefile.am: * data/art/Makefile.am: - data/art/rhythmbox-paused.png: - data/art/rhythmbox-playback-error.png: - data/art/rhythmbox-playing.png: - data/art-clearlooks/: * lib/rb-file-helpers.c: (rb_file): * lib/rb-stock-icons.c: (rb_stock_icons_init): * lib/rb-stock-icons.h: * shell/rb-shell-player.c: (rb_shell_player_sync_buttons): * widgets/rb-cell-renderer-pixbuf.c: (rb_cell_renderer_pixbuf_render): * widgets/rb-entry-view.c: (rb_entry_view_init), (rb_entry_view_set_playing): * widgets/rb-rating-helper.c: (rb_rating_render_stars): use more stock icons instead of custom art. Drop remanents of art-clearlooks. 2005-10-04 Pawan Chitrakar * configure.ac: Added ne in ALL_LINGUAS 2005-10-02 James Livingston * data/glade/Makefile.am: actually install the daap prefs glade file 2005-09-30 James Livingston * po/POTFILES.in: mremove rb-string-helper.c from the list of translatable files, so that make check works and we don't annoy the translators. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_entry_new): do a bit of sanity checking, in case a db entry is missing some properties. 2005-09-29 James Livingston - lib/rb-string-helpers.c: - lib/rb-string-helpers.h: * lib/Makefile.am: * rhythmdb/rhythmdb-tree.c: * rhythmdb/rhythmdb.c: * shell/main.c: (main): * shell/rb-shell.c: * widgets/rb-entry-view.c: * widgets/rb-property-view.c: remove rb-string-helpers, as they utility functions haven't been used in a while. 2005-09-27 James Livingston * data/art-clearlooks/Makefile.am: - data/art-clearlooks/rhythmbox-album.png: - data/art-clearlooks/rhythmbox-audiocd.png: - data/art-clearlooks/rhythmbox-automatic-playlist.png: - data/art-clearlooks/rhythmbox-dnd.png: - data/art-clearlooks/rhythmbox-ipod.png: - data/art-clearlooks/rhythmbox-iradio.png: - data/art-clearlooks/rhythmbox-library.png: - data/art-clearlooks/rhythmbox-next.png: - data/art-clearlooks/rhythmbox-pause.png: - data/art-clearlooks/rhythmbox-play.png: - data/art-clearlooks/rhythmbox-playlist-menu.png: - data/art-clearlooks/rhythmbox-playlist.png: - data/art-clearlooks/rhythmbox-previous.png: - data/art-clearlooks/rhythmbox-repeat.png: - data/art-clearlooks/rhythmbox-rewind.png: - data/art-clearlooks/rhythmbox-shuffle.png: - data/art-clearlooks/rhythmbox-stop.png: - data/art-clearlooks/rhythmbox-visuals.png: - data/art-clearlooks/rhythmbox-volume-max.png: - data/art-clearlooks/rhythmbox-volume-medium.png: - data/art-clearlooks/rhythmbox-volume-min.png: - data/art-clearlooks/rhythmbox-volume-mute.png: - data/art-clearlooks/rhythmbox-volume-zero.png: * data/art/Makefile.am: - data/art/rhythmbox-album.png: - data/art/rhythmbox-audiocd.png: - data/art/rhythmbox-automatic-playlist.png: - data/art/rhythmbox-dnd.png: - data/art/rhythmbox-ipod.png: - data/art/rhythmbox-iradio.png: - data/art/rhythmbox-library.png: - data/art/rhythmbox-next.png: - data/art/rhythmbox-pause.png: - data/art/rhythmbox-play.png: - data/art/rhythmbox-playlist-menu.png: - data/art/rhythmbox-playlist.png: - data/art/rhythmbox-previous.png: - data/art/rhythmbox-repeat.png: - data/art/rhythmbox-rewind.png: - data/art/rhythmbox-shuffle.png: - data/art/rhythmbox-stop.png: - data/art/rhythmbox-visuals.png: - data/art/rhythmbox-volume-max.png: - data/art/rhythmbox-volume-medium.png: - data/art/rhythmbox-volume-min.png: - data/art/rhythmbox-volume-mute.png: - data/art/rhythmbox-volume-zero.png: * lib/rb-stock-icons.c: (rb_stock_icons_init): * lib/rb-stock-icons.h: * shell/rb-playlist-manager.c: * shell/rb-shell-player.c: * sources/rb-daap-source.c: (rb_daap_get_icon): * sources/rb-ipod-source.c: * sources/rb-iradio-source.c: (rb_iradio_source_init): * sources/rb-library-source.c: (rb_library_source_new): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-removable-media-source.c: (impl_get_pixbuf): Remove art that hasn't been used in a LONG time, and also remove art that are now stock icons. 2005-09-27 James Livingston * README: point to the gnome.org web sites, and update the example gstreamer pipeline to a plybin/decodebin based one. Closes bug 317108 * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_get_property), (rhythmdb_query_model_finalize): * rhythmdb/rhythmdb.c: (rhythmdb_query_internal), (rhythmdb_entry_set_visibility), (rhythmdb_query_preprocess): * rhythmdb/rhythmdb.h: * sources/rb-iradio-source.c: (impl_search): * sources/rb-library-source.c: (impl_search): Add query "preprocessing", which performs operations such as casefolding any strings that will be compared to any of the *_FOLDED properties. Closes bug 316039 2005-09-27 James Livingston * data/glade/daap-prefs.glade: * shell/rb-shell-preferences.c: (add_daap_preferences): use a glade file for the daap preferences pane * sources/rb-sourcelist.c: (rb_sourcelist_init), (rb_sourcelist_append), (rb_sourcelist_remove), (visibility_notify_cb), (rb_sourcelist_update_expander_visibility): don't display the column for source expanders unless there is an expandable source. 2005-09-24 Raphael Slinckx * .cvsignore: * Makefile.am: * configure.ac: * doc/.cvsignore: * doc/Makefile.am: * doc/reference/.cvsignore: * doc/reference/Makefile.am: * doc/reference/rhythmbox-docs.sgml: * doc/reference/rhythmbox-sections.txt: * doc/reference/rhythmbox.types: * doc/reference/tmpl/bacon-volume.sgml: * doc/reference/tmpl/disclosure-widget.sgml: * doc/reference/tmpl/eel-gconf-extensions.sgml: * doc/reference/tmpl/eggnotificationbubble.sgml: * doc/reference/tmpl/eggtrayicon.sgml: * doc/reference/tmpl/gsequence.sgml: * doc/reference/tmpl/rb-cell-renderer-pixbuf.sgml: * doc/reference/tmpl/rb-cell-renderer-rating.sgml: * doc/reference/tmpl/rb-daap-connection.sgml: * doc/reference/tmpl/rb-daap-dialog.sgml: * doc/reference/tmpl/rb-daap-mdns.sgml: * doc/reference/tmpl/rb-daap-share.sgml: * doc/reference/tmpl/rb-daap-sharing.sgml: * doc/reference/tmpl/rb-daap-source.sgml: * doc/reference/tmpl/rb-daap-src.sgml: * doc/reference/tmpl/rb-daap-structure.sgml: * doc/reference/tmpl/rb-debug.sgml: * doc/reference/tmpl/rb-dialog.sgml: * doc/reference/tmpl/rb-druid.sgml: * doc/reference/tmpl/rb-entry-view.sgml: * doc/reference/tmpl/rb-enums.sgml: * doc/reference/tmpl/rb-file-helpers.sgml: * doc/reference/tmpl/rb-glade-helpers.sgml: * doc/reference/tmpl/rb-header.sgml: * doc/reference/tmpl/rb-history.sgml: * doc/reference/tmpl/rb-ipod-source.sgml: * doc/reference/tmpl/rb-iradio-source.sgml: * doc/reference/tmpl/rb-library-source.sgml: * doc/reference/tmpl/rb-load-failure-dialog.sgml: * doc/reference/tmpl/rb-metadata.sgml: * doc/reference/tmpl/rb-new-station-dialog.sgml: * doc/reference/tmpl/rb-play-order-linear-loop.sgml: * doc/reference/tmpl/rb-play-order-linear.sgml: * doc/reference/tmpl/rb-play-order-random-by-age-and-rating.sgml: * doc/reference/tmpl/rb-play-order-random-by-age.sgml: * doc/reference/tmpl/rb-play-order-random-by-rating.sgml: * doc/reference/tmpl/rb-play-order-random-equal-weights.sgml: * doc/reference/tmpl/rb-play-order-random.sgml: * doc/reference/tmpl/rb-play-order-shuffle.sgml: * doc/reference/tmpl/rb-play-order.sgml: * doc/reference/tmpl/rb-player.sgml: * doc/reference/tmpl/rb-playlist-manager.sgml: * doc/reference/tmpl/rb-playlist-source-recorder.sgml: * doc/reference/tmpl/rb-playlist-source.sgml: * doc/reference/tmpl/rb-preferences.sgml: * doc/reference/tmpl/rb-property-view.sgml: * doc/reference/tmpl/rb-query-creator-private.sgml: * doc/reference/tmpl/rb-query-creator.sgml: * doc/reference/tmpl/rb-rating-helper.sgml: * doc/reference/tmpl/rb-rating.sgml: * doc/reference/tmpl/rb-recorder.sgml: * doc/reference/tmpl/rb-refstring.sgml: * doc/reference/tmpl/rb-removable-media-manager.sgml: * doc/reference/tmpl/rb-removable-media-source.sgml: * doc/reference/tmpl/rb-search-entry.sgml: * doc/reference/tmpl/rb-shell-clipboard.sgml: * doc/reference/tmpl/rb-shell-glue.sgml: * doc/reference/tmpl/rb-shell-player-glue.sgml: * doc/reference/tmpl/rb-shell-player.sgml: * doc/reference/tmpl/rb-shell-preferences.sgml: * doc/reference/tmpl/rb-shell.sgml: * doc/reference/tmpl/rb-song-display-box.sgml: * doc/reference/tmpl/rb-song-info.sgml: * doc/reference/tmpl/rb-source-header.sgml: * doc/reference/tmpl/rb-source.sgml: * doc/reference/tmpl/rb-sourcelist-model.sgml: * doc/reference/tmpl/rb-sourcelist.sgml: * doc/reference/tmpl/rb-station-properties-dialog.sgml: * doc/reference/tmpl/rb-statusbar.sgml: * doc/reference/tmpl/rb-stock-icons.sgml: * doc/reference/tmpl/rb-string-helpers.sgml: * doc/reference/tmpl/rb-thread.sgml: * doc/reference/tmpl/rb-tray-icon.sgml: * doc/reference/tmpl/rb-tree-dnd.sgml: * doc/reference/tmpl/rb-tree-model-sort.sgml: * doc/reference/tmpl/rb-util.sgml: * doc/reference/tmpl/rhythmdb-property-model.sgml: * doc/reference/tmpl/rhythmdb-query-model.sgml: * doc/reference/tmpl/rhythmdb-tree.sgml: * doc/reference/tmpl/rhythmdb.sgml: * macros/.cvsignore: * shell/Makefile.am: * sources/rb-source.c: (rb_source_class_init), (rb_source_init), (rb_source_finalize), (rb_source_set_property), (rb_source_get_property), (default_get_pixbuf), (_rb_source_show_popup): * sources/rb-source.h: Add support for gtk-doc in rhythmbox. Convert RBSource to use newer glib functions, such as add_private. Gives RBSource a default get_pixbuf implementation. 2005-09-25 James Livingston * NEWS: Update with about a months worth of changes * data/glade/song-info-multiple.glade: * data/glade/song-info.glade: * data/rhythmbox.schemas: * lib/rb-preferences.h: * rhythmdb/rhythmdb.h: * shell/rb-shell-player.c: * widgets/rb-song-info.c: (rb_song_info_constructor): remove the last few remaining parts of autorating. 2005-09-24 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_window_state_cb), (rb_shell_set_visibility), (rb_shell_window_configure_cb): store window state in the gconf keys, so that it gets used. Closes bugs 313893 and 137068. 2005-09-20 James Livingston * rhythmdb/rhythmdb-tree.c: (evaluate_conjunctive_subquery): don't crash if the entry has a NULL string in a property * shell/rb-removable-media-manager.c: (rb_removable_media_manager_load_media): fix some memory leaks (rb_removable_media_manager_mount_volume), (rb_removable_media_manager_eject_medium_cb), (rb_removable_media_manager_cmd_eject_medium): use gnome_vfs_volume_ref/unref instead of g_object_ref/unref * sources/rb-removable-media-source.c: (rb_removable_media_source_set_property), (rb_removable_media_source_get_property): use gnome_vfs_volume_ref/unref instead of g_object_ref/unref 2005-09-18 James Livingston Patch from Ernst Persson to add a "date added" column * data/glade/general-prefs.glade: * shell/rb-shell-preferences.c: (rb_shell_preferences_init), (rb_shell_preferences_column_check_changed_cb), (rb_shell_preferences_sync): add checkbox to control visibility of the column * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored), (rhythmdb_prop_get_type): * rhythmdb/rhythmdb.h: add string version of "first seen", in the same was as "last played" is handled * sources/rb-library-source.c: (rb_library_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): Make the column show in the library and playlists * widgets/rb-entry-view.c: (rb_entry_view_append_column): * widgets/rb-entry-view.h: add the column * widgets/rb-query-creator-properties.c: allow automatic playlists to be sorted by the column 2005-09-16 James Livingston * shell/rb-shell-player.c: (rb_shell_player_init), (rb_shell_player_do_previous_or_seek), (rb_shell_player_previous_button_cb), (rb_shell_player_next_button_cb), (rb_shell_player_cmd_previous), (rb_shell_player_playpause_button_cb): Make the previous button act the same as the menu item. Fix an inversion of the "previous track or seek" logic. Patch from Jonathan Matthew (rb_shell_player_playpause): make --play-pause stop source that can't be paused 2005-09-15 James Livingston * configure.ac: increase totem-plparser requirements to 1.1.5 * shell/rb-playlist-manager.c: (playlist_load_start_cb), (playlist_load_end_cb), (rb_playlist_manager_parse_file): * sources/rb-playlist-source.c: (rb_playlist_source_save_playlist): use the newer playlist APIs to save the name of the playlist, and use the name of a loaded playlist. Closes bug 309817. 2005-09-15 James Livingston Patch from Jonathan Matthew * shell/Makefile.am: stop some linker warnings * shell/main.c: (main): make --no-registration work with dbus 2005-09-15 James Livingston * daapsharing/rb-daap-sharing.c: (create_share): * widgets/rb-entry-view.c: (rb_entry_view_constructor): Fix some reference sinking and counting issues that I caused. 2005-09-15 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_constructor): Put the "now playing" icon in the "now playing" column header. 2005-09-14 James Livingston * daapsharing/rb-daap-mdns.c: (browse_cb): fix crasher if browsering daap shares, when sharing is turned off. 2005-09-12 Bastien Nocera * sources/rb-daap-source.c: (rb_daap_sources_init): Check the GConf value's default, especially for badly installed schema files 2005-09-12 James Livingston * daapsharing/rb-daap-mdns.c: (resolve_cb): fix compilation with Howl Patch from Paolo Borelli * shell/rb-shell.c: (rb_shell_window_state_cb): hide the statusbar grip when maximised. Closes bug 316055. 2005-09-11 James Livingston Patch from William Jon McCann * shell/rb-statusbar.[ch]: Use G_DEFINE_TYPE. Make a subclass of GtkStatusbar instead of GtkHBox. (rb_statusbar_construct): Don't set border width. (rb_statusbar_init): Use resize grip. Don't use markup. (set_statusbar_tooltip, unset_statusbar_tooltip) (rb_statusbar_connect_action_group, rb_statusbar_set_property): Connect tooltips for actions. (rb_statusbar_sync_status): Push new message to statusbar. (rb_statusbar_set_progress): Don't use markup. (rb_statusbar_entry_view_changed_cb): Don't set syncing_state flag here since it prevents actually showing or hiding. (rb_statusbar_sync_with_source): Push new message to statusbar. 2005-09-11 Charles Schmidt * daapsharing/rb-daap-structure.c: (rb_daap_structure_parse_container_buffer: Forgot to remove comments around debugging definition. 2005-09-11 Charles Schmidt * daapsharing/rb-daap-structure.c: (rb_daap_structure_parse_container_buffer): Read the patch from daap type = version. * daapsharing/rb-daap-mdns.c/h: (resolve_cb): Updated mDNS resolve callback to send service-name & name (read from Machine Name in the TXT data or equal to service-name if not in TXT). * daapsharing/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_set_property), (rb_daap_source_get_property), (rb_daap_source_new), (find_source_by_service_name), (resolve_cb), (browse_cb), (stop_resolver), (start_browsing), (stop_browsing), (enable_browsing_changed_cb): Switched 'real-name' for 'service-name' and added 'host' and 'port' gobject properties. Updated to use new mDNS resolve callback sending service-name & name arguments. 2005-09-11 Charles Schmidt * daapsharing/rb-daap-mdns.c: (howl_strerror): New function to report errors from Howl (rb_daap_mdns_browse), (rb_daap_mdns_resolve),(rb_daap_mdns_publish), (get_sw_discovery), (get_avahi_client): Better error reporting from Howl & Avahi. * sources/rb-daap-source.: (start_browsing), (stop_browsing): Fixed a bug where browsing would not get started or stopped in some situations. 2005-09-12 James Livingston * shell/rb-removable-media-manager.c: add a missing include, that would stop compilation if ipod support wasn't turned on 2005-09-11 James Livingston * daapsharing/rb-daap-dialog.c: (encode_base64), (rb_daap_password_dialog_new_run), (rb_daap_collision_dialog_new_run): fix a translatable string, so that it is no broken in to two pieces, and remove a use of a goto * daapsharing/rb-daap-mdns.c: (mdns_error_dialog), (setup_sw_discovery), (rb_daap_mdns_resolve_cancel), (publish_cb), (rb_daap_mdns_publish), (rb_daap_mdns_publish_cancel), (client_cb), (get_avahi_client), (browse_cb), (rb_daap_mdns_browse), (rb_daap_mdns_browse_cancel), (resolve_cb), (entry_group_cb): fix a memory leaks, and some code style things. * daapsharing/rb-daap-share.c: (rb_daap_share_class_init), (rb_daap_share_init), (rb_daap_share_set_property), (rb_daap_share_dispose), (rb_daap_share_new), (rb_daap_share_get_property): make the DB and the playlist manager gobject properties. (message_add_standard_headers), (message_set_from_rb_daap_structure), (server_info_cb), (content_codes_cb), (login_cb), (update_cb), (databases_cb), (server_cb), (add_db_entry), (db_entry_added_cb), (db_entry_deleted_cb), (publish_cb), (rb_daap_share_start_publish), (rb_daap_share_stop_publish): Fix a couple of memory leaks, some code style and use CONF_PREFIX in the gconf keys * daapsharing/rb-daap-sharing.c: (create_share), (enable_sharing_changed_cb), (share_name_changed_cb), (rb_daap_sharing_init), (rb_daap_sharing_shutdown): * daapsharing/rb-daap-src.c: (rb_daap_src_class_init), (rb_daap_src_instance_init), (rb_daap_src_dispose), (rb_daap_src_uri_handler_init), (rb_daap_src_set_property), (rb_daap_src_get_property), (rb_daap_src_getcaps), (rb_daap_src_close_file), (rb_daap_src_srcpad_event), (rb_daap_src_init), (rb_daap_src_shutdown), (rb_daap_src_set_time), (rb_daap_src_get_time): Deal with gconf callbacks where the key hasn't actually changed, fix some memory leaks, code style and release gconf notifications when the object is destroyed. * sources/rb-daap-source.c: (rhythmdb_entry_daap_type_new), (rb_daap_source_class_init), (rb_daap_source_init), (rb_daap_source_dispose), (rb_daap_source_set_property), (rb_daap_source_get_property), (rb_daap_source_new), (find_source_by_name), (resolve_cb), (browse_cb), (stop_resolver), (start_browsing), (stop_browsing), (enable_browsing_changed_cb), (rb_daap_sources_init), (rb_daap_sources_shutdown), (rb_daap_source_activate), (rb_daap_source_disconnect), (rb_daap_source_show_popup), (rb_daap_source_find_for_uri), (rb_daap_source_get_headers): use CONF_PREFIX in the gconf keys, release gconf notifications, handle gconf callbacks where the key hasn't changed, make "real name" and "password protected" gobject properties, fix some code style and fix a memory leak. 2005-09-11 James Livingston Patch from Jonathan Matthew * shell/rb-playlist-manager.c: (rb_playlist_manager_save_playlists), (rb_playlist_manager_get_playlists): don't unref the sourcelist model when we aren't supposed to. (Closes bug 315886) 2005-09-11 James Livingston * shell/rb-removable-media-manager.c: (rb_removable_media_manager_class_init), (rb_removable_media_manager_init), (rb_removable_media_manager_dispose), (rb_removable_media_manager_set_property), (rb_removable_media_manager_get_property), (rb_removable_media_manager_new), (rb_removable_media_manager_load_media), (rb_removable_media_manager_volume_mounted_cb), (rb_removable_media_manager_volume_unmounted_cb), (rb_removable_media_manager_mount_volume), (rb_removable_media_manager_unmount_volume), (rb_removable_media_manager_source_deleted_cb), (rb_removable_media_manager_append_media_source), (rb_removable_media_manager_set_uimanager), (rb_removable_media_manager_eject_medium_cb), (rb_removable_media_manager_cmd_eject_medium): * shell/rb-removable-media-manager.h: * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init), (rb_removable_media_source_init), (rb_removable_media_source_dispose), (rb_removable_media_source_set_property), (rb_removable_media_source_get_property), (impl_get_pixbuf), (impl_delete_thyself): * sources/rb-removable-media-source.h: Add the four files that I somehow managed not to add to cvs in the last commit. Oops. 2005-09-11 James Livingston * shell/Makefile.am: Add rb-removable-media-manager.{c,h} * sources/Makefile.am: Add rb-removable-media-source.{c,h} * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_medium_added_cb), (rb_shell_select_source): create the removable-media-manager on startup, and handle creation of sources. * sources/rb-ipod-source.h: * sources/rb-ipod-source.c: (rb_ipod_source_class_init), (rb_ipod_source_init), (rb_ipod_source_constructor), (rb_ipod_source_dispose), (rb_ipod_source_new), (load_ipod_db_idle_cb), (rb_ipod_load_songs), (impl_show_popup): Port the iPod source over to the removable media framework. * sources/rb-library-source.c: (paned_size_allocate_cb), (rb_library_source_get_paned_key): fix a potential bug is a library-derived source doesn't have a paned-key 2005-09-11 Bastien Nocera * daapsharing/rb-daap-share.c: (add_entry_to_mlcl): default to mp3 when we can't get the suffix of a file (Closes: #315941) 2005-09-10 James Livingston * configure.ac: fix the mdns tests, so that it doesn't complain about not finding one, if daap support isn't being compiled in 2005-09-10 Charles Schmidt * configure.ac: Updated to require avahi >= 0.5. Small fixes. * daapsharing/rb-daap-dialog.c: (rb_daap_password_dialog_new_run), (rb_daap_collision_dialog_new_run): HIG compliancy & images. * daapsharing/rb-daap-mdns.c: (browse_cb), (resolve_cb): Better detection of local services. Requries avahi 0.5. Still doesn't work quite right with Howl, due to Howl's limitations. Fix the way collision handling is done under Avahi. * daapsharing/rb-daap-share.c: (publish_cb): Better name collision handling (at least for Avahi). 2005-09-10 James Livingston * shell/rb-shell-preferences.c: (add_daap_preferences): Patch from Dennis Cranston to make the DAAP preferences more HIG compliant (Closes #315889) * po/POTFILES.in: add widgets/rb-query-creator-properties.c to the list of files to be translated 2005-09-10 James Livingston * configure.ac: fix it so that --enable-daap=no works * lib/rb-file-helpers.c: (rb_file): allow use of new art when running uninstalled 2005-09-10 James Livingston Patch from Christophe Fergeau * sources/rb-ipod-source.c: (rb_ipod_unload_songs): fix a crasher in the ipod code. 2005-09-09 Charles Schmidt * README.daap: Updating documentation 2005-09-09 Charles Schmidt * AUTHORS: Added myself. * daapsharing/rb-daap-connection.c: (connection_login), (rb_connection_new): Reorganized password handling. * po/POTFILES.in: Added daapsharing/rb-daap-dialog.c * shell/rb-shell.c: (rb_shell_cmd_disconnect_source): Fixed disconnecting from sources. * sources/rb-daap-source.c: (rb_daap_source_activate): Better error handling when we are unable to connect. 2005-09-09 Charles Schmidt * README.daap: Fixed some terminology. * configure.ac: Better automatic detection of mDNS/DNS-SD library. New --with-mdns=auto|howl|avahi flag to specify. * daapsharing/rb-daap-dialog.c/h: New files to handle password & name collision dialogs. * daapsharing/rb-daap-connection.c: (connection_get_password), (build_message), (http_get) (connection_login): Ask for & use a password if the share demands it. * daapsharing/rb-daap-connection.h: Changed prototype of rb_daap_connection_new. * daapsharing/rb-daap-mdns.c: (resolve_cb): Better detection of your own music share so it doesn't appear in the sourcelist. * daapsharing/rb-daap-share.c: (rb_daap_share_start_publish): Attempt to start on port 3689, failing that start on any available port. * daapsharing/rhythmbox.schemas: Schemas for music shares' UI state. * sources/rb-daap-source.c: (find_source_by_name), (rb_daap_source_new), (resolve_cb), (browse_cb): Handle passworded shares. Resolve the host immediately instead of when activated. (rb_daap_source_get_browser_key), (rb_daap_source_get_paned_key), (rb_daap_source_new): New GConf keys for UI state. (rb_daap_source_activate): Use RBPlaylistSource instead of RBDAAPPlaylistSource * sources/rb-daap-playlist-source.c/h: Removed * sources/rb-playlist-source.c/h: Added 'is-local' property, TRUE if the playlist is local (i.e. not DAAP or iPod). * shell/rb-playlist-manager.c: (rb_playlist_manager_save_playlists): Fixed a bug where the playlists wouldn't get saved if the last playlist hadn't changed. Only save local playlists. 2005-09-09 James Livingston * sources/rb-ipod-source.c: (rb_ipod_source_class_init): remove the iPod preferences pane, as it already uses the browser views as the library. 2005-09-09 James Livingston * sources/rb-library-source.c: (rb_library_source_finalize), (rb_library_source_constructor): fix gconf monitoring of library preference keys. * sources/rb-library-source.h: remove declaration of function that does not exist 2005-09-08 Charles Schmidt * player/rb-player-gst.c: (rb_player_set_time): Fix seeking in daap streams. 2005-09-08 Charles Schmidt * data/rhythmbox.schemas: Turn music share browsing on by default. 2005-09-07 James Livingston * configure.ac: include daapsharing/Makefile in AC_OUTPUT 2005-09-06 Charles Schmidt * player/rb-player-gst.c: (rb_player_get_time): Fix for extra << & == that accidentally made it in. * player/Makefile.am: -Idaapsharing so we can include rb-daap-src.h 2005-09-06 Charles Schmidt * configure.ac: Fix for extra <<<<<<< & ======= that accidentally made it in last time. Sorry. 2005-09-06 Charles Schmidt * player/rb-player-gst.c: (rb_player_get_time): Fix a small crash appearing when the uri isn't set in the player, but rb_player_get_time() is still called. * configure.ac: Also check for libsoup 2.4, which is what ships with Gnome 2.12. * po/POTFILES.in: Added music sharing files that have translatable strings. * README.daap: New file explaining "How Music Sharing Works" 2005-09-06 Bastien Nocera * daapsharing/.cvsignore: added 2005-09-06 Charles Schmidt * daapsharing/*: Music sharing library. * sources/rb-daap-source.c/h: Music share RBSource. * sources/rb-daap-playlist-source.c/h: Music share playlist RBSource. * configure.ac: --enable-daap flag to turn on music sharing. Requires libsoup and a mutlicast DNS implementation (howl or avahi). * data/rhythmbox.schemas: New GConf keys for music sharing. * data/ui/rhythmbox-ui.xml: New popup menu ui definition for daap source right click menu. * player/rb-player-gst.c: Changes to properly play & seek in remote music share files. * shell/rb-playlist-manager.c/h: (rb_playlist_manager_get_playlists): New function to get a GList * of the playlists. (rb_playlist_manager_save_playlists): Don't save music share playlists and fixed a GObject reference leak. * shell/rb-shell.c/h: (rb_shell_append_source): No longer a local function. Now takes a parent RBSource * argument, NULL to append a toplevel source. (rb_shell_cmd_source_disconnect): New function to 'disconnect' a source (useful for disconnecting from remote music share, specifically). (rb_shell_quit): Stop music sharing/browsing. (rb_shell_playlist_added_cb): Work with tree source structure. (rb_shell_get_property): "playlist-manager" property accessor. (rb_shell_class_init): New "playlist-manager" property. (rb_shell_construor): Append sources as toplevel sources. Initialize daap sharing/browsing. (rb_shell_select_source): Notify source of activation/deactivation. * shell/rb-shell-prefernces.c: Music sharing preferences. * sources/rb-source.c/h: New activate, deactivate and disconnect class functions. Activate & deactivate are notification style functions that will tell a source when it is selected/unselected. Disconnect can be hooked up to a UI object to disconnect the source. * sources/rb-sourcelist-model.c: * sources/rb-sourcelist.c/h: Sourcelist is now a tree structure. (rb_sourcelist_append): Takes a RBSource * parent arguement, NULL to append a toplevel source. 2005-09-05 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_changed_cb), (rhythmdb_query_model_do_reorder): Update the query model's totals if the duration of filesize of an entry changes. Emit the row-changed signals that I forgot to put back in, when I was doing query sorting. * rhythmdb/rhythmdb.c: (rhythmdb_compute_status_normal): Don't print out "0 minutes" or "0 bytes". 2005-09-04 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_new_playlist): remove a leftover bit of the "internal-name" property of sources. 2005-09-03 James Livingston * rhythmdb/rhythmdb-tree.c: (evaluate_conjunctive_subquery): remove extraneous debug message * sources/rb-library-source.c: (rb_library_source_do_query): fix a crasher would affect any library-derived sources (which was also a memory leak). 2005-09-02 Colin Walters * configure.ac: Fix sytnax error. * shell/rb-shell.c (tray_embedded_cb): Add some nonfunctional code to disable minimization icons - need to figure out why it doesn't work... 2005-09-01 Dennis Cranston * data/glade/song-info-multiple.glade: * data/glade/song-info.glade: * widgets/rb-song-info.c: (rb_song_info_constructor): Add a mnemonic to the newly added "Automatically rate" label in the properties dialog and use a bold typeface like all the other labels in the dialog. (Closes bug 315089) 2005-09-03 James Livingston * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (rb_library_source_constructor), (rb_library_source_set_property), (rb_library_source_get_property), (impl_get_paned_key), (paned_size_allocate_cb), (rb_library_source_state_prefs_sync), (impl_show_popup), (rb_library_source_get_paned_key): * sources/rb-library-source.h: Allow sources derived from RBLibrarySource to use different gconf keys for sort order, browser visibility and browser pane position. Fix a crasher if a derived source overrides _get_pixbuf. 2005-09-02 Colin Walters * shell/rb-shell.c (rb_shell_set_visibility): Move hint setting which seems to avoid races more. 2005-09-03 James Livingston * shell/rb-shell.c: fix compilation with iPod support enabled 2005-09-02 Colin Walters * shell/rb-shell.c (struct RBShellPrivate): Add idle_hide_mainwindow_id. (rb_shell_constructor): Move taskbar skipping hint into rb_shell_set_visibility. (idle_hide_mainwindow): New function. (rb_shell_set_visibility): Taskbar hinting moved here; add evil racy hack to avoid rb appearing in taskbar when minimized. 2005-09-01 Colin Walters * widgets/eggtrayicon.h: Prototype egg_tray_icon_have_manager. * widgets/eggtrayicon.c (egg_tray_icon_have_manager): Steal from gtkstatusicion.c. * shell/rb-tray-icon.h: Prototype rb_tray_icon_get_geom. * shell/rb-tray-icon.c (rb_tray_icon_toggle_entries): Retitle TrayShowWindow entry. (rb_tray_icon_class_init): Make GtkActionGroup readable only. (rb_tray_icon_constructor): Create action group here. (rb_tray_icon_finalize): Destroy action group. (rb_tray_icon_set_property): Don't take an action group. (rb_tray_icon_new): Ditto. (tray_popup_position_menu): Some mostly boilerplate code to position menu. (rb_tray_icon_button_press_event_cb): Position menu. (rb_tray_icon_get_geom): New function used for the shell to set minimization hints. * shell/rb-shell.h: Prototype rb_shell_toggle_visibility. * shell/rb-shell.c (rb_shell_actions): Add MusicClose. (struct RBShellPrivate): Change visible to iconified. (set_icon_geometry): New function from Søren Sandmann to tell Metacity where to draw the minimization animiation. (rb_shell_window_state_cb): Update iconified. (rb_shell_get_visibility): New function to say whether or not we're currently visible. (rb_shell_set_visibility): Update to minimize to tray or present as appropriate. (rb_shell_window_delete_cb): On window close, just minimize to tray if we're deleted. (rb_shell_set_window_title): Kill old notification code. (rb_shell_toggle_visibility): Nwe function. (rb_shell_cmd_toggle_visibility): Call it. (rb_shell_constructor): Skip the taskbar. (tray_destroy_cb): Better debugging. 2005-09-01 Colin Walters * data/ui/rhythmbox-ui.xml: Add MusicClose. * configure.ac: Enable bonobo by default. 2005-09-01 Colin Walters * configure.ac: Default to old art. Add macros subdir. * Makefile.am (SUBDIRS): Add macros. * macros/Makefile.am: New. 2005-09-01 Colin Walters * shell/Makefile.am (EXTRA_DIST): Dist rb-shell.xml and rb-shell-player.xml. * remote/dbus/rb-remote-dbus.h: Deleted. * remote/dbus/Makefile.am: Delete all the junk, just dist rb-print-playing.py and rb-set-rating.py. * remote/Makefile.am (SUBDIRS): Always dist dbus and bonobo. * data/Makefile.am (EXTRA_DIST): Add service_in_files. 2005-09-02 James Livingston - data/ui/rhythmbox-audiocd-view.xml.in: remove extremely obsolete file from cvs * shell/rb-shell.c: (rb_shell_get_property), (rb_shell_finalize), (rb_shell_constructor): Patches from Jonathan Matthew to fix compilation without ipod support, and a crash when using "browse this artist". 2005-08-31 Colin Walters * configure.ac: Add --with-old-art configure switch. Also add AC_CONFIG_MACRO_DIR in the hope to avoid autotools bustage, but it doesn't work. * widgets/rb-cell-renderer-pixbuf.c (rb_cell_renderer_pixbuf_render): Don't use eel_create_colorized_pixbuf for new art. * widgets/rb-rating-helper.c (rb_rating_render_stars): Ditto. * data/art-clearlooks: New artwork. 2005-08-31 Colin Walters * shell/main.c (main): Fix Bastien's commit to continue to focus the window with GTK+ 2.8 at least. 2005-08-31 Colin Walters * shell/rb-shell.c (rb_shell_load_uri): Handle the case where entry is already loaded. * shell/main.c (load_uri_args): Use gnome_vfs_make_uri_from_shell_arg. 2005-08-31 Bastien Nocera * README: remove mentions of the xine-lib backend * shell/main.c: (main): make it compilable with gtk+ < 2.8 2005-08-30 Colin Walters * shell/rb-shell-preferences.c (rb_shell_preferences_append_view_page): Make non-visible sources insensitive. 2005-08-30 Colin Walters * shell/rb-shell.c: Don't use GConf for selected source; it's confusing to have the selected source change after startup, and since we don't save other things it's not worth saving this. * sources/rb-playlist-source.c: * sources/rb-library-source.c: * sources/rb-iradio-source.c: * sources/rb-ipod-source.c: Delete internal-name property usage. * sources/rb-source.c: Delete internal-name property. * data/rhythmbox.schemas: Delete selected_source. 2005-08-30 Colin Walters * sources/rb-sourcelist.c: Make playing source bold instead of displaying a pixbuf; it's much less ugly. 2005-08-30 Colin Walters * sources/rb-source.c: * sources/rb-source.h: New virtual method try_playlist. * sources/rb-iradio-source.c (rb_iradio_source_class_init): Implement impl_try_playlist. (rb_iradio_source_add_station): Remove validation; we do that elsewhere. (impl_handle_eos): Return RB_SOURCE_EOF_RETRY. (handle_playlist_entry_cb): Don't check for iradio uris, we don't need to. (stations_view_drag_data_received_cb): Don't check for iradio uris; in theory we should though... * shell/rb-shell.c (known_sources): Delete; we just hardcode the list in rb_shell_construct now. (struct RBShellPrivate): Add RBLibrarySource, RBIRadioSource, RBiPodSource. (rb_shell_constructor): Create library, iradio, ipod here. (rb_shell_source_deleted_cb): Use source directly instead of indirecting through type. (rb_shell_sync_selected_source): Ditto. (rb_shell_jump_to_entry_with_source): Just use the source reutrned from the type instead of special-casing. (rb_shell_guess_type_for_uri) (rb_shell_add_uri) (handle_one_uri_with_possible_metadata): New functions. (rb_shell_load_uri): Refactor to allow loading playlists again, also use other URI infrastructure. * shell/rb-shell-player.c (eos_cb): Handle RB_SOURCE_EOF_RETRY. (rb_shell_player_error): Always set entry error on error, instead of depending on EOF behavior. * shell/rb-playlist-manager.c (handle_playlist_entry_cb): Refactor to just invoke rb_shell_add_uri. (rb_playlist_manager_parse_file): Return error instead of tossing up dialog box directly. (load_playlist_response_cb): Display error here. (add_uri_to_playlist): Delete. (handle_playlist_entry_into_playlist_cb): Renamed to handle_playlist_entry_cb. * shell/rb-playlist-manager.h: Add error, update prototype. * lib/rb-file-helpers.c: * lib/rb-file-helpers.h: Delete rb_uri_is_iradio. 2005-08-29 Colin Walters * sources/rb-iradio-source.c (rb_iradio_source_add_station): Return if entry already exists. Use rhythmdb_entry_set_uninserted. * sources/rb-ipod-source.c (entry_set_string_prop): Avoid needlessly duping string, and use rhythmdb_entry_set_uninserted. (load_ipod_db_idle_cb): Use rhythmdb_entry_set_uninserted. * shell/rb-shell.h (enum RBShellError): Add some more errors. Prototype rb_shell_set_song_property. * shell/rb-shell.xml: Export setSongProperty. * shell/rb-shell.c (rb_shell_set_song_property): New function. (rb_shell_set_rating_impl): Call rhythmdb_entry_set instead of rhythmdb_entry_set_nonotify, and call rhythmdb_commit. * shell/rb-shell-player.c (rb_shell_player_set_entry_playback_error): Call rhythmdb_entry_set instead of rhythmdb_entry_set_nonotify, since we do want to notify of the change. (rb_shell_player_entry_changed_cb): Cast to RhythmDBEntryChange. * rhythmdb/rhythmdb.c (rhythmdb_process_queued_entry_set_event): Fix logic error; idle functions would be enqueued for each set. (rhythmdb_entry_set): Fix assertion logic error. * iradio/rb-new-station-dialog.c (rb_new_station_dialog_response_cb): Avoid needlessly duping strings, and use rhythmdb_entry_set_uninserted. Return if the entry already exists. 2005-08-29 Colin Walters * rhythmdb/rhythmdb.h (struct RhythmDBEntry): Add "inserted" member which we use to keep track of whether or not an entry is in the DB. Prototype rhythmdb_entry_set_uninserted. * rhythmdb/rhythmdb.c (rhythmdb_commit_internal): Set inserted flag. (rhythmdb_entry_insert): Assert entry is not already inserted. (rhythmdb_process_metadata_load): Update to call _set_uninserted just after creating entry. (rhythmdb_entry_set): Document, and fail on uninserted entries. (rhythmdb_entry_set_nonotify): Ditto. (rhythmdb_entry_set_uninserted): Document, and fail on inserted entries. (rhythmdb_entry_set_internal): Change notify flag to notify_if_inserted. Also move notification after assertions. Update all existing callers of rhythmdb_entry_set_internal to give TRUE for notify_if_inserted; this should be what we want but may be an efficiency hit. 2005-08-30 Raphael Slinckx * shell/rb-shell-player.c: (rb_shell_player_init), (rb_shell_player_set_property), (rb_shell_player_entry_changed_cb), (rb_shell_player_set_playing_source_internal), (rb_shell_player_sync_with_selected_source): Notify the player when an entry has updated the title, album or artist field, and resync the big display. * sources/rb-iradio-source.c: (rb_iradio_source_class_init): * sources/rb-library-source.c: (rb_library_source_class_init), (impl_get_config_widget): * sources/rb-playlist-source.c: (rb_playlist_source_class_init): * sources/rb-source.c: * sources/rb-source.h: Removed unused have_artist_album, get_artist, and get_album functions in rb-source and adapted other sources accordingly. 2005-08-29 Colin Walters * rhythmdb/rhythmdb.c (struct RhythmDBEvent): Add signal_change member. (threadsafe_entry_set): New function. (rhythmdb_entry_set): Just call threadsafe_entry_set with TRUE. (rhythmdb_entry_set_nonotify): New function; just call threadsafe_entry_set with FALSE. (rhythmdb_entry_set_internal): Take a notify flag; if true add the change to our pending set. Also update all internal callers of rhythmdb_entry_set_internal to pass FALSE. Some of these may be bugs however and need to pass TRUE... * rhythmdb/rhythmdb.h: Rename rhythmdb_entry_sync to rhythmdb_entry_set, and rename rhythmdb_entry_set to rhythmdb_entry_set_nonotify. * rhythmdb/rhythmdb.h (enum RhythmDBProp) (rhythmdb_entry_get_boolean): Kill off RHYTHMDB_PROP_AUTO_RATE. * widgets/rb-song-info.c: Kill off vestiges of auto rating. * widgets/rb-entry-view.c (rb_entry_view_rated_cb): * sources/rb-source.c (rb_source_update_play_statistics): * sources/rb-iradio-source.c (rb_iradio_source_add_station): * sources/rb-ipod-source.c (entry_set_string_prop) (load_ipod_db_idle_cb): * shell/rb-shell.c (rb_shell_set_rating_impl): * shell/rb-shell-player.c (rb_shell_player_set_entry_playback_error) (info_available_cb): * iradio/rb-station-properties-dialog.c (rb_station_properties_dialog_rated_cb) (rb_station_properties_dialog_sync_entries): * iradio/rb-new-station-dialog.c (rb_new_station_dialog_response_cb): Update callers of rhythmdb_entry_set to rhythmdb_entry_set_nonotify, and callers of rhythmdb_entry_sync to rhythmdb_entry_set. 2005-08-29 Colin Walters * sources/Makefile.am (INCLUDES): Add HAL_CFLAGS unconditionally. * shell/Makefile.am (rhythmbox_LDADD): Add HAL_LIBS to avoid linking insanity. * widgets/rb-header.c (sanitize_string): New function, extracted from old info_url. Be sure to always strip the string. (info_url): Rewrite to take artist/album, and generate a sane URL for them from last.fm, which is better than allmusic.com in that they support Rhythmbox, and have a *SANE* URL scheme. (artist_info_url, album_info_url): Delete. (rb_header_sync): Use info_url. 2005-08-29 James Livingston * sources/rb-source.c: (rb_source_search): Check to ensure that this is implemented before calling it. Many sources don't implement the method. 2005-08-28 Dennis Cranston * data/glade/create-playlist.glade: Cleanup the layout, and add a few more mnemonics. * shell/rb-playlist-manager.c: (rb_playlist_manager_cmd_load_playlist), (rb_playlist_manager_cmd_save_playlist): HIG fix, use title capitalization for window titles. * widgets/rb-query-creator-properties.c: Add mnemonics to checkbutton labels. * widgets/rb-query-creator.c: (rb_query_creator_constructor), (limit_toggled_cb): Toggle the sortLabel sensitivity. 2005-08-28 Colin Walters * data/rhythmbox.schemas: Delete search_text for library and iradio; this isn't a persistent value anymore. Closes #313757. * sources/rb-source.h: * sources/rb-source.c: Delete impl_can_search. * sources/rb-iradio-source.c: Delete search_text usage. * sources/rb-library-source.c: Ditto. * shell/rb-source-header.c: Don't use GConf for search key. Reset search when source is set, and just do rb_source_search in rb_source_header_search_cb. * shell/rb-shell.c (rb_shell_append_source): Don't initiate search. * shell/Makefile.am: Don't dist dashboard.c. 2005-08-28 Colin Walters * shell/main.c: Remove include of dead file rb-remote-dbus.h. 2005-08-28 Colin Walters * data/org.gnome.Rhythmbox.service.in: New. * data/Makefile.am: Install service file. * configure.ac: Define DBUS_SERVICES_DIR. * autogen.sh: Set ACLOCAL_FLAGS. * macros/acinclude.m4: New. 2005-08-28 Colin Walters Initial patch from Jonathan Matthew; closes 313684. * rhythmdb/rhythmdb-tree.c: (RHYTHMDB_FWRITE, RHYTHMDB_FPUTC): Handle errors. (save_entry): Return on error. (rhythmdb_tree_save): Handle error when saving the db; additionally, handle errors from fclose and unlink, and print error too. 2005-08-28 Colin Walters * sources/Makefile.am (libsourcesimpl_la_LIBADD): Fix extra _. 2005-08-28 Colin Walters * configure.ac: Change iPod support to --with-ipod; automatically enable it if we have HAL. Try to support both HAL 0.5 and HAL 0.2. Break out totem-plparser into its own check so later we can do version tests there too. Kill dashboard support. * sources/rb-ipod-source.c: Merge in changes from Ronald Bultje to support HAL > 0.5, but preserve the old code for HAL < 0.5 Closes #310017. * shell/Makefile.am (rhythmbox_LDADD): Add TOTEM_PLPARSER_LIBS. (INCLUDES): Add TOTEM_PLPARSER_CFLAGS. * sources/Makefile.am: Also handle TOTEM_PLPARSER_LIBS/TOTEM_PLPARSER_CFLAGS. * shell/dashboard.c: Delete; someone should just write a little python shim which lists on the D-BUS interface and writes the stuff to Dashboard. Even better Dashboard should be ported to D-BUS and do the listening itself, perhaps on an abstract "org.gnome.MusicPlayer" interface or something. * shell/rb-shell.c: Kill dashboard support. 2005-08-28 Colin Walters * remote/dbus/rb-print-playing.py: New file. 2005-08-28 Colin Walters * rhythmdb/rhythmdb.c (rhythmdb_entry_get): * rhythmdb/rhythmdb.h: Make rhythmdb_entry_get public. * shell/rb-shell-player.h: * shell/rb-shell-player.c: Add playing-uri-changed signal. * shell/rb-shell-player.xml: Export it. * shell/rb-shell.c (rb_shell_get_song_properties): New function. (rb_shell_error_quark): New. * shell/rb-shell.h: Prototype. Also add RBShellError. * shell/rb-shell.xml: Export rb_shell_get_song_properties. 2005-08-28 Colin Walters * remote/bonobo/rb-remote-bonobo.c (rb_bonobo_workaround_lock) (rb_bonobo_workaround_unlock): Renamed from bonobo_lock and bonobo_unlock. (rb_remote_bonobo_preinit): Lock setting moved here. (rb_remote_bonobo_init): From here. * shell/main.c (main): Call rb_remote_bonobo_preinit very early. Also invoke handle_cmdline in the right place. (handle_cmdline): Remove some unused vars. Cast bonobo_load_uri to GFunc. 2005-08-28 James Livingston * NEWS: keep the NEWS file up to date, so we don't have to do it all when 0.9.1 comes around. 2005-08-28 James Livingston * iradio/rb-new-station-dialog.c: (rb_new_station_dialog_response_cb): Trim whitespace from uris. Closes bug 314477. 2005-08-28 James Livingston Patch from Jonathan Mattnew * widgets/rb-entry-view.c: (rb_entry_view_duration_cell_data_func): * widgets/rb-header.c: (rb_header_get_elapsed_string): Display hours is a song is longer than 60 minutes. Closes bug 313311. 2005-08-27 James Livingston * data/glade/create-playlist.glade: * widgets/rb-query-creator.c: (rb_query_creator_load_query), (rb_query_creator_new_from_query), (rb_query_creator_get_limit): Add "minutes" as an option in the playlist limit menu. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_set_property), (rhythmdb_query_model_get_property), (rhythmdb_query_model_update_limited_entries): Allow query models to have a time limit * shell/rb-playlist-manager.c: (rb_playlist_manager_set_automatic_playlist), (rb_playlist_manager_cmd_edit_automatic_playlist): * sources/rb-playlist-source.c: (rb_playlist_source_set_query), (rb_playlist_source_get_query), (impl_receive_drag), (rb_playlist_source_new_from_xml), (rb_playlist_source_save_to_xml), (rb_playlist_source_songs_sort_order_changed_cb), (rb_playlist_source_do_query): * sources/rb-playlist-source.h: * widgets/rb-query-creator.h: Allow playlists to be limited by time 2005-08-27 James Livingston Patch from Jonathan Mattnew . * configure.ac: * shell/Makefile.am: work correctly if dbus-binding-tool is in a non-standard location. Closes bug 314640. 2005-08-26 Colin Walters Patch from Olivier Blin * widgets/eggnotificationbubble.c (draw_bubble): Handle extreme-left case as well. 2005-08-26 Colin Walters * shell/rb-shell.c (idle_save_state): Don't do this. (rb_shell_construct): Remove idle calls to idle_save_state. We should save the playlists automatically when they're modified. (rb_shell_load_uri): Don't try to re-stat entry if it already exists. * shell/rb-shell-player.c: Keep track of entry we are attempting to play. (rb_shell_player_set_playing_entry): Set playing_attempt_entry. Don't double-free error. (rb_shell_player_play_entry): Signal errors. (rb_shell_player_entry_activated_cb): Ditto. (rb_shell_player_property_row_activated_cb): Ditto. (rb_shell_player_set_playing_source_internal): Unset attempted playing entry. (rb_shell_player_error): Refactor to be usable both sync and async. Handle case where displayed entry differs from entry. (error_cb): Move GDK locking here. * shell/main.c (main): Drop most commandline arguments for D-BUS; people can just use dbus-send or python. We only support focusing and loading files. (load_uri_args): New function, extracted from handle_cmdline. (dbus_load_uri, bonobo_load_uri): New functions. * shell/Makefile.am (rhythmbox_LDADD): Add D-BUS libs as appropriate. * remote/Makefile.am: Don't compile dbus subdir, it's not used. * remote/dbus/rb-remote-dbus.c: Deleted. * player/rb-player-gst.c: Clear any pending idle handlers when we close the player. Signal errors generated during open/play etc as synchronous errors. * configure.ac: Enable Bonobo by default if D-BUS isn't enabled. 2005-08-26 Colin Walters * shell/rb-shell.c (rb_shell_present): Try harder. 2005-08-26 Colin Walters * shell/rb-shell.c (rb_shell_present): Try to handle GTK_MINOR_VERSION < 8. 2005-08-26 James Livingston * shell/main.c: (main): compilation fixes. Patch from Peter Robinson 2005-08-26 Colin Walters * remote/dbus/rb-remote-dbus.c: Various compilation fixes. 2005-08-25 Colin Walters * shell/rb-shell-player.c (rb_shell_player_auto_adjust_rating): Delete. (rb_shell_player_do_next_with_rating): Move back into rb_shell_player_do_next. (rb_shell_player_entry_activated_cb): Remove call to rb_shell_player_auto_adjust_rating. (do_next_idle): Just call rb_shell_player_do_next. * shell/rb-shell.c (rb_shell_present): Cast to GTK_WIDGET. 2005-08-25 Colin Walters * shell/rb-shell.c (rb_shell_present): Be sure to gtk_widget_show before gtk_window_present_with_time. 2005-08-25 Colin Walters * configure.ac: Require D-BUS 0.35. Bonobo is disabled by default. * shell/rb-shell.c (rb_shell_constructor): Adapted from rb_shell_construct. This is so we only have to do g_object_new. (rb_shell_get_player): New function. (rb_shell_get_player_path): Ditto. (rb_shell_load_uri): New function, adapted from rb_shell_load_uri_impl. * shell/rb-shell.h: Prototype them. * shell/rb-shell-player.c: Add new PLAYING_CHANGED signal which we export over D-BUS. (reemit_playing_signal): New function. (rb_shell_player_open_playlist_location): Use return values from rb_player_open, rb_player_close, etc. instead of checking "error". Return a gboolean on failure. (rb_shell_player_open_entry): Just open entry location, don't print to stderr. (rb_shell_player_play): Handle retval from rb_player_play. Return a gboolean. (do_next_idle): Move logic for handling of end of playlist here. (rb_shell_player_set_playing_entry): Take a GError, return a gboolean. Update to use gboolean return values. (rb_shell_player_do_previous): Delete lots of crazy duplicate logic. Signal an error on end of playlist. Also signal error if we're not playing. Move heuristic for replaying the song into rb_shell_player_cmd_previous. (rb_shell_player_do_next_with_rating): Signal error on end of playlist. (rb_shell_player_do_next): Return errors. (rb_shell_player_cmd_previous): Heuristic for restarting song moved here; the idea is you generally only want that from the GUI. (rb_shell_player_cmd_play): Handle error. (rb_shell_player_playpause): Signal errors. (filter_mmkeys): Use rb_shell_player_cmd_previous and rb_shell_player_cmd_next in favor of the internal _do functions. * shell/rb-shell-player.h (enum RBShellPlayerError): Add some errors. Update prototypes for above changes. * shell/main.c: More tightly integrate D-BUS; register various major singleton objects here. Fix handle_cmdline so we only process extra arguments, not every argument. * shell/Makefile.am: Generate D-BUS glue headers. * remote/dbus/rb-remote-dbus.c: Move all the D-BUS service stuff into shell/main.c. Now this file just acts as a client library. Not heavily tested. * remote/bonobo/rb-remote-bonobo.c (bonobo_lock, bonobo_unlock): Moved here. (rb_remote_bonobo_init): Move long CORBA rant here along with setting of lock functions. * player/rb-player-gst.c (rb_player_construct) (rb_player_play, rb_player_open, rb_player_close): Return gboolean on error. * player/rb-player.h: Update prototypes. * lib/rb-util.c (_rb_threads_lock, _rb_threads_unlock): Moved to rb-remote-bonobo.c. (rb_threads_init): Don't set gdk lock functions here. 2005-08-25 James Livingston Patch from Jonathan Mattnew * lib/rb-tree-dnd.c: (rb_tree_dnd_drag_drop_cb): * lib/rb-tree-dnd.h: * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_class_init), (rhythmdb_property_model_drag_source_init), (rhythmdb_property_model_iter_parent), (rhythmdb_property_model_row_draggable), (rhythmdb_property_model_drag_data_delete), (query_model_cb), (rhythmdb_property_model_drag_data_get), (rhythmdb_property_model_enable_drag): * rhythmdb/rhythmdb-property-model.h: * shell/rb-playlist-manager.c: (rb_playlist_manager_finalize), (rb_playlist_manager_set_property), (append_new_playlist_source), (rb_playlist_manager_save_playlists): * shell/rb-shell.c: (rb_shell_construct), (sourcelist_drag_received_cb): * sources/rb-iradio-source.c: (rb_iradio_source_class_init): * sources/rb-playlist-source.c: (impl_receive_drag): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_class_init), (rb_sourcelist_model_drag_dest_init), (rb_sourcelist_model_set_dnd_targets), (rb_sourcelist_model_drag_data_received), (path_is_reorderable), (rb_sourcelist_model_row_drop_position), (rb_sourcelist_model_get_drag_target), (rb_sourcelist_model_drag_data_get): * sources/rb-sourcelist-model.h: * sources/rb-sourcelist.c: (rb_sourcelist_class_init), (rb_sourcelist_init), (rb_sourcelist_get_property), (rb_sourcelist_selection_changed_cb): * sources/rb-sourcelist.h: * widgets/rb-property-view.c: (rb_property_view_constructor): Greatly improve drag-n-drop support. Allow dragging of item from property views to the source list, to create new automatic playlists. Allow playlist re-ordering. Fix dragging from Rhythmbox to other applications. (Closes bug 147337) 2005-08-24 Colin Walters Patch from Olivier Blin * widgets/eggnotificationbubble.c (draw_bubble): Draw triangle correctly in the case where the window is next to monitor edge. 2005-08-24 James Livingston * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (rb_playlist_source_get_property), (rb_playlist_source_do_query): add a gobject property to get the query model that backs the playlist. 2005-08-24 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_set_property), (handle_playlist_entry_into_playlist_cb), (rb_playlist_manager_playlist_entries_changed): Disable the "create audio cd" menu item when a non-playlist source is selected, or the playlist is empty. (Closes Bug 313253) 2005-08-24 James Livingston * sources/rb-playlist-source.c: (rb_playlist_source_burn_playlist): Fix the playlist length checkso it doesn't report 0 for automatic playlists. This was stopping automati playlists being burnt to cd. 2005-08-24 James Livingston * configure.ac: * sources/rb-playlist-source-recorder.c: (burn_cd): * sources/rb-playlist-source.c: (rb_playlist_source_songs_sort_order_changed_cb): * widgets/rb-query-creator.c: (rb_query_creator_dispose): Fix some more warnings that occur when compiling RPMs on Fedora. 2005-08-24 James Livingston * rhythmdb/rhythmdb.c: (set_props_from_metadata): Fix a warning that was stopping some distros gcc version compiling. 2005-08-24 James Livingston * NEWS: * data/glade/create-playlist.glade: * rhythmdb/rhythmdb-tree.c: (evaluate_conjunctive_subquery): * rhythmdb/rhythmdb.c: (rhythmdb_query_parse_valist), (rhythmdb_query_free), (rhythmdb_query_serialize), (rhythmdb_query_deserialize), (rhythmdb_query_get_type): * rhythmdb/rhythmdb.h: * shell/rb-playlist-manager.c: (rb_playlist_manager_set_automatic_playlist), (rb_playlist_manager_cmd_edit_automatic_playlist): * sources/rb-playlist-source.c: (rb_playlist_source_constructor), (rb_playlist_source_set_query), (rb_playlist_source_get_query), (impl_receive_drag), (rb_playlist_source_new_from_xml), (rb_playlist_source_save_to_xml), (rb_playlist_source_songs_sort_order_changed_cb), (rb_playlist_source_do_query): * sources/rb-playlist-source.h: * widgets/Makefile.am: * widgets/rb-entry-view.c: (rb_entry_view_get_sorting_order), (rb_entry_view_set_sorting_order): * widgets/rb-query-creator-private.h: * widgets/rb-query-creator-properties.c: (stringCriteriaCreateWidget), (stringCriteriaSetWidgetData), (stringCriteriaGetWidgetData), (escapedStringCriteriaSetWidgetData), (escapedStringCriteriaGetWidgetData), (set_rating_score), (ratingCriteriaCreateWidget), (ratingCriteriaSetWidgetData), (ratingCriteriaGetWidgetData), (integerCriteriaCreateWidget), (integerCriteriaSetWidgetData), (integerCriteriaGetWidgetData), (durationCriteriaCreateWidget), (durationCriteriaSetWidgetData), (durationCriteriaGetWidgetData), (create_time_unit_option_menu), (relativeTimeCriteriaCreateWidget), (relativeTimeCriteriaSetWidgetData), (relativeTimeCriteriaGetWidgetData): * widgets/rb-query-creator.c: (rb_query_creator_get_type), (rb_query_creator_class_init), (rb_query_creator_constructor), (rb_query_creator_dispose), (rb_query_creator_set_property), (rb_query_creator_get_property), (rb_query_creator_load_query), (rb_query_creator_set_sorting), (rb_query_creator_new_from_query), (get_entry_for_property), (rb_query_creator_get_query), (rb_query_creator_get_limit), (rb_query_creator_get_sort_order), (limit_toggled_cb), (lookup_row_by_widget), (remove_button_click_cb), (append_row), (get_property_index_from_proptype), (select_criteria_from_value), (property_option_menu_changed), (create_property_option_menu), (create_criteria_option_menu), (sort_option_menu_changed), (setup_sort_option_menu): * widgets/rb-query-creator.h: A fairly huge patch to improve automatic playlists. The two most notable improvements are 1) adding more properties to the query creator, making it much easier to add more in the future, and 2) allow playlists to be sorted, from the query editor if they gave limits, and by clicking on column headers if they don't. Files added: widgets/rb-query-creator-private.h, sources/rb-query-creator-properties.c 2005-08-21 James Livingston * player/rb-player-gst.c: (error_cb): ignore any playbin errors, where error=NULL. This stops some crashes. 2005-08-19 Colin Walters Patch from Olivier Blin * widgets/eggnotificationbubble.c (force_window): Support top orientation. * widgets/eggnotificationbubble.h: Remove egg_notification_bubble_force_window from header. 2005-08-18 James Livingston * NEWS: Give a bit of detail on the major changes in 0.9.0, and update with the changes since then. 2005-08-17 Ronald S. Bultje * shell/rb-shell-player.c: (rb_shell_player_init), (rb_shell_player_sync_volume), (rb_shell_player_volume_changed_cb), (rb_shell_player_volume_widget_changed_cb): * sources/rb-iradio-source.c: * sources/rb-library-source.c: * sources/rb-playlist-source.c: * widgets/Makefile.am: * widgets/bacon-volume.c: (bacon_volume_button_get_type), (bacon_volume_button_class_init), (bacon_volume_button_init), (bacon_volume_button_dispose), (bacon_volume_button_new), (bacon_volume_button_get_value), (bacon_volume_button_set_value), (bacon_volume_button_scroll), (bacon_volume_button_press), (cb_button_timeout), (cb_button_press), (cb_button_release), (bacon_volume_release_grab), (cb_dock_press), (bacon_volume_scale_get_type), (bacon_volume_scale_class_init), (bacon_volume_scale_new), (bacon_volume_scale_press), (bacon_volume_scale_release), (bacon_volume_scale_value_changed): * widgets/bacon-volume.h: * widgets/rb-volume.c: * widgets/rb-volume.h: Use BaconVolumeButton (#300867). 2005-08-17 James Livingston * rhythmdb/rhythmdb.c: (set_props_from_metadata), (rhythmdb_process_metadata_load): don't reset the First Seen time whenever we recheck the metadata. 2005-08-17 James Livingston * sources/rb-playlist-source.c: (rb_playlist_source_burn_playlist): temporary workaround to stop crashes when trying to burn an empty playlist. Doesn't disable the menu item which is the better solution (Bug 313253). 2005-08-15 James Livingston * shell/rb-source-header.c: (rb_source_header_init), (rb_source_header_sync_control_state), (rb_source_header_search_activate_cb): * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_poll_model), (rb_entry_view_grab_focus): * widgets/rb-search-entry.c: (rb_search_entry_class_init), (rb_search_entry_init), (rb_search_entry_searching), (rb_search_entry_activate_cb): * widgets/rb-search-entry.h: Move focus to the entry view when user presses enter in the search box. Patch from Paolo Borelli (Closes bug 128110) 2005-08-15 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_class_init), (rb_playlist_manager_new_playlist): * shell/rb-playlist-manager.h: * shell/rb-shell.c: (rb_shell_construct), (rb_shell_playlist_added_cb), (rb_shell_playlist_created_cb): Force the source list to be shown when a new playlist is created. (Closes bug 161935) 2005-08-15 James Livingston * widgets/rb-header.c: (rb_header_init), (rb_header_set_show_timeline): disable the seek slider, rather than hiding it, which more closely follows the HIG. (Closes bug 139102) 2005-08-13 Colin Walters * shell/rb-shell.c (rb_shell_playing_entry_changed_cb): Use rb_shell_hidden_notify. (rb_shell_hidden_notify): Notify if the shell is hidden. (rb_shell_set_visibility_impl): Debug goo. * shell/rb-shell.h: Export rb_shell_hidden_notify. * shell/rb-tray-icon.c (rb_tray_icon_hide_notify_cb): Show Rhythmbox when the user clicks on notification. * sources/rb-playlist-source-recorder.c (burn_cd): Notify when CD burn is complete. (rb_playlist_source_recorder_finalize): Unref shell. (rb_playlist_source_recorder_new): Take shell. * sources/rb-playlist-source.c (rb_playlist_source_burn_playlist): Pass shell to RBPlaylistSourceRecorder. 2005-08-13 Colin Walters * lib/rb-thread.c: * lib/rb-thread.h: Not used yet, but put in CVS in case we get time to convert. 2005-08-13 Colin Walters * widgets/eggnotificationbubble.h: * widgets/eggnotificationbubble.c: New files, will likely go in libegg. * widgets/eggtrayicon.c: * widgets/eggtrayicon.h: Add notification API. * shell/rb-tray-icon.c: * shell/rb-tray-icon.h: Add notification API. * shell/rb-shell.c: Notify on song change. 2005-08-12 Raphael Slinckx * sources/rb-ipod-source.c: (rb_ipod_unplugged): Correct an inversion of two lines causing NULL to be unreffed ============ Version 0.9.0 2005-08-10 Bastien Nocera * configure.ac: 0.9.0, whee! * NEWS: badly updated * remote/bonobo/Makefile.am: * remote/bonobo/rb-remote-bonobo.h: * shell/Makefile.am: * shell/main.c: make distcheck fixes