Re: [Rhythmbox-devel] [Patch] Added a back button tho thesong-info dialog



El vie, 08-08-2003 a las 20:00, Bastien Nocera escribió:
[...]

> 
> Don't blame me, I didn't look at anything but the patch ;)
> So I guess it's alright. Could you still refactor
> rb_song_info_backward_*_cb ?

Done.

> 
> 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 18:12:47 -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 18:12:48 -0000
@@ -79,6 +79,10 @@
 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_navigation_move (RBSongInfo *song_info, RBDirection direction);
+
+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 +96,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 +186,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 +196,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 +812,11 @@
 }
 
 static void
-rb_song_info_forward_clicked_cb (GtkWidget *button,
-				 RBSongInfo *song_info)
+rb_song_info_navigation_move (RBSongInfo *song_info, RBDirection direction)
 {
 	RBNode *node = rb_node_view_get_node (song_info->priv->node_view,
 					      song_info->priv->current_node,
-					      TRUE);
+					      direction);
 
 	g_return_if_fail (node != NULL);
 
@@ -799,6 +828,21 @@
 
 	if (rb_song_info_update_current_values (song_info) == TRUE)
 		rb_song_info_populate_dialog (song_info);
+
+}
+
+static void
+rb_song_info_backward_clicked_cb (GtkWidget *button,
+				  RBSongInfo *song_info)
+{
+	rb_song_info_navigation_move (song_info, RB_DIRECTION_UP);
+}
+
+static void
+rb_song_info_forward_clicked_cb (GtkWidget *button,
+				 RBSongInfo *song_info)
+{
+	rb_song_info_navigation_move (song_info, RB_DIRECTION_DOWN);
 }
 
 /*
@@ -813,10 +857,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]