[Goodies-commits] r3950 - xfmpc/trunk/src

Mike Massonnet mmassonnet at xfce.org
Fri Feb 15 03:35:35 CET 2008


Author: mmassonnet
Date: 2008-02-15 02:35:35 +0000 (Fri, 15 Feb 2008)
New Revision: 3950

Modified:
   xfmpc/trunk/src/mpdclient.c
   xfmpc/trunk/src/mpdclient.h
   xfmpc/trunk/src/playlist.c
Log:
Use row-activated signal to change the song in the playlist
* src/mpdclient.c,
  src/mpdclient.h:
  - New function xfmpc_mpdclient_set_id to set the current song
* src/playlist.c:
  - Connect signal row-activated to new callback cb_row_activated


Modified: xfmpc/trunk/src/mpdclient.c
===================================================================
--- xfmpc/trunk/src/mpdclient.c	2008-02-15 02:35:28 UTC (rev 3949)
+++ xfmpc/trunk/src/mpdclient.c	2008-02-15 02:35:35 UTC (rev 3950)
@@ -348,6 +348,15 @@
 }
 
 gboolean
+xfmpc_mpdclient_set_id (XfmpcMpdclient *mpdclient,
+                        gint id)
+{
+  XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+  return mpd_player_play_id (priv->mi, id) == MPD_OK ? TRUE : FALSE;
+}
+
+gboolean
 xfmpc_mpdclient_set_volume (XfmpcMpdclient *mpdclient,
                             guint8 volume)
 {

Modified: xfmpc/trunk/src/mpdclient.h
===================================================================
--- xfmpc/trunk/src/mpdclient.h	2008-02-15 02:35:28 UTC (rev 3949)
+++ xfmpc/trunk/src/mpdclient.h	2008-02-15 02:35:35 UTC (rev 3950)
@@ -57,6 +57,8 @@
 
 gboolean                xfmpc_mpdclient_next                    (XfmpcMpdclient *mpdclient);
 
+gboolean                xfmpc_mpdclient_set_id                  (XfmpcMpdclient *mpdclient,
+                                                                 gint id);
 gboolean                xfmpc_mpdclient_set_volume              (XfmpcMpdclient *mpdclient,
                                                                  guint8 volume);
 gboolean                xfmpc_mpdclient_set_song_time           (XfmpcMpdclient *mpdclient,

Modified: xfmpc/trunk/src/playlist.c
===================================================================
--- xfmpc/trunk/src/playlist.c	2008-02-15 02:35:28 UTC (rev 3949)
+++ xfmpc/trunk/src/playlist.c	2008-02-15 02:35:35 UTC (rev 3950)
@@ -40,13 +40,16 @@
 
 static void             cb_playlist_changed                     (XfmpcPlaylist *playlist);
 
+static void             cb_row_activated                        (XfmpcPlaylist *playlist,
+                                                                 GtkTreePath *path,
+                                                                 GtkTreeViewColumn *column);
 
 
 
 /* List store identifiers */
 enum
 {
-  COLUMN_POS,
+  COLUMN_ID,
   COLUMN_SONG,
   COLUMN_LENGTH,
   COLUMN_IS_CURRENT,
@@ -180,6 +183,8 @@
   gtk_box_pack_start (GTK_BOX (playlist), scrolled, TRUE, TRUE, 0);
 
   /* Signals */
+  g_signal_connect_swapped (priv->treeview, "row-activated",
+                            G_CALLBACK (cb_row_activated), playlist);
   g_signal_connect_swapped (playlist->mpdclient, "song-changed",
                             G_CALLBACK (cb_playlist_changed), playlist);
   g_signal_connect_swapped (playlist->mpdclient, "playlist-changed",
@@ -220,7 +225,7 @@
 
   gtk_list_store_append (priv->store, &iter);
   gtk_list_store_set (priv->store, &iter,
-                      COLUMN_POS, id,
+                      COLUMN_ID, id,
                       COLUMN_SONG, song,
                       COLUMN_LENGTH, length,
                       COLUMN_IS_CURRENT, is_current ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
@@ -254,3 +259,21 @@
     }
 }
 
+static void
+cb_row_activated (XfmpcPlaylist *playlist,
+                  GtkTreePath *path,
+                  GtkTreeViewColumn *column)
+{
+  XfmpcPlaylistPrivate *priv = XFMPC_PLAYLIST_GET_PRIVATE (playlist);
+  GtkTreeIter           iter;
+  gint                  id;
+
+  if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (priv->store), &iter, path))
+    return;
+
+  gtk_tree_model_get (GTK_TREE_MODEL (priv->store), &iter,
+                      COLUMN_ID, &id,
+                      -1);
+  xfmpc_mpdclient_set_id (playlist->mpdclient, id);
+}
+




More information about the Goodies-commits mailing list