============ Version 0.9.4 2006-04-16 James Livingston * configure.ac: bump version to 0.9.4 * NEWS: update NEWS and 0.9.4 insert translations * plugins/pythonconsole/pythonconsole.py: import the rhythmdb namespace automatically. 2006-04-16 James Livingston * plugins/pythonconsole/pythonconsole.py: import the rhythmdb namespace automatically. 2006-04-16 James Livingston * data/rhythmbox.schemas: add the plugin's stuff to the gconf schema * doc/reference/Makefile.am: * doc/reference/rhythmbox.types: make distcheck work again * doc/reference/tmpl/eggnotificationbubble.sgml: * doc/reference/tmpl/eggtrayicon.sgml: * doc/reference/tmpl/rb-debug.sgml: * doc/reference/tmpl/rb-entry-view.sgml: * doc/reference/tmpl/rb-enums.sgml: * doc/reference/tmpl/rb-metadata.sgml: * doc/reference/tmpl/rb-new-station-dialog.sgml: * doc/reference/tmpl/rb-playlist-manager.sgml: * doc/reference/tmpl/rb-refstring.sgml: * doc/reference/tmpl/rb-shell-player.sgml: * doc/reference/tmpl/rb-shell-preferences.sgml: * doc/reference/tmpl/rb-shell.sgml: * doc/reference/tmpl/rb-song-info.sgml: * doc/reference/tmpl/rb-station-properties-dialog.sgml: * doc/reference/tmpl/rb-statusbar.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb-query-model.sgml: * doc/reference/tmpl/rhythmdb.sgml: update generared api doc stuff 2006-04-16 James Livingston patch by: Christian Kirbach * po/LINGUAS: don't split the variable across two lines, as it breaks the build. Fixes bug 338625. 2006-04-15 James Livingston * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property): add a "sourcelist-model" gobject property. 2006-04-14 William Jon McCann * .cvsignore: * backends/.cvsignore: * backends/gstreamer/.cvsignore: * bindings/.cvsignore: * bindings/python/.cvsignore: * help/es/.cvsignore: * metadata/.cvsignore: * plugins/.cvsignore: * plugins/audioscrobbler/.cvsignore: * plugins/lirc/.cvsignore: * plugins/pythonconsole/.cvsignore: * plugins/sample-python/.cvsignore: * plugins/sample/.cvsignore: * shell/.cvsignore: * widgets/libsexy/.cvsignore: Make CVS ignore files. 2006-04-14 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor): make the track-loading thread hold a reference on the source, so it doesn't explode if the cd is removed before it is done. Fixes bug 337237. 2006-04-14 James Livingston * bindings/python/override_common.c: (_helper_unwrap_pointer_pylist): * bindings/python/override_common.h: * bindings/python/rb.override: * bindings/python/rhythmdb.override: Bind some more functions and virtual functions. * shell/rb-shell.c: (rb_shell_select_source): * shell/rb-source-header.c: (rb_source_header_set_source_internal): * sources/rb-audiocd-source.c: * sources/rb-auto-playlist-source.c: (impl_get_search_actions): * sources/rb-browser-source.c: (impl_get_search_actions): * sources/rb-iradio-source.c: (impl_get_ui_actions): * sources/rb-play-queue-source.c: (impl_get_ui_actions): * sources/rb-playlist-source.c: (impl_get_ui_actions): * sources/rb-podcast-source.c: (impl_get_ui_actions), (impl_get_search_actions): * sources/rb-static-playlist-source.c: (impl_get_search_actions): Make the impl_get_ui_actions and impl_get_search_actions functions return lists that contain copies of the strings, instead of constant ones. Needed to bindings 2006-04-14 James Livingston * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: fix the method argument format specifiers. 2006-04-14 James Livingston * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: * rhythmdb/rhythmdb.c: (rhythmdb_entry_get), (entry_to_rb_metadata), (record_entry_change), (rhythmdb_entry_set_visibility): * rhythmdb/rhythmdb.h: * shell/rb-shell.c: (rb_shell_get_song_properties): change rhythmdb_entry_get to take the db as the first parameter. Fixes the python bindings of it. The rhythmdb_entry_get_* ones are left the same since they are used in too many places, and not in the Python bindings. 2006-04-13 William Jon McCann * lib/rb-debug.c: (_rb_profile_log): * plugins/rb-plugins-engine.c: (rb_plugins_engine_init): * rhythmdb/rhythmdb.c: (rhythmdb_load): * shell/main.c: (main): * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_set_visibility), (rb_shell_sync_window_state), (rb_shell_present): Fix profile output indentation. Add more profiling points. Fixes part of #338114 2006-04-13 James Livingston * shell/rb-shell.c: (rb_shell_source_deleted_cb): deal with the library source being deleted, by setting the active source to NULL. From bug 338116. 2006-04-12 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): Update the last-seen string when hiddenness changes. 2006-04-12 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): fix an issue which caused the first-seen time to be reset when a metadata load was done. Fixes bug 336874. * shell/rb-shell.h: remove old function declaration. * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: Fix some python binding stuff. 2006-04-11 James Livingston * shell/rb-shell.c: (rb_shell_sync_toolbar_state), (rb_shell_sync_smalldisplay): fix toolbar-style/small-mode interaction. Fixes bug 337999. 2006-04-11 James Livingston patch by: Christohpe Fergeau to fix building without track transfer. Fixes bug 338056. * shell/Makefile.am: 2006-04-11 Jonathan Matthew * widgets/Makefile.am: Fix automake complaints about LIBSEXY_LIBS 2006-04-10 William Jon McCann * lib/rb-debug.c: (rb_profiler_free), (profile_add_indent), (_rb_profile_log): * lib/rb-debug.h: * shell/rb-shell.c: (construct_db), (construct_widgets), (construct_sources), (construct_load_ui), (rb_shell_constructor): Add profiling. Fixes #337387 2006-04-10 William Jon McCann * sources/rb-play-queue-source.c (rb_play_queue_source_track_info_cell_data_func): * widgets/rb-header.c: Use italics for artist and album. Fixes #336748 2006-04-10 James Livingston * Makefile.am: * backends/gstreamer/Makefile.am: * configure.ac: * data/glade/library-prefs.glade: * shell/Makefile.am: * shell/rb-removable-media-manager.c: * shell/rb-removable-media-manager.h: * sources/Makefile.am: * sources/rb-audiocd-source.c: * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (impl_get_config_widget), (rb_library_source_preferences_sync), (impl_can_paste): add a --enable-track-transfer configure option, abd make cd ripping disabled by default. * shell/rb-source-header.c: * sources/rb-source.c: (rb_source_class_init), (rb_source_delete_thyself), (default_get_entry_view): * lib/rb-glade-helpers.c: * shell/rb-shell.c: (rb_shell_view_queue_as_sidebar_changed_cb): Fix some compiler warnings, and also bug 337427. 2006-04-10 James Livingston * shell/rb-shell-player.c: (rb_shell_player_shuffle_changed_cb), (rb_shell_player_repeat_changed_cb): don't fail to set the play order if the gconf key is missing. Fixes bug 337742. 2006-04-10 James Livingston patch by: Alex Lancaster to fix build problems I caused with a commit yesterday. Fixed bug 337806. * daapsharing/rb-daap-mdns-browser-howl.c: (rb_daap_mdns_browser_class_init): * podcast/Makefile.am: * rhythmdb/Makefile.am: * widgets/eggtrayicon.h: 2006-04-09 Steve Frécinaux * configure.ac: * po/LINGUAS: Move ALL_LANGUAGES content to the po/LINGUAS file, to make our translators' life easier. 2006-04-09 James Livingston * bindings/python/rb.defs: * bindings/python/rb.override: add bindings for most RBSource virtual functions. * sources/rb-source.h: * sources/rb-source.c: (rb_source_class_init): make impl_get_browser_key return a non-consht string, since Python can't really give us constant strings. * shell/rb-source-header.c: (rb_source_header_finalize), (rb_source_header_set_source_internal): * sources/rb-daap-source.c: (rb_daap_source_get_browser_key): * sources/rb-iradio-source.c: (impl_get_browser_key): * sources/rb-library-source.c: (impl_get_browser_key): * sources/rb-playlist-source.c: * sources/rb-browser-source.c: (rb_browser_source_constructor), (rb_browser_source_state_prefs_sync): * sources/rb-podcast-source.c: (impl_get_browser_key): Adapt to the above change. * plugins/sample-python/sample-python.py: show how to add a new source. 2006-04-09 James Livingston * daapsharing/Makefile.am: * daapsharing/rb-daap-connection.c: (rb_daap_connection_class_init): * daapsharing/rb-daap-marshal.list: * daapsharing/rb-daap-mdns-browser-avahi.c: (rb_daap_mdns_browser_class_init): * lib/rb-marshal.list: * player/Makefile.am: * player/rb-recorder-gst.c: (rb_recorder_class_init): * player/rb-recorder-marshal.list: * podcast/Makefile.am: * podcast/rb-podcast-manager.c: (rb_podcast_manager_class_init): * podcast/rb-podcast-marshal.list: * rhythmdb/Makefile.am: * rhythmdb/rhythmdb-marshal.list: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init): * rhythmdb/rhythmdb.c: (rhythmdb_class_init): merge all the marshalers into one file, as there is no point having several of them. 2006-04-09 James Livingston * lib/Makefile.am: * lib/rb-enums.h: * widgets/Makefile.am: * widgets/eggnotificationbubble.c: * widgets/eggnotificationbubble.h: * widgets/rb-song-info.c: remove lib/rb-enums.h and widgets/eggnotificationbubble.{c,h}, since they aren't used any more * rhythmdb/rhythmdb-property-model.h: * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb.h: * shell/rb-playlist-manager.h: * widgets/rb-cell-renderer-pixbuf.h: * widgets/rb-cell-renderer-rating.h: * widgets/rb-rating.h: fix the prototypes of various class-closures. 2006-04-09 Jonathan Matthew * widgets/libsexy/Makefile.am: Actually use internal libsexy headers, so we can build without a system-wide installed copy. 2006-04-09 James Livingston * data/glade/general-prefs.glade: * data/rhythmbox.schemas: * lib/rb-glade-helpers.c: (rb_glade_boldify_label), (rb_combo_box_hyphen_separator_func): * lib/rb-glade-helpers.h: * lib/rb-preferences.h: * shell/rb-shell-preferences.c: (rb_shell_preferences_init), (rb_shell_preferences_sync), (rb_shell_preferences_toolbar_style_cb), (rb_shell_preferences_browser_views_activated_cb): * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_sync_toolbar_state), (toolbar_state_changed_cb): Allow the overriding of the toolbar style, as the HIG suggests. Fixes bug 336797. 2006-04-09 James Livingston * sources/rb-audiocd-source.c: (entry_set_string_prop): validate the data that MusicBrainz returns to us. Last part of bug 334167. 2006-04-09 James Livingston * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): fix a crasher if xmlCreateMemoryParserCtxt returns NULL. Fixes bug 336842. 2006-04-09 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_rows_reordered_cb): update the entry view properly when the rows are reordered. Fixes bug 337019. 2006-04-09 James Livingston * configure.ac: * widgets/Makefile.am: * widgets/libsexy/Makefile.am: * widgets/libsexy/sexy-icon-entry.c: * widgets/libsexy/sexy-icon-entry.h: add an internal copy of part of libsexy, and allow building against it or a system-wide installed copy. * widgets/rb-search-entry.c: (rb_search_entry_init), (rb_search_entry_changed_cb): use libsexy to add a clear button to the search box. Fixes bug 128109. 2006-04-09 James Livingston patch by: Alex Lancaster * widgets/rb-entry-view.c: (rb_entry_view_init), (rb_entry_view_finalize), (rb_entry_view_constructor): use the Play and Pause icons rather than the volume ones in the Now Playing column. Closes bug 336482. 2006-04-08 James Livingston * bindings/python/override_common.h: * bindings/python/rb.override: * bindings/python/rhythmdb.override: bind some more functions 2006-04-08 Jonathan Matthew * metadata/rb-metadata-dbus-service.c: (_send_error): Send NULL error messages as empty strings, so _NOT_AUDIO_IGNORE errors are sent properly and we don't get 'method doesn't exist' messages from dbus instead. 2006-04-08 James Livingston * bindings/python/override_common.h: * bindings/python/override_common.c: (_helper_wrap_pointer_glist), (_helper_wrap_boxed_glist), (_helper_unwrap_string_pylist): add some more utility functions for C<->Python conversions * widgets/rb-entry-view.c: (rb_entry_view_column_get_type), (rb_entry_view_state_get_type): * widgets/rb-entry-view.h: make the colume type and entry view state GTypes * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: bind RBEntryView, RBPropertyView and RBSource. 2006-04-08 James Livingston * backends/gstreamer/rb-encoder-gst.c: (bus_watch_cb): add a missing initialiser for a GError * sources/rb-source.c: (rb_source_eof_type_get_type): * sources/rb-source.h: add a GType for RBSourceEOFType * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: bind RBSource and RBSourceList 2006-04-07 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_get_property), (rb_shell_player_get_active_source), (rb_shell_player_set_playing_source_internal): * shell/rb-shell-player.h: Change 'playing-from-queue' from being a signal to being a property. * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_playing_from_queue_cb), (rb_shell_view_queue_as_sidebar_changed_cb), (rb_shell_jump_to_entry_with_source): When the queue side pane is used, make 'jump to current' jump to the entry in the registered source for its type, rather than in the queue, and show it as playing in that source. * sources/rb-sourcelist.c: (rb_sourcelist_set_playing_source): * sources/rb-sourcelist.h: Remove the 'preempted source' stuff, since it wasn't doing anything anyway. 2006-04-07 Jonathan Matthew * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post), (download_progress_cb): Canonicalise downloaded file location before setting the mountpoint property of the corresponding entry. Fixes #337287 and a couple of memory leaks. 2006-04-06 Jonathan Matthew * metadata/rb-metadata-dbus-service.c: (test_can_save), (test_load), (main): Call g_set_prgname, report errors more usefully in test mode. * metadata/rb-metadata-gst.c: (rb_metadata_gst_typefind_cb), (rb_metadata_load): Don't ignore the have-type signal for non-audio files. Run the event loop when the state change fails so we get the error messages from the bus. Fixes #336921. 2006-04-05 William Jon McCann * data/art/Makefile.am: Install media-eject. * lib/rb-stock-icons.c (rb_stock_icons_init): Check return value of rb_file. Fixes #337209 2006-04-05 Jonathan Matthew Patch by: William Jon McCann * metadata/test-metadata.c: (main): Use GOption to parse arguments. * podcast/rb-podcast-manager.c: (rb_podcast_manager_save_metadata): Fix GError leak. 2006-04-04 William Jon McCann * backends/gstreamer/rb-encoder-gst.c (add_tags_from_entry): Don't try to add a date when we don't have one. Fixes #336741. Also fix variable declaration in middle of block. 2006-04-04 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_playpause): Don't crash if source is already NULL. Hackishly fixes bug #336912. 2006-04-02 James Livingston * metadata/rb-metadata-gst.c: (rb_metadata_gst_typefind_cb): fix the inverted logic causing imports to fail. 2006-04-02 Jonathan Matthew * shell/main.c: (main): Fix dbusless build. 2006-04-02 Christophe Fergeau * player/rb-recorder-gst.c: fix packing of the C struct holding a wav header for non-gcc compilers (not tested much, was only written according to docs) 2006-04-02 Jonathan Matthew * shell/main.c: (main): Check if we got a dbus connection before trying to create a proxy for the shell object. Fixes #336634. 2006-04-02 Jonathan Matthew * doc/reference/Makefile.am: * plugins/lirc/rb-lirc-plugin.c: (rb_lirc_plugin_class_init): * shell/rb-source-header.c: * sources/rb-generic-player-source.c: (default_transform_playlist_uri): Fix various build issues. Patch approximately 50% by Alex Lancaster 2006-04-02 Jonathan Matthew * configure.ac: Detect LIRC. * plugins/Makefile.am: * plugins/lirc/Makefile.am: * plugins/lirc/lirc.rb-plugin.desktop.in: * plugins/lirc/rb-lirc-plugin.c: LIRC plugin. * shell/Makefile.am, shell/rb-remote.c, shell/rb-remote.h: Remove obsolete files. 2006-04-02 James Livingston * sources/rb-generic-player-source.c: (default_transform_playlist_uri): consider playlist paths as relative to the volume root by default, since that is what most players use. 2006-04-02 James Livingston * lib/rb-util.c: (rb_mime_get_friendly_name): * lib/rb-util.h: add helper function to get the "friendly" name for a mime-type * metadata/rb-metadata-gst.c: (rb_metadata_init), (rb_metadata_gst_typefind_cb), (rb_metadata_gst_unknown_type_cb): give the user better error messages about undecodable streams, using the "friendly" name if possible. Fixes bug 128109. 2006-04-02 James Livingston * backends/gstreamer/rb-encoder-gst.c: (progress_timeout_cb), (start_pipeline): fix building with gstreamer 0.8 2006-04-02 James Livingston * sources/rb-podcast-source.c: (impl_delete), (rb_podcast_source_cmd_delete_feed), (rb_podcast_source_cmd_update_feed): copy the list before traversing it, since it may change during traversal. Fixes bug 336204. 2006-04-01 James Livingston * data/art/media-eject.png: add the media-eject icon from Banshee (BSD-licensed), for use when the user's icon theme doesn't have one. * lib/rb-stock-icons.c: (rb_stock_icons_init): use the above. Fixes bug 334897. 2006-04-01 James Livingston * shell/rb-shell-player.h: * shell/rb-shell-player.c: (rb_shell_player_play), (rb_shell_player_stop), (rb_shell_player_pause), (filter_mmkeys): add new rb_shell_player_{play,pause} functions, so everyone doesn't have to do rb_shell_player_playing followed by rb_shell_player_playpause. * shell/rb-shell.c: (rb_shell_sync_smalldisplay), (rb_shell_get_playlist_manager_path), (rb_shell_get_ui_manager): * shell/rb-shell.h: add rb_shell_get_ui_manager. * bindings/python/rb.defs: bind the above to Python, and remove some useless stuff from the bindings. 2006-04-01 James Livingston * backends/gstreamer/rb-encoder-gst.c: (add_tags_from_entry): add disc number tag. * shell/rb-shell.c: * shell/rb-shell.h: export rb_shell_get_source_by_entry_type. * sources/rb-daap-source.c: (rb_daap_source_class_init): set _can_copy to true. * sources/rb-iradio-source.c: (rb_iradio_source_class_init): * sources/rb-podcast-source.c: (rb_podcast_source_class_init): reorder method assigning, so it's understandable * sources/rb-library-source.c: (rb_library_source_class_init), (impl_paste): rather than hard-coding the types to ignore, use rb_source_can_copy. 2006-03-31 Jonathan Matthew * sources/rb-library-source.c: (rb_library_source_preferences_sync): Don't crash if no audio profile is selected and the gconf schemas are not installed. 2006-03-31 James Livingston * plugins/rb-python-module.c: (rb_python_module_load): add a missing "*" which caused compilation to fail 2006-03-31 James Livingston * configure.ac: * Makefile.am: * backends/Makefile.am: * backends/gstreamer/Makefile.am: * backends/gstreamer/rb-encoder-gst.c: * backends/gstreamer/rb-encoder-gst.h: * backends/rb-encoder.c: * backends/rb-encoder.h: add a interface for transcoding, and a GStreamer implementation of it (based on Sound-Juicer's code). * shell/Makefile.am: * shell/rb-removable-media-manager.c: (rb_removable_media_manager_class_init), (rb_removable_media_manager_init), (rb_removable_media_manager_dispose), (rb_removable_media_manager_finalize), (rb_removable_media_manager_scan), (emit_progress), (error_cb), (progress_cb), (completed_cb), (do_transfer), (rb_removable_media_manager_queue_transfer), (copy_entry), (rb_removable_media_manager_cmd_copy_tracks): * shell/rb-removable-media-manager.h: use the encoder interface to perform transfers of entries to other locations * shell/rb-shell-player.c: (open_location_thread): * shell/rb-shell.c: (rb_shell_class_init), (rb_shell_get_property), (rb_shell_constructor), (rb_shell_transfer_progress_cb), (rb_shell_quit): * shell/rb-statusbar.c: (rb_statusbar_set_progress): display transfer progress in the status bar. * shell/rb-shell-preferences.c: (rb_shell_preferences_init), (rb_shell_preferences_sync), (rb_shell_preferences_browser_views_activated_cb): * data/glade/general-prefs.glade: move the browser views setting from the library tab to the general one. * data/glade/library-prefs.glade: add settings for the layout of the user's library, and their preferred encoding format (e.g. for CD ripping). * lib/rb-preferences.h: * data/rhythmbox.schemas: add keys for the above options (and a few other minor ones) * rhythmdb/rhythmdb.c: (rhythmdb_entry_example_new): * rhythmdb/rhythmdb.h: add a new function for creating an "example" entry, that isn't inserted into the database. * sources/rb-audiocd-source.c: (rb_audiocd_source_class_init), (rb_audiocd_create_track_entry): * data/ui/rhythmbox-ui.xml: add a toolbar button for ripping audio cds, and set the mime-type of audio cd tracks correctly. * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (rb_library_source_edit_profile_clicked_cb), (impl_get_config_widget), (rb_library_source_preferences_sync), (impl_receive_drag), (rb_library_source_path_changed_cb), (rb_library_source_filename_changed_cb), (rb_library_source_format_changed_cb), (sanitize_path), (filepath_parse_pattern), (layout_example_label_update), (rb_library_source_layout_path_changed), (rb_library_source_layout_filename_changed), (build_filename), (impl_can_paste), (completed_cb), (impl_paste): allow the copying of entries to the library. Large chunks of code for determining the destination file name stolen from Sound-Juicer. * sources/rb-sourcelist-model.c: (path_is_droppable): * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): * sources/rb-source.c: (rb_source_class_init), (rb_source_can_cut), (rb_source_can_paste): * sources/rb-source.h: add a new _can_paste method, and use it (rather than _can_copy) to determine whether we can paste into the source. 2006-03-31 Steve Frécinaux * plugins/rb-python-module.c: allow import of python modules with a '.' (gedit's bug 336403). Patch by Johan Dahlin. 2006-03-31 James Livingston * sources/rb-library-source.c: * sources/rb-library-source.h: * sources/rb-browser-source.c: * sources/rb-browser-source.h: Split RBLibrarySource into two. RBBrowserSource now contains all the stuff for having a source which views a particular entry type (including browsers and searching). RBLibrarySource derives from this, and includes the library-specific stuff, like importing and library watching. Fixes some issues where library-derived sources were doing things that should be library-specific. Fixes bug 335185. * data/ui/rhythmbox-ui.xml: * sources/Makefile.am: modifications for the above * sources/rb-daap-source.c: (rb_daap_source_class_init), (rb_daap_source_get_paned_key): * sources/rb-daap-source.h: * sources/rb-ipod-source.c: (rb_ipod_source_constructor): * sources/rb-removable-media-source.c: (rb_removable_media_source_class_init): * sources/rb-removable-media-source.h: derive from RBBrowserSource instead of RBLibrarySource. 2006-03-31 James Livingston * rhythmdb/rhythmdb-query-model.c: use guin64 instead of guint, which I buggered up when changing from GnomeVFSFileSize. 2006-03-30 James Livingston * configure.ac: lower pygtk deps to 2.6, and add a makefile variable for "-Wno-error". * bindings/python/rb.override: * bindings/python/Makefile.am: make the RB python bindings depend on the RhythmDB ones, and use "-Wno-error" since the machine-generated code sometimes emits warnings. * shell/rb-shell-player.c: (rb_shell_player_class_init), (rb_shell_player_error_get_type): * shell/rb-shell-player.h: * bindings/python/rb.defs: add bindings for RBShellPlayer * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_query_type_get_type), (rhythmdb_prop_type_get_type), (rhythmdb_entry_get_type), (rhythmdb_query_get_type): * rhythmdb/rhythmdb.h: * shell/rb-shell.c: (rb_shell_get_song_properties): * widgets/rb-entry-view.c: (propid_from_name): * widgets/rb-property-view.c: (rb_property_view_class_init): * bindings/python/rhythmdb.defs: make RhythmDBQuery a type (rather than just plain GPtrArray, and add bindings for it. * bindings/python/rhythmdb.override: wrap some functions that use GValues 2006-03-30 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_process_metadata_load): Only watch directories from which entries of type SONG have been added. 2006-03-29 Jonathan Matthew * widgets/rb-library-browser.c: (rb_library_browser_set_selection): No need to restore the selection after rebuilding the child model, since that can't have changed the selection. 2006-03-29 James Livingston * bindings/python/override_common.c: * bindings/python/override_common.h: add some for missing files to cvs. 2006-03-29 James Livingston * configure.ac: * bindings/python/Makefile.am: remove usage of gtksourceview, it was copied from gedit's autofoo and we don't need it * bindings/python/rhythmdb.defs: * bindings/python/rhythmdb.override: add missing files to cvs 2006-03-29 Jonathan Matthew * data/ui/rhythmbox-ui.xml: Add 'add to queue' menu item. * metadata/rb-metadata-dbus-service.c: (main): Call rb_debug_init before running any of the debug/test modes. * plugins/rb-plugins-engine.c: (rb_plugins_engine_load_all): Make plugin loading work when running uninstalled from the shell/ directory. 2006-03-29 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_sync), (rhythmdb_property_model_column_get_type): * rhythmdb/rhythmdb-property-model.h: make the column enum a GType * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init): * rhythmdb/rhythmdb-query-model.h: * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_compute_status_normal), (rhythmdb_get_property_type), (rhythmdb_entry_get_type): * rhythmdb/rhythmdb.h: make RhythmDBEntry a GType. * widgets/rb-query-creator-properties.c: * widgets/rb-song-display-box.c: #include , which was missing. * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: * plugins/rb-python-module.c: (rb_python_module_init_python): add Python bindings for RhythmDB. 2006-03-29 James Livingston * shell/rb-shell.c: (rb_shell_constructor): don't activate DAAP sharing when using --no-registration 2006-03-29 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_reapply_query): Don't remove entries while iterating, as it breaks the sequence nodes. Instead, collect a list of removed entries and process it after iterating the sequence. Fixes #334642. 2006-03-29 James Livingston * plugins/rb-plugin-manager.c: (active_toggled_cb), (row_activated_cb), (plugin_manager_toggle_all): * sources/rb-sourcelist.c: (rb_sourcelist_source_to_iter), (rb_sourcelist_visible_source_to_iter), (row_activated_cb), (button_press_cb), (source_name_edited_cb): * widgets/rb-property-view.c: (rb_property_view_set_property), (rb_property_view_post_row_deleted_cb), (rb_property_view_row_activated_cb), (rb_property_view_selection_changed_cb), (rb_property_view_button_press_cb): fix warnings with GTK HEAD, about ignoring the return value of gtk_tree_model_get_iter. Fixes bug 335516. 2006-03-29 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_drag_data_received): Increment the reference count for entries added by drag and drop. Fixes #336045. 2006-03-27 Jonathan Matthew * daapsharing/rb-daap-connection.c: (entry_set_string_prop): * metadata/rb-metadata-gst.c: (rb_metadata_gst_load_tag): Ignore invalid UTF-8 strings. Fixes most of #334167. 2006-03-27 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_sync_window_state): fix a maximise-realise race that would cause some widgets to be resized after we had explicity set theri size. Hopefully fixes bug 331927. 2006-03-27 James Livingston * plugins/rb-plugin-manager.c: (active_toggled_cb), (row_activated_cb), (plugin_manager_set_active), (plugin_manager_toggle_active), (plugin_manager_toggle_all): update configure button sensitivity when a plugin is enabled/disabled. 2006-03-27 James Livingston * data/glade/plugins.glade: turn from a GtkDialog to a GtkWindow to stop warnings, only the vbos is used anyway * plugins/rb-plugins-engine.c: (garbage_collect_cb), (rb_plugins_engine_init), (rb_plugins_engine_shutdown): run gabage collection every now an then. * plugins/rb-python-plugin.c: (rb_python_object_finalize): don't crash if we are finalising because the python object couldn't be created. * plugins/rb-python-module.c: (rb_python_module_new_object): return NULL if the python-side object couldn't be created. Stops crashes when the object is later used when it doesn't exist in Python. (run_gc), (rb_python_garbage_collect), (finalise_collect_cb), (rb_python_shutdown): do better garbage collection when shutting down. Fixes the problem where Python was holding a reference to the shell, causing RB not to exit. 2006-03-27 James Livingston * configure.ac: don't define HAVE_LIBSOUP when we don't. Fixes bug 336131. 2006-03-27 James Livingston * data/iradio-initial.pls: Change the AfterHours DJ stream address. From bug 334829. 2006-03-26 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_sync_library_location): set the library location list to NULL after we free it. Fixes bug 336047. 2006-03-26 James Livingston patch by: Alex Lancaster * sources/rb-audiocd-source.c: use the release-date that MusicBrainz supplies. Fixes bug 335947. 2006-03-25 James Livingston * data/glade/audioscrobbler-prefs.glade: * shell/rb-audioscrobbler.c: (rb_audioscrobbler_enabled_check_changed_cb): move and rename the "submit songs" checkbox, and make it not disable username/password entry. This will be needed when we support other last.fm stuff (profile access, radio, etc). 2006-03-24 Dennis Cranston * widgets/bacon-volume.c: (bacon_volume_scale_value_changed): Volume should not display stock_volume-0 for volume > 0. Fixes bug 335777. 2006-03-24 James Livingston * shell/rb-shell-player.c: (rb_shell_player_set_property), (rb_shell_player_sync_play_order), (rb_shell_player_play_order_update_cb), (actually_set_playing_source): update the next/previous availablility in places where it was missing. Fixes bug 335490. 2006-03-24 James Livingston * lib/rb-glade-helpers.c: (rb_glade_boldify_label): don't crash if we can't find the widget * lib/rb-util.c: (rb_uri_list_parse): * lib/rb-util.h: add function for parsing a URI list into strings. * metadata/Makefile.am: make the metdata helper build when linking with --as-needed * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post): use g_mkdir_with_parents instead of coding our own. * podcast/rb-podcast-parse.c: (rb_set_channel_value): prefer over , instead of using whichever comes last. * rhythmdb/rhythmdb-private.h: * rhythmdb/rhythmdb.c: (rhythmdb_entry_allocate): remove the "magic" field, as we don't ever check it (to detect corruption). Saves a bit of memory. 2006-03-24 Jonathan Matthew * lib/rb-file-helpers.c: (escape_extra_gnome_vfs_chars), (rb_uri_handle_recursively_cb), (rb_canonicalise_uri): Escape '&' and '=' in the paths we get back from gnome_vfs_directory_visit. Fixes #333998 a bit more. 2006-03-22 Jonathan Matthew * shell/rb-shell.c: (rb_shell_constructor): Issue startup notification after creating the main window, so notification is issued whether the window is visible or not. Fixes #335086. 2006-03-22 Jonathan Matthew * sources/rb-auto-playlist-source.c: (impl_search), (rb_auto_playlist_source_query_complete_cb), (rb_auto_playlist_source_do_query): * sources/rb-library-source.c: (impl_search), (rb_library_source_query_complete_cb), (rb_library_source_do_query): Defer subset searches (where text is appended to an existing search) until the original query is complete. 2006-03-21 Ryan P Skadberg patch by: Jonathan Matthew * rhythmdb/rb-refstring.c: (rb_refstring_get_folded), (rb_refstring_get_sort_key): fixes for strict-aliasing 2006-03-21 James Livingston * shell/rb-shell.c: (rb_shell_load_uri): don't add a new playlist when importing a single file. Fixes bug 335307. 2006-03-21 James Livingston * shell/Makefile.am: remove the reference to backends/ that I accidently included. 2006-03-21 James Livingston patch by: Brian Cameron to fix comilation with Forte (on Solaris). Closes bug 335318. * configure.ac: * lib/Makefile.am: * player/rb-recorder-gst.c: * podcast/rb-podcast-parse.c: * remote/bonobo/Makefile.am: * remote/rb-remote-proxy.c: (rb_remote_proxy_set_repeat): * rhythmdb/rhythmdb-query-model.c: (idle_process_update), (rhythmdb_query_model_add_entry), (rhythmdb_query_model_add_results): * rhythmdb/rhythmdb.c: (rhythmdb_entry_foreach): * rhythmdb/rhythmdb.h: * shell/Makefile.am: * sources/rb-playlist-source-recorder.c: (get_write_speeds), (update_speed_combobox): * sources/rb-sourcelist-model.c: 2006-03-21 James Livingston Patch by: Alex Lancaster * player/Makefile.am: * shell/Makefile.am: work correctly with a separate build root. 2006-03-21 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_monitor_uri_path): don't crash if we get handed NULL. 2006-03-21 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry): Only create ignore entries when importing into the library. Ignore entries for files in removable media sources don't help. 2006-03-21 Jonathan Matthew * shell/rb-source-header.c: (rb_source_header_focus_search_box): * shell/rb-source-header.h: * widgets/rb-search-entry.c: (rb_search_entry_grab_focus): * widgets/rb-search-entry.h: Add functions to make the search box grab focus. * shell/rb-shell.c: (rb_shell_cmd_view_all): Focus the search box after handling the 'view all' action. 2006-03-20 Jonathan Matthew * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_execute_multi_stat_info_cb), (rhythmdb_start_action_thread), (rhythmdb_execute_stat_info_cb), (rhythmdb_execute_stat), (queue_stat_uri), (rhythmdb_execute_load), (action_thread_main): Collect all the get_file_info requests on startup into one gnome-vfs job to reduce overhead and avoid contention for the rhythmdb lock. Add a new method to call when all initial query models are set up. * shell/rb-shell.c: (idle_handle_load_complete): Call rhythmdb startup complete function when we've loaded all the playlists. Fixes #334106. 2006-03-20 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_set_property), (rb_entry_view_selection_changed_cb), (rb_entry_view_have_complete_selection): make has_complete_selection not slow. Fixes a performance issue I added a week or so ago. 2006-03-20 James Livingston * shell/rb-shell-player.c: (volume_pre_unmount_cb): check for NULL before passing to strcmp. From bug 334559. 2006-03-20 Jonathan Matthew * configure.ac: * lib/Makefile.am: * lib/rb-proxy-config.c: * lib/rb-proxy-config.h: Add a new object to watch the HTTP proxy configuration and emit signals when it changes. * shell/rb-audioscrobbler.c: * shell/rb-audioscrobbler.h: Use rb-proxy-config to watch HTTP proxy configuration. * shell/rb-shell.c: Construct rb-proxy-config object on startup, and remove all audioscrobbler references. * shell/Makefile.am: * plugins/audioscrobbler/Makefile.am: * plugins/audioscrobbler/rb-audioscrobbler-plugin.c: Move all audioscrobbler code into the plugin. We should move rb-audioscrobbler.* from shell/ to plugins/audioscrobbler/ at some point. Don't use a private data structure in the plugin, since the class definition isn't in a header file. Fixes #335091. 2006-03-20 James Livingston * shell/rb-shell-player.c: (rb_shell_player_play_order_update_cb): don't enable Next if the source has an EOS type other than RB_SOURCE_EOF_NEXT. Fixes bug 315120. 2006-03-20 James Livingston * widgets/rb-song-info.c: (rb_song_info_backward_clicked_cb), (rb_song_info_forward_clicked_cb): deal with there being no next/previous entry. (rb_song_info_query_model_inserted_cb), (rb_song_info_query_model_deleted_cb), (rb_song_info_query_model_reordered_cb), (rb_song_info_query_model_changed_cb): monitor the query for changes, to update the button status. Fixes bug 333293. 2006-03-20 James Livingston * shell/rb-shell.c: (rb_shell_set_visibility): fix minor sizing issue caused by my last commit 2006-03-20 James Livingston * bindings/python/Makefile.am: * bindings/python/rb.defs: * bindings/python/rb.override: add python bindings of RBRemoteProxy * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_set_visibility), (rb_shell_window_delete_cb): change tray-icon detection slightly 2006-03-19 Steve Frécinaux * data/ui/rhythmbox-ui.xml: * shell/rb-shell.c: Add an empty Tool Menu (hidden by default) containing placeholders for plugins. * configure.ac: * plugins/Makefile.am: * plugins/pythonconsole/Makefile.am: * plugins/pythonconsole/pythonconsole.py: * plugins/pythonconsole/pythonconsole.rb-plugin.desktop.in: Python Console plugin 2006-03-19 Jonathan Matthew * lib/rb-file-helpers.c: (rb_canonicalise_uri): Extra step to encode '&' and '=' to match what gnome-vfs does internally. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (rhythmdb_tree_save): Increment rhythmdb xml version to 1.2, and force another uri re-canonicalisation when loading v1.1 databases. Fixes bug #333998. 2006-03-19 Jonathan Matthew * daapsharing/rb-daap-mdns-browser-avahi.c: (client_cb), (avahi_client_init), (browse_cb): * daapsharing/rb-daap-mdns-publisher-avahi.c: (client_cb), (avahi_client_init): Fix compilation with Avahi 0.5.x (bug #334551). 2006-03-19 James Livingston Add Increase/Decrease Volume menu items and keybindings. From bug 123383. * data/ui/rhythmbox-ui.xml: * shell/rb-shell-player.c: (rb_shell_player_constructor), (rb_shell_player_init), (rb_shell_player_cmd_volume_up), (rb_shell_player_cmd_volume_down), (rb_shell_player_sync_volume): 2006-03-19 James Livingston patch by: Mikhail Zabaluev * shell/Makefile.am: fix the link order, so that we compile with "LDFLAGS=-Wl,--as-needed". Fixes bug 334852. 2006-03-19 James Livingston patch by: Adam Petaccia * data/ui/rhythmbox-ui.xml: move preferences below "configure plugins". Fixes bug 335037. 2006-03-18 James Livingston * rhythmdb/rb-refstring.c: (rb_refstring_get_folded), (rb_refstring_get_sort_key): fix type-punning warnings. Closes bug 332992. * widgets/rb-header.c: don't make artist/album info in the header the small size, since it's hard to read. 2006-03-16 William Jon McCann * rhythmdb/rhythmdb.c (rhythmdb_init): Make deleted_entries a hash. (rhythmdb_finalize): Don't leak the hash tables. (rhythmdb_emit_entries_deleted_idle, process_deleted_entries_cb) (rhythmdb_commit_internal): Make sure to process the deletions. (rhythmdb_entry_delete): Use a hash. * podcast/rb-podcast-manager.c: Random analness about char* (rb_podcast_manager_remove_feed): Add debugging. (rb_podcast_manager_db_entry_deleted_cb): Ditto. Check the result of gnome_vfs_unlink. Don't leak a uri. Fixes #334786 2006-03-18 James Livingston * NEWS: update NEWS file 2006-03-17 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_prop_changed_cb): Remove entries from the hash table after processing visible->hidden changes. 2006-03-16 William Jon McCann * sources/rb-daap-source.c (connection_connected_cb) (connection_disconnected_cb): Add debug. (rb_daap_source_get_headers): Check for NULL connection. * daapsharing/rb-daap-src.c (rb_daap_src_open): Check return value of rb_daap_source_get_headers. Fixes #332089 2006-03-16 Jonathan Matthew * widgets/rb-library-browser.c: (rb_library_browser_set_selection): Restore the selection after rebuilding the child model, so the selection is shown correctly after using the 'browse this album/artist/genre' menu items. 2006-03-15 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_set_property): Clear the selection before changing the active model. Fixes crash reported in bug 334549. 2006-03-15 James Livingston * shell/rb-tray-icon.c: (rb_tray_icon_constructor), (rb_tray_icon_sync_action): * widgets/eggtrayicon.c: (egg_tray_icon_send_message), (egg_tray_icon_cancel_message), (egg_tray_icon_notify): remove support for non-libnotify notification bubbles. Fixes bug 331721. 2006-03-15 James Livingston Add search-bar options to playlists. Fixes bug 334407. * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (rb_auto_playlist_source_constructor), (rb_auto_playlist_source_do_query), (impl_get_search_actions), (search_action_to_prop), (search_action_changed): * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_constructor), (construct_query_from_selection), (impl_get_search_actions), (search_action_to_prop), (search_action_changed): 2006-03-14 William Jon McCann * shell/rb-source-header.c (rb_source_header_set_source_internal): Remove broken attempt at making the search bar buttons not homogeneous. It wasn't working and was causing some UI sizing weirdness. 2006-03-14 William Jon McCann * sources/rb-static-playlist-source.c (rb_static_playlist_source_dispose): Chain up to parent's dispose instead of finalize. Fixes #334479. 2006-03-14 William Jon McCann * widgets/rb-header.c (rb_header_sync): Escape album and artist before adding to markup. 2006-03-14 William Jon McCann * shell/rb-shell-player.c: (rb_shell_player_sync_with_source): * widgets/rb-header.c: (rb_header_class_init), (rb_header_init), (rb_header_set_property), (rb_header_get_property), (rb_header_sync): Remove the GnomeUrl song links until we can do it properly. Fixes #334453. 2006-03-14 Jonathan Matthew * shell/rb-source-header.c: (rb_source_header_clear_search): Remove the stored search text from the hash table, so it doesn't reappear after switching to another source and back. * sources/rb-auto-playlist-source.c: (impl_search): * sources/rb-library-source.c: (impl_search), (impl_reset_filters): * sources/rb-static-playlist-source.c: (impl_search): Make sure all sources treat impl_search(NULL) and impl_search("") the same. Fixes #334525. 2006-03-14 James Livingston Store which thread created new entries, and make rhythmdb_commit only insert the entries for the thread that calls it. This stops one thread calling rhythmdb_commit inserting entries that are half-way through construction by another thread (as happens with audio cds). From bug 330226. * rhythmdb/rhythmdb.c: (rhythmdb_init), (rhythmdb_emit_entries_added_idle), (process_added_entries_cb), (rhythmdb_commit_internal), (timeout_rhythmdb_commit), (rhythmdb_add_timeout_commit), (rhythmdb_commit), (rhythmdb_entry_insert), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_process_queued_entry_set_event), (rhythmdb_prop_get_type): 2006-03-14 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_class_init), (rhythmdb_query_model_dispose), (rhythmdb_query_model_finalize): Move object unrefs from _finalize into _dispose. * shell/rb-play-order.c: (rb_play_order_query_model_changed): Remove extra g_object_ref that was causing query model leaks. * sources/rb-iradio-source.c: (rb_iradio_source_dispose), (rb_iradio_source_constructor), (impl_search), (genre_selected_cb), (genre_selection_reset_cb), (rb_iradio_source_do_query): Remove the cached 'all' query, since it doesn't really help and it makes the code more complicated. Attach the genre property view to the query model build from the search text, so only genres for stations matching the search terms are displayed. Preserve the genre selection across searches. * widgets/rb-library-browser.c: (rb_library_browser_class_init), (rb_library_browser_get_property): Add properties for the input and output models for the browser, and remove the 'changed' signal as we can just use notify::output-model. (ignore_selection_changes), (selection_restore_data_destroy), (query_complete_cb), (restore_selection): Helper functions for preserving selections across query model rebuilds. (rebuild_output_model): New function for creating a query model to use as the display model for a source using the browser. (rebuild_child_model): Add a call to rebuild_output_model, add missing g_object_unrefs, reuse the parent's query model when there's no selection, and use ignore_selection_changes and restore_selection. (rb_library_browser_set_selection): rebuild_child_model emits the changed signal, so no need to do it here. (rb_library_browser_set_model): Add missing g_object_unrefs, and use ignore_selection_changes and restore_selection. * widgets/rb-library-browser.h: Remove 'changed' signal, and add a flag to rb_library_browser_set_model indicating whether the query is asynchronous. * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_dispose): (rb_static_playlist_source_constructor): Add an extra reference on the base model, so it doesn't vanish when we set a new display model based on a search or browser selection. (impl_search): Ensure the search_text field in the source is NULL if the search box is empty. (construct_query_from_selection), (rb_static_playlist_source_do_query): Use the query model constructed from the search as the input model for the browser. (rb_static_playlist_source_browser_changed_cb): Use the browser's output model as the query model for the source. * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_finalize): Free more stuff. (rb_auto_playlist_source_constructor), (rb_auto_playlist_source_browser_changed_cb): Update for rb-library-browser changes, use the browser's output query model as the query model for the source. (impl_reset_filters), (impl_search), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query): Use the query model constructed from the search text as the input to the library browser, and when adding text to an existing search, apply the new query to the existing query model. * sources/rb-library-source.c: (rb_library_source_dispose): (rb_library_source_finalize): Chain dispose up to the parent class. (rb_library_source_constructor): Update for rb-library-browser changes. (impl_search): Ensure search_text is NULL if the search box is empty, and use the subset flag to _do_query if text has been appended to an existing search. (search_action_changed), (impl_reset_filters): (rb_library_source_browser_changed_cb), (rb_library_source_do_query): Use the browser's output model as the query model for the source. Rework library and playlist sources to use a single query chain, and to limit the entries shown in property views based on the search terms. Fixes bug #322787. 2006-03-14 Jonathan Matthew * configure.ac: Enable metadata helper by default, and fix a typo. 2006-03-13 James Livingston Make RBRefStrings lazily create the folded and sort-key strings when they are first used. This will same some memory by not creating ones that are never used, and delaying some of the others to when the user resorts or performs a similar action. Fixes bug 332992. * rhythmdb/rb-refstring.c: (rb_refstring_free), (rb_refstring_system_init), (rb_refstring_new), (rb_refstring_ref), (rb_refstring_get), (rb_refstring_get_folded), (rb_refstring_get_sort_key), (rb_refstring_hash), (rb_refstring_equal): * rhythmdb/rb-refstring.h: * rhythmdb/rhythmdb.c: (rhythmdb_entry_sync_mirrored): 2006-03-12 William Jon McCann * data/ui/rhythmbox-ui.xml: * lib/rb-stock-icons.c: (rb_stock_icons_init): * lib/rb-stock-icons.h: * shell/rb-shell-player.c: * shell/rb-shell.c: (rb_shell_constructor): * shell/rb-source-header.c: (force_no_shadow), (ui_manager_add_widget_cb), (rb_source_header_constructor), (rb_source_header_class_init), (rb_source_header_init), (merge_source_ui_cb), (toolbar_set_homogeneous), (rb_source_header_set_source_internal), (rb_source_header_set_property), (rb_source_header_get_property), (rb_source_header_set_source), (rb_source_header_new), (rb_source_header_filter_changed_cb): * shell/rb-source-header.h: * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_init), (search_action_to_prop), (search_action_changed), (rb_library_source_constructor), (impl_search), (impl_reset_filters), (impl_get_search_actions), (construct_query_from_selection): * sources/rb-podcast-source.c: (rb_podcast_source_class_init), (rb_podcast_source_init), (search_action_to_prop), (search_action_changed), (rb_podcast_source_constructor), (construct_query_from_selection), (impl_get_ui_actions), (impl_get_search_actions): * sources/rb-source.c: (rb_source_class_init), (rb_source_get_ui_actions), (default_get_search_actions), (rb_source_get_search_actions): * sources/rb-source.h: Add a search bar. Fixes #328618 2006-03-12 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal): * shell/main.c: (main): make --no-update not stat files checking for changes, instead of doing nothing. Fixes bug 125177. 2006-03-12 James Livingston * podcast/rb-podcast-manager.c: (rb_podcast_manager_thread_parse_feed): * podcast/rb-podcast-parse.c: (rb_podcast_parse_load_feed): * podcast/rb-podcast-parse.h: ask the user before rejecting a feed for having an invalid mime-type. Fixed bug 329813. 2006-03-12 James Livingston Make ide tag-editing work on 0.10, if id3mux 0.10.2 is present. Finally lets us close bug 309609. * metadata/rb-metadata-gst.c: (id3_pad_added_cb), (rb_add_id3_tagger), (rb_metadata_init): make id3 tag editing work on 0.10 * widgets/rb-song-info.c: (rb_song_info_sync_entries): fix the inverted logic of the editable check. 2006-03-12 James Livingston Make API doc generation work again. Fixes bug 334276. * doc/reference/Makefile.am: * doc/reference/tmpl/rb-debug.sgml: * doc/reference/tmpl/rb-druid.sgml: * doc/reference/tmpl/rb-entry-view.sgml: * doc/reference/tmpl/rb-load-failure-dialog.sgml: * doc/reference/tmpl/rb-metadata.sgml: * doc/reference/tmpl/rb-shell.sgml: * doc/reference/tmpl/rhythmbox-unused.sgml: * doc/reference/tmpl/rhythmdb.sgml: 2006-03-12 James Livingston * shell/rb-shell-clipboard.c: (rb_shell_clipboard_set_source_internal), (rb_shell_clipboard_sync): don't try to use the source's entry view if it doesn't have one. Fixes bug 331673. * sources/rb-source.c: (rb_source_class_init): provide a default have_url implementation that returns FALSE. 2006-03-12 James Livingston * plugins/audioscrobbler/Makefile.am: don't delete as-powered.png when doing a distclean. Fixes bug 334221. Patch from Alex Lancaster * data/glade/Makefile.am: add plugins.glade. Fixes bug 334201. 2006-03-11 James Livingston * shell/rb-shell.c: (rb_shell_window_state_cb), (rb_shell_set_visibility), (rb_shell_window_configure_cb): don't update the window width/height when iconified. Stops the window changing size when it is restored from the tray, fixing bug 333824. 2006-03-11 James Livingston Try to get cvs to actually add the necessary files for plugin support 2006-03-11 James Livingston Add a plugin framework, with basic support for Python plugins (based on gedit's). Closes bug 330523. * Makefile.am: * shell/Makefile.am: * configure.ac: necessary autofoo. * data/ui/rhythmbox-ui.xml: add Edit->Plugins... * lib/rb-file-helpers.c: (rb_uri_get_dir_name): * lib/rb-file-helpers.h: * data/glade/plugins/glade: * lib/rb-preferences.h: * plugins/*: * bindings/*: plugin framework * plugins/sample/*: * plugins/sample-python/*: sample plugins * plugins/audioscrobbler/*: * shell/rb-audioscrobbler.c: (rb_audioscrobbler_class_init), (rb_audioscrobbler_set_property), (rb_audioscrobbler_gconf_changed_cb): turn audioscrobbler song submission into a plugin. shell/audioscrobbler.* should really be moved, but that sucks with cvs. * shell/rb-shell.h: * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_cmd_preferences), (rb_shell_plugins_window_delete_cb), (rb_shell_plugins_response_cb), (rb_shell_cmd_plugins), (rb_shell_quit): start and stop plugin framework. 2006-03-11 Jonathan Matthew * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal), (rhythmdb_entry_delete): Emit entry-deleted signals when rhythmdb_commit is called, rather than immediately, so we can't get change notifications afterwards. Fixes #331732. (rhythmdb_process_metadata_load): Add a commit after removing an entry so we can recreate it with a different type without getting confused. 2006-03-11 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor): don't use the drive name for audio CDs, use "Unknown CD". 2006-03-09 Jonathan Matthew patch by: James Henstridge * sources/rb-removable-media-source.c: (rb_removable_media_source_constructor): Get the device name from the GnomeVFSDrive if possible, since this is usually a more descriptive name. Fixes #333080. 2006-03-09 Jonathan Matthew patch by: Alex Lancaster * podcast/rb-podcast-manager.c: (rb_podcast_manager_insert_feed): Don't automatically download episodes when configured for manual updating. Fixes #331564. 2006-03-08 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_iter_from_string): Return an iterator for the 'all' property when name == NULL, and don't write to *iter if iter == NULL. 2006-03-06 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_do_next): When switching to the play queue, still call _go_next on the normal play order, so self-emptying auto playlists ("play count = 0" etc.) don't restart once the queue is empty. * shell/rb-tray-icon.c: Change shortcut for 'show notifications' to 'o' so it doesn't clash with 'next'. 2006-03-05 James Livingston * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): don't submit tracks which could not be played. Fixed bug 333013. * shell/rb-shell-player.c: (eos_cb): Don't update statistics for tracks which could not be played. 2006-03-05 James Livingston Sync musicbrainz lookup code from Sound-Juicer cvs. * metadata/sj-metadata-musicbrainz.c: (sj_metadata_musicbrainz_instance_init), (metadata_interface_init), (get_offline_track_listing), (artist_and_title_from_title), (cache_rdf), (get_cached_rdf), (get_rdf), (lookup_cd), (mb_list_albums), (mb_get_submit_url): * metadata/sj-metadata.c: (sj_metadata_get_submit_url): * metadata/sj-metadata.h: * metadata/sj-structures.c: (track_details_free), (album_details_free): * metadata/sj-structures.h: 2006-03-05 Jonathan Matthew * lib/rb-debug.h: * lib/rb-debug.c: (rb_debug_real), (rb_debug_init), (rb_debug_init_match), (rb_profiler_new), (rb_profiler_dump), (rb_profiler_reset), (rb_profiler_free): Filter debug output by matching the file and function names against a match string. * shell/main.c: (main): Add -D command line option to specify the debug match string. * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): Fix some typos in debug output. 2006-03-03 James Livingston * shell/rb-playlist-manager.c: (rb_playlist_manager_parse_file): * shell/rb-shell.c: (rb_shell_load_uri): * sources/rb-generic-player-source.c: (visit_playlist_dirs): * sources/rb-iradio-source.c: (rb_iradio_source_add_from_playlist): use the new "recurse" property from totem-plparser, if present. Stop RB hanging for new users who don't have a 'net connection. From bug 331508. 2006-03-02 Bastien Nocera * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): * sources/Makefile.am: * sources/rb-nokia770-source.c: (rb_nokia770_is_volume_player): Fix missing files on make dist (conditional files), only build the N770 support if there's HAL support, as we have no other ways of detecting it 2006-03-03 James Livingston * shell/rb-shell-clipboard.c: (rb_shell_clipboard_set_source_internal): really fix it this time. hopefully. 2006-03-03 James Livingston * shell/rb-shell-clipboard.c: (rb_shell_clipboard_sync): fix issue with the idle function not being removed. 2006-03-02 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_have_complete_selection): * widgets/rb-entry-view.h: add function for determining whether all entries are selected. * shell/rb-shell-clipboard.c: (rb_shell_clipboard_init), (rb_shell_clipboard_set_source_internal), (rb_shell_clipboard_finalize), (rb_shell_clipboard_idle_poll_deletions), (rb_shell_clipboard_entryview_changed_cb), (rb_shell_clipboard_entries_changed_cb): watch for entry additions and removals, to update things. (rb_shell_clipboard_sync): update the Select All and Select None sensitivity, based on what is selected. Fixed bug 172220. 2006-03-02 James Livingston * widgets/rb-library-browser.c: (rebuild_child_model): save and restore the selections of later models. This means that selecting the artist for the selected album does not reset the album selection. 2006-03-02 James Livingston * data/ui/rhythmbox-ui.xml: add the missing UI for generic players. Stops it emitting critical warnings. 2006-03-02 James Livingston * lib/rb-file-helpers.c: (rb_uri_append_uri): * lib/rb-file-helpers.h: Add uri concatenation function for when the second fragment is already escaped. * sources/rb-generic-player-source.c: (rb_generic_player_source_class_init), (rb_generic_player_source_constructor), (impl_show_popup), (rb_generic_player_source_load_playlists), (rb_generic_player_source_transform_playlist_uri), (handle_playlist_entry_cb), (visit_playlist_dirs), (default_load_playlists), (default_transform_playlist_uri): * sources/rb-generic-player-source.h: scan for playlists (m3u, pls) on the device. Allow subclasses to override the playlist loading, and (playlist uri)->(actual uri) mapping. A lot of devices which have playlists won't work right now, but people will see them and hopefully file bugs. * sources/rb-psp-source.c: (rb_psp_source_class_init), (rb_psp_source_create_playlists): Adapt the PSP for the above change * sources/Makefile.am: + sources/rb-nokia770-source.{c,h}: * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): Add support for reading playlists of Nokia 770s. 2006-03-02 Jonathan Matthew * data/glade/podcast-properties.glade: * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_init), (rb_podcast_properties_dialog_update), (rb_podcast_properties_dialog_update_location), (rb_podcast_properties_dialog_update_download_location): Add 'download location' field showing the path to the downloaded copy. Fixes #330696. 2006-03-01 Bastien Nocera * configure.ac: simplify HAVE_HAL define 2006-03-01 Bastien Nocera * configure.ac: * lib/rb-file-helpers.c: (rb_uri_append_path): * lib/rb-file-helpers.h: * shell/rb-removable-media-manager.c: (rb_removable_media_manager_mount_volume): * sources/Makefile.am: * sources/rb-ipod-source.c: * sources/rb-psp-source.*: Patch from James Livingston to add read-only Sony PSP support, additional HAL < 0.5 support by yours truly (Closes: #332337) 2006-03-02 James Livingston * shell/rb-shell-player.c: (rb_shell_player_set_property), (rb_shell_player_play), (rb_shell_player_jump_to_current), (swap_playing_source), (rb_shell_player_playpause), (rb_shell_player_sync_buttons), (actually_set_playing_source), (rb_shell_player_set_playing_source_internal): check for the entry view being NULL before trying to use it. Lets us support sources which don't have an entry view. From bug 331673. 2006-03-01 Bastien Nocera * shell/rb-audioscrobbler.c: (rb_audioscrobbler_load_queue): use gnome_vfs_read_entire_file with a URI, not a local filename 2006-03-01 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element): handle first-seen and last-seen when merging duplicate entries. 2006-03-01 Jonathan Matthew * widgets/rb-property-view.c: (rb_property_view_set_search_func): * widgets/rb-property-view.h: New function, allowing custom interactive search functions for property views. * sources/rb-podcast-source.c: (feed_select_change_cb): Only do a new query when the selection actually changes. (rb_podcast_source_constructor), (rb_podcast_source_feed_title_search_func): Interactive search function for podcast feed titles. Fixes #327451. 2006-03-01 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat_info_cb): don't chaneg the uri in the callback, since it causes symbols to not be escaped. Fixes bug 332976. * data/ui/rhythmbox-ui.xml: * sources/rb-import-errors-source.c: (rb_import_errors_source_class_init), (rb_import_errors_source_constructor), (impl_get_status), (impl_move_to_trash), (rb_import_errors_source_songs_show_popup_cb): add move-to-trash for import errors source * widgets/rb-entry-view.c: (rb_entry_view_location_cell_data_func), (rb_entry_view_append_column): unescape the URI for display. 2006-03-01 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load): fix crashers when the vfs get info function fails. 2006-02-28 Dennis Cranston * shell/rb-shell-clipboard.c: Use lowercase "to" in "Move to Trash". * shell/rb-shell.c: Use "Play Queue" and "Side Pane" terminology. * sources/rb-play-queue-source.c: (rb_play_queue_source_constructor), (rb_play_queue_source_new), (rb_play_queue_source_update_count): Use "Play Queue" instead of "Queued Songs". Fixes #331637. 2006-03-01 James Livingston * data/rhythmbox.schemas: change "boolean" to "bool" in the schema. Fixes bug 332913. 2006-03-01 James Livingston * daapsharing/rb-daap-mdns-browser-howl.c: (rb_daap_mdns_browser_class_init), (rb_daap_mdns_browser_finalize): * daapsharing/rb-daap-mdns-publisher-avahi.c: (rb_daap_mdns_publisher_class_init), (rb_daap_mdns_publisher_finalize): * lib/rb-thread.c: (rb_thread_class_init), (rb_thread_finalize): * player/rb-recorder-gst.c: (rb_recorder_class_init), (rb_recorder_finalize): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_constructor): * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor): * sources/rb-ipod-source.c: (rb_ipod_source_constructor): * sources/rb-playlist-source-recorder.c: (rb_playlist_source_recorder_style_set), (rb_playlist_source_recorder_class_init), (rb_playlist_source_recorder_finalize): * widgets/rb-query-creator.c: (rb_query_creator_constructor): fix the other classes in the same way, so they don't break when derived from. 2006-03-01 James Livingston * sources/rb-generic-player-source.c: (rb_generic_player_source_constructor): don't get the parent class in a dumb way, and it breaks when the class is derived from. 2006-02-28 Abel Cheung * configure.ac: Added "zh_HK" to ALL_LINGUAS. 2006-03-01 James Livingston * rhythmdb/gsequence.c: fix a typo in the last commit, that makes it not work in glib 2.8 systems. 2006-03-01 James Livingston * lib/rb-file-helpers.c: (rb_uri_is_local): just check for the file:// prefix instead of using gnome_vfs_uri_is_local, since the gnomevfs dev say it is crap. * podcast/rb-podcast-manager.c: (rb_podcast_manager_copy_post), (rb_podcast_manager_db_entry_deleted_cb): don't stop people putting podcasts on ion-local places * rhythmdb/gsequence.c: (g_sequence_node_new), (g_sequence_node_free): use gslice if we are building against glib 2.10. * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat): always async stats for local files too, so it doesn't block. 2006-02-28 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal): just check for the file:// prefix, instead of using gnome_vfs_uri_is_local, since that stats the file. Stops the UI blocking while stats are done. 2006-02-28 James Livingston * sources/rb-static-playlist-source.c: (rb_static_playlist_source_class_init), (rb_static_playlist_source_constructor), (impl_reset_filters), (impl_get_property_views), (impl_browser_toggled), (rb_static_playlist_source_do_query), (rb_static_playlist_source_browser_changed_cb): add browsers to static playlists. From bug 118862. * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init): disable them for the play queue. 2006-02-27 Dennis Cranston * data/glade/library-prefs.glade: Add a mnemonic. * sources/rb-library-source.c: (rb_library_source_location_button_clicked_cb): Use title capitalization for window title. 2006-02-28 James Livingston * sources/rb-auto-playlist-source.c: (construct_query_from_selection): don't create a subquery for only one criteria, as it's a silly effifiency degredation. 2006-02-28 James Livingston * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (save_entry), (rhythmdb_tree_save): add a new "Ignore" type, which is saved to disk * rhythmdb/rhythmdb.c: (set_props_from_metadata), (rhythmdb_process_stat_event), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load), (rhythmdb_entry_song_get_type), (rhythmdb_entry_ignore_get_type): When loading a file, which is marked IGNORE (e.g. known video stream) create an entry of the Ignore type. This will make importing files quicker as we don't need to try files that we know are not going to be interesting - especially useful when using the library watching facility. Fixes bug 323179. 2006-02-28 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_set_visibility): fix browser and source-list pane positioning, that I broke with the "remember visibility" patch. 2006-02-27 Jonathan Matthew * metadata/rb-metadata-dbus-service.c: (main): Change argument handling so you can use --debug with the --load and --can-save test modes. * metadata/rb-metadata-dbus-client.c: (start_metadata_service): Use a separate GMainContext, not the default one. Probably fixes #332344. 2006-02-27 James Livingston * shell/rb-shell.c: (rb_shell_constructor): focus the entry view when first starting up. Fixes bug 330342. 2006-02-27 James Livingston * sources/rb-sourcelist-model.c: (rb_sourcelist_model_set_dnd_targets): * widgets/rb-entry-view.c: (rb_entry_view_constructor): only use the COPY action for draging sources and tracks, not MOVE as well. Stops Nautilus moving file away, and fixes bug 332488. 2006-02-27 James Livingston patch by: Gunnar Steinn Magnusson * sources/rb-ipod-source.c: (load_ipod_db_idle_cb): read the Rating and Last Played metadata off iPods. Closes bug 324648. 2006-02-26 Jonathan Matthew * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor): Disable audioscrobbler when run with the --no-registration flag, since last.fm doesn't allow multiple concurrent clients per user. 2006-02-26 Jonathan Matthew * sources/rb-sourcelist.c: (rb_sourcelist_init), (key_release_cb): Rename renamable sources when F2 is pressed when the sourcelist has focus. Fixes #330700. 2006-02-26 Jonathan Matthew * shell/rb-playlist-manager.c: (cleanup_edit_data), (edit_auto_playlist_response_cb), (edit_auto_playlist_deleted_cb), (rb_playlist_manager_cmd_edit_automatic_playlist): Fix various crashes when deleting auto playlists previously edited by disconnecting signal handlers when the query editor is closed or the playlist is deleted. 2006-02-24 Jonathan Matthew * metadata/rb-metadata-gst.c: Correct comment referring to the now removed load failure dialog, and actually use the friendly file type name in error messages. 2006-02-24 James Livingston patch by: Baptiste Mille-Mathias * sources/rb-library-source.c: (rb_library_source_location_button_clicked_cb), (rb_library_source_preferences_sync), (rb_library_source_library_location_cb): convert the library URI to for display, and back again. Fixes bug 332356. 2006-02-23 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_process_stat_event), (rhythmdb_process_metadata_load), (monitor_subdirectory), (rhythmdb_sync_library_location): don't monitor files at all if watching is turned off. From bug 323096. 2006-02-23 James Livingston * data/rhythmbox.schemas: * lib/rb-preferences.h: * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_set_visibility): remember main window visibility between sessions. Fixes bug 127320. 2006-02-23 James Livingston * data/glade/library-prefs.glade: * sources/rb-library-source.c: (impl_get_config_widget), (rb_library_source_location_button_clicked_cb), (rb_library_source_preferences_sync), (rb_library_source_library_location_cb), (rb_library_source_watch_toggled_cb): change the library-location widgets from the file-chooser drop menu to a text entry and Browse button. This is needed to prevent the location from chaning if the directory cannot be found. Fixes bug 328414. 2006-02-23 James Livingston * sources/rb-podcast-source.c: add icon to the Cancel Download menu item. Fixes bug 329042. 2006-02-23 James Livingston patch by: Alex Lancaster * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): deal with extra comma in some podcast feeds. Fixes bug 332194. 2006-02-23 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_execute_stat): execute the stats at a lower priority. * sources/rb-audiocd-source.c: (rb_audiocd_create_track_entry): change the internal audio cd URIs from "cdda://device:track" to "cdda://track#device" as it makes processing much easier. * shell/rb-shell-player.c: (rb_shell_player_open_location): * player/rb-player-gst.c: don't have the shell close the player between songs, as doing that should be backend-specific. Make the gstreamer backend close before starting a new track, unless the old and new ones are both tracks on the same audio cd. Just seek in that case. 2006-02-23 Jonathan Matthew * doc/reference/rhythmbox.types: Fix doc build a bit more. 2006-02-23 Jonathan Matthew * configure.ac: Enable more warnings in my stupid setup too. * shell/rb-shell.c: Fix compile errors from last commit. Fixes #332210. 2006-02-22 Jonathan Matthew * sources/rb-missing-files-source.h, * sources/rb-missing-files-source.c, * sources/rb-import-errors-source.h, * sources/rb-import-errors-source.c: Add library meta-sources, showing missing files and import errors. Fixes #167763, #142322. * sources/rb-sourcelist-model.c: (rb_sourcelist_model_new): * sources/rb-sourcelist-model.h: * sources/rb-sourcelist.c: (rb_sourcelist_append), (match_source_to_iter), (rb_sourcelist_source_to_iter), (rb_sourcelist_visible_source_to_iter), (rb_sourcelist_remove), (visibility_notify_cb): Store source visibility in the sourcelist model, so we can determine child source counts correctly and get the sourcelist expander column right. * widgets/rb-entry-view.h: * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_append_column), (set_column_visibility): Allow the creator of the entry view to specify which columns are always visible. * sources/rb-source.h: * sources/rb-source.c: (_autohide_update_visibility), (_rb_autohide_source_row_deleted_cb), (_rb_autohide_source_row_inserted_cb), (_rb_source_hide_when_empty): Allow sources to automatically hide themselves when empty. * sources/rb-iradio-source.c: (rb_iradio_source_constructor): * sources/rb-library-source.c: (rb_library_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_constructor): Explicitly specify which columns are always visible. * shell/rb-shell.c: (rb_shell_finalize), (rb_shell_constructor), (rb_shell_playing_entry_changed_cb), (add_to_library_response_cb): Remove load error signal handling and load failure dialog. Create missing files and import errors sources for the library. * rhythmdb/rhythmdb.c: (rhythmdb_class_init), (rhythmdb_add_import_error_entry), (rhythmdb_process_metadata_load): Create DB entries for import errors rather than emitting the 'load error' signal; mark loaded entries visible. (rhythmdb_entry_sync_mirrored), (rhythmdb_prop_get_type), (rhythmdb_entry_get_string), (rhythmdb_entry_set_visibility), (rhythmdb_prop_get_type): Store string form of last seen time for hidden entries, since it's used in the missing files source. (rhythmdb_entry_import_error_get_type): Add entry type for import errors. (rhythmdb_process_file_deleted), (rhythmdb_volume_mounted_cb), (rhythmdb_volume_unmounted_cb): Add missing rhythmdb_commit calls. (rhythmdb_entry_move_to_trash_set_error), (rhythmdb_entry_move_to_trash): Correct spelling, add missing rhythmdb_commit. * rhythmdb/rhythmdb.h: Add import error entry type and last seen string property. * rhythmdb/rhythmdb-private.h: Add string form of last seen time. * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): Ignore string form of 'last seen' property. * shell/rb-shell-player.c: (rb_shell_player_entry_activated_cb): Don't try to play hidden entries or import error entries. * data/ui/rhythmbox-ui.xml: Add popup for missing files source. * sources/Makefile.am: Add meta-source files * widgets/Makefile.am: Remove load failure dialog files 2006-02-22 Jonathan Matthew update by: Baptiste Mille-Mathias * help/C/rhythmbox.xml: add a 'getting started' section, and fix a few bits and pieces. 2006-02-22 Jonathan Matthew * metadata/test-metadata.c: (load_metadata_cb): Fix compile warning for ignoring return value from getcwd, #332064. 2006-02-21 James Livingston * shell/rb-playlist-manager.c: (edit_auto_playlist_response_cb), (edit_auto_playlist_deleted_cb), (rb_playlist_manager_cmd_edit_automatic_playlist): make the auto playlist editor non-modal. Fixes bug 320030. 2006-02-21 James Livingston * shell/rb-shell.c: (rb_shell_constructor): * widgets/rb-header.c: (rb_header_init), (rb_header_set_urldata), (rb_header_set_show_artist_album): * widgets/rb-song-display-box.c: (rb_song_display_box_init), (rb_song_display_box_sync): make the queue sidebar and song display not get affected by gtk_widget_show_all. Fixes bug 332001. 2006-02-21 James Livingston Patch by: Alex Lancaster * podcast/rb-podcast-parse.c: (rb_podcast_parse_date): add support for feeds which use timezone names instead of offsets. Doesn't actually parse the timezone name since they are not standardised. Fixes bug 331691. 2006-02-21 James Livingston * help/C/figures/rb-notification-area.png: * help/C/figures/rb-sidebar.png: * help/C/quick-reference.xml: remove obsolete files from CVS. * rhythmdb/rhythmdb-tree.c: (evaluate_conjunctive_subquery): * rhythmdb/rhythmdb.c: (rhythmdb_query_parse_valist), (rhythmdb_query_free), (rhythmdb_query_serialize), (rhythmdb_query_deserialize), (rhythmdb_query_get_type): * rhythmdb/rhythmdb.h: Add operators for string prefix and suffix. * widgets/rb-query-creator-properties.c: add prefix and suffix (escapedStringCriteriaGetWidgetData): use better escaping, so it doesn't escape the ':' separator in uris. 2006-02-21 James Livingston * shell/rb-shell.c: (rb_shell_constructor): ensure the window is shown on startup. 2006-02-21 James Livingston * NEWS: update with recent changes 2006-02-21 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_player_volume_changed_cb), (rb_shell_druid_response_cb): * widgets/rb-druid.c: (rb_druid_finalize), (rb_druid_init_widgets), (rb_druid_browse_clicked_cb), (do_response): * widgets/rb-druid.h: Make running the druid not block RBShell starting up. This is required so that bonobo registration doesn't time out. Fixed bug 318766. 2006-02-21 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_entry_removed_cb): remove the entry from the hash table after using it, not before. Fixed bug 331922. 2006-02-21 Jonathan Matthew * shell/rb-shell.c: (rb_shell_playing_from_queue_cb), (rb_shell_view_queue_as_sidebar_changed_cb): When playing from the queue, only attempt to highlight the queue source in the source list if it's actually visible there. Otherwise, leave the preempted source highlighted. Mostly fixes #330819. 2006-02-20 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_insert), (rhythmdb_property_model_delete): store the roperty value in the entry-mapping table, so that receiving the remove signal from a query model before we get notified of a change doesn't cause a crash. Fixes bug 331770. 2006-02-20 James Livingston * data/ui/rhythmbox-ui.xml: * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init), (rb_play_queue_source_cmd_clear), (impl_show_popup): don't display playlist things in the queue popup source. From 330490. * widgets/rb-song-info.c: (rb_song_info_sync_entries): fix mistake in previous commit 2006-02-20 James Livingston * widgets/rb-song-info.c: (rb_song_info_response_cb), (rb_song_info_sync_entry_single), (rb_song_info_sync_entries): don't attempt to sync data for non-editable entries when using next/previous. Don't write our Year if it wasn't changed. Fixes bug 331762. 2006-02-19 Luca Ferretti * .cvsignore: * Makefile.am: * autogen.sh: * configure.ac: * help/.cvsignore: * help/Makefile.am: ported to gnome-doc-utils * help/rhythmbox.omf.in: added, needed by gnome-doc-utils * help/ChangeLog: added, for translators * help/C/rhytmbox-C.omf: removed, no longer used Know issue: figures are installed, but some are not showed; manual description added, but not showed in Yelp while browsing. I'll investigate, maybe are needed some little changes to help/C/rhythmbox.xml. 2006-02-20 James Livingston * data/ui/rhythmbox-ui.xml: * help/C/figures/rb-adv.png: * help/C/figures/rb-asst-finish.png: * help/C/figures/rb-asst-library.png: * help/C/figures/rb-asst-start.png: * help/C/figures/rb-basic.png: * help/C/figures/rb-browser.png: * help/C/figures/rb-context-menu.png: * help/C/figures/rb-empty.png: * help/C/figures/rb-full-play.png: * help/C/figures/rb-group-auto.png: * help/C/figures/rb-group-create.png: * help/C/figures/rb-group.png: * help/C/figures/rb-imported.png: * help/C/figures/rb-iradio-add.png: * help/C/figures/rb-iradio.png: * help/C/figures/rb-nextprev.png: * help/C/figures/rb-nobrowse-play.png: * help/C/figures/rb-notification-area-menu.png: * help/C/figures/rb-player.png: * help/C/figures/rb-prefs-general.png: * help/C/figures/rb-prefs-ipod.png: * help/C/figures/rb-prefs-library.png: * help/C/figures/rb-prefs.png: * help/C/figures/rb-repeat.png: * help/C/figures/rb-search.png: * help/C/figures/rb-shuffle.png: * help/C/figures/rb-stats.png: * help/C/figures/rb-toolbar-editor.png: * help/C/figures/rb-volume-mute.png: * help/C/figures/rhythmbox-group.png: * help/C/figures/rhythmbox-tray-icon.png: * help/C/user-guide.xml: remove old stuff from cvs 2006-02-19 Jonathan Matthew * metadata/rb-metadata-dbus-client.c: * metadata/rb-metadata-dbus-service.c: * metadata/rb-metadata-dbus.c: * metadata/rb-metadata-dbus.h: New files, adding an external service for reading and writing metadata, and an implementation of the RBMetaData interface that uses dbus to communicate with it. * metadata/rb-metadata.h, * metadata/rb-metadata-common.c: (rb_metadata_get_field_type), (rb_metadata_get_field_name): Put metadata details in a static array instead of using a hash table, and add a field for language code (not used for anything) * metadata/rb-metadata-gst.c: Updates for changes in rb-metadata-common.c, fix signal handler closure leak for the typefind element's have-type signal, and add XML to the list of types we ignore. * rhythmdb/rhythmdb.c: (extract_gtype_from_enum_entry): Update for changes to rb_metadata_get_field_type (rhythmdb_entry_allocate): Don't make songs hidden initially, as rhythmdb_commit_internal do that for non-local files. Saves us a stat here and there. * configure.ac: Add --enable-metadata-helper option (not enabled by default) to use the external metadata service * metadata/Makefile.am: Add new files * metadata/test-metadata.c: Test program for the metadata service Fixes #329597. 2006-02-19 Jonathan Matthew * shell/rb-shell.c: (rb_shell_cmd_add_file_to_library): * sources/rb-podcast-source.c: (impl_get_ui_actions), (rb_podcast_source_cmd_new_podcast): Move 'new podcast' action to the podcast source, and add it to the toolbar. Fixes #331562. 2006-02-19 James Livingston * data/ui/rhythmbox-ui.xml: Move add-to-queue to the top of the context menus, and away from move-to-trash. Fixes bug 331013. 2006-02-19 James Livingston * shell/rb-play-order.c: (default_playing_entry_removed): don't crash when deleting last entry. Fixes bug 331712. 2006-02-18 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_class_init), (rb_entry_view_button_press_cb): * widgets/rb-entry-view.h: Emit show-popup when right clicked anywhere, and include a flag indicating whether the click was over an entry or not. * sources/rb-playlist-source.c: (default_show_entry_view_popup), (rb_playlist_source_songs_show_popup_cb): * sources/rb-playlist-source.h: Add the 'over entry' flag to the class show popup method, and in the default handler, ignore right clicks when not over an entry. * sources/rb-iradio-source.c: (rb_iradio_source_songs_show_popup_cb): * sources/rb-library-source.c: (rb_library_source_songs_show_popup_cb): * sources/rb-podcast-source.c: (rb_podcast_source_songs_show_popup_cb): Show the source list popup menu when right clicked while not over an entry. * sources/rb-play-queue-source.c: (impl_show_entry_view_popup): For the queue sidebar, always display the popup so the 'clear queue' action is available regardless of where you click. For the queue source, only display the popup when right clicked over an entry. Fixes #331392. 2006-02-19 James Livingston * daapsharing/rb-daap-share.c: (add_playlist_to_mlcl): * shell/rb-shell.c: (rb_shell_select_source): don't get the source's entry view, when we're not even using it * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb): use the query-model utility function, rather than a copy of the code. * shell/rb-playlist-manager.c: (rb_playlist_manager_playlist_row_inserted_cb), (rb_playlist_manager_set_source_internal), (rb_playlist_manager_playlist_entries_changed): use the query-model directly, rather than the source's entry view. * shell/rb-source-header.c: don't use the entry view, just select the source widget. 2006-02-18 James Livingston update by: Baptiste Mille-Mathias * help/C/figures/rb-iradio-main.png: * help/C/figures/rb-notification-area-menu.png: * help/C/figures/rb-notification-window.png: * help/C/figures/rb-notification-zone.png: * help/C/figures/rb-podcast-main.png: * help/C/figures/rb-statusbar.png: * help/C/figures/rb-toolbar-prevplaynext.png: * help/C/figures/rb-toolbar-repeat.png: * help/C/figures/rb-toolbar-shuffle.png: * help/C/figures/rb-toolbar.png: * help/C/figures/rb-volume-changer.png: * help/C/figures/rb-window-small.png: * help/C/figures/rb-window.png: * help/C/rhythmbox.xml: Update user guide with some of the changes that have occurred after 0.8.8. From bug 314001. 2006-02-18 Jonathan Matthew * rhythmdb/rhythmdb-query-results.h, rhythmdb/rhythmdb-query-results.c: New interface for objects that accept query results from RhythmDB. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_query_results_init), (rhythmdb_query_model_set_query), (rhythmdb_query_model_add_results), (rhythmdb_query_model_query_complete): * rhythmdb/rhythmdb-query-model.h: Make RhythmDBQueryModel implement the RhythmDBQueryResults interface. * rhythmdb/rhythmdb-tree.c: (handle_entry_match), (rhythmdb_tree_do_full_query): * rhythmdb/rhythmdb.c: (rhythmdb_event_free), (rhythmdb_query_internal), (rhythmdb_do_full_query_async_parsed), (rhythmdb_do_full_query_async), (rhythmdb_do_full_query_internal), (rhythmdb_do_full_query_parsed), (rhythmdb_do_full_query): * rhythmdb/rhythmdb.h: Pass query results through the RhythmDBQueryResults interface, rather than directly to a RhythmDBQueryModel. * podcast/rb-podcast-manager.c: (rb_podcast_manager_update_feeds), (rb_podcast_manager_db_entry_deleted_cb): * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query): * sources/rb-iradio-source.c: (rb_iradio_source_do_query): * sources/rb-library-source.c: (rb_library_source_constructor), (rb_library_source_do_query): * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_do_query): * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_drag_data_get): Cast the query model to RhythmDBQueryResults when passing to one of the RhythmDB query methods. * rhythmdb/Makefile.am: Add new files. 2006-02-18 James Livingston * data/ui/rhythmbox-ui.xml: * shell/rb-playlist-manager.c: (_queue_track_cb), (rb_playlist_manager_cmd_queue_playlist): Add "queue playlist" item to source context menu. Fixes bug 330490. 2006-02-18 James Livingston * data/glade/general-prefs.glade: * shell/rb-shell-preferences.c: (rb_shell_preferences_column_check_changed_cb), (rb_shell_preferences_sync): * sources/rb-library-source.c: (rb_library_source_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * widgets/rb-entry-view.c: (rb_entry_view_quality_cell_data_func), (rb_entry_view_append_column): Add a "quality" colume which indicates the bitrate of media. Part of bug 167659. 2006-02-18 James Livingston * shell/rb-play-order.c: (do_next_idle_cb), (default_playing_entry_removed): move to next track when playing entry is deleted. Fixes bug 131150. * shell/rb-shell-player.h: remove ancient stuff 2006-02-17 William Jon McCann * shell/rb-shell-clipboard.c (rb_shell_clipboard_set_source_internal) (rb_shell_clipboard_set_property): * shell/rb-shell.c (rb_shell_sync_party_mode): Trigger a resync of the clipboard properties when changing party mode. 2006-02-17 William Jon McCann * sources/rb-static-playlist-source.c: Fix includes. * sources/rb-source.c (rb_source_can_rename) (rb_source_can_delete, rb_source_can_move_to_trash): Return FALSE if in party mode. * shell/rb-shell.[ch] (rb_shell_finalize, rb_shell_constructor): Replace fullscreen with party mode. (rb_shell_window_delete_cb): Don't quit if in party mode. (rb_shell_view_party_mode_changed_cb): Setup party mode. (window_state_event_cb): Try to deiconify shell when iconified in party mode. (rb_shell_sync_party_mode): Sync party mode properties. Currently, that means [de]sensitizing close, quit, and small-display, going into fullscreen mode with window stuck and kept above, and toggling queue-only for the shell player. (rb_shell_sync_smalldisplay): Sensitive party mode. (rb_shell_get_party_mode): Get party mode setting. * shell/rb-shell-player.c (rb_shell_player_class_init) (rb_shell_player_set_property, rb_shell_player_get_property): Add queue-only property. (rb_shell_player_entry_activated_cb): If in party mode only queue the entry on activation. * shell/rb-playlist-manager.c (rb_playlist_manager_set_source_internal): Break out from set_properties. Desensitize some actions when in party mode. (rb_playlist_manager_set_property): Break out set_source_internal. * data/rhythmbox.schemas: Remove fullscreen mode. * data/ui/rhythmbox-ui.xml: Replace fullscreen action with party mode. Partial fix for #323933 2006-02-17 James Livingston * configure.ac: * shell/rb-removable-media-manager.c: (get_nautilus_burn_drive_for_path), (rb_removable_media_manager_playing_uri_changed_cb): only use nautilus_burn_drive_new_by_path when it exists, fall back to iterating over the list when it doesn't. 2006-02-17 James Livingston * sources/rb-iradio-source.c: (rb_iradio_source_constructor), (rb_iradio_source_first_time_changed): Only do the import on the first change from FALSE to TRUE. * sources/rb-library-source.c: (rb_library_source_preferences_sync), (rb_library_source_library_location_cb): set the first-run done flag if the user presses close and then sets their watches library location. Fixes bug 325997. 2006-02-17 James Livingston * shell/rb-shell.c: (rb_shell_class_init): make the shell player and removable media manager gobject properties * shell/rb-removable-media-manager.c: (begin_cd_drive_monitor), (split_drive_from_cdda_uri), (rb_removable_media_manager_playing_uri_changed_cb), (rb_removable_media_manager_load_media): stop polling a cd drive when we are playing from it. Part of bug 330716. 2006-02-17 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_finalize), (rhythmdb_query_model_base_entry_removed): Propagate entry removal from base models out to attached property models. Fixes the rest of #331165. 2006-02-17 Jonathan Matthew * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_insert): Don't store NULL as a hash table value if we want to use g_hash_table_lookup to check if a key exists, and get the checks for how and whether to handle entry changes the right way around. Fixes #331211 and half of #331165. 2006-02-16 James Livingston * sources/rb-audiocd-source.c: (rb_audiocd_source_constructor): read the audio cd's TOC in a separate thread, so it doesn't block the UI. Fixes bug 329942. 2006-02-16 James Livingston * widgets/rb-library-browser.c: (reset_view_cb): make View All actually reset the browsers. 2006-02-16 Jonathan Matthew * widgets/eggtrayicon.c: (egg_tray_icon_notify): Escape the strings we pass into libnotify so we don't get blank notifications when the song name contains '&' etc. Fixes #330784. 2006-02-16 James Livingston * shell/rb-source-header.c: (rb_source_header_sync_control_state): enable "View All" when there is only a search box and no browser. Fixes bug 331395. 2006-02-16 Jonathan Matthew * data/ui/rhythmbox-ui.xml: Add 'clear queue' to the sidebar queue popup menu, which I forgot to commit with the patch for bug #330014. 2006-02-16 Jonathan Matthew * shell/rb-shell-player.c: (open_location_thread): Sync button and entry view state once we've started the player, so the entry view gets into the playing state for iradio. 2006-02-15 Jonathan Matthew * shell/rb-shell-player.c: (open_location_thread): Take GDK lock before doing anything UI-related. 2006-02-15 Jonathan Matthew * shell/rb-shell.c: Move 'new iradio station' action to iradio source. * sources/rb-iradio-source.c: (rb_iradio_source_class_init), (rb_iradio_source_init), (rb_iradio_source_finalize), (rb_iradio_source_constructor): Remove some unused stuff. (guess_uri_scheme), (rb_iradio_source_add_station), (rb_iradio_source_add_from_playlist), (impl_get_ui_actions), (new_station_location_added), (rb_iradio_source_cmd_new_station): Handle 'new iradio station' action, include it in the toolbar, and make sure the URI we add has a scheme. Fixes #327059, more or less. 2006-02-15 Jonathan Matthew * sources/rb-play-queue-source.c: (rb_play_queue_source_class_init), (rb_play_queue_source_constructor), (rb_play_queue_source_update_count), (rb_play_queue_source_cmd_clear), (impl_get_ui_actions): Add a toolbar button to clear the play queue, and make it sensitive only when there are entries in the queue. Fixes #330014. * sources/rb-source.c: (_rb_source_register_action_group): * sources/rb-source.h: Add helper function to register an action group for a source. * sources/rb-library-source.c: (rb_library_source_constructor): * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (register_action_group): Use _rb_source_register_action_group. 2006-02-15 James Livingston * widgets/rb-song-info.c: (rb_song_info_add_completion), (rb_song_info_constructor), (rb_song_info_set_property): make tag-editing completion work for albums too. 2006-02-15 Jonathan Matthew * widgets/rb-query-creator.c: (rb_query_creator_load_query): Check the 'limit' checkbox for time-limited playlists. 2006-02-14 Sven Herzberg * widgets/rb-song-info.c: Prove text-completion when editing title, artist or album 2006-02-14 James Livingston * data/ui/rhythmbox-ui.xml: add a separator above the Quit item of the tray icon popup menu. Fixes bug 331026. 2006-02-14 James Livingston * data/iradio-initial.pls: update the Virgin Radio stations to use the Ogg Vorbis streams, instead of the MP3 ones. 2006-02-14 James Livingston * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_class_init), (rhythmdb_property_model_drag_data_get): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_title_sort_func): * rhythmdb/rhythmdb-query-model.h: fix drag-and-drop when using the LOCATION as the key. Fixes bug 330601. 2006-02-13 Jonathan Matthew * sources/rb-playlist-source.c: (playlist_iter_func): Make it compile with older versions of totem-plparser too. 2006-02-13 James Livingston * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb-private.h: Make definition of RhythmDBEntry structure private, since things should use the accessor functions rather than manipulating it directly - Only RhythmDB and the implementation classes should access it directly. Part of the RhythmDB cleanup of bug 330226. * iradio/rb-station-properties-dialog.c: (rb_station_properties_dialog_update_title), (rb_station_properties_dialog_update_title_entry), (rb_station_properties_dialog_update_genre), (rb_station_properties_dialog_update_location), (rb_station_properties_dialog_update_play_count), (rb_station_properties_dialog_update_bitrate), (rb_station_properties_dialog_update_last_played), (rb_station_properties_dialog_update_rating), (rb_station_properties_dialog_update_playback_error), (rb_station_properties_dialog_sync_entries): * podcast/rb-feed-podcast-properties-dialog.c: (rb_feed_podcast_properties_dialog_update_title), (rb_feed_podcast_properties_dialog_update_title_label), (rb_feed_podcast_properties_dialog_update_author), (rb_feed_podcast_properties_dialog_update_location), (rb_feed_podcast_properties_dialog_update_copyright), (rb_feed_podcast_properties_dialog_update_language), (rb_feed_podcast_properties_dialog_update_summary): * podcast/rb-podcast-manager.c: (rb_podcast_manager_entry_downloaded), (rb_podcast_manager_db_entry_added_cb), (download_progress_update_cb), (rb_podcast_manager_db_entry_deleted_cb): * podcast/rb-podcast-properties-dialog.c: (rb_podcast_properties_dialog_update_title), (rb_podcast_properties_dialog_update_title_label), (rb_podcast_properties_dialog_update_feed), (rb_podcast_properties_dialog_update_location), (rb_podcast_properties_dialog_update_play_count), (rb_podcast_properties_dialog_update_bitrate), (rb_podcast_properties_dialog_update_last_played), (rb_podcast_properties_dialog_update_rating), (rb_podcast_properties_dialog_update_date), (rb_podcast_properties_dialog_update_description): * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_entry_changed_cb), (rhythmdb_query_model_remove_from_main_list), (rhythmdb_query_model_update_limited_entries), (rhythmdb_query_model_drag_data_get), (rhythmdb_query_model_album_sort_func): * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_end_element), (save_entry): * rhythmdb/rhythmdb.c: (rhythmdb_entry_set_internal), (rhythmdb_prop_get_type), (rhythmdb_entry_dup_string), (rhythmdb_entry_get_string), (rhythmdb_entry_get_boolean), (rhythmdb_entry_get_uint64), (rhythmdb_entry_get_ulong), (rhythmdb_entry_get_double): * shell/rb-audioscrobbler.c: (rb_audioscrobbler_song_changed_cb): * shell/rb-play-order-random-by-age-and-rating.c: (rb_random_by_age_and_rating_get_entry_weight): * shell/rb-play-order-random-by-age.c: (rb_random_by_age_get_entry_weight): * shell/rb-play-order-random-by-rating.c: (rb_random_by_rating_get_entry_weight): * shell/rb-playlist-manager.c: (create_name_from_selection_data): * shell/rb-shell-player.c: (rb_shell_player_open_entry), (rb_shell_player_set_playing_entry), (rb_shell_player_sync_replaygain), (rb_shell_player_sync_with_source), (rb_shell_player_get_playing_song_duration), (info_available_cb): * sources/rb-playlist-source.c: (playlist_iter_func), (burn_playlist_iter_func), (rb_playlist_source_row_deleted), (rb_playlist_source_entry_added_cb): * sources/rb-podcast-source.c: (rb_podcast_source_post_status_cell_data_func): * sources/rb-source.c: (rb_source_update_play_statistics): * sources/rb-sourcelist-model.c: (rb_sourcelist_model_drag_data_get): * sources/rb-static-playlist-source.c: (impl_save_contents_to_xml), (rb_static_playlist_source_add_entry), (rb_static_playlist_source_remove_entry): * widgets/rb-entry-view.c: (type_ahead_search_func), (rb_entry_view_playing_cell_data_func), (rb_entry_view_rating_cell_data_func), (rb_entry_view_pixbuf_clicked_cb): * widgets/rb-header.c: (rb_header_get_duration): * widgets/rb-song-info.c: (rb_song_info_populate_dialog_multiple), (rb_song_info_populate_dialog), (rb_song_info_update_playback_error), (rb_song_info_update_bitrate), (rb_song_info_update_duration), (rb_song_info_update_location), (rb_song_info_update_play_count), (rb_song_info_update_last_played), (rb_song_info_update_rating), (rb_song_info_update_year), (rb_song_info_sync_entries_multiple), (rb_song_info_sync_entry_single): fix the huge number of times that the internals got accessed directly. 2006-02-13 Jonathan Matthew * data/ui/rhythmbox-ui.xml: Move separator so 'remove' and 'move to trash' are grouped together. * shell/main.c: (main): Pass no-registration flag in to RBShell constructor, rather than mysteriously always passing TRUE. * sources/rb-playlist-source.c: (rb_playlist_source_row_deleted): Set dirty flag when entries are removed from the model, so the play queue is marked dirty appropriately. * AUTHORS: update my email address 2006-02-13 Jonathan Matthew Patch by: Baptiste Mille-Mathias * widgets/rb-druid.c: (path_dialog_response_cb): If the URI is local, don't display the 'file://' prefix. Fixes #330919. 2006-02-12 Jonathan Matthew * widgets/eggtrayicon.c: (egg_tray_icon_notify): Attach the notification to the tray icon widget, so libnotify positions it less badly. Fixes #330876. 2006-02-11 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_get_selected_entries): Reverse the selection list before returning it, so we get it in the right order. Fixes #330283 and some other weirdness. 2006-02-11 James Livingston * shell/rb-shell.c: (rb_shell_constructor), (rb_shell_sync_fullscreen), (rb_shell_sync_smalldisplay): * shell/rb-source-header.c: (rb_source_header_sync_control_state): make small-mode and fullscreen mutually exclusive, since they don't work together * data/ui/rhythmbox-ui.xml: move Fullscreen up to the top with Small Mode. 2006-02-10 James Livingston * player/rb-player-gst.c: turn paranoia of when playing audio cds, since it can cause it to be slower than real-time. Should fix bug 322270. 2006-02-10 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property): Think just a little bit harder about that last commit. 2006-02-10 Jonathan Matthew * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property): Get the check for hidden entries the right way around. Fixes #330527, #330514. (rhythmdb_query_model_set_sort_order): Ignore no-op sort order changes, so we don't get critical messages when selecting 'all' in auto playlist browsers. 2006-02-10 Jonathan Matthew Patch by: Christophe Fergeau * sources/rb-removable-media-source.c: (rb_removable_media_source_init), (rb_removable_media_source_constructor): Move icon setup code to the constructor, as the volume property haven't been set yet when _init is called. 2006-02-09 William Jon McCann * sources/rb-sourcelist.c (rb_sourcelist_append, icon_notify_cb): Make the source pixbuf a dynamic property. * sources/rb-source.[ch] (rb_source_class_init, rb_source_finalize) (rb_source_set_pixbuf, rb_source_set_property) (rb_source_get_property): Add icon property. * sources/rb-auto-playlist-source.c (rb_auto_playlist_source_class_init) (rb_auto_playlist_source_init): * sources/rb-static-playlist-source.c (rb_static_playlist_source_class_init) (rb_static_playlist_source_init): * sources/rb-removable-media-source.c (rb_removable_media_source_class_init) (rb_removable_media_source_init): * sources/rb-podcast-source.c (rb_podcast_source_class_init) (rb_podcast_source_init): * sources/rb-library-source.c (rb_library_source_class_init) (rb_library_source_set_property, rb_library_source_get_property): * sources/rb-iradio-source.c (rb_iradio_source_class_init) (rb_iradio_source_init): Remove impl_get_pixbuf and set icon property on source base class. * sources/rb-daap-source.c (rb_daap_get_icon): Get a different icon for when the share is password protected and locked. (rb_daap_source_new): Set icon property. (composite_icons): Composite an emblem on a pixbuf. (create_pixbufs): Load global pixbufs. (destroy_pixbufs): unref global pixbufs. (rb_daap_sources_init, rb_daap_sources_shutdown): Pixbuf setup. (connection_auth_cb, connection_connected_cb) (connection_disconnected_cb): Update icon when connection status changes. (rb_daap_source_activate): Connect signals. * daapsharing/rb-daap-share.c (name_collision_cb): Run dialog with parent. * daapsharing/rb-daap-marshal.list: Add new signal. * daapsharing/rb-daap-dialog.[ch] (rb_daap_password_dialog_new_run) (rb_daap_collision_dialog_new_run): Set parent of dialog. * daapsharing/rb-daap-connection.[ch] (rb_daap_connection_class_init): Add authenticate, connected, and disconnected signals. (connection_get_password): emit authenticate signal instead of running dialog directly. (connection_connected, connection_disconnected): Emit signals. (handle_login): Emit connected signal. (handle_logout): Emit disconnected signal. (rb_daap_connection_do_something): Fix leak. Fixes #330291 2006-02-09 James Livingston * (rhythmdb_query_model_set_property): don't try to insert HIDDEN entries from the base model if we don't have show-hidden set. Fixes bug 330514. 2006-02-08 William Jon McCann * daapsharing/rb-daap-share.c (message_get_session_id): Ugh. Use strtoul instead of atoi. (session_id_validate): Add debug statements. 2006-02-08 William Jon McCann * daapsharing/rb-daap-connection.c (http_response_handler): Report the actual uri from the message in debug statements. 2006-02-08 William Jon McCann * daapsharing/rb-daap-share.c (server_info_cb, content_codes_cb): Add context argument. (message_get_session_id): New function to parse session id from the message. (message_get_revision_number): Break out function to parse revision number from the message. (session_id_validate): New function to validate given session id is valid for given context (ie. client address). (session_id_generate): Generate a random session id. (session_id_create): Create a unique session id and store it. (session_id_remove): Remove a session id from the store. (login_cb): Create a session id instead of using a constant one. (logout_cb): Validate session id. (update_cb): Use new message_get_revision_number function. (databases_cb): Validate session id. (server_cb): Add server context to argument list for callbacks. It is needed to look up the remote host. (db_entry_changed_cb): Use braces. (soup_auth_callback): Remove FIXME. (rb_daap_share_server_start): Create session id store. (rb_daap_share_server_stop): Destroy session id store. * daapsharing/rb-daap-dialog.c (rb_daap_password_dialog_new_run): Don't base64-encode password here since it needs to be combined with the username first. * daapsharing/rb-daap-connection.c (build_message): Add username to Authorization token. (handle_login, handle_song_listing) (rb_daap_connection_do_something): Session id must be an unsigned int. Fixes #329814 2006-02-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_get_playing): Don't check if we've got a playing entry, ask the player object (duh). Might actually fix #329993. 2006-02-08 Jonathan Matthew * sources/rb-static-playlist-source.c: (rb_static_playlist_source_add_list_uri): Canonicalise URIs before trying to add them to the playlist, and don't try to add files to the database for which there is already an entry. 2006-02-08 Jonathan Matthew * shell/rb-shell-player.c: (rb_shell_player_get_playing): Don't ask the entry view if we're playing, just check if we've got a playing entry. Fixes #329993. 2006-02-08 James Livingston * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_finalize), (rhythmdb_query_model_base_complete): remove rhythmdb_query_model_base_entry_prop_changed, so that two signals don't get emitted for entry changes. Fixes bug 330301. * widgets/rb-library-browser.c: (rb_library_browser_class_init), (rb_library_browser_init), (rb_library_browser_constructor), (rb_library_browser_new): do stuff in the constructor, not the init function, so that the db property gets set on RBPropertyViews correctly. Fixes a crash when dragging properties to a playlist. 2006-02-07 William Jon McCann * daapsharing/rb-daap-share.c (rb_daap_share_server_stop): Actually stop soup server. Fixes #329816. 2006-02-07 James Livingston * lib/rb-util.h: * lib/rb-util.c: (rb_string_list_equal), (list_copy_cb), (rb_string_list_copy), (rb_list_deep_free), (collate_keys_cb), (collate_values_cb), (rb_collate_hash_table_keys), (rb_collate_hash_table_values): add functions to compare, copy and free string-lists. add functions to collate the keys or values of a hash table into a list. * rhythmdb/rhythmdb-property-model.c: (rhythmdb_property_model_class_init), (entry_from_tree_iter), (_remove_entry_cb), (_add_entry_cb), (rhythmdb_property_model_set_property), (rhythmdb_property_model_get_property), (rhythmdb_property_model_init), (rhythmdb_property_model_finalize), (rhythmdb_property_model_row_inserted_cb), (rhythmdb_property_model_prop_changed_cb), (rhythmdb_property_model_entry_removed_cb): correctly handle entries that are hidden, storing those that we have counted in a hash-table. * shell/Makefile.am: fix build order issue * shell/rb-shell-player.c: (rb_shell_player_set_property): * sources/rb-source.h: * shell/rb-source-header.c: (rb_source_header_sync_control_state): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): * sources/rb-podcast-source.c: (feed_select_change_cb): add browser-toggled method, rename _get_exta_views to _get_property_views, since several things depend on returning only that. * sources/rb-source.c: (rb_source_class_init), (rb_source_browser_toggled), (default_get_property_views), (rb_source_get_property_views), (rb_source_row_deleted_cb), (rb_source_gather_hash_keys), (rb_source_gather_selected_properties): above changes, and move some utility functions up from RBLibraryView * widgets/rb-property-view.c: (rb_property_view_selection_changed_cb): fix leak. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_set_property), (rhythmdb_query_model_finalize), (apply_updated_entry_sequence), (rhythmdb_query_model_set_sort_order), (rhythmdb_query_model_base_rows_reordered): fix handling of the base query model being resorted. * rhythmdb/rhythmdb-tree.c: (do_query_recurse): handle being passed a NULL query. * rhythmdb/rhythmdb.h: * rhythmdb/rhythmdb.c: (rhythmdb_query_copy), (rhythmdb_query_concatenate), (rhythmdb_query_preprocess), (rhythmdb_query_append_prop_multiple): Add a function to concatenate two queries. Add a function to append "property={X,Y,Z,...}" to a query. * sources/rb-library-source.c: (rb_library_source_class_init), (rb_library_source_finalize), (rb_library_source_constructor), (rb_library_source_cmd_choose_genre), (rb_library_source_cmd_choose_artist), (rb_library_source_cmd_choose_album), (impl_search), (impl_get_property_views), (impl_reset_filters), (rb_library_source_preferences_sync), (rb_library_source_browser_views_activated_cb), (rb_library_source_state_prefs_sync), (construct_query_from_selection), (rb_library_source_do_query), (rb_library_source_browser_changed_cb): * widgets/Makefile.am: * widgets/rb-library-browsers.{c,h}: Add a generalised "library browser" widgets, which contains several property views, based on the code from RBLibrarySource. Make RBLibrarySource use it. * sources/rb-auto-playlist-source.c: (rb_auto_playlist_source_class_init), (rb_auto_playlist_source_init), (rb_auto_playlist_source_finalize), (rb_auto_playlist_source_constructor), (impl_reset_filters), (impl_get_property_views), (impl_browser_toggled), (construct_query_from_selection), (rb_auto_playlist_source_do_query), (rb_auto_playlist_source_set_query), (rb_auto_playlist_source_browser_changed_cb): Use the new library-browser widget to add browsers to automatic playlists. 2006-02-07 James Livingston * player/rb-player-gst.c: (rb_player_bus_cb): check error type properly. * shell/rb-shell-player.c: (do_next_idle): use eos_cb, so that the EOF type of the source is taken into account. Fixes bug 329621. 2006-02-07 James Livingston * rhythmdb/rhythmdb-tree.c: (rhythmdb_tree_parser_start_element), (rhythmdb_tree_parser_end_element): update the rhythmdb.xml version to 1.1, and perform URI canonicalistion when first upgrading. This should fix our remaining canonicalisation issues, such as bug 329988. 2006-02-07 Jonathan Matthew * widgets/rb-entry-view.c: (rb_entry_view_playing_song_changed): Track the playing entry when the entry view isn't in the playing state, so we don't have to get the state changes exactly right. Fixes #330135. 2006-02-06 James Livingston * shell/rb-shell-player.c: (open_location_thread), (rb_shell_player_open_location): fix several iradio issues: having to press play after double-clicking on a station, not working correctly without a http:// prefix, and ignoring totem-plparser results other than success or error (e.g. IGNORE). 2006-02-06 Jonathan Matthew Addition of dbus methods for dealing with static playlists and the play queue. Fixes #329958. * shell/Makefile.am: * shell/rb-playlist-manager.h: * shell/rb-playlist-manager.xml: * shell/rb-playlist-manager.c: (save_playlist_response_cb), (rb_playlist_manager_get_playlists), (rb_playlist_manager_get_playlist_names), (_get_playlist_by_name), (rb_playlist_manager_create_static_playlist), (rb_playlist_manager_delete_playlist), (rb_playlist_manager_add_to_playlist), (rb_playlist_manager_remove_from_playlist), (rb_playlist_manager_export_playlist): Add org.gnome.Rhythmbox.PlaylistManager dbus interface, with methods to create, delete, list, modify, export, and import static playlists. * shell/main.c: (main): Register playlist manager object with dbus. * shell/rb-shell.h: * shell/rb-shell.xml: * shell/rb-shell.c: (rb_shell_get_playlist_manager), (rb_shell_get_playlist_manager_path), (rb_shell_add_to_queue), (rb_shell_remove_from_queue): Provide dbus access to the playlist manager object, and implement the addToQueue and removeFromQueue methods. * sources/rb-playlist-source.c: (rb_playlist_source_save_playlist): * sources/rb-playlist-source.h: Add flag to choose between PLS and M3U formats. 2006-02-05 James Livingston * rhythmdb/rhythmdb-tree.c: (parse_boolean), (rhythmdb_tree_parser_end_element), (save_entry_boolean), (save_entry): allow storage of booleans in the on-disk db, and save/load the HIDDEN property. * rhythmdb/rhythmdb.c: (rhythmdb_commit_internal), (rhythmdb_prop_get_type): restore the HIDDEN property of local files to the state it was when RB shutdown. This makes RB appear to start faster, as tracks can appear before the stat is done. Remote files still start hidden. From bug 325215. 2006-02-05 James Livingston * rhythmdb/rhythmdb.c: (rhythmdb_class_init): * rhythmdb/rhythmdb.h: remove the "entry-restored" signal nothing really cares about the difference from "entry-added", and it isn't emitted by the tree backend anyway. * rhythmdb/rhythmdb-query-model.c: (rhythmdb_query_model_constructor): * sources/rb-playlist-source.c: (rb_playlist_source_constructor): remove the references to the entry-restored signal. 2006-02-05 James Livingston * shell/rb-shell-player.c: (rb_shell_player_error): fix compilation issue. 2006-02-05 James Livingston * widgets/rb-entry-view.c: (rb_entry_view_finalize): check whether things are NULL before using g_object_unref. Fixes bug 327452. * player/rb-recorder-gst.c: (rb_recorder_construct): * shell/rb-shell-player.c: (rb_shell_player_error): return errors rather than assertion. * sources/rb-playlist-source.c: (rb_playlist_source_new_from_xml): emit a warning, rather than asserting if an unknown playlist type is encountered. 2006-02-05 James Livingston * widgets/Makefile.am: * widgets/rb-simple-view.c: * widgets/rb-simple-view.h: Move the two features that this class provides into RBPropertyView, and remove this class. Closes bug 327500. * podcast/rb-feed-podcast-properties-dialog.c: * podcast/rb-feed-podcast-properties-dialog.h: * sources/rb-podcast-source.c: (rb_podcast_source_constructor), (rb_podcast_source_feeds_show_popup_cb): * sources/rb-podcast-source.h: * widgets/rb-property-view.c: (rb_property_view_class_init), (rb_property_view_constructor), (rb_property_view_popup_menu_cb), (rb_property_view_append_column_custom), (rb_property_view_button_press_cb): * widgets/rb-property-view.h: Updated for the above change. 2006-02-04 James Livingston * shell/rb-shell.c: remove the show/hide toolbar shortcut, since it is too close to Move to Trash and people aren't likely to use it often. 2006-02-04 James Livingston * shell/rb-shell.c: (rb_shell_cmd_about): Fix the FSF's address