2006-02-02  James Livingston  <jrl@ids.org.au>

	* NEWS: update NEWS
	* configure.ac: bump version to 0.9.3

	* data/Makefile.am: pass make distcheck. patch from Christopher Aillon
	<caillon@redhat.com>, fixed bug 329517. 

2006-02-02  Jonathan Matthew  <jonathan@kaolin.hn.org>

	Patch from Alex Lancaster  <alexl@users.sourceforge.net>

	* widgets/rb-song-info.c: (rb_song_info_constructor):
	Make year and disc number fields non-editable if tag editing
	is disabled.  Fixes #329463.

2006-02-01  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb-property-model.c:
	(rhythmdb_property_model_row_inserted_cb),
	(rhythmdb_property_model_prop_changed_cb),
	(rhythmdb_property_model_entry_removed_cb): handle hidden entries
	correctly. Fixes bug 327061.

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_entry_changed_cb): emit change notification of
	the HIDDEN property when an entry is removed for being hidden.

	* rhythmdb/rhythmdb-query-model.h:
	* sources/rb-iradio-source.c: (rb_iradio_source_do_query):
	* widgets/rb-entry-view.c: (rb_entry_view_set_property): remove query
	models's "connected" property. Whatever it was needed for seems to
	have gone.

2006-02-01  James Livingston  <jrl@ids.org.au>

	patch by: Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell-player.c: (_idle_unblock_signal_cb),
	(rb_shell_player_playing_changed_cb): block the signal to prevent
	re-entrancy. Fixes bug 329329 and fixes the first click of the play
	button pausing.

2006-02-01  James Livingston  <jrl@ids.org.au>

	* metadata/rb-metadata-gst.c: a few gstreamer 0.10 fixes. Tag editing
	/should/ now work, if the neccessary plugins get ported.

2006-01-30  James Livingston  <jrl@ids.org.au>

	* daapsharing/rb-daap-connection.c: (entry_set_string_prop): Set
	string properties to "Unknown" is the string is empty. Kind of fixes
	bug 327495.

	* rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): only do the
	gettext calls once, rather than once per time the function is used.
	This stops us making tens of thousands of gettext calls on startup,
	which reduces the cpu-time of startup by 10-20%

2006-01-29  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load):
	(rhythmdb_add_uri):
	* metadata/rb-metadata-gst.c: emit RB_METADATA_ERROR_NOT_AUDIO_IGNORE
	for files containing known video streams.


2006-01-29  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* INSTALL.quick: Random unupdates; gst-plugins-good isn't actually
	required.

2006-01-29  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* INSTALL.quick: More random updates

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_class_init),
	(rhythmdb_query_model_set_property),
	(rhythmdb_query_model_get_property),
	(rhythmdb_query_model_finalize), (rhythmdb_query_model_new):
	Remove user sort data handling, take a property ID and a reverse
	flag instead.
	(rhythmdb_query_model_insert_into_main_list),
	(rhythmdb_query_model_insert_into_limited_list),
	(rhythmdb_query_model_do_reorder),
	(_reverse_sorting_func):
	Handle reverse sorting by calling _reverse_sorting_func, which
	calls the real sort function and reverses the result.
	(rhythmdb_query_model_set_sort_order):
	Allow this to be called to set the initial sort order for limited
	queries, and handle reverse sorting when reordering.
	(rhythmdb_query_model_location_sort_func),
	(rhythmdb_query_model_album_sort_func),
	(rhythmdb_query_model_artist_sort_func),
	(rhythmdb_query_model_genre_sort_func),
	(rhythmdb_query_model_track_sort_func),
	(rhythmdb_query_model_double_ceiling_sort_func),
	(rhythmdb_query_model_ulong_sort_func),
	(rhythmdb_query_model_date_sort_func),
	(rhythmdb_query_model_string_sort_func):
	Sort functions moved from rb-entry-view.c.
	* rhythmdb/rhythmdb-query-model.h:
	Add the sort functions, and update the changed functions.
	
	* widgets/rb-entry-view.c: (rb_entry_view_set_property):
	Just call _resort_model when the query model is set, since it
	does all the same things.
	(rb_entry_view_append_column):
	Rework bits so the rating column doesn't have to be so much of a
	special case.
	(rb_entry_view_append_column_custom):
	Take a property ID to sort on, rather than arbitrary custom data.
	(rb_entry_view_resort_model):
	Query model does all the reverse sort handling now.
	* widgets/rb-entry-view.h: Update _append_column_custom.

	* sources/rb-play-queue-source.c:
	(rb_play_queue_source_constructor):
	* sources/rb-playlist-source.c: (rb_playlist_source_constructor):
	* sources/rb-podcast-source.c: (rb_podcast_source_constructor),
	(rb_podcast_source_post_date_cell_sort_func),
	(rb_podcast_source_post_status_cell_sort_func),
	(rb_podcast_source_post_feed_cell_sort_func):
	Updates required by all the other changes.

	* rhythmdb/rhythmdb-property-model.c:
	(rhythmdb_property_model_drag_data_get):
	Sort the query results on the selected property,
	so they arrive in the expected order.  All the other changes were made
	to make this possible.  Fixes bug #327494.

2006-01-29  Jonathan Matthew  <jonathan@kaolin.hn.org>
	
	* shell/rb-shell-clipboard.c:
	Use GTK_STOCK_REMOVE icon for the remove action in
	the play queue too.

2006-01-29  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-play-queue-source.c:
	(rb_play_queue_source_constructor),
	(rb_play_queue_source_update_count):
	Don't make the 'queued songs' column clickable,
	and add the queued song count to the column title.

2006-01-29  James Livingston  <jrl@ids.org.au>

	* configure.ac: remove "experimental" marking from DAAP, and enable by
	default if the dependencies are found.

2006-01-29  James Livingston  <jrl@ids.org.au>

	* NEWS: update NEWS

2006-01-29  James Livingston  <jrl@ids.org.au>

	patch by: William Jon McCann  <mccann@jhu.edu>

	* sources/rb-podcast-source.c: (rb_podcast_source_constructor),
	(rb_podcast_source_feed_title_cell_data_func): Revert the change of
	property used for the feed list. Fixes problem with feeds with no
	episodes not showing up.

2006-01-29  Jonathan Matthew  <jonathan@kaolin.hn.org>
	
	* shell/rb-play-order-random-by-age-and-rating.c:
	(rb_random_by_age_and_rating_get_entry_weight):
	Fix compile errors, bug #328978.

2006-01-28  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* INSTALL.quick, README: Random updates
	* README.lirc: Add notes on controlling Rhythmbox with LIRC

2006-01-28  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): change the
	default rating back to 0 (from 2.5, which was needed for autorating).

	* shell/rb-play-order-random-by-age-and-rating.c:
	(rb_random_by_age_and_rating_get_entry_weight):
	* shell/rb-play-order-random-by-rating.c:
	(rb_random_by_rating_get_entry_weight): Treat ratings of 0 the same as
	2.5 for the purposes of weighting entries.

2006-01-28  James Livingston  <jrl@ids.org.au>

	* lib/rb-cut-and-paste-code.c: (rb_utf_friendly_time): Add some
	translator comments, to make it clearer what the "friendly time"
	formatting strings mean.

2006-01-27  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* daapsharing/rb-daap-connection.c: (http_response_handler):
	Fix the sense of the overflow check so it'll accept valid input.

2006-01-27  James Livingston  <jrl@ids.org.au>

	Patch from Alex Lancaster  <alexl@users.sourceforge.net>

	* lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb): correctly
	escape paths when using rb_uri_handle_recursively. Closes bug 139646.

2006-01-27  Jonathan Matthew  <jonathan@kaolin.hn.org>

	Patch by: Alex Lancaster  <alexl@users.sourceforge.net>
	
	* shell/rb-shell-player.c: (rb_shell_player_sync_with_source):
	Don't include the artist field in the window title if it's blank.
	Fixes #325973.

2006-01-26  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-shell-clipboard.c (rb_shell_clipboard_actions):
	Use stock delete icon for move to trash and stock remove
	for remove menu item.

2006-01-26  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell.c: (rb_shell_constructor),
	(idle_handle_load_complete):  Don't start the playlist save
	timeout until we've loaded the playlists, otherwise we'll
	write an empty playlist file if startup takes too long.

2006-01-25  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-shell.c: Make view toolbar toggle use
	shift+ctrl+t.  Fixes #327585.

2006-01-25  James Livingston  <jrl@ids.org.au>

	patch by: Christope Fergeau  <teuf@gnome.org>

	* daapsharing/rb-daap-connection.c: (g_zalloc_wrapper),
	(http_response_handler): fix a potential buffer overflow issue.

2006-01-25  James Livingston  <jrl@ids.org.au>

	* widgets/rb-entry-view.c: (rb_entry_view_append_column): make the
	Year column wide enough to display "Unknown"

2006-01-25  James Livingston  <jrl@ids.org.au>

	* sources/rb-podcast-source.c: (rb_podcast_source_constructor),
	(rb_podcast_source_post_status_cell_data_func): make the episode
	status wording better. Part of bug 321607.

2006-01-25  James Livingston  <jrl@ids.org.au>

	* data/ui/rhythmbox-ui.xml: separate the Move to Trash menu item from
	others with a separator.

	* shell/rb-shell-clipboard.c:  Rename "Delete" to "Remove" and use the
	stock Delete icon.

2006-01-24  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* data/rhythmbox.desktop.in: Add GTK to categories.  Fixes #328047.

2006-01-23  James Livingston  <jrl@ids.org.au>

	* widgets/eggtrayicon.c: (egg_tray_icon_notify): support libnotify
	0.3.2. Fixed bug 328158.

2006-01-23  James Livingston  <jrl@ids.org.au>

	* metadata/rb-metadata-gst.c: (gst_date_gulong_transform),
	(gulong_gst_date_transform), (rb_metadata_class_init):
	* metadata/rb-metadata.h: fix support for Year metadata in gst 0.10.

2006-01-23  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_finalize),
	(rhythmdb_commit_internal), (rhythmdb_entry_insert),
	(record_entry_change): Protect added_entries and changed_entries with
	a mutex, so it doesn't crash on startup on SMT/SMP machines.

2006-01-23  James Livingston  <jrl@ids.org.au>

	* sources/rb-audiocd-source.c: (rb_audiocd_source_class_init): disable
	the browser for audio CDs.

2006-01-22  James Livingston  <jrl@ids.org.au>

	* daapsharing/rb-daap-mdns.c: (get_avahi_client): don't pass
	NEVER_FAIL as it causes the daemon-not-running error to never be
	reported, resulting in bug 319438 re-occurring.

2006-01-22  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-podcast-source.c: (rb_podcast_source_cmd_update_all):
	Just call the podcast manager's update method.  Unbreaks the 'update
	all feeds' command.

2006-01-22  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/Makefile.am: Fix typo.  Fixes bug #327970.

2006-01-21  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* configure.ac: Don't disable DAAP with gstreamer 0.10

	* daapsharing/rb-daap-src.c: (_do_init), (rb_daap_src_base_init),
	(rb_daap_src_class_init), (rb_daap_src_init),
	(rb_daap_src_finalize), (rb_daap_src_set_property),
	(rb_daap_src_get_property), (rb_daap_src_write),
	(rb_daap_src_read), (_expect_char), (rb_daap_src_read_chunk_size),
	(_split_uri), (rb_daap_src_open):
	* daapsharing/rb-daap-src.h:
	Mostly fix seeking, handle chunked transfer encoding, and port to
	gstreamer 0.10.
	
	* player/rb-player-gst.c:
	* sources/rb-daap-source.c: (start_browsing), (stop_browsing):
	Remove rb_daap_src_initialize and rb_daap_src_shutdown.

	Fixes bugs #326738 and #318852, and brings #309609 one step closer to
	being fixed.

2006-01-21  James Livingston  <jrl@ids.org.au>

	patch by: Alex Lancaster  <alexl@users.sourceforge.net> to add support
	for Year metadata in DAAP sources. Fixes bug 327700.

	* daapsharing/rb-daap-connection.c: (handle_song_listing):

2006-01-20  William Jon McCann  <mccann@jhu.edu>

	* widgets/rb-simple-view.c (rb_simple_view_button_press_cb): Use
	enum values instead of magic numbers.

	* widgets/rb-property-view.c (rb_property_view_cell_data_func):
	Add number of songs that match each property title into
	the cell.  Also show the number of properties that match
	in the All entry.
	(rb_property_view_constructor): Use enum values instead of
	magic numbers.

	* sources/rb-podcast-source.c (rb_podcast_source_constructor):
	Query podcast posts instead of feeds for browser.  Use
	post SUBTITLE which is the location for the property view.
	(rb_podcast_source_feeds_show_popup_cb): Remove unused code.
	(construct_query_from_selection) 
	(rb_podcast_source_cmd_delete_feed) 
	(rb_podcast_source_cmd_properties_feed) 
	(rb_podcast_source_cmd_update_feed): Use variable to make
	it clear what the selection data represents.
	(rb_podcast_source_feed_title_cell_data_func): Add number
	of posts that belong to each feed in the browser.

	* rhythmdb/rhythmdb-property-model.c (rhythmdb_property_model_set_property): Allow using SUBTITLE property.
	(rhythmdb_property_model_delete_prop): Decrement the refcount
	for the All entry.
	(rhythmdb_property_model_get_column_type): Use column enum
	values instead of magic numbers.  Add NUMBER column.
	(rhythmdb_property_model_get_value): Use enum.
	Add NUMBER column that represents the refcount for
	the title of that property.
	(rhythmdb_property_model_perform_sync): Don't fake up
	a title for All here.

	Fixes #327372.
	
2006-01-21  James Livingston  <jrl@ids.org.au>

	Make Rhythmbox start faster by not blocking the UI while database
	initialisation and loading occurs. Closes bug 323348.

	* rhythmdb/rhythmdb.c: (rhythmdb_init): make the library monitoring
	start 10 seconds later instead of immediately.
	
	(rhythmdb_commit_internal), (rhythmdb_commit): make rhythmdb_commit
	safe to call from any thread.

	(rhythmdb_process_metadata_load), (rhythmdb_process_events),
	(rhythmdb_load_thread_main), (rhythmdb_load): load the db in a thread,
	so the UI doesn't block.

2006-01-18  James Livingston  <jrl@ids.org.au>

	* sources/rb-static-playlist-source.c:
	(rb_static_playlist_source_do_query): fix dumb mistake I made that would
	cause crashes. Oops. fixes bug 327477.

2006-01-17  William Jon McCann  <mccann@jhu.edu>

	* player/rb-recorder-gst.c (rb_recorder_gst_free_pipeline):
	Set GST element state to NULL before unreffing.
	Fixes #327422.

2006-01-18  James Livingston  <jrl@ids.org.au>

	* sources/rb-static-playlist-source.c:
	(rb_static_playlist_source_do_query): don't filter on the SONG entry
	type, since the playlists can contain non-song entries. Fixes bug
	327448.

	* sources/rb-play-queue-source.c:
	(rb_play_queue_source_class_init): disable the search box for the
	queue.

2006-01-18  James Livingston  <jrl@ids.org.au>

	* sources/rb-podcast-source.c: (rb_podcast_source_constructor): allow
	dragging of podcast episodes. Fixed bug 327450.

2006-01-18  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_drag_data_received): fix possible assertion when
	dragging to an emoty playlist.

2006-01-18  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-playlist-source-recorder.c:
	Make the fake NAUTILUS_BURN_CHECK_VERSION macro work properly.

2006-01-17  James Livingston  <jrl@ids.org.au>

	patch by: Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-audiocd-source.c: don't assert if MusicBrainz returns a
	different number of tracks than exist on the cd, since that happens
	with audio+data hybrid CDs. Part of bug 325046.

2006-01-17  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-playlist-source.c: (rb_playlist_source_constructor):
	Remove useless call to gtk_tree_view_column_set_clickable().

	* widgets/rb-entry-view.c: (rb_entry_view_append_column_custom):
	Don't store sort data for columns if the sort function is NULL,
	so only sortable columns will be in the column sort data map.
	(rb_entry_view_set_columns_clickable): Only make columns we can sort
	on clickable.
	(rb_entry_view_constructor):  The 'playing icon' column is never
	clickable, so don't connect a signal handler for it.

	Fixes bug 326811.

2006-01-17  James Livingston  <jrl@ids.org.au>

	* metadata/rb-metadata-gst.c: don't set properties with gst 0.10 which
	are 0.8 only. Fix element detection.

	* rhythmdb/rhythmdb.c: (action_thread_main): reload old metadata is
	saving the new metadata failed

2006-01-17  James Livingston  <jrl@ids.org.au>

	* shell/rb-shell-player.c: (do_next_idle),
	(rb_shell_player_cmd_previous), (rb_shell_player_cmd_next),
	(eos_cb): release audio device when a playlist finishes. Fixes bug
	323679.

2006-01-17  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (set_props_from_metadata), (queue_stat_uri):
	canonicalise the URIs when things are added via library watching.

2006-01-16  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source-recorder.c (update_speed_combobox):
	Off by one error in default speed index.

2006-01-16  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source-recorder.c (get_write_speeds) 
	(update_speed_combobox, update_speed_combobox):
	Get a list of the actually supported write speeds from
	n-c-b >= 2.13.90.  Otherwise use fallback list.

2006-01-17  James Livingston  <jrl@ids.org.au>

	* lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb),
	(rb_uri_handle_recursively): use gnome_vfs_directory_visit, so we
	don't get stuck on recursive symlinks. Fixed bug 125452.

2006-01-17  James Livingston  <jrl@ids.org.au>

	Add support for mass-storage audio players. Players are detected via
	either the HAL "audio_player" capability, or a ".is_audio_player" file
	in the root of the volume. Closes bug 325602.

	* configure.ac: separate using HAL from ipod support.

	* lib/rb-file-helpers.c: (rb_uri_is_local):
	* lib/rb-file-helpers.h: add function to determine whether a URI is
	local.

	* rhythmdb/rhythmdb.c: (rhythmdb_commit_internal),
	(rhythmdb_process_stat_event), (rhythmdb_process_metadata_load),
	(rhythmdb_process_file_created_or_modified), (queue_stat_uri),
	(queue_stat_uri_tad), (add_thread_main), (action_thread_main),
	(rhythmdb_add_uri), (rhythmdb_add_uri_with_type):
	* rhythmdb/rhythmdb.h: add rhythmdb_add_uri_with_type, so that
	directories can be scanned for files to add as  non-SONG entries.

	* shell/rb-removable-media-manager.c:
	(rb_removable_media_manager_mount_volume): add checking for
	mass-storage players.

	* sources/rb-audiocd-source.c: (rb_audiocd_source_new):
	* sources/rb-ipod-source.c: (rb_ipod_source_new),
	(hal_udi_is_ipod):
	* sources/rb-removable-media-source.c:
	(rb_removable_media_source_class_init),
	(rb_removable_media_source_constructor): move some things up to the
	RBRemovableMediaSource, rather than making subclasses do it.

	* sources/Makefile.am:
	* sources/rb-generic-player-source.c:
	* sources/rb-generic-player-source.h: add mass-storage player source.

2006-01-16  James Livingston  <jrl@ids.org.au>

	patch by: William Jon McCann  <mccann@jhu.edu>

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_base_row_deleted): fix build issue from last
	commit.

2006-01-16  James Livingston  <jrl@ids.org.au>

	Patch to add support for "chained queries" and putting hidden tracks
	in query models. Use chained queries to add search box support to
	normal playlists, and to make hidden entries not get lost. Fixes bug
	319278.

	* rhythmdb/rhythmdb-query-model.h:
	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_class_init),
	(rhythmdb_query_model_set_property),
	(rhythmdb_query_model_get_property):
	(rhythmdb_query_model_finalize): add "show-hidden" and
	"base-model" properties.

	(rhythmdb_query_model_set_connected),
	(rhythmdb_query_model_has_pending_changes),	
	(rhythmdb_query_model_entry_added_cb),
	(rhythmdb_query_model_entry_changed_cb), (idle_process_update),
	(rhythmdb_query_model_add_entry), (rhythmdb_query_model_do_insert),
	(rhythmdb_query_model_remove_entry),
	(rhythmdb_query_model_drag_data_received),
	(rhythmdb_query_model_base_row_inserted),
	(rhythmdb_query_model_base_row_deleted),
	(rhythmdb_query_model_base_non_entry_dropped),
	(rhythmdb_query_model_base_complete),
	(rhythmdb_query_model_base_entry_prop_changed),
	(rhythmdb_query_model_base_rows_reordered),
	(rhythmdb_query_model_row_drop_possible): handle base-model by
	chaining events and operations where necessary. Make hidden entries
	not get added only if "show-hidden" is false.

	(rhythmdb_query_model_child_index_to_base_index),
	(rhythmdb_query_model_base_index_to_child_index),
	(rhythmdb_query_model_get_entry_index): utility functions for handling
	base-model entries.

	(rhythmdb_query_model_reapply_query): apply the current query, and
	remove entries that don't match it.

	* rhythmdb/rhythmdb-tree.c: (do_query_recurse): small optimisation for
	empty queries.

	* sources/rb-source.c: (rb_source_set_property): move the unref later
	to fix problem if it is the last reference.

	* sources/rb-static-playlist-source.c:
	(rb_static_playlist_source_class_init),
	(rb_static_playlist_source_init),
	(rb_static_playlist_source_finalize),
	(rb_static_playlist_source_constructor), (impl_reset_filters),
	(impl_search), (rb_static_playlist_source_do_query),
	(impl_save_contents_to_xml),
	(rb_static_playlist_source_add_location_internal): use a chained query
	model to filter out hidden entries and implement the search box.

2006-01-15  James Livingston  <jrl@ids.org.au>

	* sources/rb-playlist-source.c: (rb_playlist_source_new_from_xml): fix
	the default playlist loading, which I broke earlier.

2006-01-15  James Livingston  <jrl@ids.org.au>

	patch by: William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source.c: (playlist_iter_func): use
	totem-plparser's new API version macros to check for API changes.
	Handle the recent API change.

2006-01-15  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-library-source.c: (impl_get_config_widget):
	Ref the preferences object to match the unref in the
	finalizer.  Fixes some portion of #323505.

2006-01-15  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-audioscrobbler.c: (rb_audioscrobbler_parse_response):
	* shell/rb-removable-media-manager.c: (begin_cd_drive_monitor):
	Fix valgrind warnings about accessing uninitialised values.

2006-01-14  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source-recorder.c: Make build on 2.12 again.

2006-01-14  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell-player.c: (rb_shell_player_sync_buttons):
	Use RB_ENTRY_VIEW_NOT_PLAYING state when there's no playing entry.
	Stops the 'now playing' icon from being displayed after the play
	order finishes.

2006-01-14  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* podcast/rb-podcast-manager.c:
	(rb_podcast_manager_db_entry_deleted_cb):
	Don't try to delete files we never downloaded, and cancel downloads
	for deleted episodes.  Fixes bug #326862.
	* sources/rb-podcast-source.c: (rb_podcast_source_cmd_delete_feed):
	Don't complain about NULL data items in the selection list.

2006-01-14  James Livingston  <jrl@ids.org.au>

	* shell/rb-playlist-manager.c: (rb_playlist_manager_set_property):
	Make the name ofthe queue non editable. Fixes bug 326918.

2006-01-13  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source-recorder.c (burn_cd) 
	(ask_rewrite_disc): Don't use our locally copied functions
	if we have at least 2.13.

2006-01-13  William Jon McCann  <mccann@jhu.edu>

	* podcast/rb-podcast-manager.c (rb_podcast_manager_class_init):
	Correct the argument type for the process_error signal.
	May fix bug #323154.

2006-01-13  James Livingston  <jrl@ids.org.au>

	save the queue to disk when exiting, and reload on startup. Fixed bug
	326677 .

	* shell/rb-playlist-manager.c:
	(rb_playlist_manager_load_playlists),
	(rb_playlist_manager_save_playlists_async): don't disable saving of
	the queue

	* shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property):
	add the queue source as a gobject property.

	* sources/rb-play-queue-source.c:
	(rb_play_queue_source_class_init), (impl_save_contents_to_xml): add
	code to save the queue to xml

	* sources/rb-playlist-source.c: (rb_playlist_source_new_from_xml):
	load the queue from xml.
	* sources/rb-playlist-xml.h:

	* sources/rb-static-playlist-source.c:
	(rb_static_playlist_source_load_from_xml),
	(rb_static_playlist_source_new_from_xml):
	* sources/rb-static-playlist-source.h: split the playlist xml loading
	from the static playlist creation function, so the queue can use it.

2006-01-13  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (rhythmdb_entry_set_visibility): remove
	assertion that should be there. Fixes bug 325923.
	
	* rhythmdb/rhythmdb.c: (rhythmdb_entry_new): make rhythmdb_entry_new
	return NULL if the entry already exists (e.g. as another type).
	* daapsharing/rb-daap-connection.c: (handle_song_listing):
	* podcast/rb-podcast-manager.c: (rb_podcast_manager_add_post),
	(rb_podcast_manager_insert_feed):
	* sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry):
	* sources/rb-ipod-source.c: (load_ipod_db_idle_cb):
	* sources/rb-iradio-source.c: (rb_iradio_source_add_station): check
	for the above function returning NULL.

2006-01-12  James Livingston  <jrl@ids.org.au>

	* doc/reference/Makefile.am: make gtk-docs build again when libnotify
	is enabled. Fixes bug 326673.
	
	* doc/reference/tmpl/eggtrayicon.sgml:
	* doc/reference/tmpl/rb-daap-src.sgml:
	* doc/reference/tmpl/rb-source.sgml:
	* doc/reference/tmpl/rb-statusbar.sgml:
	* doc/reference/tmpl/rb-tree-model-sort.sgml:
	* doc/reference/tmpl/rhythmbox-unused.sgml:
	* doc/reference/tmpl/rhythmdb.sgml: updated gtk-docs

2006-01-11  James Livingston  <jrl@ids.org.au>

	* widgets/rb-song-info.c: (rb_song_info_constructor),
	(rb_song_info_new), (rb_song_info_populate_dialog_multiple),
	(rb_song_info_populate_dialog): fill in the fields if all tracks have
	the same value for properties. From bug 326054.

2006-01-11  James Livingston  <jrl@ids.org.au>

	* sources/rb-source.h:
	* shell/rb-shell-player.c: (rb_shell_player_set_playing_entry),
	(rb_shell_player_set_playing_source_internal), (eos_cb):
	add support for RB_SOURCE_EOF_STOP, so that playback will stop after
	every entry.

	* sources/rb-podcast-source.c: (impl_handle_eos): make the podcast
	source use this. Closes bug 322077.

2006-01-10  William Jon McCann  <mccann@jhu.edu>

	* widgets/eggtrayicon.c (egg_tray_icon_notify):
	In order for set_icon_data_from_pixbuf() to be
	effective, one must not set an icon in _new().

2006-01-10  William Jon McCann  <mccann@jhu.edu>

	* widgets/eggtrayicon.c (egg_tray_icon_init) 
	(egg_tray_icon_unrealize, egg_tray_icon_cancel_message) 
	(egg_tray_icon_notify): Add support for libnotify 0.3.
	* widgets/Makefile.am: Add missing NOTIFY_CLAGS.
	* configure.ac: Determine the version of libnotify.
	Fixes #326333.

2006-01-08  James Livingston  <jrl@ids.org.au>

	* daapsharing/rb-daap-share.c: (add_entry_to_mlcl): fix crasher when
	trying to share a track with unknown length.

2006-01-08  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell-player.c: (rb_shell_player_init):
	Sync volume on startup so it doesn't default to 0.

2006-01-08  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell-player.c: (rb_shell_player_class_init),
	(rb_shell_player_get_property), (rb_shell_player_open_location),
	(info_available_cb):  Add the iradio streamed song title as a
	property, and emit a signal when it changes.

	* shell/rb-shell.c: (rb_shell_constructor),
	(rb_shell_player_elapsed_changed_cb),
	(rb_shell_player_stream_song_changed_cb):
	Issue a notification when the iradio song title changes.
	Fixes #326166.

2006-01-08  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell-player.c: (rb_shell_player_init),
	(rb_shell_player_finalize), (rb_shell_player_set_property),
	(rb_shell_player_get_property), (rb_shell_player_sync_volume),
	(rb_shell_player_toggle_mute), (rb_shell_player_set_volume),
	(rb_shell_player_set_volume_relative),
	(rb_shell_player_get_volume), (rb_shell_player_set_mute),
	(rb_shell_player_get_mute):
	* shell/rb-shell-player.h:
	* shell/rb-shell-player.xml:
	Store volume as a property on RBShellPlayer, rather than in gconf.
	Add some methods to control volume via dbus.

	* shell/rb-shell.c: (rb_shell_constructor),
	(rb_shell_volume_widget_changed_cb),
	(rb_shell_player_volume_changed_cb):
	* shell/rb-tray-icon.c: (rb_tray_icon_scroll_event_cb):
	Update volume using player properties rather than gconf, and sync the
	volume with the volume control button when something else changes it.
	Fixes #323840.

2006-01-07  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-tray-icon.c (tray_popup_position_menu):
	Make tray menu align with edge of panel.

	patch from Jaap A. Haitsma <jaap@haitsma.org>
	Fixes #319913

2006-01-07  William Jon McCann  <mccann@jhu.edu>
	* shell/rb-shell.c (sourcelist_drag_received_cb): 
	* shell/rb-playlist-manager.[ch] (create_name_from_selection_data) 
	(rb_playlist_manager_new_playlist_from_selection_data):
	Make a reasonable default name for playlists created from
	dropped data.  Fixes #326116.

2006-01-07  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source-recorder.c (update_speed_combobox):
	Use new gconf key.
	(burn_cd): Always eject CD after burning.  Too many drives
	get confused if we don't.  Save the speed used if the burn
	was completed successfully.

	* data/rhythmbox.schemas: Use our own speed instead of from
	n-c-b. The situation is that the default_speed for n-c-b is most
	likely the maximum write speed.  This is fine for n-c-b because it
	has burn-proof turned on.  We can't turn it on for audio CDs
	because the results are poor in quality.  So we'll just pick a
	default that should work for everyone (4).

2006-01-07  Jonathan Matthew  <jonathan@kaolin.hn.org>
	
	* shell/rb-playlist-manager.c: (reap_dead_playlist_threads),
	(rb_playlist_manager_shutdown): Fix more compile errors with GCC 4.1.

2006-01-07  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell.c: (rb_shell_add_uri): Fix compile error introduced
	in my previous commit.  Fixes #326037.

2006-01-06  Ryan P Skadberg  <skadz@stigmata.org>

	patch by: Jonathan Matthew

	* rhythmdb/rhythmdb.c: (rhythmdb_event_free): Fixed compile
	error on Fedora Rawhide.

2006-01-07  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell.c: (rb_shell_guess_type_for_uri):
	Assume HTTP URLs ending with .xml or .rss are podcasts.
	(rb_shell_add_uri): Handle adding podcast feeds.

	* sources/rb-podcast-source.c: (rb_podcast_source_new):
	Register as the source for podcast feeds.

2006-01-07  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-audioscrobbler.c: (rb_audioscrobbler_set_property):
	* shell/rb-shell-preferences.c: (rb_shell_preferences_append_page),
	(rb_shell_preferences_append_view_page):
	* shell/rb-shell-preferences.h:
	Fix typo in function name.  Fixes #325992.

2006-01-07  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-audioscrobbler.c:
	Add '+' to the list of characters to URI-encode, so it doesn't get
	interpreted as a space.

2006-01-06  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* daapsharing/rb-daap-connection.c: (rb_daap_connection_logout),
	(rb_daap_connection_do_something):  Don't crash if the DAAP server
	goes away while we're still trying to log in.

2006-01-06  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (rhythmdb_query_preprocess): fix Year criteria.

2006-01-06  James Livingston  <jrl@ids.org.au>

	Patch from: Alex Lancaster  <alexl@users.sourceforge.net> to add
	support for Year to automatic playlists. Closes bug 321341.

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_set_property):
	* rhythmdb/rhythmdb-tree.c: (evaluate_conjunctive_subquery):
	* rhythmdb/rhythmdb.c: (rhythmdb_query_parse_valist),
	(rhythmdb_query_free), (rhythmdb_query_serialize),
	(rhythmdb_query_deserialize), (rhythmdb_query_internal),
	(rhythmdb_query_get_type), (rhythmdb_query_preprocess):
	* rhythmdb/rhythmdb.h: Support special
	RHYTHMDB_QUERY_PROP_YEAR_{EQUALS,GREATER,LESS} database search for
	year in date.

	* widgets/rb-query-creator-properties.c:
	(yearCriteriaCreateWidget), (yearCriteriaSetWidgetData),
	(yearCriteriaGetWidgetData): add Year to the list of criteria options.

2006-01-06  James Livingston  <jrl@ids.org.au>

	* configure.ac: make the playback backend selection work correctly

	* daapsharing/rb-daap-src.c: (rb_daap_src_get_type),
	(rb_daap_src_class_init), (rb_daap_src_dispose),
	(rb_daap_src_change_state), (rb_daap_src_initialize):
	* daapsharing/rb-daap-src.h: revent the G_DEFINE_TYPE change, since it
	doesn't work for this class. Fixes bug 325934

2006-01-06  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* configure.ac: Fix check for libnotify.

2006-01-05  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source.c (xml_get_and_trim_names):
	Get name element for current lang and remove all name nodes
	from the XML tree.
	(get_playlist_name_from_xml): Try to get name element or
	fall back to name attribute.
	(rb_playlist_source_new_from_xml): Get name before turning over
	to sub-types for parsing so that we can remove name elements
	from the tree if necessary.

	* shell/rb-playlist-manager.c (rb_playlist_manager_load_playlists):
	Load default playlists file if per user playlists are not found.

	* data/playlists.xml.in: 
	* data/Makefile.am: 
	* data/.cvsignore: Add default set of playlists.
	Fixes #323004

2006-01-05  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/main.c: (main): Don't use the dbus interface to show the
	window if we're also going to use the bonobo interface.

2006-01-05  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-history.c: (rb_history_set_playing):
	Allow setting the playing song to NULL.
	(rb_history_append), (rb_history_delete_link):
	Don't randomly change position when entries are added and removed,
	it confuses play orders.
	
	* shell/rb-play-order-random.c: (rb_random_play_order_class_init):
	Random orders always have a next entry if the model is not empty.
	(rb_random_play_order_get_next), (rb_random_play_order_go_next):
	Go back to the start of the history if we're past its end.

	* shell/rb-play-order-shuffle.c: (rb_shuffle_play_order_get_next),
	(rb_shuffle_play_order_go_next): Go back to the start of the history
	if we're past its end.
	(rb_shuffle_sync_history_with_query_model): Go back to the start of
	the history if the current entry is removed.

	* shell/rb-play-order.c: (rb_play_order_entry_added_cb),
	(rb_play_order_entry_deleted_cb): Only update have next/previous for
	the play order when the query has finished. This wasted about 10% CPU
	while the query was running.

	Fixes #324641: assertion failures when the query model was changed
	such that the playing song was no longer present.

2006-01-05  James Livingston  <jrl@ids.org.au>

	* daapsharing/rb-daap-src.c: (rb_daap_src_class_init),
	(rb_daap_src_dispose), (rb_daap_src_change_state):
	* rhythmdb/rhythmdb-gda.c: (rhythmdb_gda_class_init),
	(rhythmdb_gda_finalize):
	* widgets/rb-cell-renderer-pixbuf.c:
	* widgets/rb-cell-renderer-rating.c:
	(rb_cell_renderer_rating_class_init),
	(rb_cell_renderer_rating_finalize):
	* widgets/rb-druid.c: (rb_druid_class_init), (rb_druid_finalize):
	* widgets/rb-load-failure-dialog.c:
	(rb_load_failure_dialog_class_init),
	(rb_load_failure_dialog_finalize):
	* widgets/rb-rating.c: (rb_rating_class_init),
	(rb_rating_finalize):
	* widgets/rb-search-entry.c: (rb_search_entry_class_init),
	(rb_search_entry_finalize): use G_DEFINE_TYPE

	* widgets/rb-tree-model-sort.{c.h}: remove obsolete files from cvs.

2006-01-05  James Livingston  <jrl@ids.org.au>

	patch by: Lubomir Marinov <lubomir.marinov@gmail.com>

	* shell/rb-commander.{c,h}: remove obsolete files, that weren't put in
	the tarball.

	* shell/rb-history.c: (rb_history_class_init),
	(rb_history_finalize):
	* shell/rb-playlist-manager.c: (rb_playlist_manager_class_init),
	(rb_playlist_manager_finalize):
	* shell/rb-remote.c: (rb_remote_finalize), (rb_remote_class_init),
	(rb_remote_init): use G_DEFINE_TYPE.

2006-01-05  James Livingston  <jrl@ids.org.au>

	* configure.ac: don't try to use libnotify >= 0.3.0 because of API
	changes

2006-01-04  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-playlist-manager.c (rb_playlist_manager_set_property):
	Disable burn action when source is not a playlist.
	Fixes #323578.

2006-01-04  Jonathan Matthew  <jonathan@kaolin.hn.org>

	Optionally use libnotify to display song change and other
	notifications, and provide an option to disable notifications.
	Fixes #320355 and innumerable informal complaints.

	* widgets/eggtrayicon.c: (egg_tray_icon_init),
	(egg_tray_icon_unrealize), (egg_tray_icon_send_message),
	(egg_tray_icon_cancel_message), (egg_tray_icon_hide_notify_cb),
	(egg_tray_icon_notify):
	* widgets/eggtrayicon.h:
	* configure.ac:
	* shell/Makefile.am:
	Optionally use libnotify instead of eggnotificationbubble.

	* shell/rb-tray-icon.c: (rb_tray_icon_class_init),
	(rb_tray_icon_constructor), 
	(rb_tray_icon_show_notifications_changed_cb),
	(rb_tray_icon_hide_notify_cb)
	(rb_tray_icon_cancel_notify), (rb_tray_icon_notify): 
	Add 'show notifications' action handling, use G_DEFINE_TYPE, move
	EggNotificationBubble pointer to eggtrayicon.

	* data/ui/rhythmbox-ui.xml: Add 'show notifications' menu item
	* lib/rb-preferences.h: Add #define for /ui/show_notifications key
	* data/rhythmbox.schemas: Add schema for /ui/show_notification key

2006-01-04  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source-recorder.c (rb_playlist_source_recorder_init):
	Request a minimum size for the progress bar so that
	the window doesn't shrink too small.

2006-01-03  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* daapsharing/rb-daap-share.c: (databases_cb): (db_entry_added_cb),
	(add_db_entry), (db_entry_deleted_cb):
	Don't track the number of songs currently present, track the next ID
	to assign.  Fixes potential ID conflict problems.
	
	(db_entry_changed_cb), (rb_daap_share_start_publish),
	(rb_daap_share_stop_publish):
	Watch for db entry changes, and when songs become non-hidden after
	a successful stat, add them to the mapping tables.   Fixes #325178,
	making the DAAP server usable again.

2006-01-03  Jonathan Matthew  <jonathan@kaolin.hn.org>
	
	* shell/rb-statusbar.c: (rb_statusbar_class_init),
	(rb_statusbar_construct), (rb_statusbar_init),
	(rb_statusbar_finalize), (rb_statusbar_set_property),
	(rb_statusbar_get_property), (rb_statusbar_new),
	(rb_statusbar_sync_with_source):
	* shell/rb-statusbar.h:
	Remove visibility management code, stop watching for play order
	changes (status bar doesn't show play order any more), remove unused
	'player' property, and some other minor cleanup.
	
	* shell/rb-shell.c: (rb_shell_constructor),
	(rb_shell_view_statusbar_changed_cb), (rb_shell_sync_smalldisplay),
	(rb_shell_sync_statusbar_visibility):
	Manage status bar visibility here rather than in the status bar
	itself, so we can take small mode into account.  Fixes #323589.

2006-01-03  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* widgets/eggnotificationbubble.c: (draw_bubble):
	Move the bubble off the visible screen while setting up bevels.  
	Fixes #316810.

2006-01-01  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell-player.c: (rb_shell_player_init),
	(rb_shell_player_finalize): 
	Remove unused structure members.
	
	(do_next_idle), (rb_shell_player_error):
	Only queue one call to do_next_idle, so we don't skip tracks if we get
	two errors for the same song.  Fixes #325216.

2006-01-01  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* data/glade/podcast-feed-properties.glade,
	 podcast/rb-feed-podcast-properties-dialog.c:
	(rb_feed_podcast_properties_dialog_init),
	(rb_feed_podcast_properties_dialog_update):
	Add 'last episode' field to the podcast feed properties dialog.

	* podcast/rb-feed-podcast-properties-dialog.c:
	(rb_feed_podcast_properties_dialog_update_last_update),
	(rb_feed_podcast_properties_dialog_update_last_episode),
	 podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed):
	Use last-seen property for the time at which we last updated the feed,
	and post-time for the time the last episode was published.

	* rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element):
	Handle upgrades from 0.9.2; if no post-time was found for a podcast
	feed, use last-seen (which in 0.9.2 was the last post time).

	Fixes #323894.

2006-01-01  James Livingston  <jrl@ids.org.au>

	patch by: Gunnar Steinn Magnusson <gsm@gunnarsteinn.com>

	* sources/rb-ipod-source.c: (load_ipod_db_idle_cb): read playcount and
	year from the ipod database.

2006-01-01  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* metadata/rb-metadata-gst.c: (rb_metadata_gst_new_decoded_pad_cb):
	Only set the pipeline back to NULL state for really uninteresting
	files.  This was causing deadlocks with various video files.
	Fixes #324912.

2006-01-01  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* data/glade/song-info-multiple.glade:
	Add disc number label and field.
	* widgets/rb-song-info.c: (rb_song_info_construct_single),
	(rb_song_info_constructor): 
	Handle widgets for disc number.
	(rb_song_info_sync_entries_multiple):
	Set disc number property on selected entries.
	Fixes #324777.

2006-01-01  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* iradio/rb-new-station-dialog.c: (rb_new_station_dialog_init):
	* podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init):
	Activate the default widget when enter is pressed in these dialogs.
	Fixes #322887.

2006-01-01  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/rb-shell-player.c: (rb_shell_player_get_playing_path):
	Use rb_shell_player_get_playing_entry, so we get the right entry
	when playing from the queue.  Fixes #325379.

2005-12-31  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed):
	Include podcast posts with no publication date.  Typically
	seen in static collections rather than feeds.

2005-12-31  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/main.c: (main): Don't attempt to handle
	bonobo-only arguments if we couldn't get a bonobo
	client proxy.

2005-12-31  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* daapsharing/rb-daap-mdns.c: (rb_daap_mdns_publish),
	(rb_daap_mdns_publish_cancel):  Clear our_service_name so we don't
	abort if daap sharing is disabled and then re-enabled.

2005-12-29  William Jon McCann  <mccann@jhu.edu>

	* podcast/rb-podcast-parse.c (rb_insert_item):
	Add debugging.
	(rb_podcast_parser_start_element): Support itunes:image.
	Add debugging.  Don't abuse the break statement.  Warn
	if state is unknown.
	(rb_podcast_parser_end_element): Add debugging.  Warn
	if state is unknown.
	(rb_podcast_parser_characters): Warn if state is unknown.

	Fixes parsing of feeds that use the itunes:image element.
	Fixes #324632

2005-12-28  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-iradio-source.c: (handle_playlist_entry_cb),
	(stations_view_drag_data_received_cb):
	Remove calls to rhythmdb_entry_lookup_by_location, as
	rb_iradio_source_add_station does that anyway.
	
	(rb_iradio_source_add_from_playlist):
	If the URL doesn't point to a playlist, add it as the stream
	URL instead.

2005-12-27  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* rhythmdb/rhythmdb.h: (rhythmdb_entry_get_string):
	just return NULL for RHYTHMDB_PROP_SEARCH_MATCH,
	so we don't get an assertion failure.
	Fixes #325025.

2005-12-24  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* shell/main.c: (load_uri_args): don't compile this in if
	neither bonobo nor dbus are enabled.  Fixes #324890.

2005-12-22  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-audiocd-source.c:
	(rb_audiocd_scan_songs): Always return the pipeline to NULL state,
	so it closes the device.

2005-12-20  James Livingston  <jrl@ids.org.au>

	* metadata/rb-metadata-gst.c: make the state changes time-out again,
	so that it doesn't spend forever getting stuck on the one file. Don't
	report errors for failing to change state on known non-audio files.

	* player/rb-player-gst.c: (rb_player_construct): let playbin deal with
	audio sink creation if we can't create the gconfaudiosink. This lets
	it work with only gst-plugins-base on 0.10.

2005-12-20  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_set_sort_order):
	Fix a tiny memory leak in the previous commit.

2005-12-20  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_set_sort_order):
	Don't try to emit reorders for empty query models, since it doesn't
	achieve anything and it results in a few warnings.

2005-12-19  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-playlist-source-recorder.c (rb_playlist_source_recorder_init):
	Make burn dialog non-resizable so that the expander can shrink.
	Fixes #308951.

2005-12-19  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* rhythmdb/rhythmdb.c: (rhythmdb_entry_insert): really refuse to
	add entries without a location, rather than those with one.

2005-12-19  James Livingston  <jrl@ids.org.au>

	* shell/rb-shell-player.c: (rb_shell_player_cmd_play): don't crash if
	the error isn't set.

2005-12-19  James Livingston  <jrl@ids.org.au>
	* rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): don't
	add entries without a location. Fixes bug 324290.

	* rhythmdb/rhythmdb.c: (rhythmdb_entry_insert): refuse to add entries
	without a location.

	* shell/main.c: (main): don't crash if dbus initialisation fails
	without setting an error

2005-12-19  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-library-source.c: Remove unused structure members
	(rb_library_source_do_query): Actually use the cached 'all' query.
	Fixes #324025.
	
2005-12-16  Jonathan Matthew  <jonathan@kaolin.hn.org>

	* sources/rb-audiocd-source.c 
	(rb_audiocd_get_cd_info): tab
	(rb_audiocd_scan_songs): Return boolean success/failure,
	fix error messages a bit.
	(metadata_cb): Don't crash if we have no tracks
	(rb_audiocd_load_songs): Don't try to read metadata if we can't read
	the CD.
	Fixes #324222.

2005-12-15  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-shell.c (rb_shell_sync_fullscreen) 
	(rb_shell_view_fullscreen_changed_cb): Fix sense of fullscreen gconf
	key.

	Patch from Jonathan Matthew <jonathan@kaolin.hn.org>
	Fixes #324157

2005-12-14  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-shell.c (rb_shell_constructor, rb_shell_finalize) 
	(rb_shell_view_fullscreen_changed_cb, rb_shell_sync_fullscreen) 
	(fullscreen_changed_cb): 
	* lib/rb-preferences.h: 
	* data/ui/rhythmbox-ui.xml: 
	* data/rhythmbox.schemas:
	Add fullscreen mode.

	Fixes #324075.

2005-12-14  Ryan P Skadberg  <skadz@stigmata.org>

	* configure.ac: Removed DBUS_SERVICES_DIR from top-level
        configure.  It was not working with RPM.
	* data/Makefile.am: Switched dbus directory location to use
	datadir instead of variable that was not working.

2005-12-13  James Livingston  <jrl@ids.org.au>

	patch by: Alex Lancaster <alexl@users.sourceforge.net>

	* sources/rb-podcast-source.c: (rb_podcast_source_class_init): make
	the podcast browser work again. Closes bug 323856.

2005-12-12  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-podcast-source.c (rb_podcast_source_cmd_properties_feed):
	Remove C99ism.

	* lib/rb-cut-and-paste-code.c: (eel_strdup_strftime),
	(rb_utf_friendly_time):
	* lib/rb-cut-and-paste-code.h:

	* podcast/rb-feed-podcast-properties-dialog.c:
	(rb_feed_podcast_properties_dialog_parse_time):
	* podcast/rb-podcast-properties-dialog.c:
	(rb_podcast_properties_dialog_parse_time): use rb_utf8_friendly_time
	to display the date in a more user friendly way.
	For example, if the feed was updated yesterday it will say:
	Last updated: Yesterday 10:00 AM
	instead of printing the date.

2005-12-12  William Jon McCann  <mccann@jhu.edu>

	* podcast/rb-podcast-parse.c (rb_set_channel_value) 
	(rb_set_item_value, rb_insert_item, rb_validate_channel_propert) 
	(rb_validate_item_propert, rb_podcast_parser_start_element) 
	(rb_podcast_parser_end_element, rb_podcast_parser_characters):
	Use RB style.  Check for NULL before strcmp.  No C++ comments.
	(rb_podcast_parse_load_feed): Fix double free of xmlSAXHandler.
	Don't set invalid mime type when mime type is NULL.  Fix leaks.
	(rb_podcast_parse_date): Add support for some real world
	date formats.
	(rb_podcast_parse_time, rb_podcast_parse_channel_free) 
	(rb_podcast_parse_item_free): Style and no need to check
	for NULL before g_free.

	May fix #323742

2005-12-12  James Livingston  <jrl@ids.org.au>

	* player/rb-recorder-gst.c: (rb_recorder_construct): use audioresample
	with gstreamer 0.10, which replaced audioscale.

	* shell/rb-audioscrobbler.c: (rb_audioscrobbler_finalize): use correct
	function to free the SoupSession

	* shell/rb-source-header.c: (rb_source_header_set_property),
	(rb_source_header_disclosure_toggled_cb),
	(rb_source_header_view_browser_changed_cb),
	(rb_source_header_sync_control_state):
	* sources/rb-iradio-source.c: (rb_iradio_source_class_init):
	* sources/rb-library-source.c: (rb_library_source_class_init):
	* sources/rb-source.c: (rb_source_class_init),
	(rb_source_get_status), (default_get_browser_key),
	(rb_source_get_browser_key), (rb_source_can_browse),
	(rb_source_notify_status_changed),
	(rb_source_notify_filter_changed):
	* sources/rb-source.h: seperate the enabling of browsers from the use
	of a gconf key.

2005-12-11  William Jon McCann  <mccann@jhu.edu>

	* data/glade/podcast-feed-properties.glade: 
	* data/glade/podcast-properties.glade: Use scrolled viewports
	for description text.  Fix regression of #320509.

2005-12-11  James Livingston  <jrl@ids.org.au>

	* sources/rb-auto-playlist-source.c:
	(rb_auto_playlist_source_class_init), (impl_reset_filters),
	(impl_search), (rb_auto_playlist_source_do_query),
	(rb_auto_playlist_source_set_query),
	(rb_auto_playlist_source_get_query): add support for the search box
	to automatic playlists.

	* sources/rb-library-source.c: (rb_library_source_dispose): fix minor
	memory leak.

2005-12-11  James Livingston  <jrl@ids.org.au>

	* NEWS: update NEWS

2005-12-11  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (rhythmdb_sync_library_idle),
	(rhythmdb_load), (monitor_subdirectory),
	(rhythmdb_sync_library_location):  start the library sync and
	monitoring in an idle callback.

2005-12-10  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-podcast-source.c (rb_podcast_source_class_init) 
	(rb_podcast_source_constructor): Remove unused pixbuf column.
	(rb_podcast_source_set_property, rb_podcast_source_get_property):
	Use consistent style.

	Fixes #322961.

2005-12-11  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb-property-model.c:
	(rhythmdb_property_model_init), (rhythmdb_property_model_finalize),
	(rhythmdb_property_model_insert),
	(rhythmdb_property_model_delete_prop):
	* rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_init),
	(rhythmdb_tree_finalize), (rhythmdb_tree_property_new),
	(destroy_tree_property):
	* rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_finalize),
	(rhythmdb_entry_allocate), (rhythmdb_entry_destroy): remove the use of
	GMemChunks, they are crap and deprecated. Improves startup-time and
	memory usage slightly.

2005-12-10  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-shell.c (rb_shell_cmd_about): Updated copyright.
	Added license and website info.

	* MAINTAINERS.old: Add Colin.
	* MAINTAINERS: Add James.
	* AUTHORS: Put back in order.  Add extra space between name and email
	to make it easier to read.  Add James and jonathan.

	* widgets/rb-song-info.c (rb_song_info_init) 
	(rb_song_info_constructor): Make sure close button is primary/rightmost.

2005-12-10  Jonathan Matthew  <jonathan@kaolin.hn.org>

	Play queue implementation. Closes bug 107787.

	* data/rhythmbox.schemas: add items for whether the queue should be
	displayed as a sidebar, and the height of the sourcelist if it is.

	* data/ui/rhythmbox-ui.xml: add 'add to queue' actions for library,
	playlist, and podcast popups; add 'view queue as sidebar' menu item,
	add popups for queue as source and as sidebar.  We need a separate
	popup for the sidebar view because otherwise it's hard to tell which
	of the visible entry views the action came from.

	* lib/rb-preferences.h: Add constant for queue-as-sidebar preference

	* po/POTFILES.in: Add new file

	* podcast/rb-podcast-manager.{c,h} (rb_podcast_manager_entry_downloaded):
	Add helper function for deciding if a podcast episode is available for
	playback.

	* rhythmdb/rhythmdb-query-model.{c,h}: Add ability to programmatically
	reorder entries in the query model.
	(idle_process_update): Handle new update type used to insert entries
	at a particular position in the query model.
	(rhythmdb_query_model_add_entry): Use new update type, take an 'index'
	parameter to specify the position (-1 meaning 'at the end').
	(rhythmdb_query_model_insert_into_main_list): Handle the 'index'
	parameter.
	(rhythmdb_query_model_remove_from_main_list): Abort if we're getting
	bad entry removal updates for entries that aren't in the model.
	(rhythmdb_query_model_emit_reorder): Add helper function for
	reordering rows.
	(rhythmdb_query_model_move_entry): New method for moving entries
	around in the model
	(rhythmdb_query_model_entry_added_cb),
	(rhythmdb_query_model_update_limited_entries),
	(rhythmdb_query_model_do_reorder),
	(rhythmdb_query_model_do_insert): Pass through the index parameter,
	use rhythmdb_query_model_emit_reorder where appropriate.

	* shell/rb-playlist-manager.c (rb_playlist_manager_set_property):
	Don't allow the queue to be deleted.
	(handle_playlist_entry_cb): Update for method signature change
	(rb_playlist_manager_save_playlists_async),
	(rb_playlist_manager_get_playlists): Don't save the play queue,
	don't report it as a playlist.

	* shell/rb-play-order.c: Include queue play order in the list of
	available orders.

	* shell/rb-shell.c
	(rb_shell_class_init), (rb_shell_get_property): Add new property 
	for access to the clipboard object.
	(rb_shell_constructor): Handle playing-from-queue signal to update the
	sourcelist display; add queue sidebar in to UI, listen for queue
	sidebar pane changes, and read initial settings from gconf.
	(rb_shell_playing_source_changed_cb), (rb_shell_playing_from_queue_cb): 
	Only tell the sourcelist the source has changed if the new source is 
	not the queue, as we update the sourcelist differently in that case.
	(rb_shell_set_window_title): Only use the cached window title if the
	playing state was the same when it was created.
	(rb_shell_view_queue_as_sidebar_changed_cb): Mangle UI on request.
	(rb_shell_sync_pane_visibility): Only hide the side pane if the
	sourcelist is hidden and the queue is shown as a source.
	(rb_shell_sync_smalldisplay): Disable 'view queue as sidebar' in small
	mode, since it doesn't make any sense.
	(sourcelist_visibility_changed_cb): Update the visibility of the pane
	too.
	(rb_shell_sync_paned): Update the queue sidebar pane separator too.
	(sidebar_paned_size_allocate_cb): Update sourcelist height in gconf.
	(rb_shell_jump_to_entry_with_source): Handle jump to entry when
	playing from queue shown as sidebar.

	* shell/rb-shell-clipboard.c: Use G_DEFINE_TYPE, move the
	MusicProperties action here from rb-shell-player.c, since it acts like
	cut/copy/paste etc.
	(rb_shell_clipboard_class_init), (rb_shell_clipboard_set_property),
	(rb_shell_clipboard_get_property): new property for queue source.
	Watch for selection changes in the sidebar entry view as well as the
	normal one.
	(rb_shell_clipboard_sync): Rearrange code slightly, include sidebar
	actions and MusicProperties.
	(rb_shell_clipboard_cmd_queue_delete),
	(rb_shell_clipboard_cmd_add_song_to_queue),
	(rb_shell_clipboard_cmd_song_info),
	(rb_shell_clipboard_cmd_queue_song_info): New action handlers.

	* shell/rb-shell-player.{c,h}: Track the source the current playing entry
	actually came from (could be the playing source, or the queue), add a 
	new play order object for the queue, add a property for the queue
	source, add a signal for when we switch between playing from the
	source and from the queue.
	(rb_shell_player_set_property): Handle playing directly from the
	queue so we stop once the queue is empty.  Create queue play order
	when we get the queue source.
	(rb_shell_player_get_playing_source): Return the source we're actually
	playing from.
	(rb_shell_player_get_playing_entry): Get playing entry from queue if
	that's where it is.
	(rb_shell_player_set_playing_entry): Update the queue play order if 
	that's where we're playing from.
	(rb_shell_player_play_order_update_cb): Take has next/previous for the
	queue into consideration too.
	(swap_playing_source): Helper function for switching the playing
	source.
	(rb_shell_player_do_previous): Check the queue, even though there's
	never a previous entry in it (yet), swap playing source if it changed.
	(rb_shell_player_do_next): Check the queue for entries to play before
	the normal play order, and swap playing source if it changed.
	(rb_shell_player_do_previous_or_seek): Check the queue for previous
	entries to go to as well.
	(rb_shell_player_playpause): Check the queue before the selection and
	the play order, and swap playing source if it changed.
	(rb_shell_player_cmd_song_info): Move to rb-shell-clipboard.c
	(rb_shell_player_entry_activated_cb): Use
	rb_podcast_manager_entry_downloaded, do some tapdancing to make
	activating queue entries work properly (move the activated entry to
	the start of the queue and then play it); if we were playing from the
	queue, clear its playing entry so it'll start again from the start
	after the activated entry.
	(rb_shell_player_sync_buttons): MusicProperties action handler moved
	to rb-shell-clipboard.c
	(actually_set_playing_source): Add helper for updating the playing
	source.
	(rb_shell_player_set_playing_source_internal): Emit playing-from-queue
	signal if we stop or start doing so; use actually_set_playing_source; 
	emit playing-source-changed if we actually did change source.

	* sources/rb-ipod-source.c (add_rb_playlist): Add extra parameter for
	rb_static_playlist_source_add_location.

	* sources/rb-library-source.c (rb_library_source_class_init): Allow
	enqueueing of songs from the library.

	* sources/rb-playlist-source.c (rb_playlist_source_class_init): Allow
	enqueueing of sonsg from playlists.
	(rb_playlist_source_entry_added_cb): Add extra parameter for
	rhythmdb_query_model_add_entry.
	
	* sources/rb-podcast-source.c (rb_podcast_source_class_init):
	Implement (can_)add_to_queue for this class.
	(rb_podcast_source_entry_activated): Use
	rb_podcast_manager_entry_downloaded.
	(impl_can_add_to_queue): Return TRUE if at least one entry that has
	been downloaded is selected.
	(impl_add_to_queue): Only add downloaded entries to the queue.

	* sources/rb-source.{c,h}:
	(rb_source_can_add_to_queue), (rb_source_add_to_queue): New virtual 
	methods.
	(rb_source_class_init): Don't allow enqueueing by default; implement 
	add_to_queue though.
	(default_add_to_queue): Add all selected entries to the queue.
	
	* sources/rb-sourcelist.{c,h}: Add concept of 'preempted' source (what
	would be playing if there wasn't anything in the queue).
	(set_source_playing): Helper function for manipulating tree store.
	(rb_sourcelist_set_playing_source): Use set_source_playing
	(rb_sourcelist_preempt_playing_source): Update preempted source
	pointer, manipulate source states.

	* sources/rb-static-playlist-source.{c,h}:
	(rb_static_playlist_source_add_location_internal),
	(rb_static_playlist_source_add_location),
	(rb_static_playlist_source_add_entry): Add index parameter for
	specifying where in the playlist the new entry goes.
	(rb_static_playlist_source_new_from_xml), (impl_paste),
	(rb_static_playlist_source_add_list_uri),
	(rb_static_playlist_source_add_location_swapped),
	(rb_static_playlist_source_add_locations),
	(rb_static_playlist_source_non_entry_dropped),
	(rb_static_playlist_source_row_inserted):
	Handle new index parameter everywhere it appears
	(rb_static_playlist_source_move_entry): New method for moving entries
	around in the playlist.

	* widgets/rb-entry-view.c (rb_entry_view_scroll_to_iter): Silence gtk
	warnings when trying to scroll entry views that have never been
	displayed.

	* shell/rb-play-order-queue.{c,h}: New files, implementing a linear
	play order that removes the old entry when switching to a new one.

	* sources/rb-play-queue-source.{c,h}: New files, implementing a
	static playlist subclass that has a second entry view for the sidebar
	view using alternate formatting, and that displays the number of
	entries it contains in its source list entry.

2005-12-10  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_add_entry),
	(rhythmdb_query_model_drag_data_received):
	* sources/rb-static-playlist-source.c:
	(rb_static_playlist_source_non_entry_dropped): when things are
	dropped, ignore any blank lines in the list of uris. Make the source
	responsible for adding new items to the db.

	* rhythmdb/rhythmdb.c: (queue_stat_uri): make sure we aren't passed an
	empty string.

2005-12-10  James Livingston  <jrl@ids.org.au>

	* shell/rb-shell-player.c: (rb_shell_player_set_property),
	(rb_shell_player_sync_buttons),
	(rb_shell_player_selection_changed_cb): watch for the
	"selection-changed" signal, so that the Song Properties get enabled.
	Closes bug 323694.

2005-12-10  James Livingston  <jrl@ids.org.au>

	* data/rhythmbox.schemas: fix the gconf schema

2005-12-10  James Livingston  <jrl@ids.org.au>

	* metadata/rb-metadata-gst.c: don't set the state to NULL when inside
	the decoded-pad callback with gstreamer 0.8, it causes problems.

2005-12-10  Jonathan Matthew  <jonathan@kaolin.hn.org>

	Remove more junk from RBEntryView. Closes bug 323640.

	* widgets/rb-entry-view.{c,h}:
	Remove unused private structure members, replace 'playing' boolean
	with an enum (so we know if we're paused too), and store a pointer to
	the RBShellPlayer too.	
	(rb_entry_view_class_init), (rb_entry_view_set_property),
	(rb_entry_view_get_property):
	Remove 'entry-selected' and 'changed' signals and
	'playing-entry' property, add 'selection-changed' signal and
	'shell-player' and 'playing-state' properties.
	(rb_entry_view_new): Take the shell player object reference
	(rb_entry_view_playing_cell_data_func): Get pixbuf based on state.
	(rb_entry_view_set_playing_entry), (rb_entry_view_get_playing_entry):
	No longer needed, shell player is the place to get this information.
	(rb_entry_view_busy), (rb_entry_view_get_duration),
	(rb_entry_view_get_total_size), (rb_entry_view_get_first_entry), 
	(rb_entry_view_get_next_from_entry),
	(rb_entry_view_get_previous_from_entry),
	(rb_entry_view_get_next_entry), (rb_entry_view_get_random_entry),
	(rb_entry_view_get_num_entries):
	Removed, callers should go to the query model directly.
	(rb_entry_view_playing_song_changed): Update active query model, emit
	row changed signals to update pixbufs, and scroll to the playing song
	when the playing song changes, based on a signal from the shell
	player.
	(queue_changed_sig), (rb_entry_view_row_changed_cb),
	(emit_entry_changed): Evil, removed.
	(rb_entry_view_selection_changed_cb): Remove old signals, add new
	selection-changed signal.
	(rb_entry_view_select_none), (rb_entry_view_select_entry):
	Remove selection lock.	It didn't work anyway.
	(rb_entry_view_set_playing): Replaced with rb_entry_view_set_state.
	(rb_entry_view_emit_row_changed): Simple helper function to emit
	row-changed signals.

	* widgets/Makefile.am: Entry view needs headers from the shell/
	directory.
	* widgets/rb-song-info.{c,h}: Use the query model for everything except

	scrolling the entry view to show the entry being displayed.
	(rb_song_info_class_init), (rb_song_info_get_property): Add new 
	'source' property so we can watch for query model changes.
	(rb_song_info_finalize): Unref objects, disconnect signal handlers
	(rb_song_info_set_property): Watch for query model changes, don't
	watch for entry view changes.
	(rb_song_info_new): Take source as a parameter, use the source's entry
	view unless one was specifically supplied.
	(rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb):
	Use query model rather than entry view to move between songs.
	(rb_song_info_update_buttons): Use query model.
	(rb_song_info_query_model_changed_cb): Handle query model changes.

	* shell/rb-playlist-manager.c (rb_playlist_manager_set_property):
	Only one copy of the code to enable/disable the CD burning action
	(rb_playlist_manager_playlist_entries_changed):
	Use the query model to get the number of entries, not the entry view.

	* shell/rb-play-order-random-by-age-and-rating.c,
	shell/rb-play-order-random-by-age.c,
	shell/rb-play-order-random-by-rating.c,
	shell/rb-play-order-random-equal-weights.c:
	Use G_DEFINE_TYPE

	* shell/rb-shell-player.{c,h}:
	Remove a few unused entries from the structure.
	(rb_shell_player_set_property):
	Don't use the 'changed' signal on the entry view (it's evil)
	(rb_shell_player_have_first): No longer needed
	(rb_shell_player_play): Just tell the entry view it's playing
	(rb_shell_player_playpause): Tell the entry view it's paused
	when pausing.
	(rb_shell_player_entry_view_changed_cb): No longer used, removed.
	(rb_shell_player_property_row_activated_cb):
	Get the entry to play using the query model, not the entry view.
	(rb_shell_player_sync_buttons): Update entry view state while we're
	here.
	(rb_shell_player_set_playing_source_internal): Update entry view state
	(rb_shell_player_get_playing): Ask the entry view, not the player.
	This now returns TRUE when paused.  This makes rb_shell_set_elapsed 
	and rb_shell_set_window_title work properly, so you get "(Paused)" in
	the window title and tray icon tooltip.
	(rb_shell_player_get_mm_player): Not used anywhere, so removed.

	* sources/rb-iradio-source.c, sources/rb-library-source.c,
	sources/rb-podcast-source.c, sources/rb-playlist-source.c:
	(rb_iradio_source_constructor): Pass the RBShellPlayer in to the entry
	view constructor, pass the source in to the song info widget
	constructor.

	* shell/rb-shell-clipboard.c (rb_shell_clipboard_set_property):
	Use 'selection-changed' instead of 'changed', since that's what the
	clipboard cares about.
	(rb_shell_clipboard_set_source): Don't die if source == NULL

2005-12-10  James Livingston  <jrl@ids.org.au>

	* player/rb-recorder-gst.c: (rb_recorder_get_default_drive):
	* sources/rb-playlist-source-recorder.c:
	(_nautilus_burn_drive_new_from_path): make more of the libnautilusburn
	stuff not use the deprecated API when compiled against 2.13

2005-12-10  James Livingston  <jrl@ids.org.au>

	patch by: Alex Lancaster <alexl@users.sourceforge.net>

	* widgets/rb-song-info.c: (rb_song_info_sync_entry_single): fix
	problem where the genre tag was getting set to the artist. Closes bug
	323642.

2005-12-09  William Jon McCann  <mccann@jhu.edu>

	* rhythmdb/rhythmdb-query-model.c (rhythmdb_query_model_get_next_from_entry):
	Return NULL if can't get first iter.

	Fixes #323663

2005-12-09  William Jon McCann  <mccann@jhu.edu>

	* sources/rb-iradio-source.[ch] (impl_song_properties): Use
	updated rb_station_properties_dialog_new API.
	(rb_iradio_source_add_from_playlist): New public function.
	(rb_iradio_source_first_time_changed): Use add_from_playlist.

	* shell/rb-shell.c (new_station_location_added): Handle
	iradio location added signal.
	(rb_shell_cmd_new_station): Use new iradio station dialog.

	* iradio/rb-station-properties-dialog.c (rb_station_properties_dialog_init): Use close button.  Fix typo.
	(rb_station_properties_dialog_new): Don't squeeze new
	station functionality into this class.
	(rb_station_properties_dialog_response_cb): ditto.
	(rb_station_properties_dialog_update_title): Make
	consistent with other properties dialogs.
	(rb_station_properties_dialog_location_changed_cb): Do nothing.

	* iradio/rb-new-station-dialog.[ch]: 
	* iradio/Makefile.am: Add new station dialog.

	* data/glade/station-new.glade: New file based on
	new podcast feed dialog.
	* data/glade/station-properties.glade: Updated to
	be consistent with song properties dialog.

	Fixes #323306.

2005-12-10  James Livingston  <jrl@ids.org.au>

	patch by: Ståle Lyngaas <staale@lyngaas.com>

	* shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb):
	submit songs longer than 30 minutes. Fixes bug 323639.

2005-12-09  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-shell.c (idle_save_playlist_manager): Use new
	async save function.
	(rb_shell_finalize): Remove save timeout sources.  Reorder
	steps a bit to make saving db and playlists a bit more
	failsafe in case something goes wrong later.
	(rb_shell_constructor): Keep track of save timeout source.
	(add_to_library_response_cb): Keep track of db save timeout source.

	* shell/rb-playlist-manager.c (reap_dead_playlist_threads): Use
	g_atomic.
	(rb_playlist_manager_shutdown): New function to shutdown
	threads etc. before exit.
	(rb_playlist_manager_finalize): Moved handling outstanding
	threads stuff to shutdown since if there are outstanding threads
	they hold a ref and finalize is never called.
	(rb_playlist_manager_save_thread_main): Use cond broadcast instead
	of signal which may be required for sync save.
	(rb_playlist_manager_save_playlists_async): Renamed old
	save_playlists to save_playlists_async.  Use g_atomic.
	(rb_playlist_manager_save_playlists): New function to
	perform sync saves (symmetric with RhythmDB API).
	(rb_playlist_manager_cmd_new_automatic_playlist): Style consistency.

	* rhythmdb/rhythmdb.c (rhythmdb_action_free, rhythmdb_shutdown):
	Style consistency anality.
	(rhythmdb_finalize): Remove save timeout source.
	(rhythmdb_set_property, rhythmdb_get_property) 
	(rhythmdb_process_events): More anality and keep track of
	save timeout source.
	(action_thread_main): No need to call g_thread_exit.
	(rhythmdb_entry_set_internal, rhythmdb_entry_sync_mirrored) 
	(rhythmdb_query_parse_valist, rhythmdb_query_free) 
	(write_encoded_gvalue, read_encoded_property): La la la.

	Fixes #322940.

2005-12-10  James Livingston  <jrl@ids.org.au>

	* metadata/rb-metadata-gst.c: fix 5 second pauses when encountering
	non-audio files.

2005-12-10  James Livingston  <jrl@ids.org.au>

	* Makefile.am:
	* configure.ac: remove the rpm spec files, so that automake works.
	oops

	* rhythmdb/rhythmdb.c: (rhythmdb_save_thread_main): fix a trivial
	locking issue

2005-12-09  James Livingston  <jrl@ids.org.au>

	* debian/: try to get cvs to actually remove the files

2005-12-09  James Livingston  <jrl@ids.org.au>

	* rhythmbox.spec.in:
	* debian/: remove the distro package stuff, they are *really* old, and
	downstream manage it anyway.

2005-12-09  Jonathan Matthew  <jonathan@kaolin.hn.org>

	Rework play orders to work off query models rather than 
	entry views, and track the playing entry themselves rather
	than relying on the entry view to do it.  This makes the entry
	view mostly just a widget. Closes bug 323612.

	* daapsharing/rb-daap-share.c (add_playlist_to_mlcl), (databases_cb):
	Use query model rather than entry view to get the number
	of entries in playlists.

	* rhythmdb/rhythmdb-query-model.{c.h}
	(rhythmdb_query_model_tree_path_to_entry),
	(rhythmdb_query_model_iter_to_entry),
	(rhythmdb_query_model_get_next_from_entry),
	(rhythmdb_query_model_get_previous_from_entry):
	New utility functions for iterating through query models.
	(rhythmdb_query_model_compute_status_normal):
	Have one copy of this code, not four.

	* shell/rb-play-order.{c,h}:
	Add signals for when next/previous availability changes, and
	when the playing entry is removed, and add a property for
	the current playing entry.  Add gtkdoc comments too.
	(rb_play_order_class_init): Add new property and signals.
	(rb_play_order_finalize), (rb_play_order_playing_source_changed),
	(rb_play_orer_query_model_changed_cb),
	(rb_play_order_query_model_changed): 
	Use query model rather than entry view.
	(rb_play_order_set_property), (rb_play_order_get_property):
	Handle new playing-entry property.  Call playing_entry_changed virtual
	method so subclasses can do any processing required.
	(rb_play_order_is_playing), (rb_play_order_get_playing_entry),
	(rb_play_order_set_playing_entry):
	Just use the playing-entry property.
	(rb_play_order_get_query_model), (rb_play_order_model_not_empty): 
	Utility methods for subclasses.
	(rb_play_order_entry_added_cb), (rb_play_order_entry_removed_cb):
	Update next/previous availability, check if the playing entry
	was removed.
	(default_playing_entry_removed):
	Keep the current behaviour of just stopping playback when the 
	playing entry is deleted.
	(rb_play_order_go_next), (rb_play_order_go_previous): Implement
	these for subclasses that don't have go_next/go_previous, but do
	have get_next/get_previous.
	(rb_play_order_update_have_next_previous): Emit signal if the
	availability of next/previous entries has changed.

	* shell/rb-play-order-linear.c, shell/rb-play-order-linear-loop.c,
	shell/rb-play-order-shuffle.c, shell/rb-play-order-random.c:
	Use G_DEFINE_TYPE, replace entry view iterator with query model 
	methods.
	(rb_shuffle_playing_entry_changed): If new_entry is NULL and we're
	on the last song in the shuffled order, go back to the start. This
	means if you press 'play' again you'll get the whole order again, not
	just one song.

	* shell/rb-shell-player.c:
	(rb_shell_player_get_playing_entry), (info_available_cb): Ask the 
	play order rather than the entry view.
	(rb_shell_player_set_property): Update the play order when the
	selected source changes and we aren't playing anything.
	(rb_shell_player_sync_play_order): Copy the playing entry across to
	the new play order so playback continues from the same song, and watch
	for updates to have_next/have_previous.
	(rb_shell_player_play_order_update_cb): Enable/disable the
	next/previous actions when next/previous entry availability changes.
	(rb_shell_player_jump_to_current): Just use the play order's idea of
	what's playing, not the entry view's; if not playing anything, clear
	the selection, so when a playlist ends and you hit play again, it'll
	start at the start rather than the end.
	(rb_shell_player_do_previous): restructure a bit.
	(rb_shell_player_do_next): restructure, jump to new playing entry in
	an idle handler instead of directly.
	(rb_shell_player_do_previous_or_seek): Only try to go to the previous
	song if there is one.
	(rb_shell_player_playpause): Jump to playing song, don't update the
	play order if we got the song from the selection.
	(rb_shell_player_playing_entry_deleted_cb): Not needed.
	(rb_shell_player_sync_buttons): rb_shell_player_play_order_update_cb
	looks after next/previous actions now.	Don't break if called while
	there is no selected source.
	(rb_shell_player_finalize), (rb_shell_player_set_playing_entry),
	(rb_shell_player_set_playing_source_internal),
	(rb_shell_player_error): No need to track the attempted playing entry
	any more, since the play order does that.

	* shell/rb-shell.c:
	(rb_shell_jump_to_current), (rb_shell_set_rating_impl): Use
	rb_shell_player_get_playing_entry rather than going through the entry
	view.

	* shell/rb-statusbar.c (rb_statusbar_set_property),
	(rb_statusbar_source_status_changed_cb): Listen to the source rather 
	than the entry view for status bar text changes.
	(rb_statusbar_sync_status): Ask the query model directly

	* sources/rb-source.{c}: Add query model property.
	(default_get_status): Get status text from query model, should be
	suitable for most sources.
	(rb_source_set_property): Listen for changes to the query model 
	to update the status text.
	(rb_source_row_inserted_cb), (rb_source_row_deleted_cb),
	(idle_emit_status_changed): Emit status-changed signals when query
	model changes. 

	* sources/rb-library-source.c, sources/rb-podcast-source.c:
	(impl_get_status): Not needed, RBSource does this now
	(rb_library_source_do_query) (rb_podcast_source_do_query): 
	Update RBSource's query model reference.

	* sources/rb-playlist-source.c:
	Remove query-model property, since RBSource has one now
	(impl_get_status): Not needed, RBSource does this now
	(rb_playlist_source_row_deleted): Use query model iterator helper
	function.
	(rb_playlist_source_set_query_model): Update RBSource's query model
	reference too.

	* sources/rb-iradio-source.c:
	(impl_get_status): Ask the query model directly.
	(rb_iradio_source_do_query): Update RBSource's query model reference
	when we create a new query.

	* sources/rb-sourcelist-model.c (rb_sourcelist_model_drag_data_get):
	Use query model rather than entry view.

	* widgets/rb-entry-view.{c,h}: 
	Remove playing_entry_deleted signal (now in play order).
	(entry_from_tree_path), (entry_from_tree_iter): Not needed
	 as RhythmDBQueryModel has equivalent helper functions.
	(rb_entry_view_*): Use query model helpers instead of the above two
	functions.

2005-12-09  James Livingston  <jrl@ids.org.au>

	* configure.ac:
	* player/rb-recorder-gst.c: (rb_recorder_get_default_drive),
	(rb_recorder_enabled):
	* shell/rb-removable-media-manager.c: (poll_tray_opened):
	* sources/rb-playlist-source-recorder.c:
	(_nautilus_burn_drive_new_from_path), (ask_rewrite_disc): check
	whether libnautilusburn has the _drive_unref function, and if so use
	it. Stops it complaining about deprecated API.

2005-12-09  James Livingston  <jrl@ids.org.au>

	* configure.ac: drop the minimum gstreamer version back down, it
	accidently got pushed up in the gst 0.10 patch. Closes bug 323561.

2005-12-09  James Livingston  <jrl@ids.org.au>

	* widgets/rb-song-info.c: (rb_song_info_class_init),
	(rb_song_info_show), (rb_song_info_constructor),
	(rb_song_info_finalize), (rb_song_info_backward_clicked_cb),
	(rb_song_info_forward_clicked_cb): save metadata changes when the
	Next/Previous buttons are pressed (closes bug 320952). use
	G_DEFINE_TYPE.

2005-12-09  James Livingston  <jrl@ids.org.au>

	Patch by: <jonathan@kaolin.hn.org>

	* sources/rb-iradio-source.c:
	(stations_view_drag_data_received_cb):
	* sources/rb-podcast-source.c: (impl_receive_drag): fix drag and drop
	of urls. Fixes bug 323610.

2005-12-09  James Livingston  <jrl@ids.org.au>

	 patch by Jan Schmidt <thaytan@mad.scientist.com> to add support for
	 GStreamer 0.10. DAAP support for 0.10 isn't done yet.

	* configure.ac:
	* metadata/rb-metadata-gst.c:
	* player/rb-player-gst.c: (rb_player_finalize), (rb_player_bus_cb),
	(rb_player_construct), (rb_player_new):
	* player/rb-recorder-gst.c: (rb_recorder_gst_free_pipeline),
	(rb_recorder_gst_signal_error), (pipe_message),
	(rb_recorder_new_pad_cb), (rb_recorder_construct),
	(rb_recorder_new):
	* shell/main.c: (main):
	* sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry),
	(rb_audiocd_get_cd_info): port gstreamer-using code to 0.10.

2005-12-07  Jonathan Matthew  <jonathan@kaolin.hn.org>

        * data/rhythmbox-ui.xml: replace 'smart' with 'auto' for consistency

        * shell/rb-playlist-manager.c:
          (rb_playlist_manager_set_property), (handle_playlist_entry_cb),
          (playlist_load_start_cb), (rb_playlist_manager_new_playlist)
          (rb_playlist_manager_set_automatic_playlist),
          (rb_playlist_manager_cmd_new_automatic_playlist),
          (rb_playlist_manager_cmd_edit_automatic_playlist):
           Use new playlist subclasses.
          (rb_playlist_manager_save_playlists): Only read the dirty flag
           for local playlists, minor pointless reformatting

        * sources/Makefile.am: add new files

        * sources/rb-playlist-source.c, sources/rb-playlist-source.h:
          split lots of stuff out into two
          new classes, RBStaticPlaylistSource and RBAutoPlaylistSource,
          make RBPlaylistSource abstract, add virtual methods for showing a
          popup for the entry view and saving the playlist to XML.
          Other stuff is subclass-specific, or already virtual in RBSource.

        * sources/rb-playlist-xml: Define playlist XML tags and attributes
          in one place, since they're used across three source files now

        * sources/rb-daap-source.c: (rb_daap_source_connection_cb):
          Use new static playlist class

        * sources/rb-ipod-source.c: (add_rb_playlist):
          Use new static playlist class

	* sources/rb-static-playlist-source.{c,h},
	source/rb-auto-playlist-source.{c,h}, sources/rb-playlist-xml.h: new
	files.

	* po/POTFILES.in: add new files

2005-12-07  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (emit_entry_changed), (sync_entry_changed),
	(rhythmdb_commit_internal), (rhythmdb_process_metadata_load): make
	metadata loads not attempt to write changes to disk.

2005-12-07  James Livingston  <jrl@ids.org.au>

	patch by: Alex Lancaster <alexl@users.sourceforge.net>

	* data/glade/song-info-multiple.glade:
	* widgets/rb-song-info.c: (rb_song_info_constructor),
	(rb_song_info_sync_entries_multiple): allow the year to be changed on
	multiple songs at once.

2005-12-06  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load),
	(rhythmdb_entry_set_visibility): emit signal when visibility changes.

2005-12-06  James Livingston  <jrl@ids.org.au>

	* sources/rb-sourcelist.c: (rb_sourcelist_init): ellipsise source
	names rather than adding a horizontal scroll bar.

2005-12-06  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_update_limited_entries),
	(rhythmdb_query_model_drag_data_received): remove some pointless debug
	messages

	* rhythmdb/rhythmdb.c: (rhythmdb_process_stat_event),
	(rhythmdb_process_file_deleted), (rhythmdb_entry_move_to_trash):
	always hide rather than remove DB entries, which will make RB not lose
	information when tag editing happens or people move files to trash and
	then change their mind. Also fix some races where the monitoring code
	would notice the temporary files generated by saving metadata.

2005-12-05  William Jon McCann  <mccann@jhu.edu>

	* widgets/rb-song-display-box.[ch] (rb_song_display_box_init):
	Hide internals and add tooltips.
	(rb_song_display_box_size_allocate): Hide internals.
	(sanitize_string, info_url): Copied from rb-header.
	(rb_song_display_box_sync): New public function.

	* widgets/rb-header.[ch]: Use G_DEFINE_TYPE.
	(rb_header_init): Use a separate row for the seek bar.
	(rb_header_finalize): Don't unref widgets.
	(rb_header_sync): Use rb_song_display_box_sync.
	(rb_header_set_urldata)
	(rb_header_set_show_artist_album): Hide instead of remove widgets.
	(rb_header_set_show_position_slider): Set visibility of seek bar.
	(rb_header_set_show_timeline): Set sensitivity of seek bar.
	(rb_header_get_elapsed_string): Don't shift when you first start playback.

	* shell/rb-statusbar.c (rb_statusbar_init)
	(rb_statusbar_sync_state): Remove shuffle and repeat controls.

	* shell/rb-shell.c (rb_shell_finalize): Destroy tooltips.
	(rb_shell_constructor): Remove hseparator.  Monitor
	toolbar visibility settings.  Add toolbar.  Add
	volume button to toolbar.  Add tooltips for volume button.
	(rb_shell_view_toolbar_changed_cb) 
	(rb_shell_sync_toolbar_visibility)
	(toolbar_visibility_changed_cb): Set visibility of
	toolbar.
	(rb_shell_sync_smalldisplay): Set the toolbar style to
	icons only when in small display mode.
	(rb_shell_volume_widget_changed_cb): Save volume setting.

	* shell/rb-shell-player.c (rb_shell_player_constructor):
	Remove pause and stop actions.  Make play action "important"
	so that text is visible in horizontal toolbar position.
	Remove control buttons.
	(rb_shell_player_init) 
	(rb_shell_player_sync_song_position_slider_visibility):
	Set visbibility of seek bar.
	(rb_shell_player_cmd_play, rb_shell_player_playpause):
	Make play action a toggle.
	(rb_shell_player_sync_volume): Volume control moved
	to player.
	(gconf_song_position_slider_visibility_changed):
	Set visbibility of seek bar.
	(rb_shell_player_sync_buttons):
	Set sensitivity of actions instead of buttons.
	(rb_shell_player_playing_changed_cb): Add callback
	for player notify::playing changes.

	* lib/rb-preferences.h: Add hide toolbar and seek
	bar key names.

	* data/ui/rhythmbox-ui.xml: Add hide toolbar and
	seek bar menu items.  Remove pause and stop actions
	from the control menu.  Add a toolbar.

	* data/rhythmbox.schemas: Add toolbar_hidden
	song_position_slider_hidden keys.

	Patch by: James Livingston  <jrl@ids.org.au>
	          William Jon McCann  <mccann@jhu.edu>
	Fixes #316238.

2005-12-05  James Livingston  <jrl@ids.org.au>

	* data/glade/library-prefs.glade:
	* data/rhythmbox.schemas:
	* lib/rb-preferences.h:
	* rhythmdb/rhythmdb.c: (rhythmdb_directory_change_cb),
	(rhythmdb_sync_library_location):
	* sources/rb-library-source.c: (rb_library_source_class_init),
	(rb_library_source_finalize), (rb_library_source_constructor),
	(impl_get_config_widget), (rb_library_source_preferences_sync),
	(rb_library_source_watch_toggled_cb): allow people to disable library
	monitoring, because with nothing set the file chooser button selects
	the Home folder (and hence that will get monitored).

2005-12-04  Ryan P Skadberg  <skadz@stigmata.org>

	* podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): Another
	attempt to fix problem with RSS parsing showing invalid feed types.
	Fixes bug 323153

2005-12-04  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load),
	(rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat): make
	importing a remote directory not block the UI.

2005-12-03  Dennis Cranston  <dennis_cranston@yahoo.com>

	* data/glade/podcast-feed-properties.glade:
	* data/glade/podcast-properties.glade:  HIG fix, closes bug 323131.

2005-12-04  James Livingston  <jrl@ids.org.au>

	patch by: Dennis Cranston <dennis_cranston@yahoo.com>

	* podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): change ||
	to && to fix a mistake in the earlier podcast patch.

2005-12-03  James Livingston  <jrl@ids.org.au>

	* data/glade/podcast-new.glade:
	* podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init),
	(rb_new_podcast_dialog_text_changed): remove some unused stuff.

	* player/rb-player-gst.c: (rb_player_set_replaygain): initialise the
	GValue, which stops occasional errors.

	* podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): fix a
	compile issue.

2005-12-03  James Livingston  <jrl@ids.org.au>

	patch by: Dennis Cranston <dennis_cranston@yahoo.com>

	* podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): fix a
	crasher with some podcasts feeds.

2005-12-03  James Livingston  <jrl@ids.org.au>

	* data/rhythmbox.schemas: fix the gconf schema

2005-12-03  James Livingston  <jrl@ids.org.au>

	patch by: Thomas de Grenier de Latour <degrenier@easyconnect.fr> to
	add a selection timeout to the sourcelist. This lets you hold a track
	over the playlist source, and then have the view switch so you can
	insert the track in the middle of the playlist. Closes bug 323044.

	* lib/rb-tree-dnd.c: (init_rb_tree_dnd_data), (scroll_row_timeout),
	(select_on_drag_timeout), (remove_select_on_drag_timeout),
	(rb_tree_dnd_drag_motion_cb), (rb_tree_dnd_drag_leave_cb),
	(rb_tree_dnd_add_drag_dest_support):
	* lib/rb-tree-dnd.h: Add an option for tree views to have a selection
	timeout.

	* sources/rb-sourcelist-model.c:
	(rb_sourcelist_model_set_dnd_targets): Use the selection timeout for
	the source list.

2005-12-02  Bastien Nocera  <hadess@hadess.net>

	* data/glade/audioscrobbler-prefs.glade: add a space before the web
	links, so that the text doesn't touch the button

2005-12-02  James Livingston  <jrl@ids.org.au>

	Add full support for gnome-vfs remote files. Closes bug 140355.

	* rhythmdb/rhythmdb.c: (rhythmdb_execute_stat_info_cb),
	(rhythmdb_execute_stat): perform stats asynchronously, so that waiting
	for authentication information from the user doesn't block the UI.

	(rhythmdb_entry_set_visibility): don't emit the signal twice.

	* rhythmdb/rhythmdb.c: (rhythmdb_action_free),
	(rhythmdb_event_free), (rhythmdb_shutdown), (emit_entry_changed),
	(rhythmdb_entry_allocate), (rhythmdb_directory_change_cb),
	(rhythmdb_process_stat_event), (emit_load_error_idle),
	(rhythmdb_process_metadata_load),
	(rhythmdb_process_queued_entry_set_event),
	(rhythmdb_process_file_created_or_modified),
	(rhythmdb_process_file_deleted), (rhythmdb_process_events),
	(queue_stat_uri), (add_thread_main),
	(emit_save_error_idle), (action_thread_main), (rhythmdb_add_uri),
	(rhythmdb_load), (rhythmdb_save_thread_main),
	(threadsafe_entry_set), (rhythmdb_query_internal),
	(query_thread_main), (rhythmdb_do_full_query_async_parsed),
	(rhythmdb_do_full_query_internal),
	(entry_volume_mounted_or_unmounted), (rhythmdb_volume_mounted_cb),
	(rhythmdb_volume_unmounted_cb),
	(rhythmdb_check_changed_file): trivial changes to support the
	asynchronous stats.

	* shell/main.c: (main): activate the authentication manager.

	* shell/rb-playlist-manager.c:
	(rb_playlist_manager_cmd_load_playlist),
	(rb_playlist_manager_cmd_save_playlist):
	* shell/rb-shell.c: (rb_shell_cmd_add_folder_to_library),
	(rb_shell_cmd_add_file_to_library):
	* sources/rb-playlist-source.c: (rb_playlist_source_add_location):
	* widgets/rb-druid.c: (rb_druid_browse_clicked_cb): Let people select
	remote files.

2005-12-02  James Livingston  <jrl@ids.org.au>

	* shell/rb-playlist-manager.c: makes playlist menu items use the
	elipses correctly. Fixes bug 322283.

2005-12-02  James Livingston  <jrl@ids.org.au>

	* shell/rb-playlist-manager.c:
	(rb_playlist_manager_load_playlists): fix silly mistake

2005-12-02  James Livingston  <jrl@ids.org.au>

	* metadata/rb-metadata-gst.c: (rb_metadata_gst_add_tag_data): don't
	print out metadata-write unless --debug was passed.

	* rhythmdb/rhythmdb.c: (rhythmdb_load):
	* shell/rb-playlist-manager.c:
	(rb_playlist_manager_load_playlists): block writes to disk if they are
	still being loaded.

2005-12-02  James Livingston  <jrl@ids.org.au>

	* shell/rb-shell-clipboard.c: change the move-to-trash shortcut, to
	ctrl-T, because Ctrl-D is used by "small mode"

2005-12-02  James Livingston  <jrl@ids.org.au>

	* shell/rb-shell-preferences.c:
	(rb_shell_preferences_append_view_page):
	* sources/rb-library-source.c: (impl_get_config_widget):
	* sources/rb-podcast-source.c: (impl_get_config_widget):
	* sources/rb-source.c: (rb_source_get_config_widget):
	* sources/rb-source.h: Make the preference actually work.

	* shell/rb-shell.c: (rb_shell_constructor): set up monitoring correctly
	if Rhythmbox is being run for the first time.

2005-12-02  James Livingston  <jrl@ids.org.au>

	Add support for Rhythmbox to watch your library, and automatically add
	new tracks. Fixes bug 160159.

	* data/glade/library-prefs.glade: add "library location" preference
	* data/rhythmbox.schemas: add gconf key for the library location

	* rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_event_free),
	(rhythmdb_unmonitor_directories), (rhythmdb_shutdown),
	(rhythmdb_finalize), (rhythmdb_directory_change_cb),
	(rhythmdb_monitor_uri_path), (rhythmdb_process_stat_event),
	(rhythmdb_process_metadata_load), (rhythmdb_process_events),
	(rhythmdb_load_thread_main), (rhythmdb_load),
	(monitor_subdirectory), (monitor_library_directory),
	(monitor_entry_file), (rhythmdb_sync_library_location),
	(library_location_changed_cb), (rhythmdb_check_changed_file),
	(rhythmdb_process_changed_files): Let Rhythmbox watch the directories
	specifiec in the gconf key for new additions. Also fix monitoring code
	so that it works properly, and notices deletions.

	* lib/rb-preferences.h:
	* shell/rb-audioscrobbler.c: (rb_audioscrobbler_class_init),
	(rb_audioscrobbler_init), (rb_audioscrobbler_set_property):
	* shell/rb-audioscrobbler.h:
	* shell/rb-shell-preferences.c: (rb_shell_references_append_page),
	(rb_shell_preferences_append_view_page),
	(rb_shell_preferences_new):
	* shell/rb-shell-preferences.h: rework the way audioscrobbler adds
	it's preferences pane, so that we don't need #ifdef's through
	rb-shell-preferences.

	* shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property),
	(rb_shell_select_source), (rb_shell_cmd_preferences): give the shell a
	"preferences" property, so that sources can acccess it. This is needed
	because the library location pref needs to take effect when the window
	is closed.

	* sources/rb-library-source.c:
	(rb_library_source_library_location_changed),
	(rb_library_source_dispose), (rb_library_source_finalize),
	(rb_library_source_constructor), (impl_get_config_widget),
	(rb_library_source_preferences_sync),
	(rb_library_source_process_library_location_change),
	(rb_library_source_prefs_update),
	(rb_library_source_process_library_handle_selection),
	(rb_library_source_library_location_cb): set up and control the
	"library location" preference.

	* sources/rb-audiocd-source.c:(rb_source_class_init):
	* sources/rb-source.c: (rb_source_class_init): remove some pointless
	code.

2005-12-01  William Jon McCann  <mccann@jhu.edu>

	* podcast/rb-feed-podcast-properties-dialog.c (rb_feed_podcast_properties_dialog_init) 
	(rb_feed_podcast_properties_dialog_update_title): 
	* data/glade/podcast-feed-properties.glade:
	Make the feed properties dialog consistent with the podcast
	properties dialog.

2005-12-01  William Jon McCann  <mccann@jhu.edu>

	* metadata/.cvsignore: 
	* po/.cvsignore: 
	* podcast/.cvsignore: Updated.

	* shell/main.c (main): Support DBus 0.6 flags.

2005-11-30  Bastien Nocera  <hadess@hadess.net>

	* data/ui/rhythmbox-ui.xml:
	* rhythmdb/rhythmdb.c: (rhythmdb_entry_move_to_trash_cb),
	(rhythmbd_entry_move_to_trash_set_error),
	(rhythmdb_entry_move_to_trash):
	* rhythmdb/rhythmdb.h:
	* shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync),
	(rb_shell_clipboard_cmd_delete),
	(rb_shell_clipboard_cmd_move_to_trash):
	* sources/rb-library-source.c: (rb_library_source_class_init),
	(impl_delete), (impl_move_to_trash):
	* sources/rb-playlist-source.c: (rb_playlist_source_class_init),
	(impl_delete), (impl_move_to_trash):
	* sources/rb-removable-media-source.c:
	(rb_removable_media_source_class_init):
	* sources/rb-source.c: (rb_source_class_init),
	(rb_source_can_move_to_trash), (rb_source_delete),
	(rb_source_move_to_trash):
	* sources/rb-source.h:
	Add move_to_trash member for the sources, implement move to trash for
	the library and playlists
	Add a "Move to Trash" context menu item, and menu item (Ctrl+D) to move
	local files to the trash, and deleting them from the database
	(Closes: #315389)

2005-11-30  William Jon McCann  <mccann@jhu.edu>

	* shell/rb-tray-icon.c (rb_tray_icon_class_init) 
	(rb_tray_icon_init, rb_tray_icon_finalize): 
	* shell/rb-statusbar.c (rb_statusbar_class_init) 
	(rb_statusbar_init, rb_statusbar_finalize): 
	* shell/rb-source-header.c (rb_source_header_class_init) 
	(rb_source_header_init, rb_source_header_finalize): 
	* shell/rb-shell.c (rb_shell_class_init, rb_shell_init) 
	(rb_shell_finalize): 
	* shell/rb-shell-preferences.c (rb_shell_preferences_class_init) 
	(rb_shell_preferences_init, rb_shell_preferences_finalize): 
	* shell/rb-shell-player.c (rb_shell_player_class_init) 
	(rb_shell_player_init, rb_shell_player_finalize): 
	* shell/rb-shell-clipboard.c (rb_shell_clipboard_class_init) 
	(rb_shell_clipboard_init, rb_shell_clipboard_finalize): 
	* shell/rb-playlist-manager.c (rb_playlist_manager_class_init) 
	(rb_playlist_manager_init, rb_playlist_manager_finalize): 
	* shell/rb-play-order.c (rb_play_order_class_init) 
	(rb_play_order_init, rb_play_order_finalize): 
	* shell/rb-play-order-shuffle.c (rb_shuffle_play_order_class_init) 
	(rb_shuffle_play_order_init, rb_shuffle_play_order_finalize): 
	* shell/rb-play-order-random.c (rb_random_play_order_class_init) 
	(rb_random_play_order_init, rb_random_play_order_finalize): 
	* shell/rb-history.c (rb_history_class_init, rb_history_init) 
	(rb_history_finalize): 
	* shell/rb-commander.c (rb_commander_class_init) 
	(rb_commander_init, rb_commander_finalize): 
	* shell/rb-audioscrobbler.c (rb_audioscrobbler_class_init) 
	(rb_audioscrobbler_init, rb_audioscrobbler_finalize): 
	* remote/bonobo/rb-remote-bonobo.c (rb_remote_bonobo_class_init) 
	(rb_remote_bonobo_init, rb_remote_bonobo_finalize): 
	* podcast/rb-podcast-properties-dialog.c (rb_podcast_properties_dialog_class_init) 
	(rb_podcast_properties_dialog_init) 
	(rb_podcast_properties_dialog_finalize): 
	* podcast/rb-podcast-manager.c (rb_podcast_manager_class_init) 
	(rb_podcast_manager_init, rb_podcast_manager_finalize): 
	* podcast/rb-new-podcast-dialog.c (rb_new_podcast_dialog_class_init) 
	(rb_new_podcast_dialog_init, rb_new_podcast_dialog_finalize): 
	* podcast/rb-feed-podcast-properties-dialog.c (rb_feed_podcast_properties_dialog_class_init) 
	(rb_feed_podcast_properties_dialog_init) 
	(rb_feed_podcast_properties_dialog_finalize): 
	* metadata/rb-metadata-gst.c (rb_metadata_class_init) 
	(rb_metadata_init, rb_metadata_finalize): 
	* iradio/rb-station-properties-dialog.c (rb_station_properties_dialog_class_init) 
	(rb_station_properties_dialog_init) 
	(rb_station_properties_dialog_finalize): 
	* daapsharing/rb-daap-share.c (rb_daap_share_class_init) 
	(rb_daap_share_init, rb_daap_share_dispose): 

	Use g_type_class_add_private in all classes. Closes bug 313688.
	
2005-11-30  James Livingston  <jrl@ids.org.au>

	patch by: William Jon McCann <mccann@jhu.edu> to use
	g_type_class_add_private in all classes. Closes bug 313688.

	* lib/rb-thread.c: (rb_thread_class_init), (rb_thread_init),
	(rb_thread_finalize):
	* player/rb-player-gst.c: (rb_player_class_init), (rb_player_init),
	(rb_player_finalize):
	* rhythmdb/rhythmdb-property-model.c:
	(rhythmdb_property_model_class_init),
	(rhythmdb_property_model_init), (rhythmdb_property_model_finalize):
	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_class_init), (rhythmdb_query_model_init),
	(rhythmdb_query_model_finalize):
	* rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_class_init),
	(rhythmdb_tree_init), (rhythmdb_tree_finalize):
	* rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_init),
	(rhythmdb_finalize):
	* sources/rb-daap-source.c: (rb_daap_source_class_init),
	(rb_daap_source_init), (rb_daap_source_dispose):
	* sources/rb-iradio-source.c: (rb_iradio_source_class_init),
	(rb_iradio_source_init), (rb_iradio_source_finalize):
	* sources/rb-library-source.c: (rb_library_source_class_init),
	(rb_library_source_init), (rb_library_source_finalize):
	* sources/rb-playlist-source.c: (rb_playlist_source_class_init),
	(rb_playlist_source_init), (rb_playlist_source_dispose):
	* sources/rb-podcast-source.c: (rb_podcast_source_class_init),
	(rb_podcast_source_init), (rb_podcast_source_finalize):
	* sources/rb-sourcelist-model.c: (rb_sourcelist_model_class_init),
	(rb_sourcelist_model_init), (rb_sourcelist_model_finalize):
	* sources/rb-sourcelist-model.h:
	* sources/rb-sourcelist.c: (rb_sourcelist_class_init),
	(rb_sourcelist_init), (rb_sourcelist_finalize):
	* sources/rb-sourcelist.h:
	* widgets/disclosure-widget.c: (finalize), (class_init), (init):
	* widgets/rb-cell-renderer-rating.c:
	(rb_cell_renderer_rating_init),
	(rb_cell_renderer_rating_class_init),
	(rb_cell_renderer_rating_finalize):
	* widgets/rb-druid.c: (rb_druid_class_init), (rb_druid_init),
	(rb_druid_finalize):
	* widgets/rb-entry-view.c: (rb_entry_view_class_init),
	(rb_entry_view_init), (rb_entry_view_finalize):
	* widgets/rb-header.c: (rb_header_class_init), (rb_header_init),
	(rb_header_finalize):
	* widgets/rb-load-failure-dialog.c:
	(rb_load_failure_dialog_class_init), (rb_load_failure_dialog_init),
	(rb_load_failure_dialog_finalize):
	* widgets/rb-property-view.c: (rb_property_view_class_init),
	(rb_property_view_init), (rb_property_view_finalize):
	* widgets/rb-rating.c: (rb_rating_class_init), (rb_rating_init),
	(rb_rating_finalize):
	* widgets/rb-search-entry.c: (rb_search_entry_class_init),
	(rb_search_entry_init), (rb_search_entry_finalize):
	* widgets/rb-simple-view.c: (rb_simple_view_class_init),
	(rb_simple_view_init), (rb_simple_view_finalize):
	* widgets/rb-song-display-box.c: (rb_song_display_box_class_init),
	(rb_song_display_box_init), (rb_song_display_box_finalize):
	* widgets/rb-song-info.c: (rb_song_info_class_init),
	(rb_song_info_init), (rb_song_info_finalize):
	* widgets/rb-tree-model-sort.c: (rb_tree_model_sort_class_init),
	(rb_tree_model_sort_init), (rb_tree_model_sort_finalize):

2005-11-30  James Livingston  <jrl@ids.org.au>

	* iradio/rb-station-properties-dialog.c:
	(rb_station_properties_dialog_init),
	(rb_station_properties_dialog_new):
	* lib/rb-glade-helpers.c: (rb_glade_boldify_label):
	* lib/rb-glade-helpers.h:
	* podcast/rb-feed-podcast-properties-dialog.c:
	(rb_feed_podcast_properties_dialog_init),
	(rb_feed_podcast_properties_dialog_new):
	* podcast/rb-podcast-properties-dialog.c:
	(rb_podcast_properties_dialog_init),
	(rb_podcast_properties_dialog_new):
	* shell/rb-audioscrobbler.c: (rb_audioscrobbler_get_config_widget):
	* shell/rb-shell-preferences.c: (rb_shell_preferences_init):
	* sources/rb-library-source.c: (impl_get_config_widget):
	* sources/rb-playlist-source-recorder.c:
	(rb_playlist_source_recorder_init):
	* widgets/rb-song-info.c: (rb_song_info_construct_single),
	(rb_song_info_constructor): create a single rb_glade_boldify_label()
	in rb-glade-helpers, rather than having eight implementation
	throughout the code.

2005-11-30  James Livingston  <jrl@ids.org.au>

	* lib/rb-util.c: (rb_search_fold), (rb_make_duration_string):
	* lib/rb-util.h:
	* widgets/rb-entry-view.c: (rb_entry_view_duration_cell_data_func):
	move the duration->string function into rb-utils, as it gets used in a
	few places.

	patch by: William Jon McCann <mccann@jhu.edu>

	* data/glade/podcast-properties.glade:
	* podcast/rb-podcast-properties-dialog.c:
	(rb_podcast_properties_dialog_init),
	(rb_podcast_properties_dialog_update),
	(rb_podcast_properties_dialog_update_title),
	(rb_podcast_properties_dialog_update_feed),
	(rb_podcast_properties_dialog_update_duration),
	(rb_podcast_properties_dialog_update_bitrate): Make the podcast
	info dialog look more like the song info dialog. Use the same "Feed"
	value that is displayed in the treeview (ie. the album field), displays
	the duration, uses units in the bitrate field, and sort the fields in
	the same order.

2005-11-29  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb-marshal.list:
	* rhythmdb/rhythmdb.h:
	* rhythmdb/rhythmdb.c: (rhythmdb_class_init),
	(emit_load_error_idle), (rhythmdb_process_metadata_load),
	(entry_to_rb_metadata), (emit_save_error_idle),
	(action_thread_main): emit error signal when metadata write fails.

	* shell/rb-shell.c: (rb_shell_constructor),
	(rb_shell_db_load_error_cb), (rb_shell_db_save_error_cb): process the
	"metadata save" error and display it to the user.

2005-11-29  James Livingston  <jrl@ids.org.au>

	* data/ui/rhythmbox-ui.xml:
	* sources/rb-podcast-source.c:
	(rb_podcast_source_songs_show_popup_cb),
	(rb_podcast_source_cmd_download_post),
	(rb_podcast_source_cmd_cancel_download): split download and cancel
	download commands. Replace usage of "Post" with "Esisode". Fixes bug
	321653.

2005-11-18  William Jon McCann  <mccann@jhu.edu>

	* widgets/rb-dialog.c (rb_error_dialog): Don't use a
	title on alert dialogs per the HIG.

	* sources/rb-playlist-source-recorder.c (burn_cd): Don't use
	the term Burn.
	(free_song_list): Routine to free song list.
	(rb_playlist_source_recorder_finalize): Use free_song_list.
	(rb_playlist_source_recorder_add_from_model): Return FALSE
	if unable to add all songs.  Check that duration of all
	songs doesn't exceed MAX_PLAYLIST_DURATION which is set to 100 min.
	Fixes #321753.

	* sources/rb-playlist-source-recorder.c (check_media_length)
	(rb_playlist_source_recorder_start): Only check the duration
	and current media if the playlist length is longer than a
	standard CD (74 min).  Otherwise, just let the Recorder do the
	check.
	* player/rb-recorder-gst.c (rb_recorder_init): Get a default
	drive at init.
	(rb_recorder_set_device): Don't leak drives.
	(rb_recorder_get_media_length): Use drive that was already set.
	(rb_recorder_burn): Let the recorder handle checking media type/size.
	Fixes bug 321754.

2005-11-29  James Livingston  <jrl@ids.org.au>

	* rhythmdb/rhythmdb-query-model.c:
	(rhythmdb_query_model_set_sort_order):
	* rhythmdb/rhythmdb-query-model.h: add a function to resort the query,
	emitting the tree-model "resorted" signal.

	* widgets/rb-entry-view.c: (rb_entry_view_class_init),
	(rb_entry_view_finalize), (rb_entry_view_set_property),
	(rb_entry_view_constructor), (rb_entry_view_resort_model):
	* widgets/rb-entry-view.h: add a function to resort the entry view,
	using the above function.

	* sources/rb-iradio-source.c:
	(rb_iradio_source_songs_view_sort_order_changed_cb):
	* sources/rb-library-source.c: (rb_library_source_finalize),
	(songs_view_sort_order_changed_cb), (rb_library_source_do_query):
	* sources/rb-playlist-source.c:
	(rb_playlist_source_songs_sort_order_changed_cb):
	* sources/rb-podcast-source.c:
	(rb_podcast_source_posts_view_sort_order_changed_cb),
	(rb_podcast_source_do_query): use the above function instead of
	re-creating the query model. This makes changing the sorting an order
	of magnitude faster, as it uses a single resorted signal rather than
	deleting and re-adding everything (which emits 2N signals). Closes bug
	315389.

2005-11-29  James Livingston  <jrl@ids.org.au>

	patch by: Jonathan Matthew <jonathan@kaolin.hn.org> to disable column
	autosizing, which results in large speedups. Closes bug 312122.

	* po/ja.po: change the date format, so that it is a constant width

	* sources/rb-playlist-source.c: (rb_playlist_source_constructor):
	* sources/rb-podcast-source.c: (rb_podcast_source_constructor):
	* widgets/rb-entry-view.c: (rb_entry_view_append_column),
	(rb_entry_view_constructor): make columns use fixed widths,
	disable column autosizing, and enable fixed-height mode.

	* widgets/rb-entry-view.c: (rb_entry_view_set_fixed_column_width),
	(rb_entry_view_get_time_date_column_sample):
	* widgets/rb-entry-view.h: functions to set a column to a fixed width,
	and get the canonical date format for the locale.