[Xfce4-commits] <parole:master> Properly use symbolic icons in the playlist
Sean Davis
noreply at xfce.org
Sat Nov 9 15:54:01 CET 2013
Updating branch refs/heads/master
to 4812174d4b580f1fdb4101d9f5be405a7099deb5 (commit)
from 3436ff74f9c6bd8376903f0b9b184b8876321c5f (commit)
commit 4812174d4b580f1fdb4101d9f5be405a7099deb5
Author: Sean Davis <smd.seandavis at 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)
More information about the Xfce4-commits
mailing list