2006-02-02 James Livingston * NEWS: update NEWS * configure.ac: bump version to 0.9.3 * data/Makefile.am: pass make distcheck. patch from Christopher Aillon , fixed bug 329517. 2006-02-02 Jonathan Matthew Patch from Alex Lancaster * widgets/rb-song-info.c: (rb_song_info_constructor): Make year and disc number fields non-editable if tag editing is disabled. Fixes #329463. 2006-02-01 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_entry_removed_cb): handle hidden entries correctly. Fixes bug 327061. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_changed_cb): emit change notification of the HIDDEN property when an entry is removed for being hidden. * rhythmdb/rhythmdb-query-model.h: * sources/rb-iradio-source.c: (rb_iradio_source_do_query): * widgets/rb-entry-view.c: (rb_entry_view_set_property): remove query models's "connected" property. Whatever it was needed for seems to have gone. 2006-02-01 James Livingston patch by: Jonathan Matthew * shell/rb-shell-player.c: (_idle_unblock_signal_cb), (rb_shell_player_playing_changed_cb): block the signal to prevent re-entrancy. Fixes bug 329329 and fixes the first click of the play button pausing. 2006-02-01 James Livingston * metadata/rb-metadata-gst.c: a few gstreamer 0.10 fixes. Tag editing /should/ now work, if the neccessary plugins get ported. 2006-01-30 James Livingston * daapsharing/rb-daap-connection.c: (entry_set_string_prop): Set string properties to "Unknown" is the string is empty. Kind of fixes bug 327495. * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): only do the gettext calls once, rather than once per time the function is used. This stops us making tens of thousands of gettext calls on startup, which reduces the cpu-time of startup by 10-20% 2006-01-29 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): (rhythmdb_add_uri): * metadata/rb-metadata-gst.c: emit RB_METADATA_ERROR_NOT_AUDIO_IGNORE for files containing known video streams. 2006-01-29 Jonathan Matthew * INSTALL.quick: Random unupdates; gst-plugins-good isn't actually required. 2006-01-29 Jonathan Matthew * INSTALL.quick: More random updates * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_set_property), (rhythmdb_query_model_get_property), (rhythmdb_query_model_finalize), (rhythmdb_query_model_new): Remove user sort data handling, take a property ID and a reverse flag instead. (rhythmdb_query_model_insert_into_main_list), (rhythmdb_query_model_insert_into_limited_list), (rhythmdb_query_model_do_reorder), (_reverse_sorting_func): Handle reverse sorting by calling _reverse_sorting_func, which calls the real sort function and reverses the result. (rhythmdb_query_model_set_sort_order): Allow this to be called to set the initial sort order for limited queries, and handle reverse sorting when reordering. (rhythmdb_query_model_location_sort_func), (rhythmdb_query_model_album_sort_func), (rhythmdb_query_model_artist_sort_func), (rhythmdb_query_model_genre_sort_func), (rhythmdb_query_model_track_sort_func), (rhythmdb_query_model_double_ceiling_sort_func), (rhythmdb_query_model_ulong_sort_func), (rhythmdb_query_model_date_sort_func), (rhythmdb_query_model_string_sort_func): Sort functions moved from rb-entry-view.c. * rhythmdb/rhythmdb-query-model.h: Add the sort functions, and update the changed functions. * widgets/rb-entry-view.c: (rb_entry_view_set_property): Just call _resort_model when the query model is set, since it does all the same things. (rb_entry_view_append_column): Rework bits so the rating column doesn't have to be so much of a special case. (rb_entry_view_append_column_custom): Take a property ID to sort on, rather than arbitrary custom data. (rb_entry_view_resort_model): Query model does all the reverse sort handling now. * widgets/rb-entry-view.h: Update _append_column_custom. * sources/rb-play-queue-source.c: (rb_play_queue_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_post_date_cell_sort_func), (rb_podcast_source_post_status_cell_sort_func), (rb_podcast_source_post_feed_cell_sort_func): Updates required by all the other changes. * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_drag_data_get): Sort the query results on the selected property, so they arrive in the expected order. All the other changes were made to make this possible. Fixes bug #327494. 2006-01-29 Jonathan Matthew * shell/rb-shell-clipboard.c: Use GTK_STOCK_REMOVE icon for the remove action in the play queue too. 2006-01-29 Jonathan Matthew * sources/rb-play-queue-source.c: (rb_play_queue_source_constructor), (rb_play_queue_source_update_count): Don't make the 'queued songs' column clickable, and add the queued song count to the column title. 2006-01-29 James Livingston * configure.ac: remove "experimental" marking from DAAP, and enable by default if the dependencies are found. 2006-01-29 James Livingston * NEWS: update NEWS 2006-01-29 James Livingston patch by: William Jon McCann * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_feed_title_cell_data_func): Revert the change of property used for the feed list. Fixes problem with feeds with no episodes not showing up. 2006-01-29 Jonathan Matthew * shell/rb-play-order-random-by-age-and-rating.c: (rb_random_by_age_and_rating_get_entry_weight): Fix compile errors, bug #328978. 2006-01-28 Jonathan Matthew * INSTALL.quick, README: Random updates * README.lirc: Add notes on controlling Rhythmbox with LIRC 2006-01-28 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): change the default rating back to 0 (from 2.5, which was needed for autorating). * shell/rb-play-order-random-by-age-and-rating.c: (rb_random_by_age_and_rating_get_entry_weight): * shell/rb-play-order-random-by-rating.c: (rb_random_by_rating_get_entry_weight): Treat ratings of 0 the same as 2.5 for the purposes of weighting entries. 2006-01-28 James Livingston * lib/rb-cut-and-paste-code.c: (rb_utf_friendly_time): Add some translator comments, to make it clearer what the "friendly time" formatting strings mean. 2006-01-27 Jonathan Matthew * daapsharing/rb-daap-connection.c: (http_response_handler): Fix the sense of the overflow check so it'll accept valid input. 2006-01-27 James Livingston Patch from Alex Lancaster * lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb): correctly escape paths when using rb_uri_handle_recursively. Closes bug 139646. 2006-01-27 Jonathan Matthew Patch by: Alex Lancaster * shell/rb-shell-player.c: (rb_shell_player_sync_with_source): Don't include the artist field in the window title if it's blank. Fixes #325973. 2006-01-26 William Jon McCann * shell/rb-shell-clipboard.c (rb_shell_clipboard_actions): Use stock delete icon for move to trash and stock remove for remove menu item. 2006-01-26 Jonathan Matthew * shell/rb-shell.c: (rb_shell_constructor), (idle_handle_load_complete): Don't start the playlist save timeout until we've loaded the playlists, otherwise we'll write an empty playlist file if startup takes too long. 2006-01-25 William Jon McCann * shell/rb-shell.c: Make view toolbar toggle use shift+ctrl+t. Fixes #327585. 2006-01-25 James Livingston patch by: Christope Fergeau * daapsharing/rb-daap-connection.c: (g_zalloc_wrapper), (http_response_handler): fix a potential buffer overflow issue. 2006-01-25 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_append_column): make the Year column wide enough to display "Unknown" 2006-01-25 James Livingston * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_post_status_cell_data_func): make the episode status wording better. Part of bug 321607. 2006-01-25 James Livingston * data/ui/rhythmbox-ui.xml: separate the Move to Trash menu item from others with a separator. * shell/rb-shell-clipboard.c: Rename "Delete" to "Remove" and use the stock Delete icon. 2006-01-24 Jonathan Matthew * data/rhythmbox.desktop.in: Add GTK to categories. Fixes #328047. 2006-01-23 James Livingston * widgets/eggtrayicon.c: (egg_tray_icon_notify): support libnotify 0.3.2. Fixed bug 328158. 2006-01-23 James Livingston * metadata/rb-metadata-gst.c: (gst_date_gulong_transform), (gulong_gst_date_transform), (rb_metadata_class_init): * metadata/rb-metadata.h: fix support for Year metadata in gst 0.10. 2006-01-23 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_finalize), (rhythmdb_commit_internal), (rhythmdb_entry_insert), (record_entry_change): Protect added_entries and changed_entries with a mutex, so it doesn't crash on startup on SMT/SMP machines. 2006-01-23 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_class_init): disable the browser for audio CDs. 2006-01-22 James Livingston * daapsharing/rb-daap-mdns.c: (get_avahi_client): don't pass NEVER_FAIL as it causes the daemon-not-running error to never be reported, resulting in bug 319438 re-occurring. 2006-01-22 Jonathan Matthew * sources/rb-podcast-source.c: (rb_podcast_source_cmd_update_all): Just call the podcast manager's update method. Unbreaks the 'update all feeds' command. 2006-01-22 Jonathan Matthew * sources/Makefile.am: Fix typo. Fixes bug #327970. 2006-01-21 Jonathan Matthew * configure.ac: Don't disable DAAP with gstreamer 0.10 * daapsharing/rb-daap-src.c: (_do_init), (rb_daap_src_base_init), (rb_daap_src_class_init), (rb_daap_src_init), (rb_daap_src_finalize), (rb_daap_src_set_property), (rb_daap_src_get_property), (rb_daap_src_write), (rb_daap_src_read), (_expect_char), (rb_daap_src_read_chunk_size), (_split_uri), (rb_daap_src_open): * daapsharing/rb-daap-src.h: Mostly fix seeking, handle chunked transfer encoding, and port to gstreamer 0.10. * player/rb-player-gst.c: * sources/rb-daap-source.c: (start_browsing), (stop_browsing): Remove rb_daap_src_initialize and rb_daap_src_shutdown. Fixes bugs #326738 and #318852, and brings #309609 one step closer to being fixed. 2006-01-21 James Livingston patch by: Alex Lancaster to add support for Year metadata in DAAP sources. Fixes bug 327700. * daapsharing/rb-daap-connection.c: (handle_song_listing): 2006-01-20 William Jon McCann * widgets/rb-simple-view.c (rb_simple_view_button_press_cb): Use enum values instead of magic numbers. * widgets/rb-property-view.c (rb_property_view_cell_data_func): Add number of songs that match each property title into the cell. Also show the number of properties that match in the All entry. (rb_property_view_constructor): Use enum values instead of magic numbers. * sources/rb-podcast-source.c (rb_podcast_source_constructor): Query podcast posts instead of feeds for browser. Use post SUBTITLE which is the location for the property view. (rb_podcast_source_feeds_show_popup_cb): Remove unused code. (construct_query_from_selection) (rb_podcast_source_cmd_delete_feed) (rb_podcast_source_cmd_properties_feed) (rb_podcast_source_cmd_update_feed): Use variable to make it clear what the selection data represents. (rb_podcast_source_feed_title_cell_data_func): Add number of posts that belong to each feed in the browser. * rhythmdb/rhythmdb-property-model.c (rhythmdb_property_model_set_property): Allow using SUBTITLE property. (rhythmdb_property_model_delete_prop): Decrement the refcount for the All entry. (rhythmdb_property_model_get_column_type): Use column enum values instead of magic numbers. Add NUMBER column. (rhythmdb_property_model_get_value): Use enum. Add NUMBER column that represents the refcount for the title of that property. (rhythmdb_property_model_perform_sync): Don't fake up a title for All here. Fixes #327372. 2006-01-21 James Livingston Make Rhythmbox start faster by not blocking the UI while database initialisation and loading occurs. Closes bug 323348. * rhythmdb/rhythmdb.c: (rhythmdb_init): make the library monitoring start 10 seconds later instead of immediately. (rhythmdb_commit_internal), (rhythmdb_commit): make rhythmdb_commit safe to call from any thread. (rhythmdb_process_metadata_load), (rhythmdb_process_events), (rhythmdb_load_thread_main), (rhythmdb_load): load the db in a thread, so the UI doesn't block. 2006-01-18 James Livingston * sources/rb-static-playlist-source.c: (rb_static_playlist_source_do_query): fix dumb mistake I made that would cause crashes. Oops. fixes bug 327477. 2006-01-17 William Jon McCann * player/rb-recorder-gst.c (rb_recorder_gst_free_pipeline): Set GST element state to NULL before unreffing. Fixes #327422. 2006-01-18 James Livingston * sources/rb-static-playlist-source.c: (rb_static_playlist_source_do_query): don't filter on the SONG entry type, since the playlists can contain non-song entries. Fixes bug 327448. * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init): disable the search box for the queue. 2006-01-18 James Livingston * sources/rb-podcast-source.c: (rb_podcast_source_constructor): allow dragging of podcast episodes. Fixed bug 327450. 2006-01-18 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_received): fix possible assertion when dragging to an emoty playlist. 2006-01-18 Jonathan Matthew * sources/rb-playlist-source-recorder.c: Make the fake NAUTILUS_BURN_CHECK_VERSION macro work properly. 2006-01-17 James Livingston patch by: Jonathan Matthew * sources/rb-audiocd-source.c: don't assert if MusicBrainz returns a different number of tracks than exist on the cd, since that happens with audio+data hybrid CDs. Part of bug 325046. 2006-01-17 Jonathan Matthew * sources/rb-playlist-source.c: (rb_playlist_source_constructor): Remove useless call to gtk_tree_view_column_set_clickable(). * widgets/rb-entry-view.c: (rb_entry_view_append_column_custom): Don't store sort data for columns if the sort function is NULL, so only sortable columns will be in the column sort data map. (rb_entry_view_set_columns_clickable): Only make columns we can sort on clickable. (rb_entry_view_constructor): The 'playing icon' column is never clickable, so don't connect a signal handler for it. Fixes bug 326811. 2006-01-17 James Livingston * metadata/rb-metadata-gst.c: don't set properties with gst 0.10 which are 0.8 only. Fix element detection. * rhythmdb/rhythmdb.c: (action_thread_main): reload old metadata is saving the new metadata failed 2006-01-17 James Livingston * shell/rb-shell-player.c: (do_next_idle), (rb_shell_player_cmd_previous), (rb_shell_player_cmd_next), (eos_cb): release audio device when a playlist finishes. Fixes bug 323679. 2006-01-17 James Livingston * rhythmdb/rhythmdb.c: (set_props_from_metadata), (queue_stat_uri): canonicalise the URIs when things are added via library watching. 2006-01-16 William Jon McCann * sources/rb-playlist-source-recorder.c (update_speed_combobox): Off by one error in default speed index. 2006-01-16 William Jon McCann * sources/rb-playlist-source-recorder.c (get_write_speeds) (update_speed_combobox, update_speed_combobox): Get a list of the actually supported write speeds from n-c-b >= 2.13.90. Otherwise use fallback list. 2006-01-17 James Livingston * lib/rb-file-helpers.c: (rb_uri_handle_recursively_cb), (rb_uri_handle_recursively): use gnome_vfs_directory_visit, so we don't get stuck on recursive symlinks. Fixed bug 125452. 2006-01-17 James Livingston Add support for mass-storage audio players. Players are detected via either the HAL "audio_player" capability, or a ".is_audio_player" file in the root of the volume. Closes bug 325602. * configure.ac: separate using HAL from ipod support. * lib/rb-file-helpers.c: (rb_uri_is_local): * lib/rb-file-helpers.h: add function to determine whether a URI is local. * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal), (rhythmdb_process_stat_event), (rhythmdb_process_metadata_load), (rhythmdb_process_file_created_or_modified), (queue_stat_uri), (queue_stat_uri_tad), (add_thread_main), (action_thread_main), (rhythmdb_add_uri), (rhythmdb_add_uri_with_type): * rhythmdb/rhythmdb.h: add rhythmdb_add_uri_with_type, so that directories can be scanned for files to add as non-SONG entries. * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): add checking for mass-storage players. * sources/rb-audiocd-source.c: (rb_audiocd_source_new): * sources/rb-ipod-source.c: (rb_ipod_source_new), (hal_udi_is_ipod): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init), (rb_removable_media_source_constructor): move some things up to the RBRemovableMediaSource, rather than making subclasses do it. * sources/Makefile.am: * sources/rb-generic-player-source.c: * sources/rb-generic-player-source.h: add mass-storage player source. 2006-01-16 James Livingston patch by: William Jon McCann * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_base_row_deleted): fix build issue from last commit. 2006-01-16 James Livingston Patch to add support for "chained queries" and putting hidden tracks in query models. Use chained queries to add search box support to normal playlists, and to make hidden entries not get lost. Fixes bug 319278. * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_set_property), (rhythmdb_query_model_get_property): (rhythmdb_query_model_finalize): add "show-hidden" and "base-model" properties. (rhythmdb_query_model_set_connected), (rhythmdb_query_model_has_pending_changes), (rhythmdb_query_model_entry_added_cb), (rhythmdb_query_model_entry_changed_cb), (idle_process_update), (rhythmdb_query_model_add_entry), (rhythmdb_query_model_do_insert), (rhythmdb_query_model_remove_entry), (rhythmdb_query_model_drag_data_received), (rhythmdb_query_model_base_row_inserted), (rhythmdb_query_model_base_row_deleted), (rhythmdb_query_model_base_non_entry_dropped), (rhythmdb_query_model_base_complete), (rhythmdb_query_model_base_entry_prop_changed), (rhythmdb_query_model_base_rows_reordered), (rhythmdb_query_model_row_drop_possible): handle base-model by chaining events and operations where necessary. Make hidden entries not get added only if "show-hidden" is false. (rhythmdb_query_model_child_index_to_base_index), (rhythmdb_query_model_base_index_to_child_index), (rhythmdb_query_model_get_entry_index): utility functions for handling base-model entries. (rhythmdb_query_model_reapply_query): apply the current query, and remove entries that don't match it. * rhythmdb/rhythmdb-tree.c: (do_query_recurse): small optimisation for empty queries. * sources/rb-source.c: (rb_source_set_property): move the unref later to fix problem if it is the last reference. * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_init), (rb_static_playlist_source_finalize), (rb_static_playlist_source_constructor), (impl_reset_filters), (impl_search), (rb_static_playlist_source_do_query), (impl_save_contents_to_xml), (rb_static_playlist_source_add_location_internal): use a chained query model to filter out hidden entries and implement the search box. 2006-01-15 James Livingston * sources/rb-playlist-source.c: (rb_playlist_source_new_from_xml): fix the default playlist loading, which I broke earlier. 2006-01-15 James Livingston patch by: William Jon McCann * sources/rb-playlist-source.c: (playlist_iter_func): use totem-plparser's new API version macros to check for API changes. Handle the recent API change. 2006-01-15 Jonathan Matthew * sources/rb-library-source.c: (impl_get_config_widget): Ref the preferences object to match the unref in the finalizer. Fixes some portion of #323505. 2006-01-15 Jonathan Matthew * shell/rb-audioscrobbler.c: (rb_audioscrobbler_parse_response): * shell/rb-removable-media-manager.c: (begin_cd_drive_monitor): Fix valgrind warnings about accessing uninitialised values. 2006-01-14 William Jon McCann * sources/rb-playlist-source-recorder.c: Make build on 2.12 again. 2006-01-14 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_sync_buttons): Use RB_ENTRY_VIEW_NOT_PLAYING state when there's no playing entry. Stops the 'now playing' icon from being displayed after the play order finishes. 2006-01-14 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_db_entry_deleted_cb): Don't try to delete files we never downloaded, and cancel downloads for deleted episodes. Fixes bug #326862. * sources/rb-podcast-source.c: (rb_podcast_source_cmd_delete_feed): Don't complain about NULL data items in the selection list. 2006-01-14 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_set_property): Make the name ofthe queue non editable. Fixes bug 326918. 2006-01-13 William Jon McCann * sources/rb-playlist-source-recorder.c (burn_cd) (ask_rewrite_disc): Don't use our locally copied functions if we have at least 2.13. 2006-01-13 William Jon McCann * podcast/rb-podcast-manager.c (rb_podcast_manager_class_init): Correct the argument type for the process_error signal. May fix bug #323154. 2006-01-13 James Livingston save the queue to disk when exiting, and reload on startup. Fixed bug 326677 . * shell/rb-playlist-manager.c: (rb_playlist_manager_load_playlists), (rb_playlist_manager_save_playlists_async): don't disable saving of the queue * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property): add the queue source as a gobject property. * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init), (impl_save_contents_to_xml): add code to save the queue to xml * sources/rb-playlist-source.c: (rb_playlist_source_new_from_xml): load the queue from xml. * sources/rb-playlist-xml.h: * sources/rb-static-playlist-source.c: (rb_static_playlist_source_load_from_xml), (rb_static_playlist_source_new_from_xml): * sources/rb-static-playlist-source.h: split the playlist xml loading from the static playlist creation function, so the queue can use it. 2006-01-13 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_entry_set_visibility): remove assertion that should be there. Fixes bug 325923. * rhythmdb/rhythmdb.c: (rhythmdb_entry_new): make rhythmdb_entry_new return NULL if the entry already exists (e.g. as another type). * daapsharing/rb-daap-connection.c: (handle_song_listing): * podcast/rb-podcast-manager.c: (rb_podcast_manager_add_post), (rb_podcast_manager_insert_feed): * sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry): * sources/rb-ipod-source.c: (load_ipod_db_idle_cb): * sources/rb-iradio-source.c: (rb_iradio_source_add_station): check for the above function returning NULL. 2006-01-12 James Livingston * doc/reference/Makefile.am: make gtk-docs build again when libnotify is enabled. Fixes bug 326673. * doc/reference/tmpl/eggtrayicon.sgml: * doc/reference/tmpl/rb-daap-src.sgml: * doc/reference/tmpl/rb-source.sgml: * doc/reference/tmpl/rb-statusbar.sgml: * doc/reference/tmpl/rb-tree-model-sort.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb.sgml: updated gtk-docs 2006-01-11 James Livingston * widgets/rb-song-info.c: (rb_song_info_constructor), (rb_song_info_new), (rb_song_info_populate_dialog_multiple), (rb_song_info_populate_dialog): fill in the fields if all tracks have the same value for properties. From bug 326054. 2006-01-11 James Livingston * sources/rb-source.h: * shell/rb-shell-player.c: (rb_shell_player_set_playing_entry), (rb_shell_player_set_playing_source_internal), (eos_cb): add support for RB_SOURCE_EOF_STOP, so that playback will stop after every entry. * sources/rb-podcast-source.c: (impl_handle_eos): make the podcast source use this. Closes bug 322077. 2006-01-10 William Jon McCann * widgets/eggtrayicon.c (egg_tray_icon_notify): In order for set_icon_data_from_pixbuf() to be effective, one must not set an icon in _new(). 2006-01-10 William Jon McCann * widgets/eggtrayicon.c (egg_tray_icon_init) (egg_tray_icon_unrealize, egg_tray_icon_cancel_message) (egg_tray_icon_notify): Add support for libnotify 0.3. * widgets/Makefile.am: Add missing NOTIFY_CLAGS. * configure.ac: Determine the version of libnotify. Fixes #326333. 2006-01-08 James Livingston * daapsharing/rb-daap-share.c: (add_entry_to_mlcl): fix crasher when trying to share a track with unknown length. 2006-01-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_init): Sync volume on startup so it doesn't default to 0. 2006-01-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_get_property), (rb_shell_player_open_location), (info_available_cb): Add the iradio streamed song title as a property, and emit a signal when it changes. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_player_elapsed_changed_cb), (rb_shell_player_stream_song_changed_cb): Issue a notification when the iradio song title changes. Fixes #326166. 2006-01-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_init), (rb_shell_player_finalize), (rb_shell_player_set_property), (rb_shell_player_get_property), (rb_shell_player_sync_volume), (rb_shell_player_toggle_mute), (rb_shell_player_set_volume), (rb_shell_player_set_volume_relative), (rb_shell_player_get_volume), (rb_shell_player_set_mute), (rb_shell_player_get_mute): * shell/rb-shell-player.h: * shell/rb-shell-player.xml: Store volume as a property on RBShellPlayer, rather than in gconf. Add some methods to control volume via dbus. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_volume_widget_changed_cb), (rb_shell_player_volume_changed_cb): * shell/rb-tray-icon.c: (rb_tray_icon_scroll_event_cb): Update volume using player properties rather than gconf, and sync the volume with the volume control button when something else changes it. Fixes #323840. 2006-01-07 William Jon McCann * shell/rb-tray-icon.c (tray_popup_position_menu): Make tray menu align with edge of panel. patch from Jaap A. Haitsma Fixes #319913 2006-01-07 William Jon McCann * shell/rb-shell.c (sourcelist_drag_received_cb): * shell/rb-playlist-manager.[ch] (create_name_from_selection_data) (rb_playlist_manager_new_playlist_from_selection_data): Make a reasonable default name for playlists created from dropped data. Fixes #326116. 2006-01-07 William Jon McCann * sources/rb-playlist-source-recorder.c (update_speed_combobox): Use new gconf key. (burn_cd): Always eject CD after burning. Too many drives get confused if we don't. Save the speed used if the burn was completed successfully. * data/rhythmbox.schemas: Use our own speed instead of from n-c-b. The situation is that the default_speed for n-c-b is most likely the maximum write speed. This is fine for n-c-b because it has burn-proof turned on. We can't turn it on for audio CDs because the results are poor in quality. So we'll just pick a default that should work for everyone (4). 2006-01-07 Jonathan Matthew * shell/rb-playlist-manager.c: (reap_dead_playlist_threads), (rb_playlist_manager_shutdown): Fix more compile errors with GCC 4.1. 2006-01-07 Jonathan Matthew * shell/rb-shell.c: (rb_shell_add_uri): Fix compile error introduced in my previous commit. Fixes #326037. 2006-01-06 Ryan P Skadberg patch by: Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_event_free): Fixed compile error on Fedora Rawhide. 2006-01-07 Jonathan Matthew * shell/rb-shell.c: (rb_shell_guess_type_for_uri): Assume HTTP URLs ending with .xml or .rss are podcasts. (rb_shell_add_uri): Handle adding podcast feeds. * sources/rb-podcast-source.c: (rb_podcast_source_new): Register as the source for podcast feeds. 2006-01-07 Jonathan Matthew * shell/rb-audioscrobbler.c: (rb_audioscrobbler_set_property): * shell/rb-shell-preferences.c: (rb_shell_preferences_append_page), (rb_shell_preferences_append_view_page): * shell/rb-shell-preferences.h: Fix typo in function name. Fixes #325992. 2006-01-07 Jonathan Matthew * shell/rb-audioscrobbler.c: Add '+' to the list of characters to URI-encode, so it doesn't get interpreted as a space. 2006-01-06 Jonathan Matthew * daapsharing/rb-daap-connection.c: (rb_daap_connection_logout), (rb_daap_connection_do_something): Don't crash if the DAAP server goes away while we're still trying to log in. 2006-01-06 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_query_preprocess): fix Year criteria. 2006-01-06 James Livingston Patch from: Alex Lancaster to add support for Year to automatic playlists. Closes bug 321341. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property): * rhythmdb/rhythmdb-tree.c: (evaluate_conjunctive_subquery): * rhythmdb/rhythmdb.c: (rhythmdb_query_parse_valist), (rhythmdb_query_free), (rhythmdb_query_serialize), (rhythmdb_query_deserialize), (rhythmdb_query_internal), (rhythmdb_query_get_type), (rhythmdb_query_preprocess): * rhythmdb/rhythmdb.h: Support special RHYTHMDB_QUERY_PROP_YEAR_{EQUALS,GREATER,LESS} database search for year in date. * widgets/rb-query-creator-properties.c: (yearCriteriaCreateWidget), (yearCriteriaSetWidgetData), (yearCriteriaGetWidgetData): add Year to the list of criteria options. 2006-01-06 James Livingston * configure.ac: make the playback backend selection work correctly * daapsharing/rb-daap-src.c: (rb_daap_src_get_type), (rb_daap_src_class_init), (rb_daap_src_dispose), (rb_daap_src_change_state), (rb_daap_src_initialize): * daapsharing/rb-daap-src.h: revent the G_DEFINE_TYPE change, since it doesn't work for this class. Fixes bug 325934 2006-01-06 Jonathan Matthew * configure.ac: Fix check for libnotify. 2006-01-05 William Jon McCann * sources/rb-playlist-source.c (xml_get_and_trim_names): Get name element for current lang and remove all name nodes from the XML tree. (get_playlist_name_from_xml): Try to get name element or fall back to name attribute. (rb_playlist_source_new_from_xml): Get name before turning over to sub-types for parsing so that we can remove name elements from the tree if necessary. * shell/rb-playlist-manager.c (rb_playlist_manager_load_playlists): Load default playlists file if per user playlists are not found. * data/playlists.xml.in: * data/Makefile.am: * data/.cvsignore: Add default set of playlists. Fixes #323004 2006-01-05 Jonathan Matthew * shell/main.c: (main): Don't use the dbus interface to show the window if we're also going to use the bonobo interface. 2006-01-05 Jonathan Matthew * shell/rb-history.c: (rb_history_set_playing): Allow setting the playing song to NULL. (rb_history_append), (rb_history_delete_link): Don't randomly change position when entries are added and removed, it confuses play orders. * shell/rb-play-order-random.c: (rb_random_play_order_class_init): Random orders always have a next entry if the model is not empty. (rb_random_play_order_get_next), (rb_random_play_order_go_next): Go back to the start of the history if we're past its end. * shell/rb-play-order-shuffle.c: (rb_shuffle_play_order_get_next), (rb_shuffle_play_order_go_next): Go back to the start of the history if we're past its end. (rb_shuffle_sync_history_with_query_model): Go back to the start of the history if the current entry is removed. * shell/rb-play-order.c: (rb_play_order_entry_added_cb), (rb_play_order_entry_deleted_cb): Only update have next/previous for the play order when the query has finished. This wasted about 10% CPU while the query was running. Fixes #324641: assertion failures when the query model was changed such that the playing song was no longer present. 2006-01-05 James Livingston * daapsharing/rb-daap-src.c: (rb_daap_src_class_init), (rb_daap_src_dispose), (rb_daap_src_change_state): * rhythmdb/rhythmdb-gda.c: (rhythmdb_gda_class_init), (rhythmdb_gda_finalize): * widgets/rb-cell-renderer-pixbuf.c: * widgets/rb-cell-renderer-rating.c: (rb_cell_renderer_rating_class_init), (rb_cell_renderer_rating_finalize): * widgets/rb-druid.c: (rb_druid_class_init), (rb_druid_finalize): * widgets/rb-load-failure-dialog.c: (rb_load_failure_dialog_class_init), (rb_load_failure_dialog_finalize): * widgets/rb-rating.c: (rb_rating_class_init), (rb_rating_finalize): * widgets/rb-search-entry.c: (rb_search_entry_class_init), (rb_search_entry_finalize): use G_DEFINE_TYPE * widgets/rb-tree-model-sort.{c.h}: remove obsolete files from cvs. 2006-01-05 James Livingston patch by: Lubomir Marinov * shell/rb-commander.{c,h}: remove obsolete files, that weren't put in the tarball. * shell/rb-history.c: (rb_history_class_init), (rb_history_finalize): * shell/rb-playlist-manager.c: (rb_playlist_manager_class_init), (rb_playlist_manager_finalize): * shell/rb-remote.c: (rb_remote_finalize), (rb_remote_class_init), (rb_remote_init): use G_DEFINE_TYPE. 2006-01-05 James Livingston * configure.ac: don't try to use libnotify >= 0.3.0 because of API changes 2006-01-04 William Jon McCann * shell/rb-playlist-manager.c (rb_playlist_manager_set_property): Disable burn action when source is not a playlist. Fixes #323578. 2006-01-04 Jonathan Matthew Optionally use libnotify to display song change and other notifications, and provide an option to disable notifications. Fixes #320355 and innumerable informal complaints. * widgets/eggtrayicon.c: (egg_tray_icon_init), (egg_tray_icon_unrealize), (egg_tray_icon_send_message), (egg_tray_icon_cancel_message), (egg_tray_icon_hide_notify_cb), (egg_tray_icon_notify): * widgets/eggtrayicon.h: * configure.ac: * shell/Makefile.am: Optionally use libnotify instead of eggnotificationbubble. * shell/rb-tray-icon.c: (rb_tray_icon_class_init), (rb_tray_icon_constructor), (rb_tray_icon_show_notifications_changed_cb), (rb_tray_icon_hide_notify_cb) (rb_tray_icon_cancel_notify), (rb_tray_icon_notify): Add 'show notifications' action handling, use G_DEFINE_TYPE, move EggNotificationBubble pointer to eggtrayicon. * data/ui/rhythmbox-ui.xml: Add 'show notifications' menu item * lib/rb-preferences.h: Add #define for /ui/show_notifications key * data/rhythmbox.schemas: Add schema for /ui/show_notification key 2006-01-04 William Jon McCann * sources/rb-playlist-source-recorder.c (rb_playlist_source_recorder_init): Request a minimum size for the progress bar so that the window doesn't shrink too small. 2006-01-03 Jonathan Matthew * daapsharing/rb-daap-share.c: (databases_cb): (db_entry_added_cb), (add_db_entry), (db_entry_deleted_cb): Don't track the number of songs currently present, track the next ID to assign. Fixes potential ID conflict problems. (db_entry_changed_cb), (rb_daap_share_start_publish), (rb_daap_share_stop_publish): Watch for db entry changes, and when songs become non-hidden after a successful stat, add them to the mapping tables. Fixes #325178, making the DAAP server usable again. 2006-01-03 Jonathan Matthew * shell/rb-statusbar.c: (rb_statusbar_class_init), (rb_statusbar_construct), (rb_statusbar_init), (rb_statusbar_finalize), (rb_statusbar_set_property), (rb_statusbar_get_property), (rb_statusbar_new), (rb_statusbar_sync_with_source): * shell/rb-statusbar.h: Remove visibility management code, stop watching for play order changes (status bar doesn't show play order any more), remove unused 'player' property, and some other minor cleanup. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_view_statusbar_changed_cb), (rb_shell_sync_smalldisplay), (rb_shell_sync_statusbar_visibility): Manage status bar visibility here rather than in the status bar itself, so we can take small mode into account. Fixes #323589. 2006-01-03 Jonathan Matthew * widgets/eggnotificationbubble.c: (draw_bubble): Move the bubble off the visible screen while setting up bevels. Fixes #316810. 2006-01-01 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_init), (rb_shell_player_finalize): Remove unused structure members. (do_next_idle), (rb_shell_player_error): Only queue one call to do_next_idle, so we don't skip tracks if we get two errors for the same song. Fixes #325216. 2006-01-01 Jonathan Matthew * data/glade/podcast-feed-properties.glade, podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_init), (rb_feed_podcast_properties_dialog_update): Add 'last episode' field to the podcast feed properties dialog. * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_update_last_update), (rb_feed_podcast_properties_dialog_update_last_episode), podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): Use last-seen property for the time at which we last updated the feed, and post-time for the time the last episode was published. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): Handle upgrades from 0.9.2; if no post-time was found for a podcast feed, use last-seen (which in 0.9.2 was the last post time). Fixes #323894. 2006-01-01 James Livingston patch by: Gunnar Steinn Magnusson * sources/rb-ipod-source.c: (load_ipod_db_idle_cb): read playcount and year from the ipod database. 2006-01-01 Jonathan Matthew * metadata/rb-metadata-gst.c: (rb_metadata_gst_new_decoded_pad_cb): Only set the pipeline back to NULL state for really uninteresting files. This was causing deadlocks with various video files. Fixes #324912. 2006-01-01 Jonathan Matthew * data/glade/song-info-multiple.glade: Add disc number label and field. * widgets/rb-song-info.c: (rb_song_info_construct_single), (rb_song_info_constructor): Handle widgets for disc number. (rb_song_info_sync_entries_multiple): Set disc number property on selected entries. Fixes #324777. 2006-01-01 Jonathan Matthew * iradio/rb-new-station-dialog.c: (rb_new_station_dialog_init): * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init): Activate the default widget when enter is pressed in these dialogs. Fixes #322887. 2006-01-01 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_get_playing_path): Use rb_shell_player_get_playing_entry, so we get the right entry when playing from the queue. Fixes #325379. 2005-12-31 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): Include podcast posts with no publication date. Typically seen in static collections rather than feeds. 2005-12-31 Jonathan Matthew * shell/main.c: (main): Don't attempt to handle bonobo-only arguments if we couldn't get a bonobo client proxy. 2005-12-31 Jonathan Matthew * daapsharing/rb-daap-mdns.c: (rb_daap_mdns_publish), (rb_daap_mdns_publish_cancel): Clear our_service_name so we don't abort if daap sharing is disabled and then re-enabled. 2005-12-29 William Jon McCann * podcast/rb-podcast-parse.c (rb_insert_item): Add debugging. (rb_podcast_parser_start_element): Support itunes:image. Add debugging. Don't abuse the break statement. Warn if state is unknown. (rb_podcast_parser_end_element): Add debugging. Warn if state is unknown. (rb_podcast_parser_characters): Warn if state is unknown. Fixes parsing of feeds that use the itunes:image element. Fixes #324632 2005-12-28 Jonathan Matthew * sources/rb-iradio-source.c: (handle_playlist_entry_cb), (stations_view_drag_data_received_cb): Remove calls to rhythmdb_entry_lookup_by_location, as rb_iradio_source_add_station does that anyway. (rb_iradio_source_add_from_playlist): If the URL doesn't point to a playlist, add it as the stream URL instead. 2005-12-27 Jonathan Matthew * rhythmdb/rhythmdb.h: (rhythmdb_entry_get_string): just return NULL for RHYTHMDB_PROP_SEARCH_MATCH, so we don't get an assertion failure. Fixes #325025. 2005-12-24 Jonathan Matthew * shell/main.c: (load_uri_args): don't compile this in if neither bonobo nor dbus are enabled. Fixes #324890. 2005-12-22 Jonathan Matthew * sources/rb-audiocd-source.c: (rb_audiocd_scan_songs): Always return the pipeline to NULL state, so it closes the device. 2005-12-20 James Livingston * metadata/rb-metadata-gst.c: make the state changes time-out again, so that it doesn't spend forever getting stuck on the one file. Don't report errors for failing to change state on known non-audio files. * player/rb-player-gst.c: (rb_player_construct): let playbin deal with audio sink creation if we can't create the gconfaudiosink. This lets it work with only gst-plugins-base on 0.10. 2005-12-20 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_sort_order): Fix a tiny memory leak in the previous commit. 2005-12-20 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_sort_order): Don't try to emit reorders for empty query models, since it doesn't achieve anything and it results in a few warnings. 2005-12-19 William Jon McCann * sources/rb-playlist-source-recorder.c (rb_playlist_source_recorder_init): Make burn dialog non-resizable so that the expander can shrink. Fixes #308951. 2005-12-19 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_entry_insert): really refuse to add entries without a location, rather than those with one. 2005-12-19 James Livingston * shell/rb-shell-player.c: (rb_shell_player_cmd_play): don't crash if the error isn't set. 2005-12-19 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): don't add entries without a location. Fixes bug 324290. * rhythmdb/rhythmdb.c: (rhythmdb_entry_insert): refuse to add entries without a location. * shell/main.c: (main): don't crash if dbus initialisation fails without setting an error 2005-12-19 Jonathan Matthew * sources/rb-library-source.c: Remove unused structure members (rb_library_source_do_query): Actually use the cached 'all' query. Fixes #324025. 2005-12-16 Jonathan Matthew * sources/rb-audiocd-source.c (rb_audiocd_get_cd_info): tab (rb_audiocd_scan_songs): Return boolean success/failure, fix error messages a bit. (metadata_cb): Don't crash if we have no tracks (rb_audiocd_load_songs): Don't try to read metadata if we can't read the CD. Fixes #324222. 2005-12-15 William Jon McCann * shell/rb-shell.c (rb_shell_sync_fullscreen) (rb_shell_view_fullscreen_changed_cb): Fix sense of fullscreen gconf key. Patch from Jonathan Matthew Fixes #324157 2005-12-14 William Jon McCann * shell/rb-shell.c (rb_shell_constructor, rb_shell_finalize) (rb_shell_view_fullscreen_changed_cb, rb_shell_sync_fullscreen) (fullscreen_changed_cb): * lib/rb-preferences.h: * data/ui/rhythmbox-ui.xml: * data/rhythmbox.schemas: Add fullscreen mode. Fixes #324075. 2005-12-14 Ryan P Skadberg * configure.ac: Removed DBUS_SERVICES_DIR from top-level configure. It was not working with RPM. * data/Makefile.am: Switched dbus directory location to use datadir instead of variable that was not working. 2005-12-13 James Livingston patch by: Alex Lancaster * sources/rb-podcast-source.c: (rb_podcast_source_class_init): make the podcast browser work again. Closes bug 323856. 2005-12-12 William Jon McCann * sources/rb-podcast-source.c (rb_podcast_source_cmd_properties_feed): Remove C99ism. * lib/rb-cut-and-paste-code.c: (eel_strdup_strftime), (rb_utf_friendly_time): * lib/rb-cut-and-paste-code.h: * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_parse_time): * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_parse_time): use rb_utf8_friendly_time to display the date in a more user friendly way. For example, if the feed was updated yesterday it will say: Last updated: Yesterday 10:00 AM instead of printing the date. 2005-12-12 William Jon McCann * podcast/rb-podcast-parse.c (rb_set_channel_value) (rb_set_item_value, rb_insert_item, rb_validate_channel_propert) (rb_validate_item_propert, rb_podcast_parser_start_element) (rb_podcast_parser_end_element, rb_podcast_parser_characters): Use RB style. Check for NULL before strcmp. No C++ comments. (rb_podcast_parse_load_feed): Fix double free of xmlSAXHandler. Don't set invalid mime type when mime type is NULL. Fix leaks. (rb_podcast_parse_date): Add support for some real world date formats. (rb_podcast_parse_time, rb_podcast_parse_channel_free) (rb_podcast_parse_item_free): Style and no need to check for NULL before g_free. May fix #323742 2005-12-12 James Livingston * player/rb-recorder-gst.c: (rb_recorder_construct): use audioresample with gstreamer 0.10, which replaced audioscale. * shell/rb-audioscrobbler.c: (rb_audioscrobbler_finalize): use correct function to free the SoupSession * shell/rb-source-header.c: (rb_source_header_set_property), (rb_source_header_disclosure_toggled_cb), (rb_source_header_view_browser_changed_cb), (rb_source_header_sync_control_state): * sources/rb-iradio-source.c: (rb_iradio_source_class_init): * sources/rb-library-source.c: (rb_library_source_class_init): * sources/rb-source.c: (rb_source_class_init), (rb_source_get_status), (default_get_browser_key), (rb_source_get_browser_key), (rb_source_can_browse), (rb_source_notify_status_changed), (rb_source_notify_filter_changed): * sources/rb-source.h: seperate the enabling of browsers from the use of a gconf key. 2005-12-11 William Jon McCann * data/glade/podcast-feed-properties.glade: * data/glade/podcast-properties.glade: Use scrolled viewports for description text. Fix regression of #320509. 2005-12-11 James Livingston * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (impl_reset_filters), (impl_search), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_get_query): add support for the search box to automatic playlists. * sources/rb-library-source.c: (rb_library_source_dispose): fix minor memory leak. 2005-12-11 James Livingston * NEWS: update NEWS 2005-12-11 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_sync_library_idle), (rhythmdb_load), (monitor_subdirectory), (rhythmdb_sync_library_location): start the library sync and monitoring in an idle callback. 2005-12-10 William Jon McCann * sources/rb-podcast-source.c (rb_podcast_source_class_init) (rb_podcast_source_constructor): Remove unused pixbuf column. (rb_podcast_source_set_property, rb_podcast_source_get_property): Use consistent style. Fixes #322961. 2005-12-11 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_init), (rhythmdb_property_model_finalize), (rhythmdb_property_model_insert), (rhythmdb_property_model_delete_prop): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_init), (rhythmdb_tree_finalize), (rhythmdb_tree_property_new), (destroy_tree_property): * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_finalize), (rhythmdb_entry_allocate), (rhythmdb_entry_destroy): remove the use of GMemChunks, they are crap and deprecated. Improves startup-time and memory usage slightly. 2005-12-10 William Jon McCann * shell/rb-shell.c (rb_shell_cmd_about): Updated copyright. Added license and website info. * MAINTAINERS.old: Add Colin. * MAINTAINERS: Add James. * AUTHORS: Put back in order. Add extra space between name and email to make it easier to read. Add James and jonathan. * widgets/rb-song-info.c (rb_song_info_init) (rb_song_info_constructor): Make sure close button is primary/rightmost. 2005-12-10 Jonathan Matthew Play queue implementation. Closes bug 107787. * data/rhythmbox.schemas: add items for whether the queue should be displayed as a sidebar, and the height of the sourcelist if it is. * data/ui/rhythmbox-ui.xml: add 'add to queue' actions for library, playlist, and podcast popups; add 'view queue as sidebar' menu item, add popups for queue as source and as sidebar. We need a separate popup for the sidebar view because otherwise it's hard to tell which of the visible entry views the action came from. * lib/rb-preferences.h: Add constant for queue-as-sidebar preference * po/POTFILES.in: Add new file * podcast/rb-podcast-manager.{c,h} (rb_podcast_manager_entry_downloaded): Add helper function for deciding if a podcast episode is available for playback. * rhythmdb/rhythmdb-query-model.{c,h}: Add ability to programmatically reorder entries in the query model. (idle_process_update): Handle new update type used to insert entries at a particular position in the query model. (rhythmdb_query_model_add_entry): Use new update type, take an 'index' parameter to specify the position (-1 meaning 'at the end'). (rhythmdb_query_model_insert_into_main_list): Handle the 'index' parameter. (rhythmdb_query_model_remove_from_main_list): Abort if we're getting bad entry removal updates for entries that aren't in the model. (rhythmdb_query_model_emit_reorder): Add helper function for reordering rows. (rhythmdb_query_model_move_entry): New method for moving entries around in the model (rhythmdb_query_model_entry_added_cb), (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_do_reorder), (rhythmdb_query_model_do_insert): Pass through the index parameter, use rhythmdb_query_model_emit_reorder where appropriate. * shell/rb-playlist-manager.c (rb_playlist_manager_set_property): Don't allow the queue to be deleted. (handle_playlist_entry_cb): Update for method signature change (rb_playlist_manager_save_playlists_async), (rb_playlist_manager_get_playlists): Don't save the play queue, don't report it as a playlist. * shell/rb-play-order.c: Include queue play order in the list of available orders. * shell/rb-shell.c (rb_shell_class_init), (rb_shell_get_property): Add new property for access to the clipboard object. (rb_shell_constructor): Handle playing-from-queue signal to update the sourcelist display; add queue sidebar in to UI, listen for queue sidebar pane changes, and read initial settings from gconf. (rb_shell_playing_source_changed_cb), (rb_shell_playing_from_queue_cb): Only tell the sourcelist the source has changed if the new source is not the queue, as we update the sourcelist differently in that case. (rb_shell_set_window_title): Only use the cached window title if the playing state was the same when it was created. (rb_shell_view_queue_as_sidebar_changed_cb): Mangle UI on request. (rb_shell_sync_pane_visibility): Only hide the side pane if the sourcelist is hidden and the queue is shown as a source. (rb_shell_sync_smalldisplay): Disable 'view queue as sidebar' in small mode, since it doesn't make any sense. (sourcelist_visibility_changed_cb): Update the visibility of the pane too. (rb_shell_sync_paned): Update the queue sidebar pane separator too. (sidebar_paned_size_allocate_cb): Update sourcelist height in gconf. (rb_shell_jump_to_entry_with_source): Handle jump to entry when playing from queue shown as sidebar. * shell/rb-shell-clipboard.c: Use G_DEFINE_TYPE, move the MusicProperties action here from rb-shell-player.c, since it acts like cut/copy/paste etc. (rb_shell_clipboard_class_init), (rb_shell_clipboard_set_property), (rb_shell_clipboard_get_property): new property for queue source. Watch for selection changes in the sidebar entry view as well as the normal one. (rb_shell_clipboard_sync): Rearrange code slightly, include sidebar actions and MusicProperties. (rb_shell_clipboard_cmd_queue_delete), (rb_shell_clipboard_cmd_add_song_to_queue), (rb_shell_clipboard_cmd_song_info), (rb_shell_clipboard_cmd_queue_song_info): New action handlers. * shell/rb-shell-player.{c,h}: Track the source the current playing entry actually came from (could be the playing source, or the queue), add a new play order object for the queue, add a property for the queue source, add a signal for when we switch between playing from the source and from the queue. (rb_shell_player_set_property): Handle playing directly from the queue so we stop once the queue is empty. Create queue play order when we get the queue source. (rb_shell_player_get_playing_source): Return the source we're actually playing from. (rb_shell_player_get_playing_entry): Get playing entry from queue if that's where it is. (rb_shell_player_set_playing_entry): Update the queue play order if that's where we're playing from. (rb_shell_player_play_order_update_cb): Take has next/previous for the queue into consideration too. (swap_playing_source): Helper function for switching the playing source. (rb_shell_player_do_previous): Check the queue, even though there's never a previous entry in it (yet), swap playing source if it changed. (rb_shell_player_do_next): Check the queue for entries to play before the normal play order, and swap playing source if it changed. (rb_shell_player_do_previous_or_seek): Check the queue for previous entries to go to as well. (rb_shell_player_playpause): Check the queue before the selection and the play order, and swap playing source if it changed. (rb_shell_player_cmd_song_info): Move to rb-shell-clipboard.c (rb_shell_player_entry_activated_cb): Use rb_podcast_manager_entry_downloaded, do some tapdancing to make activating queue entries work properly (move the activated entry to the start of the queue and then play it); if we were playing from the queue, clear its playing entry so it'll start again from the start after the activated entry. (rb_shell_player_sync_buttons): MusicProperties action handler moved to rb-shell-clipboard.c (actually_set_playing_source): Add helper for updating the playing source. (rb_shell_player_set_playing_source_internal): Emit playing-from-queue signal if we stop or start doing so; use actually_set_playing_source; emit playing-source-changed if we actually did change source. * sources/rb-ipod-source.c (add_rb_playlist): Add extra parameter for rb_static_playlist_source_add_location. * sources/rb-library-source.c (rb_library_source_class_init): Allow enqueueing of songs from the library. * sources/rb-playlist-source.c (rb_playlist_source_class_init): Allow enqueueing of sonsg from playlists. (rb_playlist_source_entry_added_cb): Add extra parameter for rhythmdb_query_model_add_entry. * sources/rb-podcast-source.c (rb_podcast_source_class_init): Implement (can_)add_to_queue for this class. (rb_podcast_source_entry_activated): Use rb_podcast_manager_entry_downloaded. (impl_can_add_to_queue): Return TRUE if at least one entry that has been downloaded is selected. (impl_add_to_queue): Only add downloaded entries to the queue. * sources/rb-source.{c,h}: (rb_source_can_add_to_queue), (rb_source_add_to_queue): New virtual methods. (rb_source_class_init): Don't allow enqueueing by default; implement add_to_queue though. (default_add_to_queue): Add all selected entries to the queue. * sources/rb-sourcelist.{c,h}: Add concept of 'preempted' source (what would be playing if there wasn't anything in the queue). (set_source_playing): Helper function for manipulating tree store. (rb_sourcelist_set_playing_source): Use set_source_playing (rb_sourcelist_preempt_playing_source): Update preempted source pointer, manipulate source states. * sources/rb-static-playlist-source.{c,h}: (rb_static_playlist_source_add_location_internal), (rb_static_playlist_source_add_location), (rb_static_playlist_source_add_entry): Add index parameter for specifying where in the playlist the new entry goes. (rb_static_playlist_source_new_from_xml), (impl_paste), (rb_static_playlist_source_add_list_uri), (rb_static_playlist_source_add_location_swapped), (rb_static_playlist_source_add_locations), (rb_static_playlist_source_non_entry_dropped), (rb_static_playlist_source_row_inserted): Handle new index parameter everywhere it appears (rb_static_playlist_source_move_entry): New method for moving entries around in the playlist. * widgets/rb-entry-view.c (rb_entry_view_scroll_to_iter): Silence gtk warnings when trying to scroll entry views that have never been displayed. * shell/rb-play-order-queue.{c,h}: New files, implementing a linear play order that removes the old entry when switching to a new one. * sources/rb-play-queue-source.{c,h}: New files, implementing a static playlist subclass that has a second entry view for the sidebar view using alternate formatting, and that displays the number of entries it contains in its source list entry. 2005-12-10 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_add_entry), (rhythmdb_query_model_drag_data_received): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_non_entry_dropped): when things are dropped, ignore any blank lines in the list of uris. Make the source responsible for adding new items to the db. * rhythmdb/rhythmdb.c: (queue_stat_uri): make sure we aren't passed an empty string. 2005-12-10 James Livingston * shell/rb-shell-player.c: (rb_shell_player_set_property), (rb_shell_player_sync_buttons), (rb_shell_player_selection_changed_cb): watch for the "selection-changed" signal, so that the Song Properties get enabled. Closes bug 323694. 2005-12-10 James Livingston * data/rhythmbox.schemas: fix the gconf schema 2005-12-10 James Livingston * metadata/rb-metadata-gst.c: don't set the state to NULL when inside the decoded-pad callback with gstreamer 0.8, it causes problems. 2005-12-10 Jonathan Matthew Remove more junk from RBEntryView. Closes bug 323640. * widgets/rb-entry-view.{c,h}: Remove unused private structure members, replace 'playing' boolean with an enum (so we know if we're paused too), and store a pointer to the RBShellPlayer too. (rb_entry_view_class_init), (rb_entry_view_set_property), (rb_entry_view_get_property): Remove 'entry-selected' and 'changed' signals and 'playing-entry' property, add 'selection-changed' signal and 'shell-player' and 'playing-state' properties. (rb_entry_view_new): Take the shell player object reference (rb_entry_view_playing_cell_data_func): Get pixbuf based on state. (rb_entry_view_set_playing_entry), (rb_entry_view_get_playing_entry): No longer needed, shell player is the place to get this information. (rb_entry_view_busy), (rb_entry_view_get_duration), (rb_entry_view_get_total_size), (rb_entry_view_get_first_entry), (rb_entry_view_get_next_from_entry), (rb_entry_view_get_previous_from_entry), (rb_entry_view_get_next_entry), (rb_entry_view_get_random_entry), (rb_entry_view_get_num_entries): Removed, callers should go to the query model directly. (rb_entry_view_playing_song_changed): Update active query model, emit row changed signals to update pixbufs, and scroll to the playing song when the playing song changes, based on a signal from the shell player. (queue_changed_sig), (rb_entry_view_row_changed_cb), (emit_entry_changed): Evil, removed. (rb_entry_view_selection_changed_cb): Remove old signals, add new selection-changed signal. (rb_entry_view_select_none), (rb_entry_view_select_entry): Remove selection lock. It didn't work anyway. (rb_entry_view_set_playing): Replaced with rb_entry_view_set_state. (rb_entry_view_emit_row_changed): Simple helper function to emit row-changed signals. * widgets/Makefile.am: Entry view needs headers from the shell/ directory. * widgets/rb-song-info.{c,h}: Use the query model for everything except scrolling the entry view to show the entry being displayed. (rb_song_info_class_init), (rb_song_info_get_property): Add new 'source' property so we can watch for query model changes. (rb_song_info_finalize): Unref objects, disconnect signal handlers (rb_song_info_set_property): Watch for query model changes, don't watch for entry view changes. (rb_song_info_new): Take source as a parameter, use the source's entry view unless one was specifically supplied. (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb): Use query model rather than entry view to move between songs. (rb_song_info_update_buttons): Use query model. (rb_song_info_query_model_changed_cb): Handle query model changes. * shell/rb-playlist-manager.c (rb_playlist_manager_set_property): Only one copy of the code to enable/disable the CD burning action (rb_playlist_manager_playlist_entries_changed): Use the query model to get the number of entries, not the entry view. * shell/rb-play-order-random-by-age-and-rating.c, shell/rb-play-order-random-by-age.c, shell/rb-play-order-random-by-rating.c, shell/rb-play-order-random-equal-weights.c: Use G_DEFINE_TYPE * shell/rb-shell-player.{c,h}: Remove a few unused entries from the structure. (rb_shell_player_set_property): Don't use the 'changed' signal on the entry view (it's evil) (rb_shell_player_have_first): No longer needed (rb_shell_player_play): Just tell the entry view it's playing (rb_shell_player_playpause): Tell the entry view it's paused when pausing. (rb_shell_player_entry_view_changed_cb): No longer used, removed. (rb_shell_player_property_row_activated_cb): Get the entry to play using the query model, not the entry view. (rb_shell_player_sync_buttons): Update entry view state while we're here. (rb_shell_player_set_playing_source_internal): Update entry view state (rb_shell_player_get_playing): Ask the entry view, not the player. This now returns TRUE when paused. This makes rb_shell_set_elapsed and rb_shell_set_window_title work properly, so you get "(Paused)" in the window title and tray icon tooltip. (rb_shell_player_get_mm_player): Not used anywhere, so removed. * sources/rb-iradio-source.c, sources/rb-library-source.c, sources/rb-podcast-source.c, sources/rb-playlist-source.c: (rb_iradio_source_constructor): Pass the RBShellPlayer in to the entry view constructor, pass the source in to the song info widget constructor. * shell/rb-shell-clipboard.c (rb_shell_clipboard_set_property): Use 'selection-changed' instead of 'changed', since that's what the clipboard cares about. (rb_shell_clipboard_set_source): Don't die if source == NULL 2005-12-10 James Livingston * player/rb-recorder-gst.c: (rb_recorder_get_default_drive): * sources/rb-playlist-source-recorder.c: (_nautilus_burn_drive_new_from_path): make more of the libnautilusburn stuff not use the deprecated API when compiled against 2.13 2005-12-10 James Livingston patch by: Alex Lancaster * widgets/rb-song-info.c: (rb_song_info_sync_entry_single): fix problem where the genre tag was getting set to the artist. Closes bug 323642. 2005-12-09 William Jon McCann * rhythmdb/rhythmdb-query-model.c (rhythmdb_query_model_get_next_from_entry): Return NULL if can't get first iter. Fixes #323663 2005-12-09 William Jon McCann * sources/rb-iradio-source.[ch] (impl_song_properties): Use updated rb_station_properties_dialog_new API. (rb_iradio_source_add_from_playlist): New public function. (rb_iradio_source_first_time_changed): Use add_from_playlist. * shell/rb-shell.c (new_station_location_added): Handle iradio location added signal. (rb_shell_cmd_new_station): Use new iradio station dialog. * iradio/rb-station-properties-dialog.c (rb_station_properties_dialog_init): Use close button. Fix typo. (rb_station_properties_dialog_new): Don't squeeze new station functionality into this class. (rb_station_properties_dialog_response_cb): ditto. (rb_station_properties_dialog_update_title): Make consistent with other properties dialogs. (rb_station_properties_dialog_location_changed_cb): Do nothing. * iradio/rb-new-station-dialog.[ch]: * iradio/Makefile.am: Add new station dialog. * data/glade/station-new.glade: New file based on new podcast feed dialog. * data/glade/station-properties.glade: Updated to be consistent with song properties dialog. Fixes #323306. 2005-12-10 James Livingston patch by: Ståle Lyngaas * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): submit songs longer than 30 minutes. Fixes bug 323639. 2005-12-09 William Jon McCann * shell/rb-shell.c (idle_save_playlist_manager): Use new async save function. (rb_shell_finalize): Remove save timeout sources. Reorder steps a bit to make saving db and playlists a bit more failsafe in case something goes wrong later. (rb_shell_constructor): Keep track of save timeout source. (add_to_library_response_cb): Keep track of db save timeout source. * shell/rb-playlist-manager.c (reap_dead_playlist_threads): Use g_atomic. (rb_playlist_manager_shutdown): New function to shutdown threads etc. before exit. (rb_playlist_manager_finalize): Moved handling outstanding threads stuff to shutdown since if there are outstanding threads they hold a ref and finalize is never called. (rb_playlist_manager_save_thread_main): Use cond broadcast instead of signal which may be required for sync save. (rb_playlist_manager_save_playlists_async): Renamed old save_playlists to save_playlists_async. Use g_atomic. (rb_playlist_manager_save_playlists): New function to perform sync saves (symmetric with RhythmDB API). (rb_playlist_manager_cmd_new_automatic_playlist): Style consistency. * rhythmdb/rhythmdb.c (rhythmdb_action_free, rhythmdb_shutdown): Style consistency anality. (rhythmdb_finalize): Remove save timeout source. (rhythmdb_set_property, rhythmdb_get_property) (rhythmdb_process_events): More anality and keep track of save timeout source. (action_thread_main): No need to call g_thread_exit. (rhythmdb_entry_set_internal, rhythmdb_entry_sync_mirrored) (rhythmdb_query_parse_valist, rhythmdb_query_free) (write_encoded_gvalue, read_encoded_property): La la la. Fixes #322940. 2005-12-10 James Livingston * metadata/rb-metadata-gst.c: fix 5 second pauses when encountering non-audio files. 2005-12-10 James Livingston * Makefile.am: * configure.ac: remove the rpm spec files, so that automake works. oops * rhythmdb/rhythmdb.c: (rhythmdb_save_thread_main): fix a trivial locking issue 2005-12-09 James Livingston * debian/: try to get cvs to actually remove the files 2005-12-09 James Livingston * rhythmbox.spec.in: * debian/: remove the distro package stuff, they are *really* old, and downstream manage it anyway. 2005-12-09 Jonathan Matthew Rework play orders to work off query models rather than entry views, and track the playing entry themselves rather than relying on the entry view to do it. This makes the entry view mostly just a widget. Closes bug 323612. * daapsharing/rb-daap-share.c (add_playlist_to_mlcl), (databases_cb): Use query model rather than entry view to get the number of entries in playlists. * rhythmdb/rhythmdb-query-model.{c.h} (rhythmdb_query_model_tree_path_to_entry), (rhythmdb_query_model_iter_to_entry), (rhythmdb_query_model_get_next_from_entry), (rhythmdb_query_model_get_previous_from_entry): New utility functions for iterating through query models. (rhythmdb_query_model_compute_status_normal): Have one copy of this code, not four. * shell/rb-play-order.{c,h}: Add signals for when next/previous availability changes, and when the playing entry is removed, and add a property for the current playing entry. Add gtkdoc comments too. (rb_play_order_class_init): Add new property and signals. (rb_play_order_finalize), (rb_play_order_playing_source_changed), (rb_play_orer_query_model_changed_cb), (rb_play_order_query_model_changed): Use query model rather than entry view. (rb_play_order_set_property), (rb_play_order_get_property): Handle new playing-entry property. Call playing_entry_changed virtual method so subclasses can do any processing required. (rb_play_order_is_playing), (rb_play_order_get_playing_entry), (rb_play_order_set_playing_entry): Just use the playing-entry property. (rb_play_order_get_query_model), (rb_play_order_model_not_empty): Utility methods for subclasses. (rb_play_order_entry_added_cb), (rb_play_order_entry_removed_cb): Update next/previous availability, check if the playing entry was removed. (default_playing_entry_removed): Keep the current behaviour of just stopping playback when the playing entry is deleted. (rb_play_order_go_next), (rb_play_order_go_previous): Implement these for subclasses that don't have go_next/go_previous, but do have get_next/get_previous. (rb_play_order_update_have_next_previous): Emit signal if the availability of next/previous entries has changed. * shell/rb-play-order-linear.c, shell/rb-play-order-linear-loop.c, shell/rb-play-order-shuffle.c, shell/rb-play-order-random.c: Use G_DEFINE_TYPE, replace entry view iterator with query model methods. (rb_shuffle_playing_entry_changed): If new_entry is NULL and we're on the last song in the shuffled order, go back to the start. This means if you press 'play' again you'll get the whole order again, not just one song. * shell/rb-shell-player.c: (rb_shell_player_get_playing_entry), (info_available_cb): Ask the play order rather than the entry view. (rb_shell_player_set_property): Update the play order when the selected source changes and we aren't playing anything. (rb_shell_player_sync_play_order): Copy the playing entry across to the new play order so playback continues from the same song, and watch for updates to have_next/have_previous. (rb_shell_player_play_order_update_cb): Enable/disable the next/previous actions when next/previous entry availability changes. (rb_shell_player_jump_to_current): Just use the play order's idea of what's playing, not the entry view's; if not playing anything, clear the selection, so when a playlist ends and you hit play again, it'll start at the start rather than the end. (rb_shell_player_do_previous): restructure a bit. (rb_shell_player_do_next): restructure, jump to new playing entry in an idle handler instead of directly. (rb_shell_player_do_previous_or_seek): Only try to go to the previous song if there is one. (rb_shell_player_playpause): Jump to playing song, don't update the play order if we got the song from the selection. (rb_shell_player_playing_entry_deleted_cb): Not needed. (rb_shell_player_sync_buttons): rb_shell_player_play_order_update_cb looks after next/previous actions now. Don't break if called while there is no selected source. (rb_shell_player_finalize), (rb_shell_player_set_playing_entry), (rb_shell_player_set_playing_source_internal), (rb_shell_player_error): No need to track the attempted playing entry any more, since the play order does that. * shell/rb-shell.c: (rb_shell_jump_to_current), (rb_shell_set_rating_impl): Use rb_shell_player_get_playing_entry rather than going through the entry view. * shell/rb-statusbar.c (rb_statusbar_set_property), (rb_statusbar_source_status_changed_cb): Listen to the source rather than the entry view for status bar text changes. (rb_statusbar_sync_status): Ask the query model directly * sources/rb-source.{c}: Add query model property. (default_get_status): Get status text from query model, should be suitable for most sources. (rb_source_set_property): Listen for changes to the query model to update the status text. (rb_source_row_inserted_cb), (rb_source_row_deleted_cb), (idle_emit_status_changed): Emit status-changed signals when query model changes. * sources/rb-library-source.c, sources/rb-podcast-source.c: (impl_get_status): Not needed, RBSource does this now (rb_library_source_do_query) (rb_podcast_source_do_query): Update RBSource's query model reference. * sources/rb-playlist-source.c: Remove query-model property, since RBSource has one now (impl_get_status): Not needed, RBSource does this now (rb_playlist_source_row_deleted): Use query model iterator helper function. (rb_playlist_source_set_query_model): Update RBSource's query model reference too. * sources/rb-iradio-source.c: (impl_get_status): Ask the query model directly. (rb_iradio_source_do_query): Update RBSource's query model reference when we create a new query. * sources/rb-sourcelist-model.c (rb_sourcelist_model_drag_data_get): Use query model rather than entry view. * widgets/rb-entry-view.{c,h}: Remove playing_entry_deleted signal (now in play order). (entry_from_tree_path), (entry_from_tree_iter): Not needed as RhythmDBQueryModel has equivalent helper functions. (rb_entry_view_*): Use query model helpers instead of the above two functions. 2005-12-09 James Livingston * configure.ac: * player/rb-recorder-gst.c: (rb_recorder_get_default_drive), (rb_recorder_enabled): * shell/rb-removable-media-manager.c: (poll_tray_opened): * sources/rb-playlist-source-recorder.c: (_nautilus_burn_drive_new_from_path), (ask_rewrite_disc): check whether libnautilusburn has the _drive_unref function, and if so use it. Stops it complaining about deprecated API. 2005-12-09 James Livingston * configure.ac: drop the minimum gstreamer version back down, it accidently got pushed up in the gst 0.10 patch. Closes bug 323561. 2005-12-09 James Livingston * widgets/rb-song-info.c: (rb_song_info_class_init), (rb_song_info_show), (rb_song_info_constructor), (rb_song_info_finalize), (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb): save metadata changes when the Next/Previous buttons are pressed (closes bug 320952). use G_DEFINE_TYPE. 2005-12-09 James Livingston Patch by: * sources/rb-iradio-source.c: (stations_view_drag_data_received_cb): * sources/rb-podcast-source.c: (impl_receive_drag): fix drag and drop of urls. Fixes bug 323610. 2005-12-09 James Livingston patch by Jan Schmidt to add support for GStreamer 0.10. DAAP support for 0.10 isn't done yet. * configure.ac: * metadata/rb-metadata-gst.c: * player/rb-player-gst.c: (rb_player_finalize), (rb_player_bus_cb), (rb_player_construct), (rb_player_new): * player/rb-recorder-gst.c: (rb_recorder_gst_free_pipeline), (rb_recorder_gst_signal_error), (pipe_message), (rb_recorder_new_pad_cb), (rb_recorder_construct), (rb_recorder_new): * shell/main.c: (main): * sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry), (rb_audiocd_get_cd_info): port gstreamer-using code to 0.10. 2005-12-07 Jonathan Matthew * data/rhythmbox-ui.xml: replace 'smart' with 'auto' for consistency * shell/rb-playlist-manager.c: (rb_playlist_manager_set_property), (handle_playlist_entry_cb), (playlist_load_start_cb), (rb_playlist_manager_new_playlist) (rb_playlist_manager_set_automatic_playlist), (rb_playlist_manager_cmd_new_automatic_playlist), (rb_playlist_manager_cmd_edit_automatic_playlist): Use new playlist subclasses. (rb_playlist_manager_save_playlists): Only read the dirty flag for local playlists, minor pointless reformatting * sources/Makefile.am: add new files * sources/rb-playlist-source.c, sources/rb-playlist-source.h: split lots of stuff out into two new classes, RBStaticPlaylistSource and RBAutoPlaylistSource, make RBPlaylistSource abstract, add virtual methods for showing a popup for the entry view and saving the playlist to XML. Other stuff is subclass-specific, or already virtual in RBSource. * sources/rb-playlist-xml: Define playlist XML tags and attributes in one place, since they're used across three source files now * sources/rb-daap-source.c: (rb_daap_source_connection_cb): Use new static playlist class * sources/rb-ipod-source.c: (add_rb_playlist): Use new static playlist class * sources/rb-static-playlist-source.{c,h}, source/rb-auto-playlist-source.{c,h}, sources/rb-playlist-xml.h: new files. * po/POTFILES.in: add new files 2005-12-07 James Livingston * rhythmdb/rhythmdb.c: (emit_entry_changed), (sync_entry_changed), (rhythmdb_commit_internal), (rhythmdb_process_metadata_load): make metadata loads not attempt to write changes to disk. 2005-12-07 James Livingston patch by: Alex Lancaster * data/glade/song-info-multiple.glade: * widgets/rb-song-info.c: (rb_song_info_constructor), (rb_song_info_sync_entries_multiple): allow the year to be changed on multiple songs at once. 2005-12-06 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load), (rhythmdb_entry_set_visibility): emit signal when visibility changes. 2005-12-06 James Livingston * sources/rb-sourcelist.c: (rb_sourcelist_init): ellipsise source names rather than adding a horizontal scroll bar. 2005-12-06 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_drag_data_received): remove some pointless debug messages * rhythmdb/rhythmdb.c: (rhythmdb_process_stat_event), (rhythmdb_process_file_deleted), (rhythmdb_entry_move_to_trash): always hide rather than remove DB entries, which will make RB not lose information when tag editing happens or people move files to trash and then change their mind. Also fix some races where the monitoring code would notice the temporary files generated by saving metadata. 2005-12-05 William Jon McCann * widgets/rb-song-display-box.[ch] (rb_song_display_box_init): Hide internals and add tooltips. (rb_song_display_box_size_allocate): Hide internals. (sanitize_string, info_url): Copied from rb-header. (rb_song_display_box_sync): New public function. * widgets/rb-header.[ch]: Use G_DEFINE_TYPE. (rb_header_init): Use a separate row for the seek bar. (rb_header_finalize): Don't unref widgets. (rb_header_sync): Use rb_song_display_box_sync. (rb_header_set_urldata) (rb_header_set_show_artist_album): Hide instead of remove widgets. (rb_header_set_show_position_slider): Set visibility of seek bar. (rb_header_set_show_timeline): Set sensitivity of seek bar. (rb_header_get_elapsed_string): Don't shift when you first start playback. * shell/rb-statusbar.c (rb_statusbar_init) (rb_statusbar_sync_state): Remove shuffle and repeat controls. * shell/rb-shell.c (rb_shell_finalize): Destroy tooltips. (rb_shell_constructor): Remove hseparator. Monitor toolbar visibility settings. Add toolbar. Add volume button to toolbar. Add tooltips for volume button. (rb_shell_view_toolbar_changed_cb) (rb_shell_sync_toolbar_visibility) (toolbar_visibility_changed_cb): Set visibility of toolbar. (rb_shell_sync_smalldisplay): Set the toolbar style to icons only when in small display mode. (rb_shell_volume_widget_changed_cb): Save volume setting. * shell/rb-shell-player.c (rb_shell_player_constructor): Remove pause and stop actions. Make play action "important" so that text is visible in horizontal toolbar position. Remove control buttons. (rb_shell_player_init) (rb_shell_player_sync_song_position_slider_visibility): Set visbibility of seek bar. (rb_shell_player_cmd_play, rb_shell_player_playpause): Make play action a toggle. (rb_shell_player_sync_volume): Volume control moved to player. (gconf_song_position_slider_visibility_changed): Set visbibility of seek bar. (rb_shell_player_sync_buttons): Set sensitivity of actions instead of buttons. (rb_shell_player_playing_changed_cb): Add callback for player notify::playing changes. * lib/rb-preferences.h: Add hide toolbar and seek bar key names. * data/ui/rhythmbox-ui.xml: Add hide toolbar and seek bar menu items. Remove pause and stop actions from the control menu. Add a toolbar. * data/rhythmbox.schemas: Add toolbar_hidden song_position_slider_hidden keys. Patch by: James Livingston William Jon McCann Fixes #316238. 2005-12-05 James Livingston * data/glade/library-prefs.glade: * data/rhythmbox.schemas: * lib/rb-preferences.h: * rhythmdb/rhythmdb.c: (rhythmdb_directory_change_cb), (rhythmdb_sync_library_location): * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (rb_library_source_constructor), (impl_get_config_widget), (rb_library_source_preferences_sync), (rb_library_source_watch_toggled_cb): allow people to disable library monitoring, because with nothing set the file chooser button selects the Home folder (and hence that will get monitored). 2005-12-04 Ryan P Skadberg * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): Another attempt to fix problem with RSS parsing showing invalid feed types. Fixes bug 323153 2005-12-04 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load), (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat): make importing a remote directory not block the UI. 2005-12-03 Dennis Cranston * data/glade/podcast-feed-properties.glade: * data/glade/podcast-properties.glade: HIG fix, closes bug 323131. 2005-12-04 James Livingston patch by: Dennis Cranston * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): change || to && to fix a mistake in the earlier podcast patch. 2005-12-03 James Livingston * data/glade/podcast-new.glade: * podcast/rb-new-podcast-dialog.c: (rb_new_podcast_dialog_init), (rb_new_podcast_dialog_text_changed): remove some unused stuff. * player/rb-player-gst.c: (rb_player_set_replaygain): initialise the GValue, which stops occasional errors. * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): fix a compile issue. 2005-12-03 James Livingston patch by: Dennis Cranston * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): fix a crasher with some podcasts feeds. 2005-12-03 James Livingston * data/rhythmbox.schemas: fix the gconf schema 2005-12-03 James Livingston patch by: Thomas de Grenier de Latour to add a selection timeout to the sourcelist. This lets you hold a track over the playlist source, and then have the view switch so you can insert the track in the middle of the playlist. Closes bug 323044. * lib/rb-tree-dnd.c: (init_rb_tree_dnd_data), (scroll_row_timeout), (select_on_drag_timeout), (remove_select_on_drag_timeout), (rb_tree_dnd_drag_motion_cb), (rb_tree_dnd_drag_leave_cb), (rb_tree_dnd_add_drag_dest_support): * lib/rb-tree-dnd.h: Add an option for tree views to have a selection timeout. * sources/rb-sourcelist-model.c: (rb_sourcelist_model_set_dnd_targets): Use the selection timeout for the source list. 2005-12-02 Bastien Nocera * data/glade/audioscrobbler-prefs.glade: add a space before the web links, so that the text doesn't touch the button 2005-12-02 James Livingston Add full support for gnome-vfs remote files. Closes bug 140355. * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat): perform stats asynchronously, so that waiting for authentication information from the user doesn't block the UI. (rhythmdb_entry_set_visibility): don't emit the signal twice. * rhythmdb/rhythmdb.c: (rhythmdb_action_free), (rhythmdb_event_free), (rhythmdb_shutdown), (emit_entry_changed), (rhythmdb_entry_allocate), (rhythmdb_directory_change_cb), (rhythmdb_process_stat_event), (emit_load_error_idle), (rhythmdb_process_metadata_load), (rhythmdb_process_queued_entry_set_event), (rhythmdb_process_file_created_or_modified), (rhythmdb_process_file_deleted), (rhythmdb_process_events), (queue_stat_uri), (add_thread_main), (emit_save_error_idle), (action_thread_main), (rhythmdb_add_uri), (rhythmdb_load), (rhythmdb_save_thread_main), (threadsafe_entry_set), (rhythmdb_query_internal), (query_thread_main), (rhythmdb_do_full_query_async_parsed), (rhythmdb_do_full_query_internal), (entry_volume_mounted_or_unmounted), (rhythmdb_volume_mounted_cb), (rhythmdb_volume_unmounted_cb), (rhythmdb_check_changed_file): trivial changes to support the asynchronous stats. * shell/main.c: (main): activate the authentication manager. * shell/rb-playlist-manager.c: (rb_playlist_manager_cmd_load_playlist), (rb_playlist_manager_cmd_save_playlist): * shell/rb-shell.c: (rb_shell_cmd_add_folder_to_library), (rb_shell_cmd_add_file_to_library): * sources/rb-playlist-source.c: (rb_playlist_source_add_location): * widgets/rb-druid.c: (rb_druid_browse_clicked_cb): Let people select remote files. 2005-12-02 James Livingston * shell/rb-playlist-manager.c: makes playlist menu items use the elipses correctly. Fixes bug 322283. 2005-12-02 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_load_playlists): fix silly mistake 2005-12-02 James Livingston * metadata/rb-metadata-gst.c: (rb_metadata_gst_add_tag_data): don't print out metadata-write unless --debug was passed. * rhythmdb/rhythmdb.c: (rhythmdb_load): * shell/rb-playlist-manager.c: (rb_playlist_manager_load_playlists): block writes to disk if they are still being loaded. 2005-12-02 James Livingston * shell/rb-shell-clipboard.c: change the move-to-trash shortcut, to ctrl-T, because Ctrl-D is used by "small mode" 2005-12-02 James Livingston * shell/rb-shell-preferences.c: (rb_shell_preferences_append_view_page): * sources/rb-library-source.c: (impl_get_config_widget): * sources/rb-podcast-source.c: (impl_get_config_widget): * sources/rb-source.c: (rb_source_get_config_widget): * sources/rb-source.h: Make the preference actually work. * shell/rb-shell.c: (rb_shell_constructor): set up monitoring correctly if Rhythmbox is being run for the first time. 2005-12-02 James Livingston Add support for Rhythmbox to watch your library, and automatically add new tracks. Fixes bug 160159. * data/glade/library-prefs.glade: add "library location" preference * data/rhythmbox.schemas: add gconf key for the library location * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_event_free), (rhythmdb_unmonitor_directories), (rhythmdb_shutdown), (rhythmdb_finalize), (rhythmdb_directory_change_cb), (rhythmdb_monitor_uri_path), (rhythmdb_process_stat_event), (rhythmdb_process_metadata_load), (rhythmdb_process_events), (rhythmdb_load_thread_main), (rhythmdb_load), (monitor_subdirectory), (monitor_library_directory), (monitor_entry_file), (rhythmdb_sync_library_location), (library_location_changed_cb), (rhythmdb_check_changed_file), (rhythmdb_process_changed_files): Let Rhythmbox watch the directories specifiec in the gconf key for new additions. Also fix monitoring code so that it works properly, and notices deletions. * lib/rb-preferences.h: * shell/rb-audioscrobbler.c: (rb_audioscrobbler_class_init), (rb_audioscrobbler_init), (rb_audioscrobbler_set_property): * shell/rb-audioscrobbler.h: * shell/rb-shell-preferences.c: (rb_shell_references_append_page), (rb_shell_preferences_append_view_page), (rb_shell_preferences_new): * shell/rb-shell-preferences.h: rework the way audioscrobbler adds it's preferences pane, so that we don't need #ifdef's through rb-shell-preferences. * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property), (rb_shell_select_source), (rb_shell_cmd_preferences): give the shell a "preferences" property, so that sources can acccess it. This is needed because the library location pref needs to take effect when the window is closed. * sources/rb-library-source.c: (rb_library_source_library_location_changed), (rb_library_source_dispose), (rb_library_source_finalize), (rb_library_source_constructor), (impl_get_config_widget), (rb_library_source_preferences_sync), (rb_library_source_process_library_location_change), (rb_library_source_prefs_update), (rb_library_source_process_library_handle_selection), (rb_library_source_library_location_cb): set up and control the "library location" preference. * sources/rb-audiocd-source.c:(rb_source_class_init): * sources/rb-source.c: (rb_source_class_init): remove some pointless code. 2005-12-01 William Jon McCann * podcast/rb-feed-podcast-properties-dialog.c (rb_feed_podcast_properties_dialog_init) (rb_feed_podcast_properties_dialog_update_title): * data/glade/podcast-feed-properties.glade: Make the feed properties dialog consistent with the podcast properties dialog. 2005-12-01 William Jon McCann * metadata/.cvsignore: * po/.cvsignore: * podcast/.cvsignore: Updated. * shell/main.c (main): Support DBus 0.6 flags. 2005-11-30 Bastien Nocera * data/ui/rhythmbox-ui.xml: * rhythmdb/rhythmdb.c: (rhythmdb_entry_move_to_trash_cb), (rhythmbd_entry_move_to_trash_set_error), (rhythmdb_entry_move_to_trash): * rhythmdb/rhythmdb.h: * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync), (rb_shell_clipboard_cmd_delete), (rb_shell_clipboard_cmd_move_to_trash): * sources/rb-library-source.c: (rb_library_source_class_init), (impl_delete), (impl_move_to_trash): * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (impl_delete), (impl_move_to_trash): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): * sources/rb-source.c: (rb_source_class_init), (rb_source_can_move_to_trash), (rb_source_delete), (rb_source_move_to_trash): * sources/rb-source.h: Add move_to_trash member for the sources, implement move to trash for the library and playlists Add a "Move to Trash" context menu item, and menu item (Ctrl+D) to move local files to the trash, and deleting them from the database (Closes: #315389) 2005-11-30 William Jon McCann * shell/rb-tray-icon.c (rb_tray_icon_class_init) (rb_tray_icon_init, rb_tray_icon_finalize): * shell/rb-statusbar.c (rb_statusbar_class_init) (rb_statusbar_init, rb_statusbar_finalize): * shell/rb-source-header.c (rb_source_header_class_init) (rb_source_header_init, rb_source_header_finalize): * shell/rb-shell.c (rb_shell_class_init, rb_shell_init) (rb_shell_finalize): * shell/rb-shell-preferences.c (rb_shell_preferences_class_init) (rb_shell_preferences_init, rb_shell_preferences_finalize): * shell/rb-shell-player.c (rb_shell_player_class_init) (rb_shell_player_init, rb_shell_player_finalize): * shell/rb-shell-clipboard.c (rb_shell_clipboard_class_init) (rb_shell_clipboard_init, rb_shell_clipboard_finalize): * shell/rb-playlist-manager.c (rb_playlist_manager_class_init) (rb_playlist_manager_init, rb_playlist_manager_finalize): * shell/rb-play-order.c (rb_play_order_class_init) (rb_play_order_init, rb_play_order_finalize): * shell/rb-play-order-shuffle.c (rb_shuffle_play_order_class_init) (rb_shuffle_play_order_init, rb_shuffle_play_order_finalize): * shell/rb-play-order-random.c (rb_random_play_order_class_init) (rb_random_play_order_init, rb_random_play_order_finalize): * shell/rb-history.c (rb_history_class_init, rb_history_init) (rb_history_finalize): * shell/rb-commander.c (rb_commander_class_init) (rb_commander_init, rb_commander_finalize): * shell/rb-audioscrobbler.c (rb_audioscrobbler_class_init) (rb_audioscrobbler_init, rb_audioscrobbler_finalize): * remote/bonobo/rb-remote-bonobo.c (rb_remote_bonobo_class_init) (rb_remote_bonobo_init, rb_remote_bonobo_finalize): * podcast/rb-podcast-properties-dialog.c (rb_podcast_properties_dialog_class_init) (rb_podcast_properties_dialog_init) (rb_podcast_properties_dialog_finalize): * podcast/rb-podcast-manager.c (rb_podcast_manager_class_init) (rb_podcast_manager_init, rb_podcast_manager_finalize): * podcast/rb-new-podcast-dialog.c (rb_new_podcast_dialog_class_init) (rb_new_podcast_dialog_init, rb_new_podcast_dialog_finalize): * podcast/rb-feed-podcast-properties-dialog.c (rb_feed_podcast_properties_dialog_class_init) (rb_feed_podcast_properties_dialog_init) (rb_feed_podcast_properties_dialog_finalize): * metadata/rb-metadata-gst.c (rb_metadata_class_init) (rb_metadata_init, rb_metadata_finalize): * iradio/rb-station-properties-dialog.c (rb_station_properties_dialog_class_init) (rb_station_properties_dialog_init) (rb_station_properties_dialog_finalize): * daapsharing/rb-daap-share.c (rb_daap_share_class_init) (rb_daap_share_init, rb_daap_share_dispose): Use g_type_class_add_private in all classes. Closes bug 313688. 2005-11-30 James Livingston patch by: William Jon McCann to use g_type_class_add_private in all classes. Closes bug 313688. * lib/rb-thread.c: (rb_thread_class_init), (rb_thread_init), (rb_thread_finalize): * player/rb-player-gst.c: (rb_player_class_init), (rb_player_init), (rb_player_finalize): * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_class_init), (rhythmdb_property_model_init), (rhythmdb_property_model_finalize): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_init), (rhythmdb_query_model_finalize): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_class_init), (rhythmdb_tree_init), (rhythmdb_tree_finalize): * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_init), (rhythmdb_finalize): * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_init), (rb_daap_source_dispose): * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_init), (rb_iradio_source_finalize): * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_init), (rb_library_source_finalize): * sources/rb-playlist-source.c: (rb_playlist_source_class_init), (rb_playlist_source_init), (rb_playlist_source_dispose): * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_init), (rb_podcast_source_finalize): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_class_init), (rb_sourcelist_model_init), (rb_sourcelist_model_finalize): * sources/rb-sourcelist-model.h: * sources/rb-sourcelist.c: (rb_sourcelist_class_init), (rb_sourcelist_init), (rb_sourcelist_finalize): * sources/rb-sourcelist.h: * widgets/disclosure-widget.c: (finalize), (class_init), (init): * widgets/rb-cell-renderer-rating.c: (rb_cell_renderer_rating_init), (rb_cell_renderer_rating_class_init), (rb_cell_renderer_rating_finalize): * widgets/rb-druid.c: (rb_druid_class_init), (rb_druid_init), (rb_druid_finalize): * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_init), (rb_entry_view_finalize): * widgets/rb-header.c: (rb_header_class_init), (rb_header_init), (rb_header_finalize): * widgets/rb-load-failure-dialog.c: (rb_load_failure_dialog_class_init), (rb_load_failure_dialog_init), (rb_load_failure_dialog_finalize): * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_init), (rb_property_view_finalize): * widgets/rb-rating.c: (rb_rating_class_init), (rb_rating_init), (rb_rating_finalize): * widgets/rb-search-entry.c: (rb_search_entry_class_init), (rb_search_entry_init), (rb_search_entry_finalize): * widgets/rb-simple-view.c: (rb_simple_view_class_init), (rb_simple_view_init), (rb_simple_view_finalize): * widgets/rb-song-display-box.c: (rb_song_display_box_class_init), (rb_song_display_box_init), (rb_song_display_box_finalize): * widgets/rb-song-info.c: (rb_song_info_class_init), (rb_song_info_init), (rb_song_info_finalize): * widgets/rb-tree-model-sort.c: (rb_tree_model_sort_class_init), (rb_tree_model_sort_init), (rb_tree_model_sort_finalize): 2005-11-30 James Livingston * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_init), (rb_station_properties_dialog_new): * lib/rb-glade-helpers.c: (rb_glade_boldify_label): * lib/rb-glade-helpers.h: * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_init), (rb_feed_podcast_properties_dialog_new): * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_init), (rb_podcast_properties_dialog_new): * shell/rb-audioscrobbler.c: (rb_audioscrobbler_get_config_widget): * shell/rb-shell-preferences.c: (rb_shell_preferences_init): * sources/rb-library-source.c: (impl_get_config_widget): * sources/rb-playlist-source-recorder.c: (rb_playlist_source_recorder_init): * widgets/rb-song-info.c: (rb_song_info_construct_single), (rb_song_info_constructor): create a single rb_glade_boldify_label() in rb-glade-helpers, rather than having eight implementation throughout the code. 2005-11-30 James Livingston * lib/rb-util.c: (rb_search_fold), (rb_make_duration_string): * lib/rb-util.h: * widgets/rb-entry-view.c: (rb_entry_view_duration_cell_data_func): move the duration->string function into rb-utils, as it gets used in a few places. patch by: William Jon McCann * data/glade/podcast-properties.glade: * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_init), (rb_podcast_properties_dialog_update), (rb_podcast_properties_dialog_update_title), (rb_podcast_properties_dialog_update_feed), (rb_podcast_properties_dialog_update_duration), (rb_podcast_properties_dialog_update_bitrate): Make the podcast info dialog look more like the song info dialog. Use the same "Feed" value that is displayed in the treeview (ie. the album field), displays the duration, uses units in the bitrate field, and sort the fields in the same order. 2005-11-29 James Livingston * rhythmdb/rhythmdb-marshal.list: * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (emit_load_error_idle), (rhythmdb_process_metadata_load), (entry_to_rb_metadata), (emit_save_error_idle), (action_thread_main): emit error signal when metadata write fails. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_db_load_error_cb), (rb_shell_db_save_error_cb): process the "metadata save" error and display it to the user. 2005-11-29 James Livingston * data/ui/rhythmbox-ui.xml: * sources/rb-podcast-source.c: (rb_podcast_source_songs_show_popup_cb), (rb_podcast_source_cmd_download_post), (rb_podcast_source_cmd_cancel_download): split download and cancel download commands. Replace usage of "Post" with "Esisode". Fixes bug 321653. 2005-11-18 William Jon McCann * widgets/rb-dialog.c (rb_error_dialog): Don't use a title on alert dialogs per the HIG. * sources/rb-playlist-source-recorder.c (burn_cd): Don't use the term Burn. (free_song_list): Routine to free song list. (rb_playlist_source_recorder_finalize): Use free_song_list. (rb_playlist_source_recorder_add_from_model): Return FALSE if unable to add all songs. Check that duration of all songs doesn't exceed MAX_PLAYLIST_DURATION which is set to 100 min. Fixes #321753. * sources/rb-playlist-source-recorder.c (check_media_length) (rb_playlist_source_recorder_start): Only check the duration and current media if the playlist length is longer than a standard CD (74 min). Otherwise, just let the Recorder do the check. * player/rb-recorder-gst.c (rb_recorder_init): Get a default drive at init. (rb_recorder_set_device): Don't leak drives. (rb_recorder_get_media_length): Use drive that was already set. (rb_recorder_burn): Let the recorder handle checking media type/size. Fixes bug 321754. 2005-11-29 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_sort_order): * rhythmdb/rhythmdb-query-model.h: add a function to resort the query, emitting the tree-model "resorted" signal. * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_finalize), (rb_entry_view_set_property), (rb_entry_view_constructor), (rb_entry_view_resort_model): * widgets/rb-entry-view.h: add a function to resort the entry view, using the above function. * sources/rb-iradio-source.c: (rb_iradio_source_songs_view_sort_order_changed_cb): * sources/rb-library-source.c: (rb_library_source_finalize), (songs_view_sort_order_changed_cb), (rb_library_source_do_query): * sources/rb-playlist-source.c: (rb_playlist_source_songs_sort_order_changed_cb): * sources/rb-podcast-source.c: (rb_podcast_source_posts_view_sort_order_changed_cb), (rb_podcast_source_do_query): use the above function instead of re-creating the query model. This makes changing the sorting an order of magnitude faster, as it uses a single resorted signal rather than deleting and re-adding everything (which emits 2N signals). Closes bug 315389. 2005-11-29 James Livingston patch by: Jonathan Matthew to disable column autosizing, which results in large speedups. Closes bug 312122. * po/ja.po: change the date format, so that it is a constant width * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_constructor): * widgets/rb-entry-view.c: (rb_entry_view_append_column), (rb_entry_view_constructor): make columns use fixed widths, disable column autosizing, and enable fixed-height mode. * widgets/rb-entry-view.c: (rb_entry_view_set_fixed_column_width), (rb_entry_view_get_time_date_column_sample): * widgets/rb-entry-view.h: functions to set a column to a fixed width, and get the canonical date format for the locale.