wmxmms shuffle toggle patch

Federico Grau <[email protected]>
Newsgroups gmane.comp.multimedia.xmms.devel
Message-ID <[email protected]>
Hello,

Attached is a patch (against the latest cvs) which adds a shuffle toggle at
the top of wmxmms.

thanks,
donfede
xmms_wmxmms_shuffle_toggle.patch (text/plain, 5.8 KB)
Index: wmxmms/wmxmms.c
===================================================================
RCS file: /cvs/xmms/wmxmms/wmxmms.c,v
retrieving revision 1.16
diff -u -r1.16 wmxmms.c
--- wmxmms/wmxmms.c	27 Oct 2002 17:19:23 -0000	1.16
+++ wmxmms/wmxmms.c	15 Feb 2003 14:28:00 -0000
@@ -48,6 +48,7 @@
 void action_prev(void);
 void action_next(void);
 void action_stop(void);
+void action_toggle_shuffle(void);
 
 Button buttons[] =
 {
@@ -75,10 +76,16 @@
 #define SEEKSLIDER_KNOB_WIDTH	3
 #define SEEKSLIDER_MAX		(SEEKSLIDER_WIDTH - SEEKSLIDER_KNOB_WIDTH)
 
+#define SHUFFLE_X		29
+#define SHUFFLE_Y		10
+#define SHUFFLE_WIDTH		18
+#define SHUFFLE_HEIGHT		5
+
 gboolean volslider_dragging = FALSE;
 int volslider_pos = 0;
 gboolean seekslider_visible = FALSE, seekslider_dragging = FALSE;
 int seekslider_pos = -1, seekslider_drag_offset = 0;
+gboolean shuffle_value = FALSE;
 int timeout_tag = 0;
 
 void init(void);
@@ -136,6 +143,11 @@
 	xmms_remote_stop(xmms_session);
 }
 
+void action_toggle_shuffle(void)
+{
+	xmms_remote_toggle_shuffle(xmms_session);
+}
+
 gboolean inside_region(int mx, int my, int x, int y, int w, int h)
 {
 	if ((mx >= x && mx < x + w) && (my >= y && my < y + h))
@@ -193,7 +205,7 @@
 
 	if (seekslider_visible)
 	{
-		gdk_draw_pixmap(w, dock_gc, pixmap, 2, 114, 19, 12, 35, 14);
+		gdk_draw_pixmap(w, dock_gc, pixmap, 2, 117, 19, 15, 35, 11);
 		if (seekslider_pos < SEEKSLIDER_MAX / 3)
 			slider_x = 44;
 		else if (seekslider_pos < (SEEKSLIDER_MAX * 2) / 3)
@@ -205,7 +217,7 @@
 				SEEKSLIDER_HEIGHT);
 	}
 	else
-		gdk_draw_pixmap(w, dock_gc, pixmap, 2, 100, 19, 12, 35, 14);
+		gdk_draw_pixmap(w, dock_gc, pixmap, 2, 103, 19, 15, 35, 11);
 }
 
 void draw_seekslider(void)
@@ -214,6 +226,20 @@
 	real_draw_seekslider(icon_win->window);
 }
 
+void real_draw_shuffle(GdkWindow * w)
+{
+	if (shuffle_value)
+		gdk_draw_pixmap(w, dock_gc, pixmap, 26, 128, SHUFFLE_X, SHUFFLE_Y, SHUFFLE_WIDTH, SHUFFLE_HEIGHT);
+	else
+		gdk_draw_pixmap(w, dock_gc, pixmap, 4, 128, SHUFFLE_X, SHUFFLE_Y, SHUFFLE_WIDTH, SHUFFLE_HEIGHT);
+}
+
+void draw_shuffle(void)
+{
+	real_draw_shuffle(window->window);
+	real_draw_shuffle(icon_win->window);
+}
+
 void redraw_window(void)
 {
 	if (xmms_running)
@@ -225,6 +251,7 @@
 		draw_buttons(button_list);
 		draw_volslider();
 		draw_seekslider();
+		draw_shuffle();
 	}
 	else
 	{
@@ -318,6 +345,12 @@
 			draw_seekslider();
 			seekslider_dragging = TRUE;
 		}
+		if (inside_region(event->x, event->y, SHUFFLE_X, SHUFFLE_Y, SHUFFLE_WIDTH, SHUFFLE_HEIGHT))
+		{
+			xmms_remote_toggle_shuffle(xmms_session);
+			shuffle_value = ! shuffle_value;
+			draw_shuffle();
+		}
 	}
 	else if ((!single_click && event->type == GDK_2BUTTON_PRESS) ||
 		 (single_click && event->type == GDK_BUTTON_PRESS))
@@ -465,7 +498,7 @@
 int timeout_func(gpointer data)
 {
 	int new_pos, pos;
-	gboolean playing, running;
+	gboolean playing, running, new_shuffle_value;
 
 	running = xmms_remote_is_running(xmms_session);
 
@@ -536,6 +569,12 @@
 					draw_seekslider();
 				}
 			}
+		}
+		new_shuffle_value = xmms_remote_is_shuffle(xmms_session);
+		if (new_shuffle_value != shuffle_value)
+		{
+			shuffle_value = new_shuffle_value;
+			draw_shuffle();
 		}
 	}
 	else
Index: wmxmms/xmms-dock-master.xpm
===================================================================
RCS file: /cvs/xmms/wmxmms/xmms-dock-master.xpm,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 xmms-dock-master.xpm
--- wmxmms/xmms-dock-master.xpm	29 Jul 1999 21:03:12 -0000	1.1.1.1
+++ wmxmms/xmms-dock-master.xpm	15 Feb 2003 14:28:00 -0000
@@ -1,7 +1,7 @@
 /* XPM */
 static char *xmms_dock_master_xpm[] = {
 /* width height num_colors chars_per_pixel */
-"    64   128      125            2",
+"    64   138      125            2",
 /* colors */
 ".. c #000000",
 ".# c #00fe00",
@@ -254,6 +254,16 @@
 "......#b..............................................................#b........................................................",
 "......#b..............................................................#b........................................................",
 "......#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b........................................................",
+"................................................................................................................................",
+"................................................................................................................................",
+"................................................................................................................................",
+".........................................H.H.........................H.H.........................................................",
+".................................H.H.....H.H.........................H.H.............H.H.........................................",
+".........................H.H.....H.H.....H.H.........H.H.............H.H.............H.H.........................................",
+".................H.H.....H.H.....H.H.....H.H.........H.H.....H.H.....H.H.............H.H.........................................",
+".........H.H.....H.H.....H.H.....H.H.....H.H.........H.H.....H.H.....H.H.....H.H.....H.H.........................................",
+"................................................................................................................................",
+"................................................................................................................................",
 "................................................................................................................................",
 "................................................................................................................................",
 "................................................................................................................................"
signature.asc (application/pgp-signature, 232 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE+TlAax+yU3uQx8M4RAre8AJ951m1ZTnu5rO0+5oDA+umy1TLBvgCfZnwh
hRoHFqVYXlN+siNyZ0T1jUg=
=4Xwm
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.