[Xfce4-commits] <parole:master> Play the first row if no row selected

Ali Abdallah noreply at xfce.org
Tue Sep 29 11:58:01 CEST 2009


Updating branch refs/heads/master
         to 4c516026911d35ba6a8d9f30bdecb4996a3e3c3b (commit)
       from 9ed4c72d9422cb432271af63e6f749ad77095fc4 (commit)

commit 4c516026911d35ba6a8d9f30bdecb4996a3e3c3b
Author: Ali Abdallah <ali at ali-xfce.org>
Date:   Tue Sep 29 11:57:06 2009 +0000

    Play the first row if no row selected

 parole/parole-medialist.c |   20 ++++++++++++++++++++
 parole/parole-medialist.h |    4 ++++
 parole/parole-player.c    |   15 ++++++++++-----
 3 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/parole/parole-medialist.c b/parole/parole-medialist.c
index 19cf63c..d4a7ae5 100644
--- a/parole/parole-medialist.c
+++ b/parole/parole-medialist.c
@@ -1203,6 +1203,26 @@ gboolean parole_media_list_is_selected_row  (ParoleMediaList *list)
     return gtk_tree_selection_count_selected_rows (list->priv->sel) > 0;
 }
 
+gboolean parole_media_list_is_empty (ParoleMediaList *list)
+{
+    GtkTreeIter iter;
+    
+    return !gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter);
+}
+
+GtkTreeRowReference *parole_media_list_get_first_row (ParoleMediaList *list)
+{
+    GtkTreeRowReference *row = NULL;
+    GtkTreeIter iter;
+    
+    if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter) )
+    {
+	row = parole_media_list_get_row_reference_from_iter (list, &iter, TRUE);
+    }
+    
+    return row;
+}
+
 GtkTreeRowReference *parole_media_list_get_selected_row (ParoleMediaList *list)
 {
     return parole_media_list_get_first_selected_row (list);
diff --git a/parole/parole-medialist.h b/parole/parole-medialist.h
index 4d0a922..692144a 100644
--- a/parole/parole-medialist.h
+++ b/parole/parole-medialist.h
@@ -71,6 +71,10 @@ void				 parole_media_list_load             (ParoleMediaList *list);
 
 gboolean			 parole_media_list_is_selected_row  (ParoleMediaList *list);
 
+gboolean			 parole_media_list_is_empty	    (ParoleMediaList *list);
+
+GtkTreeRowReference             *parole_media_list_get_first_row    (ParoleMediaList *list);
+
 GtkTreeRowReference		*parole_media_list_get_selected_row (ParoleMediaList *list);
 
 GtkTreeRowReference             *parole_media_list_get_next_row     (ParoleMediaList *list,
diff --git a/parole/parole-player.c b/parole/parole-player.c
index 391d211..1289592 100644
--- a/parole/parole-player.c
+++ b/parole/parole-player.c
@@ -381,8 +381,11 @@ parole_player_uri_opened_cb (ParoleMediaList *list, const gchar *uri, ParolePlay
 static void
 parole_player_media_cursor_changed_cb (ParoleMediaList *list, gboolean media_selected, ParolePlayer *player)
 {
-    if (player->priv->state != PAROLE_MEDIA_STATE_PLAYING)
-	gtk_widget_set_sensitive (player->priv->play_pause, media_selected);
+    if (player->priv->state < PAROLE_MEDIA_STATE_PAUSED)
+    {
+	gtk_widget_set_sensitive (player->priv->play_pause, 
+				  media_selected || !parole_media_list_is_empty (player->priv->list));
+    }
 }
 
 static void
@@ -564,7 +567,8 @@ parole_player_stopped (ParolePlayer *player)
     player->priv->state = PAROLE_MEDIA_STATE_STOPPED;
     
     gtk_widget_set_sensitive (player->priv->play_pause, 
-			      parole_media_list_is_selected_row (player->priv->list));
+			      parole_media_list_is_selected_row (player->priv->list) || 
+			      !parole_media_list_is_empty (player->priv->list));
     
     /* 
      * Set the stop widget insensitive only if we are not going to got to playing
@@ -599,10 +603,11 @@ parole_player_play_selected_row (ParolePlayer *player)
     
     row = parole_media_list_get_selected_row (player->priv->list);
     
+    if ( row == NULL )
+	row = parole_media_list_get_first_row (player->priv->list);
+    
     if ( row )
-    {
 	parole_player_media_activated_cb (player->priv->list, row, player);
-    }
 }
 
 static void



More information about the Xfce4-commits mailing list