============ Version 0.9.4

2006-04-16  James Livingston  <[email protected]>

       * configure.ac: bump version to 0.9.4
       * NEWS: update NEWS and 0.9.4 insert translations

       * plugins/pythonconsole/pythonconsole.py: import the rhythmdb
       namespace automatically.

2006-04-16  James Livingston  <[email protected]>

       * plugins/pythonconsole/pythonconsole.py: import the rhythmdb
       namespace automatically.

2006-04-16  James Livingston  <[email protected]>

       * 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  <[email protected]>

       patch by: Christian Kirbach  <[email protected]>

       * po/LINGUAS: don't split the variable across two lines, as it breaks
       the build. Fixes bug 338625.

2006-04-15  James Livingston  <[email protected]>

       * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property):
       add a "sourcelist-model" gobject property.

2006-04-14  William Jon McCann  <[email protected]>

       * .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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * bindings/python/rhythmdb.defs:
       * bindings/python/rhythmdb.override: fix the method argument format
       specifiers.

2006-04-14  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored):
       Update the last-seen string when hiddenness changes.

2006-04-12  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       patch by: Christohpe Fergeau  <[email protected]> to fix building without
       track transfer. Fixes bug 338056.

       * shell/Makefile.am:

2006-04-11  Jonathan Matthew  <[email protected]>

       * widgets/Makefile.am: Fix automake complaints about LIBSEXY_LIBS

2006-04-10  William Jon McCann  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       patch by: Alex Lancaster  <[email protected]>
       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  <[email protected]>

       * configure.ac:
       * po/LINGUAS:

       Move ALL_LANGUAGES content to the po/LINGUAS file, to make our
       translators' life easier.

2006-04-09  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * widgets/libsexy/Makefile.am: Actually use internal libsexy headers,
       so we can build without a system-wide installed copy.

2006-04-09  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       patch by: Alex Lancaster  <[email protected]>

       * 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  <[email protected]>

       * bindings/python/override_common.h:
       * bindings/python/rb.override:
       * bindings/python/rhythmdb.override: bind some more functions

2006-04-08  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       Patch by: William Jon McCann  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * metadata/rb-metadata-gst.c: (rb_metadata_gst_typefind_cb): fix the
       inverted logic causing imports to fail.

2006-04-02  Jonathan Matthew  <[email protected]>

       * shell/main.c: (main): Fix dbusless build.

2006-04-02  Christophe Fergeau  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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
       <[email protected]>

2006-04-02  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * backends/gstreamer/rb-encoder-gst.c: (progress_timeout_cb),
       (start_pipeline): fix building with gstreamer 0.8

2006-04-02  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * plugins/rb-python-module.c: (rb_python_module_load): add a missing
       "*" which caused compilation to fail

2006-03-31  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * rhythmdb/rhythmdb-query-model.c: use guin64 instead of guint, which
       I buggered up when changing from GnomeVFSFileSize.

2006-03-30  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load):
       Only watch directories from which entries of type SONG have been
       added.

2006-03-29  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * bindings/python/override_common.c:
       * bindings/python/override_common.h: add some for missing files to
       cvs.

2006-03-29  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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 <gnome-vfs-utils.h>, 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  <[email protected]>

       * shell/rb-shell.c: (rb_shell_constructor): don't activate DAAP
       sharing when using --no-registration

2006-03-29  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * configure.ac: don't define HAVE_LIBSOUP when we don't. Fixes bug
       336131.

2006-03-27  James Livingston  <[email protected]>

       * data/iradio-initial.pls: Change the AfterHours DJ stream address.
       From bug 334829.

2006-03-26  James Livingston  <[email protected]>

       * 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  <[email protected]>

       patch by:  Alex Lancaster  <[email protected]>

       * sources/rb-audiocd-source.c: use the release-date that MusicBrainz
       supplies. Fixes bug 335947.

2006-03-25  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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
       <itunes:author> over <generator>, 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       patch by: Jonathan Matthew  <[email protected]>

       * rhythmdb/rb-refstring.c: (rb_refstring_get_folded),
       (rb_refstring_get_sort_key): fixes for strict-aliasing

2006-03-21  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * shell/Makefile.am: remove the reference to backends/ that I
       accidently included.

2006-03-21  James Livingston  <[email protected]>

       patch by: Brian Cameron  <[email protected]> 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  <[email protected]>

       Patch by:  Alex Lancaster  <[email protected]>

       * player/Makefile.am:
       * shell/Makefile.am: work correctly with a separate build root.

2006-03-21  James Livingston  <[email protected]>

       * rhythmdb/rhythmdb.c: (rhythmdb_monitor_uri_path): don't crash if we
       get handed NULL.

2006-03-21  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-shell-player.c: (volume_pre_unmount_cb): check for NULL
       before passing to strcmp. From bug 334559.

2006-03-20  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-shell.c: (rb_shell_set_visibility): fix minor sizing issue
       caused by my last commit

2006-03-20  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       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  <[email protected]>

       patch by: Mikhail Zabaluev  <[email protected]>

       * shell/Makefile.am: fix the link order, so that we compile with
       "LDFLAGS=-Wl,--as-needed". Fixes bug 334852.

2006-03-19  James Livingston  <[email protected]>

       patch by: Adam Petaccia  <[email protected]>

       * data/ui/rhythmbox-ui.xml: move preferences below "configure
       plugins". Fixes bug 335037.

2006-03-18  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * NEWS: update NEWS file

2006-03-17  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * widgets/rb-header.c (rb_header_sync): Escape album and
       artist before adding to markup.

2006-03-14  William Jon McCann  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       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  <[email protected]>

       * 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  <[email protected]>

       * configure.ac:  Enable metadata helper by default, and fix a typo.

2006-03-13  James Livingston  <[email protected]>

       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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       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  <[email protected]>

       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  <[email protected]>

       * 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  <[email protected]>

       * plugins/audioscrobbler/Makefile.am: don't delete as-powered.png when
       doing a distclean. Fixes bug 334221.


       Patch from Alex Lancaster  <[email protected]>

       * data/glade/Makefile.am: add plugins.glade. Fixes bug 334201.

2006-03-11  James Livingston  <[email protected]>

       * 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  <[email protected]>

       Try to get cvs to actually add the necessary files for plugin support

2006-03-11  James Livingston  <[email protected]>

       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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       patch by:  James Henstridge  <[email protected]>

       * 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  <[email protected]>

       patch by:  Alex Lancaster  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-shell-clipboard.c:
       (rb_shell_clipboard_set_source_internal): really fix it this time.
       hopefully.

2006-03-03  James Livingston  <[email protected]>

       * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync): fix issue
       with the idle function not being removed.

2006-03-02  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * data/ui/rhythmbox-ui.xml: add the missing UI for generic players.
       Stops it emitting critical warnings.

2006-03-02  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * configure.ac: simplify HAVE_HAL define

2006-03-01  Bastien Nocera  <[email protected]>

       * 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 <[email protected]> to add read-only Sony PSP
       support, additional HAL < 0.5 support by yours truly (Closes: #332337)

2006-03-02  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): handle
       first-seen and last-seen when merging duplicate entries.

2006-03-01  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * data/rhythmbox.schemas: change "boolean" to "bool" in the schema.
       Fixes bug 332913.

2006-03-01  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * configure.ac: Added "zh_HK" to ALL_LINGUAS.

2006-03-01  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-shell.c: (rb_shell_constructor): focus the entry view when
       first starting up. Fixes bug 330342.

2006-02-27  James Livingston  <[email protected]>

       * 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  <[email protected]>

       patch by: Gunnar Steinn Magnusson  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       patch by: Baptiste Mille-Mathias  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * sources/rb-podcast-source.c: add icon to the Cancel Download menu
       item. Fixes bug 329042.

2006-02-23  James Livingston  <[email protected]>

       patch by:  Alex Lancaster  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * doc/reference/rhythmbox.types: Fix doc build a bit more.

2006-02-23  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       update by:  Baptiste Mille-Mathias  <[email protected]>
       * help/C/rhythmbox.xml:  add a 'getting started' section, and fix a
       few bits and pieces.

2006-02-22  Jonathan Matthew  <[email protected]>

       * metadata/test-metadata.c: (load_metadata_cb):
       Fix compile warning for ignoring return value from getcwd, #332064.

2006-02-21  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       Patch by: Alex Lancaster  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-shell.c: (rb_shell_constructor): ensure the window is shown
       on startup.

2006-02-21  James Livingston  <[email protected]>

       * NEWS: update with recent changes

2006-02-21  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * .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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-play-order.c: (default_playing_entry_removed): don't crash
       when deleting last entry. Fixes bug 331712.

2006-02-18  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       update by:  Baptiste Mille-Mathias  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * widgets/rb-library-browser.c: (reset_view_cb): make View All
       actually reset the browsers.

2006-02-16  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-shell-player.c: (open_location_thread):
       Take GDK lock before doing anything UI-related.

2006-02-15  Jonathan Matthew  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * widgets/rb-query-creator.c: (rb_query_creator_load_query):
       Check the 'limit' checkbox for time-limited playlists.

2006-02-14  Sven Herzberg  <[email protected]>

       * widgets/rb-song-info.c: Prove text-completion when editing title,
       artist or album

2006-02-14  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * sources/rb-playlist-source.c: (playlist_iter_func):
       Make it compile with older versions of totem-plparser too.

2006-02-13  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       Patch by: Baptiste Mille-Mathias  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       Patch by: Christophe Fergeau  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * (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  <[email protected]>

       * 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  <[email protected]>

       * daapsharing/rb-daap-connection.c (http_response_handler):
       Report the actual uri from the message in debug statements.

2006-02-08  William Jon McCann  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * daapsharing/rb-daap-share.c (rb_daap_share_server_stop):
       Actually stop soup server.  Fixes #329816.

2006-02-07  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-shell-player.c: (rb_shell_player_error): fix compilation
       issue.

2006-02-05  James Livingston  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * 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  <[email protected]>

       * shell/rb-shell.c: (rb_shell_cmd_about): Fix the FSF's address