static void rb_static_playlist_source_add_location_internal (RBStaticPlaylistSource *source, const char *location, gint index) { RhythmDB *db; RhythmDBEntry *entry; RBPlaylistSource *psource = RB_PLAYLIST_SOURCE (source); if (rb_playlist_source_location_in_map (psource, location)) return; db = rb_playlist_source_get_db (psource); entry = rhythmdb_entry_lookup_by_location (db, location); if (entry) { RBStaticPlaylistSourcePrivate *priv = RB_STATIC_PLAYLIST_SOURCE_GET_PRIVATE (source); if (_rb_source_check_entry_type (RB_SOURCE (source), entry)) { rhythmdb_entry_ref (entry); rhythmdb_query_model_add_entry (priv->base_model, entry, index); rhythmdb_entry_unref (entry); } } rb_playlist_source_add_to_map (psource, location); rb_playlist_source_mark_dirty (psource); }
static void rb_static_playlist_source_rows_reordered (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gint *order_map, RBStaticPlaylistSource *source) { rb_playlist_source_mark_dirty (RB_PLAYLIST_SOURCE (source)); }
/** * rb_static_playlist_source_move_entry: * @source: an #RBStaticPlaylistSource * @entry: the entry to move * @index: new location for the entry * * Moves an entry within the playlist. */ void rb_static_playlist_source_move_entry (RBStaticPlaylistSource *source, RhythmDBEntry *entry, gint index) { RBPlaylistSource *psource = RB_PLAYLIST_SOURCE (source); RBStaticPlaylistSourcePrivate *priv = RB_STATIC_PLAYLIST_SOURCE_GET_PRIVATE (source); rhythmdb_query_model_move_entry (priv->base_model, entry, index); rb_playlist_source_mark_dirty (psource); }
/** * rb_static_playlist_source_remove_location: * @source: an #RBStaticPlaylistSource * @location: location to remove * * Removes the specified location from the playlist. This affects both * the location map and the query model, whether an entry exists for the * location or not. */ void rb_static_playlist_source_remove_location (RBStaticPlaylistSource *source, const char *location) { RBPlaylistSource *psource = RB_PLAYLIST_SOURCE (source); RhythmDB *db; RhythmDBEntry *entry; g_return_if_fail (rb_playlist_source_location_in_map (psource, location)); db = rb_playlist_source_get_db (psource); entry = rhythmdb_entry_lookup_by_location (db, location); if (entry != NULL) { RhythmDBQueryModel *model = rb_playlist_source_get_query_model (psource); /* if this fails, the model and the playlist are out of sync */ g_assert (rhythmdb_query_model_remove_entry (model, entry)); rb_playlist_source_mark_dirty (psource); } }
static void playlist_settings_changed_cb (GSettings *settings, char *key, RBPlaylistSource *source) { rb_playlist_source_mark_dirty (source); }