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

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

       * data/Makefile.am: pass make distcheck. patch from Christopher Aillon
       <[email protected]>, fixed bug 329517.

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

       Patch from Alex Lancaster  <[email protected]>

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

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

       patch by: Jonathan Matthew  <[email protected]>

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

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

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

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

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

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

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

       * shell/rb-shell-clipboard.c:
       Use GTK_STOCK_REMOVE icon for the remove action in
       the play queue too.

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

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

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

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

       * NEWS: update NEWS

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

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

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

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

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

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

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

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

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

       Patch from Alex Lancaster  <[email protected]>

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

       Patch by: Alex Lancaster  <[email protected]>

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

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

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

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

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

       patch by: Christope Fergeau  <[email protected]>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

       patch by: Jonathan Matthew  <[email protected]>

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

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

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

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

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

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

2006-01-16  William Jon McCann  <[email protected]>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

       patch from Jaap A. Haitsma <[email protected]>
       Fixes #319913

2006-01-07  William Jon McCann  <[email protected]>
       * 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  <[email protected]>

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

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

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

2006-01-06  Ryan P Skadberg  <[email protected]>

       patch by: Jonathan Matthew

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

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

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

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

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

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

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

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

       Patch from: Alex Lancaster  <[email protected]> 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  <[email protected]>

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

       * configure.ac: Fix check for libnotify.

2006-01-05  William Jon McCann  <[email protected]>

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

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

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

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

       patch by: Lubomir Marinov <[email protected]>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2005-12-19  James Livingston  <[email protected]>

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

2005-12-19  James Livingston  <[email protected]>
       * 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  <[email protected]>

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

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

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

       Patch from Jonathan Matthew <[email protected]>
       Fixes #324157

2005-12-14  William Jon McCann  <[email protected]>

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

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

       patch by: Alex Lancaster <[email protected]>

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

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

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

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

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

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

       * NEWS: update NEWS

2005-12-11  James Livingston  <[email protected]>

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

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

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

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

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

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

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

       * data/rhythmbox.schemas: fix the gconf schema

2005-12-10  James Livingston  <[email protected]>

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

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

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

       patch by: Alex Lancaster <[email protected]>

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

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

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

       patch by: StÃ¥le Lyngaas <[email protected]>

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

2005-12-09  William Jon McCann  <[email protected]>

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

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

2005-12-10  James Livingston  <[email protected]>

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

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

2005-12-09  James Livingston  <[email protected]>

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

2005-12-09  Jonathan Matthew  <[email protected]>

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

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

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

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

       Patch by: <[email protected]>

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

        patch by Jan Schmidt <[email protected]> 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  <[email protected]>

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

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

       patch by: Alex Lancaster <[email protected]>

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

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

2005-12-06  James Livingston  <[email protected]>

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

2005-12-06  James Livingston  <[email protected]>

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

       * 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  <[email protected]>
                 William Jon McCann  <[email protected]>
       Fixes #316238.

2005-12-05  James Livingston  <[email protected]>

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

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

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

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

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

       patch by: Dennis Cranston <[email protected]>

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

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

       patch by: Dennis Cranston <[email protected]>

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

2005-12-03  James Livingston  <[email protected]>

       * data/rhythmbox.schemas: fix the gconf schema

2005-12-03  James Livingston  <[email protected]>

       patch by: Thomas de Grenier de Latour <[email protected]> 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  <[email protected]>

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

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

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

2005-12-02  James Livingston  <[email protected]>

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

2005-12-02  James Livingston  <[email protected]>

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

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

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

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

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

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

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

2005-11-30  Bastien Nocera  <[email protected]>

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

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

       patch by: William Jon McCann <[email protected]> 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  <[email protected]>

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

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

       * data/glade/podcast-properties.glade:
       * podcast/rb-podcast-properties-dialog.c:
       (rb_podcast_properties_dialog_init),
       (rb_podcast_properties_dialog_update),
       (rb_podcast_properties_dialog_update_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  <[email protected]>

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

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

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

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

       patch by: Jonathan Matthew <[email protected]> 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.