[Rhythmbox-devel] [Patch] Added a back button tho the song-info dialog



Hi, here you have a patch to add a back button to the song-info dialog,
this way the navigation is better.

Could I commit it?

Cheers.
-- 
Carlos Perelló Marín
Debian GNU/Linux Sid (PowerPC)
Linux Registered User #121232
mailto:carlos@pemas.net || mailto:carlos@gnome.org
http://carlos.pemas.net
Valencia - Spain
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/rhythmbox/ChangeLog,v
retrieving revision 1.563
diff -u -w -r1.563 ChangeLog
--- ChangeLog	8 Aug 2003 06:46:08 -0000	1.563
+++ ChangeLog	8 Aug 2003 15:20:27 -0000
@@ -1,3 +1,10 @@
+2003-08-08  Carlos Perelló Marín <carlos@gnome.org>
+
+	* lib/widgets/rb-song-info.c (rb_song_info_backward_clicked_cb),
+	(rb_song_info_init), (rb_song_info_update_buttons):
+
+	Added support for the back button.
+
 2003-08-08  Colin Walters  <walters@verbum.org>
 
 	* lib/widgets/rb-node-view.c: (rb_node_view_set_property),
Index: lib/widgets/rb-song-info.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/lib/widgets/rb-song-info.c,v
retrieving revision 1.30
diff -u -w -r1.30 rb-song-info.c
--- lib/widgets/rb-song-info.c	28 Jul 2003 02:19:24 -0000	1.30
+++ lib/widgets/rb-song-info.c	8 Aug 2003 15:20:27 -0000
@@ -79,6 +79,8 @@
 static void rb_song_info_update_rating (RBSongInfo *song_info);
 static gboolean rb_song_info_update_current_values (RBSongInfo *song_info);
 
+static void rb_song_info_backward_clicked_cb (GtkWidget *button,
+					      RBSongInfo *song_info);
 static void rb_song_info_forward_clicked_cb (GtkWidget *button,
 					     RBSongInfo *song_info);
 static void rb_song_info_view_changed_cb (RBNodeView *node_view,
@@ -92,11 +94,12 @@
 {
 	RBNodeView *node_view;
 
-	/* infrmation on the displayed song */
+	/* information on the displayed song */
 	RBNode *current_node;
 	MonkeyMediaStreamInfo *current_info;
 
 	/* the dialog widgets */
+	GtkWidget   *backward;
 	GtkWidget   *forward;
 
 	GtkWidget   *title;
@@ -181,7 +184,7 @@
 	GladeXML *xml;
 	GtkWidget *close, *label, *image, *hbox, *align, *cont;
 	
-	/* create the dialog and some buttons forward - close */
+	/* create the dialog and some buttons backward - forward - close */
 	song_info->priv = g_new0 (RBSongInfoPrivate, 1);
 
 	g_signal_connect (G_OBJECT (song_info),
@@ -191,9 +194,34 @@
 
 	gtk_dialog_set_has_separator (GTK_DIALOG (song_info), FALSE);
 
+	song_info->priv->backward = gtk_button_new ();
+	label = gtk_label_new_with_mnemonic (_("_Previous"));
+	gtk_label_set_mnemonic_widget (GTK_LABEL (label), song_info->priv->backward);
+	image = gtk_image_new_from_stock (GTK_STOCK_GO_BACK, GTK_ICON_SIZE_BUTTON);
+	
+	hbox = gtk_hbox_new (FALSE, 2);
+	
+	align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
+
+	gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
+	gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+	
+	gtk_container_add (GTK_CONTAINER (song_info->priv->backward), align);
+	gtk_container_add (GTK_CONTAINER (align), hbox);
+	
+	gtk_widget_show_all (song_info->priv->backward);
+
+	gtk_dialog_add_action_widget (GTK_DIALOG (song_info),
+			              song_info->priv->backward,
+				      GTK_RESPONSE_NONE);
+	g_signal_connect (G_OBJECT (song_info->priv->backward),
+			  "clicked",
+			  G_CALLBACK (rb_song_info_backward_clicked_cb),
+			  song_info);
+	
 	song_info->priv->forward = gtk_button_new ();
 
-	label = gtk_label_new_with_mnemonic (_("_Next Song"));
+	label = gtk_label_new_with_mnemonic (_("_Next"));
 	gtk_label_set_mnemonic_widget (GTK_LABEL (label), song_info->priv->forward);
 	
 	image = gtk_image_new_from_stock (GTK_STOCK_GO_FORWARD, GTK_ICON_SIZE_BUTTON);
@@ -782,12 +810,32 @@
 }
 
 static void
+rb_song_info_backward_clicked_cb (GtkWidget *button,
+				  RBSongInfo *song_info)
+{
+	RBNode *node = rb_node_view_get_node (song_info->priv->node_view,
+					      song_info->priv->current_node,
+					      RB_DIRECTION_UP);
+
+	g_return_if_fail (node != NULL);
+
+	/* update the node view */
+	rb_node_view_select_node (song_info->priv->node_view, node);
+	rb_node_view_scroll_to_node (song_info->priv->node_view, node);
+
+	cleanup (song_info);
+
+	if (rb_song_info_update_current_values (song_info) == TRUE)
+		rb_song_info_populate_dialog (song_info);
+}
+
+static void
 rb_song_info_forward_clicked_cb (GtkWidget *button,
 				 RBSongInfo *song_info)
 {
 	RBNode *node = rb_node_view_get_node (song_info->priv->node_view,
 					      song_info->priv->current_node,
-					      TRUE);
+					      RB_DIRECTION_DOWN);
 
 	g_return_if_fail (node != NULL);
 
@@ -813,10 +861,17 @@
 	g_return_if_fail (song_info->priv->node_view != NULL);
 	g_return_if_fail (song_info->priv->current_node != NULL);
 
+	/* backward */
+	node = rb_node_view_get_node (song_info->priv->node_view,
+				      song_info->priv->current_node,
+				      RB_DIRECTION_UP);
+	
+	gtk_widget_set_sensitive (song_info->priv->backward,
+				  node != NULL);
 	/* forward */
 	node = rb_node_view_get_node (song_info->priv->node_view,
 				      song_info->priv->current_node,
-				      TRUE);
+				      RB_DIRECTION_DOWN);
 
 	gtk_widget_set_sensitive (song_info->priv->forward,
 				  node != NULL);

Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmadadigitalmente



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]