Updating branch refs/heads/master to 4812174d4b580f1fdb4101d9f5be405a7099deb5 (commit) from 3436ff74f9c6bd8376903f0b9b184b8876321c5f (commit)
commit 4812174d4b580f1fdb4101d9f5be405a7099deb5 Author: Sean Davis <smd.seanda...@gmail.com> Date: Sat Nov 9 09:52:15 2013 -0500 Properly use symbolic icons in the playlist src/parole-medialist.c | 66 ++++++++++++++++++++++++++++++++++++++++++------ src/parole-medialist.h | 13 +++++++--- src/parole-player.c | 43 ++++++++----------------------- 3 files changed, 79 insertions(+), 43 deletions(-) diff --git a/src/parole-medialist.c b/src/parole-medialist.c index 7cd1653..bd12a27 100644 --- a/src/parole-medialist.c +++ b/src/parole-medialist.c @@ -322,7 +322,7 @@ parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean disc, g NAME_COL, parole_file_get_display_name (file), DATA_COL, file, LENGTH_COL, parole_taglibc_get_media_length (file), - PIXBUF_COL, NULL, + STATE_COL, PAROLE_MEDIA_STATE_NONE, -1); if ( emit || select_row ) @@ -1485,14 +1485,54 @@ parole_media_list_class_init (ParoleMediaListClass *klass) } static void +parole_media_list_playing_cell_data_func (GtkTreeViewColumn *column, + GtkCellRenderer *renderer, + GtkTreeModel *tree_model, + GtkTreeIter *iter, + GtkWidget *view) +{ + //RhythmDBEntry *entry; + const char *name = NULL; + + //entry = rhythmdb_query_model_iter_to_entry (view->priv->model, iter); + + //if (entry == NULL) { + // return; + //} + gint state = 0; + gtk_tree_model_get (tree_model, iter, STATE_COL, &state, -1); + + //if (entry == view->priv->playing_entry) { + switch (state) { + case PAROLE_MEDIA_STATE_NONE: + name = NULL; + break; + case PAROLE_MEDIA_STATE_PAUSED: + name = "media-playback-pause-symbolic"; + break; + case PAROLE_MEDIA_STATE_PLAYING: + name = "media-playback-start-symbolic"; + break; + default: + name = NULL; + break; + // } + } + + g_object_set (renderer, "icon-name", name, NULL); + + //rhythmdb_entry_unref (entry); +} + +static void parole_media_list_setup_view (ParoleMediaList *list) { GtkTreeSelection *sel, *disc_sel; GtkListStore *list_store, *disc_list_store; GtkCellRenderer *renderer, *disc_renderer; - list_store = gtk_list_store_new (COL_NUMBERS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT); - disc_list_store = gtk_list_store_new (COL_NUMBERS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT); + list_store = gtk_list_store_new (COL_NUMBERS, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT); + disc_list_store = gtk_list_store_new (COL_NUMBERS, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_OBJECT); gtk_tree_view_set_model (GTK_TREE_VIEW (list->priv->view), GTK_TREE_MODEL(list_store)); gtk_tree_view_set_model (GTK_TREE_VIEW (list->priv->disc_view), GTK_TREE_MODEL(disc_list_store)); @@ -1504,11 +1544,21 @@ parole_media_list_setup_view (ParoleMediaList *list) renderer = gtk_cell_renderer_pixbuf_new (); disc_renderer = gtk_cell_renderer_pixbuf_new (); + g_object_set (renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL); + g_object_set (disc_renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL); gtk_tree_view_column_pack_start(list->priv->col, renderer, FALSE); gtk_tree_view_column_pack_start(list->priv->disc_col, disc_renderer, FALSE); - gtk_tree_view_column_set_attributes(list->priv->col, renderer, "pixbuf", PIXBUF_COL, NULL); - gtk_tree_view_column_set_attributes(list->priv->disc_col, disc_renderer, "pixbuf", PIXBUF_COL, NULL); + gtk_tree_view_column_set_cell_data_func (list->priv->col, renderer, + (GtkTreeCellDataFunc) + parole_media_list_playing_cell_data_func, + list->priv->view, + NULL); + gtk_tree_view_column_set_cell_data_func (list->priv->disc_col, disc_renderer, + (GtkTreeCellDataFunc) + parole_media_list_playing_cell_data_func, + list->priv->disc_view, + NULL); /** * Name col @@ -1917,7 +1967,7 @@ void parole_media_list_select_row (ParoleMediaList *list, GtkTreeRowReference *r } } -void parole_media_list_set_row_pixbuf (ParoleMediaList *list, GtkTreeRowReference *row, GdkPixbuf *pix) +void parole_media_list_set_row_playback_state (ParoleMediaList *list, GtkTreeRowReference *row, gint state) { GtkTreeIter iter; GtkTreePath *path; @@ -1929,12 +1979,12 @@ void parole_media_list_set_row_pixbuf (ParoleMediaList *list, GtkTreeRowReferen if (gtk_notebook_get_current_page(GTK_NOTEBOOK(list->priv->playlist_notebook)) == 0) { if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) ) - gtk_list_store_set (list->priv->store, &iter, PIXBUF_COL, pix, -1); + gtk_list_store_set (list->priv->store, &iter, STATE_COL, state, -1); } else { if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->disc_store), &iter, path) ) - gtk_list_store_set (list->priv->disc_store, &iter, PIXBUF_COL, pix, -1); + gtk_list_store_set (list->priv->disc_store, &iter, STATE_COL, state, -1); } gtk_tree_path_free (path); diff --git a/src/parole-medialist.h b/src/parole-medialist.h index 649d4f6..6e3fca2 100644 --- a/src/parole-medialist.h +++ b/src/parole-medialist.h @@ -34,7 +34,7 @@ G_BEGIN_DECLS enum { - PIXBUF_COL, + STATE_COL, NAME_COL, LENGTH_COL, DATA_COL, @@ -43,6 +43,13 @@ enum enum { + PAROLE_MEDIA_STATE_NONE, + PAROLE_MEDIA_STATE_PAUSED, + PAROLE_MEDIA_STATE_PLAYING +}; + +enum +{ PAROLE_MEDIA_LIST_PLAYLIST_VIEW_STANDARD, PAROLE_MEDIA_LIST_PLAYLIST_VIEW_DISC }; @@ -136,9 +143,9 @@ GtkTreeRowReference *parole_media_list_get_row_random (ParoleMediaList *list); void -parole_media_list_set_row_pixbuf (ParoleMediaList *list, +parole_media_list_set_row_playback_state (ParoleMediaList *list, GtkTreeRowReference *row, - GdkPixbuf *pix); + gint state); gchar *parole_media_list_get_row_name (ParoleMediaList *list, GtkTreeRowReference *row); diff --git a/src/parole-player.c b/src/parole-player.c index 0fabf32..a8daebd 100644 --- a/src/parole-player.c +++ b/src/parole-player.c @@ -578,7 +578,7 @@ parole_player_reset (ParolePlayer *player) if ( player->priv->row ) { - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_NONE); gtk_tree_row_reference_free (player->priv->row); player->priv->row = NULL; } @@ -602,7 +602,7 @@ parole_player_dvd_reset (ParolePlayer *player) { if ( player->priv->row ) { - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_NONE); gtk_tree_row_reference_free (player->priv->row); player->priv->row = NULL; } @@ -1139,7 +1139,7 @@ parole_player_disc_selected_cb (ParoleDisc *disc, const gchar *uri, const gchar player->priv->wait_for_gst_disc_info = TRUE; if ( player->priv->row ) { - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_NONE); gtk_tree_row_reference_free (player->priv->row); player->priv->row = NULL; } @@ -1357,15 +1357,11 @@ out: static void parole_player_playing (ParolePlayer *player, const ParoleStream *stream) { - GdkPixbuf *pix = NULL; - gint64 duration; gboolean seekable; gboolean live; - pix = parole_icon_load ("media-playback-start", 16); - - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, pix); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_PLAYING); g_object_get (G_OBJECT (stream), "seekable", &seekable, @@ -1416,9 +1412,6 @@ parole_player_playing (ParolePlayer *player, const ParoleStream *stream) player->priv->internal_range_change = FALSE; gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->range), seekable ? NULL : _("Media stream is not seekable")); - - if ( pix ) - g_object_unref (pix); parole_player_save_uri (player, stream); parole_media_list_select_row (player->priv->list, player->priv->row); @@ -1431,12 +1424,9 @@ parole_player_playing (ParolePlayer *player, const ParoleStream *stream) static void parole_player_paused (ParolePlayer *player) { - GdkPixbuf *pix = NULL; - TRACE ("Player paused"); - - pix = parole_icon_load ("media-playback-pause", 16); - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, pix); + + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_PAUSED); gtk_action_set_sensitive (player->priv->media_playpause_action, TRUE); @@ -1444,10 +1434,6 @@ parole_player_paused (ParolePlayer *player) { parole_player_set_playpause_button_from_stock (player, "gtk-media-play"); } - - if ( pix ) - g_object_unref (pix); - } static void @@ -1484,7 +1470,7 @@ parole_player_stopped (ParolePlayer *player) parole_player_set_playpause_button_from_stock (player, "gtk-media-play"); - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_NONE); if ( player->priv->exit ) { @@ -1525,7 +1511,7 @@ parole_player_play_next (ParolePlayer *player, gboolean allow_shuffle) if ( player->priv->row ) { - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_NONE); if ( shuffle && allow_shuffle ) row = parole_media_list_get_row_random (player->priv->list); @@ -1561,7 +1547,7 @@ parole_player_play_prev (ParolePlayer *player) if ( player->priv->row ) { - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_NONE); row = parole_media_list_get_prev_row (player->priv->list, player->priv->row); @@ -1877,19 +1863,12 @@ parole_player_dvd_chapter_count_change_cb (ParoleGst *gst, gint chapter_count, P static void parole_player_dvd_chapter_change_cb (ParoleGst *gst, gint chapter_count, ParolePlayer *player) { - GdkPixbuf *pix = NULL; - - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_NONE); player->priv->row = parole_media_list_get_row_n (player->priv->list, chapter_count-1); - pix = parole_icon_load ("media-playback-start", 16); - - parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, pix); + parole_media_list_set_row_playback_state (player->priv->list, player->priv->row, PAROLE_MEDIA_STATE_PLAYING); parole_media_list_select_row (player->priv->list, player->priv->row); - - if ( pix ) - g_object_unref (pix); } gboolean parole_player_delete_event_cb (GtkWidget *widget, GdkEvent *ev, ParolePlayer *player) _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits